#
msgid ""
msgstr ""
"Project-Id-Version: REA website\n"
"Language: ko\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Initial-Translation: Machine-assisted baseline; see website/locales/README.md for review workflow\n"

#: website/public/blog/index.html:107
msgctxt "page:blog/index.html"
msgid "Skip to content"
msgstr "본문으로 건너뛰기"

#. {ph0}: <a href="../">
#. {ph1}: </a>
#: website/public/blog/index.html:199
#, python-brace-format
msgctxt "page:blog/index.html"
msgid "{ph0}Home{ph1} / Blog"
msgstr "{ph0}홈{ph1} / 블로그"

#: website/public/blog/index.html:200
msgctxt "page:blog/index.html"
msgid "Blog."
msgstr "블로그"

#: website/public/blog/index.html:201
msgctxt "page:blog/index.html"
msgid "Thoughts on reverse engineering."
msgstr "리버스 엔지니어링에 대한 생각."

#. {ph0}: <br />
#: website/public/blog/index.html:219
#, python-brace-format
msgctxt "page:blog/index.html"
msgid "Game reconstruction{ph0}Essay"
msgstr "게임 재구성{ph0}에세이"

#: website/public/blog/index.html:221
msgctxt "page:blog/index.html"
msgid "The industrial revolution in reverse engineering"
msgstr "리버스 엔지니어링의 산업 혁명"

#: website/public/blog/index.html:222
msgctxt "page:blog/index.html"
msgid ""
"What manual RE and reconstructing TH08, TH095 and TH04 taught me about "
"agents, verification and knowledge that compounds across projects."
msgstr ""
"수동 리버스 엔지니어링과 TH08, TH095, TH04 재구성 경험을 바탕으로, 에이전트와 검증, 프로젝트를 거치며 축적되는 지식을 "
"살펴봅니다."

#: website/public/blog/index.html:212 website/public/blog/index.html:227
msgctxt "page:blog/index.html"
msgid "Read the article"
msgstr "글 읽기"

#: website/public/blog/index.html:230
msgctxt "page:blog/index.html"
msgid "By N0zoM1z0 · 10 October 2026"
msgstr "작성자: N0zoM1z0 · 2026년 10월 10일"

#. {ph0}: <span aria-hidden="true">
#. {ph1}: </span>
#: website/public/blog/index.html:250
#: website/public/blog/reverse-engineering-models/index.html:889
#: website/public/blog/touhou-reconstruction/index.html:1086
#: website/public/contributors/index.html:1137
#: website/public/examples/dino-lab/index.html:481
#: website/public/faq/index.html:579
#: website/public/first-investigation/index.html:540
#: website/public/get-started/index.html:1823
#: website/public/guides/browser/index.html:513
#: website/public/guides/index.html:288
#: website/public/guides/javascript/index.html:509
#: website/public/guides/native/index.html:515 website/public/index.html:1228
#: website/public/showcase/aegis/index.html:814
#: website/public/showcase/ctf/index.html:783
#: website/public/showcase/dx-ball/index.html:791
#: website/public/showcase/index.html:323
#: website/public/showcase/notion/index.html:637
#: website/public/showcase/th04/index.html:806
#, python-brace-format
msgctxt "shared"
msgid "{ph0}↑{ph1} Top"
msgstr "{ph0}↑{ph1} 상단"

#: website/public/blog/index.html:6
msgctxt "page:blog/index.html"
msgid "REA Blog — Thoughts on Reverse Engineering"
msgstr "REA 블로그 — 리버스 엔지니어링에 대한 생각"

#: website/public/blog/index.html:7
msgctxt "page:blog/index.html"
msgid ""
"Thoughts on reverse engineering, drawing on practical experience with REA "
"and AI agents."
msgstr "REA와 AI 에이전트를 활용한 실제 경험을 바탕으로 리버스 엔지니어링에 대해 생각해 봅니다."

#: website/public/blog/index.html:79 website/public/blog/index.html:92
#: website/public/blog/reverse-engineering-models/index.html:79
#: website/public/blog/reverse-engineering-models/index.html:92
#: website/public/blog/touhou-reconstruction/index.html:79
#: website/public/blog/touhou-reconstruction/index.html:92
#: website/public/contributors/index.html:79
#: website/public/contributors/index.html:92
#: website/public/examples/dino-lab/index.html:79
#: website/public/examples/dino-lab/index.html:92
#: website/public/faq/index.html:79 website/public/faq/index.html:92
#: website/public/first-investigation/index.html:79
#: website/public/first-investigation/index.html:92
#: website/public/get-started/index.html:79
#: website/public/get-started/index.html:92
#: website/public/guides/browser/index.html:79
#: website/public/guides/browser/index.html:92
#: website/public/guides/index.html:79 website/public/guides/index.html:92
#: website/public/guides/javascript/index.html:79
#: website/public/guides/javascript/index.html:92
#: website/public/guides/native/index.html:79
#: website/public/guides/native/index.html:92 website/public/index.html:79
#: website/public/index.html:92 website/public/showcase/aegis/index.html:79
#: website/public/showcase/aegis/index.html:92
#: website/public/showcase/ctf/index.html:79
#: website/public/showcase/ctf/index.html:92
#: website/public/showcase/dx-ball/index.html:79
#: website/public/showcase/dx-ball/index.html:92
#: website/public/showcase/index.html:79 website/public/showcase/index.html:92
#: website/public/showcase/notion/index.html:79
#: website/public/showcase/notion/index.html:92
#: website/public/showcase/th04/index.html:79
#: website/public/showcase/th04/index.html:92
msgctxt "shared"
msgid ""
"REA — Find out how software works. Reverse engineering with your coding "
"agent."
msgstr "REA — 소프트웨어의 작동 원리를 알아보세요. 코딩 에이전트와 함께하는 리버스 엔지니어링."

#: website/public/blog/index.html:112
#: website/public/blog/reverse-engineering-models/index.html:112
#: website/public/blog/touhou-reconstruction/index.html:112
#: website/public/contributors/index.html:113
#: website/public/examples/dino-lab/index.html:113
#: website/public/faq/index.html:112
#: website/public/first-investigation/index.html:112
#: website/public/get-started/index.html:112
#: website/public/guides/browser/index.html:112
#: website/public/guides/index.html:112
#: website/public/guides/javascript/index.html:112
#: website/public/guides/native/index.html:112 website/public/index.html:114
#: website/public/showcase/aegis/index.html:113
#: website/public/showcase/ctf/index.html:112
#: website/public/showcase/dx-ball/index.html:112
#: website/public/showcase/index.html:112
#: website/public/showcase/notion/index.html:112
#: website/public/showcase/th04/index.html:112
msgctxt "shared"
msgid "REA home"
msgstr "REA 홈"

#: website/public/blog/index.html:116
#: website/public/blog/reverse-engineering-models/index.html:116
#: website/public/blog/touhou-reconstruction/index.html:116
#: website/public/contributors/index.html:117
#: website/public/examples/dino-lab/index.html:117
#: website/public/faq/index.html:116
#: website/public/first-investigation/index.html:116
#: website/public/get-started/index.html:116
#: website/public/guides/browser/index.html:116
#: website/public/guides/index.html:116
#: website/public/guides/javascript/index.html:116
#: website/public/guides/native/index.html:116 website/public/index.html:118
#: website/public/showcase/aegis/index.html:117
#: website/public/showcase/ctf/index.html:116
#: website/public/showcase/dx-ball/index.html:116
#: website/public/showcase/index.html:116
#: website/public/showcase/notion/index.html:116
#: website/public/showcase/th04/index.html:116
msgctxt "shared"
msgid "Main navigation"
msgstr "주 메뉴"

#: website/public/blog/index.html:135
#: website/public/blog/reverse-engineering-models/index.html:135
#: website/public/blog/touhou-reconstruction/index.html:135
#: website/public/contributors/index.html:136
#: website/public/examples/dino-lab/index.html:136
#: website/public/faq/index.html:135
#: website/public/first-investigation/index.html:135
#: website/public/get-started/index.html:135
#: website/public/guides/browser/index.html:135
#: website/public/guides/index.html:135
#: website/public/guides/javascript/index.html:135
#: website/public/guides/native/index.html:135 website/public/index.html:137
#: website/public/showcase/aegis/index.html:136
#: website/public/showcase/ctf/index.html:135
#: website/public/showcase/dx-ball/index.html:135
#: website/public/showcase/index.html:135
#: website/public/showcase/notion/index.html:135
#: website/public/showcase/th04/index.html:135
msgctxt "shared"
msgid "REA on GitHub"
msgstr "GitHub에서 REA 보기"

#: website/public/blog/index.html:155
#: website/public/blog/reverse-engineering-models/index.html:155
#: website/public/blog/touhou-reconstruction/index.html:155
#: website/public/contributors/index.html:156
#: website/public/examples/dino-lab/index.html:156
#: website/public/faq/index.html:155
#: website/public/first-investigation/index.html:155
#: website/public/get-started/index.html:155
#: website/public/guides/browser/index.html:155
#: website/public/guides/index.html:155
#: website/public/guides/javascript/index.html:155
#: website/public/guides/native/index.html:155 website/public/index.html:157
#: website/public/showcase/aegis/index.html:156
#: website/public/showcase/ctf/index.html:155
#: website/public/showcase/dx-ball/index.html:155
#: website/public/showcase/index.html:155
#: website/public/showcase/notion/index.html:155
#: website/public/showcase/th04/index.html:155
msgctxt "shared"
msgid "Join REA on Discord"
msgstr "REA Discord 참여"

#: website/public/blog/index.html:174
#: website/public/blog/reverse-engineering-models/index.html:174
#: website/public/blog/touhou-reconstruction/index.html:174
#: website/public/contributors/index.html:175
#: website/public/examples/dino-lab/index.html:175
#: website/public/faq/index.html:174
#: website/public/first-investigation/index.html:174
#: website/public/get-started/index.html:174
#: website/public/guides/browser/index.html:174
#: website/public/guides/index.html:174
#: website/public/guides/javascript/index.html:174
#: website/public/guides/native/index.html:174 website/public/index.html:176
#: website/public/showcase/aegis/index.html:175
#: website/public/showcase/ctf/index.html:174
#: website/public/showcase/dx-ball/index.html:174
#: website/public/showcase/index.html:174
#: website/public/showcase/notion/index.html:174
#: website/public/showcase/th04/index.html:174
msgctxt "shared"
msgid "Follow REA on X"
msgstr "X에서 REA 팔로우"

#: website/public/blog/index.html:250
msgctxt "page:blog/index.html"
msgid "Back to top"
msgstr "맨 위로"

#: website/public/blog/touhou-reconstruction/index.html:107
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Skip to content"
msgstr "본문으로 건너뛰기"

#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/blog/touhou-reconstruction/index.html:199
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}Home{ph1} / {ph2}Blog{ph3} / Touhou reconstruction"
msgstr "{ph0}홈{ph1} / {ph2}블로그{ph3} / 동방 재구성"

#: website/public/blog/touhou-reconstruction/index.html:203
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Essay · Touhou reconstruction"
msgstr "에세이 · 동방 재건"

#: website/public/blog/touhou-reconstruction/index.html:204
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "The industrial revolution in reverse engineering."
msgstr "리버스 엔지니어링의 산업 혁명"

#: website/public/blog/touhou-reconstruction/index.html:205
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "By N0zoM1z0 · 10 October 2026"
msgstr "작성자: N0zoM1z0 · 2026년 10월 10일"

#: website/public/blog/touhou-reconstruction/index.html:207
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Takeaway"
msgstr "핵심 요점"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:209
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Give agents autonomy over the investigation.{ph1} Set a clear goal and "
"acceptance criteria, then let the agent decide what to try next."
msgstr ""
"{ph0}에이전트가 자율적으로 조사하게 하세요.{ph1} 목표와 통과 기준을 명확히 정하고, 다음에 무엇을 시도할지는 에이전트가 결정하게"
" 하세요."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:214
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Use the repository and Git as working memory.{ph1} Keep the reasoning "
"with the code. Git checkpoints let the next session continue after the "
"conversation ends."
msgstr ""
"{ph0}저장소와 Git을 작업 메모리로 사용하세요.{ph1} 추론 과정을 코드와 함께 보관하세요. Git 체크포인트가 있으면 대화가 "
"끝난 뒤에도 다음 세션에서 작업을 이어갈 수 있습니다."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:219
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Let evidence decide what you claim.{ph1} A confident explanation still "
"needs testing. “Unknown” is a valid answer when the evidence is incomplete."
msgstr ""
"{ph0}주장은 증거에 따라 결정하세요.{ph1} 확신에 찬 설명도 검증이 필요합니다. 증거가 부족하다면 “알 수 없음”도 올바른 "
"답입니다."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:224
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Test the oracle too.{ph1} Try cases it should reject. If it misses a "
"bug, revisit the earlier results that depended on it."
msgstr ""
"{ph0}검증 기준인 오라클도 테스트하세요.{ph1} 실패해야 할 사례를 넣어 보세요. 버그를 놓쳤다면 그 오라클에 의존했던 이전 결과도"
" 다시 살펴보세요."

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:229
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}We are in the early days of RE's industrial revolution.{ph1} The "
"methods are still taking shape. There is plenty left to explore."
msgstr ""
"{ph0}우리는 리버스 엔지니어링 산업 혁명의 초입에 있습니다.{ph1} 방법론은 아직 정립 중이며, 탐구할 여지도 많습니다."

#: website/public/blog/touhou-reconstruction/index.html:241
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "How experience compounds"
msgstr "경험이 축적되는 방식"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:242
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}Human direction{ph1} · Goal and acceptance criteria"
msgstr "{ph0}사람의 지시{ph1} · 목표와 합격 기준"

#: website/public/blog/touhou-reconstruction/index.html:330
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Autonomy"
msgstr "자율성"

#: website/public/blog/touhou-reconstruction/index.html:331
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Agent"
msgstr "에이전트"

#. {ph0}: <br />
#: website/public/blog/touhou-reconstruction/index.html:332
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Choose an experiment.{ph0}Propose a hypothesis."
msgstr "실험을 선택하고{ph0}가설을 제안합니다."

#: website/public/blog/touhou-reconstruction/index.html:335
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Verification"
msgstr "검증"

#: website/public/blog/touhou-reconstruction/index.html:336
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Oracle"
msgstr "검증 기준"

#. {ph0}: <br />
#: website/public/blog/touhou-reconstruction/index.html:337
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Test against a{ph0}concrete reference."
msgstr "구체적인 기준과{ph0}대조해 검증합니다."

#: website/public/blog/touhou-reconstruction/index.html:340
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Repository"
msgstr "저장소"

#: website/public/blog/touhou-reconstruction/index.html:341
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Working memory"
msgstr "작업 기억"

#. {ph0}: <br />
#: website/public/blog/touhou-reconstruction/index.html:342
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Code, evidence,{ph0}checks and lessons."
msgstr "코드, 증거,{ph0}검사와 교훈."

#. {ph0}: <br />
#. {ph1}: <strong>
#. {ph2}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:344
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Mismatch{ph0}{ph1}Revise the hypothesis{ph2}"
msgstr "불일치{ph0}{ph1}가설 수정{ph2}"

#. {ph0}: <br />
#. {ph1}: <strong>
#. {ph2}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:347
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "A better{ph0}{ph1}starting point{ph2}"
msgstr "더 나은{ph0}{ph1}시작 지점{ph2}"

#: website/public/blog/touhou-reconstruction/index.html:350
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Reuse"
msgstr "재사용"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:351
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}Pass{ph1} · Keep the result and its evidence"
msgstr "{ph0}통과{ph1} · 결과와 증거 보관"

#: website/public/blog/touhou-reconstruction/index.html:363
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Each project leaves the next with a better starting point. That includes "
"fixing the checks when we discover a gap."
msgstr "각 프로젝트는 다음 프로젝트에 더 나은 출발점을 남깁니다. 검증의 허점을 발견해 보완하는 일도 여기에 포함됩니다."

#: website/public/blog/touhou-reconstruction/index.html:370
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "In this article"
msgstr "이 글의 내용"

#. {ph0}: <a href="#august">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:372
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}August 2026{ph1}"
msgstr "{ph0}2026년 8월{ph1}"

#. {ph0}: <a href="#th08">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:373
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}TH08: the continuation{ph1}"
msgstr "{ph0}TH08: 작업 이어받기{ph1}"

#. {ph0}: <a href="#different-approaches">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:374
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}Two approaches{ph1}"
msgstr "{ph0}두 가지 접근법{ph1}"

#. {ph0}: <a href="#th095">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:375
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}TH095: compounding{ph1}"
msgstr "{ph0}TH095: 경험의 축적{ph1}"

#. {ph0}: <a href="#th04">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:376
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}TH04: across architectures{ph1}"
msgstr "{ph0}TH04: 다른 아키텍처로{ph1}"

#. {ph0}: <a href="#semantic-reconstruction">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:377
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}From exact to readable{ph1}"
msgstr "{ph0}정확한 코드에서 읽기 쉬운 코드로{ph1}"

#. {ph0}: <a href="#industrial-shift">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:380
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}The industrial shift{ph1}"
msgstr "{ph0}산업적 전환{ph1}"

#. {ph0}: <a href="#possibilities">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:381
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}What becomes possible{ph1}"
msgstr "{ph0}새롭게 열리는 가능성{ph1}"

#: website/public/blog/touhou-reconstruction/index.html:386
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "What changed in August 2026"
msgstr "2026년 8월에 달라진 것"

#: website/public/blog/touhou-reconstruction/index.html:387
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Before this work, I had done a lot of manual reverse engineering. I would "
"inspect a function until I had an explanation, then test that explanation "
"against the program. Getting further meant spending more of my own time on "
"the next function. It also meant keeping an increasingly large picture in my"
" head."
msgstr ""
"이 작업 전에는 수동 리버스 엔지니어링을 많이 했습니다. 함수를 살펴 설명을 도출하고, 실제 프로그램으로 그 설명을 검증하곤 했습니다. "
"더 나아가려면 다음 함수에도 제 시간을 들여야 했습니다. 머릿속에 담아 두어야 할 전체 구조도 점점 커졌습니다."

#: website/public/blog/touhou-reconstruction/index.html:394
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Most of my RE work is on games. I reconstruct them so their behavior can be "
"understood and eventually carried into a port or a mod. That is the "
"experience behind this article. The method can be useful elsewhere, but each"
" field needs to establish what it can check against a reliable reference."
msgstr ""
"제 리버스 엔지니어링 작업은 대부분 게임을 대상으로 합니다. 게임의 동작을 이해하고 궁극적으로 다른 플랫폼으로 이식하거나 모드를 만들 수"
" 있도록 게임을 재구성합니다. 이 글은 그런 경험을 바탕으로 합니다. 이 방법은 다른 분야에도 유용할 수 있지만, 각 분야에서 신뢰할 수"
" 있는 기준과 대조해 무엇을 검증할 수 있는지 정립해야 합니다."

#: website/public/blog/touhou-reconstruction/index.html:401
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"In August 2026, I started exploring agent-driven RE seriously. I wanted to "
"see how far an agent could get with access to the program and ordinary "
"development tools. Touhou reconstruction gave me a substantial project in "
"which to find out."
msgstr ""
"2026년 8월, 에이전트 중심의 리버스 엔지니어링을 본격적으로 탐구하기 시작했습니다. 프로그램과 일반 개발 도구를 제공하면 에이전트가 "
"어디까지 해낼 수 있는지 궁금했습니다. 동방 재구성은 이를 알아볼 만한 규모의 프로젝트였습니다."

#: website/public/blog/touhou-reconstruction/index.html:407
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The early progress was startling. An investigation could keep moving without"
" me choosing every individual step. A failed comparison might send the agent"
" to another caller. It could write a small diagnostic and use the result to "
"decide what to try next. Giving it that freedom made a difference: I could "
"spend more attention on the project's direction and on whether its checks "
"were trustworthy."
msgstr ""
"초기의 진전은 놀라웠습니다. 제가 모든 단계를 일일이 선택하지 않아도 조사는 계속 진행될 수 있었습니다. 비교가 실패하면 에이전트는 다른"
" 호출 함수를 조사할 수 있었습니다. 작은 진단 코드를 작성하고 그 결과를 바탕으로 다음에 무엇을 시도할지 결정할 수도 있었습니다. 이런"
" 자율성이 차이를 만들었습니다. 저는 프로젝트의 방향과 검사의 신뢰성에 더 집중할 수 있었습니다."

#: website/public/blog/touhou-reconstruction/index.html:416
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The pace got my attention first. Then I began wondering what would survive "
"beyond the current project. Would the next game benefit from everything we "
"had just learned?"
msgstr ""
"처음에는 속도에 눈길이 갔습니다. 그러다 이번 프로젝트가 끝난 뒤에도 무엇이 남을지 궁금해졌습니다. 방금 배운 것들이 다음 게임에도 "
"도움이 될까요?"

#: website/public/blog/touhou-reconstruction/index.html:423
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "TH08: building on human work"
msgstr "TH08: 사람의 작업을 바탕으로"

#. {ph0}: <a href="https://github.com/N0zoM1z0/th08">
#. {ph1}: </a>
#. {ph2}: <a href="https://github.com/GensokyoClub/th08" >
#. {ph3}: </a >
#: website/public/blog/touhou-reconstruction/index.html:424
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}TH08{ph1}, Imperishable Night, began as a continuation of "
"{ph2}GensokyoClub's reconstruction{ph3}. Their public source gave me a "
"substantial foundation. It came with knowledge of the build and a history of"
" contributions that I preserved in the continuation."
msgstr ""
"{ph0}TH08{ph1}, 동방영야초는 {ph2}GensokyoClub의 재구성 작업{ph3}을 이어받아 시작했습니다. 공개된 소스는 "
"탄탄한 토대가 됐습니다. 빌드에 관한 지식과 기여 이력도 함께 있었고, 작업을 이어가며 그 이력을 보존했습니다."

#: website/public/blog/touhou-reconstruction/index.html:433
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The imported history ends at the public 10 August checkpoint. My independent"
" continuation began on 13 August. By 19 August, the ledger recorded source "
"for all 1,107 identified game functions."
msgstr ""
"가져온 이력은 공개된 8월 10일 체크포인트까지입니다. 독립적인 후속 작업은 8월 13일에 시작했습니다. 8월 19일에는 식별된 게임 "
"함수 1,107개 모두의 소스가 작업 기록에 남았습니다."

#: website/public/blog/touhou-reconstruction/index.html:438
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"A playable Linux reconstruction port was committed on 24 August, roughly "
"eleven days after the continuation began. A Web edition followed. The native"
" Linux 64-bit release arrived on 30 August."
msgstr ""
"플레이 가능한 Linux 재구성 이식판은 작업을 이어가기 시작한 지 약 11일 뒤인 8월 24일에 커밋되었습니다. 이어서 웹 버전이 "
"나왔습니다. 네이티브 Linux 64비트 버전은 8월 30일에 출시되었습니다."

#: website/public/blog/touhou-reconstruction/index.html:443
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"What struck me was that the work had reached a program people could run. "
"Getting there required following problems beyond an individual function. "
"Even when two functions looked correct in isolation, they could accidentally"
" use separate copies of state that should have been shared."
msgstr ""
"인상 깊었던 점은 사람들이 실제로 실행할 수 있는 프로그램이 됐다는 것입니다. 그러려면 개별 함수를 넘어선 문제도 추적해야 했습니다. 두"
" 함수가 각각 올바르게 보여도, 공유해야 할 상태를 서로 다른 복사본으로 사용하는 문제가 생길 수 있었습니다."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:450
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"This made reference checks central to the work. I call them "
"{ph0}oracles{ph1}. A code comparison can tell us whether a reconstructed "
"function reproduces the original instructions. A runtime check can tell us "
"whether an exercised route reaches the expected state. The agent proposes an"
" explanation and tests it; a mismatch gives it something specific to "
"investigate."
msgstr ""
"그래서 기준과의 대조 검증이 작업의 핵심이 됐습니다. 저는 이런 기준을 {ph0}오라클{ph1}이라고 부릅니다. 코드 비교는 재구성한 "
"함수가 원래 명령어를 재현하는지 알려줍니다. 런타임 검증은 실행한 경로가 예상 상태에 도달하는지 알려줍니다. 에이전트는 설명을 제안하고 "
"검증하며, 불일치가 나오면 구체적인 조사 대상으로 삼습니다."

#: website/public/blog/touhou-reconstruction/index.html:458
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "An exact match with the wrong constant"
msgstr "잘못된 상수로도 완전 일치 판정"

#: website/public/blog/touhou-reconstruction/index.html:459
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"An oracle is software someone wrote. TH08 gave me a clear reminder of how "
"much can depend on that software."
msgstr "오라클 역시 누군가 작성한 소프트웨어입니다. TH08은 우리가 그 소프트웨어에 얼마나 의존하는지 분명히 보여줬습니다."

#. {ph0}: <code>0.0</code>
#. {ph1}: <code>128.0</code>
#: website/public/blog/touhou-reconstruction/index.html:463
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"In September, a bug reported by a downstream Switch port led back to item "
"auto-collection. The reconstructed source checked player power against "
"{ph0}. The original used {ph1}, the maximum-power threshold."
msgstr ""
"9월에 후속 Switch 이식판에서 보고된 버그를 추적하다가 아이템 자동 수집 기능에 도달했습니다. 재구성된 소스는 플레이어의 파워를 "
"{ph0}과 비교했습니다. 원본은 최대 파워 임계값인 {ph1}을 사용했습니다."

#: website/public/blog/touhou-reconstruction/index.html:469
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Normal power is non-negative, so the reconstructed power check was "
"effectively always satisfied. Above the collection line, the game could "
"attract items without requiring maximum power. The other exceptions in the "
"condition were correct. This one constant changed the behavior."
msgstr ""
"정상적인 파워는 음수가 아니므로, 재구성한 코드의 파워 조건은 사실상 항상 참이었습니다. 수집선 위에서는 최대 파워가 아니어도 아이템을 "
"끌어올 수 있었습니다. 나머지 예외 조건은 올바르게 구현됐습니다. 상수 하나가 동작을 바꾼 것입니다."

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:476
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}Yet the function had already passed the exact comparison.{ph1}"
msgstr "{ph0}그런데 이 함수는 이미 명령어 완전 일치 검사를 통과한 상태였습니다.{ph1}"

#: website/public/blog/touhou-reconstruction/index.html:482
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"A rebuild can put a constant at a different address. The comparison tool "
"accounted for that by adjusting addresses in the compiled instructions "
"before comparing them with the original. But it never checked the floating-"
"point value stored at the referenced address."
msgstr ""
"다시 빌드하면 상수의 주소가 달라질 수 있습니다. 비교 도구는 이를 고려해 컴파일된 명령어의 주소를 조정한 뒤 원본과 비교했습니다. "
"하지만 참조 주소에 저장된 부동소수점 값은 확인하지 않았습니다."

#. {ph0}: <code>128.0</code>
#. {ph1}: <code>0.0</code>
#: website/public/blog/touhou-reconstruction/index.html:489
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"That left a hole in the check. It could point the reconstructed instruction "
"at the original's {ph0} while the source still said {ph1}. The instruction "
"bytes matched. The source meant something different."
msgstr ""
"그로 인해 검증에 허점이 생겼습니다. 소스에는 여전히 {ph1}이 쓰여 있어도, 재구성된 명령어가 원본의 {ph0}을 가리키도록 바꿀 수"
" 있었습니다. 명령어 바이트는 일치했지만, 소스가 뜻하는 바는 달랐습니다."

#. {ph0}: <a href="https://github.com/N0zoM1z0/th08/pull/11" >
#. {ph1}: </a >
#. {ph2}: <a href="https://github.com/N0zoM1z0/th08/pull/13">
#. {ph3}: </a>
#: website/public/blog/touhou-reconstruction/index.html:495
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The {ph0}2 September fix{ph1} corrected the source and made the comparison "
"check the referenced constant's actual bytes. A {ph2}wider audit{ph3} then "
"examined 1,548 floating-literal references. It found another twelve "
"incorrect references across five accepted functions."
msgstr ""
"{ph0}9월 2일 수정{ph1}에서는 소스를 고치고 참조 상수의 실제 바이트까지 비교하도록 했습니다. 이어진 {ph2}확대 "
"점검{ph3}에서는 부동소수점 리터럴 참조 1,548개를 조사했습니다. 통과했던 함수 5개에서 잘못된 참조 12개를 추가로 발견했습니다."

#: website/public/blog/touhou-reconstruction/index.html:506
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The comparison now checks every such floating literal. Its tests include "
"deliberately wrong values to make sure they are rejected. We also had to "
"revisit results that had passed the weaker check."
msgstr ""
"이제 비교 도구는 해당 부동소수점 리터럴을 모두 확인합니다. 잘못된 값을 의도적으로 넣어 거부되는지도 테스트합니다. 이전의 불완전한 "
"검사를 통과한 결과도 다시 살펴봐야 했습니다."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:511
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}The oracle needed reconstructing too.{ph1} Repairing it was part of "
"repairing the game."
msgstr "{ph0}오라클 자체도 재구성이 필요했습니다.{ph1} 검증 도구를 고치는 일도 게임을 고치는 과정의 일부였습니다."

#: website/public/blog/touhou-reconstruction/index.html:515
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"That matters when the team is mostly one person working with agents. I "
"cannot personally inspect every line they produce, so much of my confidence "
"rests on their checks. A shared oracle's blind spot can affect many "
"investigations before I notice it. I have to understand what the checker "
"actually verifies and test it against cases that ought to fail."
msgstr ""
"사실상 한 사람이 에이전트들과 일하는 팀에서는 특히 중요합니다. 에이전트가 만든 모든 줄을 직접 살필 수 없으므로, 결과에 대한 신뢰는 "
"검증에 크게 의존합니다. 공통 오라클의 사각지대는 제가 알아채기 전에 여러 조사에 영향을 줄 수 있습니다. 검사기가 실제로 무엇을 "
"검증하는지 이해하고, 실패해야 할 사례로도 테스트해야 합니다."

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:523
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"As the work continued, those checks became part of the repository. So did "
"the reasons for source changes and notes that let a later session pick up "
"where an earlier one stopped. {ph0}The repository was becoming the project's"
" working memory.{ph1}"
msgstr ""
"작업이 이어지면서 그런 검사들이 저장소의 일부가 되었습니다. 소스를 변경한 이유와 이후 세션이 이전 세션에서 멈춘 지점부터 작업을 이어갈"
" 수 있게 하는 메모도 마찬가지였습니다. {ph0}저장소는 프로젝트의 작업 메모리가 되어 가고 있었습니다.{ph1}"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:532
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}A successful batch gave us both recovered code and a better environment"
" for the next batch.{ph1}"
msgstr "{ph0}한 묶음의 작업이 성공할 때마다 복구된 코드와 함께 다음 작업을 위한 더 나은 환경이 남았습니다.{ph1}"

#: website/public/blog/touhou-reconstruction/index.html:540
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Two different ideas of reconstruction"
msgstr "재구성을 바라보는 두 가지 관점"

#. {ph0}: <a
#. href="https://web.archive.org/web/20260909051514/https://github.com/GensokyoClub/th08#important-
#. notice" >
#. {ph1}: </a >
#: website/public/blog/touhou-reconstruction/index.html:541
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"GensokyoClub's {ph0}public README{ph1} makes its disagreement with this kind"
" of work explicit. The notice announces that further development will happen"
" privately until completion. One passage reads:"
msgstr ""
"GensokyoClub의 {ph0}공개 README{ph1}는 이런 작업 방식에 반대한다는 입장을 명시합니다. 해당 공지는 작업이 완성될"
" 때까지 추가 개발을 비공개로 진행한다고 알립니다. 한 구절은 다음과 같습니다:"

#: website/public/blog/touhou-reconstruction/index.html:552
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The rise of grifters (AI decompilations and ports) in this space taking from"
" our work paints a bad image for future decompilation efforts…"
msgstr "우리 작업을 가져다 쓰는 편승자들(AI 디컴파일 및 이식)의 등장은 앞으로의 디컴파일 노력에 부정적인 이미지를 씌웁니다…"

#: website/public/blog/touhou-reconstruction/index.html:558
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The notice also describes the psychological toll on the maintainers. Their "
"contribution policy excludes pull requests produced primarily with AI. They "
"have put their free time into difficult work, and that work helped make my "
"continuation possible. I respect the effort behind it. The disagreement I "
"want to discuss is about how reconstruction should proceed and how a "
"contribution should be judged."
msgstr ""
"공지에는 유지보수자들이 받는 심리적 부담도 담겨 있습니다. 기여 정책에서는 주로 AI로 작성한 풀 리퀘스트를 받지 않습니다. 이들은 "
"여가를 들여 어려운 작업을 했고, 그 작업 덕분에 저도 후속 작업을 시작할 수 있었습니다. 저는 그 노력을 존중합니다. 여기서 논의하려는"
" 차이는 재구성을 어떻게 진행하고 기여를 어떻게 평가할지에 관한 것입니다."

#: website/public/blog/touhou-reconstruction/index.html:567
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"In the manual workflow I knew, developing an understanding of a function and"
" reconstructing it usually fell to the same person. A project relied heavily"
" on that person's expertise. Trust in the contributor mattered because so "
"much of the reasoning happened while they worked."
msgstr ""
"제가 알던 수동 작업 방식에서는 함수를 이해하고 재구성하는 일을 보통 한 사람이 맡았습니다. 프로젝트는 그 사람의 전문성에 크게 "
"의존했습니다. 많은 추론이 작업 중에 이루어졌기 때문에 기여자에 대한 신뢰가 중요했습니다."

#: website/public/blog/touhou-reconstruction/index.html:574
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Existing projects already preserve knowledge in their source and build "
"tools. What changed for me was that an agent could use that knowledge to "
"pursue the next investigation on its own."
msgstr ""
"기존 프로젝트도 소스와 빌드 도구에 지식을 보존합니다. 제게 달라진 점은 에이전트가 그 지식을 활용해 다음 조사를 스스로 진행할 수 "
"있다는 것이었습니다."

#: website/public/blog/touhou-reconstruction/index.html:579
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"In my continuation, I decide the objective and the standard for accepting a "
"result. The agent has broad freedom to investigate. Its proposed "
"reconstruction then has to survive the relevant checks. I want another "
"person to be able to examine why we chose an implementation, even if an "
"agent did most of the work."
msgstr ""
"제가 이어가는 작업에서는 목표와 결과의 수용 기준을 제가 정합니다. 에이전트는 폭넓은 자유를 갖고 조사합니다. 제안한 재구성은 관련 "
"검사를 통과해야 합니다. 대부분을 에이전트가 수행했더라도, 다른 사람이 왜 그 구현을 선택했는지 검토할 수 있기를 바랍니다."

#: website/public/blog/touhou-reconstruction/index.html:586
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"This can be a difficult transition. Years of careful work may become the "
"foundation for a continuation that moves much faster. That raises real "
"questions about credit. It also changes what maintainers need to know before"
" accepting a contribution."
msgstr ""
"이런 전환은 어려울 수 있습니다. 수년간의 세심한 작업이 훨씬 빠르게 진행되는 후속 작업의 기반이 될 수 있습니다. 이는 공로를 어떻게 "
"인정할 것인가라는 실제 문제를 제기합니다. 또한 유지 관리자가 기여를 받아들이기 전에 알아야 할 사항도 달라집니다."

#: website/public/blog/touhou-reconstruction/index.html:592
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The industrial analogy helps me think about this. In a craft, much of the "
"process depends on the skill of the person carrying it out. Machinery "
"changes where that skill is needed. Someone still has to design the process "
"and recognize when its output is wrong. Different communities can choose how"
" much of that change they want to take on."
msgstr ""
"산업에 빗대면 이 변화를 이해하기 쉽습니다. 수공업에서는 과정의 많은 부분이 작업자의 숙련도에 달려 있습니다. 기계가 도입되면 그 "
"숙련도가 필요한 지점이 달라집니다. 여전히 누군가는 공정을 설계하고 결과가 잘못됐을 때 알아봐야 합니다. 각 커뮤니티는 이 변화를 어느 "
"정도 받아들일지 선택할 수 있습니다."

#: website/public/blog/touhou-reconstruction/index.html:600
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"My choice is to continue openly, with the inherited work credited and its "
"history preserved. I want the new work to be reviewable. That gives us a way"
" to ask how far this approach can go and to learn from what goes wrong along"
" the way."
msgstr ""
"저는 앞선 작업의 공로를 인정하고 이력을 보존하며 공개적으로 이어가기로 했습니다. 새 작업도 검토할 수 있게 만들고 싶습니다. 그래야 이"
" 방식으로 어디까지 갈 수 있는지 살펴보고, 도중에 생기는 실패에서도 배울 수 있습니다."

#. {ph0}: <a
#. href="https://github.com/GensokyoClub/th08/blob/e874b98e210b3be1ed21c5e03d54b883eac5069c/README.md#important-
#. notice" >
#. {ph1}: </a >
#. {ph2}: <a
#. href="https://github.com/GensokyoClub/th08/blob/f345c7dee07b849f2ff93a0029ab5ede126bf12c/CODE_OF_CONDUCT.md"
#. >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/N0zoM1z0/th08/blob/d2a00f4acb4a13916e07a00bd13f714961714628/README.md#credits-
#. and-provenance" >
#. {ph5}: </a >
#: website/public/blog/touhou-reconstruction/index.html:606
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Source: GensokyoClub's {ph0}README notice{ph1}, checked on 10 October 2026, "
"and its {ph2}contribution policy{ph3}. The quotation is a shortened excerpt."
" TH08's {ph4}credits and provenance{ph5} record the continuation boundary."
msgstr ""
"출처: 2026년 10월 10일에 확인한 GensokyoClub의 {ph0}README 공지{ph1}와 {ph2}기여 정책{ph3}. "
"인용문은 일부를 줄여 발췌했습니다. TH08의 {ph4}공로 및 출처 기록{ph5}에는 후속 작업이 시작된 경계가 기록되어 있습니다."

#: website/public/blog/touhou-reconstruction/index.html:624
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "TH095: experience starts compounding"
msgstr "TH095: 경험의 축적이 효과를 내기 시작하다"

#. {ph0}: <a href="https://github.com/N0zoM1z0/th095">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:625
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}TH095{ph1}, Shoot the Bullet, made the value of that experience much "
"easier to see. Its repository began on 29 August with zero confirmed game "
"functions in the ledger. We still had to learn the game. But we already knew"
" much more about how to begin a reconstruction and how to keep it moving."
msgstr ""
"{ph0}TH095{ph1}, Shoot the Bullet에서는 그런 경험의 가치를 훨씬 쉽게 확인할 수 있었습니다. 저장소는 8월 "
"29일에 시작되었고, 당시 기록 대장에는 확인된 게임 함수가 하나도 없었습니다. 게임 자체는 여전히 배워야 했습니다. 하지만 재구성을 "
"어떻게 시작하고 계속 진행할지에 대해서는 이미 훨씬 많은 것을 알고 있었습니다."

#: website/public/blog/touhou-reconstruction/index.html:633
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"By 7 September, all 697 identified game functions had source. By 8 "
"September, 696 had been accepted as exact comparisons. The whole program "
"linked on 9 September. The Windows i386 reconstruction was marked playable "
"on 10 September, about twelve days after initialization."
msgstr ""
"9월 7일까지 확인된 게임 함수 697개 모두의 소스가 마련되었습니다. 9월 8일까지 696개가 정확한 일치 비교를 통과했습니다. 전체 "
"프로그램은 9월 9일에 링크되었습니다. Windows i386 재구성판은 초기화 후 약 12일이 지난 9월 10일에 플레이 가능한 것으로"
" 기록되었습니다."

#: website/public/blog/touhou-reconstruction/index.html:640
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"I found this more exciting than the first project's speed. A fresh target "
"could benefit from work done on another game. The experience was already "
"present in the tools and in the way the project was organized."
msgstr ""
"저는 첫 프로젝트의 속도보다 이 점이 더 흥미로웠습니다. 새로운 대상이 다른 게임에서 한 작업의 도움을 받을 수 있었습니다. 그 경험은 "
"이미 도구와 프로젝트 구성 방식에 녹아 있었습니다."

#: website/public/blog/touhou-reconstruction/index.html:646
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"For example, TH08 had taught us to pay attention to the assembled program "
"early. If several recovered functions depend on the same state, their "
"isolated comparisons leave an important question open. We need to see them "
"working together. That lesson helped shape how we approached TH095's whole-"
"program build."
msgstr ""
"예를 들어 TH08에서는 일찍부터 전체 프로그램을 살펴봐야 한다는 것을 배웠습니다. 복구된 여러 함수가 같은 상태에 의존한다면, 각각의 "
"비교만으로는 중요한 의문이 남습니다. 함께 작동하는 모습을 확인해야 합니다. 이 교훈은 TH095의 전체 프로그램 빌드에 접근하는 방식을"
" 정하는 데 도움이 됐습니다."

#: website/public/blog/touhou-reconstruction/index.html:653
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"A lesson that stays in my head is useful while I am there. Once it becomes a"
" check that another session can run, it can keep helping after I have moved "
"on. The next agent can use the result without repeating the investigation "
"that led to it."
msgstr ""
"제 머릿속에만 남아 있는 교훈은 제가 그 작업에 참여하는 동안에는 유용합니다. 하지만 다른 세션에서도 실행할 수 있는 검사가 되면 제가 "
"다음 작업으로 넘어간 뒤에도 계속 도움이 됩니다. 다음 에이전트는 그 결과에 이르게 한 조사를 반복하지 않고도 결과를 활용할 수 "
"있습니다."

#: website/public/blog/touhou-reconstruction/index.html:659
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The floating-literal bug belongs in that memory too. It explains why "
"checking a reference also requires checking the data behind it. Keeping that"
" correction with the code helps later projects avoid inheriting the old "
"check's blind spot."
msgstr ""
"부동소수점 리터럴 버그도 그 기억에 포함됩니다. 참조를 확인할 때 그 뒤에 있는 데이터까지 살펴야 하는 이유를 알려줍니다. 수정 사항을 "
"코드와 함께 남기면 후속 프로젝트가 이전 검사의 사각지대까지 물려받는 일을 막을 수 있습니다."

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:665
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}The method becomes part of the starting material for the next "
"game.{ph1} We can spend more of the next project's effort on what is "
"actually new about its target."
msgstr ""
"{ph0}방법론 자체가 다음 게임을 시작하는 토대가 됩니다.{ph1} 다음 프로젝트에서는 새 대상만의 특성에 더 많은 노력을 쏟을 수 "
"있습니다."

#: website/public/blog/touhou-reconstruction/index.html:673
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The same benefit is available to people joining later. They can inspect a "
"decision and rerun its check before continuing the work. They do not have to"
" reconstruct the entire project's history to find out why the source looks "
"the way it does."
msgstr ""
"나중에 합류하는 사람도 같은 도움을 받습니다. 작업을 이어가기 전에 결정을 살펴보고 검증을 다시 실행할 수 있습니다. 소스가 왜 그렇게 "
"작성됐는지 알기 위해 프로젝트의 전체 이력을 되짚을 필요는 없습니다."

#: website/public/blog/touhou-reconstruction/index.html:681
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "TH04: the workflow survives a different architecture"
msgstr "TH04: 다른 아키텍처에서도 이어지는 작업 방식"

#. {ph0}: <a href="https://github.com/N0zoM1z0/th04">
#. {ph1}: </a>
#. {ph2}: <a href="https://github.com/nmlgc/ReC98">
#. {ph3}: </a>
#: website/public/blog/touhou-reconstruction/index.html:682
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}TH04{ph1}, Lotus Land Story, took this work into the PC-98 DOS era. The"
" target was now a 16-bit environment with four cooperating programs. "
"Understanding its hardware behavior required different evidence from the "
"Windows games. Existing {ph2}ReC98 work{ph3} gave us valuable knowledge and "
"source material here too."
msgstr ""
"{ph0}TH04{ph1}, Lotus Land Story는 이 작업의 범위를 PC-98 DOS 시대로 넓혔습니다. 이제 대상은 네 개의"
" 프로그램이 협력하는 16비트 환경이었습니다. 하드웨어 동작을 이해하려면 Windows 게임과는 다른 증거가 필요했습니다. 기존의 "
"{ph2}ReC98 작업{ph3}도 여기서 귀중한 지식과 소스 자료를 제공했습니다."

#: website/public/blog/touhou-reconstruction/index.html:691
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The DOS reconstruction is now working. In my manual testing, I played "
"complete Normal routes through their endings and checked saves. The current "
"work is a native 64-bit port. Establishing a working DOS version first gives"
" that port a reference."
msgstr ""
"DOS 재구성판은 이제 작동합니다. 수동 테스트에서는 Normal 난이도의 경로를 엔딩까지 플레이하고 저장 기능도 확인했습니다. 현재는 "
"네이티브 64비트 이식판을 작업하고 있습니다. 작동하는 DOS 버전을 먼저 확보해 두면 이식판을 검증할 기준으로 삼을 수 있습니다."

#: website/public/blog/touhou-reconstruction/index.html:697
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The architecture changed what we needed to investigate. It also changed the "
"compiler and runtime against which we checked our work. But the agent could "
"still follow a question through to a result and let that result guide the "
"next experiment."
msgstr ""
"아키텍처가 달라지자 조사할 내용도 달라졌습니다. 결과를 검증하는 컴파일러와 실행 환경도 바뀌었습니다. 그래도 에이전트는 질문을 따라 "
"결과에 도달하고, 그 결과로 다음 실험의 방향을 정할 수 있었습니다."

#: website/public/blog/touhou-reconstruction/index.html:703
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Consider the transition from gameplay to an ending. We need to know what "
"state carries across that boundary and which program is responsible for it. "
"That is something we can investigate against the DOS product. Once the "
"evidence and checks are available, an agent can work through the question "
"much as it did on a Windows title."
msgstr ""
"게임 플레이에서 엔딩으로 넘어가는 상황을 생각해 보세요. 어떤 상태가 그 경계를 넘어 유지되고, 어떤 프로그램이 이를 담당하는지 알아야 "
"합니다. 이는 DOS 제품과 대조하여 조사할 수 있습니다. 증거와 검사가 준비되면 에이전트는 Windows 게임에서와 비슷하게 이 질문을"
" 해결해 나갈 수 있습니다."

#: website/public/blog/touhou-reconstruction/index.html:711
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"This is why TH04 matters to the argument. A substantial platform change did "
"not force us to start over with a new way of working. The architecture "
"defined the problem; the workflow still gave us a way to solve it."
msgstr ""
"이것이 이 논의에서 TH04가 중요한 이유입니다. 플랫폼이 크게 바뀌어도 새로운 작업 방식을 처음부터 마련할 필요는 없었습니다. "
"아키텍처가 문제를 정했다면, 기존 작업 흐름은 여전히 해결 방법을 제공했습니다."

#: website/public/blog/touhou-reconstruction/index.html:717
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"For the 64-bit port, we can now examine the new implementation against "
"behavior already recovered on DOS. The knowledge from reconstruction gives "
"the port something to build on."
msgstr ""
"64비트 이식판에서는 이제 새 구현을 DOS에서 이미 복원한 동작과 대조해 검토할 수 있습니다. 재구성 과정에서 얻은 지식이 이식판의 "
"기반이 됩니다."

#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/bb9faca54e2eb3c0d6c757c75d59ac29d2cd5e93/docs/RE_HANDOFF.md"
#. >
#. {ph1}: </a >
#. {ph2}: <a href="https://github.com/N0zoM1z0/th04/tree/port/modern-64" >
#. {ph3}: </a >
#: website/public/blog/touhou-reconstruction/index.html:722
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Project state as of 10 October 2026: {ph0}DOS reconstruction and manual "
"testing{ph1} · {ph2}64-bit port{ph3}. The port remains in development."
msgstr ""
"2026년 10월 10일 기준 프로젝트 상태: {ph0}DOS 재구성과 수동 테스트{ph1} · {ph2}64비트 이식판{ph3}. "
"이식판은 아직 개발 중입니다."

#: website/public/blog/touhou-reconstruction/index.html:735
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "From exact code to readable code"
msgstr "정확한 코드에서 읽기 쉬운 코드로"

#: website/public/blog/touhou-reconstruction/index.html:736
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Once a reconstruction works, I want someone else to be able to understand "
"it."
msgstr "재구성한 프로그램이 작동하면, 다른 사람도 그 코드를 이해할 수 있기를 바랍니다."

#: website/public/blog/touhou-reconstruction/index.html:740
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"To me, assembly and raw offsets can feel like old friends. I realise this is"
" a slightly unusual definition of “readable.” Most people would prefer to "
"follow the game's logic without keeping the executable's memory layout in "
"their head."
msgstr ""
"제게 어셈블리와 원시 오프셋은 오랜 친구처럼 익숙합니다. 물론 이를 “읽기 쉽다”고 부르는 건 조금 특이한 기준임을 압니다. 대부분의 "
"사람은 실행 파일의 메모리 구조를 외우지 않고도 게임 로직을 이해하고 싶을 것입니다."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:746
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"That is where {ph0}semantic reconstruction{ph1} comes in. A recovered field "
"may still be known mainly by its offset. We follow how the game uses it "
"until we can explain its role. Then we can give it a meaningful name and a "
"type that fits the evidence. We keep the reasoning with the source so the "
"next person can see where that interpretation came from."
msgstr ""
"여기서 {ph0}의미 재구성{ph1}이 필요합니다. 복구한 필드는 아직 오프셋으로만 구분될 수 있습니다. 게임이 그 필드를 사용하는 "
"방식을 추적해 역할을 설명할 수 있게 합니다. 그런 다음 증거에 맞는 이름과 타입을 붙입니다. 다음 사람이 해석의 근거를 알 수 있도록 "
"판단 과정도 소스와 함께 남깁니다."

#: website/public/blog/touhou-reconstruction/index.html:754
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"This becomes especially important for a port. An absolute address tells me "
"where something lived in the old executable. It gives a 64-bit "
"implementation little help in deciding which object should own that state. "
"To move the behavior safely, we need to recover the relationship behind the "
"old memory access."
msgstr ""
"이것은 특히 이식판에서 중요합니다. 절대 주소는 이전 실행 파일에서 무언가가 어디에 있었는지 알려줍니다. 하지만 그 정보는 64비트 "
"구현에서 어떤 객체가 해당 상태를 소유해야 하는지 결정하는 데 거의 도움이 되지 않습니다. 동작을 안전하게 옮기려면 기존 메모리 접근 "
"뒤에 있는 관계를 복원해야 합니다."

#: website/public/blog/touhou-reconstruction/index.html:761
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "The order I now use is:"
msgstr "지금은 다음 순서로 작업합니다."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:763
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Recover an exact baseline.{ph1} Compile the reconstructed pieces with "
"the historical compiler. Compare the relevant code and data with the "
"original executable. Record unresolved differences so the next phase has a "
"clear starting point."
msgstr ""
"{ph0}원본과 정확히 일치하는 기준 버전을 복구합니다.{ph1} 재구성한 부분을 당시 컴파일러로 컴파일합니다. 관련 코드와 데이터를 "
"원본 실행 파일과 비교합니다. 다음 단계의 출발점이 명확하도록 해결하지 못한 차이도 기록합니다."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:770
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Build and play it on the original platform.{ph1} Link those pieces into"
" the real program using the original architecture and compiler. Exercise "
"important gameplay paths. This is where we can find problems with shared "
"state or initialization that an isolated function comparison missed."
msgstr ""
"{ph0}원래 플랫폼에서 빌드하고 플레이합니다.{ph1} 원래 아키텍처와 컴파일러로 각 부분을 실제 프로그램으로 링크합니다. 주요 게임 "
"진행 경로를 실행합니다. 개별 함수 비교에서 놓친 공유 상태나 초기화 문제를 이 단계에서 찾을 수 있습니다."

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:777
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Reconstruct the semantics against both references.{ph1} Take one "
"coherent part of the game at a time and establish what its recovered source "
"means. Improve its representation while preserving the exact comparisons and"
" the playable historical build."
msgstr ""
"{ph0}두 기준을 대조하며 의미를 재구성합니다.{ph1} 게임에서 연관된 부분을 하나씩 골라 복구한 소스의 의미를 밝힙니다. 완전 일치"
" 검사와 플레이 가능한 원래 플랫폼 빌드를 유지하면서 코드 표현을 개선합니다."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:786
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Make the modern port.{ph1} Move the established behavior into the new "
"environment, such as a native 64-bit build. The reconstructed original-"
"platform game remains a reference for comparing how the port behaves."
msgstr ""
"{ph0}현대 환경으로 이식합니다.{ph1} 확인된 동작을 네이티브 64비트 빌드 같은 새 환경으로 옮깁니다. 원래 플랫폼의 재구성판은 "
"이식판의 동작을 비교하는 기준으로 남깁니다."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:793
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The playable build from the second stage becomes a {ph0}second oracle{ph1} "
"during the third. The first oracle checks whether our changed source still "
"reproduces the relevant original code and data. The second checks that the "
"reconstructed program still builds and behaves correctly along the paths we "
"exercise."
msgstr ""
"두 번째 단계에서 만든 플레이 가능한 빌드는 세 번째 단계의 {ph0}두 번째 오라클{ph1}이 됩니다. 첫 오라클은 수정한 소스가 "
"원본의 관련 코드와 데이터를 여전히 재현하는지 확인합니다. 두 번째 오라클은 재구성판이 계속 빌드되고, 실행한 경로에서 올바르게 "
"동작하는지 확인합니다."

#: website/public/blog/touhou-reconstruction/index.html:801
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"They catch different mistakes. A type change can alter the generated "
"instructions. An ownership change can leave two parts of the game using "
"different copies of state. Keeping both checks available gives the agent a "
"concrete failure to investigate before carrying a refactor further."
msgstr ""
"두 검사는 서로 다른 실수를 잡아냅니다. 타입을 바꾸면 생성되는 명령어가 달라질 수 있습니다. 소유권을 바꾸면 게임의 두 부분이 서로 "
"다른 상태 복사본을 사용하게 될 수 있습니다. 두 검사를 모두 유지하면 에이전트가 리팩터링을 더 진행하기 전에 조사할 구체적인 실패 "
"사례를 얻을 수 있습니다."

#: website/public/blog/touhou-reconstruction/index.html:808
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"A name needs evidence of its own. An exact comparison cannot tell us whether"
" a field really means “invulnerability time.” We have to establish that from"
" how the game writes and uses it. If the meaning remains uncertain, a "
"neutral name is more helpful to the next reader than a confident guess."
msgstr ""
"이름에도 근거가 필요합니다. 완전 일치 검사만으로 어떤 필드가 실제로 “무적 시간”을 뜻하는지는 알 수 없습니다. 게임이 그 값을 쓰고 "
"사용하는 방식으로 확인해야 합니다. 의미가 불확실하다면 자신 있게 추측한 이름보다 중립적인 이름이 다음 독자에게 유용합니다."

#. {ph0}: <a href="https://github.com/N0zoM1z0/touhou-reconstruction-
#. factory/blob/717e1b8560783ed17a39fdf159d30aa16bb307a7/docs/semantic-
#. reconstruction.md" >
#. {ph1}: </a >
#: website/public/blog/touhou-reconstruction/index.html:815
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"We learned this order through the projects. TH08 already had playable ports "
"before some of its later historical-platform audits. That made certain "
"defects harder to see. The {ph0}Factory's current workflow{ph1} puts the "
"original-platform build first, so semantic work can use it as a reference "
"before porting begins."
msgstr ""
"이 순서는 프로젝트를 거치며 배웠습니다. TH08은 원래 플랫폼에 대한 후속 점검보다 플레이 가능한 이식판이 먼저 나왔습니다. 그 탓에 "
"일부 결함을 알아보기 어려웠습니다. {ph0}Factory의 현재 작업 흐름{ph1}은 원래 플랫폼의 빌드를 먼저 만들어, 이식 전에 "
"의미 재구성의 기준으로 활용합니다."

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:826
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Exact reconstruction gives us a reference. Semantic reconstruction "
"makes the recovered knowledge usable.{ph1} A port can then build on both."
msgstr ""
"{ph0}정확한 재구성은 비교 기준을 제공합니다. 의미 재구성은 복구한 지식을 활용할 수 있게 합니다.{ph1} 이식은 그 두 가지를 "
"토대로 진행할 수 있습니다."

#: website/public/blog/touhou-reconstruction/index.html:835
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "What makes this an industrial shift"
msgstr "산업적 전환이라 부르는 이유"

#: website/public/blog/touhou-reconstruction/index.html:836
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"These projects changed where I spent my attention. Once agents could carry "
"much of an investigation forward, improving their working environment became"
" one of the most useful things I could do. A better tool could help with "
"every later function that needed it."
msgstr ""
"이 프로젝트들은 제가 집중하는 지점을 바꿨습니다. 에이전트가 조사의 많은 부분을 진행할 수 있게 되자, 작업 환경을 개선하는 일이 제가 "
"할 수 있는 가장 유용한 일 중 하나가 됐습니다. 도구 하나를 개선하면 이후 그 도구가 필요한 모든 함수의 작업에 도움이 됩니다."

#: website/public/blog/touhou-reconstruction/index.html:843
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Autonomy matters here. The useful next step often becomes clear only after a"
" failed experiment. An agent needs enough freedom to follow that result "
"somewhere unexpected. If it has to wait for me to prescribe each step, much "
"of the work remains tied to my attention."
msgstr ""
"여기서 자율성이 중요합니다. 다음에 무엇을 해야 할지는 실험이 실패한 뒤에야 분명해지곤 합니다. 에이전트에게는 예상 밖의 방향으로 결과를"
" 추적할 자유가 필요합니다. 매번 제 지시를 기다려야 한다면 많은 작업이 여전히 제 관심과 시간에 묶입니다."

#: website/public/blog/touhou-reconstruction/index.html:850
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"I expect the agent to make wrong hypotheses. What matters is whether we can "
"test them and learn from the result. A failed check should help it "
"understand the mistake well enough to try again. I still have to decide "
"whether the accumulated evidence supports a project milestone."
msgstr ""
"에이전트가 틀린 가설을 세우리라는 건 예상합니다. 중요한 것은 그 가설을 검증하고 결과에서 배울 수 있느냐입니다. 검증 실패는 실수를 "
"이해하고 다시 시도하는 데 도움이 되어야 합니다. 쌓인 증거가 프로젝트의 이정표를 뒷받침하는지는 여전히 제가 판단해야 합니다."

#: website/public/blog/touhou-reconstruction/index.html:857
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"REA gives the agent access to analysis tools. A question about a function's "
"caller can lead straight into inspecting that caller. The reconstruction "
"project supplies the compiler and its own reference checks. The agent can "
"use those to test the source it proposes and see where its explanation holds"
" up."
msgstr ""
"REA는 에이전트에게 분석 도구를 제공합니다. 어떤 함수를 누가 호출하는지 묻다가 곧바로 그 호출 함수를 살펴볼 수 있습니다. 재구성 "
"프로젝트는 컴파일러와 자체 대조 검사를 제공합니다. 에이전트는 이를 이용해 제안한 소스를 테스트하고 설명이 어디까지 맞는지 확인합니다."

#: website/public/blog/touhou-reconstruction/index.html:864
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The TH08 bug shows why those checks deserve engineering attention of their "
"own. When the same comparison is used across hundreds of functions, a gap in"
" it can spread much further than a mistake in one implementation. Testing "
"the checker improves the feedback available to all that later work."
msgstr ""
"TH08 버그는 검증 도구 자체에도 공학적 노력이 필요한 이유를 보여줍니다. 수백 개의 함수에 같은 비교를 적용하면, 검사의 허점은 개별"
" 구현 오류보다 훨씬 넓게 영향을 줍니다. 검사기를 테스트하면 이후의 모든 작업이 더 나은 피드백을 받습니다."

#. {ph0}: <a
#. href="https://collection.sciencemuseumgroup.org.uk/objects/co51439/watts-
#. steam-engine-indicator" >
#. {ph1}: </a >
#: website/public/blog/touhou-reconstruction/index.html:871
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The industrial analogy has a useful historical example here. Boulton and "
"Watt introduced a {ph0}steam-engine indicator in 1796{ph1} to help adjust "
"engine valves. A recording version traced pressure through the piston "
"stroke. It made the engine's internal behavior available for inspection. Our"
" comparison tools serve a similar purpose: they let us examine what the "
"machinery is doing while we improve it."
msgstr ""
"산업에 빗댄 설명에는 좋은 역사적 사례가 있습니다. 볼턴과 와트는 밸브 조정을 돕기 위해 {ph0}1796년 증기기관 지압계{ph1}를 "
"도입했습니다. 기록형 지압계는 피스톤 행정에 따른 압력을 그려 냈습니다. 덕분에 엔진의 내부 동작을 살펴볼 수 있었습니다. 비교 도구도 "
"비슷한 역할을 합니다. 도구를 개선하며 그 기계가 실제로 무엇을 하는지 확인하게 해줍니다."

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:884
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}We are in the early stages of this industrial shift.{ph1} Much of the "
"infrastructure is still immature. Agents can move faster than our checks "
"were designed to support, so the process has to develop alongside them. When"
" we find a defect in a shared tool, we have to repair it and revisit the "
"results it affected. The next project can then inherit a stronger tool."
msgstr ""
"{ph0}우리는 이 산업적 전환의 초기 단계에 있습니다.{ph1} 기반 시설의 상당 부분은 아직 미숙합니다. 에이전트는 기존 검사들이 "
"지원하도록 설계된 속도보다 더 빠르게 작업할 수 있으므로, 작업 과정도 에이전트의 발전에 맞춰 개선되어야 합니다. 공유 도구에서 결함을 "
"발견하면 도구를 고치고 그 결함의 영향을 받은 결과도 다시 검토해야 합니다. 그러면 다음 프로젝트는 더 강력한 도구를 물려받을 수 "
"있습니다."

#: website/public/blog/touhou-reconstruction/index.html:894
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"There is also a practical limit to any one conversation. It will end before "
"a large reconstruction is finished. The repository has to make it possible "
"for another session to continue without losing the reason for the last "
"decision."
msgstr ""
"한 대화에는 현실적인 한계도 있습니다. 큰 재구성 작업이 끝나기 전에 대화가 끝납니다. 저장소는 마지막 결정의 이유를 잃지 않고 다음 "
"세션에서 이어갈 수 있게 해야 합니다."

#. {ph0}: <a href="https://github.com/N0zoM1z0/touhou-reconstruction-factory"
#. >
#. {ph1}: </a >
#: website/public/blog/touhou-reconstruction/index.html:900
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The {ph0}Touhou Reconstruction Factory{ph1} grew out of that need. It gives "
"projects a shared way to carry their checks and lessons forward. Work on one"
" game can improve the starting conditions for another."
msgstr ""
"{ph0}Touhou Reconstruction Factory{ph1}는 이런 필요에서 출발했습니다. 검증과 교훈을 다음 작업으로 "
"전달하는 공통 방식을 제공합니다. 한 게임에서 한 작업이 다른 게임의 출발점을 개선할 수 있습니다."

#: website/public/blog/touhou-reconstruction/index.html:910
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"That is what makes the industrial analogy meaningful to me. Experience "
"starts becoming part of tools that others can use. Improving those tools "
"changes how much the next person—or the next agent—can get done."
msgstr ""
"제게 산업 비유가 의미 있는 이유입니다. 경험이 다른 사람도 쓸 수 있는 도구에 담기기 시작합니다. 도구가 나아지면 다음 사람이나 다음 "
"에이전트가 해낼 수 있는 일도 늘어납니다."

#: website/public/blog/touhou-reconstruction/index.html:918
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "The projects we can now consider"
msgstr "이제 시도할 수 있는 프로젝트"

#: website/public/blog/touhou-reconstruction/index.html:919
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The pace matters because it changes the decision to begin. A game could be "
"fascinating to reverse engineer and still demand more of my own attention "
"than I could realistically give it. Many projects would stay ideas."
msgstr ""
"속도는 시작 여부를 바꾸기에 중요합니다. 분석하고 싶은 게임이라도 현실적으로 제가 들일 수 있는 것보다 더 많은 시간을 요구할 수 "
"있었습니다. 많은 프로젝트는 구상으로만 남곤 했습니다."

#: website/public/blog/touhou-reconstruction/index.html:925
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Now I can see a way to keep such a project moving through repeated "
"investigations. Getting a working reconstruction makes a port more "
"practical. Recovering readable semantics makes it easier for someone else to"
" explore a mod. The effort put into understanding the game can keep paying "
"off after the first version runs."
msgstr ""
"이제는 반복적인 조사를 통해 그런 프로젝트를 꾸준히 진행할 방법이 보입니다. 작동하는 재구성판이 있으면 이식도 현실적인 목표가 됩니다. "
"의미를 읽기 쉽게 복구하면 다른 사람이 모드를 만들기도 쉬워집니다. 게임을 이해하는 데 들인 노력은 첫 버전이 실행된 후에도 계속 결실을"
" 맺습니다."

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:932
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"I now look at an unfamiliar program and ask: {ph0}what access, feedback and "
"accumulated knowledge would let an agent work on this reliably?{ph1}"
msgstr ""
"이제 낯선 프로그램을 보면 이렇게 묻습니다. {ph0}에이전트가 이 작업을 믿고 맡길 만하게 수행하려면 어떤 접근 수단, 피드백, 축적된"
" 지식이 필요할까?{ph1}"

#: website/public/blog/touhou-reconstruction/index.html:939
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"That question makes me consider projects I would previously have left alone."
" Each one can improve the way we approach the next. I want to keep exploring"
" how far that can take us."
msgstr ""
"이 질문 덕분에 예전에는 손대지 않았을 프로젝트도 생각하게 됩니다. 각 프로젝트는 다음 작업에 접근하는 방식을 개선할 수 있습니다. 이 "
"방식으로 어디까지 갈 수 있을지 계속 탐구하고 싶습니다."

#: website/public/blog/touhou-reconstruction/index.html:947
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Project milestones and sources"
msgstr "프로젝트 이정표 및 출처"

#: website/public/blog/touhou-reconstruction/index.html:948
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The dates describe recorded project checkpoints, checked against public "
"GitHub history on 10 October 2026. Elapsed time is calendar time between "
"commits. Source presence, exact comparisons, a build and a runtime result "
"each name a different milestone."
msgstr ""
"날짜는 2026년 10월 10일 공개 GitHub 이력과 대조한 프로젝트 체크포인트를 가리킵니다. 경과 시간은 커밋 사이의 달력상 "
"시간입니다. 소스 확보, 완전 일치 검사, 빌드, 런타임 결과는 각각 다른 이정표입니다."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/001bf3e9c91cc35b79c7a0e36b3565b86f494362"
#. >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/N0zoM1z0/th08/blob/15caba73df6735fc44eac4783bc61b8d098ea830/docs/PROGRESS.md"
#. >
#. {ph5}: </a >
#. {ph6}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/da07b21c8cb63230142b0a66228d6aac66555f3f"
#. >
#. {ph7}: </a >
#. {ph8}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/529eb1a3afa05ae36467731eaccb12e3e50e132f"
#. >
#. {ph9}: </a >
#. {ph10}: <a
#. href="https://github.com/N0zoM1z0/th08/releases/tag/v0.2.0-linux-64bit" >
#. {ph11}: </a >
#: website/public/blog/touhou-reconstruction/index.html:956
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}TH08:{ph1} {ph2}13 August continuation{ph3}, {ph4}19 August source "
"ledger{ph5}, {ph6}24 August Linux port{ph7}, {ph8}26 August Web "
"edition{ph9}, and {ph10}30 August 64-bit Linux release{ph11}."
msgstr ""
"{ph0}TH08:{ph1} {ph2}8월 13일 후속 작업 시작{ph3}, {ph4}8월 19일 소스 기록 대장{ph5}, "
"{ph6}8월 24일 Linux 이식판{ph7}, {ph8}8월 26일 웹 버전{ph9}, {ph10}8월 30일 64비트 Linux "
"릴리스{ph11}."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th095/blob/8c31e6f892d945423b7f7b439747a2bd915f82d8/docs/PROGRESS.md"
#. >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/N0zoM1z0/th095/blob/0fa857fb2b2ec6237732e4d6be8d0a28069c9330/docs/PROGRESS.md"
#. >
#. {ph5}: </a >
#. {ph6}: <a
#. href="https://github.com/N0zoM1z0/th095/blob/74baddfccb712d1311a4d6e7487a63cd1100452e/docs/PROGRESS.md"
#. >
#. {ph7}: </a >
#. {ph8}: <a
#. href="https://github.com/N0zoM1z0/th095/commit/33d46a0ee48f37060d973125a1a7632a40f8d998"
#. >
#. {ph9}: </a >
#. {ph10}: <a
#. href="https://github.com/N0zoM1z0/th095/blob/3442dcf29d9e0b5bef384a49bd0c9ad32a711826/docs/WHOLE_BUILD_TODO.md"
#. >
#. {ph11}: </a >
#: website/public/blog/touhou-reconstruction/index.html:979
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}TH095:{ph1} {ph2}29 August initial ledger{ph3}, {ph4}7 September source"
" ledger{ph5}, {ph6}8 September comparisons{ph7}, {ph8}9 September "
"linkage{ph9}, and {ph10}10 September playable-build record{ph11}."
msgstr ""
"{ph0}TH095:{ph1} {ph2}8월 29일 초기 기록{ph3}, {ph4}9월 7일 소스 기록{ph5}, {ph6}9월 8일 "
"비교 결과{ph7}, {ph8}9월 9일 링크{ph9}, {ph10}9월 10일 플레이 가능한 빌드 기록{ph11}."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/bb9faca54e2eb3c0d6c757c75d59ac29d2cd5e93/docs/RE_HANDOFF.md"
#. >
#. {ph3}: </a >
#: website/public/blog/touhou-reconstruction/index.html:1002
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}TH04:{ph1} {ph2}10 October handoff{ph3} records the working DOS "
"reconstruction, the maintainer's complete Normal-route testing and the "
"current 64-bit phase."
msgstr ""
"{ph0}TH04:{ph1} {ph2}10월 10일 인계 기록{ph3}에 작동하는 DOS 재구성판, 유지보수자의 Normal 경로 완주 "
"테스트, 현재의 64비트 작업 단계가 담겨 있습니다."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a href="https://github.com/N0zoM1z0/th08/issues/10" >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/7148a76ba224742677895c7160807a68897957d5"
#. >
#. {ph5}: </a >
#. {ph6}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/a393f400786e4cc6cbb1000af0dad3276da12c78"
#. >
#. {ph7}: </a >
#: website/public/blog/touhou-reconstruction/index.html:1011
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}TH08 oracle correction:{ph1} {ph2}the reported auto-collection "
"bug{ph3}, {ph4}the source and comparison fix{ph5}, and {ph6}the full "
"floating-literal audit{ph7}."
msgstr ""
"{ph0}TH08 오라클 수정:{ph1} {ph2}자동 수집 버그 보고{ph3}, {ph4}소스와 비교 도구 수정{ph5}, "
"{ph6}전체 부동소수점 리터럴 점검{ph7}."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th08/blob/d2a00f4acb4a13916e07a00bd13f714961714628/docs/SEMANTIC_PLAYBOOK.md"
#. >
#. {ph3}: </a >
#. {ph4}: <a href="https://github.com/N0zoM1z0/touhou-reconstruction-
#. factory/blob/717e1b8560783ed17a39fdf159d30aa16bb307a7/docs/semantic-
#. reconstruction.md" >
#. {ph5}: </a >
#: website/public/blog/touhou-reconstruction/index.html:1025
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Semantic reconstruction:{ph1} {ph2}TH08's readability playbook{ph3} and"
" {ph4}the Factory's phase order and two validation paths{ph5}."
msgstr ""
"{ph0}의미 재구성:{ph1} {ph2}TH08 가독성 지침{ph3}과 {ph4}Factory의 단계 순서 및 두 검증 경로{ph5}."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a
#. href="https://collection.sciencemuseumgroup.org.uk/objects/co51439/watts-
#. steam-engine-indicator" >
#. {ph3}: </a >
#: website/public/blog/touhou-reconstruction/index.html:1037
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Industrial history:{ph1} {ph2}the Science Museum Group's steam-engine "
"indicator record{ph3} describes the 1796 introduction and the pressure-"
"recording mechanism."
msgstr ""
"{ph0}산업사:{ph1} {ph2}Science Museum Group의 증기기관 지압계 기록{ph3}에서 1796년 도입과 압력 기록"
" 원리를 설명합니다."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a href="https://github.com/N0zoM1z0/touhou-reconstruction-
#. factory/blob/038b6bed51d273c8b3680553b6f43e1b97d19bd1/docs/agent-
#. autonomy.md" >
#. {ph3}: </a >
#. {ph4}: <a href="https://github.com/N0zoM1z0/touhou-reconstruction-
#. factory/blob/038b6bed51d273c8b3680553b6f43e1b97d19bd1/docs/knowledge-
#. base.md" >
#. {ph5}: </a >
#: website/public/blog/touhou-reconstruction/index.html:1046
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Method:{ph1} the Factory's {ph2}agent autonomy{ph3} and {ph4}cross-game"
" knowledge{ph5} documents retain the working principles and lessons."
msgstr ""
"{ph0}방법론:{ph1} Factory의 {ph2}에이전트 자율성{ph3}과 {ph4}게임 간 지식 공유{ph5} 문서에 작업 원칙과 "
"교훈이 남아 있습니다."

#. {ph0}: <a class="text-link" href="../">
#. {ph1}: </a>
#. {ph2}: <a class="text-link" href="../../showcase/th04/" >
#. {ph3}: </a >
#: website/public/blog/touhou-reconstruction/index.html:1061
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}More articles{ph1} · {ph2}Explore a TH04 investigation{ph3}"
msgstr "{ph0}다른 글 보기{ph1} · {ph2}TH04 분석 살펴보기{ph3}"

#: website/public/blog/touhou-reconstruction/index.html:6
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Reverse Engineering’s Industrial Revolution — REA"
msgstr "리버스 엔지니어링의 산업 혁명—REA"

#: website/public/blog/touhou-reconstruction/index.html:7
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"N0zoM1z0 reflects on manual reverse engineering, Touhou reconstruction with "
"AI agents, and how knowledge compounds across TH08, TH095 and PC-98 TH04."
msgstr ""
"N0zoM1z0가 수동 리버스 엔지니어링, AI 에이전트와 함께한 동방 재구성, 그리고 TH08, TH095, PC-98 TH04를 "
"거치며 지식이 축적되는 과정을 돌아봅니다."

#: website/public/blog/touhou-reconstruction/index.html:355
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Experience carried between projects"
msgstr "프로젝트 간 경험"

#: website/public/blog/touhou-reconstruction/index.html:369
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "On this page"
msgstr "이 페이지 목차"

#: website/public/blog/touhou-reconstruction/index.html:384
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Touhou reconstruction essay"
msgstr "동방 재구성 에세이"

#: website/public/blog/touhou-reconstruction/index.html:1086
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Back to top"
msgstr "맨 위로"

#: website/public/examples/dino-lab/index.html:108
msgctxt "page:examples/dino-lab/index.html"
msgid "Skip to content"
msgstr "본문으로 건너뛰기"

#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <span>
#. {ph3}: </span>
#: website/public/examples/dino-lab/index.html:200
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Home{ph1}{ph2}/{ph3}Dinosaur speed lab"
msgstr "{ph0}홈{ph1}{ph2}/{ph3}공룡 속도 연구소"

#: website/public/examples/dino-lab/index.html:203
msgctxt "page:examples/dino-lab/index.html"
msgid "Inspect → rebuild → change"
msgstr "분석 → 재구현 → 변경"

#: website/public/examples/dino-lab/index.html:204
msgctxt "page:examples/dino-lab/index.html"
msgid "Rebuild the dinosaur’s speed rule."
msgstr "공룡 게임의 속도 규칙을 재현해 보세요"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <mark class="prose-highlight">
#. {ph3}: </mark>
#: website/public/examples/dino-lab/index.html:205
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"To recreate the game’s acceleration, first find the rule that controls its "
"speed. {ph0}REA returned the running script;{ph1} we used its rule to build "
"this mini-game with {ph2}adjustable speed.{ph3}"
msgstr ""
"게임의 가속을 재현하려면 먼저 속도를 제어하는 규칙을 찾아야 합니다. {ph0}REA로 실행 중인 스크립트를 얻고,{ph1} 그 규칙으로"
" {ph2}속도를 조절할 수 있는{ph3} 미니 게임을 만들었습니다."

#: website/public/examples/dino-lab/index.html:214
#: website/public/examples/dino-lab/index.html:213
msgctxt "page:examples/dino-lab/index.html"
msgid "On this page"
msgstr "이 페이지 목차"

#. {ph0}: <a href="#play">
#. {ph1}: </a>
#: website/public/examples/dino-lab/index.html:216
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Play and change the speed{ph1}"
msgstr "{ph0}플레이하며 속도 바꾸기{ph1}"

#. {ph0}: <a href="#rule">
#. {ph1}: </a>
#: website/public/examples/dino-lab/index.html:217
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Read the recovered rule{ph1}"
msgstr "{ph0}복구한 규칙 읽기{ph1}"

#. {ph0}: <a href="#check">
#. {ph1}: </a>
#: website/public/examples/dino-lab/index.html:218
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Check the reconstruction{ph1}"
msgstr "{ph0}재구성 결과 검증{ph1}"

#. {ph0}: <a href="#inspect">
#. {ph1}: </a>
#: website/public/examples/dino-lab/index.html:219
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Try the analysis{ph1}"
msgstr "{ph0}직접 분석하기{ph1}"

#: website/public/examples/dino-lab/index.html:224
msgctxt "page:examples/dino-lab/index.html"
msgid "Play and change the speed"
msgstr "플레이하며 속도 바꾸기"

#: website/public/examples/dino-lab/index.html:225
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Press Play, then jump over the cactus. Move the speed slider to try a slower"
" or faster game; it switches to a fixed speed. Select the recovered rule to "
"start at 6 and gradually accelerate again."
msgstr ""
"시작을 누르고 선인장을 뛰어넘으세요. 속도 슬라이더를 움직이면 선택한 고정 속도로 플레이할 수 있습니다. 복구된 규칙을 선택하면 다시 "
"6에서 시작해 서서히 가속합니다."

#: website/public/examples/dino-lab/index.html:231
msgctxt "page:examples/dino-lab/index.html"
msgid "Play the reconstruction"
msgstr "재구성한 게임 플레이"

#: website/public/examples/dino-lab/index.html:263
msgctxt "page:examples/dino-lab/index.html"
msgid "Play"
msgstr "시작"

#: website/public/examples/dino-lab/index.html:266
msgctxt "page:examples/dino-lab/index.html"
msgid "Jump ↑"
msgstr "점프 ↑"

#: website/public/examples/dino-lab/index.html:267
msgctxt "page:examples/dino-lab/index.html"
msgid "Restart"
msgstr "다시 시작"

#: website/public/examples/dino-lab/index.html:270
msgctxt "page:examples/dino-lab/index.html"
msgid "Speed"
msgstr "속도"

#: website/public/examples/dino-lab/index.html:280
msgctxt "page:examples/dino-lab/index.html"
msgid "Use the recovered acceleration rule"
msgstr "복구된 가속 규칙 사용"

#: website/public/examples/dino-lab/index.html:284
msgctxt "page:examples/dino-lab/index.html"
msgid "Original rule: start at 6, then increase toward 13."
msgstr "원래 규칙: 6에서 시작해 13을 향해 가속합니다."

#: website/public/examples/dino-lab/index.html:287
msgctxt "page:examples/dino-lab/index.html"
msgid "Move the slider to set your own speed. Space or Jump clears a cactus."
msgstr "슬라이더를 움직여 원하는 속도를 설정하세요. Space 키나 점프 버튼을 누르면 선인장을 뛰어넘습니다."

#: website/public/examples/dino-lab/index.html:292
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Enable JavaScript to play the reconstruction. The code and explanation above"
" remain readable."
msgstr "게임을 플레이하려면 JavaScript를 켜세요. 위의 코드와 설명은 그대로 읽을 수 있습니다."

#: website/public/examples/dino-lab/index.html:300
msgctxt "page:examples/dino-lab/index.html"
msgid "Read the script REA returned"
msgstr "REA가 반환한 스크립트 읽기"

#. {ph0}: <a href="https://wayou.github.io/t-rex-runner/" >
#. {ph1}: </a >
#. {ph2}: <code>index.js</code>
#: website/public/examples/dino-lab/index.html:301
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"We inspected {ph0}wayou’s Chromium-derived browser edition{ph1} with REA. It"
" returned the loaded {ph2}, including this branch in the game’s update "
"function:"
msgstr ""
"REA로 {ph0}wayou의 Chromium 기반 브라우저 버전{ph1}을 분석했습니다. 로드된 {ph2}가 반환됐으며, 게임 업데이트"
" 함수의 다음 분기가 포함돼 있었습니다."

#. {ph0}: <code>SPEED: 6</code>
#. {ph1}: <code>ACCELERATION: 0.001</code>
#. {ph2}: <code>MAX_SPEED: 13</code>
#: website/public/examples/dino-lab/index.html:317
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"The settings are {ph0}, {ph1} and {ph2}. The game runs this branch on an "
"update without a collision."
msgstr "설정값은 {ph0}, {ph1}, {ph2}입니다. 게임은 충돌이 없는 업데이트에서 이 분기를 실행합니다."

#: website/public/examples/dino-lab/index.html:322
msgctxt "page:examples/dino-lab/index.html"
msgid "Use the same rule in the new game"
msgstr "새 게임에 같은 규칙 적용하기"

#: website/public/examples/dino-lab/index.html:328
#: website/public/examples/dino-lab/index.html:427
msgctxt "page:examples/dino-lab/index.html"
msgid "Copy"
msgstr "복사"

#: website/public/examples/dino-lab/index.html:341
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"The mini-game uses this function for automatic acceleration. Moving the "
"slider supplies a fixed speed instead. Drawing, jump physics and rectangle "
"collision checks are new code for this teaching game; its simulation "
"advances at 60 updates per second."
msgstr ""
"미니 게임은 이 함수로 자동 가속합니다. 슬라이더를 움직이면 고정 속도를 사용합니다. 화면 그리기, 점프 물리, 사각형 충돌 판정은 "
"교육용으로 새로 작성한 코드이며, 시뮬레이션은 초당 60회 갱신됩니다."

#. {ph0}: <a href="../../assets/dino-speed.js" download >
#. {ph1}: </a >
#. {ph2}: <a href="../../assets/dino-demo.js">
#. {ph3}: </a>
#: website/public/examples/dino-lab/index.html:347
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Download the speed rule{ph1} · {ph2}Read the game code{ph3}"
msgstr "{ph0}속도 규칙 다운로드{ph1} · {ph2}게임 코드 읽기{ph3}"

#: website/public/examples/dino-lab/index.html:355
msgctxt "page:examples/dino-lab/index.html"
msgid "Check the reconstruction"
msgstr "재구성 결과 검증"

#: website/public/examples/dino-lab/index.html:356
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"We called the original game’s update function with obstacles and automatic "
"scheduling disabled. Compare those recorded speeds with a replay of the "
"recovered rule."
msgstr ""
"장애물과 자동 실행 예약을 끈 상태에서 원본 게임의 업데이트 함수를 호출했습니다. 기록된 속도를 복구한 규칙의 재실행 결과와 비교해 "
"보세요."

#: website/public/examples/dino-lab/index.html:365
msgctxt "page:examples/dino-lab/index.html"
msgid "Updates"
msgstr "업데이트"

#: website/public/examples/dino-lab/index.html:366
msgctxt "page:examples/dino-lab/index.html"
msgid "Original game"
msgstr "원래 게임"

#: website/public/examples/dino-lab/index.html:367
msgctxt "page:examples/dino-lab/index.html"
msgid "Reconstructed rule"
msgstr "재구성된 규칙"

#: website/public/examples/dino-lab/index.html:394
msgctxt "page:examples/dino-lab/index.html"
msgid "Run the speed check"
msgstr "속도 검사 실행"

#: website/public/examples/dino-lab/index.html:397
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Values rounded to three decimals. The branch checks before adding, so the "
"final increment can take speed just above 13."
msgstr ""
"값은 소수점 이하 셋째 자리까지 반올림했습니다. 이 분기는 값을 더하기 전에 조건을 검사하므로 마지막 증가로 속도가 13을 조금 넘을 수"
" 있습니다."

#: website/public/examples/dino-lab/index.html:403
msgctxt "page:examples/dino-lab/index.html"
msgid "Try the analysis yourself"
msgstr "직접 분석해 보세요"

#. {ph0}: <a href="../../get-started/">
#. {ph1}: </a>
#: website/public/examples/dino-lab/index.html:405
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Set up REA{ph1} with your coding agent."
msgstr "코딩 에이전트와 함께 {ph0}REA를 설정하세요{ph1}."

#. {ph0}: <a href="../../guides/browser/#prepare" >
#. {ph1}: </a >
#. {ph2}: <code>https://wayou.github.io/t-rex-runner/</code>
#: website/public/examples/dino-lab/index.html:409
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Follow the {ph0}browser connection steps{ph1}, using {ph2} as the page URL."
msgstr "{ph2}를 페이지 URL로 사용해 {ph0}브라우저 연결 절차{ph1}를 따르세요."

#: website/public/examples/dino-lab/index.html:416
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Give your agent the page URL and local debugging endpoint, then copy this "
"prompt."
msgstr "에이전트에게 페이지 URL과 로컬 디버깅 엔드포인트를 알려준 뒤 이 프롬프트를 복사하세요."

#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/examples/dino-lab/index.html:423
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}코딩 에이전트"

#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="lab-analysis-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/examples/dino-lab/index.html:436
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to inspect this dinosaur game. Why does it get "
"faster? Show the speed rule, then build a small version with an adjustable "
"speed.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}›{ph1}{ph2}REA로 이 공룡 게임을 분석해 줘. 왜 점점 빨라지는지 속도 규칙을 보여주고, 속도를 조절할 수 있는 작은"
" 버전을 만들어 줘.{ph3}{ph4}{ph5}"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/examples/dino-lab/index.html:445
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Ask a follow-up: {ph0}“Where is jump height calculated? Add a jump-height "
"control to the new version.”{ph1}"
msgstr "추가로 물어보세요: {ph0}“점프 높이는 어디서 계산해? 새 버전에 점프 높이 조절 기능을 추가해 줘.”{ph1}"

#. {ph0}: <a href="https://github.com/wayou/t-rex-
#. runner/blob/5455bfa408ec6b707c7300ff194b7390733a766d/index.js#L565-L571" >
#. {ph1}: </a >
#. {ph2}: <a href="../../assets/licenses/dinosaur.txt" >
#. {ph3}: </a >
#: website/public/examples/dino-lab/index.html:452
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Source: {ph0}inspected speed code{ph1}, Chromium Authors. {ph2}Copyright and"
" BSD license{ph3}. REA 4.1.0 inspected the running HTTP edition in Chrome "
"150."
msgstr ""
"출처: Chromium Authors의 {ph0}분석한 속도 코드{ph1}. {ph2}저작권과 BSD 라이선스{ph3}. REA "
"4.1.0으로 Chrome 150에서 실행 중인 HTTP 버전을 분석했습니다."

#: website/public/examples/dino-lab/index.html:6
msgctxt "page:examples/dino-lab/index.html"
msgid "Chrome Dinosaur Game: Rebuild Its Speed Rule — REA"
msgstr "Chrome 공룡 게임: 속도 규칙 재현 — REA"

#: website/public/examples/dino-lab/index.html:7
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Read the dinosaur game’s speed rule with REA, rebuild it, then change the "
"speed and play."
msgstr "REA로 공룡 게임의 속도 규칙을 읽고 재현한 다음, 속도를 바꿔 플레이해 보세요."

#: website/public/examples/dino-lab/index.html:222
msgctxt "page:examples/dino-lab/index.html"
msgid "Dinosaur speed reconstruction"
msgstr "공룡 속도 재구성"

#: website/public/examples/dino-lab/index.html:253
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Dinosaur mini-game. Use the Jump button or press Space while the game is "
"focused."
msgstr "공룡 미니 게임. 게임에 포커스가 있을 때 점프 버튼을 사용하거나 Space 키를 누르세요."

#: website/public/examples/dino-lab/index.html:328
msgctxt "page:examples/dino-lab/index.html"
msgid "Copy reconstructed speed rule"
msgstr "재구성된 속도 규칙 복사"

#: website/public/examples/dino-lab/index.html:427
msgctxt "page:examples/dino-lab/index.html"
msgid "Copy dinosaur analysis prompt"
msgstr "공룡 분석 프롬프트 복사"

#: website/public/examples/dino-lab/index.html:481
msgctxt "page:examples/dino-lab/index.html"
msgid "Back to top"
msgstr "맨 위로"

#: website/public/faq/index.html:107
msgctxt "page:faq/index.html"
msgid "Skip to content"
msgstr "본문으로 건너뛰기"

#. {ph0}: <a href="../">
#. {ph1}: </a>
#: website/public/faq/index.html:199
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Home{ph1} / FAQ"
msgstr "{ph0}홈{ph1} / 자주 묻는 질문"

#: website/public/faq/index.html:200
msgctxt "page:faq/index.html"
msgid "REA FAQ."
msgstr "REA 자주 묻는 질문"

#: website/public/faq/index.html:201
msgctxt "page:faq/index.html"
msgid "Setup, updates, analysis and troubleshooting."
msgstr "설정, 업데이트, 분석, 문제 해결."

#: website/public/faq/index.html:205
msgctxt "page:faq/index.html"
msgid "Topics"
msgstr "주제"

#. {ph0}: <a href="#setup">
#. {ph1}: </a>
#: website/public/faq/index.html:207
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Setup and updates{ph1}"
msgstr "{ph0}설정 및 업데이트{ph1}"

#. {ph0}: <a href="#analysis">
#. {ph1}: </a>
#: website/public/faq/index.html:208
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Analysis{ph1}"
msgstr "{ph0}분석{ph1}"

#. {ph0}: <a href="#troubleshooting">
#. {ph1}: </a>
#: website/public/faq/index.html:209
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Troubleshooting{ph1}"
msgstr "{ph0}문제 해결{ph1}"

#. {ph0}: <a href="#sharing">
#. {ph1}: </a>
#: website/public/faq/index.html:210
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Data and sharing{ph1}"
msgstr "{ph0}데이터 및 공유{ph1}"

#: website/public/faq/index.html:219
msgctxt "page:faq/index.html"
msgid "Setup and updates"
msgstr "설정 및 업데이트"

#: website/public/faq/index.html:222
msgctxt "page:faq/index.html"
msgid "How do I install REA?"
msgstr "REA는 어떻게 설치하나요?"

#: website/public/faq/index.html:230
msgctxt "page:faq/index.html"
msgid "Terminal · agent setup"
msgstr "터미널 · 에이전트 설정"

#: website/public/faq/index.html:231 website/public/faq/index.html:272
#: website/public/faq/index.html:290 website/public/faq/index.html:374
#: website/public/faq/index.html:421 website/public/faq/index.html:461
#: website/public/faq/index.html:481
msgctxt "page:faq/index.html"
msgid "Copy"
msgstr "복사"

# Reviewed for readable setup and analysis terminology.
#. {ph0}: <a href="../get-started/">
#. {ph1}: </a>
#: website/public/faq/index.html:242
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Setup registers REA's MCP connection and installs the matching investigation"
" skill. Restart your agent when it finishes, then give it a target path and "
"a question. {ph0}Follow the setup guide{ph1} for prerequisites and your "
"first analysis."
msgstr ""
"설정 명령은 REA의 MCP 연결을 등록하고 분석 스킬을 설치합니다. 완료되면 에이전트를 다시 시작한 뒤 분석할 파일 경로와 질문을 "
"전달하세요. 필요한 환경과 첫 분석 방법은 {ph0}설정 가이드{ph1}에서 확인할 수 있습니다."

#: website/public/faq/index.html:251
msgctxt "page:faq/index.html"
msgid "Which coding agents can use REA?"
msgstr "어떤 코딩 에이전트에서 REA를 사용할 수 있나요?"

# Reviewed for readable instructions and accurate software terminology.
#: website/public/faq/index.html:252
msgctxt "page:faq/index.html"
msgid ""
"Any agent that supports local MCP servers. Setup includes Claude Code, "
"Claude Desktop, Codex, Cursor, Gemini CLI, Windsurf, Devin, OpenCode, "
"Antigravity, GitHub Copilot CLI, Command Code, Grok Build, OMP, and VS Code."
" Grok Bot's connector is added from its chat."
msgstr ""
"로컬 MCP 서버를 지원하는 에이전트라면 사용할 수 있습니다. 설정은 Claude Code, Claude Desktop, Codex, "
"Cursor, Gemini CLI, Windsurf, Devin, OpenCode, Antigravity, GitHub Copilot "
"CLI, Command Code, Grok Build, OMP, VS Code를 지원합니다. Grok Bot의 커넥터는 채팅에서 "
"추가합니다."

#. {ph0}: <a href="../get-started/#agent">
#. {ph1}: </a>
#: website/public/faq/index.html:259
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Connect your coding agent{ph1}."
msgstr "{ph0}코딩 에이전트 연결{ph1}."

#: website/public/faq/index.html:264
msgctxt "page:faq/index.html"
msgid "How do I update REA?"
msgstr "REA는 어떻게 업데이트하나요?"

#: website/public/faq/index.html:265
msgctxt "page:faq/index.html"
msgid ""
"REA releases frequently, including bug fixes. If you installed the CLI with "
"npm:"
msgstr "REA는 버그 수정을 포함해 자주 릴리스됩니다. npm으로 CLI를 설치했다면 다음 명령을 실행하세요:"

#: website/public/faq/index.html:271
msgctxt "page:faq/index.html"
msgid "Terminal · installed CLI"
msgstr "터미널 · 설치된 CLI"

# Reviewed for readable instructions and accurate software terminology.
#. {ph0}: <code>npx</code>
#: website/public/faq/index.html:283
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Follow the setup refresh command printed by the update. If you set up your "
"agent through {ph0}, run:"
msgstr "업데이트가 출력하는 설정 갱신 명령을 실행하세요. {ph0}로 에이전트를 설정했다면 다음 명령을 사용하세요:"

#: website/public/faq/index.html:289
msgctxt "page:faq/index.html"
msgid "Terminal · refresh agent setup"
msgstr "터미널 · 에이전트 설정 갱신"

# Reviewed for readable setup and analysis terminology.
#. {ph0}: <code>npx -y rea-agents@latest</code>
#: website/public/faq/index.html:301
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Review the changes and restart your agent. Its REA connection pins a package"
" version, so refreshing setup makes it use the new release. For one-off CLI "
"commands, use {ph0} followed by the command."
msgstr ""
"변경 내용을 확인하고 에이전트를 다시 시작하세요. REA 연결 설정은 특정 패키지 버전을 사용하므로 설정 명령을 다시 실행해야 새 버전이"
" 적용됩니다. CLI를 한 번 실행할 때는 {ph0} 뒤에 원하는 명령을 붙이세요."

#: website/public/faq/index.html:309
msgctxt "page:faq/index.html"
msgid "Is installing the skill from skills.sh enough?"
msgstr "skills.sh에서 스킬만 설치하면 되나요?"

# Reviewed for readable instructions and accurate software terminology.
#. {ph0}: <a href="#install">
#. {ph1}: </a>
#: website/public/faq/index.html:312
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"The skill gives your agent investigation instructions. Run {ph0}REA "
"setup{ph1} to connect the MCP server and install the matching skill, then "
"restart your agent so it can call the tools."
msgstr ""
"스킬은 에이전트에게 분석 방법을 알려줍니다. {ph0}REA 설정{ph1}을 실행해 MCP 서버를 연결하고 스킬을 설치하세요. 도구를 "
"사용하려면 에이전트를 다시 시작해야 합니다."

#: website/public/faq/index.html:323
msgctxt "page:faq/index.html"
msgid "Analysis"
msgstr "분석"

#: website/public/faq/index.html:326
msgctxt "page:faq/index.html"
msgid "What can I analyze with REA?"
msgstr "REA로 무엇을 분석할 수 있나요?"

#: website/public/faq/index.html:327
msgctxt "page:faq/index.html"
msgid "Start with the kind of software you have:"
msgstr "가지고 있는 소프트웨어 종류에 맞춰 시작하세요:"

# Reviewed for readable instructions and accurate software terminology.
#. {ph0}: <a href="../guides/native/" >
#. {ph1}: </a >
#: website/public/faq/index.html:329
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"{ph0}Native executables and libraries{ph1}: functions, assembly, pseudocode "
"and references."
msgstr "{ph0}네이티브 실행 파일과 라이브러리{ph1}: 함수, 어셈블리, 의사 코드, 참조."

#. {ph0}: <a href="../guides/javascript/" >
#. {ph1}: </a >
#: website/public/faq/index.html:334
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"{ph0}JavaScript and Electron apps{ph1}: modules, imports, IPC and source "
"locations."
msgstr "{ph0}JavaScript와 Electron 앱{ph1}: 모듈, 임포트, IPC, 소스 위치."

#. {ph0}: <a href="../guides/browser/">
#. {ph1}: </a>
#: website/public/faq/index.html:339
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Browser pages{ph1}: scripts, requests and runtime observations."
msgstr "{ph0}브라우저 페이지{ph1}: 스크립트, 요청, 런타임 관찰 결과."

# Reviewed for readable instructions and accurate software terminology.
#. {ph0}: <a href="../showcase/">
#. {ph1}: </a>
#: website/public/faq/index.html:344
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"REA also has workflows for managed assemblies, Android APKs, firmware and "
"packaged resources. {ph0}See the case studies{ph1} for worked "
"investigations."
msgstr ""
"REA는 .NET 등의 관리형 어셈블리, Android APK, 펌웨어, 패키지 리소스도 분석합니다. 실제 분석 과정은 {ph0}사례 "
"소개{ph1}에서 확인하세요."

#: website/public/faq/index.html:352
msgctxt "page:faq/index.html"
msgid "Do I need Hopper, Ghidra or IDA?"
msgstr "Hopper, Ghidra 또는 IDA가 필요한가요?"

# Reviewed for readable instructions and accurate software terminology.
#: website/public/faq/index.html:353
msgctxt "page:faq/index.html"
msgid ""
"Deep native analysis uses one of them. Static JavaScript and .NET inspection"
" work with the supplied files and do not need a native analysis engine."
msgstr ""
"네이티브 프로그램을 깊이 분석할 때는 이 중 하나를 사용합니다. JavaScript와 .NET의 정적 분석은 제공된 파일로 수행하므로 "
"네이티브 분석 엔진이 필요하지 않습니다."

# Reviewed for readable instructions and accurate software terminology.
#. {ph0}: <a href="../get-started/#native">
#. {ph1}: </a>
#: website/public/faq/index.html:358
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Connect your existing Ghidra or IDA installation, or let setup detect Hopper"
" and propose an installation. Your host and target determine which provider "
"can be used. {ph0}Set up native analysis{ph1}."
msgstr ""
"기존 Ghidra나 IDA를 연결하세요. 또는 설정 명령으로 Hopper를 찾아 설치 계획을 확인할 수 있습니다. 사용할 수 있는 분석 "
"도구는 운영체제와 대상에 따라 달라집니다. {ph0}네이티브 분석 설정{ph1}."

#: website/public/faq/index.html:366
msgctxt "page:faq/index.html"
msgid "Can I use REA without a coding agent?"
msgstr "코딩 에이전트 없이도 REA를 사용할 수 있나요?"

# Reviewed for readable instructions and accurate software terminology.
#: website/public/faq/index.html:367
msgctxt "page:faq/index.html"
msgid ""
"Yes. The CLI uses the same analysis workflows. For a local JavaScript or "
"Electron app:"
msgstr "네. CLI에서도 같은 분석 흐름을 사용합니다. 로컬 JavaScript 또는 Electron 앱은 다음처럼 분석합니다:"

#: website/public/faq/index.html:373
msgctxt "page:faq/index.html"
msgid "Terminal · static application analysis"
msgstr "터미널 · 정적 애플리케이션 분석"

# Reviewed for readable instructions and accurate software terminology.
#. {ph0}: <a href="../get-started/#terminal">
#. {ph1}: </a>
#: website/public/faq/index.html:386
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Replace the path with an extracted application folder or ASAR file. {ph0}Use"
" the CLI{ph1} for installation options."
msgstr "경로를 압축 해제한 앱 폴더나 ASAR 파일로 바꾸세요. 설치 방법은 {ph0}CLI 사용 안내{ph1}를 참고하세요."

# Reviewed for readable setup and analysis terminology.
#: website/public/faq/index.html:393
msgctxt "page:faq/index.html"
msgid "What code does REA return?"
msgstr "REA는 어떤 코드를 반환하나요?"

# Reviewed for readable setup and analysis terminology.
#: website/public/faq/index.html:394
msgctxt "page:faq/index.html"
msgid ""
"Native analysis returns assembly and pseudocode, with calls, references and "
"relevant constants. JavaScript analysis returns modules, their relationships"
" and source locations."
msgstr ""
"네이티브 프로그램을 분석하면 어셈블리와 의사 코드, 함수 호출, 참조, 관련 상수를 반환합니다. JavaScript를 분석하면 모듈과 "
"모듈 간 관계, 소스 위치를 반환합니다."

# Reviewed for readable instructions and accurate software terminology.
#. {ph0}: <a href="../showcase/dx-ball/#sound-pan" >
#. {ph1}: </a >
#. {ph2}: <a href="../showcase/ctf/">
#. {ph3}: </a>
#: website/public/faq/index.html:399
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Your agent uses these findings to explain the behavior or write and test an "
"implementation. The {ph0}DX-Ball calculation{ph1} and {ph2}CTF flag "
"checker{ph3} show how that process works."
msgstr ""
"에이전트는 분석 결과로 동작을 설명하거나 구현을 작성하고 테스트합니다. {ph0}DX-Ball 계산{ph1}과 {ph2}CTF flag "
"검사기{ph3}에서 그 과정을 볼 수 있습니다."

#: website/public/faq/index.html:410
msgctxt "page:faq/index.html"
msgid "What should I ask my agent?"
msgstr "에이전트에게 무엇을 물어보면 되나요?"

# Reviewed for readable instructions and accurate software terminology.
#: website/public/faq/index.html:411
msgctxt "page:faq/index.html"
msgid ""
"Give it a local target and one behavior to investigate. For a JavaScript or "
"Electron app:"
msgstr "로컬 대상과 조사할 동작 하나를 알려주세요. JavaScript 또는 Electron 앱의 예:"

#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/faq/index.html:417
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}코딩 에이전트"

# Reviewed for readable instructions and accurate software terminology.
#. {ph0}: <a href="../guides/">
#. {ph1}: </a>
#: website/public/faq/index.html:440
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Replace the path with your target. The {ph0}guides{ph1} provide prompts for "
"native, Electron and browser examples."
msgstr ""
"경로를 분석할 대상으로 바꾸세요. {ph0}가이드{ph1}에는 네이티브 프로그램, Electron, 브라우저용 예시 프롬프트가 있습니다."

#: website/public/faq/index.html:450
msgctxt "page:faq/index.html"
msgid "Troubleshooting"
msgstr "문제 해결"

#: website/public/faq/index.html:453
msgctxt "page:faq/index.html"
msgid "Why can't my agent see the REA tools?"
msgstr "왜 에이전트에서 REA 도구가 보이지 않나요?"

# Reviewed for readable instructions and accurate software terminology.
#. {ph0}: <code>doctor</code>
#: website/public/faq/index.html:454
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Restart or reconnect your agent after setup. Check its REA registration with"
" {ph0}; for Codex:"
msgstr "설정 후 에이전트를 다시 시작하거나 다시 연결하세요. {ph0}로 REA 등록 상태를 확인할 수 있습니다. Codex의 예:"

#: website/public/faq/index.html:460
msgctxt "page:faq/index.html"
msgid "Terminal · check one client"
msgstr "터미널 · 특정 클라이언트 확인"

# Reviewed for readable instructions and accurate software terminology.
#. {ph0}: <code>codex</code>
#. {ph1}: <code>claude_code</code>
#. {ph2}: <code>cursor</code>
#: website/public/faq/index.html:472
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Replace {ph0} with your client ID, such as {ph1} or {ph2}. If the report "
"shows a missing or stale registration, run setup for that client:"
msgstr ""
"{ph0}를 {ph1} 또는 {ph2} 같은 클라이언트 ID로 바꾸세요. 등록이 없거나 오래되었다고 나오면 해당 클라이언트의 설정을 다시"
" 실행하세요:"

#: website/public/faq/index.html:480
msgctxt "page:faq/index.html"
msgid "Terminal · repair one client's setup"
msgstr "터미널 · 특정 클라이언트 설정 복구"

# Reviewed for readable instructions and accurate software terminology.
#. {ph0}: <a href="../get-started/#help">
#. {ph1}: </a>
#: website/public/faq/index.html:492
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Review its plan and restart the client. If registration is healthy but tools"
" remain absent, check the client's MCP connection error. {ph0}More setup "
"diagnostics{ph1}."
msgstr ""
"변경 계획을 확인하고 클라이언트를 다시 시작하세요. 등록은 정상이지만 도구가 보이지 않으면 클라이언트의 MCP 연결 오류를 확인하세요. "
"{ph0}추가 설정 진단{ph1}."

#: website/public/faq/index.html:500
msgctxt "page:faq/index.html"
msgid "Do I need to start Hopper first?"
msgstr "Hopper를 먼저 실행해야 하나요?"

# Reviewed for readable instructions and accurate software terminology.
#. {ph0}: <a href="../get-started/#native">
#. {ph1}: </a >
#: website/public/faq/index.html:501
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"REA starts Hopper when an operation needs it. On macOS, complete the first-"
"run choice of demo mode or license activation before unattended analysis. "
"{ph0}See native provider setup{ph1}."
msgstr ""
"REA는 작업에 필요할 때 Hopper를 실행합니다. macOS에서는 자동 분석 전에 첫 실행 화면에서 데모 모드나 라이선스 활성화를 "
"선택해야 합니다. {ph0}네이티브 분석 도구 설정{ph1}."

#: website/public/faq/index.html:510
msgctxt "page:faq/index.html"
msgid "What should I do if I hit a bug?"
msgstr "버그가 발생하면 어떻게 하나요?"

# Reviewed for readable instructions and accurate software terminology.
#. {ph0}: <a href="#update">
#. {ph1}: </a>
#: website/public/faq/index.html:511
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"{ph0}Update REA{ph1}, restart your agent and retry the same task. A recent "
"release may already fix the problem."
msgstr ""
"{ph0}REA를 업데이트{ph1}하고 에이전트를 다시 시작한 뒤 같은 작업을 시도하세요. 최신 버전에서 이미 문제가 해결되었을 수 "
"있습니다."

# Reviewed for readable instructions and accurate software terminology.
#. {ph0}: <a href="https://github.com/morluto/rea/issues/new/choose" >
#. {ph1}: </a >
#: website/public/faq/index.html:515
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"If it persists, {ph0}open an issue{ph1} with your REA version, operating "
"system, target type, steps to reproduce and error output. Include the "
"provider name when the problem involves native analysis."
msgstr ""
"문제가 계속되면 REA 버전, 운영체제, 대상 종류, 재현 방법, 오류 출력을 포함해 {ph0}이슈를 등록하세요{ph1}. 네이티브 분석"
" 문제라면 분석 도구 이름도 알려주세요."

#: website/public/faq/index.html:529
msgctxt "page:faq/index.html"
msgid "Data and sharing"
msgstr "데이터 및 공유"

#: website/public/faq/index.html:532
msgctxt "page:faq/index.html"
msgid "Does REA upload my app?"
msgstr "REA가 내 앱을 업로드하나요?"

# Reviewed for readable instructions and accurate software terminology.
#: website/public/faq/index.html:533
msgctxt "page:faq/index.html"
msgid ""
"REA analyzes targets on your machine. Your agent receives the results, and "
"its model provider's data policy applies to those results."
msgstr "REA는 사용자의 컴퓨터에서 대상을 분석합니다. 결과는 에이전트가 받으므로 해당 모델 제공자의 데이터 정책이 적용됩니다."

#: website/public/faq/index.html:540
msgctxt "page:faq/index.html"
msgid "How can I share an example or contribute?"
msgstr "사례를 공유하거나 기여하려면 어떻게 하나요?"

# Reviewed for readable instructions and accurate software terminology.
#. {ph0}: <a href="https://github.com/morluto/rea/issues/new/choose" >
#. {ph1}: </a >
#. {ph2}: <a href="https://github.com/morluto/rea/pulls">
#. {ph3}: </a >
#: website/public/faq/index.html:541
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Have a useful REA example? We'd love to see it. Share the target, your "
"question, the findings and how you checked them in an {ph0}issue{ph1} or "
"{ph2}pull request{ph3}. Short code excerpts and figures help others follow "
"the investigation."
msgstr ""
"유용한 REA 사례가 있나요? 함께 보고 싶습니다. 대상, 질문, 발견한 내용, 검증 방법을 {ph0}이슈{ph1}나 "
"{ph2}PR{ph3}로 공유해 주세요. 짧은 코드와 그림을 곁들이면 과정을 이해하기 쉽습니다."

# Reviewed for readable instructions and accurate software terminology.
#. {ph0}: <a href="https://discord.gg/GkcryMnJDM">
#. {ph1}: </a>
#: website/public/faq/index.html:553
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Bug reports, feature requests, documentation and code improvements are "
"welcome too. You can also discuss an example in the {ph0}community{ph1}."
msgstr "버그 보고, 기능 요청, 문서와 코드 개선도 환영합니다. {ph0}커뮤니티{ph1}에서 사례를 이야기할 수도 있습니다."

#: website/public/faq/index.html:6
msgctxt "page:faq/index.html"
msgid "REA FAQ: Setup, Updates and Troubleshooting"
msgstr "REA 자주 묻는 질문: 설정, 업데이트, 문제 해결"

# Reviewed for readable instructions and accurate software terminology.
#: website/public/faq/index.html:7
msgctxt "page:faq/index.html"
msgid ""
"Answers to common REA questions: installation, updates, analysis tools, "
"coding agents, troubleshooting and sharing examples."
msgstr "REA의 설치, 업데이트, 분석 도구, 코딩 에이전트, 문제 해결, 사례 공유에 관한 자주 묻는 질문."

#: website/public/faq/index.html:204
msgctxt "page:faq/index.html"
msgid "On this page"
msgstr "이 페이지 목차"

#: website/public/faq/index.html:213
msgctxt "page:faq/index.html"
msgid "Frequently asked questions about REA"
msgstr "REA에 관한 자주 묻는 질문"

#: website/public/faq/index.html:231
msgctxt "page:faq/index.html"
msgid "Copy REA setup command"
msgstr "REA 설정 명령 복사"

#: website/public/faq/index.html:272
msgctxt "page:faq/index.html"
msgid "Copy REA update command"
msgstr "REA 업데이트 명령 복사"

#: website/public/faq/index.html:290
msgctxt "page:faq/index.html"
msgid "Copy agent setup refresh command"
msgstr "에이전트 설정 갱신 명령 복사"

#: website/public/faq/index.html:374
msgctxt "page:faq/index.html"
msgid "Copy REA CLI analysis command"
msgstr "REA CLI 분석 명령 복사"

#: website/public/faq/index.html:421
msgctxt "page:faq/index.html"
msgid "Copy example analysis prompt"
msgstr "예제 분석 프롬프트 복사"

#: website/public/faq/index.html:461
msgctxt "page:faq/index.html"
msgid "Copy client diagnosis command"
msgstr "클라이언트 진단 명령 복사"

#: website/public/faq/index.html:481
msgctxt "page:faq/index.html"
msgid "Copy scoped setup command"
msgstr "특정 클라이언트 설정 명령 복사"

#: website/public/faq/index.html:579
msgctxt "page:faq/index.html"
msgid "Back to top"
msgstr "맨 위로"

#: website/public/first-investigation/index.html:107
msgctxt "page:first-investigation/index.html"
msgid "Skip to content"
msgstr "본문으로 건너뛰기"

#. {ph0}: <a href="../">
#. {ph1}: </a>
#: website/public/first-investigation/index.html:199
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}Home{ph1} / Your first investigation"
msgstr "{ph0}홈{ph1} / 첫 번째 조사"

#. {ph0}: <br />
#: website/public/first-investigation/index.html:202
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "Find out where{ph0}exported notes go."
msgstr "내보낸 메모가{ph0}어디로 가는지 알아보세요"

#: website/public/first-investigation/index.html:203
msgctxt "page:first-investigation/index.html"
msgid ""
"Use REA to inspect a small app, follow its Export notes button and check one"
" detail yourself."
msgstr "REA로 작은 앱을 살펴보고 메모 내보내기 버튼의 동작을 추적한 뒤, 한 가지를 직접 검증해 보세요."

#: website/public/first-investigation/index.html:214
msgctxt "page:first-investigation/index.html"
msgid "In this exercise"
msgstr "이번 실습"

#. {ph0}: <a href="#setup">
#. {ph1}: </a>
#: website/public/first-investigation/index.html:216
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}1. Set up{ph1}"
msgstr "{ph0}1. 설정{ph1}"

#. {ph0}: <a href="#ask">
#. {ph1}: </a>
#: website/public/first-investigation/index.html:217
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}2. Ask about export{ph1}"
msgstr "{ph0}2. 내보내기 질문하기{ph1}"

#. {ph0}: <a href="#answer">
#. {ph1}: </a>
#: website/public/first-investigation/index.html:218
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}3. Follow the answer{ph1}"
msgstr "{ph0}3. 답변 따라가기{ph1}"

#. {ph0}: <a href="#check">
#. {ph1}: </a>
#: website/public/first-investigation/index.html:219
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}4. Check a prediction{ph1}"
msgstr "{ph0}4. 예측 확인{ph1}"

#. {ph0}: <a href="#next">
#. {ph1}: </a>
#: website/public/first-investigation/index.html:220
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}5. Ask another question{ph1}"
msgstr "{ph0}5. 추가 질문하기{ph1}"

#: website/public/first-investigation/index.html:225
msgctxt "page:first-investigation/index.html"
msgid "1. Connect your agent to REA"
msgstr "1. 에이전트에 REA 연결하기"

#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/first-investigation/index.html:234
#: website/public/first-investigation/index.html:284
#: website/public/first-investigation/index.html:406
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}코딩 에이전트"

#: website/public/first-investigation/index.html:239
#: website/public/first-investigation/index.html:261
#: website/public/first-investigation/index.html:289
#: website/public/first-investigation/index.html:411
#: website/public/first-investigation/index.html:452
#: website/public/first-investigation/index.html:469
msgctxt "page:first-investigation/index.html"
msgid "Copy"
msgstr "복사"

#: website/public/first-investigation/index.html:258
msgctxt "page:first-investigation/index.html"
msgid "Or run this command in your terminal:"
msgstr "또는 터미널에서 이 명령을 실행하세요:"

#: website/public/first-investigation/index.html:270
msgctxt "page:first-investigation/index.html"
msgid ""
"Review the plan, approve the setup, then restart your agent. Already "
"connected? Continue below."
msgstr "계획을 검토하고 설정을 승인한 뒤 에이전트를 다시 시작하세요. 이미 연결했다면 아래로 진행하세요."

#: website/public/first-investigation/index.html:276
msgctxt "page:first-investigation/index.html"
msgid "2. Ask where the CSV is written"
msgstr "2. CSV 저장 위치 묻기"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/first-investigation/index.html:277
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"The example is a six-file Electron app with an {ph0}Export notes{ph1} "
"button. Your agent can inspect its code without installing or launching "
"Electron."
msgstr ""
"예제는 {ph0}메모 내보내기{ph1} 버튼이 있는 6개 파일로 구성된 Electron 앱입니다. Electron을 설치하거나 실행하지 "
"않아도 에이전트가 코드를 분석할 수 있습니다."

#: website/public/first-investigation/index.html:312
msgctxt "page:first-investigation/index.html"
msgid ""
"Your agent downloads the files and gives the unpacked folder to REA for "
"inspection."
msgstr "에이전트가 파일을 다운로드하고 압축을 푼 폴더를 REA에 전달해 분석합니다."

#. {ph0}: <a class="button" href="../examples/notes-example.zip"
#. download="notes-example.zip" >
#. {ph1}: </a >
#: website/public/first-investigation/index.html:316
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}Download example ZIP{ph1}"
msgstr "{ph0}예제 ZIP 다운로드{ph1}"

#. {ph0}: <code>notes-example</code>
#: website/public/first-investigation/index.html:324
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"If your agent can’t download files, unzip this archive yourself. Give it the"
" path to the {ph0} folder and the same export question."
msgstr "에이전트가 다운로드할 수 없다면 직접 압축을 푸세요. {ph0} 폴더의 경로와 같은 내보내기 질문을 에이전트에게 전달하세요."

#: website/public/first-investigation/index.html:331
msgctxt "page:first-investigation/index.html"
msgid "3. Follow the answer back to the code"
msgstr "3. 답변의 근거를 코드에서 확인하기"

#: website/public/first-investigation/index.html:332
msgctxt "page:first-investigation/index.html"
msgid "Look for a short explanation with file and line references:"
msgstr "파일과 줄 번호를 포함한 짧은 설명을 확인하세요:"

#. {ph0}: <code>notes:export</code>
#. {ph1}: <code>notes.csv</code>
#. {ph2}: <code>id</code>
#. {ph3}: <code>title</code>
#: website/public/first-investigation/index.html:334
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"The button sends a {ph0} message. The main process formats the notes as CSV "
"and writes {ph1} in the user’s Downloads folder. The columns are {ph2} and "
"{ph3}."
msgstr ""
"버튼은 {ph0} 메시지를 보냅니다. 메인 프로세스는 메모를 CSV로 변환한 뒤 사용자의 다운로드 폴더에 {ph1} 파일을 저장합니다. "
"열은 {ph2}와 {ph3}입니다."

#: website/public/first-investigation/index.html:342
msgctxt "page:first-investigation/index.html"
msgid "From the button to the file writer"
msgstr "버튼에서 파일 저장 코드까지"

#: website/public/first-investigation/index.html:371
msgctxt "page:first-investigation/index.html"
msgid ""
"REA’s static analysis pairs the message with its handler. The destination is"
" read from code."
msgstr "REA의 정적 분석은 메시지와 핸들러를 연결합니다. 저장 위치는 코드에서 확인합니다."

#: website/public/first-investigation/index.html:387
msgctxt "page:first-investigation/index.html"
msgid ""
"The file path, formatter and write call are together in this handler. Ask "
"your agent to show these lines if its answer leaves them out."
msgstr ""
"이 핸들러에 파일 경로, 포맷터, 쓰기 호출이 함께 있습니다. 답변에 빠져 있다면 에이전트에게 해당 코드를 보여 달라고 하세요."

#. {ph0}: <a href="../guides/javascript/#follow" >
#. {ph1}: </a >
#: website/public/first-investigation/index.html:392
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}See the full code trace and recorded REA result{ph1}."
msgstr "{ph0}전체 코드 추적과 기록된 REA 결과 보기{ph1}."

#: website/public/first-investigation/index.html:399
msgctxt "page:first-investigation/index.html"
msgid "4. Check a prediction"
msgstr "4. 예측 확인"

#: website/public/first-investigation/index.html:400
msgctxt "page:first-investigation/index.html"
msgid ""
"A comma separates CSV columns. What happens when a note title itself "
"contains a comma or quotation marks?"
msgstr "CSV는 쉼표로 열을 구분합니다. 메모 제목에 쉼표나 따옴표가 들어 있으면 어떻게 될까요?"

#: website/public/first-investigation/index.html:444
msgctxt "page:first-investigation/index.html"
msgid "Run the check yourself"
msgstr "직접 검증하기"

#. {ph0}: <code>notes-example</code>
#: website/public/first-investigation/index.html:445
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "Open a terminal in the unpacked {ph0} folder:"
msgstr "압축을 푼 {ph0} 폴더에서 터미널을 여세요:"

#: website/public/first-investigation/index.html:486
msgctxt "page:first-investigation/index.html"
msgid "5. Ask another question"
msgstr "5. 추가 질문하기"

#: website/public/first-investigation/index.html:487
msgctxt "page:first-investigation/index.html"
msgid "Try a follow-up in the same conversation:"
msgstr "같은 대화에서 다음 질문을 해보세요:"

#: website/public/first-investigation/index.html:489
msgctxt "page:first-investigation/index.html"
msgid ""
"What happens if the file can’t be written? Follow the error back to the "
"page."
msgstr "파일을 저장할 수 없으면 어떻게 돼? 오류가 페이지에 전달되는 과정을 추적해 줘."

#: website/public/first-investigation/index.html:494
msgctxt "page:first-investigation/index.html"
msgid ""
"Or give your agent an app of your own and ask about one button, file or "
"behavior."
msgstr "또는 직접 고른 앱을 에이전트에게 주고 버튼, 파일, 동작 중 하나를 물어보세요."

#. {ph0}: <a href="../showcase/notion/">
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/first-investigation/index.html:499
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}How Notion copies text and HTML{ph1}{ph2}Follow a clipboard feature in "
"a packaged Electron app.{ph3}"
msgstr ""
"{ph0}Notion이 텍스트와 HTML을 복사하는 방법{ph1}{ph2}패키징된 Electron 앱의 클립보드 기능을 "
"추적합니다.{ph3}"

#. {ph0}: <a href="../showcase/dx-ball/" >
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/first-investigation/index.html:505
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}How DX-Ball calculates sound panning{ph1}{ph2}Read the original "
"instructions and the reconstruction’s checks.{ph3}"
msgstr ""
"{ph0}DX-Ball이 사운드 패닝을 계산하는 방법{ph1}{ph2}원본 명령어와 재구성판의 검증 과정을 살펴보세요.{ph3}"

#. {ph0}: <a href="../faq/#troubleshooting" >
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/first-investigation/index.html:513
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}Troubleshoot setup or analysis{ph1}{ph2}Update REA and check the "
"connection if you get stuck.{ph3}"
msgstr "{ph0}설정 또는 분석 문제 해결{ph1}{ph2}문제가 생기면 REA를 업데이트하고 연결을 확인하세요.{ph3}"

#: website/public/first-investigation/index.html:6
msgctxt "page:first-investigation/index.html"
msgid "Your First Reverse Engineering Investigation — REA"
msgstr "첫 리버스 엔지니어링 조사 — REA"

#: website/public/first-investigation/index.html:7
msgctxt "page:first-investigation/index.html"
msgid ""
"Try REA on a small Notes app. Set up your agent, ask where exported notes "
"go, and check the CSV formatter with a sample title."
msgstr ""
"작은 메모 앱으로 REA를 사용해 보세요. 에이전트를 설정하고 내보낸 메모의 저장 위치를 물어본 뒤, 예제 제목으로 CSV 포맷터를 "
"검증합니다."

#: website/public/first-investigation/index.html:213
msgctxt "page:first-investigation/index.html"
msgid "On this page"
msgstr "이 페이지 목차"

#: website/public/first-investigation/index.html:223
msgctxt "page:first-investigation/index.html"
msgid "Your first REA investigation"
msgstr "첫 번째 REA 조사"

#: website/public/first-investigation/index.html:239
msgctxt "page:first-investigation/index.html"
msgid "Copy REA installation prompt"
msgstr "REA 설치 프롬프트 복사"

#: website/public/first-investigation/index.html:261
msgctxt "page:first-investigation/index.html"
msgid "Copy setup command"
msgstr "설치 명령 복사"

#: website/public/first-investigation/index.html:289
msgctxt "page:first-investigation/index.html"
msgid "Copy Notes investigation prompt"
msgstr "메모 분석 프롬프트 복사"

#: website/public/first-investigation/index.html:411
msgctxt "page:first-investigation/index.html"
msgid "Copy CSV check prompt"
msgstr "CSV 검증 프롬프트 복사"

#: website/public/first-investigation/index.html:452
#: website/public/first-investigation/index.html:469
msgctxt "page:first-investigation/index.html"
msgid "Copy formatter check command"
msgstr "포맷터 검증 명령 복사"

#: website/public/first-investigation/index.html:540
msgctxt "page:first-investigation/index.html"
msgid "Back to top"
msgstr "맨 위로"

#: website/public/get-started/index.html:107
msgctxt "page:get-started/index.html"
msgid "Skip to content"
msgstr "본문으로 건너뛰기"

#. {ph0}: <a href="../">
#. {ph1}: </a>
#: website/public/get-started/index.html:199
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Home{ph1} / Get started"
msgstr "{ph0}홈{ph1} / 시작하기"

#: website/public/get-started/index.html:200
msgctxt "page:get-started/index.html"
msgid "Set up REA."
msgstr "REA 설정"

#: website/public/get-started/index.html:265
msgctxt "page:get-started/index.html"
msgid "Open a terminal and check:"
msgstr "터미널을 열고 확인하세요:"

#: website/public/get-started/index.html:268
msgctxt "page:get-started/index.html"
msgid "Terminal"
msgstr "터미널"

#: website/public/get-started/index.html:269
#: website/public/get-started/index.html:292
#: website/public/get-started/index.html:322
#: website/public/get-started/index.html:347
#: website/public/get-started/index.html:370
#: website/public/get-started/index.html:385
#: website/public/get-started/index.html:419
#: website/public/get-started/index.html:450
#: website/public/get-started/index.html:464
#: website/public/get-started/index.html:482
#: website/public/get-started/index.html:534
#: website/public/get-started/index.html:548
#: website/public/get-started/index.html:580
#: website/public/get-started/index.html:609
#: website/public/get-started/index.html:744
#: website/public/get-started/index.html:774
#: website/public/get-started/index.html:799
#: website/public/get-started/index.html:814
#: website/public/get-started/index.html:862
#: website/public/get-started/index.html:895
#: website/public/get-started/index.html:1047
#: website/public/get-started/index.html:1109
#: website/public/get-started/index.html:1132
#: website/public/get-started/index.html:1156
#: website/public/get-started/index.html:1204
#: website/public/get-started/index.html:1279
#: website/public/get-started/index.html:1305
#: website/public/get-started/index.html:1322
#: website/public/get-started/index.html:1565
#: website/public/get-started/index.html:1624
#: website/public/get-started/index.html:1643
#: website/public/get-started/index.html:1665
#: website/public/get-started/index.html:1708
#: website/public/get-started/index.html:1738
#: website/public/get-started/index.html:1759
msgctxt "page:get-started/index.html"
msgid "Copy"
msgstr "복사"

#. {ph0}: <code>node -v</code>
#: website/public/get-started/index.html:303
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Type Y if asked to accept the terms. Close PowerShell, open it again, then "
"run {ph0}."
msgstr "약관 동의를 요청하면 Y를 입력하세요. PowerShell을 닫았다가 다시 열고 {ph0}을 실행하세요."

#. {ph0}: <code>nodejs</code>
#. {ph1}: <code>node -v</code>
#: website/public/get-started/index.html:398
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Your distribution's own {ph0} package is often older than 22.23.4, so check "
"{ph1} if you use it instead."
msgstr "배포판에서 제공하는 {ph0} 패키지는 22.23.4보다 오래된 경우가 많습니다. 이를 사용한다면 {ph1}로 확인하세요."

#. {ph0}: <a href="https://nodejs.org/en/download">
#. {ph1}: </a>
#: website/public/get-started/index.html:404
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Prefer a regular installer? Download the LTS version from "
"{ph0}nodejs.org{ph1}."
msgstr "일반 설치 프로그램을 원하나요? {ph0}nodejs.org{ph1}에서 LTS 버전을 다운로드하세요."

#. {ph0}: <a href="#terminal">
#. {ph1}: </a>
#: website/public/get-started/index.html:219
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Use the CLI{ph1}"
msgstr "{ph0}CLI 사용하기{ph1}"

#. {ph0}: <a href="#help">
#. {ph1}: </a>
#: website/public/get-started/index.html:220
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Getting help{ph1}"
msgstr "{ph0}도움 받기{ph1}"

#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/get-started/index.html:769
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}코딩 에이전트"

#: website/public/get-started/index.html:795
msgctxt "page:get-started/index.html"
msgid "Or run setup yourself"
msgstr "직접 설정 명령 실행하기"

#: website/public/get-started/index.html:231
msgctxt "page:get-started/index.html"
msgid "How do I open a terminal?"
msgstr "터미널은 어떻게 열 수 있나요?"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <em>
#. {ph3}: </em>
#: website/public/get-started/index.html:233
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Windows:{ph1} open the Start menu, type {ph2}PowerShell{ph3} and press "
"Enter."
msgstr "{ph0}Windows:{ph1} 시작 메뉴를 열고 {ph2}PowerShell{ph3}을 입력한 뒤 Enter를 누르세요."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <kbd>⌘</kbd>
#. {ph3}: <kbd>Space</kbd>
#. {ph4}: <em>
#. {ph5}: </em>
#: website/public/get-started/index.html:237
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}macOS:{ph1} press {ph2} {ph3}, type {ph4}Terminal{ph5} and press Enter."
msgstr "{ph0}macOS:{ph1} {ph2} {ph3}를 누르고 {ph4}터미널{ph5}을 입력한 뒤 Enter를 누르세요."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <kbd>Ctrl</kbd>
#. {ph3}: <kbd>Alt</kbd>
#. {ph4}: <kbd>T</kbd>
#: website/public/get-started/index.html:241
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Linux:{ph1} press {ph2} {ph3} {ph4} on most desktops."
msgstr "{ph0}Linux:{ph1} 대부분의 데스크톱에서 {ph2} {ph3} {ph4}를 누르세요."

#. {ph0}: <kbd>Ctrl</kbd>
#. {ph1}: <kbd>V</kbd>
#. {ph2}: <kbd>⌘</kbd>
#. {ph3}: <kbd>V</kbd>
#. {ph4}: <kbd>Ctrl</kbd>
#. {ph5}: <kbd>Shift</kbd>
#. {ph6}: <kbd>V</kbd>
#: website/public/get-started/index.html:246
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Paste a command with {ph0} {ph1} (macOS: {ph2} {ph3}; Linux terminals: {ph4}"
" {ph5} {ph6}), then press Enter."
msgstr ""
"{ph0} {ph1}(macOS: {ph2} {ph3}, Linux 터미널: {ph4} {ph5} {ph6})로 명령을 붙여넣고 "
"Enter를 누르세요."

#: website/public/get-started/index.html:831
msgctxt "page:get-started/index.html"
msgid ""
"Choose your client and review the setup plan. REA adds its MCP connection "
"and the matching investigation skill, keeping a backup of existing "
"configuration. It asks before applying the changes."
msgstr ""
"클라이언트를 선택하고 설정 계획을 검토하세요. REA는 기존 설정을 백업한 뒤 MCP 연결과 맞는 분석 스킬을 추가합니다. 변경 사항을 "
"적용하기 전에 승인을 요청합니다."

#: website/public/get-started/index.html:845
msgctxt "page:get-started/index.html"
msgid "How do I restart my client?"
msgstr "클라이언트를 어떻게 다시 시작하나요?"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <kbd>⌘</kbd>
#. {ph3}: <kbd>Q</kbd>
#: website/public/get-started/index.html:846
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Desktop apps{ph1} (Claude Desktop, Cursor, Windsurf, VS Code): quit the"
" app completely, then open it again. Closing the window isn't enough. On "
"macOS press {ph2} {ph3}; on Windows, also quit from the tray icon if there "
"is one."
msgstr ""
"{ph0}데스크톱 앱{ph1} (Claude Desktop, Cursor, Windsurf, VS Code): 앱을 완전히 종료한 뒤 "
"다시 여세요. 창만 닫아서는 충분하지 않습니다. macOS에서는 {ph2} {ph3}를 누르세요. Windows에서는 트레이 아이콘이 "
"있다면 그 메뉴에서도 앱을 종료하세요."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/get-started/index.html:853
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Terminal agents{ph1} (Claude Code, Codex, Gemini CLI): exit the session"
" and start it again."
msgstr ""
"{ph0}터미널 에이전트{ph1}(Claude Code, Codex, Gemini CLI): 세션을 종료한 뒤 다시 시작하세요."

#: website/public/get-started/index.html:957
msgctxt "page:get-started/index.html"
msgid "How do I get a folder's full path?"
msgstr "폴더의 전체 경로는 어떻게 얻나요?"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <em>
#. {ph3}: </em>
#: website/public/get-started/index.html:959
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Windows:{ph1} in File Explorer, right-click the folder and choose "
"{ph2}Copy as path{ph3}. On Windows 10, hold Shift while right-clicking."
msgstr ""
"{ph0}Windows:{ph1} 파일 탐색기에서 폴더를 마우스 오른쪽 버튼으로 클릭하고 {ph2}경로로 복사{ph3}를 선택하세요. "
"Windows 10에서는 Shift를 누른 채 마우스 오른쪽 버튼을 클릭하세요."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <em>
#. {ph3}: </em>
#: website/public/get-started/index.html:964
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}macOS:{ph1} in Finder, right-click the folder, hold Option and choose "
"{ph2}Copy \"…\" as Pathname{ph3}."
msgstr ""
"{ph0}macOS:{ph1} Finder에서 폴더를 마우스 오른쪽 버튼으로 클릭한 뒤 Option을 누르고 {ph2}“…”을(를) 경로"
" 이름으로 복사{ph3}를 선택하세요."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/get-started/index.html:968
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Any system:{ph1} drag the folder into a terminal window and its path "
"appears."
msgstr "{ph0}모든 시스템:{ph1} 폴더를 터미널 창으로 드래그하면 해당 경로가 나타납니다."

#: website/public/get-started/index.html:973
#: website/public/get-started/index.html:1731
msgctxt "page:get-started/index.html"
msgid "In a terminal, put quotes around a path that contains spaces."
msgstr "터미널에서는 공백이 있는 경로를 따옴표로 감싸세요."

#: website/public/get-started/index.html:1558
msgctxt "page:get-started/index.html"
msgid ""
"Analyze a JavaScript or Electron application folder or ASAR archive without "
"running the app:"
msgstr "앱을 실행하지 않고 JavaScript 또는 Electron 앱 폴더나 ASAR 파일을 분석합니다:"

#: website/public/get-started/index.html:1564
msgctxt "page:get-started/index.html"
msgid "Static application analysis"
msgstr "정적 애플리케이션 분석"

#. {ph0}: <code>.asar</code>
#. {ph1}: <code>"D:/apps/example"</code>
#: website/public/get-started/index.html:1576
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Replace the path with your extracted app directory or {ph0} file. On "
"Windows, a path such as {ph1} works here."
msgstr "경로를 압축을 푼 앱 폴더나 {ph0} 파일로 바꾸세요. Windows에서는 {ph1} 같은 경로를 사용할 수 있습니다."

#: website/public/get-started/index.html:1582
msgctxt "page:get-started/index.html"
msgid "Where do I find an app's .asar file?"
msgstr "앱의 .asar 파일은 어디에 있나요?"

#. {ph0}: <code>resources</code>
#: website/public/get-started/index.html:1583
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "Electron apps usually keep it in a {ph0} folder:"
msgstr "Electron 앱은 보통 {ph0} 폴더에 이 파일을 둡니다:"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code
#. >C:\Users\&lt;you&gt;\AppData\Local\Programs\&lt;App&gt;\resources\app.asar</code
#. >
#: website/public/get-started/index.html:1588
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Windows:{ph1} {ph2}"
msgstr "{ph0}Windows:{ph1} {ph2}"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code
#. >/Applications/&lt;App&gt;.app/Contents/Resources/app.asar</code >
#. {ph3}: <em>
#. {ph4}: </em>
#: website/public/get-started/index.html:1594
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}macOS:{ph1} {ph2} (right-click the app and choose {ph3}Show Package "
"Contents{ph4})"
msgstr "{ph0}macOS:{ph1} {ph2}(앱을 마우스 오른쪽 버튼으로 클릭한 뒤 {ph3}패키지 내용 보기{ph4} 선택)"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>/opt/&lt;App&gt;/resources/app.asar</code>
#: website/public/get-started/index.html:1602
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Linux:{ph1} often {ph2}"
msgstr "{ph0}Linux:{ph1} 대개 {ph2}"

#. {ph0}: <code>app.asar</code>
#: website/public/get-started/index.html:1607
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "Some apps install elsewhere. Search the app's folder for {ph0}."
msgstr "다른 위치에 설치되는 앱도 있습니다. 앱 폴더에서 {ph0}을 찾아보세요."

#: website/public/get-started/index.html:1612
msgctxt "page:get-started/index.html"
msgid ""
"The result identifies the app, shows connections between modules and gives "
"their source locations. Connections REA cannot resolve are marked in the "
"result."
msgstr "결과에는 앱의 식별 정보, 모듈 간 연결과 소스 위치가 나옵니다. REA가 연결을 확인하지 못한 부분도 표시됩니다."

#. {ph0}: <code>rea</code>
#: website/public/get-started/index.html:1617
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "If you'd like a permanent {ph0} command in your shell:"
msgstr "셸에서 {ph0} 명령을 항상 사용할 수 있도록 설치하려면:"

#: website/public/get-started/index.html:1623
msgctxt "page:get-started/index.html"
msgid "Install the CLI"
msgstr "CLI 설치"

#. {ph0}: <a href="../guides/javascript/" >
#. {ph1}: </a >
#: website/public/get-started/index.html:1635
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Continue with the JavaScript application guide{ph1}"
msgstr "{ph0}JavaScript 앱 가이드 이어서 보기{ph1}"

#: website/public/get-started/index.html:1152
msgctxt "page:get-started/index.html"
msgid "Connect your Ghidra installation"
msgstr "기존 Ghidra 설치 연결"

#: website/public/get-started/index.html:1122
msgctxt "page:get-started/index.html"
msgid "Connect Ghidra on Windows"
msgstr "Windows에서 Ghidra 연결"

#: website/public/get-started/index.html:1123
msgctxt "page:get-started/index.html"
msgid ""
"Windows x64 has experimental, read-only support for native x86 and x64 PE "
"applications and DLLs on fixed local NTFS drives. Use an existing Ghidra "
"12.1.x installation and a 64-bit JDK 21 or newer:"
msgstr ""
"Windows x64에서는 고정 로컬 NTFS 드라이브의 네이티브 x86 및 x64 PE 앱과 DLL을 실험적으로 읽기 전용 분석할 수 "
"있습니다. 기존 Ghidra 12.1.x 설치와 64비트 JDK 21 이상을 사용하세요."

#: website/public/get-started/index.html:1146
msgctxt "page:get-started/index.html"
msgid ""
"Replace the two paths with your installations, then review setup's plan."
msgstr "두 경로를 실제 설치 경로로 바꾸고 설정 계획을 검토하세요."

#: website/public/get-started/index.html:1028
msgctxt "page:get-started/index.html"
msgid ""
"Connect Hopper on macOS or Linux. Run the setup command above; it detects an"
" existing installation or offers an installation plan for your approval."
msgstr ""
"macOS 또는 Linux에서 Hopper를 연결하세요. 위 설정 명령은 기존 설치를 찾거나, 승인할 수 있는 설치 계획을 제안합니다."

#: website/public/get-started/index.html:1689
msgctxt "page:get-started/index.html"
msgid "Getting help"
msgstr "도움 받기"

#: website/public/get-started/index.html:1691
msgctxt "page:get-started/index.html"
msgid "If your agent doesn't see REA"
msgstr "에이전트에서 REA가 보이지 않을 때"

#. {ph0}: <code>doctor</code>
#: website/public/get-started/index.html:1692
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Restart or reconnect the client after setup. Check its REA connection with "
"{ph0}; for Codex:"
msgstr "설정 후 클라이언트를 다시 시작하거나 연결하세요. {ph0}로 REA 연결을 확인할 수 있습니다. Codex의 예:"

#: website/public/get-started/index.html:1703
msgctxt "page:get-started/index.html"
msgid "If a provider needs attention"
msgstr "분석 도구에 문제가 있을 때"

#: website/public/get-started/index.html:1704
msgctxt "page:get-started/index.html"
msgid "Check the provider you're using. For Ghidra:"
msgstr "사용 중인 분석 도구를 확인하세요. Ghidra의 예:"

#: website/public/get-started/index.html:1707
msgctxt "page:get-started/index.html"
msgid "Check one provider"
msgstr "분석 도구 하나 진단"

#: website/public/get-started/index.html:1719
msgctxt "page:get-started/index.html"
msgid "The report gives the failed check and a suggested next step."
msgstr "보고서에 실패한 검사와 권장 후속 조치가 나옵니다."

#. {ph0}: <a href="../faq/">
#. {ph1}: </a >
#. {ph2}: <span>
#. {ph3}: </span>
#: website/public/get-started/index.html:1784
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}REA FAQ{ph1}{ph2}Quick answers on updates, agents and analysis.{ph3}"
msgstr "{ph0}REA FAQ{ph1}{ph2}업데이트, 에이전트, 분석에 관한 자주 묻는 질문의 답변입니다.{ph3}"

#. {ph0}: <a href="../guides/">
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/get-started/index.html:1788
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Choose an investigation guide{ph1}{ph2}Worked examples for a binary, an"
" Electron app and a browser.{ph3}"
msgstr "{ph0}분석 가이드 선택{ph1}{ph2}바이너리, Electron 앱, 브라우저의 실제 분석 예제입니다.{ph3}"

#. {ph0}: <a href="https://github.com/morluto/rea/issues">
#. {ph1}: </a >
#. {ph2}: <span>
#. {ph3}: </span>
#: website/public/get-started/index.html:1795
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}GitHub issues{ph1}{ph2}Report a problem with the command and "
"diagnostics.{ph3}"
msgstr "{ph0}GitHub 이슈{ph1}{ph2}실행한 명령과 진단 결과를 첨부해 문제를 알려주세요.{ph3}"

#. {ph0}: <a href="https://discord.gg/GkcryMnJDM">
#. {ph1}: </a >
#. {ph2}: <span>
#. {ph3}: </span>
#: website/public/get-started/index.html:1799
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}REA community{ph1}{ph2}Questions, investigations and work in "
"progress.{ph3}"
msgstr "{ph0}REA 커뮤니티{ph1}{ph2}질문, 분석 사례, 진행 중인 작업을 나눕니다.{ph3}"

#: website/public/get-started/index.html:6
msgctxt "page:get-started/index.html"
msgid "Install REA and Set Up Your Coding Agent"
msgstr "REA 설치와 코딩 에이전트 설정"

#: website/public/get-started/index.html:7
msgctxt "page:get-started/index.html"
msgid ""
"Connect REA to your coding agent or inspect a local JavaScript or Electron "
"app from the terminal. Setup, first questions and native provider guides."
msgstr ""
"REA를 코딩 에이전트에 연결하거나 터미널에서 로컬 JavaScript·Electron 앱을 분석하세요. 설정, 첫 질문, 네이티브 분석"
" 도구 안내입니다."

#: website/public/get-started/index.html:269
msgctxt "page:get-started/index.html"
msgid "Copy Node.js version check"
msgstr "Node.js 버전 확인 명령 복사"

#: website/public/get-started/index.html:292
msgctxt "page:get-started/index.html"
msgid "Copy Node.js installation command for Windows"
msgstr "Windows용 Node.js 설치 명령 복사"

#: website/public/get-started/index.html:347
msgctxt "page:get-started/index.html"
msgid "Copy Homebrew Node.js installation command"
msgstr "Homebrew Node.js 설치 명령 복사"

#: website/public/get-started/index.html:370
msgctxt "page:get-started/index.html"
msgid "Copy fnm installation command for Linux"
msgstr "Linux용 fnm 설치 명령 복사"

#: website/public/get-started/index.html:385
msgctxt "page:get-started/index.html"
msgid "Copy Node.js 24 commands for Linux"
msgstr "Linux용 Node.js 24 명령 복사"

#: website/public/get-started/index.html:212
#: website/public/get-started/index.html:211
msgctxt "page:get-started/index.html"
msgid "On this page"
msgstr "이 페이지 목차"

#: website/public/get-started/index.html:223
msgctxt "page:get-started/index.html"
msgid "REA getting started guide"
msgstr "REA 시작 가이드"

#: website/public/get-started/index.html:774
msgctxt "page:get-started/index.html"
msgid "Copy REA installation prompt"
msgstr "REA 설치 프롬프트 복사"

#: website/public/get-started/index.html:1565
msgctxt "page:get-started/index.html"
msgid "Copy JavaScript analysis command"
msgstr "JavaScript 분석 명령 복사"

#: website/public/get-started/index.html:1624
msgctxt "page:get-started/index.html"
msgid "Copy CLI installation command"
msgstr "CLI 설치 명령 복사"

#: website/public/get-started/index.html:1708
msgctxt "page:get-started/index.html"
msgid "Copy provider diagnosis command"
msgstr "분석 도구 진단 명령 복사"

#: website/public/get-started/index.html:1823
msgctxt "page:get-started/index.html"
msgid "Back to top"
msgstr "맨 위로"

#: website/public/guides/browser/index.html:107
msgctxt "page:guides/browser/index.html"
msgid "Skip to content"
msgstr "본문으로 건너뛰기"

#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/guides/browser/index.html:199
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0}Home{ph1} / {ph2}Guides{ph3} / Browser observation"
msgstr "{ph0}홈{ph1} / {ph2}가이드{ph3} / 브라우저 관찰"

#. {ph0}: <br />
#: website/public/guides/browser/index.html:203
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "See what happens{ph0}when you click."
msgstr "클릭하면 어떤 일이{ph0}일어나는지 살펴보세요"

#: website/public/guides/browser/index.html:204
msgctxt "page:guides/browser/index.html"
msgid ""
"Use a small browser app to connect an action, its network request and the "
"JavaScript that builds a download."
msgstr "작은 브라우저 앱에서 클릭 동작, 네트워크 요청, 다운로드를 만드는 JavaScript의 관계를 살펴봅니다."

#: website/public/guides/browser/index.html:211
msgctxt "page:guides/browser/index.html"
msgid "In this guide"
msgstr "가이드 목차"

#. {ph0}: <a href="#example">
#. {ph1}: </a>
#: website/public/guides/browser/index.html:213
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0}The example{ph1}"
msgstr "{ph0}예제 소개{ph1}"

#. {ph0}: <a href="#prepare">
#. {ph1}: </a>
#: website/public/guides/browser/index.html:214
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0}Open the browser{ph1}"
msgstr "{ph0}브라우저 열기{ph1}"

#. {ph0}: <a href="#ask">
#. {ph1}: </a>
#: website/public/guides/browser/index.html:215
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0}Ask your agent{ph1}"
msgstr "{ph0}에이전트에게 질문하기{ph1}"

#. {ph0}: <a href="#capture">
#. {ph1}: </a>
#: website/public/guides/browser/index.html:216
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0}Capture from CLI{ph1}"
msgstr "{ph0}CLI에서 캡처하기{ph1}"

#. {ph0}: <a href="#result">
#. {ph1}: </a>
#: website/public/guides/browser/index.html:217
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0}Read the request and script{ph1}"
msgstr "{ph0}요청 및 스크립트 읽기{ph1}"

#: website/public/guides/browser/index.html:222
msgctxt "page:guides/browser/index.html"
msgid "What happens when you click Export?"
msgstr "내보내기를 클릭하면 어떻게 되나요?"

#. {ph0}: <a href="../../examples/notes-web/">
#. {ph1}: </a>
#. {ph2}: <strong>
#. {ph3}: </strong>
#. {ph4}: <code>notes.json</code>
#: website/public/guides/browser/index.html:223
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"The {ph0}Notes browser example{ph1} has an {ph2}Export notes{ph3} button. "
"Clicking it loads {ph4}, formats the two notes as CSV, and starts a "
"download."
msgstr ""
"{ph0}Notes 브라우저 예제{ph1}에는 {ph2}메모 내보내기{ph3} 버튼이 있습니다. 클릭하면 {ph4}를 불러와 메모 두 "
"개를 CSV로 변환하고 다운로드를 시작합니다."

#: website/public/guides/browser/index.html:231
msgctxt "page:guides/browser/index.html"
msgid "From the click to the CSV download"
msgstr "클릭에서 CSV 다운로드까지"

#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/guides/browser/index.html:233
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"{ph0}01 · You{ph1}{ph2}Click Export notes{ph3}{ph4}Perform the action in "
"your browser while the capture is running.{ph5}"
msgstr ""
"{ph0}01 · 당신{ph1}{ph2}메모 내보내기를 클릭합니다{ph3}{ph4}캡처를 실행하는 동안 브라우저에서 작업을 "
"수행합니다.{ph5}"

#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/guides/browser/index.html:241
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"{ph0}02 · REA{ph1}{ph2}Record the request{ph3}{ph4}Capture the request URL, "
"response status and JSON structure from the selected page.{ph5}"
msgstr ""
"{ph0}02 · REA{ph1}{ph2}요청 기록{ph3}{ph4}선택한 페이지에서 요청 URL, 응답 상태, JSON 구조를 "
"캡처합니다.{ph5}"

#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: <code>fetch("./notes.json")</code>
#. {ph6}: <code>export.js</code>
#. {ph7}: </span >
#: website/public/guides/browser/index.html:249
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"{ph0}03 · Your agent{ph1}{ph2}Read the export code{ph3}{ph4}Connect the "
"observed request to {ph5} in {ph6}.{ph7}"
msgstr ""
"{ph0}03 · 코딩 에이전트{ph1}{ph2}내보내기 코드 읽기{ph3}{ph4}관찰된 요청을 {ph6}의 {ph5} 호출과 "
"연결합니다.{ph7}"

#: website/public/guides/browser/index.html:262
msgctxt "page:guides/browser/index.html"
msgid "Start the capture before clicking Export notes."
msgstr "메모 내보내기를 클릭하기 전에 캡처를 시작합니다."

#: website/public/guides/browser/index.html:268
msgctxt "page:guides/browser/index.html"
msgid "Open Chrome with remote debugging"
msgstr "원격 디버깅을 켜고 Chrome 열기"

#: website/public/guides/browser/index.html:269
msgctxt "page:guides/browser/index.html"
msgid ""
"Open the hosted Notes example with a separate browser profile and a local "
"debugging port. On Linux:"
msgstr "별도 브라우저 프로필과 로컬 디버깅 포트로 호스팅된 Notes 예제를 여세요. Linux의 예:"

#: website/public/guides/browser/index.html:275
msgctxt "page:guides/browser/index.html"
msgid "Start the example browser"
msgstr "예제 브라우저 시작"

#: website/public/guides/browser/index.html:276
#: website/public/guides/browser/index.html:308
#: website/public/guides/browser/index.html:342
#: website/public/guides/browser/index.html:361
#: website/public/guides/browser/index.html:426
msgctxt "page:guides/browser/index.html"
msgid "Copy"
msgstr "복사"

#: website/public/guides/browser/index.html:290
msgctxt "page:guides/browser/index.html"
msgid ""
"Use your installed browser's executable path on macOS or Windows. You can "
"replace the page URL with another page you want to inspect."
msgstr ""
"macOS나 Windows에서는 설치된 브라우저의 실행 파일 경로를 사용하세요. URL은 분석하려는 다른 페이지로 바꿀 수 있습니다."

#: website/public/guides/browser/index.html:295
msgctxt "page:guides/browser/index.html"
msgid ""
"REA connects to this existing browser. You keep control of the page, perform"
" the action, and close the browser when finished."
msgstr ""
"REA는 이미 실행 중인 브라우저에 연결합니다. 사용자가 직접 페이지를 조작하고 필요한 동작을 수행하며, 끝나면 브라우저를 닫습니다."

#: website/public/guides/browser/index.html:301
msgctxt "page:guides/browser/index.html"
msgid "Ask your agent to watch one action"
msgstr "에이전트에게 동작 하나 관찰시키기"

#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/guides/browser/index.html:304
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}코딩 에이전트"

#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="browser-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/guides/browser/index.html:317
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to inspect this page while I click Export notes. "
"What request does it make, and how is the CSV built?{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}›{ph1}{ph2}메모 내보내기를 클릭하는 동안 REA로 이 페이지를 분석해 줘. 어떤 요청을 보내고 CSV는 어떻게 "
"만들어지는지 알려줘.{ph3}{ph4}{ph5}"

#. {ph0}: <code>http://127.0.0.1:9222</code>
#: website/public/guides/browser/index.html:325
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"Example prompt. Give your agent the debugging endpoint, {ph0}, and the page "
"URL. Let it start the capture before you click."
msgstr ""
"예제 프롬프트입니다. 에이전트에게 디버깅 엔드포인트 {ph0}과 페이지 URL을 알려주세요. 클릭하기 전에 캡처가 시작되도록 하세요."

#: website/public/guides/browser/index.html:330
msgctxt "page:guides/browser/index.html"
msgid ""
"Your agent discovers the page target, starts an observation window, and "
"reads the resulting evidence. It can then inspect the script behind the "
"export."
msgstr ""
"에이전트가 페이지 대상을 찾고 일정 시간 관찰한 뒤, 수집한 증거를 읽습니다. 이어서 내보내기에 사용된 스크립트를 살펴볼 수 있습니다."

#: website/public/guides/browser/index.html:337
msgctxt "page:guides/browser/index.html"
msgid "Or capture from the terminal"
msgstr "또는 터미널에서 캡처"

#: website/public/guides/browser/index.html:338
msgctxt "page:guides/browser/index.html"
msgid "Find the page's target ID:"
msgstr "페이지의 대상 ID를 찾으세요:"

#: website/public/guides/browser/index.html:341
msgctxt "page:guides/browser/index.html"
msgid "Find the page"
msgstr "페이지 찾기"

#. {ph0}: <code>TARGET_ID</code>
#: website/public/guides/browser/index.html:354
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"Choose the target with the Notes example URL. Replace {ph0} below with its "
"ID, then run:"
msgstr "Notes 예제 URL의 대상을 고르세요. 아래 {ph0}를 해당 ID로 바꾸고 실행하세요:"

#: website/public/guides/browser/index.html:360
msgctxt "page:guides/browser/index.html"
msgid "Capture the next ten seconds"
msgstr "다음 10초 캡처"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/browser/index.html:376
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"Let the command connect for a few seconds, then click {ph0}Export notes{ph1}"
" in that browser. The result arrives after the observation window ends."
msgstr ""
"명령을 실행하고 연결될 때까지 몇 초 기다린 뒤, 해당 브라우저에서 {ph0}메모 내보내기{ph1}를 클릭하세요. 관찰 시간이 끝나면 "
"결과가 나옵니다."

#: website/public/guides/browser/index.html:381
msgctxt "page:guides/browser/index.html"
msgid ""
"The captured result includes the selected page, network activity during that"
" window, and the shape of the JSON response. Earlier requests are outside "
"this capture."
msgstr ""
"결과에는 선택한 페이지, 관찰 시간 동안의 네트워크 활동, JSON 응답 구조가 포함됩니다. 그 이전 요청은 이 캡처에 포함되지 "
"않습니다."

#: website/public/guides/browser/index.html:388
msgctxt "page:guides/browser/index.html"
msgid "Read the request and export script"
msgstr "요청 및 내보내기 스크립트 읽기"

#: website/public/guides/browser/index.html:391
msgctxt "page:guides/browser/index.html"
msgid "Recorded with REA 4.1.0 on the local Notes example"
msgstr "로컬 Notes 예제에서 REA 4.1.0으로 기록"

#: website/public/guides/browser/index.html:396
msgctxt "page:guides/browser/index.html"
msgid "Captured fact"
msgstr "캡처한 사실"

#: website/public/guides/browser/index.html:397
msgctxt "page:guides/browser/index.html"
msgid "Value"
msgstr "값"

#: website/public/guides/browser/index.html:402
msgctxt "page:guides/browser/index.html"
msgid "Request"
msgstr "요청"

#: website/public/guides/browser/index.html:406
msgctxt "page:guides/browser/index.html"
msgid "Response"
msgstr "응답"

#: website/public/guides/browser/index.html:410
msgctxt "page:guides/browser/index.html"
msgid "Request initiator"
msgstr "요청 시작자"

#. {ph0}: <code>export.js</code>
#: website/public/guides/browser/index.html:411
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0} · script"
msgstr "{ph0} · 스크립트"

#: website/public/guides/browser/index.html:414
msgctxt "page:guides/browser/index.html"
msgid "Response structure"
msgstr "응답 구조"

#. {ph0}: <code>notes[]</code>
#. {ph1}: <code>id</code>
#. {ph2}: <code>title</code>
#: website/public/guides/browser/index.html:415
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0} with {ph1} and {ph2} fields"
msgstr "{ph1}과 {ph2} 필드가 있는 {ph0}"

#: website/public/guides/browser/index.html:425
msgctxt "page:guides/browser/index.html"
msgid "Read the loaded scripts"
msgstr "로드된 스크립트 읽기"

#. {ph0}: <code>export.js</code>
#: website/public/guides/browser/index.html:439
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"The request identifies the data source, and REA records {ph0} as its "
"initiator. Read the captured script source to see how the data is used:"
msgstr ""
"요청으로 데이터 출처를 확인할 수 있으며, REA는 {ph0}을 요청 시작 지점으로 기록합니다. 캡처한 스크립트에서 데이터 사용 방식을 "
"확인하세요:"

#. {ph0}: <code>notes.json</code>
#: website/public/guides/browser/index.html:459
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"The download is constructed in the page using the JSON response. The CSV "
"formatting step comes from the script; the network capture establishes that "
"this click requested {ph0}."
msgstr ""
"다운로드는 JSON 응답을 사용해 페이지에서 생성됩니다. CSV 형식으로 변환하는 단계는 스크립트에서 확인할 수 있습니다. 네트워크 "
"캡처는 이 클릭이 {ph0}을 요청했다는 사실을 입증합니다."

#. {ph0}: <code>notes.json</code>
#: website/public/guides/browser/index.html:475
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"Find the script that requests {ph0}. How does it escape titles containing "
"commas or quotation marks?"
msgstr "{ph0}을 요청하는 스크립트를 찾아줘. 쉼표나 따옴표가 있는 제목은 어떻게 이스케이프해?"

#. {ph0}: <a href="../javascript/">
#. {ph1}: </a>
#: website/public/guides/browser/index.html:480
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"For an installed JavaScript or Electron app, continue with the "
"{ph0}application workflow{ph1} to follow files and process boundaries."
msgstr ""
"설치된 JavaScript·Electron 앱은 {ph0}애플리케이션 분석 절차{ph1}에 따라 파일과 프로세스 경계를 추적하세요."

#: website/public/guides/browser/index.html:6
msgctxt "page:guides/browser/index.html"
msgid "Browser and Network Analysis — REA"
msgstr "브라우저와 네트워크 분석—REA"

#: website/public/guides/browser/index.html:7
msgctxt "page:guides/browser/index.html"
msgid ""
"Observe a Notes export with REA: select a browser page, capture a click, "
"inspect the request and follow the export script."
msgstr "REA로 메모 내보내기를 관찰하세요. 브라우저 페이지를 선택하고 클릭을 캡처한 뒤 요청과 내보내기 스크립트를 살펴봅니다."

#: website/public/guides/browser/index.html:210
msgctxt "page:guides/browser/index.html"
msgid "On this page"
msgstr "이 페이지 목차"

#: website/public/guides/browser/index.html:220
msgctxt "page:guides/browser/index.html"
msgid "Browser observation"
msgstr "브라우저 관찰"

#: website/public/guides/browser/index.html:276
msgctxt "page:guides/browser/index.html"
msgid "Copy start the example browser"
msgstr "예제 브라우저 시작 명령 복사"

#: website/public/guides/browser/index.html:308
msgctxt "page:guides/browser/index.html"
msgid "Copy example prompt"
msgstr "예제 프롬프트 복사"

#: website/public/guides/browser/index.html:342
msgctxt "page:guides/browser/index.html"
msgid "Copy find the page"
msgstr "페이지 찾기 명령 복사"

#: website/public/guides/browser/index.html:361
msgctxt "page:guides/browser/index.html"
msgid "Copy capture the next ten seconds"
msgstr "다음 10초 캡처 명령 복사"

#: website/public/guides/browser/index.html:426
msgctxt "page:guides/browser/index.html"
msgid "Copy read the loaded scripts"
msgstr "로드된 스크립트 읽기 명령 복사"

#: website/public/guides/browser/index.html:513
msgctxt "page:guides/browser/index.html"
msgid "Back to top"
msgstr "맨 위로"

#: website/public/guides/index.html:107
msgctxt "page:guides/index.html"
msgid "Skip to content"
msgstr "본문으로 건너뛰기"

#. {ph0}: <a href="../">
#. {ph1}: </a>
#: website/public/guides/index.html:199
#, python-brace-format
msgctxt "page:guides/index.html"
msgid "{ph0}Home{ph1} / Guides"
msgstr "{ph0}홈{ph1} / 가이드"

#: website/public/guides/index.html:200
msgctxt "page:guides/index.html"
msgid "REA guides."
msgstr "REA 가이드"

#: website/public/guides/index.html:201
msgctxt "page:guides/index.html"
msgid ""
"Analyze a native function, an Electron export or a browser request. Each "
"guide includes a prompt, code and results."
msgstr "네이티브 함수, Electron 내보내기, 브라우저 요청을 분석하세요. 각 가이드에 프롬프트, 코드, 결과가 담겨 있습니다."

#: website/public/guides/index.html:208
msgctxt "page:guides/index.html"
msgid "First investigation"
msgstr "첫 번째 조사"

#: website/public/guides/index.html:210
msgctxt "page:guides/index.html"
msgid "Set up REA"
msgstr "REA 설정"

#: website/public/guides/index.html:211
msgctxt "page:guides/index.html"
msgid "Connect your coding agent or use REA from the terminal."
msgstr "코딩 에이전트를 연결하거나 터미널에서 REA를 사용하세요."

#: website/public/guides/index.html:212
msgctxt "page:guides/index.html"
msgid "Get started with REA"
msgstr "REA 시작하기"

#: website/public/guides/index.html:216
msgctxt "page:guides/index.html"
msgid "Native binaries"
msgstr "기계 코드 프로그램"

#: website/public/guides/index.html:218
msgctxt "page:guides/index.html"
msgid "Recover a sound-pan calculation"
msgstr "왼쪽/오른쪽 사운드 위치 계산 복구"

#: website/public/guides/index.html:219
msgctxt "page:guides/index.html"
msgid ""
"Start with a Windows game executable. Inspect instructions, follow a caller,"
" read numeric constants and check the recovered C."
msgstr ""
"Windows 게임 실행 파일로 시작합니다. 명령어와 호출 함수를 추적하고 숫자 상수를 읽은 뒤, 복구한 C 코드를 검증합니다."

#: website/public/guides/index.html:229
msgctxt "page:guides/index.html"
msgid "Native analysis guide"
msgstr "기계 코드 프로그램 분석 가이드"

#: website/public/guides/index.html:233
msgctxt "page:guides/index.html"
msgid "JavaScript & Electron"
msgstr "JavaScript & Electron"

#: website/public/guides/index.html:235
msgctxt "page:guides/index.html"
msgid "Follow a CSV export"
msgstr "CSV 내보내기 추적"

#: website/public/guides/index.html:236
msgctxt "page:guides/index.html"
msgid ""
"A small Notes app spreads one feature across the renderer, preload and main "
"process. Use REA to connect the API, IPC channel and file writer."
msgstr ""
"작은 Notes 앱의 한 기능이 렌더러, 프리로드, 메인 프로세스에 걸쳐 구현돼 있습니다. REA로 API, IPC 채널, 파일 저장 "
"코드를 연결해 보세요."

#: website/public/guides/index.html:246
msgctxt "page:guides/index.html"
msgid "JavaScript & Electron guide"
msgstr "JavaScript & Electron 가이드"

#. {ph0}: <a href="../showcase/notion/">
#. {ph1}: </a>
#: website/public/guides/index.html:249
#, python-brace-format
msgctxt "page:guides/index.html"
msgid "For a larger packaged app, follow {ph0}Notion's clipboard bridge{ph1}."
msgstr "더 큰 패키지 앱의 예로 {ph0}Notion 클립보드 브리지{ph1}를 살펴보세요."

#: website/public/guides/index.html:256
msgctxt "page:guides/index.html"
msgid "Browser behavior"
msgstr "브라우저 동작"

#: website/public/guides/index.html:258
msgctxt "page:guides/index.html"
msgid "Observe a click"
msgstr "클릭 관찰"

#: website/public/guides/index.html:259
msgctxt "page:guides/index.html"
msgid ""
"Open a working Notes example, capture an export request and find the code "
"that turns its response into a download."
msgstr "작동하는 Notes 예제를 열어 내보내기 요청을 캡처하고, 응답으로 다운로드를 만드는 코드를 찾아봅니다."

#: website/public/guides/index.html:268
msgctxt "page:guides/index.html"
msgid "Browser observation guide"
msgstr "브라우저 관찰 가이드"

#: website/public/guides/index.html:6
msgctxt "page:guides/index.html"
msgid "Reverse Engineering Guides — REA"
msgstr "리버스 엔지니어링 가이드 — REA"

#: website/public/guides/index.html:7
msgctxt "page:guides/index.html"
msgid ""
"Learn REA through short worked examples: a native calculation, an Electron "
"CSV export and a browser request."
msgstr "네이티브 코드의 계산, Electron CSV 내보내기, 브라우저 요청 등 짧은 실습 예제로 REA를 익혀보세요."

#: website/public/guides/index.html:288
msgctxt "page:guides/index.html"
msgid "Back to top"
msgstr "맨 위로"

#: website/public/guides/javascript/index.html:107
msgctxt "page:guides/javascript/index.html"
msgid "Skip to content"
msgstr "본문으로 건너뛰기"

#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/guides/javascript/index.html:199
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}Home{ph1} / {ph2}Guides{ph3} / JavaScript & Electron"
msgstr "{ph0}홈{ph1} / {ph2}가이드{ph3} / JavaScript & Electron"

#. {ph0}: <br />
#: website/public/guides/javascript/index.html:203
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "Trace an Electron{ph0}CSV export."
msgstr "Electron의 CSV{ph0}내보내기를 추적하세요"

#: website/public/guides/javascript/index.html:204
msgctxt "page:guides/javascript/index.html"
msgid ""
"Follow a button click from the page API, through Electron IPC, to the CSV "
"file writer."
msgstr "버튼 클릭부터 페이지 API, Electron IPC를 거쳐 CSV 파일 저장까지 추적합니다."

#: website/public/guides/javascript/index.html:211
msgctxt "page:guides/javascript/index.html"
msgid "In this guide"
msgstr "가이드 목차"

#. {ph0}: <a href="#example">
#. {ph1}: </a>
#: website/public/guides/javascript/index.html:213
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}The example{ph1}"
msgstr "{ph0}예제 소개{ph1}"

#. {ph0}: <a href="#ask">
#. {ph1}: </a>
#: website/public/guides/javascript/index.html:214
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}Ask your agent{ph1}"
msgstr "{ph0}에이전트에게 질문하기{ph1}"

#. {ph0}: <a href="#follow">
#. {ph1}: </a>
#: website/public/guides/javascript/index.html:215
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}Trace the export code{ph1}"
msgstr "{ph0}내보내기 코드 추적{ph1}"

#. {ph0}: <a href="#try">
#. {ph1}: </a>
#: website/public/guides/javascript/index.html:216
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}Try the example{ph1}"
msgstr "{ph0}예제 실행하기{ph1}"

#. {ph0}: <a href="#next">
#. {ph1}: </a>
#: website/public/guides/javascript/index.html:217
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}Inspect the CSV writer{ph1}"
msgstr "{ph0}CSV 저장 코드 살펴보기{ph1}"

#: website/public/guides/javascript/index.html:222
msgctxt "page:guides/javascript/index.html"
msgid "Where does “Export notes” go?"
msgstr "“메모 내보내기”는 어디로 이어질까요?"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/javascript/index.html:223
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"This guide uses a small Electron app. Clicking {ph0}Export notes{ph1} calls "
"an API in the page, crosses into the main process, and writes a CSV. The "
"behavior is spread across several files."
msgstr ""
"이 가이드는 작은 Electron 앱을 사용합니다. {ph0}노트 내보내기{ph1}를 클릭하면 페이지의 API가 호출되고, 메인 "
"프로세스를 거쳐 CSV 파일이 기록됩니다. 이 동작은 여러 파일에 걸쳐 구현되어 있습니다."

#: website/public/guides/javascript/index.html:230
msgctxt "page:guides/javascript/index.html"
msgid "The CSV export across Electron processes"
msgstr "Electron 프로세스를 넘나드는 CSV 내보내기"

#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: <code>notes.exportCsv()</code>
#. {ph4}: </span >
#. {ph5}: <span class="flow-note" >
#. {ph6}: <code>renderer.js</code>
#. {ph7}: <code>preload.js</code>
#. {ph8}: </span >
#: website/public/guides/javascript/index.html:234
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}Renderer → preload{ph1}{ph2}{ph3}{ph4}{ph5}{ph6} calls the API exposed "
"by {ph7}.{ph8}"
msgstr ""
"{ph0}렌더러 → 프리로드{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}이 {ph7}에서 노출한 API를 호출합니다.{ph8}"

#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: <code>notes:export</code>
#. {ph4}: </span >
#. {ph5}: <span class="flow-note" >
#. {ph6}: </span >
#: website/public/guides/javascript/index.html:242
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}Between processes{ph1}{ph2}{ph3}{ph4}{ph5}The preload invokes an IPC "
"channel: a named message to the main process.{ph6}"
msgstr ""
"{ph0}프로세스 간 통신{ph1}{ph2}{ph3}{ph4}{ph5}프리로드는 메인 프로세스로 보내는 이름 있는 메시지인 IPC 채널을"
" 호출합니다.{ph6}"

#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: <code>main.js</code>
#. {ph6}: </span >
#: website/public/guides/javascript/index.html:250
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}Main process{ph1}{ph2}An export handler{ph3}{ph4}{ph5} handles that "
"channel and calls the CSV writer.{ph6}"
msgstr ""
"{ph0}메인 프로세스{ph1}{ph2}내보내기 핸들러{ph3}{ph4}{ph5}이 해당 채널을 처리하고 CSV 저장 함수를 "
"호출합니다.{ph6}"

#. {ph0}: <code>csv.js</code>
#. {ph1}: <code>main.js</code>
#. {ph2}: <code>downloads/notes.csv</code>
#: website/public/guides/javascript/index.html:259
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0} formats the notes → {ph1} writes {ph2}."
msgstr "{ph0}이 메모를 변환 → {ph1}이 {ph2} 저장."

#: website/public/guides/javascript/index.html:263
msgctxt "page:guides/javascript/index.html"
msgid ""
"REA matches the literal IPC call to its handler and identifies the exposed "
"API. The path is inferred from code; a runtime capture can check what "
"executes."
msgstr ""
"REA는 리터럴 IPC 호출을 핸들러와 연결하고 노출된 API를 식별합니다. 이 경로는 코드에서 추론한 것이며, 런타임 캡처로 실제 "
"실행을 확인할 수 있습니다."

#: website/public/guides/javascript/index.html:271
msgctxt "page:guides/javascript/index.html"
msgid "Ask about the CSV export"
msgstr "CSV 내보내기 질문하기"

#. {ph0}: <a href="../../get-started/#agent">
#. {ph1}: </a>
#: website/public/guides/javascript/index.html:272
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}Connect your agent to REA{ph1} and give it the app directory or ASAR "
"file:"
msgstr "{ph0}에이전트에 REA를 연결{ph1}하고 앱 폴더나 ASAR 파일을 전달하세요:"

#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/guides/javascript/index.html:278
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}코딩 에이전트"

#: website/public/guides/javascript/index.html:282
#: website/public/guides/javascript/index.html:431
msgctxt "page:guides/javascript/index.html"
msgid "Copy"
msgstr "복사"

#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="javascript-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/guides/javascript/index.html:291
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to find what happens when I export notes in this "
"app. Where is the CSV created?{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}›{ph1}{ph2}REA로 이 앱에서 메모를 내보내면 어떤 일이 일어나는지 찾아줘. CSV는 어디서 "
"만들어져?{ph3}{ph4}{ph5}"

#. {ph0}: <code>app.asar</code>
#: website/public/guides/javascript/index.html:299
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"Example prompt. Include the absolute path to the application folder or "
"{ph0}."
msgstr "예제 프롬프트입니다. 앱 폴더 또는 {ph0}의 절대 경로를 포함하세요."

#: website/public/guides/javascript/index.html:303
msgctxt "page:guides/javascript/index.html"
msgid ""
"REA reads the application files and builds a map of entrypoints, modules and"
" process boundaries. Your agent uses that map to narrow the investigation to"
" the export feature."
msgstr ""
"REA가 앱 파일을 읽어 진입점, 모듈, 프로세스 경계의 연결 지도를 만듭니다. 에이전트는 이를 바탕으로 조사 범위를 내보내기 기능으로 "
"좁힙니다."

#: website/public/guides/javascript/index.html:310
msgctxt "page:guides/javascript/index.html"
msgid "Trace the export code"
msgstr "내보내기 코드 추적"

#: website/public/guides/javascript/index.html:311
msgctxt "page:guides/javascript/index.html"
msgid "The page calls a small API"
msgstr "페이지에서 작은 API를 호출합니다"

#: website/public/guides/javascript/index.html:324
msgctxt "page:guides/javascript/index.html"
msgid ""
"The page knows the method name. The implementation lives in the preload, "
"which exposes it to the renderer."
msgstr "페이지는 메서드 이름을 알고 있습니다. 실제 구현은 프리로드에 있으며, 프리로드가 이를 렌더러에 노출합니다."

#. {ph0}: <code>notes.exportCsv</code>
#. {ph1}: <code>notes:export</code>
#: website/public/guides/javascript/index.html:338
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"REA records {ph0} and the literal channel {ph1}. It pairs that invocation "
"with the single matching handler in the main process."
msgstr ""
"REA는 {ph0}과 리터럴 채널 {ph1}을 기록합니다. 이 호출을 메인 프로세스에서 유일하게 일치하는 핸들러와 연결합니다."

#. {ph0}: <code>csv.js</code>
#. {ph1}: <code>notes.csv</code>
#: website/public/guides/javascript/index.html:355
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"Reading the handler answers the original question: {ph0} formats the notes, "
"and the main process writes {ph1} into the user's Downloads folder."
msgstr ""
"핸들러를 읽으면 처음 질문의 답이 나옵니다. {ph0}이 메모를 변환하고, 메인 프로세스가 사용자의 다운로드 폴더에 {ph1}을 "
"저장합니다."

#: website/public/guides/javascript/index.html:372
msgctxt "page:guides/javascript/index.html"
msgid ""
"Recorded by REA 4.1.0 on the downloadable example below. Source locations "
"accompany the API, channel and handler findings."
msgstr "아래 다운로드 예제를 REA 4.1.0으로 분석한 기록입니다. API, 채널, 핸들러 결과에는 소스 위치가 함께 제공됩니다."

#: website/public/guides/javascript/index.html:378
msgctxt "page:guides/javascript/index.html"
msgid "Analyze the example yourself"
msgstr "예제를 직접 분석해 보세요"

#. {ph0}: <a class="button" href="../../examples/notes-example.zip"
#. download="notes-example.zip" >
#. {ph1}: </a >
#: website/public/guides/javascript/index.html:385
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}Download example ZIP{ph1}"
msgstr "{ph0}예제 ZIP 다운로드{ph1}"

#: website/public/guides/javascript/index.html:394
msgctxt "page:guides/javascript/index.html"
msgid "Browse the six source files"
msgstr "소스 파일 6개 살펴보기"

#: website/public/guides/javascript/index.html:430
msgctxt "page:guides/javascript/index.html"
msgid "Static application analysis"
msgstr "정적 애플리케이션 분석"

#. {ph0}: <code>normalized_result.summary.ipc</code>
#. {ph1}: <code>normalized_result.graph</code>
#: website/public/guides/javascript/index.html:443
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"Replace the path with the folder you unzipped. You should find one IPC "
"channel and one matching handler in {ph0}. Source locations are in {ph1}."
msgstr ""
"경로를 압축을 푼 폴더로 바꾸세요. {ph0}에서 IPC 채널 하나와 일치하는 핸들러 하나가 나와야 합니다. 소스 위치는 {ph1}에 "
"있습니다."

#: website/public/guides/javascript/index.html:449
msgctxt "page:guides/javascript/index.html"
msgid ""
"For your own app, use the same command with its directory or ASAR path. An "
"agent can follow a literal string, API name or IPC channel with REA's "
"feature tracing tools."
msgstr ""
"직접 고른 앱도 폴더나 ASAR 경로로 같은 명령을 실행하세요. 에이전트는 REA의 기능 추적 도구로 리터럴 문자열, API 이름, "
"IPC 채널을 추적할 수 있습니다."

#: website/public/guides/javascript/index.html:456
msgctxt "page:guides/javascript/index.html"
msgid "Inspect the CSV writer"
msgstr "CSV 저장 코드 살펴보기"

#. {ph0}: <code>notes:export</code>
#: website/public/guides/javascript/index.html:458
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"Follow {ph0} to its handler. Which inputs reach the CSV writer, and what "
"happens if writing the file fails?"
msgstr "{ph0}에서 핸들러까지 추적해 줘. CSV 저장 함수에 어떤 입력이 전달되고, 파일 저장에 실패하면 어떻게 돼?"

#: website/public/guides/javascript/index.html:464
msgctxt "page:guides/javascript/index.html"
msgid ""
"Use the source locations to inspect those details. Computed channel names "
"and ambiguous handlers can remain unresolved; runtime observations give you "
"another way to investigate them."
msgstr ""
"소스 위치를 따라 세부 동작을 살펴보세요. 계산된 채널 이름이나 모호한 핸들러는 확인되지 않을 수 있습니다. 런타임 관찰은 이를 조사하는"
" 또 다른 방법입니다."

#. {ph0}: <a href="../../showcase/notion/" >
#. {ph1}: </a >
#. {ph2}: <span>
#. {ph3}: </span>
#: website/public/guides/javascript/index.html:470
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}Follow Notion's clipboard bridge{ph1} {ph2}Apply the same approach to a"
" packaged Electron app.{ph3}"
msgstr ""
"{ph0}Notion 클립보드 브리지 추적{ph1} {ph2}패키징된 Electron 앱에도 같은 방법을 적용합니다.{ph3}"

#. {ph0}: <a href="../browser/">
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/guides/javascript/index.html:476
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}Observe a browser export{ph1}{ph2}Capture a real click and see which "
"request it makes.{ph3}"
msgstr "{ph0}브라우저 내보내기 관찰{ph1}{ph2}실제 클릭을 캡처해 어떤 요청을 보내는지 확인합니다.{ph3}"

#. {ph0}: <a href="../native/">
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/guides/javascript/index.html:482
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}Follow a native function{ph1}{ph2}Continue into a binary when a feature"
" depends on native code.{ph3}"
msgstr "{ph0}네이티브 함수 추적{ph1}{ph2}기능이 네이티브 코드에 의존한다면 바이너리까지 추적합니다.{ph3}"

#: website/public/guides/javascript/index.html:6
msgctxt "page:guides/javascript/index.html"
msgid "JavaScript and Electron Analysis — REA"
msgstr "JavaScript와 Electron 분석 — REA"

#: website/public/guides/javascript/index.html:7
msgctxt "page:guides/javascript/index.html"
msgid ""
"Trace a Notes CSV export through a renderer API, preload and IPC handler "
"with REA. Includes downloadable example files and a verified analysis "
"result."
msgstr ""
"REA로 렌더러 API, 프리로드, IPC 핸들러를 거쳐 Notes의 CSV 내보내기를 추적합니다. 다운로드 예제와 검증된 분석 결과를 "
"제공합니다."

#: website/public/guides/javascript/index.html:210
msgctxt "page:guides/javascript/index.html"
msgid "On this page"
msgstr "이 페이지 목차"

#: website/public/guides/javascript/index.html:220
msgctxt "page:guides/javascript/index.html"
msgid "JavaScript & Electron"
msgstr "JavaScript & Electron"

#: website/public/guides/javascript/index.html:282
msgctxt "page:guides/javascript/index.html"
msgid "Copy example prompt"
msgstr "예제 프롬프트 복사"

#: website/public/guides/javascript/index.html:431
msgctxt "page:guides/javascript/index.html"
msgid "Copy static application analysis"
msgstr "정적 애플리케이션 분석 명령 복사"

#: website/public/guides/javascript/index.html:509
msgctxt "page:guides/javascript/index.html"
msgid "Back to top"
msgstr "맨 위로"

#: website/public/guides/native/index.html:107
msgctxt "page:guides/native/index.html"
msgid "Skip to content"
msgstr "본문으로 건너뛰기"

#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/guides/native/index.html:199
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}Home{ph1} / {ph2}Guides{ph3} / Native analysis"
msgstr "{ph0}홈{ph1} / {ph2}가이드{ph3} / 네이티브 분석"

#. {ph0}: <br />
#: website/public/guides/native/index.html:202
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "Recover DX-Ball's{ph0}sound-pan calculation."
msgstr "DX-Ball의 사운드{ph0}패닝 계산을 복구하세요"

#: website/public/guides/native/index.html:203
msgctxt "page:guides/native/index.html"
msgid ""
"Inspect the original instructions, identify the input and constants, then "
"check the recovered C."
msgstr "원본 명령어를 살펴 입력과 상수를 식별하고 복구한 C 코드를 검증합니다."

#: website/public/guides/native/index.html:210
msgctxt "page:guides/native/index.html"
msgid "In this guide"
msgstr "가이드 목차"

#. {ph0}: <a href="#example">
#. {ph1}: </a>
#: website/public/guides/native/index.html:212
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}The example{ph1}"
msgstr "{ph0}예제 소개{ph1}"

#. {ph0}: <a href="#ask">
#. {ph1}: </a>
#: website/public/guides/native/index.html:213
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}Ask your agent{ph1}"
msgstr "{ph0}에이전트에게 질문하기{ph1}"

#. {ph0}: <a href="#follow">
#. {ph1}: </a>
#: website/public/guides/native/index.html:214
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}Read the REA results{ph1}"
msgstr "{ph0}REA 결과 읽기{ph1}"

#. {ph0}: <a href="#result">
#. {ph1}: </a>
#: website/public/guides/native/index.html:215
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}Recover and check{ph1}"
msgstr "{ph0}복구하고 검증하기{ph1}"

#. {ph0}: <a href="#try">
#. {ph1}: </a>
#: website/public/guides/native/index.html:216
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}Use your own binary{ph1}"
msgstr "{ph0}자신의 바이너리 사용{ph1}"

#: website/public/guides/native/index.html:221
msgctxt "page:guides/native/index.html"
msgid "Calculate left/right sound panning"
msgstr "왼쪽/오른쪽 스테레오 사운드 위치 계산"

#: website/public/guides/native/index.html:222
msgctxt "page:guides/native/index.html"
msgid ""
"In DX-Ball, a brick hit supplies a horizontal screen position. The sound "
"code turns it into a left/right panning value."
msgstr "DX-Ball에서는 벽돌에 맞으면 화면의 가로 위치를 전달합니다. 사운드 코드는 이를 좌우 패닝 값으로 변환합니다."

#. {ph0}: <code>0x00406400</code>
#. {ph1}: <code>__ftol()</code>
#: website/public/guides/native/index.html:226
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"The starting function, {ph0}, has a short decompiler result: a call to "
"{ph1}. REA also returns its instructions and callers, which give the agent a"
" way to investigate the missing arithmetic."
msgstr ""
"시작 함수 {ph0}의 디컴파일 결과는 {ph1} 호출 하나로 짧습니다. REA는 명령어와 호출 함수도 반환하므로, 에이전트가 빠진 "
"연산을 추적할 수 있습니다."

#: website/public/guides/native/index.html:233
msgctxt "page:guides/native/index.html"
msgid "New to these terms?"
msgstr "이 용어들이 낯선가요?"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>MOV</code>
#. {ph3}: <code>ADD</code>
#: website/public/guides/native/index.html:235
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Instructions:{ph1} the steps the processor runs, shown in readable form"
" such as {ph2} or {ph3}."
msgstr "{ph0}명령어:{ph1} 프로세서가 실행하는 단계로, {ph2}나 {ph3}처럼 읽을 수 있는 형태로 표시합니다."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:240
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Decompiler result / pseudocode:{ph1} an analysis tool's attempt to turn"
" instructions back into C-like code. It can miss parts, as in this example."
msgstr ""
"{ph0}디컴파일 결과 / 의사 코드:{ph1} 분석 도구가 명령어를 C와 비슷한 코드로 복원한 결과입니다. 이 예제처럼 일부를 놓칠 수"
" 있습니다."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:245
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Caller:{ph1} a function that calls this one. It shows which values are "
"passed in."
msgstr "{ph0}호출자:{ph1} 이 함수를 호출하는 함수입니다. 어떤 값이 전달되는지 보여줍니다."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>0x00406400</code>
#: website/public/guides/native/index.html:249
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Address:{ph1} a location in the program, written in hexadecimal, such "
"as {ph2}."
msgstr "{ph0}주소:{ph1} 프로그램 안의 위치로, {ph2}처럼 16진수로 표기합니다."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:253
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Constants:{ph1} fixed numbers stored in the program, read as raw bytes "
"and decoded."
msgstr "{ph0}상수:{ph1} 프로그램에 저장된 고정 숫자입니다. 원시 바이트를 읽어 값으로 해석합니다."

#: website/public/guides/native/index.html:260
msgctxt "page:guides/native/index.html"
msgid "Three pieces of evidence, one calculation"
msgstr "세 가지 증거, 하나의 계산"

#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/guides/native/index.html:264
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}01 · Instructions{ph1}{ph2}An integer input{ph3}{ph4}A stack read "
"supplies the value used by the floating-point instructions.{ph5}"
msgstr ""
"{ph0}01 · 명령어{ph1}{ph2}정수 입력{ph3}{ph4}스택에서 읽은 값이 부동 소수점 명령어의 입력으로 쓰입니다.{ph5}"

#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: <code>20 + 30 × tile_x</code>
#. {ph6}: </span >
#: website/public/guides/native/index.html:272
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}02 · Caller{ph1}{ph2}A screen coordinate{ph3}{ph4}The brick-hit caller "
"passes {ph5}.{ph6}"
msgstr ""
"{ph0}02 · 호출 함수{ph1}{ph2}화면 좌표{ph3}{ph4}벽돌 충돌을 처리하는 호출 함수가 {ph5}를 "
"전달합니다.{ph6}"

#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: <code>1.5625</code>
#. {ph6}: <code>500.0</code>
#. {ph7}: </span >
#: website/public/guides/native/index.html:280
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}03 · Data bytes{ph1}{ph2}The numeric constants{ph3}{ph4}Referenced "
"bytes decode to {ph5}, {ph6} and a scale value.{ph7}"
msgstr ""
"{ph0}03 · 데이터 바이트{ph1}{ph2}수치 상수{ph3}{ph4}참조된 바이트를 해석하면 {ph5}, {ph6}, 배율 값이 "
"나옵니다.{ph7}"

#: website/public/guides/native/index.html:292
msgctxt "page:guides/native/index.html"
msgid ""
"REA supplies the instructions, call relationship and bytes. The agent "
"interprets them together."
msgstr "REA는 명령어, 호출 관계, 바이트를 제공합니다. 에이전트는 이 증거를 함께 해석합니다."

#: website/public/guides/native/index.html:299
msgctxt "page:guides/native/index.html"
msgid "Ask about the behavior"
msgstr "동작 질문하기"

#. {ph0}: <a href="../../get-started/#agent" >
#. {ph1}: </a >
#. {ph2}: <a href="../../get-started/#native" >
#. {ph3}: </a >
#: website/public/guides/native/index.html:300
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"After {ph0}connecting REA to your agent{ph1} and {ph2}setting up a native "
"analysis tool{ph3}, provide the local executable and a question:"
msgstr ""
"{ph0}에이전트에 REA를 연결{ph1}하고 {ph2}네이티브 분석 도구를 설정{ph3}한 뒤, 로컬 실행 파일과 질문을 전달하세요:"

#: website/public/guides/native/index.html:311
msgctxt "page:guides/native/index.html"
msgid "Which analysis tool should I use?"
msgstr "어떤 분석 도구를 쓰면 되나요?"

#: website/public/guides/native/index.html:312
msgctxt "page:guides/native/index.html"
msgid "REA needs one of these to read native programs:"
msgstr "REA로 네이티브 프로그램을 읽으려면 다음 중 하나가 필요합니다:"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:314
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Hopper{ph1} (macOS or Linux): REA's setup detects it or offers to "
"install it. On macOS, open Hopper once and choose demo mode or activate a "
"license before your first analysis."
msgstr ""
"{ph0}Hopper{ph1}(macOS 또는 Linux): REA 설정이 기존 설치를 찾거나 설치를 제안합니다. macOS에서는 첫 "
"분석 전에 Hopper를 한 번 열어 데모 모드를 선택하거나 라이선스를 활성화하세요."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:320
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Ghidra{ph1} (macOS or Linux; experimental on Windows): free, but needs "
"an existing Ghidra 12.1.x installation and a 64-bit JDK 21 or newer."
msgstr ""
"{ph0}Ghidra{ph1} (macOS 또는 Linux, Windows에서는 실험적 지원): 무료이지만 기존 Ghidra 12.1.x"
" 설치와 64비트 JDK 21 이상이 필요합니다."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:325
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}IDA{ph1} (Windows): for an existing IDA setup with an MCP registration."
msgstr "{ph0}IDA{ph1}(Windows): MCP가 등록된 기존 IDA 환경에서 사용합니다."

#. {ph0}: <a href="../../get-started/#native">
#. {ph1}: </a>
#: website/public/guides/native/index.html:330
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "See {ph0}Set up native analysis{ph1} for the steps."
msgstr "절차는 {ph0}네이티브 분석 설정{ph1}을 참고하세요."

#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/guides/native/index.html:338
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}코딩 에이전트"

#: website/public/guides/native/index.html:342
#: website/public/guides/native/index.html:473
msgctxt "page:guides/native/index.html"
msgid "Copy"
msgstr "복사"

#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="native-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/guides/native/index.html:351
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to find how DX-Ball calculates sound panning. "
"Explain the calculation and show the code.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}›{ph1}{ph2}REA로 DX-Ball의 사운드 패닝 계산 방식을 찾아줘. 계산을 설명하고 코드도 "
"보여줘.{ph3}{ph4}{ph5}"

#: website/public/guides/native/index.html:359
msgctxt "page:guides/native/index.html"
msgid ""
"Example prompt. Give your agent the path to your local DX-Ball 1.07 "
"executable. REA doesn't include DX-Ball, so use your own copy, or ask the "
"same kind of question about another small Windows program you have."
msgstr ""
"예제 프롬프트입니다. 에이전트에게 로컬 DX-Ball 1.07 실행 파일의 경로를 알려주세요. REA에는 DX-Ball이 포함되어 있지 "
"않으므로 보유한 복사본을 사용하거나, 가지고 있는 다른 작은 Windows 프로그램에 같은 종류의 질문을 해 보세요."

#: website/public/guides/native/index.html:366
msgctxt "page:guides/native/index.html"
msgid "How do I get a file's full path?"
msgstr "파일의 전체 경로는 어떻게 얻나요?"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <em>
#. {ph3}: </em>
#: website/public/guides/native/index.html:368
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Windows:{ph1} in File Explorer, right-click the file and choose "
"{ph2}Copy as path{ph3}. On Windows 10, hold Shift while right-clicking."
msgstr ""
"{ph0}Windows:{ph1} 파일 탐색기에서 파일을 마우스 오른쪽 버튼으로 클릭하고 {ph2}경로로 복사{ph3}를 선택하세요. "
"Windows 10에서는 Shift 키를 누른 채 마우스 오른쪽 버튼을 클릭하세요."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <em>
#. {ph3}: </em>
#: website/public/guides/native/index.html:373
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}macOS:{ph1} in Finder, right-click the file, hold Option and choose "
"{ph2}Copy \"…\" as Pathname{ph3}."
msgstr ""
"{ph0}macOS:{ph1} Finder에서 파일을 마우스 오른쪽 버튼으로 클릭한 뒤 Option을 누르고 {ph2}“…”을(를) 경로"
" 이름으로 복사{ph3}를 선택하세요."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:377
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Any system:{ph1} drag the file into a terminal window and its path "
"appears."
msgstr "{ph0}모든 시스템:{ph1} 파일을 터미널 창으로 드래그하면 해당 경로가 나타납니다."

#: website/public/guides/native/index.html:385
msgctxt "page:guides/native/index.html"
msgid "Read the REA results"
msgstr "REA 결과 읽기"

#: website/public/guides/native/index.html:386
msgctxt "page:guides/native/index.html"
msgid "Read the input"
msgstr "입력 읽기"

#: website/public/guides/native/index.html:395
msgctxt "page:guides/native/index.html"
msgid ""
"The instructions load an integer argument and convert it for floating-point "
"arithmetic. This is the input absent from the first pseudocode view."
msgstr "명령어는 정수 인수를 읽어 부동소수점 연산용으로 변환합니다. 첫 의사 코드에서 빠졌던 입력이 바로 이 값입니다."

#: website/public/guides/native/index.html:400
msgctxt "page:guides/native/index.html"
msgid "Follow the caller"
msgstr "호출 함수 추적"

#. {ph0}: <code>0x14</code>
#: website/public/guides/native/index.html:409
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"REA identifies the brick-hit caller. Its earlier instructions multiply the "
"tile coordinate by 30; adding {ph0} (20) gives the brick's screen position."
msgstr ""
"REA가 벽돌 충돌을 처리하는 호출 함수를 식별합니다. 앞선 명령어에서 타일 좌표에 30을 곱하고 {ph0}(20)을 더해 벽돌의 화면 "
"위치를 구합니다."

#: website/public/guides/native/index.html:414
msgctxt "page:guides/native/index.html"
msgid "Read the referenced constants"
msgstr "참조된 상수 읽기"

#: website/public/guides/native/index.html:425
msgctxt "page:guides/native/index.html"
msgid ""
"The arithmetic references these addresses. Reading the bytes supplies the "
"actual values; the instruction order tells the agent how they are used."
msgstr ""
"연산은 이 주소들을 참조합니다. 바이트를 읽으면 실제 값을 알 수 있고, 명령어 순서는 그 값을 어떻게 사용하는지 알려줍니다."

#: website/public/guides/native/index.html:432
msgctxt "page:guides/native/index.html"
msgid "Write and check the recovered function"
msgstr "복구한 함수 작성 및 검증"

#: website/public/guides/native/index.html:441
msgctxt "page:guides/native/index.html"
msgid ""
"With a scale of 1.0, screen positions 0, 320 and 640 map to −500, 0 and 500 "
"before integer conversion. The calculation puts the center of the screen at "
"the center of the stereo field."
msgstr ""
"배율이 1.0이면 화면 위치 0, 320, 640은 정수 변환 전에 각각 −500, 0, 500이 됩니다. 화면 중앙이 스테레오 음장의 "
"중앙에 대응하는 계산입니다."

#: website/public/guides/native/index.html:446
msgctxt "page:guides/native/index.html"
msgid ""
"The agent used REA's findings to write the C. Separate checks compared 3,205"
" inputs against the original x86 function and reproduced all 63 compiled "
"bytes of the complete function."
msgstr ""
"에이전트는 REA의 분석 결과를 바탕으로 C 코드를 작성했습니다. 별도의 검사에서는 3,205개의 입력을 원래 x86 함수와 비교하고, "
"전체 함수의 컴파일된 63바이트를 모두 재현했습니다."

#. {ph0}: <a href="../../showcase/dx-ball/#sound-pan" >
#. {ph1}: </a >
#: website/public/guides/native/index.html:451
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}See the full investigation and assembly-to-C comparison{ph1}"
msgstr "{ph0}전체 조사와 어셈블리·C 비교 보기{ph1}"

#: website/public/guides/native/index.html:458
msgctxt "page:guides/native/index.html"
msgid "Try it with your own binary"
msgstr "직접 고른 바이너리로 시도하기"

#. {ph0}: <a href="../../get-started/#native" >
#. {ph1}: </a >
#: website/public/guides/native/index.html:459
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Connect a native analysis provider{ph1}, then give your agent a local "
"executable or library and a feature to investigate. Useful starting "
"questions include “How is this file parsed?” or “Which function handles this"
" menu action?”"
msgstr ""
"{ph0}네이티브 분석 도구를 연결{ph1}한 뒤, 로컬 실행 파일이나 라이브러리와 조사할 기능을 에이전트에게 전달하세요. “이 파일은 "
"어떻게 파싱해?” 또는 “이 메뉴 동작은 어떤 함수가 처리해?” 같은 질문으로 시작할 수 있습니다."

#: website/public/guides/native/index.html:466
msgctxt "page:guides/native/index.html"
msgid ""
"If you already know a function name or address, you can query it from the "
"terminal. For a configured Ghidra installation:"
msgstr "함수 이름이나 주소를 이미 안다면 터미널에서 조회할 수 있습니다. Ghidra가 설정된 환경의 예:"

#: website/public/guides/native/index.html:472
msgctxt "page:guides/native/index.html"
msgid "Function analysis"
msgstr "함수 분석"

#. {ph0}: <code>main</code>
#: website/public/guides/native/index.html:485
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"Replace the target path and {ph0} with your own function name or address. "
"Each CLI invocation imports and analyzes the binary, then closes its "
"session. Your agent's MCP queries reuse the imported binary while that "
"session is open."
msgstr ""
"대상 경로와 {ph0}를 실제 함수 이름이나 주소로 바꾸세요. CLI는 호출할 때마다 바이너리를 가져와 분석한 뒤 세션을 닫습니다. "
"에이전트의 MCP 질의는 세션이 열려 있는 동안 가져온 바이너리를 재사용합니다."

#: website/public/guides/native/index.html:491
msgctxt "page:guides/native/index.html"
msgid ""
"Read the pseudocode alongside instructions and references. When a result "
"leaves a call or value unresolved, use that location as the next question."
msgstr "의사 코드를 명령어, 참조와 함께 읽으세요. 확인되지 않은 호출이나 값이 있다면 그 위치를 다음 질문의 출발점으로 삼으세요."

#: website/public/guides/native/index.html:6
msgctxt "page:guides/native/index.html"
msgid "Native Binary Analysis — REA"
msgstr "네이티브 바이너리 분석 — REA"

#: website/public/guides/native/index.html:7
msgctxt "page:guides/native/index.html"
msgid ""
"Recover a native calculation with REA: inspect instructions, follow a "
"caller, read constants and check reconstructed C."
msgstr "REA로 네이티브 코드의 계산을 복구하세요. 명령어와 호출 함수를 추적하고 상수를 읽은 뒤 재구성한 C 코드를 검증합니다."

#: website/public/guides/native/index.html:209
msgctxt "page:guides/native/index.html"
msgid "On this page"
msgstr "이 페이지 목차"

#: website/public/guides/native/index.html:219
msgctxt "page:guides/native/index.html"
msgid "Native analysis"
msgstr "기계 코드 프로그램 분석"

#: website/public/guides/native/index.html:342
msgctxt "page:guides/native/index.html"
msgid "Copy example prompt"
msgstr "예제 프롬프트 복사"

#: website/public/guides/native/index.html:473
msgctxt "page:guides/native/index.html"
msgid "Copy function analysis"
msgstr "함수 분석 명령 복사"

#: website/public/guides/native/index.html:515
msgctxt "page:guides/native/index.html"
msgid "Back to top"
msgstr "맨 위로"

#: website/public/index.html:109
msgctxt "page:index.html"
msgid "Skip to content"
msgstr "본문으로 건너뛰기"

#: website/public/index.html:201 website/public/index.html:211
#: website/public/index.html:209
msgctxt "page:index.html"
msgid "On this page"
msgstr "이 페이지 목차"

#: website/public/index.html:202 website/public/index.html:250
msgctxt "page:index.html"
msgid "Set up REA"
msgstr "REA 설정"

#. {ph0}: <a href="#setup" aria-current="location">
#. {ph1}: </a>
#: website/public/index.html:213
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Set up REA{ph1}"
msgstr "{ph0}REA 설정{ph1}"

#. {ph0}: <a href="#dinosaur">
#. {ph1}: </a>
#: website/public/index.html:215
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Dinosaur game{ph1}"
msgstr "{ph0}공룡 게임{ph1}"

#. {ph0}: <a href="#calculator">
#. {ph1}: </a>
#: website/public/index.html:216
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Calculator{ph1}"
msgstr "{ph0}계산기{ph1}"

#. {ph0}: <a href="#try-rea">
#. {ph1}: </a>
#: website/public/index.html:218
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Try REA{ph1}"
msgstr "{ph0}REA 사용해 보기{ph1}"

#. {ph0}: <a href="#analyze">
#. {ph1}: </a>
#: website/public/index.html:219
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Go deeper{ph1}"
msgstr "{ph0}더 깊이 알아보기{ph1}"

#: website/public/index.html:228
msgctxt "page:index.html"
msgid "Reverse engineering, with your coding agent"
msgstr "코딩 에이전트와 함께하는 리버스 엔지니어링"

#. {ph0}: <br />
#: website/public/index.html:229
#, python-brace-format
msgctxt "page:index.html"
msgid "Find out how{ph0}software works."
msgstr "소프트웨어가{ph0}어떻게 작동하는지 알아보세요"

#: website/public/index.html:251
msgctxt "page:index.html"
msgid "Copy this into your coding agent:"
msgstr "이 프롬프트를 코딩 에이전트에 붙여 넣으세요:"

#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/index.html:254
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}코딩 에이전트"

#: website/public/index.html:259 website/public/index.html:283
#: website/public/index.html:519 website/public/index.html:600
#: website/public/index.html:824 website/public/index.html:1136
#: website/public/index.html:1164
msgctxt "page:index.html"
msgid "Copy"
msgstr "복사"

#: website/public/index.html:280
msgctxt "page:index.html"
msgid "Or run this in your terminal:"
msgstr "터미널에서 직접 실행할 수도 있습니다:"

#: website/public/index.html:292
msgctxt "page:index.html"
msgid "Approve the setup plan, then restart your agent."
msgstr "설정 변경 계획을 확인하고 승인한 뒤 에이전트를 다시 시작하세요."

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/index.html:368
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}01{ph1} Decode branches"
msgstr "{ph0}01{ph1} 분기 해석"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/index.html:376
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}02{ph1} Trace calls"
msgstr "{ph0}02{ph1} 호출 추적"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/index.html:384
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}03{ph1} Recover the rule"
msgstr "{ph0}03{ph1} 규칙 복구"

#. {ph0}: <span>
#. {ph1}: </span>
#. {ph2}: <span class="assembly-disclosure" aria-hidden="true" >
#. {ph3}: </span>
#: website/public/index.html:395
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Original x64 · selected instructions{ph1} {ph2}{ph3}"
msgstr "{ph0}원본 x64 · 선택한 명령어{ph1} {ph2}{ph3}"

#: website/public/index.html:437
msgctxt "page:index.html"
msgid "01 · Which branch?"
msgstr "01 · 어떤 분기인가요?"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/index.html:438
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"“{ph0}0x5b? 0x5c?{ph1} Two jumps to the same place. Which operators are "
"these?”"
msgstr "“{ph0}0x5b? 0x5c?{ph1} 두 점프가 같은 위치로 향합니다. 이들은 어떤 연산자일까요?”"

#: website/public/index.html:442
msgctxt "page:index.html"
msgid "Look up the command IDs, then label the branch."
msgstr "명령 ID를 찾아 분기가 뜻하는 연산을 표시합니다."

#: website/public/index.html:448
msgctxt "page:index.html"
msgid "Divide ÷"
msgstr "나누기 ÷"

#: website/public/index.html:452
msgctxt "page:index.html"
msgid "Multiply ×"
msgstr "곱하기 ×"

#: website/public/index.html:457
msgctxt "page:index.html"
msgid "02 · What do the calls do?"
msgstr "02 · 호출된 함수는 무엇을 하나요?"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/index.html:458
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"“100 is clear. The calls are just addresses. {ph0}Which one divides? Which "
"value goes in?{ph1}”"
msgstr ""
"“100은 분명합니다. 호출은 주소로만 표시되어 있습니다. {ph0}어느 함수가 나눗셈을 할까요? 어떤 값이 입력될까요?{ph1}”"

#: website/public/index.html:464
msgctxt "page:index.html"
msgid "Inspect the helpers and trace the stored values."
msgstr "보조 함수를 살펴보고 저장된 값을 추적합니다."

#: website/public/index.html:474
msgctxt "page:index.html"
msgid "Divide"
msgstr "나누기"

#: website/public/index.html:479
msgctxt "page:index.html"
msgid "03 · What is the rule?"
msgstr "03 · 규칙은 무엇입니까?"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/index.html:480
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"“This path multiplies by the other input. So {ph0}10% means 10% of 200{ph1} "
"after +.”"
msgstr "“이 경로는 다른 입력값을 곱하네. 그러니 + 다음의 {ph0}10%는 200의 10%를 뜻하는구나.{ph1}”"

#: website/public/index.html:484
msgctxt "page:index.html"
msgid "Name the operands and check both operator paths."
msgstr "피연산자에 이름을 붙이고 두 연산자의 경로를 모두 확인합니다."

#: website/public/index.html:500 website/public/index.html:427
msgctxt "page:index.html"
msgid "Illustrative expert reasoning"
msgstr "전문가의 추론 예시"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/index.html:503
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}You decode the instructions, follow the calls and reconstruct the "
"calculation.{ph1}"
msgstr "{ph0}직접 명령어를 해석하고 호출을 추적해 계산을 재구성합니다.{ph1}"

#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/index.html:514
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Example prompt · Calculator"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}예제 프롬프트 · 계산기"

#: website/public/index.html:536
msgctxt "page:index.html"
msgid "Example answer · based on the findings"
msgstr "분석 결과에 근거한 답변 예시"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/index.html:539
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"After +, the % button takes {ph0}a percentage of the first number.{ph1}"
msgstr "+ 다음에 %를 누르면 {ph0}첫 번째 수의 백분율을 구합니다.{ph1}"

#: website/public/index.html:552
msgctxt "page:index.html"
msgid "REA supplies"
msgstr "REA가 제공하는 정보"

#: website/public/index.html:553
msgctxt "page:index.html"
msgid "The handler’s instructions, decompiled code and calls."
msgstr "핸들러의 명령어, 디컴파일 코드, 호출 정보."

#: website/public/index.html:558
msgctxt "page:index.html"
msgid "Your agent explains"
msgstr "에이전트가 설명하는 내용"

#: website/public/index.html:559
msgctxt "page:index.html"
msgid "Which branch applies, what it calculates and how to rebuild it."
msgstr "어느 분기를 타는지, 무엇을 계산하며 어떻게 재현하는지."

#: website/public/index.html:583
msgctxt "page:index.html"
msgid "Example 01 · Chrome’s dinosaur game"
msgstr "예제 01 · Chrome 공룡 게임"

#: website/public/index.html:584
msgctxt "page:index.html"
msgid "Why does the dinosaur get faster?"
msgstr "공룡은 왜 점점 빨라질까요?"

#: website/public/index.html:663
msgctxt "page:index.html"
msgid "Play"
msgstr "시작"

#: website/public/index.html:666
msgctxt "page:index.html"
msgid "Jump ↑"
msgstr "점프 ↑"

#: website/public/index.html:667
msgctxt "page:index.html"
msgid "Restart"
msgstr "다시 시작"

#: website/public/index.html:670
msgctxt "page:index.html"
msgid "Speed"
msgstr "속도"

#: website/public/index.html:680
msgctxt "page:index.html"
msgid "Use the recovered acceleration rule"
msgstr "복구된 가속 규칙 사용"

#: website/public/index.html:684
msgctxt "page:index.html"
msgid "Original rule: start at 6, then increase toward 13."
msgstr "원래 규칙: 6에서 시작해 13을 향해 가속합니다."

#: website/public/index.html:687
msgctxt "page:index.html"
msgid "Move the slider to set your own speed. Space or Jump clears a cactus."
msgstr "슬라이더를 움직여 원하는 속도를 설정하세요. 스페이스 바나 점프 버튼을 누르면 선인장을 뛰어넘습니다."

#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="dino-analysis-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/index.html:609
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to inspect this dinosaur game. Why does it get "
"faster? Show the speed rule, then build a small version with an adjustable "
"speed.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}›{ph1}{ph2}REA로 이 공룡 게임을 분석해 줘. 왜 점점 빨라지는지 속도 규칙을 보여주고, 속도를 조절할 수 있는 작은"
" 버전을 만들어 줘.{ph3}{ph4}{ph5}"

#. {ph0}: <a href="https://wayou.github.io/t-rex-runner/" >
#. {ph1}: </a >
#: website/public/index.html:707
#, python-brace-format
msgctxt "page:index.html"
msgid "Inspected target: {ph0}wayou’s Chromium-derived browser edition{ph1}."
msgstr "분석 대상: {ph0}wayou의 Chromium 기반 브라우저 버전{ph1}."

#: website/public/index.html:698
msgctxt "page:index.html"
msgid "Open the speed lab →"
msgstr "속도 실험실 열기 →"

#: website/public/index.html:729
msgctxt "page:index.html"
msgid "What each part does"
msgstr "각 부분이 하는 일"

#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/index.html:731
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}01 · REA{ph1}{ph2}Read the running game’s script{ph3}{ph4}Return its "
"actual code and settings to the agent.{ph5}"
msgstr ""
"{ph0}01 · REA{ph1}{ph2}실행 중인 게임의 스크립트 읽기{ph3}{ph4}실제 코드와 설정을 에이전트에 "
"반환합니다.{ph5}"

#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/index.html:738
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}02 · Your agent{ph1}{ph2}Rebuild the rule, add a control{ph3}{ph4}Use "
"the recovered acceleration in a small game with a speed slider.{ph5}"
msgstr ""
"{ph0}02 · 코딩 에이전트{ph1}{ph2}규칙을 재현하고 조절 기능 추가하기{ph3}{ph4}복원한 가속 규칙을 속도 슬라이더가 "
"있는 작은 게임에 적용합니다.{ph5}"

#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/index.html:746
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}03 · You{ph1}{ph2}Change the speed and play{ph3}{ph4}Try the original "
"acceleration, then choose your own pace.{ph5}"
msgstr ""
"{ph0}03 · 사용자{ph1}{ph2}속도를 바꾸고 플레이하기{ph3}{ph4}원래의 가속을 시험한 뒤 원하는 속도를 "
"선택하세요.{ph5}"

#: website/public/index.html:704
msgctxt "page:index.html"
msgid "See the script, checks and how to try the analysis"
msgstr "스크립트, 검증, 직접 분석하는 방법 보기"

#. {ph0}: <code>index.js</code>
#: website/public/index.html:756
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"REA inspected the HTTP browser edition through a local debugging connection "
"and returned the loaded {ph0}, including its source and digest."
msgstr ""
"REA는 로컬 디버깅 연결을 통해 HTTP 브라우저 버전을 검사하고, 소스와 다이제스트를 포함한 로드된 {ph0}를 반환했습니다."

#: website/public/index.html:769
msgctxt "page:index.html"
msgid ""
"We called the original game’s update function in a controlled browser check,"
" with obstacles and automatic scheduling disabled. After 4,000 updates, "
"speed was 10.0; after 10,000, it was 13.0, rounded to one decimal."
msgstr ""
"장애물과 자동 스케줄링을 비활성화한 통제된 브라우저 검사에서 원래 게임의 업데이트 함수를 호출했습니다. 4,000번 업데이트한 뒤 속도는"
" 10.0이었고, 10,000번 업데이트한 뒤에는 13.0이었습니다. 두 값은 소수점 첫째 자리까지 반올림한 값입니다."

#. {ph0}: <a href="examples/dino-lab/">
#. {ph1}: </a>
#: website/public/index.html:775
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"The new mini-game keeps that speed rule. Its drawing, jumping and collision "
"code are a small teaching implementation. {ph0}Open the lab{ph1} to see the "
"new code and run the same speed check."
msgstr ""
"새 미니 게임은 이 속도 규칙을 유지합니다. 그리기, 점프, 충돌 판정은 교육용으로 간단히 구현했습니다. {ph0}실험실을 열어{ph1}"
" 새 코드를 보고 같은 속도 검사를 실행해 보세요."

#. {ph0}: <a href="guides/browser/#prepare">
#. {ph1}: </a>
#. {ph2}: <a href="https://wayou.github.io/t-rex-runner/" >
#. {ph3}: </a >
#: website/public/index.html:781
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"To inspect the target yourself, follow the {ph0}browser connection "
"steps{ph1} using {ph2}the dinosaur page{ph3}. Give your agent that page URL "
"and your local debugging endpoint, then copy the prompt above."
msgstr ""
"직접 분석하려면 {ph2}공룡 페이지{ph3}로 {ph0}브라우저 연결 절차{ph1}를 따르세요. 에이전트에게 페이지 URL과 로컬 "
"디버깅 엔드포인트를 알려준 뒤 위 프롬프트를 복사하세요."

#. {ph0}: <a href="https://github.com/wayou/t-rex-
#. runner/blob/5455bfa408ec6b707c7300ff194b7390733a766d/index.js#L565-L571" >
#. {ph1}: </a >
#. {ph2}: <a href="assets/licenses/dinosaur.txt" >
#. {ph3}: </a >
#: website/public/index.html:790
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}Inspected speed code{ph1} · {ph2}Chromium Authors · BSD license{ph3}"
msgstr "{ph0}분석한 속도 코드{ph1} · {ph2}Chromium Authors · BSD 라이선스{ph3}"

#: website/public/index.html:807
msgctxt "page:index.html"
msgid "Example 02 · Windows Calculator"
msgstr "예제 02 · Windows 계산기"

#: website/public/index.html:808
msgctxt "page:index.html"
msgid "Rebuild Calculator’s % button."
msgstr "계산기의 % 버튼을 재현해 봅니다"

#: website/public/index.html:913
msgctxt "page:index.html"
msgid "Reset"
msgstr "초기화"

#: website/public/index.html:921
msgctxt "page:index.html"
msgid "10% of 200 = 20. Then 200 + 20 = 220."
msgstr "200의 10% = 20. 따라서 200 + 20 = 220."

#: website/public/index.html:924
msgctxt "page:index.html"
msgid "Interactive illustration of the inspected percentage rule."
msgstr "분석에서 확인한 백분율 규칙을 직접 조작해 보는 예제입니다."

#. {ph0}: <code>previous = 200</code>
#. {ph1}: <code>current = 10</code>
#: website/public/index.html:932
#, python-brace-format
msgctxt "page:index.html"
msgid "For this example, {ph0} and {ph1}."
msgstr "이 예제에서는 {ph0}이며 {ph1}입니다."

#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="calculator-analysis-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/index.html:833
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to inspect Windows Calculator’s % button. Recover "
"the rules after + and ×, then build a small calculator that uses "
"both.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}›{ph1}{ph2}REA로 Windows 계산기의 % 버튼을 분석하세요. +와 × 연산 뒤에 적용되는 규칙을 복구하고, 두 "
"규칙을 모두 사용하는 작은 계산기를 만드세요.{ph3}{ph4}{ph5}"

#: website/public/index.html:849
msgctxt "page:index.html"
msgid "With +"
msgstr "+ 다음에는"

#. {ph0}: <span>
#. {ph1}: </span >
#. {ph2}: <code>10% of 200 = 20 → 200 + 20 = 220</code>
#: website/public/index.html:850
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Take 10% of the first number.{ph1}{ph2}"
msgstr "{ph0}첫 번째 수의 10%를 구합니다.{ph1}{ph2}"

#: website/public/index.html:856
msgctxt "page:index.html"
msgid "With ×"
msgstr "× 다음에는"

#. {ph0}: <span>
#. {ph1}: </span>
#. {ph2}: <code>200 × 0.1 = 20</code>
#: website/public/index.html:857
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Turn 10% into 0.1.{ph1}{ph2}"
msgstr "{ph0}10%를 0.1로 바꿉니다.{ph1}{ph2}"

#: website/public/index.html:947
msgctxt "page:index.html"
msgid "From the installed app to a working % button"
msgstr "설치된 앱에서 작동하는 % 버튼까지"

#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: <code>100</code>
#. {ph6}: </span >
#: website/public/index.html:960
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}02 · REA reads the library{ph1}{ph2}Return the % handler’s "
"code{ph3}{ph4}The function checks the operator and uses the constant "
"{ph5}.{ph6}"
msgstr ""
"{ph0}02 · REA가 라이브러리를 읽음{ph1}{ph2}% 핸들러의 코드를 반환{ph3}{ph4}함수는 연산자를 확인하고 상수 "
"{ph5}를 사용합니다.{ph6}"

#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/index.html:968
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}03 · Your agent interprets it{ph1}{ph2}Explain and reproduce the "
"rules{ph3}{ph4}Crosscheck the branch with Microsoft’s source, then try + and"
" × above.{ph5}"
msgstr ""
"{ph0}03 · 코딩 에이전트의 해석{ph1}{ph2}규칙 설명과 재현{ph3}{ph4}분기를 Microsoft 소스 코드와 대조한 "
"뒤, 위에서 +와 ×를 시험해 보세요.{ph5}"

#: website/public/index.html:931
msgctxt "page:index.html"
msgid "See the real code and how the answer was checked"
msgstr "실제 코드 및 답변 확인 방법 보기"

#: website/public/index.html:1003
msgctxt "page:index.html"
msgid ""
"Inspected with REA 4.1.0: Windows Calculator 11.2508.4.0, x64. The readable "
"summary uses names from Microsoft’s public source to explain the recovered "
"branch."
msgstr ""
"REA 4.1.0으로 분석한 대상: Windows 계산기 11.2508.4.0, x64. 읽기 쉬운 요약에서는 Microsoft 공개 "
"소스의 이름을 사용해 복구한 분기를 설명합니다."

#. {ph0}: <a
#. href="https://github.com/microsoft/calculator/blob/d125246a4e19842ce1332e6c7839cf0e110027d8/src/CalcManager/CEngine/scifunc.cpp#L98-L111"
#. >
#. {ph1}: </a >
#. {ph2}: <a
#. href="https://github.com/microsoft/calculator/blob/d125246a4e19842ce1332e6c7839cf0e110027d8/src/CalculatorUnitTests/CalculatorManagerTest.cpp#L350-L370"
#. >
#. {ph3}: </a >
#. {ph4}: <a href="guides/native/">
#. {ph5}: </a>
#: website/public/index.html:1008
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}Percentage implementation{ph1} · {ph2}Microsoft’s test cases{ph3} · "
"{ph4}Native setup guide{ph5}"
msgstr ""
"{ph0}백분율 구현{ph1} · {ph2}Microsoft 테스트 사례{ph3} · {ph4}네이티브 분석 설정 가이드{ph5}"

#: website/public/index.html:1077
msgctxt "page:index.html"
msgid "Your first investigation"
msgstr "첫 번째 조사"

#: website/public/index.html:1078
msgctxt "page:index.html"
msgid "Try REA on a small app."
msgstr "작은 앱으로 REA를 써보세요"

#: website/public/index.html:1079
msgctxt "page:index.html"
msgid ""
"Download our Notes example, trace its CSV export, and check one changed "
"input."
msgstr "Notes 예제를 내려받아 CSV 내보내기를 추적하고, 입력 하나를 바꿔 검증해 보세요."

#: website/public/index.html:1084
msgctxt "page:index.html"
msgid "Try the guided example"
msgstr "안내에 따라 예제 실행하기"

#: website/public/index.html:1101
msgctxt "page:index.html"
msgid "Native binaries"
msgstr "기계 코드 프로그램"

#: website/public/index.html:1102
msgctxt "page:index.html"
msgid ""
"Inspect functions, strings, references and call relationships in executables"
" and libraries."
msgstr "실행 파일과 라이브러리의 함수, 문자열, 참조, 호출 관계를 살펴봅니다."

#: website/public/index.html:1106
msgctxt "page:index.html"
msgid "Native analysis guide"
msgstr "기계 코드 프로그램 분석 가이드"

#: website/public/index.html:1109
msgctxt "page:index.html"
msgid "JavaScript & Electron"
msgstr "JavaScript & Electron"

#: website/public/index.html:1110
msgctxt "page:index.html"
msgid ""
"Map modules, routes, IPC and native dependencies from an application folder "
"or ASAR archive."
msgstr "애플리케이션 폴더나 ASAR 아카이브에서 모듈, 라우트, IPC 및 네이티브 종속성의 구조를 파악합니다."

#: website/public/index.html:1114
msgctxt "page:index.html"
msgid "Application workflows"
msgstr "애플리케이션 워크플로"

#: website/public/index.html:1117
msgctxt "page:index.html"
msgid "Browser & runtime activity"
msgstr "브라우저 및 런타임 활동"

#: website/public/index.html:1118
msgctxt "page:index.html"
msgid ""
"Capture selected browser or process activity, then compare the results "
"across runs."
msgstr "선택한 브라우저나 프로세스의 활동을 캡처하고 실행별 결과를 비교합니다."

#: website/public/index.html:1122
msgctxt "page:index.html"
msgid "Browser observation guide"
msgstr "브라우저 관찰 가이드"

#: website/public/index.html:1193
msgctxt "page:index.html"
msgid "Any questions?"
msgstr "궁금한 점이 있나요?"

#: website/public/index.html:6
msgctxt "page:index.html"
msgid "REA — Reverse Engineering for Your Coding Agent"
msgstr "REA — 코딩 에이전트를 위한 리버스 엔지니어링"

#: website/public/index.html:7
msgctxt "page:index.html"
msgid ""
"Reverse engineer apps, binaries and browser behavior with your coding agent."
" Follow clear guides and try interactive examples with REA."
msgstr ""
"코딩 에이전트와 함께 앱, 바이너리, 브라우저 동작을 분석하세요. REA 가이드를 따라 직접 조작할 수 있는 예제를 실행해 보세요."

#: website/public/index.html:259
msgctxt "page:index.html"
msgid "Copy REA installation prompt"
msgstr "REA 설치 프롬프트 복사"

#: website/public/index.html:283
msgctxt "page:index.html"
msgid "Copy setup command"
msgstr "설치 명령 복사"

#: website/public/index.html:363
msgctxt "page:index.html"
msgid "Follow the manual Calculator analysis"
msgstr "계산기 수동 분석 따라가기"

#: website/public/index.html:519
msgctxt "page:index.html"
msgid "Copy Calculator percentage question"
msgstr "계산기 백분율 질문 복사"

#: website/public/index.html:653
msgctxt "page:index.html"
msgid ""
"Dinosaur mini-game. Use the Jump button or press Space while the game is "
"focused."
msgstr "공룡 미니 게임. 게임에 포커스가 있을 때 점프 버튼을 사용하거나 Space 키를 누르세요."

#: website/public/index.html:600
msgctxt "page:index.html"
msgid "Copy dinosaur analysis prompt"
msgstr "공룡 분석 프롬프트 복사"

#: website/public/index.html:870
msgctxt "page:index.html"
msgid "Choose the calculation"
msgstr "계산 선택"

#: website/public/index.html:824
msgctxt "page:index.html"
msgid "Copy Calculator analysis prompt"
msgstr "계산기 분석 프롬프트 복사"

#: website/public/index.html:1228
msgctxt "page:index.html"
msgid "Back to top"
msgstr "맨 위로"

#: website/public/showcase/aegis/index.html:108
msgctxt "page:showcase/aegis/index.html"
msgid "Skip to content"
msgstr "본문으로 건너뛰기"

#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/showcase/aegis/index.html:200
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Home{ph1} / {ph2}Showcases{ph3} / Android"
msgstr "{ph0}홈{ph1} / {ph2}사례 소개{ph3} / Android"

#: website/public/showcase/aegis/index.html:203
msgctxt "page:showcase/aegis/index.html"
msgid "Case study · Aegis Authenticator"
msgstr "사례 연구 · Aegis Authenticator"

#. {ph0}: <br />
#: website/public/showcase/aegis/index.html:204
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "How does an authenticator{ph0}generate a login code?"
msgstr "인증 앱은 로그인 코드를{ph0}어떻게 만들까요?"

#: website/public/showcase/aegis/index.html:205
msgctxt "page:showcase/aegis/index.html"
msgid ""
"A six-digit code changes every 30 seconds. Use REA to find the calculation "
"in an Android APK, then rebuild it with a clock you can control."
msgstr ""
"6자리 코드는 30초마다 바뀝니다. REA로 Android APK에서 계산을 찾고, 시간을 조절할 수 있는 시계로 재현해 보세요."

#: website/public/showcase/aegis/index.html:210
msgctxt "page:showcase/aegis/index.html"
msgid "Aegis 3.4.3 · Android · Official release APK · 6.9 MB"
msgstr "Aegis 3.4.3 · Android · 공식 릴리스 APK · 6.9 MB"

#: website/public/showcase/aegis/index.html:213
msgctxt "page:showcase/aegis/index.html"
msgid "View Aegis on GitHub"
msgstr "GitHub에서 Aegis 보기"

#: website/public/showcase/aegis/index.html:219
msgctxt "page:showcase/aegis/index.html"
msgid "From an APK to a code you can reproduce"
msgstr "APK에서 재현 가능한 코드까지"

#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node" >
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/aegis/index.html:221
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}01 · Locate the feature{ph1}{ph2}3,077 classes → generating "
"methods{ph3}{ph4}REA searches the package and traces the code used by the "
"display and copy actions.{ph5}"
msgstr ""
"{ph0}01 · 기능 찾기{ph1}{ph2}3,077개 클래스 → 코드 생성 메서드{ph3}{ph4}REA는 패키지를 검색하고 표시 및"
" 복사 동작에 쓰이는 코드를 추적합니다.{ph5}"

#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/aegis/index.html:230
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}02 · Read the calculation{ph1}{ph2}Time + account key → six "
"digits{ph3}{ph4}REA returns the methods and defaults. The agent explains how"
" they fit together.{ph5}"
msgstr ""
"{ph0}02 · 계산 읽기{ph1}{ph2}시간 + 계정 키 → 여섯 자리 숫자{ph3}{ph4}REA는 메서드와 기본값을 반환합니다."
" 에이전트는 이들이 어떻게 함께 작동하는지 설명합니다.{ph5}"

#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/aegis/index.html:238
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}03 · Rebuild and check{ph1}{ph2}Change the clock. Watch the "
"code.{ph3}{ph4}A new browser demo reproduces the rule and checks it against "
"public reference cases.{ph5}"
msgstr ""
"{ph0}03 · 재구축 및 확인{ph1}{ph2}시계를 변경하십시오. 코드를 보세요.{ph3}{ph4}새로운 브라우저 데모는 규칙을 "
"재현하고 공개 참조 사례에 대해 확인합니다.{ph5}"

#: website/public/showcase/aegis/index.html:251
msgctxt "page:showcase/aegis/index.html"
msgid "In this case study"
msgstr "사례 목차"

#. {ph0}: <a href="#ask">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:253
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Ask your agent{ph1}"
msgstr "{ph0}에이전트에게 질문하기{ph1}"

#. {ph0}: <a href="#demo">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:254
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Try the code generator{ph1}"
msgstr "{ph0}코드 생성기 사용해보기{ph1}"

#. {ph0}: <a href="#find">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:255
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Find the code with REA{ph1}"
msgstr "{ph0}REA로 코드 찾기{ph1}"

#. {ph0}: <a href="#calculation">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:256
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Read the calculation{ph1}"
msgstr "{ph0}계산 읽기{ph1}"

#. {ph0}: <a href="#verify">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:257
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Check the reconstruction{ph1}"
msgstr "{ph0}재구성 결과 검증{ph1}"

#. {ph0}: <a href="#try">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:258
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Inspect the APK yourself{ph1}"
msgstr "{ph0}APK 직접 살펴보기{ph1}"

#: website/public/showcase/aegis/index.html:263
msgctxt "page:showcase/aegis/index.html"
msgid "Ask your agent"
msgstr "에이전트에게 질문하기"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/aegis/index.html:264
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The app shows a changing login code. We want to find {ph0}what makes it "
"change{ph1} and reproduce that behavior."
msgstr "앱에 표시되는 로그인 코드는 계속 바뀝니다. {ph0}무엇 때문에 바뀌는지{ph1} 찾아 그 동작을 재현하려고 합니다."

#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/showcase/aegis/index.html:270
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}코딩 에이전트"

#: website/public/showcase/aegis/index.html:274
#: website/public/showcase/aegis/index.html:737
msgctxt "page:showcase/aegis/index.html"
msgid "Copy"
msgstr "복사"

# Reviewed for concrete meaning, software terminology and readable sentences.
#. {ph0}: <a href="#try">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:294
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"An example prompt for the downloaded APK, with REA's Android analysis "
"configured. {ph0}Get the APK and analysis setup ↓{ph1}"
msgstr ""
"다운로드한 APK를 분석하는 예시 프롬프트입니다. 먼저 REA의 Android 분석 환경을 설정하세요. {ph0}APK와 분석 설정 받기"
" ↓{ph1}"

#: website/public/showcase/aegis/index.html:302
msgctxt "page:showcase/aegis/index.html"
msgid "Try the code generator"
msgstr "코드 생성기 사용해보기"

# Reviewed for concrete meaning, software terminology and readable sentences.
#. {ph0}: <mark class="prose-highlight">
#. {ph1}: </mark>
#: website/public/showcase/aegis/index.html:303
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The app groups time into {ph0}30-second blocks.{ph1} It combines the block "
"number with the account key to generate a code. The same key and block "
"produce the same code."
msgstr ""
"앱은 시간을 {ph0}30초 단위로 나눕니다.{ph1} 시간 구간 번호와 계정 키를 결합해 코드를 생성합니다. 같은 키와 같은 시간 "
"구간이면 같은 코드가 나옵니다."

#: website/public/showcase/aegis/index.html:310
msgctxt "page:showcase/aegis/index.html"
msgid "Move the clock across 60 seconds"
msgstr "60초 구간에서 시간 바꾸기"

#: website/public/showcase/aegis/index.html:313
msgctxt "page:showcase/aegis/index.html"
msgid "Time"
msgstr "시간"

#: website/public/showcase/aegis/index.html:315
msgctxt "page:showcase/aegis/index.html"
msgid "seconds"
msgstr "초"

#: website/public/showcase/aegis/index.html:316
msgctxt "page:showcase/aegis/index.html"
msgid "Our adjustable example clock"
msgstr "시간을 조절할 수 있는 예제 시계"

#: website/public/showcase/aegis/index.html:319
msgctxt "page:showcase/aegis/index.html"
msgid "30-second block"
msgstr "30초 구간"

#: website/public/showcase/aegis/index.html:321
#: website/public/showcase/aegis/index.html:648
msgctxt "page:showcase/aegis/index.html"
msgid "Block"
msgstr "구간"

#. {ph0}: <code data-aegis-division>floor(59 / 30)</code>
#. {ph1}: <br />
#. {ph2}: <span data-aegis-window >
#. {ph3}: </span >
#: website/public/showcase/aegis/index.html:322
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}{ph1}{ph2}30–59 seconds{ph3}"
msgstr "{ph0}{ph1}{ph2}30~59초{ph3}"

#: website/public/showcase/aegis/index.html:330
msgctxt "page:showcase/aegis/index.html"
msgid "Generated code"
msgstr "생성된 코드"

#: website/public/showcase/aegis/index.html:338
msgctxt "page:showcase/aegis/index.html"
msgid "Account key + block → six digits"
msgstr "계정 키 + 시간 구간 → 여섯 자리 숫자"

#: website/public/showcase/aegis/index.html:344
msgctxt "page:showcase/aegis/index.html"
msgid "Example time, in seconds"
msgstr "예제 시간(초)"

#: website/public/showcase/aegis/index.html:359
#: website/public/showcase/aegis/index.html:659
msgctxt "page:showcase/aegis/index.html"
msgid "59 seconds"
msgstr "59초"

#: website/public/showcase/aegis/index.html:366
#: website/public/showcase/aegis/index.html:664
msgctxt "page:showcase/aegis/index.html"
msgid "60 seconds"
msgstr "60초"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <strong>
#. {ph3}: </strong>
#: website/public/showcase/aegis/index.html:375
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"At 59 seconds: {ph0}287082.{ph1} At 60 seconds: {ph2}359152.{ph3} Moving "
"within one block leaves the code unchanged."
msgstr ""
"59초: {ph0}287082.{ph1} 60초: {ph2}359152.{ph3} 같은 구간 안에서는 시간을 바꿔도 코드가 유지됩니다."

#. {ph0}: <a href="https://www.rfc-editor.org/rfc/rfc6238.html#appendix-B" >
#. {ph1}: </a >
#: website/public/showcase/aegis/index.html:382
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The key is fixed, public {ph0}RFC 6238 test data{ph1}. The demo implements "
"the calculation recovered from the APK."
msgstr "키는 공개된 {ph0}RFC 6238 테스트 데이터{ph1}로 고정돼 있습니다. 데모는 APK에서 복구한 계산을 구현합니다."

#: website/public/showcase/aegis/index.html:389
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The diagram shows the result at 59 seconds. Enable JavaScript to change the "
"clock."
msgstr "그림은 59초일 때의 결과입니다. 시간을 바꾸려면 JavaScript를 켜세요."

#: website/public/showcase/aegis/index.html:398
msgctxt "page:showcase/aegis/index.html"
msgid "Find the code with REA"
msgstr "REA로 코드 찾기"

#: website/public/showcase/aegis/index.html:401
msgctxt "page:showcase/aegis/index.html"
msgid "Narrow the APK to three classes"
msgstr "APK에서 클래스 3개로 좁히기"

#. {ph0}: <code>TotpInfo</code>
#: website/public/showcase/aegis/index.html:426
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0} is the calculation candidate; the other two concern the progress bar "
"and imported accounts. TOTP means a time-based one-time password."
msgstr ""
"{ph0}은 계산 코드의 후보이며, 나머지 둘은 진행률 표시줄과 가져온 계정에 관련됩니다. TOTP는 시간 기반 일회용 비밀번호입니다."

#: website/public/showcase/aegis/index.html:433
msgctxt "page:showcase/aegis/index.html"
msgid "Connect the generator to the app's display"
msgstr "코드 생성기와 앱 화면 연결"

#. {ph0}: <code>EntryHolder.getOtp</code>
#. {ph1}: <code>TotpInfo.getOtp(timestamp)</code>
#: website/public/showcase/aegis/index.html:461
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"REA identifies the timestamp overload and finds the base method's callers. "
"Inspecting {ph0} then shows the display calling {ph1}."
msgstr ""
"REA가 타임스탬프 오버로드를 식별하고 기본 메서드의 호출자를 찾습니다. 이어서 {ph0}을 살펴보면 화면에서 {ph1}을 호출하는 것을"
" 확인할 수 있습니다."

#. {ph0}: <code>com.beemdevelopment.aegis</code>
#: website/public/showcase/aegis/index.html:469
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"Requests show a shortened input path. Result class names omit the common "
"{ph0} prefix."
msgstr "요청의 입력 경로는 줄여 표시했습니다. 결과의 클래스 이름에서는 공통 접두사 {ph0}을 생략했습니다."

#: website/public/showcase/aegis/index.html:476
msgctxt "page:showcase/aegis/index.html"
msgid "Read the calculation"
msgstr "계산 읽기"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/showcase/aegis/index.html:477
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"REA returns {ph0}the clock conversion, default settings and generating "
"methods.{ph1} The constructors set a 30-second interval and six digits; the "
"timestamp method turns seconds into a block number."
msgstr ""
"REA는 {ph0}시간 변환, 기본 설정, 생성 메서드를 반환합니다.{ph1} 생성자는 간격을 30초, 자릿수를 6으로 정합니다. "
"타임스탬프 메서드는 초를 시간 구간 번호로 바꿉니다."

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/aegis/index.html:492
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}01{ph1} Time block"
msgstr "{ph0}01{ph1} 시간 구간"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/aegis/index.html:500
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}02{ph1} Key + block"
msgstr "{ph0}02{ph1} 키 + 구간"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/aegis/index.html:508
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}03{ph1} Six digits"
msgstr "{ph0}03{ph1} 여섯 자리"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/aegis/index.html:567
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}Time chooses the block.{ph1} Seconds 30 through 59 all give block 1. At"
" 60 seconds, the block becomes 2."
msgstr "{ph0}시간으로 구간을 정합니다.{ph1} 30~59초는 모두 구간 1이며, 60초가 되면 구간 2로 바뀝니다."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/aegis/index.html:573
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}The key matters too.{ph1} The generator combines the account key with "
"the block. An account with a different key can show a different code at the "
"same time."
msgstr ""
"{ph0}계정 키도 중요합니다.{ph1} 코드 생성기는 계정 키와 시간 구간을 조합합니다. 키가 다른 계정에서는 같은 시간에도 다른 "
"코드가 나올 수 있습니다."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/aegis/index.html:580
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}Keep six digits.{ph1} The remainder after division by 1,000,000 is "
"padded with zeroes when needed, so a code can begin with 0."
msgstr ""
"{ph0}6자리를 유지합니다.{ph1} 1,000,000으로 나눈 나머지의 앞자리를 필요에 따라 0으로 채우므로, 코드는 0으로 시작할 "
"수도 있습니다."

#. {ph0}: <a
#. href="https://github.com/beemdevelopment/Aegis/blob/d6f4e5925a97e4e91593f1542085eae03432a759/LICENSE"
#. >
#. {ph1}: </a >
#: website/public/showcase/aegis/index.html:587
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"Excerpts from several inspected methods, with line wrapping for display. The"
" right panel is an explanatory summary. {ph0}Aegis code is GPL-3.0.{ph1}"
msgstr ""
"분석한 여러 메서드에서 발췌한 코드이며, 보기 편하도록 줄바꿈을 넣었습니다. 오른쪽 패널은 동작을 설명한 요약입니다. {ph0}Aegis"
" 코드는 GPL-3.0 라이선스를 따릅니다.{ph1}"

#: website/public/showcase/aegis/index.html:596
msgctxt "page:showcase/aegis/index.html"
msgid "Inside the generator"
msgstr "코드 생성기 내부"

#. {ph0}: <code>generateOTP</code>
#. {ph1}: <code>kotlin.ExceptionsKt</code>
#. {ph2}: <code>TotpInfo</code>
#. {ph3}: <code>HOTP</code>
#: website/public/showcase/aegis/index.html:597
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The released APK puts {ph0} in {ph1}. REA follows the call from {ph2} and "
"returns this body; the original source calls the helper {ph3}."
msgstr ""
"배포된 APK에서는 {ph0}가 {ph1}에 들어 있습니다. REA는 {ph2}에서 이어지는 호출을 따라가 이 메서드 본문을 반환합니다."
" 원본 소스에서 이 도우미의 이름은 {ph3}입니다."

#: website/public/showcase/aegis/index.html:619
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The last hash byte selects a position. Four bytes at that position provide a"
" positive 31-bit number; formatting reduces it to the requested number of "
"digits. The constructor's last argument selects the code-formatting branch "
"introduced by compilation."
msgstr ""
"해시의 마지막 바이트로 위치를 고릅니다. 그 위치의 4바이트로 양의 31비트 수를 얻고, 요청한 자릿수로 줄여 표시합니다. 생성자의 "
"마지막 인수는 컴파일 과정에서 생긴 코드 서식 분기를 선택합니다."

#. {ph0}: <a
#. href="https://github.com/beemdevelopment/Aegis/blob/d6f4e5925a97e4e91593f1542085eae03432a759/app/src/main/java/com/beemdevelopment/aegis/crypto/otp/HOTP.java"
#. >
#. {ph1}: </a >
#: website/public/showcase/aegis/index.html:626
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Compare with the matching release source{ph1}."
msgstr "{ph0}일치하는 릴리스 소스와 비교{ph1}."

#: website/public/showcase/aegis/index.html:636
msgctxt "page:showcase/aegis/index.html"
msgid "Check the reconstruction"
msgstr "재구성 결과 검증"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/aegis/index.html:637
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"We assembled the selected REA-returned Java methods in a small test program."
" Their output matched an independent reconstruction on {ph0}133 test "
"cases{ph1}, including time-block boundaries and codes beginning with zero."
msgstr ""
"REA가 반환한 Java 메서드 중 필요한 것들을 작은 테스트 프로그램으로 묶었습니다. 시간 구간의 경계와 0으로 시작하는 코드를 포함한"
" {ph0}테스트 133개{ph1}에서 출력이 독립적으로 재구현한 프로그램과 일치했습니다."

#: website/public/showcase/aegis/index.html:647
msgctxt "page:showcase/aegis/index.html"
msgid "Example time"
msgstr "예제 시간"

#: website/public/showcase/aegis/index.html:649
msgctxt "page:showcase/aegis/index.html"
msgid "Six-digit code"
msgstr "6자리 코드"

#: website/public/showcase/aegis/index.html:654
msgctxt "page:showcase/aegis/index.html"
msgid "30 seconds"
msgstr "30초"

#: website/public/showcase/aegis/index.html:669
msgctxt "page:showcase/aegis/index.html"
msgid "1,111,111,109 seconds"
msgstr "1,111,111,109초"

#. {ph0}: <a href="https://www.rfc-editor.org/rfc/rfc6238.html#appendix-B" >
#. {ph1}: </a >
#: website/public/showcase/aegis/index.html:676
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The generator also matches the six published SHA-1 reference cases in "
"{ph0}RFC 6238{ph1}. Check the browser implementation against them:"
msgstr ""
"코드 생성기는 {ph0}RFC 6238{ph1}에 공개된 SHA-1 기준 사례 6개와도 일치합니다. 브라우저 구현도 이 사례로 확인해 "
"보세요:"

#: website/public/showcase/aegis/index.html:684
msgctxt "page:showcase/aegis/index.html"
msgid "Run reference checks"
msgstr "기준 사례 검증 실행"

#: website/public/showcase/aegis/index.html:691
msgctxt "page:showcase/aegis/index.html"
msgid "Read the demo's calculation"
msgstr "데모 계산 읽기"

#: website/public/showcase/aegis/index.html:695
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The reference cases use eight digits. The check also verifies their six-"
"digit results."
msgstr "기준 사례는 8자리를 사용합니다. 검사에서는 이에 대응하는 6자리 결과도 검증합니다."

#: website/public/showcase/aegis/index.html:704
msgctxt "page:showcase/aegis/index.html"
msgid ""
"Verification runs extracted Java methods and the new demo. The Android APK "
"was inspected statically."
msgstr "검증할 때는 추출한 Java 메서드와 새 데모를 실행합니다. Android APK는 정적으로 분석했습니다."

#: website/public/showcase/aegis/index.html:711
msgctxt "page:showcase/aegis/index.html"
msgid "Inspect the APK yourself"
msgstr "APK 직접 살펴보기"

#. {ph0}: <a href="../../get-started/">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:712
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}Set up REA{ph1} on macOS or Linux, then download these two files into "
"the same folder. On Windows, use a Linux environment such as WSL."
msgstr ""
"macOS나 Linux에서 {ph0}REA를 설정{ph1}한 뒤 아래 두 파일을 같은 폴더에 내려받으세요. Windows에서는 WSL "
"같은 Linux 환경을 사용하세요."

#. {ph0}: <code>JAVA_HOME</code>
#. {ph1}: <code>PATH</code>
#: website/public/showcase/aegis/index.html:717
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"Android analysis needs a full JDK 17 or later. Select it with {ph0} or "
"{ph1}. This case used JDK 21."
msgstr ""
"Android 분석에는 전체 JDK 17 이상이 필요합니다. {ph0}이나 {ph1}로 사용할 JDK를 지정하세요. 이 사례에서는 JDK"
" 21을 사용했습니다."

#: website/public/showcase/aegis/index.html:733
msgctxt "page:showcase/aegis/index.html"
msgid "Point REA at the provider file and inspect the APK:"
msgstr "REA가 사용할 분석 도구 파일의 경로를 지정한 뒤 APK를 살펴보세요:"

#: website/public/showcase/aegis/index.html:736
msgctxt "page:showcase/aegis/index.html"
msgid "macOS / Linux"
msgstr "macOS / Linux"

#. {ph0}: <code>REA_JADX_MCP_JAR</code>
#: website/public/showcase/aegis/index.html:750
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"Your agent can continue through REA's CLI using the prompt above. For MCP, "
"add {ph0} to the REA server's environment and reconnect it."
msgstr ""
"위 프롬프트를 사용하면 에이전트가 REA의 CLI로 분석을 이어갈 수 있습니다. MCP를 사용하려면 REA 서버의 환경에 {ph0}를 "
"추가한 뒤 다시 연결하세요."

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/showcase/aegis/index.html:755
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"A next question: {ph0}what happens when an account uses eight digits or a "
"different time interval?{ph1}"
msgstr "다음 질문: {ph0}계정이 8자리 코드나 다른 시간 간격을 사용하면 어떻게 될까요?{ph1}"

#: website/public/showcase/aegis/index.html:765
msgctxt "page:showcase/aegis/index.html"
msgid "Sources"
msgstr "출처"

#. {ph0}: <a
#. href="https://github.com/beemdevelopment/Aegis/releases/tag/v3.4.3" >
#. {ph1}: </a >
#. {ph2}: <a
#. href="https://github.com/beemdevelopment/Aegis/tree/d6f4e5925a97e4e91593f1542085eae03432a759"
#. >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/beemdevelopment/Aegis/blob/d6f4e5925a97e4e91593f1542085eae03432a759/LICENSE"
#. >
#. {ph5}: </a >
#: website/public/showcase/aegis/index.html:767
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}Official Aegis 3.4.3 release{ph1} · {ph2}Matching source commit{ph3} · "
"{ph4}GPL-3.0 license{ph5}"
msgstr ""
"{ph0}공식 Aegis 3.4.3 릴리스{ph1} · {ph2}해당 릴리스의 소스 커밋{ph3} · {ph4}GPL-3.0 "
"라이선스{ph5}"

#. {ph0}: <a href="https://www.rfc-editor.org/rfc/rfc6238.html#appendix-B" >
#. {ph1}: </a >
#. {ph2}: <a href="test-vectors.json">
#. {ph3}: </a>
#: website/public/showcase/aegis/index.html:783
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}RFC 6238 reference cases{ph1} · {ph2}Demo test data{ph3}"
msgstr "{ph0}RFC 6238 기준 사례{ph1} · {ph2}데모 테스트 데이터{ph3}"

#: website/public/showcase/aegis/index.html:790
msgctxt "page:showcase/aegis/index.html"
msgid ""
"Inspected with REA 6.1.0 on 9 October 2026. Decompiled excerpts are credited"
" to Aegis; the diagram, readable summary and browser reconstruction are new "
"teaching material."
msgstr ""
"2026년 10월 9일 REA 6.1.0으로 분석했습니다. 디컴파일 발췌문의 출처는 Aegis이며, 그림과 요약, 브라우저 재구현은 새로"
" 만든 교육 자료입니다."

#: website/public/showcase/aegis/index.html:6
msgctxt "page:showcase/aegis/index.html"
msgid "Aegis APK Reverse Engineering: Login Codes — REA"
msgstr "Aegis APK 리버스 엔지니어링: 로그인 코드 — REA"

#: website/public/showcase/aegis/index.html:7
msgctxt "page:showcase/aegis/index.html"
msgid ""
"Inspect the Aegis Android APK with REA, recover its six-digit login-code "
"calculation and try a reconstruction with an adjustable clock."
msgstr ""
"REA로 Aegis Android APK를 분석해 6자리 로그인 코드의 계산을 복구하고, 시간을 조절할 수 있는 재구현을 실행해 보세요."

#: website/public/showcase/aegis/index.html:250
msgctxt "page:showcase/aegis/index.html"
msgid "On this page"
msgstr "이 페이지 목차"

#: website/public/showcase/aegis/index.html:261
msgctxt "page:showcase/aegis/index.html"
msgid "Aegis APK case study"
msgstr "Aegis APK 사례 연구"

#: website/public/showcase/aegis/index.html:274
msgctxt "page:showcase/aegis/index.html"
msgid "Copy Aegis example prompt"
msgstr "Aegis 예제 프롬프트 복사"

#: website/public/showcase/aegis/index.html:487
msgctxt "page:showcase/aegis/index.html"
msgid "Follow the login-code calculation"
msgstr "로그인 코드 계산 따라가기"

#: website/public/showcase/aegis/index.html:737
msgctxt "page:showcase/aegis/index.html"
msgid "Copy APK inspection command"
msgstr "APK 분석 명령 복사"

#: website/public/showcase/aegis/index.html:814
msgctxt "page:showcase/aegis/index.html"
msgid "Back to top"
msgstr "맨 위로"

#: website/public/showcase/ctf/index.html:107
msgctxt "page:showcase/ctf/index.html"
msgid "Skip to content"
msgstr "본문으로 건너뛰기"

#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/showcase/ctf/index.html:199
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Home{ph1} / {ph2}Showcases{ph3} / CTF"
msgstr "{ph0}홈{ph1} / {ph2}사례 소개{ph3} / CTF"

#: website/public/showcase/ctf/index.html:202
msgctxt "page:showcase/ctf/index.html"
msgid "Case study · DownUnderCTF 2023"
msgstr "사례 연구 · DownUnderCTF 2023"

#. {ph0}: <br />
#: website/public/showcase/ctf/index.html:203
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "Find the flag in{ph0}a CTF binary."
msgstr "CTF 바이너리에서{ph0}플래그를 찾으세요"

#. {ph0}: <code>Correct!</code>
#: website/public/showcase/ctf/index.html:204
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"Use REA to inspect a small flag checker, turn its rules into equations and "
"find an input that makes the original program print {ph0}."
msgstr "REA로 작은 플래그 검사기를 분석하고 규칙을 방정식으로 바꿔, 원본 프로그램이 {ph0}을 출력하는 입력을 찾아봅니다."

#: website/public/showcase/ctf/index.html:209
msgctxt "page:showcase/ctf/index.html"
msgid "masked squares flag checker · Easy · Linux x86-64"
msgstr "masked squares 플래그 검사기 · 쉬움 · Linux x86-64"

#: website/public/showcase/ctf/index.html:212
msgctxt "page:showcase/ctf/index.html"
msgid "View the original challenge"
msgstr "원본 문제 보기"

#: website/public/showcase/ctf/index.html:220
msgctxt "page:showcase/ctf/index.html"
msgid "From a binary to a checked answer"
msgstr "바이너리에서 검증된 답까지"

#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/ctf/index.html:222
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}01 · Find the check{ph1}{ph2}Strings → checking functions{ph3}{ph4}REA "
"finds the prompt, its references and the code that accepts or rejects an "
"input.{ph5}"
msgstr ""
"{ph0}01 · 검사 코드 찾기{ph1}{ph2}문자열 → 검사 함수{ph3}{ph4}REA는 프롬프트와 그 참조, 입력을 허용하거나 "
"거부하는 코드를 찾습니다.{ph5}"

#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/ctf/index.html:230
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}02 · Extract the rules{ph1}{ph2}36 characters · 26 sums{ph3}{ph4}REA "
"returns the instructions and data behind each check. The agent turns them "
"into equations.{ph5}"
msgstr ""
"{ph0}02 · 규칙 추출{ph1}{ph2}문자 36개 · 합 26개{ph3}{ph4}REA는 각 검사에 쓰이는 명령어와 데이터를 "
"반환합니다. 에이전트는 이를 방정식으로 바꿉니다.{ph5}"

#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/ctf/index.html:238
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}03 · Solve and run{ph1}{ph2}Recovered flag → Correct!{ph3}{ph4}A Python"
" script solves the equations. REA captures the original program accepting "
"the result.{ph5}"
msgstr ""
"{ph0}03 · 풀이와 실행{ph1}{ph2}복원한 플래그 → Correct!{ph3}{ph4}Python 스크립트가 방정식을 풉니다."
" REA는 원본 프로그램이 결과를 받아들이는 모습을 캡처합니다.{ph5}"

#: website/public/showcase/ctf/index.html:247
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The challenge is by joseph, published in DownUnderCTF's official repository."
msgstr "joseph가 만든 문제이며 DownUnderCTF 공식 저장소에 공개돼 있습니다."

#: website/public/showcase/ctf/index.html:255
msgctxt "page:showcase/ctf/index.html"
msgid "In this case study"
msgstr "사례 목차"

#. {ph0}: <a href="#find">
#. {ph1}: </a>
#: website/public/showcase/ctf/index.html:257
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Find the checking code{ph1}"
msgstr "{ph0}검사 코드 찾기{ph1}"

#. {ph0}: <a href="#mask">
#. {ph1}: </a>
#: website/public/showcase/ctf/index.html:258
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Read one mask{ph1}"
msgstr "{ph0}하나의 마스크 읽기{ph1}"

#. {ph0}: <a href="#code">
#. {ph1}: </a>
#: website/public/showcase/ctf/index.html:259
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Assembly to readable code{ph1}"
msgstr "{ph0}어셈블리에서 읽기 쉬운 코드로{ph1}"

#. {ph0}: <a href="#solve">
#. {ph1}: </a>
#: website/public/showcase/ctf/index.html:260
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Solve the equations{ph1}"
msgstr "{ph0}방정식 풀기{ph1}"

#. {ph0}: <a href="#verify">
#. {ph1}: </a>
#: website/public/showcase/ctf/index.html:261
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Check the answer{ph1}"
msgstr "{ph0}정답 검증{ph1}"

#. {ph0}: <a href="#try">
#. {ph1}: </a>
#: website/public/showcase/ctf/index.html:262
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Try it yourself{ph1}"
msgstr "{ph0}직접 해보기{ph1}"

#: website/public/showcase/ctf/index.html:267
msgctxt "page:showcase/ctf/index.html"
msgid "Find the checking code"
msgstr "검사 코드 찾기"

#. {ph0}: <code>Correct!</code>
#. {ph1}: <code>Incorrect!</code>
#: website/public/showcase/ctf/index.html:268
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The handout is a 15 KB executable. It asks for a flag, then prints {ph0} or "
"{ph1}. Start with a simple request to your agent."
msgstr ""
"제공 파일은 15 KB 실행 파일입니다. 플래그를 입력받고 {ph0} 또는 {ph1}을 출력합니다. 에이전트에게 간단한 요청을 해보세요."

#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/showcase/ctf/index.html:275
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}코딩 에이전트"

#: website/public/showcase/ctf/index.html:280
#: website/public/showcase/ctf/index.html:499
#: website/public/showcase/ctf/index.html:523
#: website/public/showcase/ctf/index.html:593
#: website/public/showcase/ctf/index.html:740
msgctxt "page:showcase/ctf/index.html"
msgid "Copy"
msgstr "복사"

#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="ctf-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/showcase/ctf/index.html:289
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to analyze ms_flag_checker and find the flag. "
"Explain how the checks work, then verify the answer with the original "
"program.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}›{ph1}{ph2}REA로 ms_flag_checker를 분석하고 플래그를 찾으세요. 검사 동작을 설명한 뒤 원래 프로그램으로"
" 답을 검증하세요.{ph3}{ph4}{ph5}"

#: website/public/showcase/ctf/index.html:298
msgctxt "page:showcase/ctf/index.html"
msgid ""
"An example prompt, with the downloaded challenge available locally and a "
"native analysis provider connected."
msgstr "문제 파일을 로컬에 다운로드하고 네이티브 분석 도구를 연결한 상태에서 사용하는 예제 프롬프트입니다."

#: website/public/showcase/ctf/index.html:304
msgctxt "page:showcase/ctf/index.html"
msgid "Follow the input prompt to its function"
msgstr "입력 프롬프트에서 해당 함수로 추적"

#: website/public/showcase/ctf/index.html:333
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The reference gives the agent a place to investigate, even though the "
"executable's original function names have been removed."
msgstr "원래 함수 이름이 제거된 실행 파일에서도 이 참조를 통해 조사를 시작할 위치를 찾을 수 있습니다."

#: website/public/showcase/ctf/index.html:340
msgctxt "page:showcase/ctf/index.html"
msgid "Read the checker and its two helpers"
msgstr "검사기와 보조 함수 두 개 읽기"

#. {ph0}: <code>0x18</code>
#. {ph1}: <code>0x270</code>
#: website/public/showcase/ctf/index.html:368
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The first loop copies 36 character codes. The checking loop decodes a mask, "
"sums the selected codes and compares the result with a stored number. Its "
"{ph0}-byte steps across {ph1} bytes give 26 masks."
msgstr ""
"첫 루프는 문자 코드 36개를 복사합니다. 검사 루프는 마스크를 해석해 선택한 코드를 더하고 저장된 수와 비교합니다. {ph1}바이트 "
"범위를 {ph0}바이트씩 이동하므로 마스크는 26개입니다."

#: website/public/showcase/ctf/index.html:376
msgctxt "page:showcase/ctf/index.html"
msgid ""
"These are selected results from a fresh REA analysis. The local target path "
"is shortened for display; addresses refer to REA's imported image."
msgstr ""
"새로 수행한 REA 분석에서 일부 결과를 골랐습니다. 로컬 대상 경로는 표시용으로 줄였고, 주소는 REA가 가져온 이미지를 기준으로 "
"합니다."

#: website/public/showcase/ctf/index.html:384
msgctxt "page:showcase/ctf/index.html"
msgid "One check reveals one character"
msgstr "하나의 검사로 문자 하나를 알아냅니다"

#: website/public/showcase/ctf/index.html:385
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The checker arranges the input in a 6×6 grid. A mask chooses which cells "
"contribute to a sum. Its compact encoding uses negative numbers to skip "
"cells and positive numbers to select them."
msgstr ""
"검사기는 입력을 6×6 격자로 배치합니다. 마스크는 합산할 칸을 선택합니다. 압축된 인코딩에서 음수는 칸 건너뛰기, 양수는 칸 선택을 "
"뜻합니다."

#. {ph0}: <a href="../../assets/figures/ctf-mask-equation.svg" >
#. {ph1}: </a >
#: website/public/showcase/ctf/index.html:405
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "The seventh check selects just one position. {ph0}Open figure{ph1}."
msgstr "일곱 번째 검사는 한 위치만 선택합니다. {ph0}그림 열기{ph1}."

#: website/public/showcase/ctf/index.html:412
msgctxt "page:showcase/ctf/index.html"
msgid "Read the mask and its target from the binary"
msgstr "바이너리에서 마스크와 목표값 읽기"

#. {ph0}: <code>MOVSX</code>
#. {ph1}: <code>eb</code>
#. {ph2}: <code>code[21] = 55</code>
#. {ph3}: <code>7</code>
#: website/public/showcase/ctf/index.html:434
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The instruction {ph0} reads mask bytes as signed values. This is why {ph1} "
"means −21. The target is a little-endian integer. Together, these bytes tell"
" the agent that {ph2}, so that character is {ph3}."
msgstr ""
"명령어 {ph0}은 마스크 바이트를 부호 있는 값으로 읽습니다. 그래서 {ph1}은 −21을 뜻합니다. 목표값은 리틀 엔디언 정수입니다."
" 이 바이트들로 {ph2}임을 알 수 있으므로 해당 문자는 {ph3}입니다."

#: website/public/showcase/ctf/index.html:443
msgctxt "page:showcase/ctf/index.html"
msgid "From instructions to a readable check"
msgstr "명령어에서 읽기 쉬운 검사 코드로"

#: website/public/showcase/ctf/index.html:444
msgctxt "page:showcase/ctf/index.html"
msgid ""
"Select a step to connect the summing helper and its caller to the same rule "
"in C."
msgstr "단계를 선택해 합산 보조 함수와 호출 함수가 C 코드의 같은 규칙에 어떻게 대응하는지 살펴보세요."

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/ctf/index.html:454
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}01{ph1} Start"
msgstr "{ph0}01{ph1} 시작"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/ctf/index.html:462
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}02{ph1} Select"
msgstr "{ph0}02{ph1} 선택"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/ctf/index.html:470
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}03{ph1} Add"
msgstr "{ph0}03{ph1} 더하기"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/ctf/index.html:478
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}04{ph1} Advance"
msgstr "{ph0}04{ph1} 다음 칸으로 이동"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/ctf/index.html:486
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}05{ph1} Compare"
msgstr "{ph0}05{ph1} 비교"

#: website/public/showcase/ctf/index.html:498
msgctxt "page:showcase/ctf/index.html"
msgid "REA · selected original instructions"
msgstr "REA · 원본 명령어 발췌"

#: website/public/showcase/ctf/index.html:522
msgctxt "page:showcase/ctf/index.html"
msgid "Readable C · one-check summary"
msgstr "읽기 쉬운 C 코드 · 검사 하나의 요약"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>ECX</code>
#: website/public/showcase/ctf/index.html:551
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}01 · Start at zero.{ph1} {ph2} holds the running sum."
msgstr "{ph0}01 · 0에서 시작합니다.{ph1} {ph2}에는 누적 합이 저장됩니다."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/ctf/index.html:555
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}02 · Check the mask cell.{ph1} A zero value skips the character; a "
"nonzero value includes it."
msgstr "{ph0}02 · 마스크 셀을 확인합니다.{ph1} 0 값은 문자를 건너뛰고 0 이 아닌 값은 문자를 포함합니다."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/ctf/index.html:559
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}03 · Add a character code.{ph1} The input's integer at the same offset "
"is added to the sum."
msgstr "{ph0}03 · 문자 코드를 추가합니다.{ph1} 같은 오프셋에 있는 입력의 정수가 합에 더해집니다."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/ctf/index.html:563
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}04 · Move to the next cell.{ph1} The original loop advances four bytes "
"per integer and visits six rows of six cells."
msgstr ""
"{ph0}04 · 다음 셀로 이동합니다.{ph1} 원래 루프는 정수당 4 바이트를 앞당기고 6 개의 셀의 6 개의 행을 방문합니다."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>EAX</code>
#. {ph3}: <code>Incorrect!</code>
#: website/public/showcase/ctf/index.html:568
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}05 · Compare with the stored target.{ph1} The caller receives the sum "
"in {ph2}. A mismatch jumps to {ph3}."
msgstr ""
"{ph0}05 · 저장된 목표값과 비교합니다.{ph1} 호출 함수는 {ph2}로 합을 전달받습니다. 값이 일치하지 않으면 {ph3}로 "
"분기합니다."

#: website/public/showcase/ctf/index.html:575
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The instructions come from the summing helper and its caller. The C is an "
"explanatory summary with descriptive names and a flattened 36-cell loop."
msgstr ""
"명령어는 합산 보조 함수와 호출 함수에서 가져왔습니다. C 코드는 설명용 요약으로, 의미 있는 이름과 36개 칸을 한 번에 순회하는 "
"루프를 사용했습니다."

#: website/public/showcase/ctf/index.html:583
msgctxt "page:showcase/ctf/index.html"
msgid "Solve the 26 equations"
msgstr "방정식 26개 풀기"

#: website/public/showcase/ctf/index.html:584
msgctxt "page:showcase/ctf/index.html"
msgid ""
"Most masks select several cells. For example, the first check adds 16 "
"character codes and requires a total of 1441. The overlapping selections "
"give equations that a small Python script can solve together."
msgstr ""
"대부분의 마스크는 여러 칸을 선택합니다. 첫 검사는 문자 코드 16개를 더해 합이 1441인지 확인합니다. 선택 영역들이 겹치므로 작은 "
"Python 스크립트로 함께 풀 수 있는 연립방정식이 됩니다."

#: website/public/showcase/ctf/index.html:592
msgctxt "page:showcase/ctf/index.html"
msgid "Python · solver excerpt"
msgstr "파이썬 · 솔버 발췌"

#. {ph0}: <code>DUCTF{…}</code>
#: website/public/showcase/ctf/index.html:620
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"Z3 is a solver that finds values satisfying these equations. This excerpt "
"uses the extracted checks and assumes a {ph0} flag with letters, digits, "
"underscores and braces. The complete download includes all 26 masks and "
"targets."
msgstr ""
"Z3는 이 방정식들을 만족하는 값을 찾는 솔버입니다. 발췌 코드는 추출한 검사를 사용하며, 영문자·숫자·밑줄·중괄호로 이루어진 {ph0}"
" 플래그를 가정합니다. 전체 다운로드에는 마스크 26개와 목표값이 모두 들어 있습니다."

#: website/public/showcase/ctf/index.html:626
msgctxt "page:showcase/ctf/index.html"
msgid "Download the complete solver"
msgstr "전체 풀이 코드 다운로드"

#: website/public/showcase/ctf/index.html:632
msgctxt "page:showcase/ctf/index.html"
msgid "Check the answer with the original program"
msgstr "원본 프로그램으로 정답 검증"

#. {ph0}: <code>z</code>
#. {ph1}: <code>y</code>
#: website/public/showcase/ctf/index.html:633
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"REA's process capture records the original executable accepting the solved "
"flag. Changing one selected character from {ph0} to {ph1} makes the first "
"sum 1440 instead of 1441, and the program rejects it."
msgstr ""
"REA의 프로세스 캡처로 원본 실행 파일이 구한 플래그를 받아들이는 것을 기록했습니다. 선택된 문자 하나를 {ph0}에서 {ph1}로 "
"바꾸면 첫 합계가 1441에서 1440이 되어 프로그램이 거부합니다."

#: website/public/showcase/ctf/index.html:643
msgctxt "page:showcase/ctf/index.html"
msgid "Input"
msgstr "입력"

#: website/public/showcase/ctf/index.html:644
msgctxt "page:showcase/ctf/index.html"
msgid "Observed output"
msgstr "관찰된 출력"

#: website/public/showcase/ctf/index.html:645
msgctxt "page:showcase/ctf/index.html"
msgid "Exit code"
msgstr "종료 코드"

#: website/public/showcase/ctf/index.html:650
msgctxt "page:showcase/ctf/index.html"
msgid "Solver's flag"
msgstr "솔버가 구한 플래그"

#: website/public/showcase/ctf/index.html:655
msgctxt "page:showcase/ctf/index.html"
msgid "One character changed"
msgstr "한 문자 변경"

#: website/public/showcase/ctf/index.html:663
msgctxt "page:showcase/ctf/index.html"
msgid "Show the recovered flag and captured output"
msgstr "복구된 플래그 및 캡처된 출력 표시"

#: website/public/showcase/ctf/index.html:666
msgctxt "page:showcase/ctf/index.html"
msgid "REA · original program output"
msgstr "REA · 원본 프로그램 출력"

#: website/public/showcase/ctf/index.html:667
msgctxt "page:showcase/ctf/index.html"
msgid "Copy flag"
msgstr "플래그 복사"

#: website/public/showcase/ctf/index.html:679
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The recovered value also matches the flag in the organizers' published "
"challenge metadata, checked after solving the binary."
msgstr "복구한 값은 주최 측이 공개한 문제 메타데이터의 플래그와도 일치합니다. 이 대조는 바이너리를 푼 뒤에 수행했습니다."

#: website/public/showcase/ctf/index.html:685
msgctxt "page:showcase/ctf/index.html"
msgid "Source, target identity and analysis details"
msgstr "출처, 대상 식별 정보, 분석 세부 사항"

#: website/public/showcase/ctf/index.html:686
msgctxt "page:showcase/ctf/index.html"
msgid ""
"Fresh analysis and two process captures on 8 October 2026, using REA 4.1.0 "
"with Ghidra 12.1.4 on Linux x64. The binary is a stripped x86-64 ELF, 15,248"
" bytes."
msgstr ""
"2026년 10월 8일 Linux x64에서 REA 4.1.0과 Ghidra 12.1.4를 사용해 새로 분석하고 프로세스 실행을 두 차례"
" 캡처했습니다. 바이너리는 심볼 정보가 제거된 x86-64 ELF이며, 크기는 15,248바이트입니다."

#: website/public/showcase/ctf/index.html:697
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The string references, functions and constants were inspected before reading"
" the organizers' source or solution. The Python solver and the diagram were "
"built from those REA results."
msgstr ""
"주최 측의 소스나 풀이를 읽기 전에 문자열 참조, 함수, 상수를 분석했습니다. Python 풀이 코드와 그림은 이 REA 결과로 "
"만들었습니다."

#. {ph0}: <a
#. href="https://github.com/DownUnderCTF/Challenges_2023_Public/blob/b48f83db2984bc7fa2ec7879a32d7efb1be8d333/rev/masked-
#. squares-flag-checker/src/ms_flag_checker.c" >
#. {ph1}: </a >
#. {ph2}: <a
#. href="https://github.com/DownUnderCTF/Challenges_2023_Public/blob/b48f83db2984bc7fa2ec7879a32d7efb1be8d333/rev/masked-
#. squares-flag-checker/ctfcli.yaml" >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/morluto/rea/blob/main/website/evidence/ctf-masked-
#. squares.md" >
#. {ph5}: </a >
#: website/public/showcase/ctf/index.html:702
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}Compare with the organizers' source{ph1} · {ph2}Challenge metadata and "
"flag{ph3} · {ph4}REA evidence notes{ph5}"
msgstr "{ph0}주최 측 소스와 비교{ph1} · {ph2}문제 메타데이터와 플래그{ph3} · {ph4}REA 증거 기록{ph5}"

#: website/public/showcase/ctf/index.html:722
msgctxt "page:showcase/ctf/index.html"
msgid "Try it yourself"
msgstr "직접 해보기"

#: website/public/showcase/ctf/index.html:723
msgctxt "page:showcase/ctf/index.html"
msgid ""
"Download the original challenge and the solver into one folder. Use the "
"prompt above to investigate with your agent, or run the included script."
msgstr "원본 문제와 풀이 코드를 한 폴더에 다운로드하세요. 위 프롬프트로 에이전트와 함께 조사하거나, 제공된 스크립트를 실행하세요."

#: website/public/showcase/ctf/index.html:739
msgctxt "page:showcase/ctf/index.html"
msgid "Terminal · solve and run"
msgstr "터미널 · 해결 및 실행"

#. {ph0}: <code>z3-solver</code>
#: website/public/showcase/ctf/index.html:756
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The script prints a candidate flag; paste it at the program's prompt. "
"Solving needs Python and {ph0}. Running the original executable needs Linux "
"x86-64."
msgstr ""
"스크립트가 출력하는 후보 플래그를 프로그램 프롬프트에 붙여넣으세요. 풀이에는 Python과 {ph0}가 필요합니다. 원본 실행 파일은 "
"Linux x86-64에서 실행해야 합니다."

#: website/public/showcase/ctf/index.html:761
msgctxt "page:showcase/ctf/index.html"
msgid "Set up REA with your coding agent"
msgstr "코딩 에이전트와 REA 설정하기"

#: website/public/showcase/ctf/index.html:6
msgctxt "page:showcase/ctf/index.html"
msgid "CTF Reverse Engineering: DownUnderCTF Flag Checker — REA"
msgstr "CTF 리버스 엔지니어링: DownUnderCTF 플래그 검사기 — REA"

#: website/public/showcase/ctf/index.html:7
msgctxt "page:showcase/ctf/index.html"
msgid ""
"Use REA to solve DownUnderCTF's masked squares flag checker. Find the "
"checking functions, extract the masks and compare a recovered flag with the "
"original program."
msgstr ""
"REA로 DownUnderCTF의 masked squares flag checker를 풀어보세요. 검사 함수를 찾고 마스크를 추출한 뒤,"
" 복구한 플래그를 원본 프로그램으로 검증합니다."

#: website/public/showcase/ctf/index.html:254
msgctxt "page:showcase/ctf/index.html"
msgid "On this page"
msgstr "이 페이지 목차"

#: website/public/showcase/ctf/index.html:265
msgctxt "page:showcase/ctf/index.html"
msgid "CTF flag-checker case study"
msgstr "CTF 플래그 검사기 사례 연구"

#: website/public/showcase/ctf/index.html:280
msgctxt "page:showcase/ctf/index.html"
msgid "Copy CTF example prompt"
msgstr "CTF 예제 프롬프트 복사"

#: website/public/showcase/ctf/index.html:391
msgctxt "page:showcase/ctf/index.html"
msgid "CTF mask equation; scroll horizontally on smaller screens"
msgstr "CTF 마스크 방정식. 작은 화면에서는 가로로 스크롤하세요"

#: website/public/showcase/ctf/index.html:397
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The seventh mask skips 21 cells, selects position 21, then skips 14. Only "
"that cell contributes to the sum. Its required character code is 55, which "
"means the character is 7."
msgstr ""
"일곱 번째 마스크는 21칸을 건너뛰고 위치 21을 선택한 뒤 14칸을 건너뜁니다. 이 칸만 합계에 포함됩니다. 필요한 문자 코드는 "
"55이므로 문자는 7입니다."

#: website/public/showcase/ctf/index.html:449
msgctxt "page:showcase/ctf/index.html"
msgid "Follow the CTF check"
msgstr "CTF 검사 과정 따라가기"

#: website/public/showcase/ctf/index.html:499
msgctxt "page:showcase/ctf/index.html"
msgid "Copy CTF assembly"
msgstr "CTF 어셈블리 복사"

#: website/public/showcase/ctf/index.html:523
msgctxt "page:showcase/ctf/index.html"
msgid "Copy readable CTF check"
msgstr "읽기 쉬운 CTF 검증 코드 복사"

#: website/public/showcase/ctf/index.html:593
msgctxt "page:showcase/ctf/index.html"
msgid "Copy CTF solver excerpt"
msgstr "CTF 풀이 코드 발췌문 복사"

#: website/public/showcase/ctf/index.html:667
msgctxt "page:showcase/ctf/index.html"
msgid "Copy recovered flag"
msgstr "복구한 플래그 복사"

#: website/public/showcase/ctf/index.html:740
msgctxt "page:showcase/ctf/index.html"
msgid "Copy CTF solver commands"
msgstr "CTF 풀이 명령 복사"

#: website/public/showcase/ctf/index.html:783
msgctxt "page:showcase/ctf/index.html"
msgid "Back to top"
msgstr "맨 위로"

#: website/public/showcase/dx-ball/index.html:107
msgctxt "page:showcase/dx-ball/index.html"
msgid "Skip to content"
msgstr "본문으로 건너뛰기"

#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/showcase/dx-ball/index.html:199
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}Home{ph1} / {ph2}Showcases{ph3} / DX-Ball"
msgstr "{ph0}홈{ph1} / {ph2}사례 소개{ph3} / DX-Ball"

#: website/public/showcase/dx-ball/index.html:202
msgctxt "page:showcase/dx-ball/index.html"
msgid "Case study · DX-Ball 1.07"
msgstr "사례 연구 · DX-Ball 1.07"

#. {ph0}: <br />
#: website/public/showcase/dx-ball/index.html:203
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "Rebuilding DX-Ball{ph0}from its executable."
msgstr "실행 파일로부터{ph0}DX-Ball 재구성하기"

# Reviewed for concrete meaning, software terminology and readable sentences.
#: website/public/showcase/dx-ball/index.html:204
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The goal is a maintainable C version of the 1996 Windows game. REA helps the"
" agent inspect the original, one function at a time."
msgstr ""
"목표는 1996년에 나온 Windows 게임을 유지보수 가능한 C 코드로 재구성하는 것입니다. REA는 에이전트가 원본 함수를 하나씩 "
"분석하도록 돕습니다."

#: website/public/showcase/dx-ball/index.html:208
msgctxt "page:showcase/dx-ball/index.html"
msgid "Windows i386 · C · REA"
msgstr "Windows i386 · C · REA"

#. {ph0}: <a href="../../assets/figures/dx-ball-sound-pan-investigation.svg" >
#. {ph1}: </a >
#: website/public/showcase/dx-ball/index.html:225
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"One function, from executable to checked C. REA supplies the instructions, "
"callers and data reads; the reconstruction project implements and tests the "
"result. {ph0}Open figure{ph1}"
msgstr ""
"함수 하나를 실행 파일에서 검증된 C 코드로 복구합니다. REA는 명령어, 호출 함수, 데이터 읽기 결과를 제공하고 재구성 프로젝트가 "
"구현과 테스트를 맡습니다. {ph0}그림 열기{ph1}"

#: website/public/showcase/dx-ball/index.html:236
msgctxt "page:showcase/dx-ball/index.html"
msgid "In this case study"
msgstr "사례 목차"

#. {ph0}: <a href="#progress">
#. {ph1}: </a>
#: website/public/showcase/dx-ball/index.html:238
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}The project{ph1}"
msgstr "{ph0}프로젝트{ph1}"

#. {ph0}: <a href="#sound-pan">
#. {ph1}: </a>
#: website/public/showcase/dx-ball/index.html:239
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}Sound pan{ph1}"
msgstr "{ph0}사운드 패닝{ph1}"

#. {ph0}: <a href="#checking">
#. {ph1}: </a>
#: website/public/showcase/dx-ball/index.html:240
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}Checking the result{ph1}"
msgstr "{ph0}결과 확인{ph1}"

#. {ph0}: <a href="#continue">
#. {ph1}: </a>
#: website/public/showcase/dx-ball/index.html:241
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}Continue the work{ph1}"
msgstr "{ph0}작업 이어가기{ph1}"

#: website/public/showcase/dx-ball/index.html:249
msgctxt "page:showcase/dx-ball/index.html"
msgid "maintained C functions"
msgstr "유지보수 중인 C 함수"

#: website/public/showcase/dx-ball/index.html:253
msgctxt "page:showcase/dx-ball/index.html"
msgid "comparisons with original code"
msgstr "원본 코드와의 비교"

#: website/public/showcase/dx-ball/index.html:257
msgctxt "page:showcase/dx-ball/index.html"
msgid "functions with matching compiled bytes"
msgstr "컴파일된 바이트가 일치하는 함수"

#. {ph0}: <a href="https://github.com/N0zoM1z0/dx-
#. ball/blob/a55dca27ec0a07018c1b2c95ae2be027f7d8c3c4/docs/PROGRESS.md" >
#. {ph1}: </a >
#. {ph2}: <a href="https://github.com/N0zoM1z0/dx-
#. ball/blob/a55dca27ec0a07018c1b2c95ae2be027f7d8c3c4/docs/ORACLES.md" >
#. {ph3}: </a >
#: website/public/showcase/dx-ball/index.html:260
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"Project checkpoint: 7 October 2026. {ph0}Progress ledger{ph1} · {ph2}Test "
"coverage{ph3}"
msgstr "프로젝트 체크포인트: 2026년 10월 7일. {ph0}진행 기록{ph1} · {ph2}테스트 범위{ph3}"

#: website/public/showcase/dx-ball/index.html:272
msgctxt "page:showcase/dx-ball/index.html"
msgid "The project so far"
msgstr "지금까지의 프로젝트"

#: website/public/showcase/dx-ball/index.html:273
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The recovered code covers board and resource handling, brick hits, "
"animations, particles and bonus production. Current builds provide "
"inspection utilities and an analysis library. Work on the playable game "
"continues with ball and paddle physics, power-up handling and Windows "
"integration."
msgstr ""
"복구된 코드는 보드와 리소스 처리, 벽돌 충돌, 애니메이션, 파티클, 보너스 생성을 다룹니다. 현재 빌드는 분석 유틸리티와 라이브러리를 "
"제공합니다. 플레이 가능한 게임을 위해 공·패들의 물리, 파워업 처리, Windows 통합 작업이 계속되고 있습니다."

#: website/public/showcase/dx-ball/index.html:283
msgctxt "page:showcase/dx-ball/index.html"
msgid "Finding the sound-pan calculation"
msgstr "왼쪽/오른쪽 사운드 위치 계산 찾기"

#: website/public/showcase/dx-ball/index.html:284
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"When a brick is hit, its horizontal position is passed to the sound code. "
"The investigation needed to recover how that screen coordinate becomes a "
"left/right panning value."
msgstr "벽돌에 맞으면 가로 위치가 사운드 코드로 전달됩니다. 이 화면 좌표가 어떻게 좌우 패닝 값으로 바뀌는지 복구하는 조사입니다."

#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/showcase/dx-ball/index.html:291
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}코딩 에이전트"

#: website/public/showcase/dx-ball/index.html:295
#: website/public/showcase/dx-ball/index.html:486
#: website/public/showcase/dx-ball/index.html:507
#: website/public/showcase/dx-ball/index.html:578
#: website/public/showcase/dx-ball/index.html:732
msgctxt "page:showcase/dx-ball/index.html"
msgid "Copy"
msgstr "복사"

#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="dxball-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/showcase/dx-ball/index.html:304
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to find how DX-Ball calculates sound panning. "
"Explain the calculation and show the code.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}›{ph1}{ph2}REA로 DX-Ball의 사운드 패닝 계산 방식을 찾아줘. 계산을 설명하고 코드도 "
"보여줘.{ph3}{ph4}{ph5}"

#: website/public/showcase/dx-ball/index.html:312
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"An example prompt for your coding agent, with the local executable "
"available. The investigation below shows the REA queries and evidence behind"
" the answer."
msgstr ""
"로컬 실행 파일을 준비한 상태에서 쓰는 코딩 에이전트용 프롬프트입니다. 아래 조사에서 답변의 근거가 된 REA 질의와 증거를 볼 수 "
"있습니다."

# Reviewed for concrete meaning, software terminology and readable sentences.
#: website/public/showcase/dx-ball/index.html:317
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The agent used REA to inspect the function, follow its brick-hit caller and "
"read the constants from the executable. Those results supplied the input and"
" arithmetic needed to write the C function below."
msgstr ""
"에이전트는 REA로 함수를 살펴보고, 벽돌 충돌 처리 함수가 이 함수를 어떻게 호출하는지 추적한 뒤 실행 파일의 상수를 읽었습니다. 이 "
"결과로 입력과 계산 방법을 확인하고 아래의 C 함수를 작성했습니다."

#. {ph0}: <code>0x406400</code>
#. {ph1}: <code>FUN_00406400(void)</code>
#. {ph2}: <code>__ftol()</code>
#: website/public/showcase/dx-ball/index.html:323
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The first function result for {ph0} included pseudocode declaring {ph1} and "
"calling {ph2}. Its instruction view showed a stack input and floating-point "
"operations. That discrepancy gave the agent a concrete reason to keep "
"investigating."
msgstr ""
"{ph0}의 첫 함수 분석 결과에는 {ph1}을 선언하고 {ph2}를 호출하는 의사 코드가 포함되어 있었습니다. 명령어 보기에는 스택 "
"입력과 부동 소수점 연산이 나타났습니다. 이 불일치는 에이전트가 조사를 계속할 구체적인 근거가 되었습니다."

#: website/public/showcase/dx-ball/index.html:331
msgctxt "page:showcase/dx-ball/index.html"
msgid "The first decompiler view"
msgstr "첫 디컴파일 결과"

#: website/public/showcase/dx-ball/index.html:344
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The output shows a conversion call. Reading the instructions below reveals "
"the input and the calculation feeding that call."
msgstr "출력에는 변환 함수 호출이 나타납니다. 아래의 명령어를 읽으면 그 호출에 전달되는 입력과 계산 과정을 알 수 있습니다."

#: website/public/showcase/dx-ball/index.html:350
msgctxt "page:showcase/dx-ball/index.html"
msgid "Three questions answered through REA"
msgstr "REA로 답을 찾은 세 가지 질문"

#: website/public/showcase/dx-ball/index.html:353
msgctxt "page:showcase/dx-ball/index.html"
msgid "Recover the missing input"
msgstr "누락된 입력 복구"

#. {ph0}: <code>[EBP+8]</code>
#: website/public/showcase/dx-ball/index.html:370
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The function result includes instructions alongside pseudocode and callers. "
"Here, {ph0} exposes the integer input missing from the decompiler view."
msgstr ""
"함수 결과에는 의사 코드, 호출 함수와 함께 명령어가 포함됩니다. 여기서는 {ph0}이 디컴파일 결과에 빠진 정수 입력을 드러냅니다."

#: website/public/showcase/dx-ball/index.html:377
msgctxt "page:showcase/dx-ball/index.html"
msgid "Follow the caller to understand the input"
msgstr "호출 함수를 따라 입력 의미 확인"

#. {ph0}: <code>tile_x</code>
#. {ph1}: <code>20 + 30 × tile_x</code>
#: website/public/showcase/dx-ball/index.html:394
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"REA identified this caller in the first result. Its preceding instructions "
"scale {ph0} by 30; adding 20 gives the brick's screen coordinate, {ph1}."
msgstr ""
"REA는 첫 결과에서 이 호출 함수를 식별했습니다. 앞선 명령어는 {ph0}에 30을 곱하고 20을 더해 벽돌의 화면 좌표 {ph1}을 "
"구합니다."

#: website/public/showcase/dx-ball/index.html:401
msgctxt "page:showcase/dx-ball/index.html"
msgid "Read the values behind the memory addresses"
msgstr "메모리 주소 뒤에 있는 값 읽기"

#: website/public/showcase/dx-ball/index.html:422
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The returned bytes establish the two arithmetic constants and initial pan "
"scale. The agent now has the values needed for the C expression."
msgstr "반환된 바이트로 연산 상수 두 개와 초기 패닝 배율을 확인합니다. 이제 에이전트는 C 수식에 필요한 값을 모두 갖췄습니다."

#: website/public/showcase/dx-ball/index.html:430
msgctxt "page:showcase/dx-ball/index.html"
msgid "From REA's findings to C"
msgstr "REA 분석 결과에서 C 코드로"

#: website/public/showcase/dx-ball/index.html:431
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"Follow the five steps below. Each selection highlights the original "
"instructions and the C lines they informed."
msgstr "아래 다섯 단계를 선택해 보세요. 각 단계에 해당하는 원본 명령어와 이를 바탕으로 작성한 C 코드가 강조됩니다."

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/dx-ball/index.html:441
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}01{ph1} Input"
msgstr "{ph0}01{ph1} 입력"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/dx-ball/index.html:449
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}02{ph1} Multiply"
msgstr "{ph0}02{ph1} 곱하기"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/dx-ball/index.html:457
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}03{ph1} Subtract"
msgstr "{ph0}03{ph1} 빼기"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/dx-ball/index.html:465
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}04{ph1} Scale"
msgstr "{ph0}04{ph1} 배율 적용"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/dx-ball/index.html:473
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}05{ph1} Return"
msgstr "{ph0}05{ph1} 반환"

#: website/public/showcase/dx-ball/index.html:485
msgctxt "page:showcase/dx-ball/index.html"
msgid "Original x86 · excerpt"
msgstr "원본 x86 · 발췌"

#: website/public/showcase/dx-ball/index.html:506
msgctxt "page:showcase/dx-ball/index.html"
msgid "Reconstructed C"
msgstr "재구성한 C 코드"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>[EBP+8]</code>
#. {ph3}: <code>FILD</code>
#. {ph4}: <code>x</code>
#: website/public/showcase/dx-ball/index.html:533
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}01 · Read the input.{ph1} The instruction view in REA's function result"
" reads {ph2} and uses {ph3} to load the integer. Following its caller "
"through REA establishes the screen-coordinate meaning of the C parameter "
"{ph4}."
msgstr ""
"{ph0}01 · 입력을 읽습니다.{ph1} REA의 함수 결과에 있는 명령어 뷰에서는 {ph2}를 읽고 {ph3}로 정수를 로드합니다."
" REA로 호출 함수를 추적하면 C 매개변수 {ph4}가 화면 좌표임을 확인할 수 있습니다."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>FMUL</code>
#. {ph3}: <code>0x420068</code>
#. {ph4}: <code>read_bytes</code>
#. {ph5}: <code>1.5625</code>
#: website/public/showcase/dx-ball/index.html:540
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}02 · Multiply by 1.5625.{ph1} {ph2} reads the double at {ph3}. The "
"bytes returned by REA's {ph4} decode to {ph5}; the C uses the same constant."
msgstr ""
"{ph0}02 · 1.5625를 곱합니다.{ph1} {ph2} 명령은 {ph3}의 double 값을 읽습니다. REA의 {ph4}가 "
"반환한 바이트를 해석하면 {ph5}가 나오며, C 코드도 같은 상수를 사용합니다."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>FSUB</code>
#. {ph3}: <code>0x420070</code>
#. {ph4}: <code>500.0</code>
#. {ph5}: <code>320</code>
#: website/public/showcase/dx-ball/index.html:546
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}03 · Subtract 500.0.{ph1} {ph2} reads the double at {ph3}. REA's byte "
"result decodes to {ph4}, shifting the calculation's center to screen "
"coordinate {ph5}."
msgstr ""
"{ph0}03 · 500.0을 뺍니다.{ph1} {ph2} 명령은 {ph3}의 double 값을 읽습니다. REA의 바이트 결과를 "
"해석하면 {ph4}가 나옵니다. 이 값을 빼면 계산의 중심이 화면 좌표 {ph5}로 이동합니다."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>FMUL</code>
#. {ph3}: <code>0x4210a0</code>
#. {ph4}: <code>dxball_pan_scale</code>
#. {ph5}: <code>1.0</code>
#: website/public/showcase/dx-ball/index.html:552
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}04 · Apply the stored scale.{ph1} The second {ph2} reads {ph3}. That "
"global is named {ph4} in the maintained source. REA's second byte read "
"establishes its initial value of {ph5}."
msgstr ""
"{ph0}04 · 저장된 배율을 적용합니다.{ph1} 두 번째 {ph2} 명령은 {ph3}의 값을 읽습니다. 이 전역 변수의 이름은 유지"
" 관리 중인 소스에서 {ph4}입니다. REA로 바이트를 두 번째로 읽어 초기값이 {ph5}임을 확인합니다."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>0x406430</code>
#. {ph3}: <code>__ftol</code>
#. {ph4}: <code>DxBallInt</code>
#: website/public/showcase/dx-ball/index.html:559
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}05 · Return an integer.{ph1} The call at {ph2} reaches {ph3}, "
"identified in REA's callee results. The C casts the result to {ph4}; "
"original-x86 comparisons check the returned value."
msgstr ""
"{ph0}05 · 정수를 반환합니다.{ph1} {ph2}의 호출은 {ph3}로 이어지며, 이는 REA의 피호출 함수 결과에서 확인됩니다."
" C 코드는 결과를 {ph4}로 형 변환합니다. 원본 x86 코드와의 비교로 반환값을 검사합니다."

#: website/public/showcase/dx-ball/index.html:568
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The assembly excerpt selects the input, arithmetic and return instructions. "
"The full listing below also includes the intervening stores and function "
"setup and cleanup."
msgstr ""
"어셈블리 발췌문은 입력, 연산, 반환 명령어를 골라 보여줍니다. 아래 전체 목록에는 중간 저장과 함수의 준비·정리 명령도 포함됩니다."

#: website/public/showcase/dx-ball/index.html:574
msgctxt "page:showcase/dx-ball/index.html"
msgid "Full assembly and supporting evidence"
msgstr "전체 어셈블리와 근거 자료"

#: website/public/showcase/dx-ball/index.html:577
msgctxt "page:showcase/dx-ball/index.html"
msgid "REA result · 0x406400–0x40643e"
msgstr "REA 결과 · 0x406400–0x40643e"

#: website/public/showcase/dx-ball/index.html:611
msgctxt "page:showcase/dx-ball/index.html"
msgid "What the caller supplies"
msgstr "호출하는 함수가 제공하는 것"

#. {ph0}: <code>0x411f40</code>
#: website/public/showcase/dx-ball/index.html:612
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The brick-hit function at {ph0} scales its tile coordinate by 30, adds 20, "
"then pushes it before the call:"
msgstr "{ph0}의 벽돌 충돌 함수는 타일 좌표에 30을 곱하고 20을 더한 뒤, 호출 전에 스택에 넣습니다:"

#: website/public/showcase/dx-ball/index.html:626
msgctxt "page:showcase/dx-ball/index.html"
msgid "What the data reads establish"
msgstr "데이터 읽기로 확인한 값"

#: website/public/showcase/dx-ball/index.html:629
msgctxt "page:showcase/dx-ball/index.html"
msgid "REA byte reads, decoded as little-endian doubles"
msgstr "REA가 읽은 바이트를 리틀 엔디언 배정밀도 부동소수점 값으로 디코딩"

#: website/public/showcase/dx-ball/index.html:634
msgctxt "page:showcase/dx-ball/index.html"
msgid "Address"
msgstr "주소"

#: website/public/showcase/dx-ball/index.html:635
msgctxt "page:showcase/dx-ball/index.html"
msgid "Value"
msgstr "값"

#: website/public/showcase/dx-ball/index.html:636
msgctxt "page:showcase/dx-ball/index.html"
msgid "Used for"
msgstr "용도"

#: website/public/showcase/dx-ball/index.html:643
msgctxt "page:showcase/dx-ball/index.html"
msgid "First multiplication"
msgstr "첫 번째 곱셈"

#: website/public/showcase/dx-ball/index.html:648
msgctxt "page:showcase/dx-ball/index.html"
msgid "Subtraction"
msgstr "빼기"

#. {ph0}: <code>1.0</code>
#: website/public/showcase/dx-ball/index.html:652
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0} initially"
msgstr "{ph0}의 초깃값"

#: website/public/showcase/dx-ball/index.html:653
msgctxt "page:showcase/dx-ball/index.html"
msgid "Stored pan scale"
msgstr "저장된 패닝 배율"

#: website/public/showcase/dx-ball/index.html:658
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"Recorded with REA 4.1.0 for the hash-pinned DX-Ball 1.07 target. The linked "
"investigation notes retain the Evidence IDs."
msgstr ""
"해시로 고정한 DX-Ball 1.07 대상을 REA 4.1.0으로 분석한 기록입니다. 연결된 조사 메모에 Evidence ID가 보존돼 "
"있습니다."

#. {ph0}: <a href="https://github.com/N0zoM1z0/dx-
#. ball/blob/a55dca27ec0a07018c1b2c95ae2be027f7d8c3c4/src/gameplay.c#L41" >
#. {ph1}: </a >
#. {ph2}: <a href="https://github.com/N0zoM1z0/dx-
#. ball/blob/a55dca27ec0a07018c1b2c95ae2be027f7d8c3c4/docs/GAMEPLAY_OWNER.md"
#. >
#. {ph3}: </a >
#: website/public/showcase/dx-ball/index.html:663
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}Maintained source{ph1} · {ph2}Investigation notes and evidence "
"references{ph3}"
msgstr "{ph0}유지보수 중인 소스{ph1} · {ph2}조사 메모와 증거 참조{ph3}"

#: website/public/showcase/dx-ball/index.html:677
msgctxt "page:showcase/dx-ball/index.html"
msgid "Checking the recovered function"
msgstr "복구한 함수 검증"

#: website/public/showcase/dx-ball/index.html:678
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The recovered function passes two checks: its return values match the "
"original, and its compiled bytes match the executable."
msgstr "복구한 함수는 두 검사를 통과합니다. 반환값이 원본과 일치하고, 컴파일된 바이트도 실행 파일과 일치합니다."

#: website/public/showcase/dx-ball/index.html:684
msgctxt "page:showcase/dx-ball/index.html"
msgid "3,205 behavior cases"
msgstr "동작 검증 사례 3,205개"

#: website/public/showcase/dx-ball/index.html:685
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The tests execute the original x86 function and compare its return value "
"with the maintained C. They cover every integer position from 0 to 640 at "
"five pan scales: 0, 0.5, 1, 20 and −1."
msgstr ""
"테스트는 원래 x86 함수를 실행하고 그 반환값을 유지보수 중인 C 코드의 반환값과 비교합니다. 팬 스케일 0, 0.5, 1, 20, "
"−1의 다섯 가지 값에 대해 0부터 640까지의 모든 정수 위치를 검사합니다."

#: website/public/showcase/dx-ball/index.html:693
msgctxt "page:showcase/dx-ball/index.html"
msgid "63 matching bytes"
msgstr "바이트 63개 일치"

#: website/public/showcase/dx-ball/index.html:694
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The C function is compiled with the pinned VC4.0 toolchain. Compiler replay "
"matches the complete function after applying the reviewed relocations and "
"checking the referenced constants."
msgstr ""
"C 함수는 버전이 고정된 VC4.0 도구 모음으로 컴파일됩니다. 검토된 재배치를 적용하고 참조된 상수를 확인하면 컴파일러 재현 결과가 "
"함수 전체와 일치합니다."

#: website/public/showcase/dx-ball/index.html:702
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"At a scale of 1, the recovered calculation returns −500 at the left edge, 0 "
"at the center and 500 at the right edge. The next part of the audio work is "
"integrating that value with the game's sound backend."
msgstr ""
"배율이 1일 때 복구한 계산은 왼쪽 끝에서 −500, 중앙에서 0, 오른쪽 끝에서 500을 반환합니다. 다음 오디오 작업은 이 값을 "
"게임의 사운드 백엔드와 연결하는 것입니다."

#. {ph0}: <a href="https://github.com/N0zoM1z0/dx-
#. ball/blob/a55dca27ec0a07018c1b2c95ae2be027f7d8c3c4/docs/BUILD_MATCHING.md"
#. >
#. {ph1}: </a >
#: website/public/showcase/dx-ball/index.html:708
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}Read the compiler replay details{ph1}"
msgstr "{ph0}컴파일러 재현 세부 사항 읽기{ph1}"

#: website/public/showcase/dx-ball/index.html:717
msgctxt "page:showcase/dx-ball/index.html"
msgid "Continue the investigation"
msgstr "조사 이어가기"

#: website/public/showcase/dx-ball/index.html:718
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The same approach is being used for particle updates, explosion queues and "
"bonus generation: inspect the relevant functions, recover their state and "
"dependencies, then compare the implementation with the original."
msgstr ""
"파티클 갱신, 폭발 대기열, 보너스 생성에도 같은 방법을 사용합니다. 관련 함수를 살펴 상태와 의존 관계를 복구한 뒤 구현을 원본과 "
"비교합니다."

#: website/public/showcase/dx-ball/index.html:724
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"To inspect the sound-pan function yourself, follow the DX-Ball project's "
"setup instructions and supply its matching original target. Then run:"
msgstr ""
"사운드 패닝 함수를 직접 분석하려면 DX-Ball 프로젝트의 설정 지침을 따르고 일치하는 원본 파일을 준비하세요. 그런 다음 실행하세요:"

#: website/public/showcase/dx-ball/index.html:731
msgctxt "page:showcase/dx-ball/index.html"
msgid "In the DX-Ball checkout"
msgstr "체크아웃한 DX-Ball 폴더에서"

#. {ph0}: <a href="https://github.com/N0zoM1z0/dx-ball" >
#. {ph1}: </a >
#. {ph2}: <span>
#. {ph3}: </span>
#: website/public/showcase/dx-ball/index.html:745
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}DX-Ball repository{ph1}{ph2}Current source, progress and local "
"setup.{ph3}"
msgstr "{ph0}DX-Ball 저장소{ph1}{ph2}현재 소스, 진행 상황, 로컬 설정.{ph3}"

#. {ph0}: <a href="../../guides/native/">
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/showcase/dx-ball/index.html:750
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}REA analysis workflow{ph1}{ph2}Follow the calculation, then use the "
"same approach with your own binary.{ph3}"
msgstr "{ph0}REA 분석 절차{ph1}{ph2}계산 과정을 따라가고, 직접 고른 바이너리에도 같은 방법을 적용하세요.{ph3}"

#. {ph0}: <a href="https://github.com/N0zoM1z0/dx-
#. ball/blob/a55dca27ec0a07018c1b2c95ae2be027f7d8c3c4/docs/ENTITIES_OWNER.md"
#. >
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/showcase/dx-ball/index.html:757
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}Particles and bonus production{ph1}{ph2}A larger investigation into "
"state, queues and pixel writes.{ph3}"
msgstr "{ph0}파티클과 보너스 생성{ph1}{ph2}상태, 큐, 픽셀 쓰기를 다루는 더 큰 조사입니다.{ph3}"

#: website/public/showcase/dx-ball/index.html:6
msgctxt "page:showcase/dx-ball/index.html"
msgid "DX-Ball Reverse Engineering: Sound Panning — REA"
msgstr "DX-Ball 리버스 엔지니어링: 사운드 패닝 — REA"

#: website/public/showcase/dx-ball/index.html:7
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"Follow a DX-Ball reconstruction from binary analysis through REA to "
"maintained C, original-x86 tests and matching compiled function bytes."
msgstr ""
"REA를 활용한 DX-Ball 바이너리 분석부터 유지보수 가능한 C 코드, 원본 x86 테스트, 컴파일된 함수 바이트 일치까지 "
"살펴봅니다."

#: website/public/showcase/dx-ball/index.html:211
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"DX-Ball sound-pan investigation; scroll horizontally on smaller screens"
msgstr "DX-Ball 사운드 패닝 조사. 작은 화면에서는 가로로 스크롤하세요"

#: website/public/showcase/dx-ball/index.html:217
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"DXBALL.EXE function 0x00406400 is inspected with REA. A brick-hit caller "
"supplies 20 plus 30 times tile_x. Instructions load x, multiply by 1.5625, "
"subtract 500.0, apply pan_scale and return an integer. The maintained C is "
"checked independently against the original x86 in 3,205 cases and by VC4.0 "
"compiler replay matching 63 bytes."
msgstr ""
"REA로 DXBALL.EXE의 함수 0x00406400을 분석합니다. 벽돌 충돌 함수는 20 + 30 × tile_x를 전달합니다. "
"명령어는 x를 읽고 1.5625를 곱한 뒤 500.0을 빼고 pan_scale을 적용해 정수를 반환합니다. C 코드는 원본 x86과 "
"3,205개 사례를 비교하고, VC4.0 컴파일러 재현으로 63바이트 일치를 확인합니다."

#: website/public/showcase/dx-ball/index.html:235
msgctxt "page:showcase/dx-ball/index.html"
msgid "On this page"
msgstr "이 페이지 목차"

#: website/public/showcase/dx-ball/index.html:244
msgctxt "page:showcase/dx-ball/index.html"
msgid "DX-Ball reconstruction case study"
msgstr "DX-Ball 재구성 사례 연구"

#: website/public/showcase/dx-ball/index.html:295
msgctxt "page:showcase/dx-ball/index.html"
msgid "Copy example prompt"
msgstr "예제 프롬프트 복사"

#: website/public/showcase/dx-ball/index.html:436
msgctxt "page:showcase/dx-ball/index.html"
msgid "Follow the sound-pan calculation"
msgstr "사운드 패닝 계산 따라가기"

#: website/public/showcase/dx-ball/index.html:486
msgctxt "page:showcase/dx-ball/index.html"
msgid "Copy original assembly excerpt"
msgstr "원본 어셈블리 발췌문 복사"

#: website/public/showcase/dx-ball/index.html:507
msgctxt "page:showcase/dx-ball/index.html"
msgid "Copy sound-pan function"
msgstr "사운드 패닝 함수 복사"

#: website/public/showcase/dx-ball/index.html:578
msgctxt "page:showcase/dx-ball/index.html"
msgid "Copy complete sound-pan assembly"
msgstr "전체 사운드 패닝 어셈블리 복사"

#: website/public/showcase/dx-ball/index.html:732
msgctxt "page:showcase/dx-ball/index.html"
msgid "Copy DX-Ball analysis command"
msgstr "DX-Ball 분석 명령 복사"

#: website/public/showcase/dx-ball/index.html:791
msgctxt "page:showcase/dx-ball/index.html"
msgid "Back to top"
msgstr "맨 위로"

#: website/public/showcase/index.html:107
msgctxt "page:showcase/index.html"
msgid "Skip to content"
msgstr "본문으로 건너뛰기"

#. {ph0}: <a href="../">
#. {ph1}: </a>
#: website/public/showcase/index.html:199
#, python-brace-format
msgctxt "page:showcase/index.html"
msgid "{ph0}Home{ph1} / Showcases"
msgstr "{ph0}홈{ph1} / 사례 소개"

#: website/public/showcase/index.html:200
msgctxt "page:showcase/index.html"
msgid "REA case studies."
msgstr "REA 사례 연구"

#: website/public/showcase/index.html:201
msgctxt "page:showcase/index.html"
msgid ""
"Android, games, Electron and a CTF challenge, with code, figures and checked"
" results."
msgstr "Android, 게임, Electron, CTF 문제를 코드, 그림, 검증 결과와 함께 살펴봅니다."

#: website/public/showcase/index.html:208
msgctxt "page:showcase/index.html"
msgid "Android · APK analysis"
msgstr "Android · APK 분석"

#: website/public/showcase/index.html:210
msgctxt "page:showcase/index.html"
msgid "How an authenticator generates a login code"
msgstr "인증 앱이 로그인 코드를 만드는 방법"

#: website/public/showcase/index.html:211
msgctxt "page:showcase/index.html"
msgid ""
"Find Aegis's six-digit code calculation in its released APK. Trace the "
"generating methods with REA, then move a demo clock to see why the code "
"changes every 30 seconds."
msgstr ""
"Aegis 배포 APK에서 6자리 코드 계산을 찾습니다. REA로 생성 메서드를 추적하고 데모 시계를 조절하며, 코드가 30초마다 바뀌는"
" 이유를 확인합니다."

#: website/public/showcase/index.html:222
msgctxt "page:showcase/index.html"
msgid "Read the Android case study"
msgstr "Android 사례 연구 읽기"

#: website/public/showcase/index.html:226
msgctxt "page:showcase/index.html"
msgid "CTF · Native analysis"
msgstr "CTF · 네이티브 분석"

#: website/public/showcase/index.html:228
msgctxt "page:showcase/index.html"
msgid "Solve a CTF flag checker"
msgstr "CTF 플래그 검사기 풀기"

#: website/public/showcase/index.html:229
msgctxt "page:showcase/index.html"
msgid ""
"Inspect an easy DownUnderCTF challenge with REA. Find its checking "
"functions, turn masks and sums into equations, then verify the solved flag "
"with the original program."
msgstr ""
"REA로 쉬운 DownUnderCTF 문제를 분석합니다. 검사 함수를 찾고 마스크와 합계를 방정식으로 바꾼 뒤, 구한 플래그를 원본 "
"프로그램으로 검증합니다."

#: website/public/showcase/index.html:240
msgctxt "page:showcase/index.html"
msgid "Read the CTF case study"
msgstr "CTF 사례 연구 읽기"

#: website/public/showcase/index.html:244
msgctxt "page:showcase/index.html"
msgid "Native · Reconstruction"
msgstr "네이티브 프로그램 · 재구현"

#: website/public/showcase/index.html:246
msgctxt "page:showcase/index.html"
msgid "DX-Ball's sound-pan calculation"
msgstr "DX-Ball의 사운드 패닝 계산"

#: website/public/showcase/index.html:247
msgctxt "page:showcase/index.html"
msgid ""
"Recover a sound-pan calculation from a 1996 Windows game. REA's "
"instructions, caller references and numeric constants lead to a small C "
"function, checked against the original behavior and all 63 compiled bytes."
msgstr ""
"1996년 Windows 게임에서 사운드 패닝 계산을 복구합니다. REA의 명령어, 호출 참조, 숫자 상수로 작은 C 함수를 작성하고 "
"원본 동작 및 컴파일된 63바이트 전체와 비교합니다."

#: website/public/showcase/index.html:259
msgctxt "page:showcase/index.html"
msgid "Read the DX-Ball case study"
msgstr "DX-Ball 사례 연구 읽기"

#: website/public/showcase/index.html:263
msgctxt "page:showcase/index.html"
msgid "Electron · Feature tracing"
msgstr "Electron · 기능 추적"

#: website/public/showcase/index.html:265
msgctxt "page:showcase/index.html"
msgid "How Notion copies text and HTML"
msgstr "Notion이 텍스트와 HTML을 복사하는 방법"

#: website/public/showcase/index.html:266
msgctxt "page:showcase/index.html"
msgid ""
"Trace a page-facing API through Notion's packaged JavaScript. Follow its IPC"
" wrappers to the system clipboard, then see how a small HTML marker keeps "
"rich block data connected to a copy."
msgstr ""
"Notion에 패키징된 JavaScript에서 페이지 API를 추적합니다. IPC 래퍼를 따라 시스템 클립보드에 도달하고, 작은 HTML"
" 마커가 복사본과 서식 있는 블록 데이터를 연결하는 방식을 살펴봅니다."

#: website/public/showcase/index.html:277
msgctxt "page:showcase/index.html"
msgid "Read the Notion case study"
msgstr "Notion 사례 연구 읽기"

#: website/public/showcase/index.html:281
msgctxt "page:showcase/index.html"
msgid "PC-98 DOS · Reconstruction"
msgstr "PC-98 DOS · 재구성"

#: website/public/showcase/index.html:283
msgctxt "page:showcase/index.html"
msgid "How TH04 aims a ring of bullets"
msgstr "TH04가 원형 탄막을 조준하는 방법"

#: website/public/showcase/index.html:284
msgctxt "page:showcase/index.html"
msgid ""
"Inspect the original 16-bit angle helper with REA. Match its multiply, "
"divide and coordinate operations to readable C++, then see how they produce "
"a ring aimed at the player."
msgstr ""
"REA로 원본 16비트 각도 보조 함수를 분석합니다. 곱셈, 나눗셈, 좌표 연산을 읽기 쉬운 C++과 연결하고, 플레이어를 겨냥한 원형 "
"탄막을 만드는 방식을 살펴봅니다."

#: website/public/showcase/index.html:295
msgctxt "page:showcase/index.html"
msgid "Read the TH04 case study"
msgstr "TH04 사례 연구 읽기"

#: website/public/showcase/index.html:300
msgctxt "page:showcase/index.html"
msgid "Step-by-step guides"
msgstr "단계별 가이드"

#: website/public/showcase/index.html:301
msgctxt "page:showcase/index.html"
msgid ""
"The guides walk through a native calculation, an Electron export and a "
"browser request. Each starts with a prompt and a concrete target."
msgstr ""
"네이티브 계산, Electron 내보내기, 브라우저 요청을 단계별로 살펴봅니다. 각 가이드는 프롬프트와 구체적인 분석 대상으로 "
"시작합니다."

#: website/public/showcase/index.html:305
msgctxt "page:showcase/index.html"
msgid "Read the guides"
msgstr "가이드 읽기"

#: website/public/showcase/index.html:6
msgctxt "page:showcase/index.html"
msgid "Reverse Engineering Case Studies — REA"
msgstr "리버스 엔지니어링 사례 연구—REA"

#: website/public/showcase/index.html:7
msgctxt "page:showcase/index.html"
msgid ""
"Follow REA investigations through code, figures and demos: an Android "
"authenticator, DX-Ball, Notion, TH04 and a DownUnderCTF flag checker."
msgstr ""
"REA의 분석을 코드, 그림, 데모로 따라가 보세요. Android 인증 앱, DX-Ball, Notion, TH04, "
"DownUnderCTF 플래그 검사기를 다룹니다."

#: website/public/showcase/index.html:323
msgctxt "page:showcase/index.html"
msgid "Back to top"
msgstr "맨 위로"

#: website/public/showcase/notion/index.html:107
msgctxt "page:showcase/notion/index.html"
msgid "Skip to content"
msgstr "본문으로 건너뛰기"

#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/showcase/notion/index.html:199
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "{ph0}Home{ph1} / {ph2}Showcases{ph3} / Notion"
msgstr "{ph0}홈{ph1} / {ph2}사례 소개{ph3} / Notion"

#: website/public/showcase/notion/index.html:202
msgctxt "page:showcase/notion/index.html"
msgid "Case study · Electron"
msgstr "사례 연구 · Electron"

#. {ph0}: <br />
#: website/public/showcase/notion/index.html:203
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "How Notion copies{ph0}text and HTML."
msgstr "Notion이{ph0}텍스트와 HTML을 복사하는 방법."

#: website/public/showcase/notion/index.html:204
msgctxt "page:showcase/notion/index.html"
msgid ""
"Trace a clipboard call from Notion's page API, through the preload and main "
"process, to Electron's clipboard writer."
msgstr "Notion 페이지 API에서 프리로드와 메인 프로세스를 거쳐 Electron의 클립보드 쓰기까지 추적합니다."

#: website/public/showcase/notion/index.html:208
msgctxt "page:showcase/notion/index.html"
msgid "Notion Desktop 7.6.1 · JavaScript · REA"
msgstr "Notion Desktop 7.6.1 · JavaScript · REA"

#: website/public/showcase/notion/index.html:212
msgctxt "page:showcase/notion/index.html"
msgid "The bridge inside Notion's desktop package"
msgstr "Notion 데스크톱 패키지의 브리지"

#. {ph0}: <span class="flow-label">
#. {ph1}: </span>
#. {ph2}: <span class="flow-node">
#. {ph3}: <code>clipboard.write(data)</code>
#. {ph4}: </span>
#. {ph5}: <span class="flow-note" >
#. {ph6}: </span >
#: website/public/showcase/notion/index.html:214
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"{ph0}01 · Page-facing API{ph1} {ph2}{ph3}{ph4} {ph5}The preload exposes a "
"callable method.{ph6}"
msgstr ""
"{ph0}01 · 페이지에 공개된 API{ph1} {ph2}{ph3}{ph4} {ph5}프리로드는 호출 가능한 메서드를 "
"노출합니다.{ph6}"

#. {ph0}: <span class="flow-label">
#. {ph1}: </span>
#. {ph2}: <span class="flow-node">
#. {ph3}: <code>ipcRenderer.invoke</code>
#. {ph4}: </span>
#. {ph5}: <span class="flow-note" >
#. {ph6}: </span >
#: website/public/showcase/notion/index.html:221
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"{ph0}02 · Preload wrapper{ph1} {ph2}{ph3}{ph4} {ph5}The wrapper sends the "
"channel and arguments.{ph6}"
msgstr "{ph0}02 · 프리로드 래퍼{ph1} {ph2}{ph3}{ph4} {ph5}래퍼는 채널과 인수를 전달합니다.{ph6}"

#. {ph0}: <span class="flow-label">
#. {ph1}: </span>
#. {ph2}: <span class="flow-node">
#. {ph3}: <code>ipcMain.handle</code>
#. {ph4}: </span>
#. {ph5}: <span class="flow-note" >
#. {ph6}: </span >
#: website/public/showcase/notion/index.html:228
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"{ph0}03 · Main-process handler{ph1} {ph2}{ph3}{ph4} {ph5}The receiver checks"
" which page sent it.{ph6}"
msgstr ""
"{ph0}03 · 메인 프로세스 핸들러{ph1} {ph2}{ph3}{ph4} {ph5}수신 측은 어느 페이지에서 메시지를 보냈는지 "
"확인합니다.{ph6}"

#. {ph0}: <span class="flow-label">
#. {ph1}: </span>
#. {ph2}: <span class="flow-node">
#. {ph3}: <code>clipboard.write(data)</code>
#. {ph4}: </span>
#. {ph5}: <span class="flow-note" >
#. {ph6}: </span >
#: website/public/showcase/notion/index.html:235
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"{ph0}04 · System clipboard{ph1} {ph2}{ph3}{ph4} {ph5}Electron writes the "
"supplied text and HTML.{ph6}"
msgstr ""
"{ph0}04 · 시스템 클립보드{ph1} {ph2}{ph3}{ph4} {ph5}Electron은 전달받은 텍스트와 HTML을 "
"기록합니다.{ph6}"

#. {ph0}: <code class="notion-channel">notion:clipboard:write</code>
#: website/public/showcase/notion/index.html:243
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "One channel joins the two sides: {ph0}"
msgstr "한 채널이 양쪽을 연결합니다: {ph0}"

#: website/public/showcase/notion/index.html:247
msgctxt "page:showcase/notion/index.html"
msgid ""
"The packaged code uses the same channel in the preload and main process. "
"Resolving the wrappers reveals the Electron calls behind those names."
msgstr ""
"패키지 코드의 프리로드와 메인 프로세스는 같은 채널을 사용합니다. 래퍼의 구현을 따라가면 그 이름 뒤에 있는 Electron 호출을 "
"확인할 수 있습니다."

#: website/public/showcase/notion/index.html:256
msgctxt "page:showcase/notion/index.html"
msgid "In this case study"
msgstr "사례 목차"

#. {ph0}: <a href="#clipboard">
#. {ph1}: </a>
#: website/public/showcase/notion/index.html:258
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "{ph0}Follow the clipboard bridge{ph1}"
msgstr "{ph0}클립보드 브리지 추적{ph1}"

#. {ph0}: <a href="#rich-clipboard">
#. {ph1}: </a>
#: website/public/showcase/notion/index.html:259
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "{ph0}Keeping a block's structure{ph1}"
msgstr "{ph0}블록 구조 유지{ph1}"

#. {ph0}: <a href="#continue">
#. {ph1}: </a>
#: website/public/showcase/notion/index.html:260
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "{ph0}More examples and sources{ph1}"
msgstr "{ph0}추가 예제와 출처{ph1}"

#: website/public/showcase/notion/index.html:265
msgctxt "page:showcase/notion/index.html"
msgid "Where does the copy operation go?"
msgstr "복사 작업은 어디로 이어질까요?"

#. {ph0}: <code>clipboard.write</code>
#: website/public/showcase/notion/index.html:266
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"The page sees a method called {ph0}. Its implementation in the preload is a "
"wrapper. The useful question is what that wrapper sends, and which code "
"receives it."
msgstr ""
"페이지에는 {ph0} 메서드가 보입니다. 프리로드의 실제 구현은 래퍼입니다. 이 래퍼가 무엇을 보내고 어느 코드가 받는지 살펴보는 것이 "
"핵심입니다."

#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/showcase/notion/index.html:273
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}코딩 에이전트"

#: website/public/showcase/notion/index.html:277
#: website/public/showcase/notion/index.html:350
#: website/public/showcase/notion/index.html:379
#: website/public/showcase/notion/index.html:410
#: website/public/showcase/notion/index.html:438
msgctxt "page:showcase/notion/index.html"
msgid "Copy"
msgstr "복사"

#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="notion-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/showcase/notion/index.html:286
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to trace how Notion copies text and HTML to the "
"system clipboard. Show the code at each step.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}›{ph1}{ph2}REA를 사용해 Notion이 텍스트와 HTML을 시스템 클립보드에 복사하는 과정을 추적해 주세요. 각 "
"단계의 코드를 보여 주세요.{ph3}{ph4}{ph5}"

#: website/public/showcase/notion/index.html:294
msgctxt "page:showcase/notion/index.html"
msgid ""
"An example prompt with Notion's local application package available to your "
"coding agent."
msgstr "에이전트가 로컬 Notion 앱 패키지에 접근할 수 있는 상태에서 사용하는 예제 프롬프트입니다."

#: website/public/showcase/notion/index.html:299
msgctxt "page:showcase/notion/index.html"
msgid "REA finds where to start reading"
msgstr "REA로 읽기 시작할 위치 찾기"

#: website/public/showcase/notion/index.html:300
msgctxt "page:showcase/notion/index.html"
msgid ""
"Analyzing the tab preload with REA locates the API exposed to the page and "
"the call that sends an IPC request. Both findings come with source ranges in"
" the minified bundle:"
msgstr ""
"REA로 탭 프리로드를 분석하면 페이지에 노출된 API와 IPC 요청 호출을 찾습니다. 두 결과에는 압축된 번들의 소스 범위가 함께 "
"제공됩니다:"

#: website/public/showcase/notion/index.html:306
msgctxt "page:showcase/notion/index.html"
msgid "REA findings → two places to open"
msgstr "REA 분석 결과 → 살펴볼 위치 두 곳"

#. {ph0}: <code>analyze_javascript_application</code>
#: website/public/showcase/notion/index.html:321
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"Selected fields from a fresh {ph0} result on Notion's tab preload, recorded "
"with REA 4.1.0. Positions use the original bundle's line and zero-based "
"column."
msgstr ""
"REA 4.1.0으로 Notion 탭 프리로드를 새로 분석한 {ph0} 결과의 일부 필드입니다. 위치는 원본 번들의 줄 번호와 0부터 "
"세는 열 번호입니다."

#. {ph0}: <code>invokerInMain</code>
#. {ph1}: <code class="notion-channel">notion:clipboard:write</code>
#: website/public/showcase/notion/index.html:328
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"The agent opens those locations, finds the clipboard member in the assembled"
" API, and reads {ph0}. Its call site supplies {ph1}. That name gives the "
"agent something precise to look for in the main bundle. The four excerpts "
"below show the route it connects."
msgstr ""
"에이전트는 해당 위치를 열고, 조합된 API에서 clipboard 멤버를 찾아 {ph0}를 읽습니다. 이 함수의 호출 지점에서는 "
"{ph1}을 전달합니다. 이 이름 덕분에 에이전트는 메인 번들에서 무엇을 찾아야 할지 정확히 알 수 있습니다. 아래 네 발췌문은 "
"에이전트가 연결한 경로를 보여줍니다."

#: website/public/showcase/notion/index.html:337
msgctxt "page:showcase/notion/index.html"
msgid "Four short pieces of code"
msgstr "네 개의 짧은 코드 조각"

#: website/public/showcase/notion/index.html:338
msgctxt "page:showcase/notion/index.html"
msgid ""
"Simplified from the packaged JavaScript, with readable variable names. "
"Unrelated members are omitted."
msgstr "패키징된 JavaScript를 읽기 쉬운 변수 이름으로 단순화했습니다. 관련 없는 멤버는 생략했습니다."

#: website/public/showcase/notion/index.html:344
msgctxt "page:showcase/notion/index.html"
msgid "Start at the API exposed to the page"
msgstr "페이지에 노출된 API에서 시작"

#. {ph0}: <code>invokerInMain</code>
#: website/public/showcase/notion/index.html:366
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"This member supplies the channel name. The implementation of {ph0} tells us "
"how the request leaves the page's process."
msgstr ""
"이 멤버는 채널 이름을 제공합니다. {ph0}의 구현을 보면 요청이 페이지의 프로세스에서 어떻게 전달되어 나가는지 알 수 있습니다."

#: website/public/showcase/notion/index.html:373
msgctxt "page:showcase/notion/index.html"
msgid "Resolve the preload's wrapper"
msgstr "프리로드 래퍼의 구현 추적"

#. {ph0}: <code class="notion-channel">notion:clipboard:write</code>
#: website/public/showcase/notion/index.html:396
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"The returned function forwards the arguments through Electron's request-and-"
"response IPC. We can now look for {ph0} on the main-process side."
msgstr ""
"반환된 함수는 Electron의 요청·응답 IPC로 인수를 전달합니다. 이제 메인 프로세스에서 {ph0}을 찾을 수 있습니다."

#: website/public/showcase/notion/index.html:404
msgctxt "page:showcase/notion/index.html"
msgid "Check how the receiver is registered"
msgstr "수신 핸들러 등록 방식 확인"

#. {ph0}: <code>addListener</code>
#. {ph1}: <code>ipcMain.handle</code>
#: website/public/showcase/notion/index.html:425
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"The main process uses another wrapper. Its {ph0} method registers an {ph1} "
"receiver for that channel."
msgstr "메인 프로세스도 래퍼를 사용합니다. {ph0} 메서드가 해당 채널에 {ph1} 수신 핸들러를 등록합니다."

#: website/public/showcase/notion/index.html:432
msgctxt "page:showcase/notion/index.html"
msgid "Find the write and its sender check"
msgstr "쓰기 호출과 발신자 검사 찾기"

#: website/public/showcase/notion/index.html:455
msgctxt "page:showcase/notion/index.html"
msgid ""
"This is the destination. After checking the sender, the handler passes the "
"supplied data to Electron's clipboard API. The channel and the two resolved "
"wrappers connect the exposed method to this call."
msgstr ""
"여기가 최종 도착점입니다. 발신자를 확인한 뒤 핸들러는 전달받은 데이터를 Electron 클립보드 API에 넘깁니다. 채널과 두 래퍼의 "
"구현을 통해 노출된 메서드와 이 호출이 연결됩니다."

#: website/public/showcase/notion/index.html:466
msgctxt "page:showcase/notion/index.html"
msgid "How does a copied block keep its structure?"
msgstr "복사한 블록은 구조를 어떻게 유지할까요?"

#. {ph0}: <code>electronApi.clipboard.write</code>
#: website/public/showcase/notion/index.html:467
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"Notion's web editor sends text and HTML through {ph0}. It keeps the block "
"data locally and puts an ID in the copied HTML to connect them."
msgstr ""
"Notion의 웹 편집기는 {ph0}를 통해 텍스트와 HTML을 보냅니다. 블록 데이터는 로컬에 유지하고, 복사한 HTML에 ID를 넣어"
" 둘을 연결합니다."

#: website/public/showcase/notion/index.html:473
msgctxt "page:showcase/notion/index.html"
msgid "HTML links to saved block data"
msgstr "HTML과 저장된 블록 데이터의 연결"

#: website/public/showcase/notion/index.html:497
msgctxt "page:showcase/notion/index.html"
msgid "Read the HTML ID"
msgstr "HTML의 ID 읽기"

#: website/public/showcase/notion/index.html:498
msgctxt "page:showcase/notion/index.html"
msgid "Find the same local ID"
msgstr "같은 로컬 ID 찾기"

#: website/public/showcase/notion/index.html:499
msgctxt "page:showcase/notion/index.html"
msgid "Restore Notion block data"
msgstr "Notion 블록 데이터 복원"

#: website/public/showcase/notion/index.html:501
msgctxt "page:showcase/notion/index.html"
msgid ""
"Illustrative text and ID. The recorded module test restores the block data "
"when IDs match; a stale entry returns only text and HTML."
msgstr ""
"텍스트와 ID는 예시입니다. 기록된 모듈 테스트에서는 ID가 같으면 블록 데이터를 복원하고, 저장 항목이 만료됐으면 텍스트와 HTML만 "
"반환합니다."

#: website/public/showcase/notion/index.html:507
msgctxt "page:showcase/notion/index.html"
msgid ""
"On paste, Notion looks for the HTML ID and checks it against the saved copy."
" Matching IDs restore the block data."
msgstr "붙여넣을 때 Notion은 HTML의 ID를 찾아 저장된 사본과 대조합니다. ID가 일치하면 블록 데이터를 복원합니다."

#: website/public/showcase/notion/index.html:511
msgctxt "page:showcase/notion/index.html"
msgid "Clipboard format recorded from web assets cached on July 13, 2026."
msgstr "2026년 7월 13일 캐시된 웹 자산에서 기록한 클립보드 형식입니다."

#: website/public/showcase/notion/index.html:517
msgctxt "page:showcase/notion/index.html"
msgid "More examples and sources"
msgstr "추가 예제와 출처"

#: website/public/showcase/notion/index.html:519
msgctxt "page:showcase/notion/index.html"
msgid "Another example: Markdown tables"
msgstr "다른 예제: Markdown 표"

#: website/public/showcase/notion/index.html:520
msgctxt "page:showcase/notion/index.html"
msgid ""
"Notion parses Markdown into block data. This example shows how a table "
"becomes header and data rows."
msgstr ""
"Notion은 Markdown을 파싱해 블록 데이터로 바꿉니다. 이 예제는 표가 머리글 행과 데이터 행으로 바뀌는 과정을 보여줍니다."

#: website/public/showcase/notion/index.html:525
msgctxt "page:showcase/notion/index.html"
msgid "A table through Notion's Markdown parser"
msgstr "Notion Markdown 파서를 거친 표"

#: website/public/showcase/notion/index.html:546
msgctxt "page:showcase/notion/index.html"
msgid ""
"Recorded output from an extracted Markdown parser. The table becomes rows "
"and cells."
msgstr "추출한 Markdown 파서의 실행 기록입니다. 표가 행과 셀로 변환됩니다."

#: website/public/showcase/notion/index.html:553
msgctxt "page:showcase/notion/index.html"
msgid "Another path: the offline SQLite connection"
msgstr "다른 경로: 오프라인 SQLite 연결"

#. {ph0}: <code>getSqliteMeta</code>
#: website/public/showcase/notion/index.html:554
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"Notion's renderer requests {ph0} through IPC. The main process creates a "
"message channel and gives one port to the renderer and the other to a SQLite"
" utility process. Subsequent statement batches and results travel over that "
"port."
msgstr ""
"Notion의 렌더러는 IPC를 통해 {ph0}를 요청합니다. 메인 프로세스는 메시지 채널을 만들고 한쪽 포트는 렌더러에, 다른 쪽 "
"포트는 SQLite 유틸리티 프로세스에 전달합니다. 이후의 SQL 문 배치와 결과는 이 포트를 통해 오갑니다."

#: website/public/showcase/notion/index.html:560
msgctxt "page:showcase/notion/index.html"
msgid ""
"Following this handoff explains where the database work runs, and why "
"tracing only the initial IPC request misses the later conversation."
msgstr ""
"이 전달 과정을 추적하면 데이터베이스 작업이 어디서 실행되는지, 첫 IPC 요청만 추적하면 왜 이후 통신을 놓치는지 알 수 있습니다."

#: website/public/showcase/notion/index.html:567
msgctxt "page:showcase/notion/index.html"
msgid "Sources and how to read the excerpts"
msgstr "출처 및 발췌문 읽기 방법"

#. {ph0}: <code>app.asar</code>
#. {ph1}: <code>main/index.js</code>
#. {ph2}: <code>isNotionWebContents</code>
#: website/public/showcase/notion/index.html:568
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"The clipboard bridge comes from Notion Desktop 7.6.1's {ph0}: the tab "
"preload and {ph1}. The excerpts expand minified variable names and omit "
"unrelated code; the sender-check helper is shown with its underlying {ph2} "
"call."
msgstr ""
"클립보드 브리지는 Notion Desktop 7.6.1의 {ph0} 안에 있는 탭 프리로드와 {ph1}에서 가져왔습니다. 발췌문은 짧은 "
"변수 이름을 풀어 쓰고 관련 없는 코드를 생략했습니다. 발신자 검사 함수는 내부의 {ph2} 호출과 함께 표시했습니다."

#. {ph0}: <code>747001</code>
#. {ph1}: <code>58169</code>
#. {ph2}: <code>736810</code>
#. {ph3}: <code>422457</code>
#: website/public/showcase/notion/index.html:576
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"The virtual clipboard and Markdown examples come from web assets cached on "
"July 13, 2026, including modules {ph0}, {ph1}, {ph2} and {ph3}. Those assets"
" have their own version. Saved probes executed extracted modules and small "
"harnesses; their outputs describe those probes rather than a captured "
"desktop UI session."
msgstr ""
"가상 클립보드와 Markdown 예제는 2026년 7월 13일 캐시된 웹 자산의 모듈 {ph0}, {ph1}, {ph2}, {ph3}에서"
" 가져왔습니다. 이 자산에는 별도 버전이 있습니다. 저장된 실험에서는 추출한 모듈과 작은 테스트 코드를 실행했습니다. 출력은 해당 실험의"
" 결과이며 데스크톱 UI 세션을 캡처한 것은 아닙니다."

#: website/public/showcase/notion/index.html:584
msgctxt "page:showcase/notion/index.html"
msgid ""
"The REA result shown here is a focused analysis of the saved tab preload, "
"recorded with the published REA 4.1.0 package. It locates the API and invoke"
" operation. The clipboard member and matching receiver are connected by "
"reading their wrapper implementations in the package."
msgstr ""
"여기의 REA 결과는 공개된 REA 4.1.0 패키지로 저장된 탭 프리로드를 집중 분석한 기록입니다. API와 invoke 호출의 위치를"
" 찾습니다. 클립보드 멤버와 대응 수신부는 패키지의 래퍼 구현을 읽어 연결했습니다."

#. {ph0}: <code>422457</code>
#: website/public/showcase/notion/index.html:591
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"The Markdown example uses parser module {ph0}. Saved module tests show that "
"both page and chat filters preserve this table. The paste/import, structured"
" Markdown and AI/chat parsers have separate entry points and intermediate "
"formats."
msgstr ""
"Markdown 예제는 파서 모듈 {ph0}을 사용합니다. 저장된 모듈 테스트에서 페이지와 채팅 필터 모두 이 표를 보존했습니다. "
"붙여넣기·가져오기, 구조화된 Markdown, AI·채팅 파서는 진입점과 중간 형식이 각각 다릅니다."

#. {ph0}: <a href="../../guides/javascript/" >
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/showcase/notion/index.html:599
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"{ph0}JavaScript application guide{ph1}{ph2}Follow a small Electron "
"application's export feature.{ph3}"
msgstr "{ph0}JavaScript 앱 가이드{ph1}{ph2}작은 Electron 앱의 내보내기 기능을 추적합니다.{ph3}"

#. {ph0}: <a href="../dx-ball/">
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/showcase/notion/index.html:606
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"{ph0}DX-Ball reconstruction{ph1}{ph2}Follow native instructions to a checked"
" C function.{ph3}"
msgstr "{ph0}DX-Ball 재구성{ph1}{ph2}네이티브 명령어에서 검증된 C 함수까지 추적합니다.{ph3}"

#: website/public/showcase/notion/index.html:6
msgctxt "page:showcase/notion/index.html"
msgid "Notion Electron Reverse Engineering: Clipboard — REA"
msgstr "Notion Electron 리버스 엔지니어링: 클립보드 — REA"

#: website/public/showcase/notion/index.html:7
msgctxt "page:showcase/notion/index.html"
msgid ""
"Follow Notion's clipboard API through Electron's preload, IPC wrappers and "
"main process, with short code excerpts and a look at its rich clipboard "
"format."
msgstr ""
"짧은 코드 발췌로 Notion 클립보드 API를 Electron의 프리로드, IPC 래퍼, 메인 프로세스까지 추적하고 서식 있는 클립보드"
" 형식을 살펴봅니다."

#: website/public/showcase/notion/index.html:255
msgctxt "page:showcase/notion/index.html"
msgid "On this page"
msgstr "이 페이지 목차"

#: website/public/showcase/notion/index.html:263
msgctxt "page:showcase/notion/index.html"
msgid "Notion Electron case study"
msgstr "Notion Electron 사례 연구"

#: website/public/showcase/notion/index.html:277
msgctxt "page:showcase/notion/index.html"
msgid "Copy Notion analysis prompt"
msgstr "Notion 분석 프롬프트 복사"

#: website/public/showcase/notion/index.html:350
msgctxt "page:showcase/notion/index.html"
msgid "Copy Notion preload excerpt"
msgstr "Notion 프리로드 발췌문 복사"

#: website/public/showcase/notion/index.html:379
msgctxt "page:showcase/notion/index.html"
msgid "Copy Notion invoke wrapper excerpt"
msgstr "Notion invoke 래퍼 발췌문 복사"

#: website/public/showcase/notion/index.html:410
msgctxt "page:showcase/notion/index.html"
msgid "Copy Notion handler wrapper excerpt"
msgstr "Notion 핸들러 래퍼 발췌문 복사"

#: website/public/showcase/notion/index.html:438
msgctxt "page:showcase/notion/index.html"
msgid "Copy Notion clipboard receiver excerpt"
msgstr "Notion 클립보드 수신부 발췌문 복사"

#: website/public/showcase/notion/index.html:493
msgctxt "page:showcase/notion/index.html"
msgid "Restoring rich clipboard data on paste"
msgstr "붙여넣을 때 서식 있는 클립보드 데이터 복원"

#: website/public/showcase/notion/index.html:637
msgctxt "page:showcase/notion/index.html"
msgid "Back to top"
msgstr "맨 위로"

#: website/public/showcase/th04/index.html:107
msgctxt "page:showcase/th04/index.html"
msgid "Skip to content"
msgstr "본문으로 건너뛰기"

#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/showcase/th04/index.html:199
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}Home{ph1} / {ph2}Showcases{ph3} / TH04"
msgstr "{ph0}홈{ph1} / {ph2}사례 소개{ph3} / TH04"

#: website/public/showcase/th04/index.html:202
msgctxt "page:showcase/th04/index.html"
msgid "Case study · Touhou 4: Lotus Land Story"
msgstr "사례 연구 · 동방 4:로터스 랜드 스토리"

#. {ph0}: <br />
#: website/public/showcase/th04/index.html:203
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "Reconstructing TH04's{ph0}bullet patterns."
msgstr "TH04의 탄막 패턴{ph0}재구성하기"

#: website/public/showcase/th04/index.html:204
msgctxt "page:showcase/th04/index.html"
msgid ""
"A ring of bullets starts with a short angle calculation. Use REA to inspect "
"the original DOS function, then follow its instructions into readable C++."
msgstr ""
"원형 탄막은 짧은 각도 계산에서 시작됩니다. REA로 원본 DOS 함수를 분석하고, 명령어가 읽기 쉬운 C++로 어떻게 이어지는지 "
"살펴보세요."

#: website/public/showcase/th04/index.html:209
msgctxt "page:showcase/th04/index.html"
msgid "PC-98 · 16-bit DOS · C++ and assembly"
msgstr "PC-98 ·16 비트 도스 · C++및 어셈블리"

#: website/public/showcase/th04/index.html:210
msgctxt "page:showcase/th04/index.html"
msgid "View the TH04 reconstruction"
msgstr "TH04 재구성 보기"

#: website/public/showcase/th04/index.html:216
msgctxt "page:showcase/th04/index.html"
msgid "From original instructions to checked source"
msgstr "원본 명령어에서 검증된 소스까지"

#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/th04/index.html:218
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}01 · Original game{ph1}{ph2}MAIN.EXE{ph3}{ph4}The PC-98 executable and "
"its bullet-angle helper.{ph5}"
msgstr ""
"{ph0}01 · 원본 게임{ph1}{ph2}MAIN.EXE{ph3}{ph4}PC-98 실행 파일과 탄환 각도 계산을 위한 도우미 "
"함수입니다.{ph5}"

#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/th04/index.html:225
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}02 · Inspect with REA{ph1}{ph2}Instructions + "
"references{ph3}{ph4}Verify the loaded DOS code and read the angle "
"calculation from the executable.{ph5}"
msgstr ""
"{ph0}02 · REA로 조사하기{ph1}{ph2}명령어 + 참조{ph3}{ph4}로드된 DOS 코드를 확인하고 실행 파일에서 각도 "
"계산을 읽습니다.{ph5}"

#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/th04/index.html:233
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}03 · Read the C++{ph1}{ph2}Space → aim → rotate{ph3}{ph4}Connect each "
"operation to the maintained reconstruction.{ph5}"
msgstr ""
"{ph0}03 · C++ 코드 읽기{ph1}{ph2}간격 배치 → 조준 → 회전{ph3}{ph4}각 연산을 유지 관리 중인 재구성 코드와"
" 연결합니다.{ph5}"

#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/th04/index.html:240
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}04 · Check the source{ph1}{ph2}2,139 matching bytes{ph3}{ph4}Recorded "
"compiler checks cover the bullet-generation code that contains this "
"helper.{ph5}"
msgstr ""
"{ph0}04 · 소스 확인{ph1}{ph2}일치하는 바이트 2,139개{ph3}{ph4}기록된 컴파일러 검사는 이 도우미가 포함된 탄환"
" 생성 코드를 다룹니다.{ph5}"

#: website/public/showcase/th04/index.html:249
msgctxt "page:showcase/th04/index.html"
msgid ""
"REA returns the original code and its analysis evidence. The TH04 project "
"supplies the maintained source and compiler checks."
msgstr "REA는 원본 코드와 분석 증거를 반환합니다. TH04 프로젝트는 유지보수 중인 소스와 컴파일러 검증을 제공합니다."

#: website/public/showcase/th04/index.html:257
msgctxt "page:showcase/th04/index.html"
msgid "In this case study"
msgstr "사례 목차"

#. {ph0}: <a href="#ring">
#. {ph1}: </a>
#: website/public/showcase/th04/index.html:259
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}The bullet ring{ph1}"
msgstr "{ph0}원형 탄막{ph1}"

#. {ph0}: <a href="#rea">
#. {ph1}: </a>
#: website/public/showcase/th04/index.html:260
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}What REA returns{ph1}"
msgstr "{ph0}REA의 반환 결과{ph1}"

#. {ph0}: <a href="#source">
#. {ph1}: </a>
#: website/public/showcase/th04/index.html:261
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}Assembly to C++{ph1}"
msgstr "{ph0}어셈블리에서 C++로{ph1}"

#. {ph0}: <a href="#checking">
#. {ph1}: </a>
#: website/public/showcase/th04/index.html:262
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}Checking the source{ph1}"
msgstr "{ph0}소스 검증{ph1}"

#. {ph0}: <a href="#project">
#. {ph1}: </a>
#: website/public/showcase/th04/index.html:263
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}The full project{ph1}"
msgstr "{ph0}전체 프로젝트{ph1}"

#: website/public/showcase/th04/index.html:268
msgctxt "page:showcase/th04/index.html"
msgid "How a ring aims at the player"
msgstr "원형 탄막이 플레이어를 조준하는 방식"

#: website/public/showcase/th04/index.html:269
msgctxt "page:showcase/th04/index.html"
msgid ""
"Elly's attack requests an aimed ring with an initial count of 16. One helper"
" calculates the direction of each bullet. The same ring can face a fixed "
"direction or turn toward the player."
msgstr ""
"엘리의 공격은 초기 탄환 수가 16개인 조준 원형 탄막을 요청합니다. 보조 함수 하나가 각 탄환의 방향을 계산합니다. 같은 원형 탄막을 "
"고정 방향으로 발사하거나 플레이어 쪽으로 회전할 수 있습니다."

#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/showcase/th04/index.html:276
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}코딩 에이전트"

#: website/public/showcase/th04/index.html:281
#: website/public/showcase/th04/index.html:337
#: website/public/showcase/th04/index.html:514
#: website/public/showcase/th04/index.html:548
msgctxt "page:showcase/th04/index.html"
msgid "Copy"
msgstr "복사"

#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="th04-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/showcase/th04/index.html:290
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to find how TH04 creates a ring of bullets and aims "
"it at the player. Explain the calculation and show the code.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}›{ph1}{ph2}REA로 TH04가 원형 탄막을 만들고 플레이어를 조준하는 방식을 찾아줘. 계산을 설명하고 코드도 "
"보여줘.{ph3}{ph4}{ph5}"

#: website/public/showcase/th04/index.html:299
msgctxt "page:showcase/th04/index.html"
msgid ""
"An example prompt, with the original executable and reconstruction checkout "
"available locally."
msgstr "원본 실행 파일과 체크아웃한 재구성 저장소를 로컬에 준비한 상태에서 사용하는 예제 프롬프트입니다."

#. {ph0}: <code>0, 16, 32, …, 240</code>
#: website/public/showcase/th04/index.html:303
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"TH04 stores a full clockwise turn in 256 angle units. For 16 bullets, each "
"index adds 16 units: {ph0}. Adding the player's direction rotates those "
"positions together."
msgstr ""
"TH04는 시계 방향 한 바퀴를 256각도 단위로 표현합니다. 탄환이 16개면 인덱스마다 16단위씩 더합니다: {ph0}. 플레이어 "
"방향을 더하면 모든 위치가 함께 회전합니다."

#. {ph0}: <a href="../../assets/figures/th04-bullet-ring.svg" >
#. {ph1}: </a >
#: website/public/showcase/th04/index.html:323
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"An illustration of the recovered angle math for count 16, player direction "
"40 and template rotation 0. {ph0}Open figure{ph1}"
msgstr "탄환 수 16, 플레이어 방향 40, 템플릿 회전 0일 때 복구한 각도 계산을 그린 예시입니다. {ph0}그림 열기{ph1}"

#: website/public/showcase/th04/index.html:331
msgctxt "page:showcase/th04/index.html"
msgid "The firing template in the recovered source"
msgstr "복구된 소스의 발사 템플릿"

#: website/public/showcase/th04/index.html:336
msgctxt "page:showcase/th04/index.html"
msgid "Elly's ring attack · source excerpt"
msgstr "Elly의 원형 탄막 공격 · 소스 발췌"

#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/0d72e9801a5c14c10384efcbb6734ceccb74ee63/src/main/boss/elly_phase_ring16.cpp#L26"
#. >
#. {ph1}: </a >
#: website/public/showcase/th04/index.html:351
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"These lines select the pattern before difficulty and performance tuning. "
"{ph0}Read the attack's source{ph1}."
msgstr "난이도와 성능 조정 전에 패턴을 선택하는 코드입니다. {ph0}공격 소스 읽기{ph1}."

#: website/public/showcase/th04/index.html:362
msgctxt "page:showcase/th04/index.html"
msgid "What REA returns"
msgstr "REA가 반환하는 내용"

#. {ph0}: <code>bullet_velocity_and_angle_set()</code>
#: website/public/showcase/th04/index.html:363
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"We inspect {ph0}, the function that sets each bullet's velocity and angle. "
"REA returns its instructions, pseudocode and references. Three parts of that"
" result explain the pattern."
msgstr ""
"각 탄환의 속도와 각도를 정하는 함수 {ph0}을 분석합니다. REA는 명령어, 의사 코드, 참조를 반환합니다. 결과의 세 부분으로 이 "
"패턴을 설명할 수 있습니다."

#: website/public/showcase/th04/index.html:371
msgctxt "page:showcase/th04/index.html"
msgid "Check the DOS image before reading its code"
msgstr "코드를 읽기 전에 DOS 이미지 검증"

#: website/public/showcase/th04/index.html:392
msgctxt "page:showcase/th04/index.html"
msgid ""
"The check ties the loaded code and relocation records to the supplied "
"executable. The path above is shortened for display."
msgstr "로드된 코드와 재배치 기록이 제공된 실행 파일에 대응하는지 검증합니다. 위 경로는 표시를 위해 줄였습니다."

#: website/public/showcase/th04/index.html:398
msgctxt "page:showcase/th04/index.html"
msgid "Read the ring's multiply and divide"
msgstr "원형 탄막의 곱셈·나눗셈 읽기"

#. {ph0}: <code>SI</code>
#. {ph1}: <code>DS:53AF</code>
#. {ph2}: <code>bullet_template.count</code>
#: website/public/showcase/th04/index.html:416
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0} holds the bullet index. The shift multiplies it by 256, then the "
"division uses the count read from {ph1}. The maintained source names that "
"field {ph2}. The complete sequence appears below."
msgstr ""
"{ph0}에는 탄환 인덱스가 있습니다. 시프트로 256을 곱한 뒤, {ph1}에서 읽은 탄환 수로 나눕니다. 유지보수 중인 소스에서는 이"
" 필드를 {ph2}라고 부릅니다. 전체 과정은 아래에 있습니다."

#: website/public/showcase/th04/index.html:425
msgctxt "page:showcase/th04/index.html"
msgid "Find where the pattern turns toward the player"
msgstr "패턴이 플레이어 쪽으로 향하는 위치 찾기"

#: website/public/showcase/th04/index.html:446
msgctxt "page:showcase/th04/index.html"
msgid ""
"The instruction operands expose two coordinate differences and a direction "
"helper. Its return value is added to the relative ring angle. Source names "
"make those addresses readable; REA lets the agent check the original "
"operations behind them."
msgstr ""
"명령어의 피연산자에서 두 좌표의 차이와 방향 보조 함수를 확인할 수 있습니다. 반환된 각도는 원형 탄막의 상대 각도에 더해집니다. 소스의"
" 이름은 주소의 의미를 알려주고, REA는 그 뒤의 원본 연산을 확인하게 해줍니다."

#: website/public/showcase/th04/index.html:457
msgctxt "page:showcase/th04/index.html"
msgid "From assembly to readable C++"
msgstr "어셈블리에서 읽기 쉬운 C++로"

#: website/public/showcase/th04/index.html:458
msgctxt "page:showcase/th04/index.html"
msgid ""
"Select a step to match the original instructions with the angle calculation."
" This summary follows the aimed-ring path; the full source also handles "
"spreads, stacks and random patterns."
msgstr ""
"단계를 선택해 원본 명령어와 각도 계산을 연결해 보세요. 이 요약은 조준 원형 탄막 경로를 따릅니다. 전체 소스는 확산형, 중첩형, "
"무작위 패턴도 처리합니다."

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/th04/index.html:469
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}01{ph1} Index"
msgstr "{ph0}01{ph1} 인덱스"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/th04/index.html:477
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}02{ph1} Space"
msgstr "{ph0}02{ph1} 간격 배치"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/th04/index.html:485
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}03{ph1} Aim"
msgstr "{ph0}03{ph1} 조준"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/th04/index.html:493
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}04{ph1} Rotate"
msgstr "{ph0}04{ph1} 회전"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/th04/index.html:501
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}05{ph1} Store"
msgstr "{ph0}05{ph1} 저장"

#: website/public/showcase/th04/index.html:513
msgctxt "page:showcase/th04/index.html"
msgid "REA · original 16-bit instructions"
msgstr "REA · 원본 16비트 명령어"

#: website/public/showcase/th04/index.html:547
msgctxt "page:showcase/th04/index.html"
msgid "Readable C++ · aimed-ring summary"
msgstr "읽기 쉬운 C++ · 조준 원형 탄막 요약"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>SI</code>
#: website/public/showcase/th04/index.html:576
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}01 · Read the bullet index.{ph1} The stack argument is loaded into "
"{ph2}. In a 16-bullet ring, this member index runs from 0 through 15."
msgstr ""
"{ph0}01 · 탄환 인덱스를 읽습니다.{ph1} 스택 인수를 {ph2}에 로드합니다. 탄환 16발로 이루어진 원형 탄막에서 이 "
"인덱스는 0부터 15까지입니다."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>SHL AX,8</code>
#. {ph3}: <code>IDIV</code>
#: website/public/showcase/th04/index.html:581
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}02 · Space the directions around a full turn.{ph1} {ph2} multiplies by "
"256. The count is zero-extended into a word, then {ph3} divides the product "
"by that count. For count 16, each index advances 16 angle units."
msgstr ""
"{ph0}02 · 한 바퀴에 걸쳐 방향을 균등하게 배치합니다.{ph1} {ph2} 명령은 256을 곱합니다. 탄환 개수를 워드 크기로 0"
" 확장한 뒤, {ph3} 명령으로 곱한 결과를 그 개수로 나눕니다. 개수가 16이면 인덱스가 하나 증가할 때마다 각도가 16단위씩 "
"증가합니다."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>AX</code>
#: website/public/showcase/th04/index.html:588
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}03 · Add the player direction.{ph1} The two subtractions form player-"
"minus-origin coordinates. The direction helper returns an angle in {ph2}; "
"adding it turns the whole ring toward the player."
msgstr ""
"{ph0}03 · 플레이어 방향을 더합니다.{ph1} 두 번의 뺄셈으로 플레이어 좌표에서 원점 좌표를 뺍니다. 방향 계산 도우미는 "
"{ph2}로 각도를 반환합니다. 이 각도를 더하면 원형 탄막 전체가 플레이어 쪽으로 회전합니다."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>ADD AL,[0x53ad]</code>
#: website/public/showcase/th04/index.html:594
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}04 · Add the pattern's rotation.{ph1} {ph2} adds the template angle. "
"Elly's initial template sets it to zero; other patterns can use the same "
"helper with a rotation."
msgstr ""
"{ph0}04 · 패턴의 회전을 더합니다.{ph1} {ph2} 명령으로 템플릿 각도를 더합니다. Elly의 초기 템플릿에서는 이 각도가 "
"0입니다. 다른 패턴은 같은 도우미에 회전값을 적용해 사용할 수 있습니다."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>AL</code>
#: website/public/showcase/th04/index.html:600
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}05 · Keep the final angle in one byte.{ph1} The store writes {ph2} to "
"the spawn-angle field. Values wrap after 255, just as the unsigned-byte cast"
" does. The surrounding source also converts this angle and speed into "
"velocity."
msgstr ""
"{ph0}05 · 최종 각도를 한 바이트에 저장합니다.{ph1} 저장 명령은 {ph2} 값을 생성 각도 필드에 기록합니다. 부호 없는 "
"바이트로 형 변환할 때와 마찬가지로, 값이 255를 넘으면 0부터 순환합니다. 주변 소스는 이 각도와 속력을 속도 벡터로 변환합니다."

#: website/public/showcase/th04/index.html:609
msgctxt "page:showcase/th04/index.html"
msgid ""
"The assembly selects the aimed-ring branch, aim calculation and final store."
" The C++ above is a readable summary. Compiler checks below apply to the "
"maintained source in the linked project."
msgstr ""
"어셈블리는 조준 원형 탄막 분기, 조준 계산, 최종 저장을 발췌한 것입니다. 위 C++는 읽기 쉬운 요약입니다. 아래 컴파일러 검증은 "
"연결된 프로젝트의 실제 유지보수 소스에 적용됩니다."

#: website/public/showcase/th04/index.html:615
msgctxt "page:showcase/th04/index.html"
msgid "Read the maintained ring and aim source"
msgstr "원형 탄막과 조준의 유지보수 소스 읽기"

#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/0d72e9801a5c14c10384efcbb6734ceccb74ee63/src/main/bullet/add_impl.hpp#L4"
#. >
#. {ph1}: </a >
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/0d72e9801a5c14c10384efcbb6734ceccb74ee63/src/main/bullet/add.cpp#L422"
#. >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/0d72e9801a5c14c10384efcbb6734ceccb74ee63/src/main/bullet/types.hpp#L6"
#. >
#. {ph5}: </a >
#: website/public/showcase/th04/index.html:644
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}Ring macro{ph1} · {ph2}Aim and velocity source{ph3} · {ph4}Angle "
"representation{ph5}"
msgstr "{ph0}원형 탄막 매크로{ph1} · {ph2}조준·속도 소스{ph3} · {ph4}각도 표현{ph5}"

#: website/public/showcase/th04/index.html:664
msgctxt "page:showcase/th04/index.html"
msgid "Checking the maintained source"
msgstr "유지보수 소스 검증"

#: website/public/showcase/th04/index.html:665
msgctxt "page:showcase/th04/index.html"
msgid ""
"The TH04 project's recorded checks compile the bullet-generation code, "
"including this helper, with its pinned Turbo C++ 4.0J toolchain."
msgstr ""
"TH04 프로젝트에 기록된 검사에서는 버전을 고정한 Turbo C++ 4.0J 도구 모음으로 이 도우미 함수를 포함한 탄환 생성 코드를 "
"컴파일합니다."

#: website/public/showcase/th04/index.html:672
msgctxt "page:showcase/th04/index.html"
msgid "2,139 matching bytes"
msgstr "2,139바이트 일치"

#: website/public/showcase/th04/index.html:673
msgctxt "page:showcase/th04/index.html"
msgid ""
"The compiled bullet-generation code matches a 2,139-byte section of the "
"original executable."
msgstr "컴파일된 탄환 생성 코드는 원본 실행 파일의 2,139바이트 구간과 일치합니다."

#: website/public/showcase/th04/index.html:679
msgctxt "page:showcase/th04/index.html"
msgid "Two clean builds"
msgstr "독립적인 클린 빌드 두 번"

#: website/public/showcase/th04/index.html:680
msgctxt "page:showcase/th04/index.html"
msgid ""
"Two separate builds produce the same matching bytes. The recorded input "
"hashes match the maintained source shown here."
msgstr "별도로 빌드한 두 결과가 같은 바이트로 일치합니다. 기록된 입력 해시는 여기서 보여주는 유지보수 소스와 일치합니다."

#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/0d72e9801a5c14c10384efcbb6734ceccb74ee63/docs/reconstruction/product/TH04_SEMANTIC_BULLET_GENERATION_V1236.md#validation"
#. >
#. {ph1}: </a >
#: website/public/showcase/th04/index.html:686
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "Recorded on 3 October 2026. {ph0}Read the compiler checks{ph1}."
msgstr "2026년 10월 3일 기록. {ph0}컴파일러 검증 읽기{ph1}."

#: website/public/showcase/th04/index.html:694
msgctxt "page:showcase/th04/index.html"
msgid "Target identity and analysis scope"
msgstr "대상 식별 정보와 분석 범위"

#: website/public/showcase/th04/index.html:699
msgctxt "page:showcase/th04/index.html"
msgid "Original target"
msgstr "원본 대상"

#. {ph0}: <code>MAIN.EXE</code>
#: website/public/showcase/th04/index.html:700
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}, 156,258 bytes, DOS MZ"
msgstr "{ph0}, 156,258바이트, DOS MZ"

#: website/public/showcase/th04/index.html:703
msgctxt "page:showcase/th04/index.html"
msgid "Helper entry"
msgstr "보조 함수 진입점"

#. {ph0}: <code>0x2cfc8</code>
#: website/public/showcase/th04/index.html:704
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0} in REA's loaded image"
msgstr "REA가 로드한 이미지의 {ph0}"

#: website/public/showcase/th04/index.html:707
msgctxt "page:showcase/th04/index.html"
msgid "Original file offset"
msgstr "원본 파일 오프셋"

#. {ph0}: <code>0x1e7c8</code>
#. {ph1}: <code>address_to_file_offset</code>
#: website/public/showcase/th04/index.html:708
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}, returned by {ph1}"
msgstr "{ph1}이 반환한 {ph0}"

#: website/public/showcase/th04/index.html:714
msgctxt "page:showcase/th04/index.html"
msgid "Recorded code inspection"
msgstr "기록된 코드 분석"

#: website/public/showcase/th04/index.html:715
msgctxt "page:showcase/th04/index.html"
msgid "REA 4.1.0 · 7 October 2026"
msgstr "REA 4.1.0 · 2026년 10월 7일"

#: website/public/showcase/th04/index.html:720
msgctxt "page:showcase/th04/index.html"
msgid ""
"Compiler checks cover the complete bullet-add code section, including this "
"helper. They also compare its MAP contribution and overlapping relocation."
msgstr "컴파일러 검사는 이 도우미 함수를 포함한 전체 탄환 추가 코드 섹션을 다룹니다. MAP 기여분과 겹치는 재배치도 비교합니다."

#. {ph0}: <code>0x1000</code>
#: website/public/showcase/th04/index.html:725
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"REA verified the static DOS load image at load segment {ph0}. Its addresses "
"describe that analysis image. The function result reports 503 body bytes in "
"two ranges across a 517-byte span; the selected instructions above lie in "
"those reported ranges."
msgstr ""
"REA는 로드 세그먼트 {ph0}에서 정적 DOS 로드 이미지를 검증했습니다. 주소는 이 분석 이미지를 기준으로 합니다. 함수 결과는 "
"전체 517바이트 범위 안의 두 구간에 본문 503바이트가 있다고 보고합니다. 위 발췌 명령어는 이 구간에 속합니다."

#. {ph0}: <code>0d72e980</code>
#: website/public/showcase/th04/index.html:732
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"The source names and compiler checks come from TH04 checkpoint {ph0}. "
"Earlier reconstruction observations used the project's own analysis scripts;"
" this page adds a fresh REA inspection of the same original target. The "
"supplied game's identity is pinned by its repository manifest, with "
"independent pristine-dump provenance still open."
msgstr ""
"소스의 이름과 컴파일러 검증은 TH04 체크포인트 {ph0}에서 가져왔습니다. 이전 재구성 관찰에는 프로젝트 자체 분석 스크립트를 "
"사용했으며, 이 페이지는 같은 원본 대상을 REA로 새로 분석한 결과를 추가합니다. 게임의 식별 정보는 저장소 매니페스트로 고정돼 "
"있지만, 독립적인 무변경 덤프의 출처 확인은 아직 남아 있습니다."

#: website/public/showcase/th04/index.html:740
msgctxt "page:showcase/th04/index.html"
msgid ""
"The figure illustrates the angle calculation. Full-game controls, timing and"
" PC-98 hardware behavior have separate runtime checks in the reconstruction "
"project."
msgstr ""
"그림은 각도 계산을 설명합니다. 전체 게임의 조작, 타이밍, PC-98 하드웨어 동작은 재구성 프로젝트에서 별도로 런타임 검증합니다."

#: website/public/showcase/th04/index.html:749
msgctxt "page:showcase/th04/index.html"
msgid "The full TH04 reconstruction"
msgstr "전체 TH04 재구성"

#: website/public/showcase/th04/index.html:750
msgctxt "page:showcase/th04/index.html"
msgid ""
"The project builds the game's four DOS products from maintained C++ and "
"assembly. Beyond bullet generation, the source covers stages, bosses, "
"rendering, input, menus, endings and score handling."
msgstr ""
"프로젝트는 유지보수 중인 C++과 어셈블리로 게임의 DOS 프로그램 네 개를 빌드합니다. 소스는 탄환 생성 외에도 스테이지, 보스, "
"렌더링, 입력, 메뉴, 엔딩, 점수 처리를 다룹니다."

#. {ph0}: <a class="text-link" href="https://github.com/N0zoM1z0/th04" >
#. {ph1}: </a >
#: website/public/showcase/th04/index.html:756
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}Explore the TH04 repository{ph1}"
msgstr "{ph0}TH04 저장소 살펴보기{ph1}"

#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/0d72e9801a5c14c10384efcbb6734ceccb74ee63/src/main/bullet/add.cpp#L292"
#. >
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/showcase/th04/index.html:762
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}Bullet-generation source{ph1}{ph2}The complete helper, other pattern "
"types and template tuning.{ph3}"
msgstr "{ph0}탄환 생성 소스{ph1}{ph2}전체 보조 함수, 다른 패턴 유형, 템플릿 조정.{ph3}"

#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/0d72e9801a5c14c10384efcbb6734ceccb74ee63/docs/DOS_BUILD.md"
#. >
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/showcase/th04/index.html:771
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}DOS build and run guide{ph1}{ph2}Build the source and test it in the "
"project's PC-98 emulator workflow.{ph3}"
msgstr ""
"{ph0}DOS 빌드·실행 가이드{ph1}{ph2}소스를 빌드하고 프로젝트의 PC-98 에뮬레이터 환경에서 테스트합니다.{ph3}"

#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/0d72e9801a5c14c10384efcbb6734ceccb74ee63/docs/RE_HANDOFF.md"
#. >
#. {ph1}: </a >
#. {ph2}: <span>
#. {ph3}: </span>
#: website/public/showcase/th04/index.html:780
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}Current project state{ph1}{ph2}DOS verification and the separate native"
" x64 port.{ph3}"
msgstr "{ph0}현재 프로젝트 상태{ph1}{ph2}DOS 검증과 별도로 진행하는 네이티브 x64 이식.{ph3}"

#: website/public/showcase/th04/index.html:6
msgctxt "page:showcase/th04/index.html"
msgid "TH04 Reverse Engineering: DOS Bullet Patterns — REA"
msgstr "TH04 리버스 엔지니어링: DOS 탄막 패턴 — REA"

#: website/public/showcase/th04/index.html:7
msgctxt "page:showcase/th04/index.html"
msgid ""
"Inspect TH04's original 16-bit DOS code with REA. Follow the assembly and "
"recovered C++ to see how a ring of bullets is spaced and aimed at the "
"player."
msgstr ""
"REA로 TH04의 원래 16비트 DOS 코드를 분석하세요. 어셈블리와 복구된 C++ 코드를 따라가며 탄환이 원형으로 배치되고 플레이어를"
" 조준하는 방식을 살펴보세요."

#: website/public/showcase/th04/index.html:256
msgctxt "page:showcase/th04/index.html"
msgid "On this page"
msgstr "이 페이지 목차"

#: website/public/showcase/th04/index.html:266
msgctxt "page:showcase/th04/index.html"
msgid "TH04 bullet-pattern case study"
msgstr "TH04 탄막 패턴 사례 연구"

#: website/public/showcase/th04/index.html:281
msgctxt "page:showcase/th04/index.html"
msgid "Copy TH04 example prompt"
msgstr "TH04 예제 프롬프트 복사"

#: website/public/showcase/th04/index.html:309
msgctxt "page:showcase/th04/index.html"
msgid ""
"TH04 fixed and aimed bullet rings; scroll horizontally on smaller screens"
msgstr "TH04 고정·조준 원형 탄막. 작은 화면에서는 가로로 스크롤하세요"

#: website/public/showcase/th04/index.html:315
msgctxt "page:showcase/th04/index.html"
msgid ""
"Two diagrams of a 16-bullet ring. The fixed ring starts at angle zero. "
"Adding a player direction of 40 rotates every direction by the same amount; "
"the highlighted first bullet points toward the player. Both keep a spacing "
"of 16 angle units, or 22.5 degrees."
msgstr ""
"탄환 16개의 원형 탄막을 그린 두 그림입니다. 고정 탄막은 각도 0에서 시작합니다. 플레이어 방향 40을 더하면 모든 방향이 같은 만큼"
" 회전하며, 강조한 첫 탄환은 플레이어를 향합니다. 둘 다 16각도 단위, 즉 22.5도 간격을 유지합니다."

#: website/public/showcase/th04/index.html:337
msgctxt "page:showcase/th04/index.html"
msgid "Copy TH04 firing template"
msgstr "TH04 발사 템플릿 복사"

#: website/public/showcase/th04/index.html:464
msgctxt "page:showcase/th04/index.html"
msgid "Follow the TH04 aimed-ring calculation"
msgstr "TH04 조준 원형 탄막 계산 따라가기"

#: website/public/showcase/th04/index.html:514
msgctxt "page:showcase/th04/index.html"
msgid "Copy TH04 assembly excerpt"
msgstr "TH04 어셈블리 발췌문 복사"

#: website/public/showcase/th04/index.html:548
msgctxt "page:showcase/th04/index.html"
msgid "Copy readable aimed-ring calculation"
msgstr "읽기 쉬운 조준 원형 탄막 계산 복사"

#: website/public/showcase/th04/index.html:806
msgctxt "page:showcase/th04/index.html"
msgid "Back to top"
msgstr "맨 위로"

#: website/public/assets/main.js:21
msgctxt "runtime"
msgid "Copied"
msgstr "복사됨"

#: website/public/assets/main.js:32
msgctxt "runtime"
msgid "Selected"
msgstr "선택됨"

#: website/public/assets/main.js:23
msgctxt "runtime"
msgid "Code copied to clipboard."
msgstr "코드를 클립보드에 복사했습니다."

#: website/public/assets/main.js:34
msgctxt "runtime"
msgid "Code selected. Use your keyboard to copy it."
msgstr "코드를 선택했습니다. 키보드로 복사하세요."

#: website/public/assets/main.js:158
#, python-brace-format
msgctxt "runtime"
msgid "REA on GitHub ({count})"
msgstr "GitHub에서 REA 보기 ({count})"

#: website/public/assets/dino-demo.js:77
#, python-brace-format
msgctxt "runtime"
msgid "Distance {distance}"
msgstr "거리 {distance}"

#: website/public/assets/dino-demo.js:87
msgctxt "runtime"
msgid "Hit a cactus. Try another speed."
msgstr "선인장에 부딪혔습니다. 다른 속도로 시도해 보세요."

#: website/public/assets/dino-demo.js:87
msgctxt "runtime"
msgid "Space or Jump ↑"
msgstr "스페이스 바 또는 점프 ↑"

#: website/public/assets/dino-demo.js:97
msgctxt "runtime"
msgid "Play again"
msgstr "다시 플레이"

#: website/public/assets/dino-demo.js:97
#: website/public/assets/dino-demo.js:111
msgctxt "runtime"
msgid "Play"
msgstr "시작"

#: website/public/assets/dino-demo.js:171
msgctxt "runtime"
msgid "Pause"
msgstr "일시 중지"

#: website/public/assets/dino-demo.js:112
msgctxt "runtime"
msgid "Press Play, then jump over the cactus."
msgstr "시작을 누르고 선인장을 뛰어넘으세요."

#: website/public/assets/dino-demo.js:147
msgctxt "runtime"
msgid "Hit a cactus. Press Play again, or change the speed and restart."
msgstr "선인장에 부딪혔습니다. 재생을 다시 누르거나 속도를 바꿔 다시 시작하세요."

#: website/public/assets/dino-demo.js:172
msgctxt "runtime"
msgid "Running. Space or Jump clears a cactus."
msgstr "실행 중입니다. Space 키나 점프 버튼을 누르면 선인장을 뛰어넘습니다."

#: website/public/assets/dino-demo.js:183
#: website/public/assets/dino-demo.js:219
#: website/public/assets/dino-demo.js:224
msgctxt "runtime"
msgid "Paused. Press Play to continue."
msgstr "일시 중지했습니다. 시작을 눌러 계속하세요."

#: website/public/assets/dino-demo.js:203
#, python-brace-format
msgctxt "runtime"
msgid "Fixed speed: {speed}. Space or Jump clears a cactus."
msgstr "고정 속도: {speed}. 스페이스 바나 점프 버튼으로 선인장을 뛰어넘으세요."

#: website/public/assets/dino-demo.js:206
#, python-brace-format
msgctxt "runtime"
msgid "Fixed speed: {speed}. Press Play to try it."
msgstr "고정 속도: {speed}. 시작 버튼을 눌러 시험해 보세요."

#: website/public/assets/dino-demo.js:215
msgctxt "runtime"
msgid "Recovered rule: start at 6, then increase toward 13."
msgstr "복구한 규칙: 6에서 시작해 13을 향해 가속합니다."

#: website/public/assets/dino-demo.js:216
#, python-brace-format
msgctxt "runtime"
msgid "Fixed speed: {speed}."
msgstr "고정 속도: {speed}."

#: website/public/assets/dino-demo.js:249
msgctxt "runtime"
msgid ""
"Replayed the recovered rule. All four values match the controlled original-"
"game check when rounded to three decimals."
msgstr ""
"복원한 규칙을 재현했습니다. 소수점 이하 셋째 자리까지 반올림하면 네 값 모두 조건을 통제한 원본 게임의 검증 결과와 일치합니다."

#: website/public/assets/dino-demo.js:252
msgctxt "runtime"
msgid ""
"The replay differs from the recorded original-game values. Compare the speed"
" rule and settings above."
msgstr "재실행 결과가 기록된 원본 게임 값과 다릅니다. 위의 속도 규칙과 설정을 비교하세요."

#: website/public/assets/aegis-demo.js:22
#, python-brace-format
msgctxt "runtime"
msgid "{start}–{end} seconds"
msgstr "{start}~{end}초"

#: website/public/assets/aegis-demo.js:29
#, python-brace-format
msgctxt "runtime"
msgid "{seconds} seconds, time block {block}"
msgstr "{seconds}초, 시간 구간 {block}"

#: website/public/assets/aegis-demo.js:35
msgctxt "runtime"
msgid ""
"Interactive calculation is unavailable in this browser. The example shows "
"the code at 59 seconds."
msgstr "이 브라우저에서는 직접 계산할 수 없습니다. 예제는 59초일 때의 코드를 표시합니다."

#: website/public/assets/aegis-demo.js:62
msgctxt "runtime"
msgid "Checking…"
msgstr "확인 중…"

#: website/public/assets/aegis-demo.js:76
#, python-brace-format
msgctxt "runtime"
msgid ""
"{passed} / {total} checks passed (six reference cases, at six and eight "
"digits)."
msgstr "검사 {passed} / {total}개 통과(기준 사례 6개, 6자리와 8자리)."

#: website/public/assets/aegis-demo.js:81
msgctxt "runtime"
msgid "Could not run the reference checks. Try again."
msgstr "기준 사례 검증을 실행하지 못했습니다. 다시 시도하세요."

#: website/public/assets/figures/analyst-thinking.svg:2
msgctxt "figure:analyst-thinking.svg"
msgid "An analyst thinking at a computer"
msgstr "컴퓨터 앞에서 생각하는 분석가"

#: website/public/assets/figures/ctf-mask-equation.svg:2
#: website/public/assets/figures/ctf-mask-equation.svg:24
msgctxt "figure:ctf-mask-equation.svg"
msgid "One check reveals one character"
msgstr "검증 한 번으로 문자 하나 알아내기"

#: website/public/assets/figures/ctf-mask-equation.svg:3
msgctxt "figure:ctf-mask-equation.svg"
msgid ""
"The seventh mask selects only position 21 in the six by six input grid. Its "
"character code must equal 55, so the character is 7. The other masks select "
"different positions and give further equations."
msgstr ""
"일곱 번째 마스크는 6×6 입력 격자에서 위치 21만 선택합니다. 문자 코드가 55여야 하므로 문자는 7입니다. 다른 마스크는 다른 "
"위치를 선택해 추가 방정식을 만듭니다."

#: website/public/assets/figures/ctf-mask-equation.svg:25
msgctxt "figure:ctf-mask-equation.svg"
msgid "The seventh check. Cell labels are input positions, starting at 0."
msgstr "일곱 번째 검사. 칸 번호는 0부터 시작하는 입력 위치입니다."

#: website/public/assets/figures/ctf-mask-equation.svg:27
msgctxt "figure:ctf-mask-equation.svg"
msgid "Encoded mask: −21, +1, −14, 0"
msgstr "인코딩된 마스크: −21, +1, −14, 0"

#: website/public/assets/figures/ctf-mask-equation.svg:28
msgctxt "figure:ctf-mask-equation.svg"
msgid "Skip 21 cells. Select 1. Skip 14. Stop at 0."
msgstr "21칸 건너뛰기. 1칸 선택. 14칸 건너뛰기. 0에서 종료."

#: website/public/assets/figures/ctf-mask-equation.svg:32
msgctxt "figure:ctf-mask-equation.svg"
msgid "Only one cell contributes to this sum"
msgstr "이 합계에는 한 칸만 포함됩니다"

#: website/public/assets/figures/ctf-mask-equation.svg:35
msgctxt "figure:ctf-mask-equation.svg"
msgid "Position 21 in the flag must contain 7."
msgstr "플래그의 위치 21에는 7이 있어야 합니다."

#: website/public/assets/figures/ctf-mask-equation.svg:37
msgctxt "figure:ctf-mask-equation.svg"
msgid "Selected: one cell"
msgstr "선택: 한 칸"

#: website/public/assets/figures/ctf-mask-equation.svg:38
msgctxt "figure:ctf-mask-equation.svg"
msgid "26 masks give 26 equations."
msgstr "마스크 26개로 방정식 26개를 얻습니다."

#: website/public/assets/figures/ctf-mask-equation.svg:39
msgctxt "figure:ctf-mask-equation.svg"
msgid "Solve them together to find the flag."
msgstr "연립방정식을 풀어 플래그를 찾습니다."

#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:2
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:20
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "DX-Ball sound-pan investigation"
msgstr "DX-Ball 사운드 패닝 조사"

#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:3
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid ""
"REA provides the instruction, caller and byte-read evidence for one DX-Ball "
"function. A stack input is multiplied by 1.5625, offset by 500, scaled, and "
"converted to an integer. Maintained C is checked in 3,205 original-x86 cases"
" and a separate 63-byte compiler replay."
msgstr ""
"REA는 DX-Ball 함수 하나의 명령어, 호출 함수, 바이트 읽기 증거를 제공합니다. 스택 입력에 1.5625를 곱하고 500을 뺀 "
"뒤 배율을 적용해 정수로 변환합니다. 유지보수 중인 C 코드는 원본 x86 사례 3,205개 및 별도의 63바이트 컴파일러 재현으로 "
"검증합니다."

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:39
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "Stack"
msgstr "스택"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:40
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "input x"
msgstr "입력 x"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:44
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "Integer"
msgstr "정수"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:45
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "return"
msgstr "반환"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:46
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "Reconstructed function"
msgstr "복원한 함수"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:47
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "Maintained C"
msgstr "유지보수 중인 C 코드"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:48
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "Brick-hit caller"
msgstr "벽돌 충돌 호출부"

#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:49
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "20 + 30 × tile_x"
msgstr "20 + 30 × tile_x"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:50
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "Original code"
msgstr "원본 코드"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:51
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:54
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "comparison"
msgstr "비교"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:52
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "3,205 cases"
msgstr "3,205개 사례"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:53
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "VC4.0 build"
msgstr "VC4.0 빌드"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:55
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "63 matching bytes"
msgstr "63바이트 일치"

#: website/public/assets/figures/rea-investigation-flow.svg:2
#: website/public/assets/figures/rea-investigation-flow.svg:22
msgctxt "figure:rea-investigation-flow.svg"
msgid "REA investigation flow"
msgstr "REA 분석 흐름"

#: website/public/assets/figures/rea-investigation-flow.svg:3
msgctxt "figure:rea-investigation-flow.svg"
msgid ""
"Ask a question about a local target. REA inspects and traces through local "
"analysis adapters, returns evidence, and supports follow-up questions as "
"your agent explains, implements and tests."
msgstr ""
"로컬 대상에 관해 질문하세요. REA가 로컬 분석 어댑터로 분석·추적해 증거를 반환합니다. 에이전트가 이를 설명하고 구현·테스트하는 동안"
" 추가 질문으로 조사를 이어갈 수 있습니다."

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:31
msgctxt "figure:rea-investigation-flow.svg"
msgid "1. Ask"
msgstr "1. 질문"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:32
msgctxt "figure:rea-investigation-flow.svg"
msgid "Your agent + local target"
msgstr "에이전트 + 로컬 대상"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:33
msgctxt "figure:rea-investigation-flow.svg"
msgid "App / binary / browser"
msgstr "앱 / 바이너리 / 브라우저"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:34
msgctxt "figure:rea-investigation-flow.svg"
msgid "2. Inspect & trace"
msgstr "2. 분석과 추적"

#: website/public/assets/figures/rea-investigation-flow.svg:36
msgctxt "figure:rea-investigation-flow.svg"
msgid "CLI / MCP"
msgstr "CLI / MCP"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:37
msgctxt "figure:rea-investigation-flow.svg"
msgid "3. Read the evidence"
msgstr "3. 근거 확인"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:38
msgctxt "figure:rea-investigation-flow.svg"
msgid "Code / references /"
msgstr "코드 / 참조 /"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:39
msgctxt "figure:rea-investigation-flow.svg"
msgid "unknowns"
msgstr "미확인 사항"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:40
msgctxt "figure:rea-investigation-flow.svg"
msgid "4. Use what you learn"
msgstr "4. 결과 활용"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:41
msgctxt "figure:rea-investigation-flow.svg"
msgid "Your agent"
msgstr "에이전트"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:42
msgctxt "figure:rea-investigation-flow.svg"
msgid "Explain / implement / test"
msgstr "설명 / 구현 / 테스트"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:43
msgctxt "figure:rea-investigation-flow.svg"
msgid "Analysis tools"
msgstr "분석 도구"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:44
msgctxt "figure:rea-investigation-flow.svg"
msgid "Local analysis adapters"
msgstr "로컬 분석 어댑터"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:45
msgctxt "figure:rea-investigation-flow.svg"
msgid "Follow-up question"
msgstr "추가 질문"

#: website/public/assets/figures/th04-bullet-ring.svg:2
msgctxt "figure:th04-bullet-ring.svg"
msgid "TH04: spacing and aiming a ring of bullets"
msgstr "TH04: 원형 탄막의 간격과 조준"

#: website/public/assets/figures/th04-bullet-ring.svg:3
msgctxt "figure:th04-bullet-ring.svg"
msgid ""
"A full clockwise turn has 256 angle units. Sixteen bullets start at angles "
"zero, sixteen, thirty-two, through 240. Adding an example player direction "
"of forty turns all sixteen directions together; the first bullet points at "
"the player. Template rotation is zero."
msgstr ""
"시계 방향 한 바퀴는 각도 단위 256에 해당합니다. 탄환 16발은 0, 16, 32부터 240까지의 각도에서 출발합니다. 예시로 "
"플레이어 방향 값 40을 더하면 16개 방향이 모두 함께 회전하며, 첫 번째 탄환이 플레이어를 향합니다. 템플릿 회전 값은 0입니다."

#: website/public/assets/figures/th04-bullet-ring.svg:24
msgctxt "figure:th04-bullet-ring.svg"
msgid "Fixed ring"
msgstr "고정 원형 탄막"

#: website/public/assets/figures/th04-bullet-ring.svg:25
msgctxt "figure:th04-bullet-ring.svg"
msgid "First bullet: angle 0"
msgstr "첫 탄환: 각도 0"

#: website/public/assets/figures/th04-bullet-ring.svg:26
msgctxt "figure:th04-bullet-ring.svg"
msgid "Aimed ring"
msgstr "조준 원형 탄막"

#: website/public/assets/figures/th04-bullet-ring.svg:27
msgctxt "figure:th04-bullet-ring.svg"
msgid "First bullet: player direction"
msgstr "첫 탄환: 플레이어 방향"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/th04-bullet-ring.svg:64
#: website/public/assets/figures/th04-bullet-ring.svg:102
msgctxt "figure:th04-bullet-ring.svg"
msgid "Origin"
msgstr "원점"

#: website/public/assets/figures/th04-bullet-ring.svg:105
msgctxt "figure:th04-bullet-ring.svg"
msgid "Player"
msgstr "플레이어"

#: website/public/assets/figures/th04-bullet-ring.svg:110
msgctxt "figure:th04-bullet-ring.svg"
msgid "Same spacing: 256 ÷ 16 = 16 angle units = 22.5°"
msgstr "같은 간격: 256 ÷ 16 = 16각도 단위 = 22.5°"

#: website/public/blog/index.html:118
#: website/public/blog/reverse-engineering-models/index.html:118
#: website/public/blog/touhou-reconstruction/index.html:118
#: website/public/contributors/index.html:119
#: website/public/examples/dino-lab/index.html:119
#: website/public/faq/index.html:118
#: website/public/first-investigation/index.html:118
#: website/public/get-started/index.html:118
#: website/public/guides/browser/index.html:118
#: website/public/guides/index.html:118
#: website/public/guides/javascript/index.html:118
#: website/public/guides/native/index.html:118 website/public/index.html:120
#: website/public/showcase/aegis/index.html:119
#: website/public/showcase/ctf/index.html:118
#: website/public/showcase/dx-ball/index.html:118
#: website/public/showcase/index.html:118
#: website/public/showcase/notion/index.html:118
#: website/public/showcase/th04/index.html:118
msgctxt "shared"
msgid "Showcases"
msgstr "사례"

#: website/public/blog/index.html:119
#: website/public/blog/reverse-engineering-models/index.html:119
#: website/public/blog/touhou-reconstruction/index.html:119
#: website/public/contributors/index.html:120
#: website/public/examples/dino-lab/index.html:120
#: website/public/faq/index.html:119
#: website/public/first-investigation/index.html:119
#: website/public/get-started/index.html:119
#: website/public/guides/browser/index.html:119
#: website/public/guides/index.html:119
#: website/public/guides/javascript/index.html:119
#: website/public/guides/native/index.html:119 website/public/index.html:121
#: website/public/showcase/aegis/index.html:120
#: website/public/showcase/ctf/index.html:119
#: website/public/showcase/dx-ball/index.html:119
#: website/public/showcase/index.html:119
#: website/public/showcase/notion/index.html:119
#: website/public/showcase/th04/index.html:119
msgctxt "shared"
msgid "Blog"
msgstr "블로그"

#: website/public/blog/index.html:117
#: website/public/blog/reverse-engineering-models/index.html:117
#: website/public/blog/touhou-reconstruction/index.html:117
#: website/public/contributors/index.html:118
#: website/public/examples/dino-lab/index.html:118
#: website/public/faq/index.html:117
#: website/public/first-investigation/index.html:117
#: website/public/get-started/index.html:117
#: website/public/guides/browser/index.html:117
#: website/public/guides/index.html:117
#: website/public/guides/javascript/index.html:117
#: website/public/guides/native/index.html:117 website/public/index.html:119
#: website/public/showcase/aegis/index.html:118
#: website/public/showcase/ctf/index.html:117
#: website/public/showcase/dx-ball/index.html:117
#: website/public/showcase/index.html:117
#: website/public/showcase/notion/index.html:117
#: website/public/showcase/th04/index.html:117
msgctxt "shared"
msgid "Get started"
msgstr "시작하기"

#: website/public/blog/index.html:120
#: website/public/blog/reverse-engineering-models/index.html:120
#: website/public/blog/touhou-reconstruction/index.html:120
#: website/public/contributors/index.html:121
#: website/public/examples/dino-lab/index.html:121
#: website/public/faq/index.html:120
#: website/public/first-investigation/index.html:120
#: website/public/get-started/index.html:120
#: website/public/guides/browser/index.html:120
#: website/public/guides/index.html:120
#: website/public/guides/javascript/index.html:120
#: website/public/guides/native/index.html:120 website/public/index.html:122
#: website/public/showcase/aegis/index.html:121
#: website/public/showcase/ctf/index.html:120
#: website/public/showcase/dx-ball/index.html:120
#: website/public/showcase/index.html:120
#: website/public/showcase/notion/index.html:120
#: website/public/showcase/th04/index.html:120
msgctxt "shared"
msgid "Guides"
msgstr "가이드"

#: website/public/blog/index.html:242
#: website/public/blog/reverse-engineering-models/index.html:881
#: website/public/blog/touhou-reconstruction/index.html:1078
#: website/public/contributors/index.html:1129
#: website/public/examples/dino-lab/index.html:473
#: website/public/faq/index.html:571
#: website/public/first-investigation/index.html:532
#: website/public/get-started/index.html:1815
#: website/public/guides/browser/index.html:505
#: website/public/guides/index.html:280
#: website/public/guides/javascript/index.html:501
#: website/public/guides/native/index.html:507 website/public/index.html:1220
#: website/public/showcase/aegis/index.html:806
#: website/public/showcase/ctf/index.html:775
#: website/public/showcase/dx-ball/index.html:783
#: website/public/showcase/index.html:315
#: website/public/showcase/notion/index.html:629
#: website/public/showcase/th04/index.html:798
msgctxt "shared"
msgid "Source"
msgstr "소스 코드"

#: website/public/blog/index.html:243
#: website/public/blog/reverse-engineering-models/index.html:882
#: website/public/blog/touhou-reconstruction/index.html:1079
#: website/public/contributors/index.html:1130
#: website/public/examples/dino-lab/index.html:474
#: website/public/faq/index.html:572
#: website/public/first-investigation/index.html:533
#: website/public/get-started/index.html:1816
#: website/public/guides/browser/index.html:506
#: website/public/guides/index.html:281
#: website/public/guides/javascript/index.html:502
#: website/public/guides/native/index.html:508 website/public/index.html:1221
#: website/public/showcase/aegis/index.html:807
#: website/public/showcase/ctf/index.html:776
#: website/public/showcase/dx-ball/index.html:784
#: website/public/showcase/index.html:316
#: website/public/showcase/notion/index.html:630
#: website/public/showcase/th04/index.html:799
msgctxt "shared"
msgid "MIT license"
msgstr "MIT 라이선스"

#: website/public/blog/index.html:244
#: website/public/blog/reverse-engineering-models/index.html:883
#: website/public/blog/touhou-reconstruction/index.html:1080
#: website/public/contributors/index.html:1131
#: website/public/examples/dino-lab/index.html:475
#: website/public/faq/index.html:573
#: website/public/first-investigation/index.html:534
#: website/public/get-started/index.html:1817
#: website/public/guides/browser/index.html:507
#: website/public/guides/index.html:282
#: website/public/guides/javascript/index.html:503
#: website/public/guides/native/index.html:509 website/public/index.html:1222
#: website/public/showcase/aegis/index.html:808
#: website/public/showcase/ctf/index.html:777
#: website/public/showcase/dx-ball/index.html:785
#: website/public/showcase/index.html:317
#: website/public/showcase/notion/index.html:631
#: website/public/showcase/th04/index.html:800
msgctxt "shared"
msgid "Join the community"
msgstr "커뮤니티 참여"

#: website/public/blog/index.html:245
#: website/public/blog/reverse-engineering-models/index.html:884
#: website/public/blog/touhou-reconstruction/index.html:1081
#: website/public/contributors/index.html:1132
#: website/public/examples/dino-lab/index.html:476
#: website/public/faq/index.html:574
#: website/public/first-investigation/index.html:535
#: website/public/get-started/index.html:1818
#: website/public/guides/browser/index.html:508
#: website/public/guides/index.html:283
#: website/public/guides/javascript/index.html:504
#: website/public/guides/native/index.html:510 website/public/index.html:1223
#: website/public/showcase/aegis/index.html:809
#: website/public/showcase/ctf/index.html:778
#: website/public/showcase/dx-ball/index.html:786
#: website/public/showcase/index.html:318
#: website/public/showcase/notion/index.html:632
#: website/public/showcase/th04/index.html:801
msgctxt "shared"
msgid "Follow us on X"
msgstr "X에서 팔로우"

#: website/public/examples/dino-lab/index.html:311
msgctxt "page:examples/dino-lab/index.html"
msgid "REA · selected script source"
msgstr "REA · 선택한 스크립트 소스"

#: website/public/first-investigation/index.html:379
msgctxt "page:first-investigation/index.html"
msgid "Source"
msgstr "소스 코드"

#: website/public/first-investigation/index.html:433
msgctxt "page:first-investigation/index.html"
msgid "Expected formatter output"
msgstr "예상 포맷터 출력"

#: website/public/guides/index.html:224
msgctxt "page:guides/index.html"
msgid "Instructions"
msgstr "명령어"

#: website/public/guides/index.html:225
msgctxt "page:guides/index.html"
msgid "Caller"
msgstr "호출자"

#: website/public/guides/index.html:226
msgctxt "page:guides/index.html"
msgid "Constants"
msgstr "상수"

#: website/public/guides/index.html:227
msgctxt "page:guides/index.html"
msgid "C function"
msgstr "C 함수"

#: website/public/guides/index.html:242
msgctxt "page:guides/index.html"
msgid "Button"
msgstr "버튼"

#: website/public/guides/index.html:243
msgctxt "page:guides/index.html"
msgid "Preload API"
msgstr "프리로드 API"

#: website/public/guides/index.html:244
msgctxt "page:guides/index.html"
msgid "IPC"
msgstr "IPC"

#: website/public/guides/index.html:244
msgctxt "page:guides/index.html"
msgid "CSV file"
msgstr "CSV 파일"

#: website/public/guides/index.html:264
msgctxt "page:guides/index.html"
msgid "Your click"
msgstr "클릭"

#: website/public/guides/index.html:265
msgctxt "page:guides/index.html"
msgid "Captured request"
msgstr "캡처된 요청"

#: website/public/guides/index.html:266
msgctxt "page:guides/index.html"
msgid "Export script"
msgstr "내보내기 스크립트"

#: website/public/guides/javascript/index.html:362
msgctxt "page:guides/javascript/index.html"
msgid "REA result · summary.ipc excerpt"
msgstr "REA 결과 · summary.ipc 발췌"

#: website/public/guides/native/index.html:389
msgctxt "page:guides/native/index.html"
msgid "REA instruction excerpt · 0x406409"
msgstr "REA 명령어 발췌 · 0x406409"

#: website/public/guides/native/index.html:403
msgctxt "page:guides/native/index.html"
msgid "REA caller excerpt · 0x411f5b"
msgstr "REA 호출 함수 발췌 · 0x411f5b"

#: website/public/guides/native/index.html:417
msgctxt "page:guides/native/index.html"
msgid "REA byte results · interpreted as little-endian doubles"
msgstr "REA 바이트 결과 · 리틀 엔디언 double 값으로 해석"

#: website/public/guides/native/index.html:434
msgctxt "page:guides/native/index.html"
msgid "Recovered C · excerpt"
msgstr "복구된 C · 발췌"

#: website/public/index.html:1034
msgctxt "page:index.html"
msgid "Showcases →"
msgstr "사례 소개 →"

#: website/public/index.html:763
msgctxt "page:index.html"
msgid "Selected settings from the inspected script"
msgstr "분석한 스크립트의 주요 설정"

#: website/public/index.html:938
msgctxt "page:index.html"
msgid "Readable summary of the % handler"
msgstr "% 핸들러의 읽기 쉬운 요약"

#: website/public/index.html:982
msgctxt "page:index.html"
msgid "REA · selected original instructions"
msgstr "REA · 선택한 원본 명령어"

#: website/public/index.html:993
msgctxt "page:index.html"
msgid "Operator IDs · Microsoft’s source"
msgstr "연산자 ID · Microsoft 소스 코드"

#: website/public/showcase/aegis/index.html:404
#: website/public/showcase/aegis/index.html:436
msgctxt "page:showcase/aegis/index.html"
msgid "Agent → REA"
msgstr "에이전트 → REA"

#: website/public/showcase/aegis/index.html:414
msgctxt "page:showcase/aegis/index.html"
msgid "REA → agent · selected results"
msgstr "REA → 에이전트 · 결과 발췌"

#: website/public/showcase/aegis/index.html:450
msgctxt "page:showcase/aegis/index.html"
msgid "REA → agent · methods and callers"
msgstr "REA → 에이전트 · 메서드와 호출 함수"

#: website/public/showcase/aegis/index.html:520
msgctxt "page:showcase/aegis/index.html"
msgid "REA · selected decompiled Java"
msgstr "REA · 디컴파일한 Java 발췌"

#: website/public/showcase/aegis/index.html:550
msgctxt "page:showcase/aegis/index.html"
msgid "Readable summary · agent's interpretation"
msgstr "읽을 수 있는 요약 · 에이전트의 해석"

#: website/public/showcase/aegis/index.html:605
msgctxt "page:showcase/aegis/index.html"
msgid "REA · generateOTP, complete body"
msgstr "REA · generateOTP, 함수 본문 전체"

#: website/public/showcase/aegis/index.html:723
msgctxt "page:showcase/aegis/index.html"
msgid "Download Aegis APK"
msgstr "Aegis APK 다운로드"

#: website/public/showcase/aegis/index.html:727
msgctxt "page:showcase/aegis/index.html"
msgid "Download Android analysis provider"
msgstr "Android 분석 도구 다운로드"

#: website/public/showcase/ctf/index.html:307
#: website/public/showcase/ctf/index.html:343
msgctxt "page:showcase/ctf/index.html"
msgid "Agent → REA"
msgstr "에이전트 → REA"

#: website/public/showcase/ctf/index.html:323
msgctxt "page:showcase/ctf/index.html"
msgid "REA → agent · selected results"
msgstr "REA → 에이전트 · 결과 발췌"

#: website/public/showcase/ctf/index.html:355
msgctxt "page:showcase/ctf/index.html"
msgid "REA → agent · selected instructions"
msgstr "REA → 에이전트 · 선택한 명령어"

#: website/public/showcase/ctf/index.html:418
msgctxt "page:showcase/ctf/index.html"
msgid "Agent → REA · read_bytes"
msgstr "에이전트 → REA · read_bytes"

#: website/public/showcase/ctf/index.html:425
msgctxt "page:showcase/ctf/index.html"
msgid "REA → agent · seventh entries"
msgstr "REA → 에이전트 · 일곱 번째 항목"

#: website/public/showcase/ctf/index.html:693
msgctxt "page:showcase/ctf/index.html"
msgid "Original executable · SHA-256"
msgstr "원본 실행 파일 · SHA-256"

#: website/public/showcase/ctf/index.html:729
msgctxt "page:showcase/ctf/index.html"
msgid "Download the original challenge"
msgstr "원본 문제 다운로드"

#: website/public/showcase/ctf/index.html:733
msgctxt "page:showcase/ctf/index.html"
msgid "Download solver"
msgstr "풀이 코드 다운로드"

#: website/public/showcase/dx-ball/index.html:334
msgctxt "page:showcase/dx-ball/index.html"
msgid "REA result · pseudocode excerpt"
msgstr "REA 결과 · 의사 코드 발췌"

#. {ph0}: <code>analyze_function</code>
#: website/public/showcase/dx-ball/index.html:357
#: website/public/showcase/dx-ball/index.html:381
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "Agent → REA · {ph0}"
msgstr "에이전트 → REA · {ph0}"

#: website/public/showcase/dx-ball/index.html:363
msgctxt "page:showcase/dx-ball/index.html"
msgid "REA → agent · instruction excerpt"
msgstr "REA → 에이전트 · 명령어 발췌문"

#: website/public/showcase/dx-ball/index.html:387
msgctxt "page:showcase/dx-ball/index.html"
msgid "REA → agent · caller excerpt"
msgstr "REA → 에이전트 · 호출 함수 발췌"

#. {ph0}: <code>read_bytes</code>
#: website/public/showcase/dx-ball/index.html:405
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "Agent → REA · two {ph0} requests"
msgstr "에이전트→ REA · 두 {ph0} 요청"

#: website/public/showcase/dx-ball/index.html:415
msgctxt "page:showcase/dx-ball/index.html"
msgid "REA byte results · decoded as doubles"
msgstr "REA 바이트 분석 결과 · 배정밀도 부동소수점으로 해석"

#: website/public/showcase/dx-ball/index.html:768
msgctxt "page:showcase/dx-ball/index.html"
msgid "Start with your own target"
msgstr "직접 고른 대상으로 시작하기"

#: website/public/showcase/index.html:217
msgctxt "page:showcase/index.html"
msgid "APK"
msgstr "APK"

#: website/public/showcase/index.html:218
msgctxt "page:showcase/index.html"
msgid "Generating code"
msgstr "코드 생성 로직"

#: website/public/showcase/index.html:219
msgctxt "page:showcase/index.html"
msgid "Recovered rule"
msgstr "복구한 규칙"

#: website/public/showcase/index.html:220
msgctxt "page:showcase/index.html"
msgid "Adjustable clock"
msgstr "조절 가능한 시계"

#: website/public/showcase/index.html:235
msgctxt "page:showcase/index.html"
msgid "Binary"
msgstr "바이너리"

#: website/public/showcase/index.html:236
msgctxt "page:showcase/index.html"
msgid "Checking code"
msgstr "검사 코드"

#: website/public/showcase/index.html:237
msgctxt "page:showcase/index.html"
msgid "Equations"
msgstr "방정식"

#: website/public/showcase/index.html:238
msgctxt "page:showcase/index.html"
msgid "Correct!"
msgstr "정답!"

#: website/public/showcase/index.html:254
msgctxt "page:showcase/index.html"
msgid "Executable"
msgstr "실행 파일"

#: website/public/showcase/index.html:255
msgctxt "page:showcase/index.html"
msgid "REA findings"
msgstr "REA 분석 결과"

#: website/public/showcase/index.html:256
msgctxt "page:showcase/index.html"
msgid "Recovered C"
msgstr "복원한 C 코드"

#: website/public/showcase/index.html:257
msgctxt "page:showcase/index.html"
msgid "Validation"
msgstr "검증"

#: website/public/showcase/index.html:272
msgctxt "page:showcase/index.html"
msgid "Packaged app"
msgstr "패키지 앱"

#: website/public/showcase/index.html:273
msgctxt "page:showcase/index.html"
msgid "Exposed API"
msgstr "노출된 API"

#: website/public/showcase/index.html:274
msgctxt "page:showcase/index.html"
msgid "IPC wrappers"
msgstr "IPC 래퍼"

#: website/public/showcase/index.html:275
msgctxt "page:showcase/index.html"
msgid "Clipboard"
msgstr "클립보드"

#: website/public/showcase/index.html:290
msgctxt "page:showcase/index.html"
msgid "Original DOS code"
msgstr "원본 DOS 코드"

#: website/public/showcase/index.html:291
msgctxt "page:showcase/index.html"
msgid "REA instructions"
msgstr "REA 명령어"

#: website/public/showcase/index.html:292
msgctxt "page:showcase/index.html"
msgid "Angle calculation"
msgstr "각도 계산"

#: website/public/showcase/index.html:293
msgctxt "page:showcase/index.html"
msgid "Bullet ring"
msgstr "원형 탄막"

#: website/public/showcase/notion/index.html:309
msgctxt "page:showcase/notion/index.html"
msgid "Exposed page API"
msgstr "노출된 페이지 API"

#: website/public/showcase/notion/index.html:315
msgctxt "page:showcase/notion/index.html"
msgid "Renderer IPC call"
msgstr "렌더러의 IPC 호출"

#: website/public/showcase/notion/index.html:477
msgctxt "page:showcase/notion/index.html"
msgid "Sent to the system clipboard"
msgstr "시스템 클립보드로 전송됨"

#: website/public/showcase/notion/index.html:485
msgctxt "page:showcase/notion/index.html"
msgid "Saved locally by Notion"
msgstr "Notion이 로컬에 저장"

#: website/public/showcase/notion/index.html:530
msgctxt "page:showcase/notion/index.html"
msgid "Markdown input"
msgstr "마크다운 입력"

#: website/public/showcase/notion/index.html:537
msgctxt "page:showcase/notion/index.html"
msgid "Structured parser output · excerpt"
msgstr "구조화된 파서 출력 · 발췌"

#: website/public/showcase/notion/index.html:614
msgctxt "page:showcase/notion/index.html"
msgid "Analyze your own app"
msgstr "자신의 앱 분석"

#: website/public/showcase/th04/index.html:374
msgctxt "page:showcase/th04/index.html"
msgid "Agent → REA"
msgstr "에이전트 → REA"

#: website/public/showcase/th04/index.html:383
msgctxt "page:showcase/th04/index.html"
msgid "REA → agent · selected fields"
msgstr "REA → 에이전트 · 선택한 필드"

#. {ph0}: <code>analyze_function</code>
#: website/public/showcase/th04/index.html:402
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "Agent → REA · {ph0}"
msgstr "에이전트 → REA · {ph0}"

#: website/public/showcase/th04/index.html:408
msgctxt "page:showcase/th04/index.html"
msgid "REA → agent · instruction excerpt"
msgstr "REA → 에이전트 · 명령어 발췌문"

#: website/public/showcase/th04/index.html:429
msgctxt "page:showcase/th04/index.html"
msgid "Same function result · aim excerpt"
msgstr "같은 함수 결과 · 조준 부분 발췌"

#: website/public/showcase/th04/index.html:438
msgctxt "page:showcase/th04/index.html"
msgid "Corresponding maintained C++"
msgstr "대응하는 유지보수 C++ 코드"

#: website/public/showcase/th04/index.html:618
msgctxt "page:showcase/th04/index.html"
msgid "Ring macro · TH04 branch, excerpt"
msgstr "원형 탄막 매크로 · TH04 분기 발췌"

#: website/public/showcase/th04/index.html:628
msgctxt "page:showcase/th04/index.html"
msgid "Angle and velocity · source excerpt"
msgstr "각도와 속도 벡터 · 소스 발췌"

#: website/public/assets/home.js:29
msgctxt "runtime"
msgid "Press % to see what happens to 10."
msgstr "%를 눌러 10이 어떻게 바뀌는지 확인하세요."

#: website/public/assets/home.js:32
msgctxt "runtime"
msgid "10% of 200 is 20. Press = to add it."
msgstr "200의 10%는 20입니다. =를 눌러 더하세요."

#: website/public/assets/home.js:33
msgctxt "runtime"
msgid "For multiplication, 10 becomes 0.1. Press = to multiply."
msgstr "곱셈에서는 10이 0.1이 됩니다. =를 눌러 곱하세요."

#: scripts/website_i18n.py
msgctxt "runtime"
msgid "Translation is being updated. Read this page in English for now."
msgstr "번역을 업데이트하고 있습니다. 우선 영어 페이지를 읽어주세요."

# Reviewed for readable instructions and accurate software terminology.
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="faq-analysis-prompt" >
#. {ph3}: <span translate="no">/absolute/path/to/app</span>
#. {ph4}: </span >
#. {ph5}: <span class="terminal-cursor" aria-hidden="true">
#. {ph6}: </span>
#: website/public/faq/index.html:430
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to analyze {ph3} and explain how it exports data. "
"Show the relevant code and source locations.{ph4}{ph5}{ph6}"
msgstr ""
"{ph0}›{ph1}{ph2}REA로 {ph3}를 분석하고 데이터를 어떻게 내보내는지 설명해 줘. 관련 코드와 소스 위치도 보여 "
"줘.{ph4}{ph5}{ph6}"

#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="first-install-prompt" >
#. {ph3}: <span translate="no">npx rea-agents@latest setup</span>
#. {ph4}: </span >
#. {ph5}: <span class="terminal-cursor" aria-hidden="true">
#. {ph6}: </span>
#: website/public/first-investigation/index.html:248
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Install REA and connect it to this coding agent using {ph3}."
" Show me the setup plan for approval, then verify the "
"installation.{ph4}{ph5}{ph6}"
msgstr ""
"{ph0}›{ph1}{ph2}{ph3}을 사용해 REA를 설치하고 이 코딩 에이전트에 연결해 줘. 먼저 설정 변경 계획을 보여 주고 내 "
"승인을 받은 뒤 실행해 줘. 마지막으로 설치를 확인해 줘.{ph4}{ph5}{ph6}"

#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="first-analysis-prompt" >
#. {ph3}: <span translate="no" >https://rea.tools/examples/notes-
#. example.zip</span >
#. {ph4}: <span translate="no">notes.csv</span>
#. {ph5}: </span >
#. {ph6}: <span class="terminal-cursor" aria-hidden="true">
#. {ph7}: </span>
#: website/public/first-investigation/index.html:298
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Download {ph3} into a new example folder and unpack it. Use "
"REA to find what happens when I click Export notes. Show where {ph4} is "
"written, which fields it contains, and the relevant files and "
"lines.{ph5}{ph6}{ph7}"
msgstr ""
"{ph0}›{ph1}{ph2}{ph3}을 새 예제 폴더에 다운로드하고 압축을 풀어 줘. REA로 Export notes를 클릭할 때 어떤"
" 일이 일어나는지 조사해 줘. {ph4}가 기록되는 위치, 포함된 필드, 관련 파일과 줄을 보여 줘.{ph5}{ph6}{ph7}"

#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="agent-install-prompt" >
#. {ph3}: <span translate="no">npx rea-agents@latest setup</span>
#. {ph4}: </span >
#. {ph5}: <span class="terminal-cursor" aria-hidden="true">
#. {ph6}: </span>
#: website/public/get-started/index.html:783
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Install REA and connect it to this coding agent using {ph3}."
" Show me the setup plan for approval, then verify the "
"installation.{ph4}{ph5}{ph6}"
msgstr ""
"{ph0}›{ph1}{ph2}{ph3}을 사용해 REA를 설치하고 이 코딩 에이전트에 연결해 줘. 먼저 설정 변경 계획을 보여 주고 내 "
"승인을 받은 뒤 실행해 줘. 마지막으로 설치를 확인해 줘.{ph4}{ph5}{ph6}"

#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="home-install-prompt" >
#. {ph3}: <span translate="no">npx rea-agents@latest setup</span>
#. {ph4}: </span >
#. {ph5}: <span class="terminal-cursor" aria-hidden="true">
#. {ph6}: </span>
#: website/public/index.html:268
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}›{ph1}{ph2}Install REA and connect it to this coding agent using {ph3}."
" Show me the setup plan for approval, then verify the "
"installation.{ph4}{ph5}{ph6}"
msgstr ""
"{ph0}›{ph1}{ph2}{ph3}을 사용해 REA를 설치하고 이 코딩 에이전트에 연결해 줘. 먼저 설정 변경 계획을 보여 주고 내 "
"승인을 받은 뒤 실행해 줘. 마지막으로 설치를 확인해 줘.{ph4}{ph5}{ph6}"

#. {ph0}: <span translate="no">dino-speed.js</span>
#: website/public/examples/dino-lab/index.html:325
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "Reconstruction · {ph0}"
msgstr "재구현 · {ph0}"

# Reviewed for readable instructions and accurate software terminology.
#. {ph0}: <span translate="no">Node.js</span>
#: website/public/faq/index.html:223
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"With {ph0} and npm available, run setup, choose your coding agent and review"
" the proposed changes."
msgstr "{ph0}와 npm을 준비한 뒤 설정 명령을 실행하세요. 사용할 코딩 에이전트를 선택하고 변경 계획을 확인하세요."

#. {ph0}: <span translate="no">Node.js</span>
#: website/public/first-investigation/index.html:207
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "A supplied example · {ph0} and npm · Your coding agent"
msgstr "제공된 예제 · {ph0}과 npm · 코딩 에이전트"

#. {ph0}: <span translate="no">Node.js</span>
#. {ph1}: <a href="../get-started/">
#. {ph2}: </a >
#: website/public/first-investigation/index.html:226
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"Use a coding agent such as Claude Code, Codex or Cursor. You’ll need {ph0} "
"and npm; the {ph1}setup guide lists supported versions{ph2}."
msgstr ""
"Claude Code, Codex, Cursor 같은 코딩 에이전트를 사용하세요. {ph0}와 npm이 필요합니다. {ph1}설치 "
"가이드에 지원 버전이 나와 있습니다{ph2}."

#. {ph0}: <span class="flow-label" >
#. {ph1}: <span translate="no">renderer.js</span>
#. {ph2}: </span >
#. {ph3}: <span class="flow-node">
#. {ph4}: </span >
#. {ph5}: <span class="flow-note" >
#. {ph6}: <code>notes.exportCsv()</code>
#. {ph7}: </span >
#: website/public/first-investigation/index.html:344
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}Page · {ph1}{ph2}{ph3}Export notes{ph4}{ph5}Calls {ph6}.{ph7}"
msgstr "{ph0}페이지 · {ph1}{ph2}{ph3}노트 내보내기{ph4}{ph5}{ph6}을 호출합니다.{ph7}"

#. {ph0}: <span class="flow-label" >
#. {ph1}: <span translate="no">preload.js</span>
#. {ph2}: </span >
#. {ph3}: <span class="flow-node">
#. {ph4}: <code>notes:export</code>
#. {ph5}: </span >
#. {ph6}: <span class="flow-note" >
#. {ph7}: </span >
#: website/public/first-investigation/index.html:352
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}Bridge · {ph1}{ph2}{ph3}{ph4}{ph5}{ph6}Sends a named message to the "
"main process.{ph7}"
msgstr ""
"{ph0}브리지 · {ph1}{ph2}{ph3}{ph4}{ph5}{ph6}메인 프로세스에 이름 있는 메시지를 보냅니다.{ph7}"

#. {ph0}: <span class="flow-label" >
#. {ph1}: <span translate="no">main.js</span>
#. {ph2}: </span >
#. {ph3}: <span class="flow-node" >
#. {ph4}: <span translate="no">notes.csv</span>
#. {ph5}: </span >
#. {ph6}: <span class="flow-note" >
#. {ph7}: <code>csv.js</code>
#. {ph8}: </span >
#: website/public/first-investigation/index.html:360
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}Handler · {ph1}{ph2}{ph3}Write {ph4}{ph5}{ph6}Calls the formatter in "
"{ph7} and writes the file.{ph8}"
msgstr ""
"{ph0}핸들러 · {ph1}{ph2}{ph3}{ph4} 저장{ph5}{ph6}{ph7}의 포맷터를 호출하고 파일을 저장합니다.{ph8}"

#. {ph0}: <span translate="no">main.js</span>
#: website/public/first-investigation/index.html:378
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0} · lines 8–12"
msgstr "{ph0} · 라인 8-12"

#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="first-check-prompt" >
#. {ph3}: <span translate="no">Hello, "REA"</span>
#. {ph4}: <span translate="no">toCsv</span>
#. {ph5}: <span translate="no">Node.js</span>
#. {ph6}: </span >
#. {ph7}: <span class="terminal-cursor" aria-hidden="true">
#. {ph8}: </span>
#: website/public/first-investigation/index.html:420
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Predict the CSV for a note with id 1 and title {ph3}. Then "
"run the example’s {ph4} formatter with {ph5} to check it. Show the "
"prediction and actual output.{ph6}{ph7}{ph8}"
msgstr ""
"{ph0}›{ph1}{ph2}ID가 1이고 제목이 {ph3}인 메모의 CSV 출력을 예측해 줘. 그런 다음 {ph5}로 예제의 {ph4}"
" 포맷터를 실행해 확인해 줘. 예측과 실제 출력을 보여 줘.{ph6}{ph7}{ph8}"

#. {ph0}: <span translate="no">Node.js</span>
#: website/public/first-investigation/index.html:438
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"The title stays in one quoted field; each quotation mark is doubled. This "
"checks the formatter directly with {ph0}."
msgstr "제목은 따옴표로 감싼 필드 하나에 남고, 내부 따옴표는 두 번씩 표시됩니다. {ph0}로 포맷터를 직접 검증합니다."

#. {ph0}: <span translate="no">Node.js</span>
#. {ph1}: <span translate="no">Node.js</span>
#: website/public/get-started/index.html:256
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"You'll need {ph0} 22 (22.23.4+), 24 (24.22.1+) or 26+ (>=26.12.1). npm comes with {ph1}."
msgstr "{ph0} 22(22.23.4+), 24(24.22.1+) 또는 26+ (>=26.12.1)가 필요합니다. npm은 {ph1}와 함께 제공됩니다."

#. {ph0}: <span translate="no">Node.js</span>
#: website/public/get-started/index.html:262
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "Don't have {ph0}, or not sure?"
msgstr "{ph0}가 없거나, 설치되어 있는지 확실하지 않나요?"

#. {ph0}: <code>node -v</code>
#. {ph1}: <span translate="no">Node.js</span>
#: website/public/get-started/index.html:281
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"If {ph0} prints v22.23.4+, v24.22.1+ or v26.12.1+, you're ready. If it prints an "
"older version or \"not recognized\" / \"command not found\", install {ph1} "
"24 LTS:"
msgstr ""
"{ph0}가 v22.23.4+, v24.22.1+ 또는 v26.12.1+를 출력하면 준비가 된 것입니다. 이전 버전이나 ‘인식되지 않음’ / ‘명령을 "
"찾을 수 없음’이 나오면 {ph1} 24 LTS를 설치하세요:"

#. {ph0}: <span translate="no">export.js</span>
#: website/public/guides/browser/index.html:446
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0} · example source excerpt"
msgstr "{ph0} · 예제 소스 발췌"

#. {ph0}: <a href="../../examples/notes-web/">
#. {ph1}: </a>
#. {ph2}: <a href="../../examples/notes-web/export.js" download >
#. {ph3}: <span translate="no">export.js</span>
#. {ph4}: </a >
#. {ph5}: <a href="../../examples/notes-web/notes.json" download >
#. {ph6}: <span translate="no">notes.json</span>
#. {ph7}: </a >
#: website/public/guides/browser/index.html:464
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"{ph0}Open the example{ph1} · {ph2}Download {ph3}{ph4} · {ph5}Download "
"{ph6}{ph7}"
msgstr "{ph0}예제 열기{ph1} · {ph2}{ph3} 다운로드{ph4} · {ph5}{ph6} 다운로드{ph7}"

#. {ph0}: <span translate="no">renderer.js</span>
#: website/public/guides/javascript/index.html:314
#: website/public/guides/javascript/index.html:330
#: website/public/guides/javascript/index.html:345
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0} · example source"
msgstr "{ph0} · 예제 소스"

#. {ph0}: <code>notes-example</code>
#. {ph1}: <span translate="no">Node.js</span>
#: website/public/guides/javascript/index.html:379
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"Download the example and unzip it. The archive contains the complete {ph0} "
"folder. Analyze it with {ph1} and npm; Electron is not needed for this "
"example."
msgstr ""
"예제를 다운로드하고 압축을 푸세요. 압축 파일에는 {ph0} 폴더 전체가 들어 있습니다. {ph1}와 npm으로 분석하세요. 이 예제에는"
" Electron이 필요하지 않습니다."

#. {ph0}: <span translate="no">Node.js</span>
#. {ph1}: <a href="get-started/">
#. {ph2}: </a>
#: website/public/index.html:313
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"First time, or missing {ph0} or a coding agent? {ph1}Follow the step-by-step"
" setup guide →{ph2}"
msgstr "처음이거나 {ph0} 또는 코딩 에이전트가 없나요? {ph1}단계별 설정 가이드를 따라보세요 →{ph2}"

#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="home-analysis-prompt" >
#. {ph3}: <span translate="no">200 + 10%</span>
#. {ph4}: </span >
#. {ph5}: <span class="terminal-cursor" aria-hidden="true">
#. {ph6}: </span>
#: website/public/index.html:528
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to inspect Windows Calculator. Why does {ph3} give "
"220?{ph4}{ph5}{ph6}"
msgstr ""
"{ph0}›{ph1}{ph2}REA로 Windows 계산기를 조사해 줘. {ph3}의 결과가 220인 이유는 "
"뭐야?{ph4}{ph5}{ph6}"

#. {ph0}: <span translate="no">index.js</span>
#: website/public/index.html:715
#, python-brace-format
msgctxt "page:index.html"
msgid "REA · loaded {ph0} · selected lines"
msgstr "REA · 로드 {ph0} · 선택한 라인"

#. {ph0}: <span class="flow-label" >
#. {ph1}: <span translate="no">calc.exe</span>
#. {ph2}: </span >
#. {ph3}: <span class="flow-node">
#. {ph4}: </span >
#. {ph5}: <span class="flow-note" >
#. {ph6}: <code>ms-calculator:</code>
#. {ph7}: </span >
#: website/public/index.html:951
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}01 · REA reads {ph1}{ph2}{ph3}It launches the Calculator "
"app{ph4}{ph5}The code opens {ph6}. The agent then selects the installed "
"app’s library.{ph7}"
msgstr ""
"{ph0}01 · REA로 {ph1} 읽기{ph2}{ph3}계산기 앱을 실행합니다{ph4}{ph5}코드가 {ph6}을 엽니다. 에이전트는"
" 이어서 설치된 앱의 라이브러리를 선택합니다.{ph7}"

#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="aegis-prompt" >
#. {ph3}: <span translate="no">aegis-v3.4.3.apk</span>
#. {ph4}: </span >
#. {ph5}: <span class="terminal-cursor" aria-hidden="true">
#. {ph6}: </span>
#: website/public/showcase/aegis/index.html:283
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to inspect {ph3}. Find how it generates the six-"
"digit login code, explain why it changes every 30 seconds, and rebuild a "
"small demo where I can change the time.{ph4}{ph5}{ph6}"
msgstr ""
"{ph0}›{ph1}{ph2}REA로 {ph3}을 분석해 주세요. 6자리 로그인 코드가 어떻게 생성되고 왜 30초마다 바뀌는지 설명한 "
"뒤, 시간을 바꿔 볼 수 있는 작은 데모를 만들어 주세요.{ph4}{ph5}{ph6}"

#. {ph0}: <span translate="no">preload.js</span>
#: website/public/showcase/notion/index.html:347
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "tab_browser_view/{ph0} · API member"
msgstr "tab_browser_view/{ph0} · API 멤버"

#. {ph0}: <span translate="no">preload.js</span>
#: website/public/showcase/notion/index.html:376
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "tab_browser_view/{ph0} · IPC helper"
msgstr "tab_browser_view/{ph0} · IPC 보조 함수"

#. {ph0}: <span translate="no">index.js</span>
#: website/public/showcase/notion/index.html:407
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "main/{ph0} · handler helper"
msgstr "main/{ph0} · 핸들러 도우미"

#. {ph0}: <span translate="no">index.js</span>
#: website/public/showcase/notion/index.html:435
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "main/{ph0} · clipboard receiver"
msgstr "main/{ph0} · 클립보드 수신 측"

#: website/public/assets/theme.js:52
msgctxt "runtime"
msgid "Switch to light mode"
msgstr "라이트 모드로 전환"

#: website/public/assets/theme.js:53
msgctxt "runtime"
msgid "Switch to dark mode"
msgstr "다크 모드로 전환"

#. {ph0}: <a href="https://github.com/morluto/rea/blob/main/docs/web-network-
#. captures.md" >
#. {ph1}: </a >
#: website/public/guides/browser/index.html:485
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"For HTTP request and response bodies, use {ph0}Fiddler Everywhere: SAZ "
"captures, MCP and public skills{ph1}. Export SAZ or HAR 1.2 for offline REA "
"capture Evidence, or connect Everywhere's MCP server to inspect captured "
"traffic with your agent."
msgstr ""
"HTTP 요청과 응답 본문을 살펴보려면 {ph0}Fiddler Everywhere: SAZ 캡처, MCP 및 공개 스킬{ph1}을 "
"사용하세요. SAZ 또는 HAR 1.2로 내보내면 REA에서 오프라인 캡처 Evidence를 얻을 수 있으며, Everywhere의 "
"MCP 서버를 연결하여 에이전트와 함께 캡처된 트래픽을 살펴볼 수도 있습니다."

#. {ph0}: <br />
#: website/public/blog/index.html:205
#, python-brace-format
msgctxt "page:blog/index.html"
msgid "Model specialization{ph0}Essay"
msgstr "모델 특화{ph0}에세이"

#: website/public/blog/index.html:207
msgctxt "page:blog/index.html"
msgid "Does reverse engineering need a bigger model?"
msgstr "리버스 엔지니어링에는 더 큰 모델이 필요할까?"

#: website/public/blog/index.html:208
msgctxt "page:blog/index.html"
msgid ""
"What Touhou reconstruction suggests about general models, specialist models "
"and learning from compiler feedback."
msgstr "동방 재구성 경험을 바탕으로 범용 모델, 특화 모델, 컴파일러 피드백을 통한 학습을 생각해 봅니다."

#: website/public/blog/index.html:215
msgctxt "page:blog/index.html"
msgid "By N0zoM1z0 · 13 October 2026"
msgstr "작성자: N0zoM1z0 · 2026년 10월 13일"

#: website/public/blog/reverse-engineering-models/index.html:107
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Skip to content"
msgstr "본문으로 건너뛰기"

#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/blog/reverse-engineering-models/index.html:199
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "{ph0}Home{ph1} / {ph2}Blog{ph3} / Models and RE"
msgstr "{ph0}홈{ph1} / {ph2}블로그{ph3} / 모델 및 리버스 엔지니어링"

#: website/public/blog/reverse-engineering-models/index.html:202
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Essay"
msgstr "에세이"

# Reviewed for technical meaning and readability; preserve the distinction
# between historical evidence and proposed experiments.
#: website/public/blog/reverse-engineering-models/index.html:203
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Does reverse engineering need a bigger model?"
msgstr "리버스 엔지니어링에 더 큰 모델이 필요할까?"

#: website/public/blog/reverse-engineering-models/index.html:204
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "By N0zoM1z0 · 13 October 2026"
msgstr "작성자: N0zoM1z0 · 2026년 10월 13일"

#: website/public/blog/reverse-engineering-models/index.html:206
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Takeaway"
msgstr "핵심 요점"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/reverse-engineering-models/index.html:208
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}Model capability changes the hypotheses an agent can find.{ph1} Later "
"sessions have solved problems that earlier work left unresolved."
msgstr ""
"{ph0}모델의 역량은 에이전트가 찾아낼 수 있는 가설을 바꿉니다.{ph1} 이후 세션에서 이전 작업이 풀지 못한 문제를 해결하기도 "
"했습니다."

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/reverse-engineering-models/index.html:216
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}A familiar compiler gives specialization something concrete to "
"learn.{ph1} Some exact matches depend on narrow, reusable source patterns."
msgstr ""
"{ph0}익숙한 컴파일러는 특화 모델에 구체적인 학습 대상을 제공합니다.{ph1} 일부 완전 일치는 좁은 범위에서 재사용할 수 있는 소스"
" 패턴에 달려 있습니다."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/reverse-engineering-models/index.html:223
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}Give repository knowledge a fair comparison.{ph1} A smaller model with "
"good retrieval may already know enough to make progress."
msgstr ""
"{ph0}저장소 지식의 효과도 공정하게 비교하세요.{ph1} 검색을 잘 활용하는 작은 모델도 작업을 진전시킬 만큼 알고 있을 수 "
"있습니다."

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/reverse-engineering-models/index.html:228
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}Train the next useful experiment, and test its oracle.{ph1} The value "
"of feedback depends on what the checker actually verifies."
msgstr ""
"{ph0}다음 유용한 실험을 고르도록 학습시키고, 오라클도 검증하세요.{ph1} 피드백의 가치는 검사기가 실제로 무엇을 검증하는지에 달려"
" 있습니다."

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/reverse-engineering-models/index.html:235
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}Measure accepted reconstruction against time and cost.{ph1} That is the"
" result I want from the whole agent."
msgstr "{ph0}검증을 통과한 재구성 결과를 시간·비용과 함께 측정하세요.{ph1} 제가 에이전트 전체에서 얻고 싶은 결과입니다."

#: website/public/blog/reverse-engineering-models/index.html:246
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "In this article"
msgstr "이 글의 내용"

#. {ph0}: <a href="#model-capability">
#. {ph1}: </a>
#: website/public/blog/reverse-engineering-models/index.html:248
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "{ph0}What better models changed{ph1}"
msgstr "{ph0}더 나은 모델이 바꾼 것{ph1}"

#. {ph0}: <a href="#specialization">
#. {ph1}: </a>
#: website/public/blog/reverse-engineering-models/index.html:249
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "{ph0}Why specialize?{ph1}"
msgstr "{ph0}왜 특화 모델인가?{ph1}"

#. {ph0}: <a href="#repository-knowledge">
#. {ph1}: </a>
#: website/public/blog/reverse-engineering-models/index.html:250
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "{ph0}Where experience lives{ph1}"
msgstr "{ph0}경험을 어디에 담을까?{ph1}"

#. {ph0}: <a href="#learning-search">
#. {ph1}: </a>
#: website/public/blog/reverse-engineering-models/index.html:251
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "{ph0}Learning the next experiment{ph1}"
msgstr "{ph0}다음 유용한 실험 학습하기{ph1}"

#. {ph0}: <a href="#re-and-rl">
#. {ph1}: </a>
#: website/public/blog/reverse-engineering-models/index.html:252
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "{ph0}RE and reinforcement learning{ph1}"
msgstr "{ph0}리버스 엔지니어링과 강화 학습{ph1}"

#. {ph0}: <a href="#oracle">
#. {ph1}: </a>
#: website/public/blog/reverse-engineering-models/index.html:253
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "{ph0}When the oracle is wrong{ph1}"
msgstr "{ph0}오라클이 틀렸을 때{ph1}"

#. {ph0}: <a href="#comparison">
#. {ph1}: </a>
#: website/public/blog/reverse-engineering-models/index.html:254
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "{ph0}A comparison worth running{ph1}"
msgstr "{ph0}시도해 볼 만한 비교{ph1}"

#. {ph0}: <a href="#future-agent">
#. {ph1}: </a>
#: website/public/blog/reverse-engineering-models/index.html:255
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "{ph0}What kind of agent?{ph1}"
msgstr "{ph0}어떤 에이전트가 필요할까?{ph1}"

#: website/public/blog/reverse-engineering-models/index.html:263
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "What better models changed"
msgstr "더 나은 모델이 바꾼 것"

#: website/public/blog/reverse-engineering-models/index.html:264
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Since August 2026, I have been exploring how much reverse engineering an "
"agent can carry out with access to a program and a way to check its work. "
"Most of my experience comes from reconstructing games, especially Touhou. As"
" I have changed models, the repositories have kept a record of what each "
"session managed to recover."
msgstr ""
"2026년 8월부터 프로그램에 접근하고 결과를 검증할 수 있는 에이전트가 리버스 엔지니어링을 어디까지 수행할 수 있는지 탐구해 왔습니다."
" 경험의 대부분은 게임, 특히 동방 재구성에서 얻었습니다. 모델을 바꿔 가며 작업하는 동안 저장소에는 각 세션이 무엇을 복구했는지 기록이"
" 쌓였습니다."

#: website/public/blog/reverse-engineering-models/index.html:272
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Much of that work aims at exact reconstruction: we compile the maintained "
"source under a pinned historical toolchain and check whether it reproduces "
"the target function. When a later model succeeds where earlier work stalled,"
" the source changes show what made that progress possible."
msgstr ""
"이 작업의 상당 부분은 정확한 재구성이 목표입니다. 고정된 당시 도구 모음으로 유지보수 소스를 컴파일해 대상 함수를 재현하는지 "
"확인합니다. 이전에 막혔던 문제를 나중 모델이 해결하면, 소스 변경에서 무엇이 진전을 가능하게 했는지 볼 수 있습니다."

#: website/public/blog/reverse-engineering-models/index.html:279
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "The temporary values had to stay alive together"
msgstr "임시 값들의 수명이 겹쳐야 했습니다"

#: website/public/blog/reverse-engineering-models/index.html:280
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Much of a TH09 attack function's logic had already been reconstructed, but "
"the compiler still stored temporary results differently from the original. "
"The remaining problem was how long those results needed to stay alive and "
"when their storage could be reused."
msgstr ""
"TH09 공격 함수의 로직은 대부분 재구성했지만, 컴파일러가 임시 결과를 저장하는 방식은 여전히 원본과 달랐습니다. 남은 문제는 그 "
"결과를 언제까지 유지하고 저장 공간을 언제 재사용할 수 있느냐였습니다."

#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/de63c0f9121963f3a6b1ab5471c4878625fd3425"
#. >
#. {ph1}: </a >
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/52929ed7c299f1a5f29cc13964e22510145fd616"
#. >
#. {ph3}: </a >
#: website/public/blog/reverse-engineering-models/index.html:287
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"A {ph0}GPT-6-Sol checkpoint{ph1} recorded this mismatch after testing "
"several ordinary source arrangements. When {ph2}GPT-6.1-Sol returned to the "
"problem{ph3}, it found a useful hypothesis about how long those temporary "
"values needed to stay alive."
msgstr ""
"일반적인 소스 구성을 여러 가지 시험한 뒤 {ph0}GPT-6-Sol 체크포인트{ph1}에 이 불일치가 기록됐습니다. "
"{ph2}GPT-6.1-Sol이 문제를 다시 살펴보며{ph3} 임시 값의 수명에 관한 유용한 가설을 찾아냈습니다."

#: website/public/blog/reverse-engineering-models/index.html:301
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"The function produced temporary results and copied them into animation "
"positions. In C++, a temporary result stays alive until the expression using"
" it finishes. Grouping the real operations into one expression kept those "
"results alive together, so the compiler could no longer reuse the same "
"storage for all of them."
msgstr ""
"함수는 임시 결과를 만들어 애니메이션 위치에 복사했습니다. C++에서 임시 결과는 이를 사용하는 표현식이 끝날 때까지 유지됩니다. 실제 "
"연산을 하나의 표현식으로 묶자 결과들의 수명이 겹쳤고, 컴파일러는 더 이상 모두에 같은 저장 공간을 재사용할 수 없었습니다."

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/reverse-engineering-models/index.html:308
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"One result still shared storage with a value used later for collision "
"checks. Giving that value its own lifetime resolved the remaining overlap. "
"After several targeted experiments, {ph0}a clean rebuild confirmed that the "
"full function matched{ph1}."
msgstr ""
"한 결과는 나중에 충돌 검사에 쓰이는 값과 여전히 저장 공간을 공유했습니다. 그 값에 별도의 수명을 부여하자 남아 있던 겹침이 "
"해결되었습니다. 여러 차례의 표적 실험 끝에 {ph0}클린 리빌드로 함수 전체가 일치함을 확인했습니다{ph1}."

#: website/public/blog/reverse-engineering-models/index.html:317
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"What interests me is how the discovery and the tests worked together. The "
"lifetime hypothesis gave the agent a new direction; compiler feedback helped"
" it refine that hypothesis into a source arrangement that matched."
msgstr ""
"흥미로운 점은 발견과 테스트가 맞물린 방식입니다. 수명 가설은 에이전트에게 새로운 방향을 제시했고, 컴파일러 피드백은 가설을 구체화해 "
"일치하는 소스 구성을 찾도록 도왔습니다."

#: website/public/blog/reverse-engineering-models/index.html:323
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "A different control-flow graph"
msgstr "다른 제어 흐름 그래프"

#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/f8d12d72aaf02212ee1b585a8f3f86d7ed000269"
#. >
#. {ph1}: </a >
#: website/public/blog/reverse-engineering-models/index.html:324
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"A second TH09 function shows why that new direction can matter. Here, the "
"obstacle was how several branches shared their final work. "
"{ph0}GPT-6.1-Sol's earlier work{ph1} got parts of the function to match, but"
" the branches still joined up differently from the original."
msgstr ""
"두 번째 TH09 함수는 새로운 방향이 왜 중요한지 보여줍니다. 문제는 여러 분기가 마지막 처리를 공유하는 방식이었습니다. "
"{ph0}GPT-6.1-Sol의 이전 작업{ph1}에서 함수 일부는 일치했지만 분기가 합쳐지는 방식은 여전히 원본과 달랐습니다."

#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/da33a646221198ceb7f3df2b96e2ca0e9b2f705f"
#. >
#. {ph1}: </a >
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/5f825b28a862f8e1a6d4aea2f78a42f04c09a1c0"
#. >
#. {ph3}: </a >
#: website/public/blog/reverse-engineering-models/index.html:335
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}GPT-6-Astra changed the surrounding control-flow graph{ph1}. The main "
"paths now led to a shared final update and return. In that source structure,"
" the compiler combined the branches in the same way as the original. The "
"complete function matched, and a {ph2}separate rebuild check confirmed "
"it{ph3}."
msgstr ""
"{ph0}GPT-6-Astra가 주변 제어 흐름 그래프를 변경했습니다{ph1}. 이제 주요 경로는 공유된 최종 업데이트와 반환으로 "
"이어졌습니다. 해당 소스 구조에서 컴파일러는 원본과 동일한 방식으로 분기를 결합했습니다. 함수 전체가 일치했으며, {ph2}별도의 리빌드"
" 검사로 이를 확인했습니다{ph3}."

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/reverse-engineering-models/index.html:347
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}Changing the representation opened a more productive search space.{ph1}"
" Both cases give me a reason to take general model capability seriously: an "
"agent can keep trying local variations for a long time before finding a "
"better way to express the surrounding work."
msgstr ""
"{ph0}표현을 바꾸자 더 생산적인 탐색 공간이 열렸습니다.{ph1} 두 사례는 범용 모델의 역량을 중요하게 볼 이유가 됩니다. "
"에이전트가 주변 코드를 더 잘 표현할 방법을 찾기 전까지 오랫동안 부분적인 변형만 시도할 수도 있기 때문입니다."

#: website/public/blog/reverse-engineering-models/index.html:356
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"At the same time, the later sessions started with earlier source and "
"recorded failures. That accumulated work was part of their advantage. The "
"history lets us inspect the discoveries and their checks; a controlled "
"comparison would help separate the effect of the model from the experience "
"it inherited."
msgstr ""
"한편 후속 세션은 이전 소스와 실패 기록에서 출발했습니다. 축적된 작업도 이점의 일부였습니다. 이력에서 발견과 검증 과정을 살펴볼 수 "
"있지만, 모델 자체의 효과와 물려받은 경험의 효과를 구분하려면 조건을 맞춘 비교가 필요합니다."

#: website/public/blog/reverse-engineering-models/index.html:363
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"This is where the question becomes interesting to me. Some of the progress "
"came from finding a new representation, while much of the remaining work "
"involved testing source forms against a familiar compiler. How much needs "
"broad reasoning ability, and how much could a model learn through repeated "
"experience with that compiler and code?"
msgstr ""
"여기서 질문이 흥미로워집니다. 일부 진전은 새로운 표현을 찾은 덕분이었고, 나머지 작업의 상당 부분은 익숙한 컴파일러로 소스 형태를 "
"시험하는 일이었습니다. 얼마나 폭넓은 추론이 필요하고, 얼마나 많은 부분을 그 컴파일러와 코드를 반복해서 경험하며 배울 수 있을까요?"

#: website/public/blog/reverse-engineering-models/index.html:373
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Why might a specialist do well?"
msgstr "특화 모델은 왜 잘할 수 있을까요?"

#: website/public/blog/reverse-engineering-models/index.html:374
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Touhou gives us a concrete reason to expect that experience to help. Much of"
" the game code comes from the same author, ZUN, so recurring habits are a "
"reasonable starting assumption. The repositories back that up with useful "
"examples: related loops and helper arrangements have supplied hypotheses "
"across games."
msgstr ""
"동방은 경험이 도움이 될 것이라 기대할 구체적인 이유를 제공합니다. 게임 코드 대부분의 저자가 ZUN이므로 반복되는 습관이 있다고 가정할"
" 만합니다. 저장소의 사례도 이를 뒷받침합니다. 비슷한 루프와 보조 함수 구성이 게임을 넘나들며 가설의 단서가 됐습니다."

#: website/public/blog/reverse-engineering-models/index.html:381
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Those source patterns become more specific when we include the compiler. "
"Under a particular version and set of options, small changes in source can "
"produce repeatable differences in machine code. Some of those differences "
"are surprisingly obscure."
msgstr ""
"컴파일러까지 고려하면 소스 패턴은 더 구체적이 됩니다. 특정 버전과 옵션에서는 작은 소스 변경이 기계어 코드에 반복 가능한 차이를 "
"만듭니다. 그중에는 뜻밖에 미묘한 차이도 있습니다."

#. {ph0}: <strong >
#. {ph1}: </strong >
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th095/commit/26bb64bdb093a13f73abd0ee8ae7ce199ee4658f"
#. >
#. {ph3}: <code>Supervisor::LoadDat</code>
#. {ph4}: </a >
#: website/public/blog/reverse-engineering-models/index.html:387
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"In TH095, for example, {ph0}even the name used for a local variable could "
"change where VC7.1 stored it{ph1}. Moving the declaration alone did not "
"solve the layout, but an earlier background function had revealed a naming "
"pattern that affected the compiler's choice. That gave us a more promising "
"hypothesis for {ph2}the reconstruction of {ph3}{ph4}."
msgstr ""
"예를 들어 TH095에서는 {ph0}지역 변수의 이름만으로도 VC7.1의 저장 위치가 바뀔 수 있었습니다{ph1}. 선언 위치만 옮겨서는"
" 배치가 해결되지 않았지만, 앞서 분석한 배경 함수에서 컴파일러의 선택에 영향을 주는 이름 패턴을 발견했습니다. 이는 "
"{ph2}{ph3}의 재구성{ph4}에 더 유망한 가설을 제공했습니다."

#: website/public/blog/reverse-engineering-models/index.html:401
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Reusing that pattern for the file-size variable produced the required layout"
" without adding storage. The full function then matched."
msgstr ""
"파일 크기 변수에도 그 패턴을 재사용하자 저장 공간을 추가하지 않고도 필요한 배치가 만들어졌습니다. 그러자 함수 전체가 일치했습니다."

#: website/public/blog/reverse-engineering-models/index.html:406
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"This is the sort of narrow detail a general model may not know when it "
"arrives. A specialist trained on this compiler could encounter many such "
"cases and learn which source variations are worth testing first."
msgstr ""
"이런 세부 사항은 범용 모델이 처음부터 알기 어렵습니다. 이 컴파일러에 특화된 모델은 비슷한 사례를 많이 접하며 어떤 소스 변형을 먼저 "
"시험할지 배울 수 있습니다."

#: website/public/blog/reverse-engineering-models/index.html:412
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"The opportunity is especially clear in final matching problems where we "
"already understand the behavior. We are then asking which ordinary source "
"form this compiler turns into the observed instructions. Specialization "
"could help the model propose those forms more efficiently, while the target "
"still determines which hypotheses survive."
msgstr ""
"이미 동작을 이해하고 마지막 차이를 맞추는 문제에서 가능성이 특히 뚜렷합니다. 관찰된 명령어를 이 컴파일러가 어떤 일반적인 소스로부터 "
"생성하는지 묻는 단계입니다. 특화 학습은 후보를 더 효율적으로 제안하게 해줄 수 있으며, 가설의 통과 여부는 여전히 대상이 결정합니다."

#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th04/commit/6dce0a79d5b931f0e2a08475b90e0c33d2321b98"
#. >
#. {ph1}: </a >
#: website/public/blog/reverse-engineering-models/index.html:420
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"The useful patterns would have to retain their context, though. TH08 uses an"
" earlier Visual C++ version than TH095 and TH09. TH04 uses a different DOS-"
"era compiler, and its {ph0}player reconstruction{ph1} needed different "
"hypotheses about source patterns and how the compiled code was combined into"
" an executable. Shared authorship gives us a prior, but each target tells us"
" whether it applies. Distinguishing those contexts is part of what a "
"specialist would need to learn."
msgstr ""
"유용한 패턴에는 적용 조건도 함께 남아야 합니다. TH08은 TH095·TH09보다 오래된 Visual C++를 사용합니다. TH04는 "
"DOS 시대의 다른 컴파일러를 사용하며, {ph0}플레이어 코드 재구성{ph1}에는 소스 패턴과 링크 방식에 관한 다른 가설이 "
"필요했습니다. 같은 저자라는 사실은 사전 가정을 주지만 적용 여부는 각 대상에서 확인해야 합니다. 이 맥락을 구별하는 것도 특화 모델이 "
"배울 일입니다."

#: website/public/blog/reverse-engineering-models/index.html:436
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Where should that experience live?"
msgstr "경험을 어디에 담아야 할까요?"

#. {ph0}: <a href="../touhou-reconstruction/">
#. {ph1}: </a>
#: website/public/blog/reverse-engineering-models/index.html:437
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Before deciding to teach those patterns through model training, I would look"
" at the knowledge we already keep in the repository. In the {ph0}previous "
"essay{ph1}, I wrote about it becoming the project's working memory. That "
"memory includes compiler lessons, along with the source and failed "
"experiments that made them useful."
msgstr ""
"패턴을 모델 훈련으로 가르치기 전에 저장소에 이미 쌓인 지식을 살펴보고 싶습니다. {ph0}이전 에세이{ph1}에서는 저장소가 프로젝트의"
" 작업 기억이 되어 간다고 썼습니다. 여기에는 컴파일러에 관한 교훈과, 그 교훈을 유용하게 만든 소스와 실패한 실험도 담겨 있습니다."

#: website/public/blog/reverse-engineering-models/index.html:446
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"By retrieving that record, an agent can start with a known result and "
"inspect how we reached it. It can also avoid alternatives that have already "
"failed in the same context. The starting point improves without changing the"
" model's weights."
msgstr ""
"에이전트는 기록을 검색해 알려진 결과에서 시작하고, 거기 도달한 과정을 살펴볼 수 있습니다. 같은 맥락에서 이미 실패한 대안도 피할 수 "
"있습니다. 모델의 가중치를 바꾸지 않고도 출발점이 나아집니다."

#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/1eb843383941d00065622a9e353146c4bb96979e"
#. >
#. {ph1}: </a >
#: website/public/blog/reverse-engineering-models/index.html:452
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"When reconstructing TH09's enemy-spawn function, a {ph0}GPT-6-Luna-max "
"session{ph1} drew a hypothesis from TH08's corresponding source family. That"
" earlier source suggested how to structure the loop and handle failures "
"within it. TH09's own evidence supplied the game-specific details, and clean"
" rebuilds confirmed the complete match."
msgstr ""
"TH09의 적 생성 함수를 재구성할 때 {ph0}GPT-6-Luna-max 세션{ph1}은 TH08의 관련 소스 계열에서 가설을 "
"얻었습니다. 이전 소스는 루프 구성과 내부 실패 처리의 단서를 줬습니다. TH09 자체의 증거로 게임별 세부 사항을 채우고, 클린 빌드로"
" 전체 일치를 확인했습니다."

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/reverse-engineering-models/index.html:463
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}\"The model did not know that compiler quirk\" and \"the model could "
"not use it\" are different problems.{ph1} Retrieval may solve the first, but"
" turning that fact into a useful candidate still takes work. And if the "
"candidate fails, the model must decide what the result means for its next "
"attempt. Knowing the relevant pattern is only the beginning of that process."
msgstr ""
"{ph0}“모델이 컴파일러 특성을 몰랐다”와 “알아도 활용하지 못했다”는 다른 문제입니다.{ph1} 검색으로 첫 문제를 풀 수 있지만, "
"그 사실을 유용한 후보로 만드는 일은 여전히 필요합니다. 후보가 실패하면 그 결과가 다음 시도에 무엇을 뜻하는지 판단해야 합니다. 관련 "
"패턴을 아는 것은 시작일 뿐입니다."

#: website/public/blog/reverse-engineering-models/index.html:473
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"For that reason, I would include a smaller general model with good retrieval"
" in any comparison. Giving it the same library of experience would help us "
"identify what training adds: better candidate generation, better decisions "
"after feedback, or both."
msgstr ""
"그래서 비교에는 검색을 잘 활용하는 작은 범용 모델도 포함하고 싶습니다. 같은 경험 자료를 주면 학습이 후보 생성, 피드백 후의 판단, "
"혹은 둘 모두를 얼마나 개선하는지 구분할 수 있습니다."

#: website/public/blog/reverse-engineering-models/index.html:481
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Learning the next useful experiment"
msgstr "다음 유용한 실험 학습하기"

#: website/public/blog/reverse-engineering-models/index.html:482
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Those decisions after feedback are what I would most like to study. In "
"agentic reconstruction, the model proposes an explanation and tests it "
"against the program. Even when the candidate fails, the result can narrow "
"the remaining possibilities and suggest a more useful next experiment."
msgstr ""
"제가 가장 연구하고 싶은 것은 피드백 이후의 판단입니다. 에이전트 중심 재구성에서 모델은 설명을 제안하고 프로그램과 대조해 검증합니다. "
"후보가 실패해도 결과는 남은 가능성을 좁히고 다음에 유용할 실험을 제시할 수 있습니다."

#: website/public/blog/reverse-engineering-models/index.html:489
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Consider the temporary-results example again. Its final source shows the "
"arrangement that worked, but the route to that source contains more "
"information. Each of the following experiments helped identify what still "
"needed to change."
msgstr ""
"임시 결과 사례를 다시 보세요. 최종 소스는 성공한 구성을 보여주지만 거기에 도달한 과정에는 더 많은 정보가 있습니다. 아래 실험들은 "
"무엇을 더 바꿔야 하는지 알아내는 데 도움이 됐습니다."

#: website/public/blog/reverse-engineering-models/index.html:502
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Experiment"
msgstr "실험"

#: website/public/blog/reverse-engineering-models/index.html:503
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "What its result taught us"
msgstr "결과에서 배운 점"

#: website/public/blog/reverse-engineering-models/index.html:508
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Try a different way to copy the results"
msgstr "다른 방식으로 결과 복사"

#: website/public/blog/reverse-engineering-models/index.html:509
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "The copy code changes, but the function still differs."
msgstr "복사 코드는 바뀌지만 함수는 여전히 다릅니다."

#: website/public/blog/reverse-engineering-models/index.html:514
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Use the returned values directly"
msgstr "반환된 값을 직접 사용"

#: website/public/blog/reverse-engineering-models/index.html:515
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Copying follows the original pattern, but temporary storage still differs."
msgstr "복사는 원본 패턴을 따르지만 임시 저장 공간은 여전히 다릅니다."

#: website/public/blog/reverse-engineering-models/index.html:521
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Keep the temporary results alive together"
msgstr "임시 결과들의 수명을 겹치게 유지"

#: website/public/blog/reverse-engineering-models/index.html:522
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"They get separate storage, but one still overlaps a value used later for "
"collision checks."
msgstr "별도 저장 공간이 생기지만 하나는 이후 충돌 판정에 쓰는 값과 여전히 겹칩니다."

#: website/public/blog/reverse-engineering-models/index.html:528
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Keep the collision-check value separate"
msgstr "충돌 판정 값을 별도로 유지"

#: website/public/blog/reverse-engineering-models/index.html:529
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "A clean rebuild confirms the complete match."
msgstr "클린 빌드로 함수 전체의 일치를 확인합니다."

#: website/public/blog/reverse-engineering-models/index.html:534
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Selected experiments from the attack-function reconstruction above, grouped "
"by what they taught us."
msgstr "위 공격 함수 재구성 실험에서 배운 내용을 기준으로 묶은 사례입니다."

#: website/public/blog/reverse-engineering-models/index.html:538
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"A training record that keeps this sequence can teach more than the final "
"source alone. It connects each proposed change to an observed result and the"
" next decision. Keeping ineffective variations matters too: they tell a "
"later agent which hypotheses have already been tested in that context."
msgstr ""
"이 순서를 보존한 학습 기록은 최종 소스만으로는 알 수 없는 것까지 가르칠 수 있습니다. 제안한 변경, 관찰한 결과, 다음 판단을 "
"연결하기 때문입니다. 효과가 없던 변형도 중요합니다. 같은 맥락에서 어떤 가설을 이미 시험했는지 다음 에이전트에게 알려줍니다."

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/reverse-engineering-models/index.html:545
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}I would want the model to learn how to use feedback.{ph1} A neutral "
"result is a reason to reconsider the variation; a changed mismatch may point"
" to another cause. When local edits stop being informative, the agent should"
" be able to revisit the source representation or inspect the evidence again."
msgstr ""
"{ph0}모델이 피드백을 활용하는 법을 배우면 좋겠습니다.{ph1} 변화 없는 결과는 변형을 재고할 이유가 되고, 달라진 불일치는 다른 "
"원인을 가리킬 수 있습니다. 부분 수정에서 더 이상 정보를 얻지 못하면 소스 표현을 다시 생각하거나 증거를 재검토할 수 있어야 합니다."

#: website/public/blog/reverse-engineering-models/index.html:554
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Learning to make those choices requires autonomy. Sometimes the useful next "
"step is inspecting another caller rather than compiling another edit. A "
"rigid sequence of required rewrites would remove that choice, along with "
"part of the behavior we want the model to learn."
msgstr ""
"이런 선택을 배우려면 자율성이 필요합니다. 다음에는 코드를 또 수정해 컴파일하기보다 다른 호출 함수를 살펴보는 편이 유용할 수도 "
"있습니다. 정해진 재작성 순서를 강제하면 그 선택과 함께 우리가 학습시키려는 행동의 일부도 사라집니다."

#: website/public/blog/reverse-engineering-models/index.html:563
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Why RE is interesting for reinforcement learning"
msgstr "리버스 엔지니어링이 강화 학습에 흥미로운 이유"

#: website/public/blog/reverse-engineering-models/index.html:564
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Bounded reconstruction gives us a practical environment for studying these "
"choices. Once the target and compiler are pinned, many source experiments "
"produce quick, repeatable feedback. The agent can compile a candidate, "
"inspect the mismatch and use that observation to choose its next step."
msgstr ""
"범위를 정한 재구성은 이런 선택을 연구할 실용적인 환경입니다. 대상과 컴파일러를 고정하면 많은 소스 실험에서 빠르고 반복 가능한 피드백을"
" 얻습니다. 에이전트는 후보를 컴파일하고 불일치를 살핀 뒤 그 관찰로 다음 단계를 고를 수 있습니다."

#: website/public/blog/reverse-engineering-models/index.html:571
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Reinforcement learning could train that decision-making process through the "
"feedback it receives. A candidate accepted by a defined check gives us a "
"concrete outcome, while the sequence of attempts lets us observe how much "
"work it took to reach it."
msgstr ""
"강화 학습으로 이런 피드백을 통한 의사 결정을 훈련할 수 있습니다. 정의된 검사를 통과한 후보는 구체적인 성과가 되고, 시도 순서를 보면"
" 거기 도달하는 데 들인 작업량을 알 수 있습니다."

#. {ph0}: <a href="https://aclanthology.org/2024.emnlp-main.203/" >
#. {ph1}: </a >
#. {ph2}: <a href="https://arxiv.org/html/2606.16162v1">
#. {ph3}: </a>
#: website/public/blog/reverse-engineering-models/index.html:577
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"There is already research supporting this direction. {ph0}LLM4Decompile{ph1}"
" studies models specialized for decompilation. {ph2}AutoDecompiler{ph3} "
"trains multi-turn refinement using compiler and execution feedback. Their "
"studies focus on functional recovery. For this work, I would use them as a "
"starting point for the related task of finding source that matches a "
"historical compiler's output."
msgstr ""
"이 방향을 뒷받침하는 연구도 있습니다. {ph0}LLM4Decompile{ph1}은 디컴파일 특화 모델을 연구합니다. "
"{ph2}AutoDecompiler{ph3}는 컴파일러와 실행 피드백으로 여러 차례 개선하는 과정을 학습시킵니다. 두 연구는 기능 복원에"
" 집중합니다. 저는 이를 출발점 삼아 당시 컴파일러의 출력과 일치하는 소스를 찾는 관련 과제를 연구하고 싶습니다."

#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/af9cb1d3e839b15a78b47ac1701506083cc82847"
#. >
#. {ph1}: </a >
#: website/public/blog/reverse-engineering-models/index.html:589
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"To reach such a well-defined task, though, we may first need to establish "
"what a function owns or devise a new runtime measurement. In TH08, for "
"example, a {ph0}collision difference led back to how the original program "
"handled floating-point calculations{ph1}. Before the agent could test a "
"useful correction, it had to work out what to measure."
msgstr ""
"다만 잘 정의된 과제를 만들려면 먼저 함수가 무엇을 소유하는지 밝히거나 새로운 런타임 측정을 설계해야 할 수 있습니다. TH08에서는 "
"{ph0}충돌 판정 차이를 추적하다 원본의 부동소수점 계산 방식에 도달했습니다{ph1}. 에이전트는 유용한 수정을 시험하기 전에 무엇을 "
"측정할지 알아내야 했습니다."

#: website/public/blog/reverse-engineering-models/index.html:600
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"This suggests another role for a broadly capable model: helping make the "
"problem checkable in the first place. Once that check exists, we can "
"investigate how far a learned search policy can get with it."
msgstr ""
"이는 폭넓은 역량을 가진 모델의 또 다른 역할을 보여줍니다. 문제를 검증 가능한 형태로 만드는 일입니다. 검증 수단을 마련한 뒤에는 "
"학습된 탐색 전략으로 어디까지 갈 수 있는지 살펴볼 수 있습니다."

#: website/public/blog/reverse-engineering-models/index.html:608
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "When the oracle is wrong"
msgstr "오라클이 틀렸을 때"

#: website/public/blog/reverse-engineering-models/index.html:609
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Once we train against that check, its coverage becomes part of what the "
"model learns. I call the reference or checker an oracle. Even if it gives a "
"repeatable answer, we still need to understand what that answer covers."
msgstr ""
"검사를 기준으로 학습시키면 그 검증 범위도 모델이 배우는 내용의 일부가 됩니다. 저는 이 참조 기준이나 검사기를 오라클이라고 부릅니다. "
"답이 매번 같더라도 그 답이 무엇을 검증하는지 이해해야 합니다."

#: website/public/blog/reverse-engineering-models/index.html:615
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"TH08 showed how much can hide outside that coverage. Some reconstructed "
"functions passed their exact comparisons with wrong floating constants. The "
"comparator adjusted relocated addresses before checking instructions, but it"
" checked the values behind those addresses only when they had been "
"explicitly recorded for verification. Other literal references could pass "
"without their values being examined."
msgstr ""
"TH08은 검증 범위 밖에 얼마나 많은 문제가 숨어 있을 수 있는지 보여 주었습니다. 재구성된 일부 함수는 잘못된 부동 소수점 상수를 "
"사용하고도 정확한 일치 비교를 통과했습니다. 비교기는 명령어를 검사하기 전에 재배치된 주소를 조정했지만, 그 주소가 가리키는 값은 검증 "
"대상으로 명시적으로 기록된 경우에만 확인했습니다. 그 밖의 리터럴 참조는 값을 검사하지 않은 채 통과할 수 있었습니다."

#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/a393f400786e4cc6cbb1000af0dad3276da12c78"
#. >
#. {ph1}: </a >
#. {ph2}: <code>1.0f</code>
#. {ph3}: <code>32.0f</code>
#: website/public/blog/reverse-engineering-models/index.html:624
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"To close that gap, a {ph0}wider audit{ph1} found incorrect constants in "
"functions that had already been accepted. In one calculation, the "
"reconstructed source added {ph2} where the original added {ph3}."
msgstr ""
"허점을 메우기 위한 {ph0}확대 점검{ph1}에서 이미 통과한 함수들의 잘못된 상수를 발견했습니다. 한 계산은 원본이 {ph3}을 "
"더하는 곳에서 재구성 소스가 {ph2}를 더했습니다."

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/reverse-engineering-models/index.html:634
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}A learner rewarded by the old check could learn to produce the wrong "
"reconstruction.{ph1} We had not trained an RL model against this oracle; the"
" observed failure was in the check itself. But using that check as a reward "
"would have made the same blind spot part of the learning environment."
msgstr ""
"{ph0}이전 검사로 보상받는 모델은 잘못된 재구성을 학습할 수 있었습니다.{ph1} 이 오라클로 RL 모델을 훈련한 것은 아니며, 실제"
" 실패는 검사 자체에서 관찰됐습니다. 하지만 이를 보상으로 썼다면 같은 사각지대가 학습 환경의 일부가 됐을 것입니다."

#. {ph0}: <a href="https://arxiv.org/html/2609.05370v1" >
#. {ph1}: </a >
#: website/public/blog/reverse-engineering-models/index.html:644
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"A functional test can have a similar blind spot. {ph0}Differential-fuzzing "
"research on LLM decompilers{ph1} has found behavior differences beyond the "
"supplied tests. Passing those tests therefore needs to be read in terms of "
"the cases they exercise, just as an instruction match needs to be read in "
"terms of the bytes and data it checks."
msgstr ""
"기능 테스트에도 비슷한 사각지대가 있습니다. {ph0}LLM 디컴파일러의 차등 퍼징 연구{ph1}는 제공된 테스트 밖에서 동작 차이를 "
"발견했습니다. 따라서 테스트 통과는 실행한 사례 범위에서 해석해야 합니다. 명령어 일치도 실제로 확인한 바이트와 데이터 범위에서 해석해야"
" 하는 것과 같습니다."

#: website/public/blog/reverse-engineering-models/index.html:654
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Before using either kind of check as a reward, I would test it with "
"deliberate failures. I would also keep final acceptance outside the "
"candidate's editable source, so the model has to satisfy the check through "
"its reconstruction. Otherwise, something like a byte array copied from the "
"target could satisfy a naive score without recovering useful source."
msgstr ""
"어느 검사를 보상으로 쓰든 의도적으로 실패하는 사례로 시험하고 싶습니다. 최종 수용 기준은 후보의 수정 가능한 소스 밖에 두어 재구성으로"
" 검사를 만족하게 해야 합니다. 그렇지 않으면 대상에서 복사한 바이트 배열만으로도 유용한 소스를 복구하지 않은 채 단순한 점수를 얻을 수"
" 있습니다."

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/reverse-engineering-models/index.html:662
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}Improving the learner and improving its oracle belong to the same "
"research problem.{ph1} As the learner gets better at optimizing the feedback"
" we give it, understanding that feedback becomes more important too."
msgstr ""
"{ph0}학습 모델과 오라클의 개선은 같은 연구 과제입니다.{ph1} 모델이 주어진 피드백을 더 잘 최적화할수록 그 피드백 자체를 "
"이해하는 일도 중요해집니다."

#: website/public/blog/reverse-engineering-models/index.html:672
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "A comparison worth running"
msgstr "시도해 볼 만한 비교"

#: website/public/blog/reverse-engineering-models/index.html:673
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"With those checks in place, I would start the comparison on a fixed VC7.1 "
"task family. First, I would establish baselines for a strong general model "
"and a smaller one. Adding repository knowledge to the smaller model would "
"show what retrieval changes. From there, supervised specialization and an "
"RL-trained version would let us examine what training adds."
msgstr ""
"검증 체계를 갖춘 뒤 고정된 VC7.1 과제군에서 비교를 시작하고 싶습니다. 먼저 강력한 범용 모델과 작은 모델의 기준 성능을 "
"측정합니다. 작은 모델에 저장소 지식을 더해 검색의 효과를 봅니다. 이어서 지도 학습으로 특화한 버전과 RL 학습 버전으로 훈련이 더하는"
" 효과를 살펴봅니다."

#: website/public/blog/reverse-engineering-models/index.html:681
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"To make those comparisons informative, each model would receive the same "
"target evidence and tools. For the training-specific comparisons, I would "
"keep the base model and available knowledge fixed as well. Repeated trials "
"would help distinguish a reliable search strategy from a lucky candidate."
msgstr ""
"유의미한 비교를 위해 각 모델에 같은 대상 증거와 도구를 제공합니다. 훈련 효과를 비교할 때는 기반 모델과 활용 가능한 지식도 "
"고정합니다. 반복 실험으로 믿을 만한 탐색 전략과 우연히 성공한 후보를 구별할 수 있습니다."

#: website/public/blog/reverse-engineering-models/index.html:688
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"I would then separate two starting conditions: reconstructing a function "
"from its instructions, and closing the last few differences in maintained "
"source. A specialist might be excellent at the second task while a general "
"model does much of the work needed to reach it. Measuring them separately "
"would reveal that division of work."
msgstr ""
"출발 조건도 둘로 나누고 싶습니다. 명령어에서 함수를 재구성하는 과제와, 유지보수 소스에 남은 마지막 차이를 맞추는 과제입니다. 특화 "
"모델은 후자에 뛰어나고 범용 모델은 거기에 도달하기 위한 작업 대부분을 수행할 수도 있습니다. 따로 측정하면 역할 분담이 드러납니다."

#: website/public/blog/reverse-engineering-models/index.html:696
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Both tasks need genuinely held-out examples. Because related Touhou games "
"share engine code, holding out a game's name would still allow nearly "
"identical functions to appear in training. I would instead hold out source "
"families and keep their accepted answers out of both training and retrieval."
msgstr ""
"두 과제 모두 학습에서 확실히 제외된 예제가 필요합니다. 관련 동방 게임은 엔진 코드를 공유하므로 게임 이름만 제외하면 거의 같은 함수가"
" 학습에 남을 수 있습니다. 대신 소스 계열 전체를 분리하고, 검증된 정답을 학습과 검색 양쪽에서 제외하고 싶습니다."

#: website/public/blog/reverse-engineering-models/index.html:703
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"On those examples, the outcome would be complete, independently validated "
"matches. Giving each model the same candidate or compile budget would help "
"compare search quality. Measuring elapsed time and total cost, including "
"compilation, would tell us whether that quality produces an efficient "
"workflow. Training costs would need their own accounting too."
msgstr ""
"측정할 성과는 전체가 독립적으로 검증된 일치 결과입니다. 후보 제안 수나 컴파일 횟수를 같게 제한하면 탐색 품질을 비교할 수 있습니다. "
"컴파일을 포함한 경과 시간과 총비용은 그 품질이 효율적인 작업으로 이어지는지 알려줍니다. 훈련 비용도 따로 계산해야 합니다."

#: website/public/blog/reverse-engineering-models/index.html:711
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Both views matter because a cheaper proposal can become an expensive "
"workflow if it causes more uninformative compiles. Conversely, a slower "
"model may pay for itself by finding a useful experiment sooner. The "
"comparison should capture those costs."
msgstr ""
"두 관점 모두 중요합니다. 제안 자체가 저렴해도 정보 없는 컴파일을 늘리면 전체 작업은 비싸집니다. 반대로 느린 모델도 유용한 실험을 "
"빨리 찾으면 비용을 만회할 수 있습니다. 비교에는 이 비용까지 포함해야 합니다."

#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/ab72fd77728293fc0beacfc656ca701b0e266016"
#. >
#. {ph1}: </a >
#: website/public/blog/reverse-engineering-models/index.html:717
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Counting accepted results also keeps intermediate progress in perspective. "
"One TH09 {ph0}replay-save candidate{ph1} looked promising because the "
"compiled function had the expected size, but a full comparison still found "
"substantial differences. Changes in how the compiler arranges instructions "
"can also make a candidate look closer without resolving the underlying "
"problem. Such diagnostics can guide the next experiment, but I would "
"validate any reward for \"getting closer\" against the full acceptance "
"check."
msgstr ""
"통과한 결과를 세면 중간 진전도 적절히 평가할 수 있습니다. TH09의 {ph0}리플레이 저장 후보{ph1}는 함수 크기가 예상과 같아 "
"유망해 보였지만, 전체 비교에서는 여전히 큰 차이가 있었습니다. 명령어 배치가 바뀌어 근본 문제는 그대로인데 더 가까워 보일 수도 "
"있습니다. 이런 진단은 다음 실험을 안내하지만, “더 가까워짐”에 주는 보상도 전체 수용 기준과 대조해 검증하고 싶습니다."

#: website/public/blog/reverse-engineering-models/index.html:732
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"I would be interested in the pattern across these results. If a specialist "
"does well within a familiar compiler family, does that advantage survive a "
"toolchain change? And once both models have good retrieval, how much does "
"training still add? The answers would help us decide where each kind of "
"model is most useful."
msgstr ""
"결과 전반의 패턴도 궁금합니다. 특화 모델이 익숙한 컴파일러 계열에서 잘한다면 도구 모음이 바뀌어도 우위가 유지될까요? 두 모델 모두 "
"검색을 잘 활용하면 학습은 얼마나 더 도움이 될까요? 각 모델이 어디서 가장 유용한지 판단할 단서가 됩니다."

#: website/public/blog/reverse-engineering-models/index.html:741
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "What kind of agent does this suggest?"
msgstr "어떤 에이전트가 필요할까?"

#: website/public/blog/reverse-engineering-models/index.html:742
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"If the models turn out to help at different stages, a useful arrangement "
"might be a broad agent with access to a specialist. Once a task becomes a "
"familiar compiler search, it could ask the specialist for candidates. If the"
" results stop making sense, the broader agent could return to the target "
"evidence or investigate the measurement itself."
msgstr ""
"모델마다 도움이 되는 단계가 다르다면, 폭넓게 일하는 에이전트가 특화 모델을 도구로 쓰는 구성이 유용할 수 있습니다. 과제가 익숙한 "
"컴파일러 탐색으로 좁혀지면 특화 모델에 후보를 요청합니다. 결과가 이해되지 않으면 범용 에이전트가 대상 증거로 돌아가거나 측정 자체를 "
"조사합니다."

#: website/public/blog/reverse-engineering-models/index.html:750
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"In that arrangement, specialization becomes a tool the agent can choose as "
"the investigation develops. The agent keeps the freedom to change direction "
"that made the earlier breakthroughs possible."
msgstr ""
"이 구성에서는 특화 모델이 조사 진행에 따라 선택할 수 있는 도구가 됩니다. 에이전트는 앞선 돌파구를 가능하게 했던 방향 전환의 자유를 "
"유지합니다."

#: website/public/blog/reverse-engineering-models/index.html:755
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"This follows naturally from the industrial shift I described in the previous"
" essay. Being able to run many more experiments changes how we organize the "
"work. It also gives us a reason to ask which decisions need broad judgment "
"and which improve through repeated experience with a particular craft."
msgstr ""
"이는 앞선 에세이에서 설명한 산업적 전환과 자연스럽게 이어집니다. 훨씬 많은 실험을 실행할 수 있으면 작업을 조직하는 방식도 달라집니다."
" 어떤 판단에 폭넓은 역량이 필요하고 어떤 판단은 특정 분야의 반복 경험으로 나아지는지 물어볼 이유도 생깁니다."

#: website/public/blog/reverse-engineering-models/index.html:762
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"For now, the strongest general model has earned its place in my workflow by "
"opening problems I had left unresolved. Those successes are what make me "
"want to examine the work more closely: how much depended on the model's "
"breadth, and how much could be handled by a model trained in this particular"
" kind of reconstruction?"
msgstr ""
"지금까지 가장 강력한 범용 모델은 제가 풀지 못한 문제를 해결하며 제 작업에서 자리를 잡았습니다. 그래서 성공 과정을 더 자세히 살펴보고"
" 싶습니다. 얼마나 많은 부분이 모델의 폭넓은 역량 덕분이며, 이런 재구성에 특화해 학습한 모델은 어디까지 맡을 수 있을까요?"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/reverse-engineering-models/index.html:770
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}The repositories give us a way to test the question.{ph1} I would like "
"to use that record to build the comparison and see what we learn."
msgstr ""
"{ph0}저장소를 통해 이 질문을 검증할 수 있습니다.{ph1} 그 기록으로 비교 실험을 구성하고 무엇을 배우게 될지 살펴보고 싶습니다."

#: website/public/blog/reverse-engineering-models/index.html:780
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Evidence and model attribution"
msgstr "증거와 사용 모델 명시"

#: website/public/blog/reverse-engineering-models/index.html:788
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"The examples describe historical function-level comparisons recorded in the "
"linked commits. Whole-game runtime checks are separate milestones. Source "
"and matching records were reviewed on 13 October 2026."
msgstr ""
"예제는 연결된 커밋에 기록된 과거의 함수 단위 비교입니다. 전체 게임의 런타임 검증은 별도 이정표입니다. 소스와 일치 기록은 2026년 "
"10월 13일에 검토했습니다."

#. {ph0}: <code>gpt-dots</code>
#. {ph1}: <code>gpt-web</code>
#: website/public/blog/reverse-engineering-models/index.html:794
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"The TH09 label {ph0} identifies GPT-6-Astra. {ph1} changed with the model "
"used at the time, so that label alone does not identify an individual run. "
"Explicit model names in the other cited commits establish their recorded "
"attribution; the histories do not contain uniform per-run cost or effort "
"measurements."
msgstr ""
"TH09의 {ph0} 라벨은 GPT-6-Astra를 가리킵니다. {ph1}은 당시 사용한 모델에 따라 달라졌으므로 그 라벨만으로는 개별 "
"실행을 식별할 수 없습니다. 다른 인용 커밋에 명시된 모델 이름으로 기록상 어떤 모델이 사용되었는지 확인할 수 있습니다. 이 기록들에는 "
"실행별 비용이나 추론 노력에 대한 일관된 측정값이 없습니다."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/de63c0f9121963f3a6b1ab5471c4878625fd3425"
#. >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/52929ed7c299f1a5f29cc13964e22510145fd616"
#. >
#. {ph5}: </a >
#: website/public/blog/reverse-engineering-models/index.html:803
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}TH09 temporary lifetimes:{ph1} the {ph2}earlier context review{ph3} and"
" {ph4}complete cold reconstruction{ph5}."
msgstr "{ph0}TH09 임시 값의 수명:{ph1} {ph2}이전 맥락 검토{ph3}와 {ph4}완전한 콜드 재구성{ph5}."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/f8d12d72aaf02212ee1b585a8f3f86d7ed000269"
#. >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/da33a646221198ceb7f3df2b96e2ca0e9b2f705f"
#. >
#. {ph5}: </a >
#. {ph6}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/5f825b28a862f8e1a6d4aea2f78a42f04c09a1c0"
#. >
#. {ph7}: </a >
#: website/public/blog/reverse-engineering-models/index.html:815
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}TH09 Front callback:{ph1} {ph2}non-exact diagnostic regions{ph3}, "
"{ph4}Astra's new graph{ph5} and its {ph6}accepted recompile replay{ph7}."
msgstr ""
"{ph0}TH09 Front 콜백:{ph1} {ph2}일치하지 않은 진단 구간{ph3}, {ph4}Astra의 새 제어 흐름 "
"그래프{ph5}, {ph6}통과한 재컴파일 재현{ph7}."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th095/commit/26bb64bdb093a13f73abd0ee8ae7ce199ee4658f"
#. >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/N0zoM1z0/th04/commit/6dce0a79d5b931f0e2a08475b90e0c33d2321b98"
#. >
#. {ph5}: </a >
#. {ph6}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/1eb843383941d00065622a9e353146c4bb96979e"
#. >
#. {ph7}: </a >
#: website/public/blog/reverse-engineering-models/index.html:831
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}Compiler knowledge:{ph1} {ph2}TH095 identifier-bucket reuse{ph3}, "
"{ph4}TH04 player source and linker order{ph5} and {ph6}Luna's TH09 enemy-"
"spawn closure{ph7}."
msgstr ""
"{ph0}컴파일러 지식:{ph1} {ph2}TH095 식별자 버킷 재사용{ph3}, {ph4}TH04 플레이어 소스와 링크 "
"순서{ph5}, {ph6}Luna의 TH09 적 생성 함수 완성{ph7}."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/a393f400786e4cc6cbb1000af0dad3276da12c78"
#. >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/af9cb1d3e839b15a78b47ac1701506083cc82847"
#. >
#. {ph5}: </a >
#. {ph6}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/ab72fd77728293fc0beacfc656ca701b0e266016"
#. >
#. {ph7}: </a >
#: website/public/blog/reverse-engineering-models/index.html:847
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}Checks and diagnostics:{ph1} {ph2}TH08 floating-literal audit{ph3}, "
"{ph4}TH08 numerical investigation{ph5} and {ph6}TH09 replay-save "
"reconstruction{ph7}."
msgstr ""
"{ph0}검증과 진단:{ph1} {ph2}TH08 부동소수점 리터럴 점검{ph3}, {ph4}TH08 수치 조사{ph5}, "
"{ph6}TH09 리플레이 저장 재구성{ph7}."

#: website/public/blog/reverse-engineering-models/index.html:864
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"The proposed specialist and RL comparisons are future experiments. The "
"project histories motivate them; no trained specialist was evaluated for "
"this essay."
msgstr ""
"특화 모델과 RL 비교는 앞으로 해볼 실험입니다. 프로젝트 이력이 동기를 제공하지만, 이 글에서 학습된 특화 모델을 평가하지는 "
"않았습니다."

#: website/public/blog/reverse-engineering-models/index.html:6
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Does reverse engineering need a bigger model? | REA"
msgstr "리버스 엔지니어링에 더 큰 모델이 필요할까? | REA"

#: website/public/blog/reverse-engineering-models/index.html:7
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"What Touhou reconstruction taught me about general models, specialist models"
" and learning to propose better hypotheses from compiler feedback."
msgstr "동방 재구성에서 배운 범용·특화 모델의 역할과, 컴파일러 피드백으로 더 나은 가설을 제안하도록 학습하는 방법."

#: website/public/blog/reverse-engineering-models/index.html:245
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "On this page"
msgstr "이 페이지 목차"

#: website/public/blog/reverse-engineering-models/index.html:258
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Models and reverse engineering essay"
msgstr "모델과 리버스 엔지니어링 에세이"

#: website/public/blog/reverse-engineering-models/index.html:496
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Selected reconstruction experiments"
msgstr "주요 재구성 실험"

#: website/public/blog/reverse-engineering-models/index.html:889
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Back to top"
msgstr "맨 위로"

#. {ph0}: <a
#. href="https://github.com/morluto/rea/blob/main/website/evidence/reverse-
#. engineering-models.md" >
#. {ph1}: </a >
#: website/public/blog/reverse-engineering-models/index.html:781
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}Detailed evidence notes{ph1} include the recorded comparisons and "
"experiment context."
msgstr "{ph0}상세 증거 기록{ph1}에 비교 결과와 실험 맥락이 담겨 있습니다."

#. {ph0}: <a href="#showcases">
#. {ph1}: </a>
#: website/public/index.html:217
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Showcases{ph1}"
msgstr "{ph0}사례 소개{ph1}"

#: website/public/index.html:1028
msgctxt "page:index.html"
msgid "REA case studies."
msgstr "REA 사례 연구"

#: website/public/index.html:1038
msgctxt "page:index.html"
msgid "Android · APK analysis"
msgstr "Android · APK 분석"

#: website/public/index.html:1039
msgctxt "page:index.html"
msgid "How an authenticator generates a login code"
msgstr "인증 앱이 로그인 코드를 만드는 방법"

#: website/public/index.html:1044
msgctxt "page:index.html"
msgid "Read the Android case study"
msgstr "Android 사례 연구 읽기"

#: website/public/index.html:1049
msgctxt "page:index.html"
msgid "Electron · Feature tracing"
msgstr "Electron · 기능 추적"

#: website/public/index.html:1050
msgctxt "page:index.html"
msgid "How Notion copies text and HTML"
msgstr "Notion이 텍스트와 HTML을 복사하는 방법"

#: website/public/index.html:1055
msgctxt "page:index.html"
msgid "Read the Notion case study"
msgstr "Notion 사례 연구 읽기"

#: website/public/index.html:1060
msgctxt "page:index.html"
msgid "Native · Reconstruction"
msgstr "네이티브 프로그램 · 재구현"

#: website/public/index.html:1061
msgctxt "page:index.html"
msgid "DX-Ball's sound-pan calculation"
msgstr "DX-Ball의 사운드 패닝 계산"

#: website/public/index.html:1066
msgctxt "page:index.html"
msgid "Read the DX-Ball case study"
msgstr "DX-Ball 사례 연구 읽기"

#: website/public/index.html:295
msgctxt "page:index.html"
msgid "Setup options"
msgstr "설정 옵션"

#: website/public/get-started/index.html:201
msgctxt "page:get-started/index.html"
msgid ""
"Set up your computer and coding agent, connect REA, then investigate a small"
" app."
msgstr "컴퓨터와 코딩 에이전트를 준비하고 REA를 연결한 뒤, 작은 앱을 조사해 보세요."

#. {ph0}: <a href="#agent">
#. {ph1}: </a>
#: website/public/get-started/index.html:205
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"New to this? Follow the four steps below. Already have an agent? Go straight"
" to {ph0}Connect REA{ph1}."
msgstr ""
"처음이라면 아래 네 단계를 따라가세요. 이미 에이전트를 사용하고 있나요? {ph0}REA 연결하기{ph1}로 바로 이동하세요."

#. {ph0}: <a href="#computer">
#. {ph1}: </a>
#: website/public/get-started/index.html:214
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}1. Prepare your computer{ph1}"
msgstr "{ph0}1. 컴퓨터 준비하기{ph1}"

#. {ph0}: <a href="#choose-agent">
#. {ph1}: </a>
#: website/public/get-started/index.html:215
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}2. Choose an agent{ph1}"
msgstr "{ph0}2. 에이전트 선택하기{ph1}"

#. {ph0}: <a href="#agent">
#. {ph1}: </a>
#: website/public/get-started/index.html:216
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}3. Connect REA{ph1}"
msgstr "{ph0}3. REA 연결하기{ph1}"

#. {ph0}: <a href="#first-task">
#. {ph1}: </a>
#: website/public/get-started/index.html:217
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}4. Try an investigation{ph1}"
msgstr "{ph0}4. 조사해 보기{ph1}"

#. {ph0}: <a href="#native">
#. {ph1}: </a>
#: website/public/get-started/index.html:218
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Other targets and providers{ph1}"
msgstr "{ph0}다른 분석 대상과 도구{ph1}"

#: website/public/get-started/index.html:225
msgctxt "page:get-started/index.html"
msgid "1. Prepare your computer"
msgstr "1. 컴퓨터 준비하기"

#: website/public/get-started/index.html:226
msgctxt "page:get-started/index.html"
msgid ""
"Use the computer where your target files are stored. A local coding agent "
"can read those files and run tools for you."
msgstr "분석할 파일이 저장된 컴퓨터를 사용하세요. 컴퓨터에서 실행되는 코딩 에이전트가 이 파일을 읽고 도구를 실행할 수 있습니다."

#: website/public/get-started/index.html:251
msgctxt "page:get-started/index.html"
msgid ""
"Commands go in the terminal. Prompts labeled “Your coding agent” go in the "
"agent's chat."
msgstr "명령어는 터미널에 입력하세요. ‘코딩 에이전트’라고 표시된 프롬프트는 에이전트의 채팅에 입력하세요."

#. {ph0}: <a href="https://nodejs.org/en/download" >
#. {ph1}: </a >
#: website/public/get-started/index.html:307
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Download the Node.js installer{ph1} if winget is unavailable."
msgstr "winget을 사용할 수 없다면 {ph0}Node.js 설치 프로그램을 다운로드{ph1}하세요."

#. {ph0}: <em>
#. {ph1}: </em>
#. {ph2}: <code>npx</code>
#. {ph3}: <code>npx.cmd</code>
#. {ph4}: <code>npm.cmd</code>
#: website/public/get-started/index.html:313
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"If PowerShell later says {ph0}\"running scripts is disabled on this "
"system\"{ph1} when you run {ph2}, use {ph3} instead. For npm, use {ph4}:"
msgstr ""
"나중에 {ph2}를 실행할 때 PowerShell에 {ph0}‘이 시스템에서 스크립트를 실행할 수 없습니다’{ph1}라고 나오면 대신 "
"{ph3}를 사용하세요. npm은 {ph4}를 사용하면 됩니다."

#: website/public/get-started/index.html:411
msgctxt "page:get-started/index.html"
msgid "Make a working folder for your agent"
msgstr "에이전트용 작업 폴더 만들기"

#: website/public/get-started/index.html:412
msgctxt "page:get-started/index.html"
msgid "In your terminal, make a folder for the exercise, then move into it:"
msgstr "터미널에서 실습용 폴더를 만들고 그 폴더로 이동하세요."

#: website/public/get-started/index.html:431
msgctxt "page:get-started/index.html"
msgid ""
"Keep this terminal open for the next step. If you already have a working "
"folder, open it instead."
msgstr "다음 단계에서도 사용할 수 있도록 이 터미널을 열어 두세요. 이미 작업 폴더가 있다면 그 폴더를 여세요."

#: website/public/get-started/index.html:438
msgctxt "page:get-started/index.html"
msgid "2. Choose a coding agent"
msgstr "2. 코딩 에이전트 선택하기"

#: website/public/get-started/index.html:439
msgctxt "page:get-started/index.html"
msgid ""
"Your agent is the AI you talk to. REA supplies the inspection tools it uses."
" Pick one client below; open its instructions if you haven't used it before."
msgstr ""
"에이전트는 여러분이 대화하는 AI입니다. REA는 이 AI가 사용할 분석 도구를 제공합니다. 아래에서 클라이언트 하나를 고르세요. 처음 "
"사용하는 앱이라면 안내를 펼쳐 보세요."

#: website/public/get-started/index.html:445
msgctxt "page:get-started/index.html"
msgid "Codex · use your ChatGPT account"
msgstr "Codex · ChatGPT 계정으로 사용하기"

#: website/public/get-started/index.html:493
msgctxt "page:get-started/index.html"
msgid ""
"Choose “Sign in with ChatGPT”, complete the browser sign-in, then return to "
"the terminal. When the message box appears, continue to step 3."
msgstr ""
"‘Sign in with ChatGPT’를 선택하고 브라우저에서 로그인을 마친 뒤 터미널로 돌아오세요. 메시지 입력란이 나타나면 3단계로"
" 이동하세요."

#. {ph0}: <a href="https://learn.chatgpt.com/docs/codex/cli" >
#. {ph1}: </a >
#: website/public/get-started/index.html:498
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Codex installation and sign-in{ph1}"
msgstr "{ph0}Codex 설치와 로그인{ph1}"

#: website/public/get-started/index.html:505
msgctxt "page:get-started/index.html"
msgid "Cursor, Windsurf or VS Code · use an editor"
msgstr "Cursor, Windsurf, VS Code · 편집기에서 사용하기"

#: website/public/get-started/index.html:507
msgctxt "page:get-started/index.html"
msgid "Install the editor for your operating system and sign in."
msgstr "운영체제에 맞는 편집기를 설치하고 로그인하세요."

#: website/public/get-started/index.html:510
msgctxt "page:get-started/index.html"
msgid "Open the rea-work folder you made in step 1."
msgstr "1단계에서 만든 rea-work 폴더를 여세요."

#: website/public/get-started/index.html:529
msgctxt "page:get-started/index.html"
msgid "Claude Code · use your Claude account"
msgstr "Claude Code · Claude 계정으로 사용하기"

#: website/public/get-started/index.html:530
msgctxt "page:get-started/index.html"
msgid "Install using the command for your operating system:"
msgstr "운영체제에 맞는 명령어로 설치하세요."

#. {ph0}: <code>claude</code>
#: website/public/get-started/index.html:559
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Reopen your terminal, return to your working folder and run {ph0}. Follow "
"the sign-in prompts. Access uses an eligible Claude subscription or a "
"configured API account."
msgstr ""
"터미널을 다시 열고 작업 폴더로 돌아간 뒤 {ph0}를 실행하세요. 로그인 안내를 따르세요. 지원되는 Claude 구독이나 설정된 API"
" 계정이 필요합니다."

#. {ph0}: <a href="https://code.claude.com/docs/en/setup" >
#. {ph1}: </a >
#: website/public/get-started/index.html:564
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Claude Code installation and account options{ph1}"
msgstr "{ph0}Claude Code 설치와 계정 선택지{ph1}"

#: website/public/get-started/index.html:571
msgctxt "page:get-started/index.html"
msgid "Claude Desktop · use a desktop chat"
msgstr "Claude Desktop · 데스크톱 채팅으로 사용하기"

#. {ph0}: <a href="https://claude.ai/download">
#. {ph1}: </a>
#. {ph2}: <a href="https://github.com/morluto/rea/blob/main/docs/client-
#. configuration.md#claude-desktop" >
#. {ph3}: </a >
#: website/public/get-started/index.html:595
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Download Claude Desktop{ph1} · {ph2}Claude Desktop connection "
"details{ph3}"
msgstr "{ph0}Claude Desktop 다운로드{ph1} · {ph2}Claude Desktop 연결 안내{ph3}"

#. {ph0}: <code>opencode</code>
#. {ph1}: <code>/connect</code>
#: website/public/get-started/index.html:620
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Run {ph0} in your working folder. Use {ph1} in its chat to connect your "
"model account, then select a model."
msgstr "작업 폴더에서 {ph0}를 실행하세요. 채팅에서 {ph1}로 모델 계정을 연결한 뒤 모델을 선택하세요."

#. {ph0}: <a href="https://opencode.ai/docs/" >
#. {ph1}: </a >
#: website/public/get-started/index.html:625
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}OpenCode installation and model setup{ph1}"
msgstr "{ph0}OpenCode 설치와 모델 설정{ph1}"

#: website/public/get-started/index.html:632
msgctxt "page:get-started/index.html"
msgid "All supported clients and setup IDs"
msgstr "지원하는 모든 클라이언트와 설정 ID"

#. {ph0}: <code>--client</code>
#: website/public/get-started/index.html:633
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"The npm 6.4.0 release supports the clients below. Use the ID with {ph0} when"
" choosing a client explicitly."
msgstr "npm 6.4.0 릴리스는 아래 클라이언트를 지원합니다. 클라이언트를 직접 지정하려면 {ph0}에 해당 ID를 넣으세요."

#: website/public/get-started/index.html:641
msgctxt "page:get-started/index.html"
msgid "Client"
msgstr "클라이언트"

#: website/public/get-started/index.html:642
msgctxt "page:get-started/index.html"
msgid "Setup ID"
msgstr "설정 ID"

#. {ph0}: <code>qoder</code>
#. {ph1}: <code>droid</code>
#. {ph2}: <code>trae</code>
#. {ph3}: <code>zcode</code>
#. {ph4}: <code>dsh</code>
#: website/public/get-started/index.html:717
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Qoder ({ph0}), Factory Droid ({ph1}), Trae ({ph2}), ZCode ({ph3}) and "
"DeepSeek Harness ({ph4}) are available on repository main; use a source "
"build or a release containing those integrations."
msgstr ""
"Qoder({ph0}), Factory Droid({ph1}), Trae({ph2}), ZCode({ph3}), DeepSeek "
"Harness({ph4})는 저장소 main에서 사용할 수 있습니다. 소스 빌드나 이 연동을 포함하는 릴리스를 사용하세요."

#. {ph0}: <a href="https://github.com/morluto/rea/blob/main/docs/client-
#. configuration.md" >
#. {ph1}: </a >
#. {ph2}: <a
#. href="https://github.com/morluto/rea/blob/main/docs/installation.md#released-
#. package-and-main" >
#. {ph3}: </a >
#: website/public/get-started/index.html:724
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Client configuration and troubleshooting{ph1} · {ph2}Release "
"availability{ph3}"
msgstr "{ph0}클라이언트 설정과 문제 해결{ph1} · {ph2}릴리스별 제공 여부{ph3}"

#: website/public/get-started/index.html:736
msgctxt "page:get-started/index.html"
msgid "Grok Bot · connect on its hosted computer"
msgstr "Grok Bot · Bot이 실행되는 컴퓨터에서 연결하기"

#. {ph0}: <code>rea</code>
#: website/public/get-started/index.html:737
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"In Grok Bot's chat, ask it to add a custom MCP server named {ph0} using this"
" command on the Bot's computer:"
msgstr ""
"Grok Bot 채팅에서 Bot의 컴퓨터에 다음 명령어로 {ph0}라는 이름의 사용자 지정 MCP 서버를 추가해 달라고 요청하세요."

#. {ph0}: <a href="https://github.com/morluto/rea/blob/main/docs/client-
#. configuration.md#other-client-settings" >
#. {ph1}: </a >
#: website/public/get-started/index.html:755
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Grok Bot connector instructions{ph1}"
msgstr "{ph0}Grok Bot 커넥터 설정 안내{ph1}"

#: website/public/get-started/index.html:765
msgctxt "page:get-started/index.html"
msgid "3. Connect REA"
msgstr "3. REA 연결하기"

#: website/public/get-started/index.html:766
msgctxt "page:get-started/index.html"
msgid "Copy this into your coding agent:"
msgstr "이 프롬프트를 코딩 에이전트에 붙여 넣으세요:"

#: website/public/get-started/index.html:810
msgctxt "page:get-started/index.html"
msgid "For one specific client, add its setup ID:"
msgstr "특정 클라이언트 하나를 지정하려면 해당 설정 ID를 추가하세요."

#. {ph0}: <code>y</code>
#: website/public/get-started/index.html:825
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"If npm asks to download the package, type {ph0} and press Enter. In REA's "
"client list, use the arrow keys to move, Space to select your client and "
"Enter to continue."
msgstr ""
"npm이 패키지를 다운로드할지 물으면 {ph0}를 입력하고 Enter를 누르세요. REA의 클라이언트 목록에서는 방향키로 이동하고 "
"Space로 클라이언트를 선택한 뒤 Enter로 진행하세요."

#: website/public/get-started/index.html:836
msgctxt "page:get-started/index.html"
msgid ""
"MCP is the connection that lets your agent call REA. The skill gives it a "
"workflow for investigating software."
msgstr ""
"MCP는 에이전트가 REA를 호출할 수 있게 하는 연결 방식입니다. 스킬은 소프트웨어를 조사하는 절차를 에이전트에 알려 줍니다."

#: website/public/get-started/index.html:840
msgctxt "page:get-started/index.html"
msgid ""
"For the first exercise, you can skip the optional Hopper installation. "
"Restart your client when setup finishes."
msgstr "첫 실습에서는 선택 사항인 Hopper 설치를 건너뛰어도 됩니다. 설정을 마치면 클라이언트를 다시 시작하세요."

#. {ph0}: <code>codex</code>
#. {ph1}: <code>"healthy": true</code>
#: website/public/get-started/index.html:873
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Replace {ph0} with your client's setup ID. A successful check reports {ph1}."
" Then ask your agent:"
msgstr ""
"{ph0}를 사용하는 클라이언트의 설정 ID로 바꾸세요. 검사가 성공하면 {ph1}가 표시됩니다. 그런 다음 에이전트에 요청하세요."

#: website/public/get-started/index.html:879
msgctxt "page:get-started/index.html"
msgid "Check that REA is connected and show me which REA tools you can use."
msgstr "REA가 연결되어 있는지 확인하고 사용할 수 있는 REA 도구를 알려 주세요."

#: website/public/get-started/index.html:886
msgctxt "page:get-started/index.html"
msgid "4. Try your first investigation"
msgstr "4. 첫 조사 해 보기"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/get-started/index.html:887
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"The example is a six-file Electron app with an {ph0}Export notes{ph1} "
"button. Your agent can inspect its code without installing or launching "
"Electron."
msgstr ""
"이 예제는 {ph0}노트 내보내기{ph1} 버튼이 있는, 파일 6개로 구성된 Electron 앱입니다. 에이전트는 Electron을 "
"설치하거나 실행하지 않고도 코드를 살펴볼 수 있습니다."

#: website/public/get-started/index.html:894
msgctxt "page:get-started/index.html"
msgid "Your coding agent"
msgstr "코딩 에이전트"

#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="setup-first-prompt" >
#. {ph3}: <span translate="no" >https://rea.tools/examples/notes-
#. example.zip</span >
#. {ph4}: <span translate="no">notes.csv</span>
#. {ph5}: </span >
#. {ph6}: <span class="terminal-cursor" aria-hidden="true">
#. {ph7}: </span>
#: website/public/get-started/index.html:904
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Download {ph3} into a new example folder and unpack it. Use "
"REA to find what happens when I click Export notes. Show where {ph4} is "
"written, which fields it contains, and the relevant files and "
"lines.{ph5}{ph6}{ph7}"
msgstr ""
"{ph0}›{ph1}{ph2}{ph3}을 새 예제 폴더에 다운로드하고 압축을 풀어줘. REA로 메모 내보내기를 클릭하면 어떤 일이 "
"일어나는지 찾아줘. {ph4}의 저장 위치, 포함된 필드, 관련 파일과 줄 번호를 보여줘.{ph5}{ph6}{ph7}"

#: website/public/get-started/index.html:918
msgctxt "page:get-started/index.html"
msgid "Look for a short explanation with file and line references:"
msgstr "파일과 줄 번호를 포함한 짧은 설명을 확인하세요:"

#. {ph0}: <code>notes:export</code>
#. {ph1}: <code>notes.csv</code>
#. {ph2}: <code>id</code>
#. {ph3}: <code>title</code>
#: website/public/get-started/index.html:920
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"The button sends a {ph0} message. The main process formats the notes as CSV "
"and writes {ph1} in the user’s Downloads folder. The columns are {ph2} and "
"{ph3}."
msgstr ""
"버튼은 {ph0} 메시지를 보냅니다. 메인 프로세스는 메모를 CSV로 변환한 뒤 사용자의 다운로드 폴더에 {ph1} 파일을 저장합니다. "
"열은 {ph2}와 {ph3}입니다."

#. {ph0}: <a href="../first-investigation/#check" >
#. {ph1}: </a >
#: website/public/get-started/index.html:927
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Check a prediction in the guided exercise →{ph1}"
msgstr "{ph0}안내된 실습에서 예측 확인하기 →{ph1}"

#: website/public/get-started/index.html:933
msgctxt "page:get-started/index.html"
msgid "Download the example yourself, or use your own app"
msgstr "예제를 직접 다운로드하거나 자신의 앱 사용하기"

#. {ph0}: <a class="button" href="../examples/notes-example.zip"
#. download="notes-example.zip" >
#. {ph1}: </a >
#: website/public/get-started/index.html:936
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Download example ZIP{ph1}"
msgstr "{ph0}예제 ZIP 다운로드{ph1}"

#. {ph0}: <code>notes-example</code>
#: website/public/get-started/index.html:944
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"If your agent can’t download files, unzip this archive yourself. Give it the"
" path to the {ph0} folder and the same export question."
msgstr ""
"에이전트가 파일을 다운로드할 수 없다면 이 압축 파일을 직접 푸세요. 에이전트에게 {ph0} 폴더의 경로와 같은 내보내기 질문을 "
"전달하세요."

#. {ph0}: <code>/absolute/path/to/app</code>
#: website/public/get-started/index.html:950
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Use REA to inspect the app at {ph0}. Find how it exports data and show the "
"relevant files and lines."
msgstr "REA로 {ph0}에 있는 앱을 조사해 주세요. 데이터를 내보내는 방식을 찾아 관련 파일과 줄을 보여 주세요."

#: website/public/get-started/index.html:980
msgctxt "page:get-started/index.html"
msgid "Analyze another kind of software"
msgstr "다른 종류의 소프트웨어 분석하기"

#: website/public/get-started/index.html:981
msgctxt "page:get-started/index.html"
msgid ""
"Choose the section for your target. A provider is the local analysis tool "
"REA uses for that kind of software."
msgstr "대상에 맞는 항목을 선택하세요. 프로바이더는 REA가 해당 소프트웨어를 분석할 때 사용하는 로컬 분석 도구입니다."

#: website/public/get-started/index.html:986
msgctxt "page:get-started/index.html"
msgid "Native executables and libraries · Hopper, Ghidra or IDA"
msgstr "네이티브 실행 파일과 라이브러리 · Hopper, Ghidra, IDA"

#: website/public/get-started/index.html:989
msgctxt "page:get-started/index.html"
msgid ""
"Install one analysis tool on the computer running REA. The host is your "
"operating system; the target is the program you want to inspect."
msgstr "REA를 실행하는 컴퓨터에 분석 도구 하나를 설치하세요. 호스트는 여러분의 운영체제이고, 대상은 분석하려는 프로그램입니다."

#: website/public/get-started/index.html:998
msgctxt "page:get-started/index.html"
msgid "Provider"
msgstr "분석 도구(프로바이더)"

#: website/public/get-started/index.html:1007
msgctxt "page:get-started/index.html"
msgid "Unavailable"
msgstr "사용 불가"

#: website/public/get-started/index.html:1009
msgctxt "page:get-started/index.html"
msgid "Supported distributions"
msgstr "지원 배포판"

#: website/public/get-started/index.html:1013
msgctxt "page:get-started/index.html"
msgid "x64 · experimental"
msgstr "x64 · 실험적 지원"

#: website/public/get-started/index.html:1019
msgctxt "page:get-started/index.html"
msgid "Verified profiles"
msgstr "검증된 구성"

#: website/public/get-started/index.html:1020
msgctxt "page:get-started/index.html"
msgid "Verified headless profile"
msgstr "검증된 헤드리스 구성"

#: website/public/get-started/index.html:1021
msgctxt "page:get-started/index.html"
msgid "See provider guide"
msgstr "분석 도구 가이드 참고"

#: website/public/get-started/index.html:1027
msgctxt "page:get-started/index.html"
msgid "Hopper · let setup install or connect it"
msgstr "Hopper · 설정 과정에서 설치하거나 연결하기"

#: website/public/get-started/index.html:1033
msgctxt "page:get-started/index.html"
msgid ""
"Choose Hopper in setup and review its separate installation plan. On macOS, "
"choose demo mode or activate your license when Hopper first opens. On Linux,"
" setup prepares the supported demo and its private display."
msgstr ""
"설정에서 Hopper를 선택하고 별도로 제시되는 설치 계획을 확인하세요. macOS에서는 Hopper를 처음 열 때 데모 모드를 "
"선택하거나 라이선스를 활성화하세요. Linux에서는 설정 과정에서 지원되는 데모와 전용 디스플레이를 준비합니다."

#: website/public/get-started/index.html:1039
msgctxt "page:get-started/index.html"
msgid ""
"Linux hosts: Ubuntu 24.04+, Fedora 41+, Nobara 44+, Arch Linux, CachyOS or "
"Omarchy. Hopper is commercial software; its demo has vendor-defined limits."
msgstr ""
"Linux 호스트: Ubuntu 24.04+, Fedora 41+, Nobara 44+, Arch Linux, CachyOS, "
"Omarchy. Hopper는 상용 소프트웨어이며 데모에는 공급업체가 정한 제한이 있습니다."

#: website/public/get-started/index.html:1058
msgctxt "page:get-started/index.html"
msgid ""
"If macOS asks for Automation permission, allow the app that starts REA in "
"System Settings → Privacy & Security → Automation, then retry."
msgstr ""
"macOS가 자동화 권한을 요청하면 시스템 설정 → 개인정보 보호 및 보안 → 자동화에서 REA를 시작하는 앱을 허용한 뒤 다시 "
"시도하세요."

#. {ph0}: <a
#. href="https://github.com/morluto/rea/blob/main/docs/installation.md#hopper"
#. >
#. {ph1}: </a >
#: website/public/get-started/index.html:1063
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Hopper setup and troubleshooting{ph1}"
msgstr "{ph0}Hopper 설정과 문제 해결{ph1}"

#: website/public/get-started/index.html:1071
msgctxt "page:get-started/index.html"
msgid "Ghidra · install the free analysis tool and Java"
msgstr "Ghidra · 무료 분석 도구와 Java 설치하기"

#: website/public/get-started/index.html:1075
msgctxt "page:get-started/index.html"
msgid ""
"Install a 64-bit JDK 21 or newer, including the Java compiler. Choose the "
"package matching your computer's architecture."
msgstr "Java 컴파일러를 포함하는 64비트 JDK 21 이상을 설치하세요. 컴퓨터 아키텍처에 맞는 패키지를 선택하세요."

#. {ph0}: <code>ghidra_…_PUBLIC_….zip</code>
#: website/public/get-started/index.html:1080
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Download Ghidra 12.1.4 from the release's Assets list and extract the {ph0} "
"archive. Choose the release archive, not “Source code”."
msgstr ""
"릴리스의 Assets 목록에서 Ghidra 12.1.4를 다운로드하고 {ph0} 압축 파일을 푸세요. ‘Source code’가 아닌 "
"릴리스 압축 파일을 선택하세요."

#. {ph0}: <code>ghidraRun</code>
#. {ph1}: <code>ghidraRun.bat</code>
#. {ph2}: <code>GHIDRA_INSTALL_DIR</code>
#: website/public/get-started/index.html:1085
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Find the extracted folder containing {ph0} or {ph1}. Use that folder for "
"{ph2}."
msgstr "압축을 푼 폴더 중 {ph0} 또는 {ph1}가 들어 있는 폴더를 찾으세요. 그 폴더를 {ph2}로 지정하세요."

#. {ph0}: <a href="https://adoptium.net/temurin/releases/?version=21" >
#. {ph1}: </a >
#. {ph2}: <a
#. href="https://github.com/NationalSecurityAgency/ghidra/releases/tag/Ghidra_12.1.4_build"
#. >
#. {ph3}: </a >
#: website/public/get-started/index.html:1091
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Download a JDK{ph1} · {ph2}Download Ghidra 12.1.4{ph3}"
msgstr "{ph0}JDK 다운로드{ph1} · {ph2}Ghidra 12.1.4 다운로드{ph3}"

#. {ph0}: <code>java.home</code>
#. {ph1}: <code>JAVA_HOME</code>
#: website/public/get-started/index.html:1101
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Check Java. The first command prints {ph0}; use that folder for {ph1}. The "
"second confirms the compiler is installed:"
msgstr ""
"Java를 확인하세요. 첫 번째 명령어가 출력하는 {ph0} 폴더를 {ph1}로 지정하세요. 두 번째 명령어로 컴파일러가 설치되어 있는지"
" 확인합니다."

#: website/public/get-started/index.html:1217
msgctxt "page:get-started/index.html"
msgid ""
"Keep these commands in the same terminal session. Rerun setup after setting "
"the paths, approve the updated client configuration, then restart your "
"agent."
msgstr ""
"이 명령어들은 같은 터미널 세션에서 실행하세요. 경로를 설정한 뒤 설정 명령어를 다시 실행하고, 갱신된 클라이언트 설정을 승인한 다음 "
"에이전트를 다시 시작하세요."

#. {ph0}: <a
#. href="https://github.com/morluto/rea/blob/main/docs/installation.md#ghidra"
#. >
#. {ph1}: </a >
#. {ph2}: <a href="https://github.com/morluto/rea/blob/main/docs/windows-
#. ghidra-p0.md" >
#. {ph3}: </a >
#: website/public/get-started/index.html:1222
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Ghidra setup and architecture requirements{ph1} · {ph2}Windows Ghidra "
"guide{ph3}"
msgstr "{ph0}Ghidra 설정과 아키텍처 요구사항{ph1} · {ph2}Windows Ghidra 가이드{ph3}"

#: website/public/get-started/index.html:1235
msgctxt "page:get-started/index.html"
msgid "IDA · connect an existing installation"
msgstr "IDA · 기존 설치 연결하기"

#: website/public/get-started/index.html:1236
msgctxt "page:get-started/index.html"
msgid ""
"Use the IDA provider guide to prepare an upstream MCP registration. Choose "
"an attached GUI with the original binary open, or a headless supervisor that"
" opens a private database."
msgstr ""
"IDA 분석 도구 가이드를 따라 연동할 MCP 서버의 등록 설정을 준비하세요. 원본 바이너리를 연 GUI에 연결하거나, 전용 "
"데이터베이스를 여는 헤드리스 감독 프로세스를 선택하세요."

#: website/public/get-started/index.html:1241
msgctxt "page:get-started/index.html"
msgid ""
"Verified profiles include the Windows legacy GUI and headless supervisor, "
"plus a macOS arm64 headless supervisor with IDA Professional 9.1. The "
"optional native GUI bridge has its own version and platform requirements."
msgstr ""
"검증된 구성에는 Windows의 레거시 GUI와 헤드리스 감독 프로세스, IDA Professional 9.1을 사용하는 macOS "
"arm64 헤드리스 감독 프로세스가 포함됩니다. 선택 사항인 네이티브 GUI 브리지에는 별도의 버전 및 플랫폼 요구사항이 있습니다."

#: website/public/get-started/index.html:1336
msgctxt "page:get-started/index.html"
msgid ""
"Use the JSON registration file you prepared with the provider guide, then "
"rerun setup and restart your agent."
msgstr "분석 도구 가이드에서 준비한 JSON 등록 파일을 사용한 뒤 설정 명령어를 다시 실행하고 에이전트를 다시 시작하세요."

#. {ph0}: <a href="https://github.com/morluto/rea/blob/main/docs/ida-
#. provider.md" >
#. {ph1}: </a >
#: website/public/get-started/index.html:1340
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}IDA profiles, registration examples and verified platforms{ph1}"
msgstr "{ph0}IDA 구성, 등록 예제, 검증된 플랫폼{ph1}"

#: website/public/get-started/index.html:1348
msgctxt "page:get-started/index.html"
msgid ""
"Once connected, give your agent the original executable's full path and name"
" your provider:"
msgstr "연결한 뒤 원본 실행 파일의 전체 경로와 사용할 분석 도구를 에이전트에 알려 주세요."

#. {ph0}: <a href="../guides/native/">
#. {ph1}: </a>
#: website/public/get-started/index.html:1360
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Follow a native analysis example{ph1}"
msgstr "{ph0}네이티브 분석 예제 따라 하기{ph1}"

#: website/public/get-started/index.html:1365
msgctxt "page:get-started/index.html"
msgid "Websites, Android, .NET, firmware and other targets"
msgstr "웹사이트, Android, .NET, 펌웨어 등 다른 대상"

#: website/public/get-started/index.html:1368
msgctxt "page:get-started/index.html"
msgid ""
"Open the guide for the target you have. Each guide gives the additional "
"tools, supported hosts and first command."
msgstr "분석할 대상에 맞는 가이드를 여세요. 각 가이드에서 추가 도구, 지원 호스트, 첫 명령어를 안내합니다."

#: website/public/get-started/index.html:1376
msgctxt "page:get-started/index.html"
msgid "Target"
msgstr "대상"

#: website/public/get-started/index.html:1377
msgctxt "page:get-started/index.html"
msgid "Tools to prepare"
msgstr "준비할 도구"

#: website/public/get-started/index.html:1378
msgctxt "page:get-started/index.html"
msgid "Guide"
msgstr "가이드"

#: website/public/get-started/index.html:1383
msgctxt "page:get-started/index.html"
msgid "JavaScript / Electron"
msgstr "JavaScript / Electron"

#. {ph0}: <a href="../guides/javascript/">
#. {ph1}: </a>
#: website/public/get-started/index.html:1385
#: website/public/get-started/index.html:1390
#: website/public/get-started/index.html:1395
#: website/public/get-started/index.html:1405
#: website/public/get-started/index.html:1415
#: website/public/get-started/index.html:1425
#: website/public/get-started/index.html:1435
#: website/public/get-started/index.html:1445
#: website/public/get-started/index.html:1455
#: website/public/get-started/index.html:1465
#: website/public/get-started/index.html:1475
#: website/public/get-started/index.html:1485
#: website/public/get-started/index.html:1495
#: website/public/get-started/index.html:1505
#: website/public/get-started/index.html:1515
#: website/public/get-started/index.html:1525
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Open guide{ph1}"
msgstr "{ph0}가이드 열기{ph1}"

#: website/public/get-started/index.html:1388
msgctxt "page:get-started/index.html"
msgid "Website"
msgstr "웹사이트"

#: website/public/get-started/index.html:1393
msgctxt "page:get-started/index.html"
msgid ".NET / Flutter / packages"
msgstr ".NET / Flutter / 패키지"

#: website/public/get-started/index.html:1403
msgctxt "page:get-started/index.html"
msgid "Android APK"
msgstr "Android APK"

#: website/public/get-started/index.html:1413
msgctxt "page:get-started/index.html"
msgid "Android device"
msgstr "Android 기기"

#: website/public/get-started/index.html:1423
msgctxt "page:get-started/index.html"
msgid "Android resources"
msgstr "Android 리소스"

#: website/public/get-started/index.html:1433
msgctxt "page:get-started/index.html"
msgid "JEB project"
msgstr "JEB 프로젝트"

#: website/public/get-started/index.html:1443
msgctxt "page:get-started/index.html"
msgid "Firmware"
msgstr "펌웨어"

#: website/public/get-started/index.html:1453
msgctxt "page:get-started/index.html"
msgid "WASM"
msgstr "WASM"

#: website/public/get-started/index.html:1483
msgctxt "page:get-started/index.html"
msgid "ELF / Linux crash"
msgstr "ELF / Linux 충돌"

#: website/public/get-started/index.html:1493
msgctxt "page:get-started/index.html"
msgid "HAR / SAZ / mitmproxy"
msgstr "HAR / SAZ / mitmproxy"

#: website/public/get-started/index.html:1503
msgctxt "page:get-started/index.html"
msgid "PCAP / PCAPNG"
msgstr "PCAP / PCAPNG"

#: website/public/get-started/index.html:1513
msgctxt "page:get-started/index.html"
msgid "Logic signals"
msgstr "논리 신호"

#: website/public/get-started/index.html:1523
msgctxt "page:get-started/index.html"
msgid "Process behavior"
msgstr "프로세스 동작"

#. {ph0}: <a href="https://github.com/morluto/rea/blob/main/docs/flutter-
#. analysis.md" >
#. {ph1}: </a >
#. {ph2}: <a href="https://github.com/morluto/rea/blob/main/docs/javascript-
#. artifact-reconstruction.md" >
#. {ph3}: </a >
#. {ph4}: <a href="https://github.com/morluto/rea/blob/main/docs/evm-
#. bytecode.md" >
#. {ph5}: </a >
#. {ph6}: <a href="../guides/">
#. {ph7}: </a>
#: website/public/get-started/index.html:1535
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Flutter guide{ph1} · {ph2}Packages and resources{ph3} · {ph4}EVM "
"bytecode{ph5} · {ph6}All investigation guides{ph7}"
msgstr ""
"{ph0}Flutter 가이드{ph1} · {ph2}패키지와 리소스{ph3} · {ph4}EVM 바이트코드{ph5} · {ph6}모든 "
"조사 가이드{ph7}"

#: website/public/get-started/index.html:1555
msgctxt "page:get-started/index.html"
msgid "Use REA from a terminal"
msgstr "터미널에서 REA 사용하기"

#: website/public/get-started/index.html:1557
msgctxt "page:get-started/index.html"
msgid "CLI commands, global installation and curl"
msgstr "CLI 명령어, 전역 설치, curl"

#. {ph0}: <code>main</code>
#: website/public/get-started/index.html:1654
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Replace {ph0} with a function name or address from the target's function "
"list. Ghidra must be configured first."
msgstr "{ph0}을 대상의 함수 목록에 있는 함수 이름이나 주소로 바꾸세요. 먼저 Ghidra를 설정해야 합니다."

#: website/public/get-started/index.html:1658
msgctxt "page:get-started/index.html"
msgid ""
"On macOS or Linux, you can also use the curl installer after preparing "
"Node.js:"
msgstr "macOS나 Linux에서는 Node.js를 준비한 뒤 curl 설치 프로그램을 사용할 수도 있습니다."

#: website/public/get-started/index.html:1696
msgctxt "page:get-started/index.html"
msgid ""
"Use the client check in step 3 with your setup ID. In editor clients, enable"
" REA in MCP settings and allow its tools in the agent chat."
msgstr ""
"3단계의 클라이언트 검사에 사용하는 설정 ID를 지정하세요. 편집기 클라이언트에서는 MCP 설정에서 REA를 활성화하고 에이전트 채팅에서"
" 도구 사용을 허용하세요."

#: website/public/get-started/index.html:1724
msgctxt "page:get-started/index.html"
msgid "Windows, WSL and paths with spaces"
msgstr "Windows, WSL, 공백이 포함된 경로"

#: website/public/get-started/index.html:1725
msgctxt "page:get-started/index.html"
msgid ""
"Use Windows PowerShell for Windows clients and analysis tools. If your agent"
" runs inside WSL, install Node.js and REA inside that Linux environment and "
"use Linux paths there. Headless providers run on the same host as REA."
msgstr ""
"Windows 클라이언트와 분석 도구에는 Windows PowerShell을 사용하세요. 에이전트가 WSL 안에서 실행된다면 해당 "
"Linux 환경 안에 Node.js와 REA를 설치하고 Linux 경로를 사용하세요. 헤드리스 분석 도구는 REA와 같은 호스트에서 "
"실행됩니다."

#: website/public/get-started/index.html:1734
msgctxt "page:get-started/index.html"
msgid "Windows setup command:"
msgstr "Windows 설정 명령어:"

#: website/public/get-started/index.html:1751
msgctxt "page:get-started/index.html"
msgid "Update or remove REA"
msgstr "REA 업데이트 또는 제거하기"

#: website/public/get-started/index.html:1752
msgctxt "page:get-started/index.html"
msgid ""
"To refresh your agent connection, run the latest setup command again, review"
" its plan and restart your client."
msgstr "에이전트 연결을 갱신하려면 최신 설정 명령어를 다시 실행하고 계획을 확인한 뒤 클라이언트를 다시 시작하세요."

#. {ph0}: <code>rea update</code>
#. {ph1}: <code>npx rea-agents@latest uninstall</code>
#: website/public/get-started/index.html:1770
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"If you installed the global CLI, update it with {ph0}. Use {ph1} to remove "
"REA's client configuration and skill."
msgstr "전역 CLI를 설치했다면 {ph0}로 업데이트하세요. REA의 클라이언트 설정과 스킬을 제거하려면 {ph1}을 사용하세요."

#. {ph0}: <a
#. href="https://github.com/morluto/rea/blob/main/docs/installation.md#diagnose-
#. update-and-remove" >
#. {ph1}: </a >
#: website/public/get-started/index.html:1776
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Update and uninstall details{ph1}"
msgstr "{ph0}업데이트와 제거 상세 안내{ph1}"

#: website/public/get-started/index.html:322
msgctxt "page:get-started/index.html"
msgid "Copy Windows REA setup command"
msgstr "Windows REA 설정 명령어 복사"

#: website/public/get-started/index.html:419
#: website/public/get-started/index.html:450
#: website/public/get-started/index.html:464
#: website/public/get-started/index.html:482
#: website/public/get-started/index.html:534
#: website/public/get-started/index.html:548
#: website/public/get-started/index.html:580
#: website/public/get-started/index.html:609
#: website/public/get-started/index.html:744
#: website/public/get-started/index.html:799
#: website/public/get-started/index.html:814
#: website/public/get-started/index.html:862
#: website/public/get-started/index.html:1047
#: website/public/get-started/index.html:1109
#: website/public/get-started/index.html:1132
#: website/public/get-started/index.html:1156
#: website/public/get-started/index.html:1204
#: website/public/get-started/index.html:1279
#: website/public/get-started/index.html:1305
#: website/public/get-started/index.html:1322
#: website/public/get-started/index.html:1643
#: website/public/get-started/index.html:1665
#: website/public/get-started/index.html:1738
#: website/public/get-started/index.html:1759
msgctxt "page:get-started/index.html"
msgid "Copy command"
msgstr "명령어 복사"

#: website/public/get-started/index.html:895
msgctxt "page:get-started/index.html"
msgid "Copy Notes investigation prompt"
msgstr "메모 분석 프롬프트 복사"

#. {ph0}: <code>sudo apt install curl unzip</code>
#: website/public/get-started/index.html:362
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Install curl and unzip first if they are missing. On Debian or Ubuntu, run "
"{ph0}; on other distributions, use your package manager."
msgstr ""
"curl과 unzip이 없다면 먼저 설치하세요. Debian이나 Ubuntu에서는 {ph0}을 실행하고, 다른 배포판에서는 해당 패키지 "
"관리자를 사용하세요."

#: website/public/get-started/index.html:381
msgctxt "page:get-started/index.html"
msgid "Close the terminal, open it again, then:"
msgstr "터미널을 닫았다가 다시 열고 다음을 실행하세요."

#: website/public/get-started/index.html:511
msgctxt "page:get-started/index.html"
msgid ""
"Open its AI chat and choose Agent mode. In Windsurf or Devin Desktop, open "
"the agent chat; in VS Code, set up GitHub Copilot first."
msgstr ""
"편집기의 AI 채팅을 열고 Agent 모드를 선택하세요. Windsurf나 Devin Desktop에서는 에이전트 채팅을 열고, VS "
"Code에서는 먼저 GitHub Copilot을 설정하세요."

#. {ph0}: <a href="https://cursor.com/docs">
#. {ph1}: </a>
#. {ph2}: <a href="https://docs.windsurf.com/windsurf/getting-started" >
#. {ph3}: </a >
#. {ph4}: <a href="https://code.visualstudio.com/docs/setup/copilot" >
#. {ph5}: </a >
#: website/public/get-started/index.html:517
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Cursor setup{ph1} · {ph2}Windsurf / Devin Desktop setup{ph3} · {ph4}VS "
"Code and Copilot setup{ph5}"
msgstr ""
"{ph0}Cursor 설정{ph1} · {ph2}Windsurf / Devin Desktop 설정{ph3} · {ph4}VS Code와 "
"Copilot 설정{ph5}"

#: website/public/get-started/index.html:605
msgctxt "page:get-started/index.html"
msgid "OpenCode · choose an AI model"
msgstr "OpenCode · AI 모델 선택하기"

#: website/public/get-started/index.html:1263
msgctxt "page:get-started/index.html"
msgid "Prepare the IDA registration file"
msgstr "IDA 등록 파일 준비하기"

#. {ph0}: <code>ida-mcp.json</code>
#. {ph1}: <code>.txt</code>
#: website/public/get-started/index.html:1264
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Install and configure the upstream server using the IDA guide below. Then "
"save its working registration as {ph0} in a text editor. On Windows, choose "
"“All files” when saving in Notepad so it doesn't add {ph1}."
msgstr ""
"아래 IDA 가이드에 따라 연동할 서버를 설치하고 설정하세요. 동작이 확인된 등록 설정을 텍스트 편집기에서 {ph0}로 저장하세요. "
"Windows 메모장에서 저장할 때는 ‘모든 파일’을 선택해 {ph1}가 붙지 않도록 하세요."

#. {ph0}: <code>idb_open</code>
#. {ph1}: <code>idb_list</code>
#. {ph2}: <code>idb_close</code>
#: website/public/get-started/index.html:1271
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"For a headless supervisor providing {ph0}, {ph1} and {ph2}, the file can "
"look like this:"
msgstr "{ph0}, {ph1}, {ph2}를 제공하는 헤드리스 감독 프로세스에는 다음과 같은 파일을 사용할 수 있습니다."

#. {ph0}: <code>command</code>
#. {ph1}: <code>args</code>
#. {ph2}: <code>env</code>
#: website/public/get-started/index.html:1294
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"For an attached legacy 1.4.0 GUI server, copy its working {ph0}, {ph1} and "
"optional {ph2} into the file. Open the original binary in IDA and start its "
"upstream plugin before asking REA to inspect it."
msgstr ""
"연결된 레거시 1.4.0 GUI 서버의 경우 동작이 확인된 {ph0}, {ph1}, 선택 사항인 {ph2}를 파일에 복사하세요. REA에"
" 조사를 요청하기 전에 IDA에서 원본 바이너리를 열고 연동할 플러그인을 시작하세요."

#: website/public/get-started/index.html:1463
msgctxt "page:get-started/index.html"
msgid "SQLite database"
msgstr "SQLite 데이터베이스"

#: website/public/get-started/index.html:1473
msgctxt "page:get-started/index.html"
msgid "EVM bytecode"
msgstr "EVM 바이트코드"

#: website/public/get-started/index.html:446
msgctxt "page:get-started/index.html"
msgid "Install Codex using the command for your operating system:"
msgstr "운영체제에 맞는 명령어로 Codex를 설치하세요."

#: website/public/get-started/index.html:475
msgctxt "page:get-started/index.html"
msgid ""
"After installation, reopen your terminal and return to the working folder. "
"Then start Codex:"
msgstr "설치 후 터미널을 다시 열고 작업 폴더로 돌아오세요. 그런 다음 Codex를 시작하세요."

#. {ph0}: <a href="https://nodejs.org/en/download" >
#. {ph1}: </a >
#: website/public/get-started/index.html:336
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"For a first installation, download the {ph0}Node.js 24 LTS macOS installer "
"(.pkg){ph1}, open it and follow the installer. Then reopen Terminal."
msgstr ""
"처음 설치한다면 {ph0}Node.js 24 LTS macOS 설치 프로그램(.pkg){ph1}을 다운로드하고 열어 안내를 따르세요. "
"그런 다음 터미널을 다시 여세요."

#: website/public/get-started/index.html:343
msgctxt "page:get-started/index.html"
msgid "Already use Homebrew?"
msgstr "이미 Homebrew를 사용하고 있나요?"

#: website/public/get-started/index.html:572
msgctxt "page:get-started/index.html"
msgid ""
"Install Claude Desktop on Windows or macOS and sign in. Quit it completely, "
"then run this command in a terminal you opened outside Claude:"
msgstr ""
"Windows나 macOS에 Claude Desktop을 설치하고 로그인하세요. 앱을 완전히 종료한 뒤 Claude 밖에서 연 터미널에서"
" 이 명령어를 실행하세요."

#. {ph0}: <a href="#check-connection">
#. {ph1}: </a>
#: website/public/get-started/index.html:591
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Review and approve the plan, reopen Claude, then {ph0}check the connection "
"in step 3{ph1}."
msgstr "계획을 확인하고 승인한 뒤 Claude를 다시 열고 {ph0}3단계에서 연결을 확인{ph1}하세요."

#: website/public/get-started/index.html:1168
msgctxt "page:get-started/index.html"
msgid ""
"Replace both paths with your existing installations. For a fresh macOS or "
"Linux arm64 installation, build the native decompiler for your computer "
"before continuing."
msgstr ""
"두 경로를 기존 설치 경로로 바꾸세요. macOS나 Linux arm64에 새로 설치했다면 먼저 컴퓨터에 맞는 네이티브 디컴파일러를 "
"빌드하세요."

#: website/public/get-started/index.html:1174
msgctxt "page:get-started/index.html"
msgid "Build Ghidra's native decompiler"
msgstr "Ghidra의 네이티브 디컴파일러 빌드하기"

#: website/public/get-started/index.html:1175
msgctxt "page:get-started/index.html"
msgid ""
"On macOS, the build needs Xcode Command Line Tools, make and bison. Use the "
"guide for your computer:"
msgstr ""
"macOS에서 빌드하려면 Xcode Command Line Tools, make, bison이 필요합니다. 컴퓨터에 맞는 가이드를 "
"따르세요."

#. {ph0}: <a
#. href="https://github.com/morluto/rea/blob/main/docs/installation.md#missing-
#. macos-native-decompiler" >
#. {ph1}: </a >
#: website/public/get-started/index.html:1180
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}macOS · Intel{ph1}"
msgstr "{ph0}macOS · Intel{ph1}"

#. {ph0}: <a
#. href="https://github.com/morluto/rea/blob/main/docs/installation.md#macos-
#. arm64-native-decompiler" >
#. {ph1}: </a >
#: website/public/get-started/index.html:1186
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}macOS · Apple Silicon{ph1}"
msgstr "{ph0}macOS · Apple Silicon{ph1}"

#. {ph0}: <a
#. href="https://github.com/NationalSecurityAgency/ghidra/blob/Ghidra_12.1.4_build/GhidraDocs/GettingStarted.md#building-
#. native-components" >
#. {ph1}: </a >
#: website/public/get-started/index.html:1192
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Linux arm64 · native build instructions{ph1}"
msgstr "{ph0}Linux arm64 · 네이티브 빌드 안내{ph1}"

#: website/public/get-started/index.html:1200
msgctxt "page:get-started/index.html"
msgid "Then check Ghidra and save its paths for your client:"
msgstr "그런 다음 Ghidra를 검사하고 클라이언트용으로 경로를 저장하세요."

#. {ph0}: <span translate="no">200 + 10%</span>
#: website/public/index.html:351
#, python-brace-format
msgctxt "page:index.html"
msgid "Why does Calculator give 220 for {ph0}?"
msgstr "계산기에서 {ph0}의 결과가 220인 이유는 무엇일까요?"

#. {ph0}: <a href="#what-is-re">
#. {ph1}: </a>
#: website/public/index.html:214
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}How it works{ph1}"
msgstr "{ph0}작동 방식{ph1}"

#: website/public/index.html:230
msgctxt "page:index.html"
msgid ""
"Ask your coding agent about an app, a game or a website. REA gives it the "
"tools to inspect the code behind the answer."
msgstr "앱, 게임, 웹사이트에 대해 코딩 에이전트에게 질문해 보세요. REA는 답의 근거가 되는 코드를 살펴볼 도구를 제공합니다."

#: website/public/index.html:235
msgctxt "page:index.html"
msgid "Get started"
msgstr "시작하기"

#: website/public/index.html:236
msgctxt "page:index.html"
msgid "See an example ↓"
msgstr "예제 보기 ↓"

#: website/public/index.html:326
msgctxt "page:index.html"
msgid "How it works"
msgstr "작동 방식"

#: website/public/index.html:328
msgctxt "page:index.html"
msgid ""
"Reverse engineering means learning how software works by inspecting the "
"program itself. With REA, your agent can follow the code, explain a feature "
"and help you rebuild it."
msgstr ""
"리버스 엔지니어링은 프로그램 자체를 살펴보고 소프트웨어의 작동 방식을 이해하는 것입니다. REA를 사용하면 에이전트가 코드를 추적하고 "
"기능을 설명하며 다시 구현하는 일을 도울 수 있습니다."

#: website/public/index.html:335
msgctxt "page:index.html"
msgid "Ask about one feature"
msgstr "한 가지 기능 질문하기"

#: website/public/index.html:336
msgctxt "page:index.html"
msgid "Give your agent a program or page and a question."
msgstr "에이전트에게 프로그램이나 페이지와 질문을 전달하세요."

#: website/public/index.html:339
msgctxt "page:index.html"
msgid "Inspect the program"
msgstr "프로그램 살펴보기"

#: website/public/index.html:340
msgctxt "page:index.html"
msgid "REA returns code, references and runtime observations."
msgstr "REA는 코드, 참조 관계, 실행 중 관찰 결과를 반환합니다."

#: website/public/index.html:343
msgctxt "page:index.html"
msgid "Explain it, then try a change"
msgstr "이해한 뒤 변경해 보기"

#: website/public/index.html:344
msgctxt "page:index.html"
msgid "Your agent uses the findings to explain or rebuild the feature."
msgstr "에이전트는 조사 결과를 바탕으로 기능을 설명하거나 다시 구현합니다."

#: website/public/index.html:360
msgctxt "page:index.html"
msgid "Follow the instructions step by step"
msgstr "명령어를 단계별로 따라가기"

#: website/public/index.html:511
msgctxt "page:index.html"
msgid "Ask your agent the same question"
msgstr "에이전트에게 같은 질문하기"

#: website/public/index.html:724
msgctxt "page:index.html"
msgid ""
"Start at 6. Add 0.001 each update without a collision, while speed is below "
"13."
msgstr "속도는 6에서 시작합니다. 속도가 13 미만이고 충돌하지 않은 경우, 갱신할 때마다 0.001씩 더합니다."

#: website/public/index.html:1029
msgctxt "page:index.html"
msgid ""
"Explore a feature in a released app or game, with code and checked results."
msgstr "출시된 앱이나 게임의 기능을 코드와 검증 결과와 함께 살펴보세요."

#: website/public/index.html:1040
msgctxt "page:index.html"
msgid ""
"Trace Aegis's six-digit login code through its released APK, then move a "
"demo clock to see why it changes every 30 seconds."
msgstr "Aegis의 배포 APK에서 여섯 자리 로그인 코드를 추적하고 데모 시계를 움직여 30초마다 바뀌는 이유를 확인하세요."

#: website/public/index.html:1051
msgctxt "page:index.html"
msgid ""
"Follow Notion's packaged JavaScript to the system clipboard and see how a "
"copy preserves rich block data."
msgstr ""
"Notion에 패키징된 JavaScript에서 시스템 클립보드까지 추적하며 복사가 서식 있는 블록 데이터를 보존하는 방식을 살펴보세요."

#: website/public/index.html:1062
msgctxt "page:index.html"
msgid ""
"Recover how a ball's position becomes left/right sound in a 1996 Windows "
"game."
msgstr "1996년 Windows 게임에서 공의 위치가 좌우 소리로 바뀌는 방식을 복원합니다."

#: website/public/index.html:1093
msgctxt "page:index.html"
msgid "Choose your target."
msgstr "조사 대상을 선택하세요"

#: website/public/index.html:1094
msgctxt "page:index.html"
msgid ""
"These guides cover setup and a first investigation for each kind of "
"software."
msgstr "이 가이드는 소프트웨어 종류별 설정과 첫 조사를 안내합니다."

#. {ph0}: <a href="#calculator">
#. {ph1}: </a>
#: website/public/index.html:566
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"Selected assembly from the installed Calculator DLL. The thoughts and reply "
"illustrate the findings. {ph0}Continue with the Calculator example ↓{ph1}"
msgstr ""
"설치된 계산기 DLL의 어셈블리 발췌입니다. 생각과 답변은 분석 결과를 설명하는 예시입니다. {ph0}계산기 예제로 이어가기 ↓{ph1}"

#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/index.html:1131
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Example prompt · Website"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}프롬프트 예 · 웹 사이트"

#: website/public/index.html:1154
msgctxt "page:index.html"
msgid "Yes, this one."
msgstr "바로 이 사이트입니다."

#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/index.html:1159
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Example prompt · Game reconstruction"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}예제 프롬프트 · 게임 재구성"

#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="game-project-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/index.html:1173
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to reconstruct this game from its executable. "
"Recover the gameplay logic in C and test it against the "
"original.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}›{ph1}{ph2}REA로 이 게임을 실행 파일에서 재구현해 줘. 게임 플레이 로직을 C로 복원하고 원본과 비교해 테스트해 "
"줘.{ph3}{ph4}{ph5}"

#. {ph0}: <a href="showcase/dx-ball/">
#. {ph1}: </a>
#: website/public/index.html:1182
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}See the DX-Ball case study →{ph1}"
msgstr "{ph0}DX-Ball 사례 연구 보기 →{ph1}"

#: website/public/index.html:1136
msgctxt "page:index.html"
msgid "Copy website project prompt"
msgstr "웹사이트 프로젝트 프롬프트 복사"

#: website/public/index.html:1164
msgctxt "page:index.html"
msgid "Copy game reconstruction prompt"
msgstr "게임 재구성 프롬프트 복사"

#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="website-project-prompt" >
#. {ph3}: <span translate="no">https://rea.tools/</span>
#. {ph4}: </span >
#. {ph5}: <span class="terminal-cursor" aria-hidden="true">
#. {ph6}: </span>
#: website/public/index.html:1145
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to inspect {ph3}. Clone this website for "
"me.{ph4}{ph5}{ph6}"
msgstr "{ph0}›{ph1}{ph2}REA로 {ph3}을 분석해 줘. 이 웹사이트를 복제해 줘.{ph4}{ph5}{ph6}"

#. {ph0}: <a href="showcase/">
#. {ph1}: </a>
#: website/public/index.html:239
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Showcases →{ph1} — investigations and interactive demos."
msgstr "{ph0}사례 소개 →{ph1} — 분석 과정과 직접 조작하는 데모."

#. {ph0}: <a href="blog/">
#. {ph1}: </a>
#: website/public/index.html:243
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Blog →{ph1} — methods and reconstruction notes."
msgstr "{ph0}블로그 →{ph1} — 방법론과 소프트웨어 재구성 기록."

#: website/public/index.html:350
msgctxt "page:index.html"
msgid "See the full Calculator investigation"
msgstr "계산기 전체 조사 보기"

#: website/public/index.html:1126
msgctxt "page:index.html"
msgid "Try a larger project"
msgstr "더 큰 프로젝트 시도하기"

#: website/public/index.html:578
msgctxt "page:index.html"
msgid ""
"Let’s try two examples: change a game’s speed, then rebuild Calculator’s % "
"button."
msgstr "두 가지 예제를 해 봅시다. 게임의 속도를 바꾸고, 계산기의 % 버튼을 다시 구현합니다."

#: website/public/index.html:586
msgctxt "page:index.html"
msgid ""
"The game gets faster as you run. To rebuild it with a speed control, we "
"first need to find out how the speed changes."
msgstr "계속 달리면 게임이 빨라집니다. 속도 조절 기능을 넣어 다시 구현하려면 먼저 속도가 어떻게 변하는지 알아야 합니다."

#: website/public/index.html:592
msgctxt "page:index.html"
msgid "1. Ask about the speed"
msgstr "1. 속도에 대해 질문하기"

#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/index.html:595
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Example question · Dinosaur game"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}질문 예시 · 공룡 게임"

#: website/public/index.html:618
msgctxt "page:index.html"
msgid "2. Find the speed rule"
msgstr "2. 속도 규칙 찾기"

#: website/public/index.html:619
msgctxt "page:index.html"
msgid ""
"REA lets the agent read the game’s running code. The speed starts at 6 and "
"increases a little each update while it is below 13."
msgstr ""
"REA를 사용하면 에이전트가 실행 중인 게임의 코드를 읽을 수 있습니다. 속도는 6에서 시작하고, 13 미만인 동안 갱신할 때마다 조금씩"
" 증가합니다."

#: website/public/index.html:626
msgctxt "page:index.html"
msgid "3. Play the result"
msgstr "3. 결과물 플레이하기"

#: website/public/index.html:627
msgctxt "page:index.html"
msgid ""
"We rebuilt that rule in the mini-game below and added a speed slider. Press "
"Play, then choose your own speed."
msgstr "아래 미니게임에 이 규칙을 구현하고 속도 슬라이더를 추가했습니다. 시작을 누르고 원하는 속도를 골라 보세요."

#: website/public/index.html:692
msgctxt "page:index.html"
msgid ""
"Enable JavaScript to play. You can still read the rule and open the source "
"code below."
msgstr "플레이하려면 JavaScript를 켜세요. 규칙을 읽고 아래 소스 코드를 펼치는 것은 계속 가능합니다."

#: website/public/index.html:810
msgctxt "page:index.html"
msgid ""
"The % button does different things after + and ×. Let’s find both rules and "
"try them in a small calculator."
msgstr "% 버튼은 + 뒤와 × 뒤에서 다르게 작동합니다. 두 규칙을 찾아 작은 계산기에서 시험해 봅시다."

#: website/public/index.html:816
msgctxt "page:index.html"
msgid "1. Ask about the % button"
msgstr "1. % 버튼에 대해 질문하기"

#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/index.html:819
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Example question · Calculator"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}질문 예시 · 계산기"

#: website/public/index.html:842
msgctxt "page:index.html"
msgid "2. Find both rules"
msgstr "2. 두 규칙 찾기"

#: website/public/index.html:843
msgctxt "page:index.html"
msgid ""
"REA helps the agent read the code behind the % button. It applies two "
"different rules:"
msgstr "REA는 에이전트가 % 버튼의 코드를 읽도록 돕습니다. 이 코드는 서로 다른 두 규칙을 적용합니다."

#: website/public/index.html:864
msgctxt "page:index.html"
msgid "3. Try the % button"
msgstr "3. % 버튼 시험하기"

#: website/public/index.html:865
msgctxt "page:index.html"
msgid "We recreated both rules below. Choose + or ×, press %, then press =."
msgstr "아래에 두 규칙을 다시 구현했습니다. + 또는 ×를 고르고, %를 누른 뒤 =를 누르세요."

#. {ph0}: <a href="faq/">
#. {ph1}: </a>
#: website/public/index.html:1195
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Read the FAQ{ph1} — setup and common questions."
msgstr "{ph0}FAQ 읽기{ph1} — 설정과 자주 묻는 질문."

#. {ph0}: <a href="https://discord.gg/GkcryMnJDM">
#. {ph1}: </a>
#: website/public/index.html:1198
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Join Discord{ph1} — get help and discuss your investigations."
msgstr "{ph0}Discord 참여{ph1} — 도움을 요청하고 조사 내용을 나누기."

#. {ph0}: <a href="https://github.com/morluto/rea/issues/new/choose" >
#. {ph1}: </a >
#: website/public/index.html:1202
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}GitHub issues{ph1} — report a bug or request a feature."
msgstr "{ph0}GitHub 이슈{ph1} — 버그 제보와 기능 요청."

#: website/public/index.html:296
msgctxt "page:index.html"
msgid "Setup for your platform:"
msgstr "사용하는 플랫폼의 설정:"

#. {ph0}: <a href="get-started/#curl-installation" >
#. {ph1}: <span translate="no">curl</span>
#. {ph2}: </a >
#: website/public/index.html:307
#, python-brace-format
msgctxt "page:index.html"
msgid "Other install options: {ph0}{ph1} →{ph2}"
msgstr "다른 설치 방법: {ph0}{ph1} →{ph2}"

#. {ph0}: <code>rea setup</code>
#: website/public/get-started/index.html:1676
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Follow the setup prompts to connect your agent. If they don't appear, run "
"{ph0}."
msgstr "설정 안내에 따라 에이전트를 연결하세요. 안내가 나타나지 않으면 {ph0}를 실행하세요."

#. {ph0}: <a
#. href="https://github.com/morluto/rea/blob/main/CONTRIBUTING.md#development-
#. setup" >
#. {ph1}: </a >
#. {ph2}: <code>6.4.0</code>
#: website/public/get-started/index.html:1247
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"The macOS headless profile and native GUI bridge require a {ph0}REA source "
"build{ph1} or a release containing those changes. npm {ph2} does not include"
" them."
msgstr ""
"macOS 헤드리스 구성과 네이티브 GUI 브리지에는 {ph0}REA 소스 빌드{ph1} 또는 해당 변경 사항이 포함된 릴리스가 "
"필요합니다. npm {ph2}에는 포함되어 있지 않습니다."

#. {ph0}: <code>node scripts/rea.mjs doctor --provider ida --json</code>
#. {ph1}: <code>node scripts/rea.mjs setup</code>
#. {ph2}: <code>npx</code>
#: website/public/get-started/index.html:1256
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"From the built checkout, run {ph0} and {ph1} instead of the {ph2} commands "
"below."
msgstr "빌드한 소스 디렉터리에서 아래 {ph2} 명령 대신 {ph0}와 {ph1}을 실행하세요."

#. {ph0}: <code>rea</code>
#. {ph1}: <code>"$HOME/.local/bin/rea" setup</code>
#: website/public/get-started/index.html:1680
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"If your shell can't find {ph0}, use the executable path printed by the "
"installer. On Linux, the default setup command is {ph1}."
msgstr ""
"셸에서 {ph0}를 찾지 못하면 설치 프로그램이 출력한 실행 파일 경로를 사용하세요. Linux의 기본 설정 명령은 {ph1}입니다."

#. {ph0}: <code>/absolute/path/to/program</code>
#: website/public/get-started/index.html:1353
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Use REA with my configured provider to inspect {ph0}. List its functions and"
" strings, then explain the part that handles user input with references to "
"the code."
msgstr ""
"REA와 제가 설정한 분석 도구로 {ph0}를 조사해 주세요. 함수와 문자열을 나열한 뒤, 사용자 입력을 처리하는 부분을 코드 참조와 "
"함께 설명해 주세요."

#: website/public/blog/index.html:122 website/public/blog/index.html:241
#: website/public/blog/reverse-engineering-models/index.html:122
#: website/public/blog/reverse-engineering-models/index.html:880
#: website/public/blog/touhou-reconstruction/index.html:122
#: website/public/blog/touhou-reconstruction/index.html:1077
#: website/public/contributors/index.html:123
#: website/public/contributors/index.html:1128
#: website/public/examples/dino-lab/index.html:123
#: website/public/examples/dino-lab/index.html:472
#: website/public/faq/index.html:122 website/public/faq/index.html:570
#: website/public/first-investigation/index.html:122
#: website/public/first-investigation/index.html:531
#: website/public/get-started/index.html:122
#: website/public/get-started/index.html:1814
#: website/public/guides/browser/index.html:122
#: website/public/guides/browser/index.html:504
#: website/public/guides/index.html:122 website/public/guides/index.html:279
#: website/public/guides/javascript/index.html:122
#: website/public/guides/javascript/index.html:500
#: website/public/guides/native/index.html:122
#: website/public/guides/native/index.html:506 website/public/index.html:124
#: website/public/index.html:1219 website/public/showcase/aegis/index.html:123
#: website/public/showcase/aegis/index.html:805
#: website/public/showcase/ctf/index.html:122
#: website/public/showcase/ctf/index.html:774
#: website/public/showcase/dx-ball/index.html:122
#: website/public/showcase/dx-ball/index.html:782
#: website/public/showcase/index.html:122
#: website/public/showcase/index.html:314
#: website/public/showcase/notion/index.html:122
#: website/public/showcase/notion/index.html:628
#: website/public/showcase/th04/index.html:122
#: website/public/showcase/th04/index.html:797
msgctxt "shared"
msgid "Contributors"
msgstr "기여자"

#: website/public/contributors/index.html:108
msgctxt "page:contributors/index.html"
msgid "Skip to content"
msgstr "본문으로 건너뛰기"

#. {ph0}: <a href="../">
#. {ph1}: </a>
#: website/public/contributors/index.html:200
#, python-brace-format
msgctxt "page:contributors/index.html"
msgid "{ph0}Home{ph1} / Contributors"
msgstr "{ph0}홈{ph1} / 기여자"

#: website/public/contributors/index.html:201
msgctxt "page:contributors/index.html"
msgid "Built together."
msgstr "함께 만듭니다"

#: website/public/contributors/index.html:202
msgctxt "page:contributors/index.html"
msgid "Thank you to everyone who helps make REA better."
msgstr "REA를 더 나은 도구로 만들어 주시는 모든 분께 감사드립니다."

#: website/public/contributors/index.html:203
msgctxt "page:contributors/index.html"
msgid ""
"Code, documentation, tests, translations and ideas — there are many ways to "
"contribute."
msgstr "코드, 문서, 테스트, 번역, 아이디어 등 다양한 방법으로 참여할 수 있습니다."

#: website/public/contributors/index.html:208
msgctxt "page:contributors/index.html"
msgid "How to contribute"
msgstr "기여하는 방법"

#: website/public/contributors/index.html:213
msgctxt "page:contributors/index.html"
msgid "Join the conversation →"
msgstr "대화에 참여하기 →"

#: website/public/contributors/index.html:223
msgctxt "page:contributors/index.html"
msgid "Contributors"
msgstr "기여자"

#: website/public/contributors/index.html:225
msgctxt "page:contributors/index.html"
msgid "Find a contributor"
msgstr "기여자 찾기"

#. {ph0}: <a href="https://github.com/morluto/rea/graphs/contributors">
#. {ph1}: </a>
#. {ph2}: <time datetime="2026-10-15" translate="no">2026-10-15</time>
#: website/public/contributors/index.html:1112
#, python-brace-format
msgctxt "page:contributors/index.html"
msgid "From {ph0}GitHub’s contributor list{ph1} · Updated {ph2}."
msgstr "{ph0}GitHub 기여자 목록{ph1} 기준 · 업데이트: {ph2}."

#: website/public/contributors/index.html:1117
msgctxt "page:contributors/index.html"
msgid "No matching contributors. Try another username."
msgstr "일치하는 기여자가 없습니다. 다른 사용자 이름으로 검색해 보세요."

#: website/public/contributors/index.html:6
msgctxt "page:contributors/index.html"
msgid "Contributors · REA"
msgstr "기여자 · REA"

#: website/public/contributors/index.html:7
msgctxt "page:contributors/index.html"
msgid ""
"Meet the people who contribute code, documentation, tests and ideas to REA."
msgstr "REA에 코드, 문서, 테스트와 아이디어를 기여하는 분들을 소개합니다."

#: website/public/contributors/index.html:226
msgctxt "page:contributors/index.html"
msgid "GitHub username"
msgstr "GitHub 사용자 이름"

#: website/public/contributors/index.html:1137
msgctxt "page:contributors/index.html"
msgid "Back to top"
msgstr "맨 위로"

#: website/public/assets/contributors.js:21
#, python-brace-format
msgctxt "runtime"
msgid "Contributors: {count}"
msgstr "기여자: {count}"

#, python-brace-format
#~ msgctxt "runtime"
#~ msgid "{count} contributors"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "Use REA with Ghidra to inspect {ph0}. List its functions and strings, then "
#~ "explain the part that handles user input with references to the code."
#~ msgstr ""
#~ "REA와 Ghidra로 {ph0}를 조사해 주세요. 함수와 문자열을 나열하고, 사용자 입력을 처리하는 부분을 코드 참조와 함께 설명해 "
#~ "주세요."

#~ msgctxt "page:index.html"
#~ msgid "Play the reconstruction"
#~ msgstr "재구성한 게임 플레이"

#~ msgctxt "page:index.html"
#~ msgid ""
#~ "Enable JavaScript to play the reconstruction. The code and explanation above"
#~ " remain readable."
#~ msgstr "사용JavaScript을 재생하는 재건. 위의 코드와 설명은 읽을 수 있습니다."

#~ msgctxt "page:index.html"
#~ msgid "REA returned"
#~ msgstr "REA가 반환한 결과"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Example prompt · Dinosaur game"
#~ msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}예제 프롬프트*공룡 게임"

#~ msgctxt "page:index.html"
#~ msgid "Try the calculation"
#~ msgstr "계산 시도"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Example prompt · Rebuild the % "
#~ "button"
#~ msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}예제 프롬프트*%단추 다시 작성"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "{ph0}Read the FAQ{ph1}, {ph2}chat with us on Discord{ph3}, or {ph4}open a "
#~ "GitHub issue{ph5} for bugs and feature requests."
#~ msgstr ""
#~ "{ph0}자주 묻는 질문 읽기{ph1}, {ph2}에 우리와 함께 채팅 Discord{ph3},또는 {ph4}오픈 GitHub "
#~ "문제{ph5} 버그 및 기능 요청."

#~ msgctxt "page:index.html"
#~ msgid ""
#~ "We inspected the game's speed rule, then rebuilt it with a slider. Play the "
#~ "result and choose your own pace."
#~ msgstr "게임의 속도 규칙을 살펴보고 슬라이더를 붙여 다시 구현했습니다. 직접 플레이하며 원하는 속도를 골라 보세요."

#~ msgctxt "page:index.html"
#~ msgid ""
#~ "The running script contains the speed settings and update function. The "
#~ "agent uses them to recover the acceleration."
#~ msgstr "실행 중인 스크립트에는 속도 설정과 갱신 함수가 있습니다. 에이전트는 이를 통해 가속 규칙을 파악합니다."

#~ msgctxt "page:index.html"
#~ msgid ""
#~ "The % button behaves differently after + and ×. We inspected the installed "
#~ "app to recover both rules. Try them below."
#~ msgstr "% 버튼은 + 뒤와 × 뒤에서 다르게 작동합니다. 설치된 앱을 살펴보고 두 규칙을 알아냈습니다. 아래에서 시험해 보세요."

#~ msgctxt "page:index.html"
#~ msgid ""
#~ "One branch divides by 100. The other also multiplies by the first number. "
#~ "The agent uses both to recreate the % button."
#~ msgstr ""
#~ "한 가지가 100 으로 나뉩니다. 다른 하나는 또한 첫 번째 숫자를 곱합니다. 에이전트는 둘 다 사용하여%단추를 다시 만듭니다."

#~ msgctxt "page:index.html"
#~ msgid "See a code-level example with Calculator"
#~ msgstr "계산기의 코드 분석 예제 보기"

#~ msgctxt "page:index.html"
#~ msgid ""
#~ "Selected assembly from the installed Calculator DLL. The thoughts and reply "
#~ "illustrate the findings."
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}What is RE?{ph1}"
#~ msgstr "{ph0}다시 무엇입니까?{ph1}"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}How REA helps{ph1}"
#~ msgstr "{ph0}REA가 돕는 방법{ph1}"

#~ msgctxt "page:index.html"
#~ msgid ""
#~ "REA gives your agent the tools to inspect a program and explain what it "
#~ "does."
#~ msgstr "REA는 코딩 에이전트가 프로그램을 조사하고 동작을 설명할 수 있도록 분석 도구를 제공합니다."

#~ msgctxt "page:index.html"
#~ msgid "What is reverse engineering?"
#~ msgstr "리버스 엔지니어링이란?"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "Finding out how software works by {ph0}examining the program itself.{ph1}"
#~ msgstr "{ph0}프로그램 자체를 조사해서{ph1} 소프트웨어의 작동 방식을 알아내는 것입니다."

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "The goal: understand a feature well enough to {ph0}explain it{ph1}, "
#~ "{ph2}change it{ph3} or {ph4}rebuild it.{ph5}"
#~ msgstr "목표:충분히 기능을 이해 {ph0}그것을 설명{ph1}, {ph2}변경{ph3} 또는 {ph4}그것을 재건하십시오.{ph5}"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "With REA · You ask {ph0}your agent{ph1}"
#~ msgstr "REA 사용 시 · {ph0}에이전트{ph1}에게 묻습니다"

#~ msgctxt "page:index.html"
#~ msgid "One prompt."
#~ msgstr "프롬프트 하나면 됩니다."

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "Ask your agent {ph0}in plain English.{ph1}"
#~ msgstr "에이전트에게 {ph0}일상적인 말로{ph1} 질문하세요."

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "{ph0}Let's try two examples.{ph1} Change a game's speed, then return to "
#~ "Calculator and rebuild its % button."
#~ msgstr "{ph0}두 가지 예를 들어 보겠습니다.{ph1} 게임의 속도를 변경 한 다음 계산기로 돌아가서%버튼을 다시 작성하십시오."

#~ msgctxt "page:index.html"
#~ msgid "Goal"
#~ msgstr "목표"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "Rebuild the game with {ph0}adjustable speed.{ph1}"
#~ msgstr "와 게임을 다시 {ph0}조정 가능한 속도.{ph1}"

#~ msgctxt "page:index.html"
#~ msgid "Why reverse engineer it?"
#~ msgstr "왜 그것을 리버스 엔지니어링합니까?"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "To reproduce its acceleration, we need {ph0}the rule in the running "
#~ "game{ph1}: how fast it starts, how much it increases and when it stops."
#~ msgstr "가속도를 재현하려면 {ph0}실행중인 게임의 규칙{ph1}:얼마나 빨리 시작,얼마나 증가하고 멈출 때."

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "{ph0}The script actually running in the page.{ph1} The agent reads its "
#~ "update function and speed settings, then uses that rule in a new game."
#~ msgstr ""
#~ "{ph0}스크립트는 실제로 페이지에서 실행.{ph1} 에이전트는 업데이트 기능 및 속도 설정을 읽은 다음 새 게임에서 해당 규칙을 "
#~ "사용합니다."

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "{ph0}Start at 6.{ph1} Add {ph2}0.001{ph3} each update without a collision, "
#~ "while speed is below {ph4}13{ph5}."
#~ msgstr ""
#~ "{ph0}시작 6.{ph1} 추가 {ph2}0.001{ph3} 충돌없이 각 업데이트,속도가 아래에있는 동안 {ph4}13{ph5}."

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "Build a small calculator that handles {ph0}both + and × correctly.{ph1}"
#~ msgstr "처리하는 작은 계산기를 구축 {ph0}+및 2018 년 11 월 13 일.{ph1}"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "The same button uses {ph0}different rules after + and ×.{ph1} We inspect the"
#~ " installed app to find which number the percentage is applied to."
#~ msgstr ""
#~ "같은 버튼 사용 {ph0}+및 2019 년 이후의 다른 규칙.{ph1} 우리는 비율이 적용되는 번호를 찾기 위해 설치된 응용 프로그램을 "
#~ "검사합니다."

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "{ph0}One branch divides by 100. The other also multiplies by the first "
#~ "number.{ph1} The agent uses both to recreate the % button."
#~ msgstr ""
#~ "{ph0}한 가지가 100 으로 나뉩니다. 다른 하나는 또한 첫 번째 숫자를 곱합니다.{ph1} 에이전트는 둘 다 사용하여%단추를 다시 "
#~ "만듭니다."

#~ msgctxt "page:index.html"
#~ msgid "Want to go deeper?"
#~ msgstr "더 깊이 알아보고 싶나요?"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "Tell your agent what you want to understand or build. With REA, you can work"
#~ " together on anything from {ph0}cloning this website{ph1} to "
#~ "{ph2}reconstructing a game from its executable.{ph3}"
#~ msgstr ""
#~ "당신이 이해하거나 구축하고 싶은 당신의 에이전트를 말한다. 함께 REA,당신은 아무것도 함께 작업 할 수 있습니다 {ph0}이 웹 사이트"
#~ " 복제{ph1} 에 {ph2}실행 파일에서 게임을 재구성합니다.{ph3}"

#~ msgctxt "page:index.html"
#~ msgid "For setup and analysis steps, choose your target:"
#~ msgstr "설정 및 분석 단계에서 대상을 선택합니다:"

#~ msgctxt "page:index.html"
#~ msgid "Join the community"
#~ msgstr "커뮤니티 참여"

#~ msgctxt "page:index.html"
#~ msgid ""
#~ "Share investigations and get help from other REA users on Discord. Follow "
#~ "REA on X for project updates."
#~ msgstr "조사를 공유하고 다른 사람의 도움을 받으십시오 REA 사용자 Discord. 팔로우 REA 프로젝트 업데이트에 대한 엑스."

#~ msgctxt "page:index.html"
#~ msgid "See how REA works ↓"
#~ msgstr "REA 사용 방식 보기 ↓"

#~ msgctxt "page:index.html"
#~ msgid "Follow @reatools on X"
#~ msgstr "쨩챌쨔챈쨀"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "One question: {ph0}why does Calculator give 220 for {ph1}?{ph2}"
#~ msgstr "예를 들어: {ph0}계산기에서 {ph1}가 왜 220이 될까요?{ph2}"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "We saw why {ph0}{ph1} gives 220.{ph2} Now let’s recover the rules for both +"
#~ " and ×, and try them."
#~ msgstr ""
#~ "우리는 이유를 보았다 {ph0}{ph1} 220 을 줍니다.{ph2} 이제+와 200 에 대한 규칙을 복구하고 시도해 보겠습니다."

# Use the same label as the Get started navigation link. The arrow is
# decorative.
#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "Get started {ph0}"
#~ msgstr "시작하기 {ph0}"

#~ msgctxt "page:index.html"
#~ msgid "One question:"
#~ msgstr "한 가지 질문:"

#~ msgctxt "page:index.html"
#~ msgid ""
#~ "Android, games, Electron and a CTF challenge, with code, figures and checked"
#~ " results."
#~ msgstr "안드로이드,게임,Electron및 CTF 도전으로,코드,그림 및 검사 결과입니다."

#~ msgctxt "page:index.html"
#~ msgid ""
#~ "Find Aegis's six-digit code calculation in its released APK. Trace the "
#~ "generating methods with REA, then move a demo clock to see why the code "
#~ "changes every 30 seconds."
#~ msgstr ""
#~ "찾기 Aegis6 자리 코드 계산은 APK. 생성 방법을 추적 REA,다음 코드가 30 초마다 변경 이유를 확인하기 위해 데모 시계를 "
#~ "이동합니다."

#~ msgctxt "page:index.html"
#~ msgid ""
#~ "Trace a page-facing API through Notion's packaged JavaScript. Follow its IPC"
#~ " wrappers to the system clipboard, then see how a small HTML marker keeps "
#~ "rich block data connected to a copy."
#~ msgstr ""
#~ "추적 페이지의 API 를 통해Notion's 패키지JavaScript. 시스템 클립 보드에 래퍼를 따라 다음 작은 마커가 복사본에 연결된"
#~ " 풍부한 블록 데이터를 유지하는 방법을 참조하십시오."

#~ msgctxt "page:index.html"
#~ msgid ""
#~ "Recover a sound-pan calculation from a 1996 Windows game. REA's "
#~ "instructions, caller references and numeric constants lead to a small C "
#~ "function, checked against the original behavior and all 63 compiled bytes."
#~ msgstr ""
#~ "1996 년 사운드 팬 계산 복구 Windows 게임. REA명령어,호출자 참조,숫자 상수는 작은 함수로 이어집니다.원래의 동작과 63 "
#~ "개의 컴파일된 바이트에 대해 확인됩니다."

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "Before REA · You investigate it {ph0}yourself{ph1}"
#~ msgstr "REA 사용 전 · {ph0}직접{ph1} 조사합니다"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "Use REA to inspect Windows Calculator. Why does {ph0} give 220?"
#~ msgstr "사용 REA 검사 Windows 계산기 왜 {ph0} 220 줘?"

#~ msgctxt "page:first-investigation/index.html"
#~ msgid ""
#~ "This command uses a shell with here-document support, such as Bash or Zsh. "
#~ "Your agent can run the same JavaScript in your platform’s shell."
#~ msgstr ""
#~ "이 명령은 여기 문서 지원 셸을 사용합니다. 귀하의 에이전트는 동일한 실행할 수 있습니다 JavaScript 플랫폼의 쉘에서."

#~ msgctxt "page:get-started/index.html"
#~ msgid "If you use Homebrew:"
#~ msgstr "당신이 사용하는 경우 Homebrew:"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Otherwise:"
#~ msgstr "그렇지 않으면:"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Close Terminal, open it again, then:"
#~ msgstr "터미널을 닫고 다시 연 다음:"

#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "Replace both paths with your existing installations. Setup checks them and "
#~ "records valid settings for your selected client. On Linux arm64, you may "
#~ "need to build Ghidra's native decompiler separately."
#~ msgstr ""
#~ "두 경로를 기존 설치로 바꿉니다. 설치 프로그램은 이를 확인하고 선택한 클라이언트에 대한 유효한 설정을 기록합니다. 시작 Linux 팔 "
#~ "64,당신은 구축해야 할 수도 있습니다 Ghidra네이티브 디컴파일러입니다."

#~ msgctxt "page:get-started/index.html"
#~ msgid "Copy fnm installation command for macOS"
#~ msgstr "설치 명령 복사 macOS"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Copy Node.js 24 commands for macOS"
#~ msgstr "복사 Node.js 24 에 대한 명령 macOS"

#, python-brace-format
#~ msgctxt "page:first-investigation/index.html"
#~ msgid "{ph0} · CSV formatter"
#~ msgstr "{ph0}·CSV포맷터"

#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "For a first installation, download the Node.js 24 LTS macOS installer "
#~ "(.pkg), open it and follow the installer. Then reopen Terminal."
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "Install Claude Desktop on Windows or macOS and sign in. Quit it completely "
#~ "before running REA setup in your terminal. Choose {ph0}, approve the plan, "
#~ "then reopen Claude and start a chat."
#~ msgstr ""

#~ msgctxt "page:get-started/index.html"
#~ msgid "In the terminal you prepared above, install Codex:"
#~ msgstr ""

#~ msgctxt "page:get-started/index.html"
#~ msgid "Then start it:"
#~ msgstr ""

#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "Open its AI chat and choose Agent mode. In Windsurf, open Cascade; in VS "
#~ "Code, set up GitHub Copilot first."
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "{ph0}Cursor setup{ph1} · {ph2}Windsurf setup{ph3} · {ph4}VS Code and Copilot"
#~ " setup{ph5}"
#~ msgstr ""

#~ msgctxt "page:get-started/index.html"
#~ msgid "OpenCode · choose a model provider"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "The installer needs {ph0} and {ph1} (on Debian/Ubuntu: {ph2}). Close the "
#~ "terminal, open it again, then:"
#~ msgstr "설치 프로그램 요구 사항 {ph0} 그리고 {ph1} (데비안/우분투에서: {ph2}). 터미널을 닫고 다시 연 다음:"

#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "Connect REA to your coding agent, or inspect a local app from your terminal."
#~ msgstr "연결 REA 코딩 에이전트에,또는 터미널에서 로컬 응용 프로그램을 검사합니다."

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid "{ph0}Windows (PowerShell){ph1}"
#~ msgstr "{ph0}Windows (PowerShell){ph1}"

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "If PowerShell later says {ph0}\"running scripts is disabled on this "
#~ "system\"{ph1} when you run {ph2}, run this once and try again:"
#~ msgstr ""
#~ "나중에 {ph2}을 실행할 때 PowerShell에 {ph0}\"running scripts is disabled on this "
#~ "system\"{ph1}(스크립트 실행이 비활성화됨) 메시지가 나오면, 다음 명령을 한 번 실행하고 다시 시도하세요."

#~ msgctxt "page:get-started/index.html"
#~ msgid "Setup options"
#~ msgstr "설정 옵션"

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid "{ph0}Connect your coding agent{ph1}"
#~ msgstr "{ph0}코딩 에이전트 연결{ph1}"

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid "{ph0}Set up native analysis{ph1}"
#~ msgstr "{ph0}기계 코드 프로그램 분석 설정{ph1}"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Connect your coding agent"
#~ msgstr "코딩 에이전트 연결"

#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "Run setup to connect REA to your coding agent. Client choices include Claude"
#~ " Code, Codex, Cursor, Gemini CLI, Windsurf, Grok Build, and other supported "
#~ "MCP clients. Grok Bot's connector is added from its chat."
#~ msgstr ""
#~ "설치 프로그램을 실행하여 연결 REA 코딩 에이전트에. 고객 선택은 Claude Code, Codex, Cursor, Gemini "
#~ "CLI, Windsurf, Grok Build,및 기타 지원 MCP 고객. Grok Bot의 커넥터는 채팅에서 추가됩니다."

#~ msgctxt "page:get-started/index.html"
#~ msgid "New to coding agents?"
#~ msgstr "코딩 에이전트에 새로운?"

#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "A coding agent is an AI assistant that works on your computer instead of in "
#~ "a browser tab. It can read files and run commands, and it asks before making"
#~ " changes. REA gives it reverse-engineering tools."
#~ msgstr ""
#~ "코딩 에이전트는 브라우저 탭이 아닌 컴퓨터에서 작동하는 인공지능 보조자입니다. 파일을 읽고 명령을 실행할 수 있으며 변경하기 전에 "
#~ "묻습니다. REA그것을 리버스 엔지니어링 도구입니다."

#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "If you don't have one yet, pick one, follow its install page and sign in:"
#~ msgstr "당신은 아직 하나가없는 경우,하나를 선택,그 설치 페이지를 따라 로그인:"

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "{ph0}{ph1}Claude Code{ph2}{ph3} by Anthropic. Needs a paid Claude plan."
#~ msgstr "{ph0}{ph1}Claude Code{ph2}{ph3} 에 의해 Anthropic. 유료 필요 Claude 계획."

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "{ph0}{ph1}Codex{ph2}{ph3} by OpenAI. Sign in with your ChatGPT account."
#~ msgstr "{ph0}{ph1}Codex{ph2}{ph3} 에 의해 OpenAI. 귀하의 계정으로 로그인하십시오."

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "{ph0}{ph1}OpenCode{ph2}{ph3}, open source. Connect the model provider of "
#~ "your choice."
#~ msgstr "{ph0}{ph1}OpenCode{ph2}{ph3},오픈 소스. 원하는 모델 공급자를 연결합니다."

#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "Then open it and copy the prompt below into it. The agent runs REA's setup "
#~ "and shows you the plan before changing anything."
#~ msgstr ""
#~ "그런 다음 그것을 열고 아래 프롬프트를 복사하십시오. 에이전트 실행 REA의 설치 및 아무것도 변경하기 전에 당신에게 계획을 보여줍니다."

#~ msgctxt "page:get-started/index.html"
#~ msgid "Restart your client when setup finishes."
#~ msgstr "설치가 완료되면 클라이언트를 다시 시작합니다."

#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "Give your agent a target path and a specific question. For a JavaScript or "
#~ "Electron app, you might start with:"
#~ msgstr ""
#~ "에이전트에 대상 경로 및 특정 질문을 제공합니다. 에 대한 JavaScript 또는 Electron 응용 프로그램,당신은 시작할 수 "
#~ "있습니다:"

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "Look at {ph0} and find how it exports data. Show the entry points, calls and"
#~ " dependencies involved, with the source locations for your findings."
#~ msgstr ""
#~ "봐 {ph0} 그리고 데이터를 내보내는 방법을 찾으십시오. 검색 결과에 대한 소스 위치와 관련된 진입 점,통화 및 종속성을 표시합니다."

#~ msgctxt "page:get-started/index.html"
#~ msgid "Replace the path with your local target."
#~ msgstr "경로를 로컬 대상으로 바꿉니다."

#~ msgctxt "page:get-started/index.html"
#~ msgid "Use the CLI"
#~ msgstr "사용CLI"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Set up native analysis"
#~ msgstr "기계 코드 프로그램 분석 설정"

#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "Native binaries need a local analysis tool. Choose and configure one below, "
#~ "then give REA your executable or library."
#~ msgstr "네이티브 바이너리에는 로컬 분석 도구가 필요합니다. 선택하고 아래 하나를 구성,다음 제공 REA 실행 파일 또는 라이브러리."

#~ msgctxt "page:get-started/index.html"
#~ msgid "Choose a tool: Ghidra, Hopper or IDA"
#~ msgstr "도구 선택: Ghidra, Hopper 또는 IDA"

#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "Use an existing Ghidra 12.1.x installation and a 64-bit JDK 21 or newer on "
#~ "Linux or macOS, on x64 or arm64. Your Ghidra installation needs a native "
#~ "decompiler for your host architecture. Set the paths before running setup:"
#~ msgstr ""
#~ "기존 사용 Ghidra 12.1.64 비트 설치 및 64 비트 설치 및 64 비트 설치 및 64 비트 설치 및 64 비트 설치 및 64 "
#~ "비트 설치 및 64 비트 설치 Linux 또는 macOS,64 또는 팔 64 에. 당신의 Ghidra 설치에는 호스트 아키텍처를 위한 "
#~ "기본 디컴파일러가 필요합니다. 설치 프로그램을 실행하기 전에 경로 설정:"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Ghidra connection · macOS / Linux"
#~ msgstr "Ghidra연결·macOS/Linux"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Ghidra connection · Windows PowerShell"
#~ msgstr "Ghidra연결·WindowsPowerShell"

#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "On macOS, complete Hopper's first-run choice of demo mode or license "
#~ "activation before an unattended analysis."
#~ msgstr "에macOS,완전한Hopper's first-실행 선택의 데모 모드 또는 라이센스를 활성화하기 전에 무인 분석이다."

#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "The verified IDA setups use Windows, with an existing MCP registration for "
#~ "an attached GUI or a headless database. Linux and macOS headless analysis "
#~ "remains unverified."
#~ msgstr ""
#~ "검증된 IDA 설정 사용 Windows,기존의 MCP 첨부 된 데이터베이스 또는 헤드리스 데이터베이스에 대한 등록. Linux 그리고 "
#~ "macOS 헤드리스 분석은 아직 확인되지 않았습니다."

#~ msgctxt "page:get-started/index.html"
#~ msgid "Connect an existing IDA MCP registration"
#~ msgstr "기존 연결 IDA MCP 등록"

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "Keep the upstream server's working {ph0}, {ph1} and optional {ph2} in a JSON"
#~ " file. An existing {ph3} object with an {ph4} entry is also accepted. Point "
#~ "REA at that file before setup:"
#~ msgstr ""
#~ "업스트림 서버의 작동 유지 {ph0}, {ph1} 그리고 선택 {ph2} 제슨 파일에 기존 {ph3} 객체 {ph4} 입장도 허용됩니다."
#~ " 포인트 REA 설정 전에 해당 파일에서:"

#~ msgctxt "page:get-started/index.html"
#~ msgid "IDA connection · Windows PowerShell"
#~ msgstr "IDA 연결 · Windows PowerShell"

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "The attached profile uses upstream legacy 1.4.0 tools with the original "
#~ "binary already open in IDA. The headless profile uses the upstream database-"
#~ "supervisor API and a registration with {ph0}; real verification covers an "
#~ "IDA 9.3 Windows x64 supervisor. Doctor checks the registration without "
#~ "starting IDA."
#~ msgstr ""
#~ "첨부된 프로필은 원래 바이너리가 이미 열려 있는 업스트림 레거시 1.4.0 도구를 사용합니다 IDA. 헤드리스 프로파일은 업스트림 "
#~ "데이터베이스를 사용합니다. {ph0};실제 검증은 IDA 9.3 Windows 64 감독자. 의사는 시작하지 않고 등록을 확인합니다 "
#~ "IDA."

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "Give REA the original executable path, with {ph0} in a CLI query. For an "
#~ "agent, include {ph1} in the REA registration's environment and select IDA "
#~ "when opening the binary."
#~ msgstr ""
#~ "줘 REA 원래 실행 경로, {ph0} 에 CLI 쿼리 에이전트의 경우 다음을 포함합니다 {ph1} 그 안에 REA 등록 환경 및 선택 "
#~ "IDA 바이너리를 열 때."

#~ msgctxt "page:get-started/index.html"
#~ msgid "For an existing Ghidra setup, inspect a function with:"
#~ msgstr "기존의 Ghidra 설치,기능 검사:"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Function analysis"
#~ msgstr "기능 분석"

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid "Replace {ph0} with the function name or address you want to inspect."
#~ msgstr "교체 {ph0} 검사할 함수 이름 또는 주소를 사용합니다."

#~ msgctxt "page:get-started/index.html"
#~ msgid "How native analysis sessions work"
#~ msgstr "기계 코드 프로그램 세션의 분석 작동 방식"

#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "Each CLI command imports and analyzes the binary, then closes its session. "
#~ "Your agent's MCP queries reuse the imported binary while that session is "
#~ "open."
#~ msgstr ""
#~ "각 CLI 명령은 바이너리를 가져오고 분석 한 다음 세션을 닫습니다. 귀하의 에이전트의 MCP 쿼리는 해당 세션이 열려 있는 동안 가져온"
#~ " 바이너리를 다시 사용합니다."

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "{ph0}Follow a native analysis example{ph1} to see how the function result "
#~ "leads to a recovered calculation."
#~ msgstr "{ph0}기계 코드 프로그램 분석 예제를 따르십시오{ph1} 함수 결과가 어떻게 복구된 계산으로 이어지는지 확인합니다."

#~ msgctxt "page:get-started/index.html"
#~ msgid "Check one client"
#~ msgstr "한 클라이언트 확인"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Copy PowerShell execution policy command"
#~ msgstr "복사 PowerShell 실행 정책 명령"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Copy agent setup command"
#~ msgstr "에이전트 설정 복사 명령"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Copy Ghidra connection for macOS and Linux"
#~ msgstr "macOS 및 Linux용 Ghidra 연결 명령 복사"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Copy Ghidra connection for Windows PowerShell"
#~ msgstr "복사Ghidra연결WindowsPowerShell"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Copy IDA connection for Windows PowerShell"
#~ msgstr "복사 IDA 에 대한 연결 Windows PowerShell"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Copy native function analysis command"
#~ msgstr "기본 함수 분석 복사 명령"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Copy client diagnosis command"
#~ msgstr "클라이언트 진단 복사 명령"

#~ msgctxt "page:index.html"
#~ msgid "Windows (PowerShell)"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}REA supplies"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}Your agent explains"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}Try the calculation"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "Windows (PowerShell){ph0}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "{ph0}{ph1}REA supplies{ph2} {ph3}The handler’s instructions, decompiled code"
#~ " and calls.{ph4}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}{ph1}Your agent explains{ph2} {ph3}10% of 200 = 20{ph4}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}{ph1}Try the calculation{ph2} {ph3}200 + 20 = 220{ph4}"
#~ msgstr ""

#~ msgctxt "page:index.html"
#~ msgid "Windows (PowerShell) →"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "Before REA · You investigate it {ph0}yourself{ph1} {ph2}{ph3}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}Help & feedback{ph1}"
#~ msgstr "{ph0}도움말 및 피드백{ph1}"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}Community{ph1}"
#~ msgstr "{ph0}커뮤니티{ph1}"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "Already know RE? {ph0}Skip to analysis guides →{ph1}"
#~ msgstr "이미 다시 알고? {ph0}분석 가이드로 건너뛰기.{ph1}"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "Want to go deeper? {ph0}Read the Blog →{ph1}"
#~ msgstr "더 깊이 가고 싶습니까? {ph0}블로그 읽기→{ph1}"

#~ msgctxt "page:blog/index.html"
#~ msgid "By N0zoM1z0 · 13 October 2026 · Draft for review"
#~ msgstr "작성: N0zoM1z0 · 2026년 10월 13일 · 검토용 초안"

#~ msgctxt "page:index.html"
#~ msgid "Setup guide"
#~ msgstr "설정 가이드"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Windows PowerShell"
#~ msgstr "WindowsPowerShell"

#~ msgctxt "page:get-started/index.html"
#~ msgid "macOS · Homebrew"
#~ msgstr "macOS · Homebrew"

#~ msgctxt "runtime"
#~ msgid "Copy"
#~ msgstr "복사"

#~ msgctxt "figure:dx-ball-sound-pan-investigation.svg"
#~ msgid "DXBALL.EXE"
#~ msgstr "DXBALL.EXE"

#~ msgctxt "page:examples/dino-lab/index.html"
#~ msgid "Reconstruction · dino-speed.js"
#~ msgstr "재건*디노-속도.제이에스"

#~ msgctxt "page:faq/index.html"
#~ msgid ""
#~ "With Node.js and npm available, run setup, choose your coding agent and "
#~ "review the proposed changes."
#~ msgstr "함께 Node.js 그리고 npm 사용 가능,설치 실행,코딩 에이전트를 선택하고 제안 된 변경 사항을 검토하십시오."

#~ msgctxt "page:first-investigation/index.html"
#~ msgid "A supplied example · Node.js and npm · Your coding agent"
#~ msgstr "제공된 예·Node.js및npm·코딩의 에이전트"

#, python-brace-format
#~ msgctxt "page:first-investigation/index.html"
#~ msgid ""
#~ "Use a coding agent such as Claude Code, Codex or Cursor. You’ll need Node.js"
#~ " and npm; the {ph0}setup guide lists supported versions{ph1}."
#~ msgstr ""
#~ "다음과 같은 코딩 에이전트 사용 Claude Code, Codex 또는 Cursor. 당신이 필요합니다 Node.js 그리고 npm; "
#~ "{ph0}설치 가이드 목록 지원되는 버전{ph1}."

#, python-brace-format
#~ msgctxt "page:first-investigation/index.html"
#~ msgid ""
#~ "{ph0}Page · renderer.js{ph1}{ph2}Export notes{ph3}{ph4}Calls {ph5}.{ph6}"
#~ msgstr "{ph0}페이지*렌더러.제이에스{ph1}{ph2}노트 내보내기{ph3}{ph4}통화 {ph5}.{ph6}"

#, python-brace-format
#~ msgctxt "page:first-investigation/index.html"
#~ msgid ""
#~ "{ph0}Bridge · preload.js{ph1}{ph2}{ph3}{ph4}{ph5}Sends a named message to "
#~ "the main process.{ph6}"
#~ msgstr "{ph0}브리지*예압.제이에스{ph1}{ph2}{ph3}{ph4}{ph5}주 프로세스에 명명된 메시지를 보냅니다.{ph6}"

#, python-brace-format
#~ msgctxt "page:first-investigation/index.html"
#~ msgid ""
#~ "{ph0}Handler · main.js{ph1}{ph2}Write notes.csv{ph3}{ph4}Calls the formatter"
#~ " in {ph5} and writes the file.{ph6}"
#~ msgstr ""
#~ "{ph0}핸들러*메인.제이에스{ph1}{ph2}메모를 작성하십시오.2015 년{ph3}{ph4}포맷터를 호출합니다 {ph5} 그리고 "
#~ "파일을 씁니다.{ph6}"

#, python-brace-format
#~ msgctxt "page:first-investigation/index.html"
#~ msgid ""
#~ "{ph0}›{ph1}{ph2}Predict the CSV for a note with id 1 and title Hello, "
#~ "\"REA\". Then run the example’s toCsv formatter with Node.js to check it. "
#~ "Show the prediction and actual output.{ph3}{ph4}{ph5}"
#~ msgstr ""
#~ "{ph0}›{ph1}{ph2}예측 CSV 아이디 1 과 제목이 있는 메모를 위해 안녕하세요,\"REA\". 그런 다음 예제를 "
#~ "실행하십시오. Node.js 그것을 확인합니다. 예측 및 실제 출력을 표시합니다.{ph3}{ph4}{ph5}"

#~ msgctxt "page:first-investigation/index.html"
#~ msgid ""
#~ "The title stays in one quoted field; each quotation mark is doubled. This "
#~ "checks the formatter directly with Node.js."
#~ msgstr ""
#~ "제목은 하나의 인용 필드에 남아 있으며 각 인용 부호는 두 배로 표시됩니다. 이것은 포맷터를 직접 확인합니다. Node.js."

#~ msgctxt "page:first-investigation/index.html"
#~ msgid "Node.js · CSV formatter"
#~ msgstr "Node.js·CSV포맷터"

#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "You'll need Node.js 22 (22.19+), 24 (24.11+) or 26+. npm comes with Node.js."
#~ msgstr "당신이 필요합니다Node.js 22 (22.19+), 24 (24.11+) 또는 26+. npm와 함께 제공Node.js."

#~ msgctxt "page:get-started/index.html"
#~ msgid "Don't have Node.js, or not sure?"
#~ msgstr "이 없Node.js,또는 확신할 수 없으십니까?"

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "If {ph0} prints v22.19+, v24.11+ or v26+, you're ready. If it prints an "
#~ "older version or \"not recognized\" / \"command not found\", install Node.js"
#~ " 24 LTS:"
#~ msgstr ""
#~ "만약 {ph0} 이 응용 프로그램을 설치하려면 다음을 수행하십시오. 이전 버전 또는\"인식되지 않음\"/\"명령을 찾을 수 없음\"을 "
#~ "인쇄하는 경우 다음을 설치하십시오 Node.js 24 리터:"

#, python-brace-format
#~ msgctxt "page:guides/browser/index.html"
#~ msgid ""
#~ "{ph0}Open the example{ph1} · {ph2}Download export.js{ph3} · {ph4}Download "
#~ "notes.json{ph5}"
#~ msgstr "{ph0}예제 열기{ph1} · {ph2}다운로드 내보내기.제이에스{ph3} · {ph4}다운로드 노트.제이슨은{ph5}"

#, python-brace-format
#~ msgctxt "page:guides/javascript/index.html"
#~ msgid ""
#~ "Download the example and unzip it. The archive contains the complete {ph0} "
#~ "folder. Analyze it with Node.js and npm; Electron is not needed for this "
#~ "example."
#~ msgstr ""
#~ "예제를 다운로드하고 압축을 풉니 다. 아카이브에는 전체 {ph0} 폴더 그것을 분석 Node.js 그리고 npm; Electron 이 "
#~ "예제에는 필요하지 않습니다."

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "First time, or missing Node.js or a coding agent? {ph0}Follow the step-by-"
#~ "step setup guide →{ph1}"
#~ msgstr "처음 또는 누락 Node.js 아니면 코딩 에이전트? {ph0}단계별 설치 가이드를 따르십시오.{ph1}"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "One question: {ph0}why does Calculator give 220 for 200 + 10%?{ph1}"
#~ msgstr "예를 들어: {ph0}계산기에서 200 + 10%가 왜 220이 될까요?{ph1}"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "{ph0}›{ph1}{ph2}Use REA to inspect Windows Calculator. Why does 200 + 10% "
#~ "give 220?{ph3}{ph4}{ph5}"
#~ msgstr ""
#~ "{ph0}›{ph1}{ph2}사용 REA 검사 Windows 계산기 왜 200+10%는 220 을 제공합니까?{ph3}{ph4}{ph5}"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "We saw why {ph0}200 + 10% gives 220.{ph1} Now let’s recover the rules for "
#~ "both + and ×, and try them."
#~ msgstr ""
#~ "우리는 이유를 보았다 {ph0}200+10%제공 220.{ph1} 이제+와 200 에 대한 규칙을 복구하고 시도해 보겠습니다."

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "{ph0}01 · REA reads calc.exe{ph1}{ph2}It launches the Calculator "
#~ "app{ph3}{ph4}The code opens {ph5}. The agent then selects the installed "
#~ "app’s library.{ph6}"
#~ msgstr ""
#~ "{ph0}01 · REA 석회질을 읽습니다.엑스{ph1}{ph2}그것은 계산기 응용 프로그램을 시작합니다{ph3}{ph4}코드가 열립니다"
#~ " {ph5}. 그런 다음 에이전트는 설치된 앱의 라이브러리를 선택합니다.{ph6}"

#, python-brace-format
#~ msgctxt "page:showcase/aegis/index.html"
#~ msgid ""
#~ "{ph0}›{ph1}{ph2}Use REA to inspect aegis-v3.4.3.apk. Find how it generates "
#~ "the six-digit login code, explain why it changes every 30 seconds, and "
#~ "rebuild a small demo where I can change the time.{ph3}{ph4}{ph5}"
#~ msgstr ""
#~ "{ph0}›{ph1}{ph2}사용 REA 이지스-3.4.3 을 검사합니다.-아뇨 이 6 자리 로그인 코드를 생성하는 방법을 찾아 30 "
#~ "초마다 변경 이유를 설명하고 시간을 변경할 수있는 작은 데모를 다시 작성하십시오.{ph3}{ph4}{ph5}"

#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "tab_browser_view/preload.js · API member"
#~ msgstr "탭 _브라우저 _뷰/프리로드.회원가입"

#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "tab_browser_view/preload.js · IPC helper"
#~ msgstr "탭 _브라우저 _뷰/프리로드.쨩챌쨔챈쨀"

#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "main/index.js · handler helper"
#~ msgstr "주/색인.쨩챌쨔챈쨀"

#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "main/index.js · clipboard receiver"
#~ msgstr "주/색인.클립보드 수신기"

#~ msgctxt "page:first-investigation/index.html"
#~ msgid "main.js · lines 8–12"
#~ msgstr "메인8-12 호선"

#~ msgctxt "page:guides/browser/index.html"
#~ msgid "export.js · example source excerpt"
#~ msgstr "수출.*예 출처 발췌"

#~ msgctxt "page:guides/javascript/index.html"
#~ msgid "renderer.js · example source"
#~ msgstr "렌더러예시 소스"

#~ msgctxt "page:guides/javascript/index.html"
#~ msgid "preload.js · example source"
#~ msgstr "사전 로드예시 소스"

#~ msgctxt "page:guides/javascript/index.html"
#~ msgid "main.js · example source"
#~ msgstr "메인예시 소스"

#~ msgctxt "page:index.html"
#~ msgid "REA · loaded index.js · selected lines"
#~ msgstr "REA·드 인덱스입니다.선택 라인"

#, python-brace-format
#~ msgctxt "page:faq/index.html"
#~ msgid ""
#~ "{ph0}›{ph1}{ph2}Use REA to analyze /absolute/path/to/app and explain how it "
#~ "exports data. Show the relevant code and source locations.{ph3}{ph4}{ph5}"
#~ msgstr ""
#~ "{ph0}›{ph1}{ph2}사용 REA 앱/절대/경로/를 분석하고 데이터를 내보내는 방법을 설명합니다. 관련 코드 및 소스 위치를 "
#~ "표시합니다.{ph3}{ph4}{ph5}"

#, python-brace-format
#~ msgctxt "page:first-investigation/index.html"
#~ msgid ""
#~ "{ph0}›{ph1}{ph2}Install REA and connect it to this coding agent using npx "
#~ "rea-agents@latest setup. Show me the setup plan for approval, then verify "
#~ "the installation.{ph3}{ph4}{ph5}"
#~ msgstr ""
#~ "{ph0}›{ph1}{ph2}설치 REA 그리고 그것을 사용하여 이 코딩 에이전트에 연결하십시오 npx 정말이야-에이전트@최신 설정. "
#~ "승인을 위해 설치 계획을 표시한 다음 설치를 확인합니다.{ph3}{ph4}{ph5}"

#, python-brace-format
#~ msgctxt "page:first-investigation/index.html"
#~ msgid ""
#~ "{ph0}›{ph1}{ph2}Download https://rea.tools/examples/notes-example.zip into a"
#~ " new example folder and unpack it. Use REA to find what happens when I click"
#~ " Export notes. Show where notes.csv is written, which fields it contains, "
#~ "and the relevant files and lines.{ph3}{ph4}{ph5}"
#~ msgstr ""
#~ "{ph0}›{ph1}{ph2}다운로드 https://rea.tools/examples/notes-example.zip 새 예제 폴더에 "
#~ "넣고 압축을 풉니 다. 사용 REA 노트 내보내기를 클릭하면 어떤 일이 발생하는지 찾을 수 있습니다. 어디 메모를 표시합니다.그리고 관련"
#~ " 파일과 라인.{ph3}{ph4}{ph5}"

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "{ph0}›{ph1}{ph2}Install REA and connect it to this coding agent using npx "
#~ "rea-agents@latest setup. Show me the setup plan for approval, then verify "
#~ "the installation.{ph3}{ph4}{ph5}"
#~ msgstr ""
#~ "{ph0}›{ph1}{ph2}설치 REA 그리고 그것을 사용하여 이 코딩 에이전트에 연결하십시오 npx 정말이야-에이전트@최신 설정. "
#~ "승인을 위해 설치 계획을 표시한 다음 설치를 확인합니다.{ph3}{ph4}{ph5}"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "{ph0}›{ph1}{ph2}Install REA and connect it to this coding agent using npx "
#~ "rea-agents@latest setup. Show me the setup plan for approval, then verify "
#~ "the installation.{ph3}{ph4}{ph5}"
#~ msgstr ""
#~ "{ph0}›{ph1}{ph2}설치 REA 그리고 그것을 사용하여 이 코딩 에이전트에 연결하십시오 npx 정말이야-에이전트@최신 설정. "
#~ "승인을 위해 설치 계획을 표시한 다음 설치를 확인합니다.{ph3}{ph4}{ph5}"

#~ msgctxt "page:index.html"
#~ msgid "0x5b"
#~ msgstr "00000000000"

#~ msgctxt "page:index.html"
#~ msgid "0x5c"
#~ msgstr "00000000000"

#~ msgctxt "page:index.html"
#~ msgid "0x64"
#~ msgstr "0*64"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "{ph0}›{ph1}{ph2}Use REA to inspect https://rea.tools/. Clone this website "
#~ "for me.{ph3}{ph4}{ph5}"
#~ msgstr ""
#~ "{ph0}›{ph1}{ph2}사용 REA 검사 https://rea.tools/. 나를 위해이 웹 사이트를 "
#~ "복제.{ph3}{ph4}{ph5}"

#~ msgctxt "figure:ctf-mask-equation.svg"
#~ msgid "code[21] = 55"
#~ msgstr "코드[21]=55"

#~ msgctxt "figure:dx-ball-sound-pan-investigation.svg"
#~ msgid "0x00406400"
#~ msgstr "0x00406400"

#~ msgctxt "figure:dx-ball-sound-pan-investigation.svg"
#~ msgid "× pan_scale"
#~ msgstr " 이 경우 다음 단계를 수행 할 수 있습니다."

#, python-brace-format
#~ msgctxt "shared"
#~ msgid "{ph0}REA{ph1}{ph2}Reverse Engineer Anything{ph3}"
#~ msgstr "{ph0}REA{ph1}{ph2}리버스 엔지니어링 아무것도{ph3}"

#, python-brace-format
#~ msgctxt "shared"
#~ msgid ""
#~ "{ph0}Showcases{ph1} {ph2}Blog{ph3} {ph4}Get started{ph5} {ph6}Guides{ph7} "
#~ "{ph8}FAQ{ph9}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "shared"
#~ msgid ""
#~ "{ph0}Source{ph1}{ph2}MIT license{ph3}{ph4}Join the community{ph5}{ph6}Follow"
#~ " us on X{ph7}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:blog/touhou-reconstruction/index.html"
#~ msgid "{ph0}TH08{ph1}{ph2}→{ph3}{ph4}TH095{ph5}{ph6}→{ph7}{ph8}TH04{ph9}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:examples/dino-lab/index.html"
#~ msgid "{ph0}REA · selected script source{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:first-investigation/index.html"
#~ msgid "{ph0}main.js · lines 8–12{ph1}{ph2}Source{ph3}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:first-investigation/index.html"
#~ msgid "{ph0}Expected formatter output{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:guides/browser/index.html"
#~ msgid "{ph0}export.js · example source excerpt{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:guides/index.html"
#~ msgid ""
#~ "{ph0}Instructions{ph1} {ph2}→{ph3} {ph4}Caller{ph5} {ph6}→{ph7} "
#~ "{ph8}Constants{ph9} {ph10}→{ph11} {ph12}C function{ph13}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:guides/index.html"
#~ msgid ""
#~ "{ph0}Button{ph1} {ph2}→{ph3} {ph4}Preload API{ph5} {ph6}→{ph7} {ph8}IPC{ph9}"
#~ " {ph10}→{ph11} {ph12}CSV file{ph13}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:guides/index.html"
#~ msgid ""
#~ "{ph0}Your click{ph1} {ph2}→{ph3} {ph4}Captured request{ph5} {ph6}→{ph7} "
#~ "{ph8}Export script{ph9}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:guides/javascript/index.html"
#~ msgid "{ph0}renderer.js · example source{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:guides/javascript/index.html"
#~ msgid "{ph0}preload.js · example source{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:guides/javascript/index.html"
#~ msgid "{ph0}main.js · example source{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:guides/javascript/index.html"
#~ msgid "{ph0}REA result · summary.ipc excerpt{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:guides/native/index.html"
#~ msgid "{ph0}REA instruction excerpt · 0x406409{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:guides/native/index.html"
#~ msgid "{ph0}REA caller excerpt · 0x411f5b{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:guides/native/index.html"
#~ msgid "{ph0}REA byte results · interpreted as little-endian doubles{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:guides/native/index.html"
#~ msgid "{ph0}Recovered C · excerpt{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "{ph0}See how REA works ↓{ph1} {ph2}Setup guide{ph3} {ph4}Showcases →{ph5}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}REA · loaded index.js · selected lines{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}Selected settings from the inspected script{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}Readable summary of the % handler{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}REA · selected original instructions{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}Operator IDs · Microsoft’s source{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}Join the community{ph1} {ph2}Follow @reatools on X{ph3}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/aegis/index.html"
#~ msgid "{ph0}Agent → REA{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/aegis/index.html"
#~ msgid "{ph0}REA → agent · selected results{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/aegis/index.html"
#~ msgid "{ph0}REA → agent · methods and callers{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/aegis/index.html"
#~ msgid "{ph0}REA · selected decompiled Java{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/aegis/index.html"
#~ msgid "{ph0}Readable summary · agent's interpretation{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/aegis/index.html"
#~ msgid "{ph0}REA · generateOTP, complete body{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/aegis/index.html"
#~ msgid ""
#~ "{ph0}Download Aegis APK{ph1}{ph2}Download Android analysis provider{ph3}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/ctf/index.html"
#~ msgid "{ph0}Agent → REA{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/ctf/index.html"
#~ msgid "{ph0}REA → agent · selected results{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/ctf/index.html"
#~ msgid "{ph0}REA → agent · selected instructions{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/ctf/index.html"
#~ msgid "{ph0}Agent → REA · read_bytes{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/ctf/index.html"
#~ msgid "{ph0}REA → agent · seventh entries{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/ctf/index.html"
#~ msgid "{ph0}Original executable · SHA-256{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/ctf/index.html"
#~ msgid "{ph0}Download the original challenge{ph1}{ph2}Download solver{ph3}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/dx-ball/index.html"
#~ msgid "{ph0}REA result · pseudocode excerpt{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/dx-ball/index.html"
#~ msgid "{ph0}Agent → REA · {ph1}{ph2}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/dx-ball/index.html"
#~ msgid "{ph0}REA → agent · instruction excerpt{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/dx-ball/index.html"
#~ msgid "{ph0}REA → agent · caller excerpt{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/dx-ball/index.html"
#~ msgid "{ph0}Agent → REA · two {ph1} requests{ph2}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/dx-ball/index.html"
#~ msgid "{ph0}REA byte results · decoded as doubles{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/dx-ball/index.html"
#~ msgid "{ph0}Start with your own target{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/index.html"
#~ msgid ""
#~ "{ph0}APK{ph1} {ph2}→{ph3} {ph4}Generating code{ph5} {ph6}→{ph7} "
#~ "{ph8}Recovered rule{ph9} {ph10}→{ph11} {ph12}Adjustable clock{ph13}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/index.html"
#~ msgid ""
#~ "{ph0}Binary{ph1} {ph2}→{ph3} {ph4}Checking code{ph5} {ph6}→{ph7} "
#~ "{ph8}Equations{ph9} {ph10}→{ph11} {ph12}Correct!{ph13}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/index.html"
#~ msgid ""
#~ "{ph0}Executable{ph1} {ph2}→{ph3} {ph4}REA findings{ph5} {ph6}→{ph7} "
#~ "{ph8}Recovered C{ph9} {ph10}→{ph11} {ph12}Validation{ph13}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/index.html"
#~ msgid ""
#~ "{ph0}Packaged app{ph1} {ph2}→{ph3} {ph4}Exposed API{ph5} {ph6}→{ph7} "
#~ "{ph8}IPC wrappers{ph9} {ph10}→{ph11} {ph12}Clipboard{ph13}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/index.html"
#~ msgid ""
#~ "{ph0}Original DOS code{ph1} {ph2}→{ph3} {ph4}REA instructions{ph5} "
#~ "{ph6}→{ph7} {ph8}Angle calculation{ph9} {ph10}→{ph11} {ph12}Bullet "
#~ "ring{ph13}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "{ph0}Exposed page API{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "{ph0}Renderer IPC call{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "{ph0}Sent to the system clipboard{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "{ph0}Saved locally by Notion{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "{ph0}Markdown input{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "{ph0}Structured parser output · excerpt{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "{ph0}Analyze your own app{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/th04/index.html"
#~ msgid "{ph0}Agent → REA{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/th04/index.html"
#~ msgid "{ph0}REA → agent · selected fields{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/th04/index.html"
#~ msgid "{ph0}Agent → REA · {ph1}{ph2}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/th04/index.html"
#~ msgid "{ph0}REA → agent · instruction excerpt{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/th04/index.html"
#~ msgid "{ph0}Same function result · aim excerpt{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/th04/index.html"
#~ msgid "{ph0}Corresponding maintained C++{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/th04/index.html"
#~ msgid "{ph0}Ring macro · TH04 branch, excerpt{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/th04/index.html"
#~ msgid "{ph0}Angle and velocity · source excerpt{ph1}"
#~ msgstr ""
