cotutor 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (912) hide show
  1. package/LICENSE +249 -21
  2. package/NOTICE +42 -0
  3. package/README.md +115 -20
  4. package/avatars/chinese.webp +0 -0
  5. package/avatars/english.webp +0 -0
  6. package/avatars/math.webp +0 -0
  7. package/bin/cotutor.js +15 -5
  8. package/cards/canvas/card.css +8 -0
  9. package/cards/canvas/card.md +68 -0
  10. package/cards/choice/card.css +18 -0
  11. package/cards/choice/card.md +55 -0
  12. package/cards/code/card.css +5 -0
  13. package/cards/code/card.md +46 -0
  14. package/cards/dictation/card.css +10 -0
  15. package/cards/dictation/card.md +97 -0
  16. package/cards/image/card.css +10 -0
  17. package/cards/image/card.md +52 -0
  18. package/cards/lecture/card.css +9 -0
  19. package/cards/lecture/card.md +69 -0
  20. package/cards/paint/card.css +20 -0
  21. package/cards/paint/card.md +77 -0
  22. package/cards/photo/card.css +22 -0
  23. package/cards/photo/card.md +61 -0
  24. package/cards/read/card.css +6 -0
  25. package/cards/read/card.md +51 -0
  26. package/cards/text/card.css +3 -0
  27. package/cards/text/card.md +69 -0
  28. package/cards/tianzige/card.css +17 -0
  29. package/cards/tianzige/card.md +78 -0
  30. package/cards/tutor/card.css +79 -0
  31. package/cards/tutor/card.md +149 -0
  32. package/cards/word/card.css +24 -0
  33. package/cards/word/card.md +91 -0
  34. package/cards//346/235/277/344/271/246/346/200/216/344/271/210/345/206/231.md +159 -0
  35. package/dist/app/activity-eval-rules.d.ts +62 -0
  36. package/dist/app/activity-eval-rules.js +276 -0
  37. package/dist/app/activity-eval.d.ts +65 -0
  38. package/dist/app/activity-eval.js +159 -0
  39. package/dist/app/build.d.ts +11 -0
  40. package/dist/app/build.js +45 -0
  41. package/dist/app/cli/activities.d.ts +70 -0
  42. package/dist/app/cli/activities.js +196 -0
  43. package/dist/app/cli/cert.d.ts +12 -0
  44. package/dist/app/cli/cert.js +49 -0
  45. package/dist/app/cli/chalk/bake.d.ts +10 -0
  46. package/dist/app/cli/chalk/bake.js +58 -0
  47. package/dist/app/cli/chalk/browser.d.ts +16 -0
  48. package/dist/app/cli/chalk/browser.js +157 -0
  49. package/dist/app/cli/chalk/build.d.ts +14 -0
  50. package/dist/app/cli/chalk/build.js +100 -0
  51. package/dist/app/cli/chalk/dub.d.ts +51 -0
  52. package/dist/app/cli/chalk/dub.js +106 -0
  53. package/dist/app/cli/chalk/load-scene.d.ts +34 -0
  54. package/dist/app/cli/chalk/load-scene.js +117 -0
  55. package/dist/app/cli/chalk/main.d.ts +7 -0
  56. package/dist/app/cli/chalk/main.js +199 -0
  57. package/dist/app/cli/chalk/serve.d.ts +4 -0
  58. package/dist/app/cli/chalk/serve.js +28 -0
  59. package/dist/app/cli/chalk/snap.d.ts +65 -0
  60. package/dist/app/cli/chalk/snap.js +103 -0
  61. package/dist/app/cli/chalk/typecheck.d.ts +7 -0
  62. package/dist/app/cli/chalk/typecheck.js +51 -0
  63. package/dist/app/cli/doctor.d.ts +24 -0
  64. package/dist/app/cli/doctor.js +553 -0
  65. package/dist/app/cli/firewall.d.ts +24 -0
  66. package/dist/app/cli/firewall.js +79 -0
  67. package/dist/app/cli/grades.d.ts +14 -0
  68. package/dist/app/cli/grades.js +44 -0
  69. package/dist/{cli → app/cli}/init.d.ts +3 -1
  70. package/dist/app/cli/init.js +158 -0
  71. package/dist/app/cli/main.js +1038 -0
  72. package/dist/app/cli/migrate.d.ts +49 -0
  73. package/dist/app/cli/migrate.js +195 -0
  74. package/dist/app/cli/port-holder.d.ts +16 -0
  75. package/dist/app/cli/port-holder.js +34 -0
  76. package/dist/app/cli/port.d.ts +37 -0
  77. package/dist/app/cli/port.js +116 -0
  78. package/dist/app/cli/sandbox.d.ts +25 -0
  79. package/dist/app/cli/sandbox.js +166 -0
  80. package/dist/app/cli/serve-log.d.ts +13 -0
  81. package/dist/app/cli/serve-log.js +90 -0
  82. package/dist/app/cli/serve.d.ts +51 -0
  83. package/dist/app/cli/serve.js +168 -0
  84. package/dist/app/cli/service-windows.d.ts +50 -0
  85. package/dist/app/cli/service-windows.js +117 -0
  86. package/dist/app/cli/service.d.ts +138 -0
  87. package/dist/app/cli/service.js +429 -0
  88. package/dist/app/cli/shipped.d.ts +30 -0
  89. package/dist/app/cli/shipped.js +47 -0
  90. package/dist/app/cli/skeleton.d.ts +38 -0
  91. package/dist/app/cli/skeleton.js +161 -0
  92. package/dist/app/cli/skills.d.ts +59 -0
  93. package/dist/app/cli/skills.js +199 -0
  94. package/dist/app/cli/themes.d.ts +52 -0
  95. package/dist/app/cli/themes.js +148 -0
  96. package/dist/app/cli/tray-icons.d.ts +11 -0
  97. package/dist/app/cli/tray-icons.js +87 -0
  98. package/dist/app/cli/tray-ids.d.ts +6 -0
  99. package/dist/app/cli/tray-ids.js +6 -0
  100. package/dist/app/cli/tray-mac.d.ts +8 -0
  101. package/dist/app/cli/tray-mac.js +140 -0
  102. package/dist/app/cli/tray-run.d.ts +1 -0
  103. package/dist/app/cli/tray-run.js +33 -0
  104. package/dist/app/cli/tray-windows.d.ts +5 -0
  105. package/dist/app/cli/tray-windows.js +166 -0
  106. package/dist/app/cli/tray.d.ts +205 -0
  107. package/dist/app/cli/tray.js +618 -0
  108. package/dist/{cli → app/cli}/tutors.d.ts +15 -26
  109. package/dist/{cli → app/cli}/tutors.js +86 -110
  110. package/dist/app/cli/usage.d.ts +2 -0
  111. package/dist/app/cli/usage.js +35 -0
  112. package/dist/app/dictation/recognize.d.ts +18 -0
  113. package/dist/app/dictation/recognize.js +6 -0
  114. package/dist/app/dictation/route.d.ts +52 -0
  115. package/dist/app/dictation/route.js +511 -0
  116. package/dist/app/diff.d.ts +11 -0
  117. package/dist/app/diff.js +71 -0
  118. package/dist/app/http/access.d.ts +62 -0
  119. package/dist/app/http/access.js +180 -0
  120. package/dist/app/http/app.d.ts +241 -0
  121. package/dist/app/http/app.js +1159 -0
  122. package/dist/app/http/avatars.d.ts +17 -0
  123. package/dist/app/http/avatars.js +35 -0
  124. package/dist/app/http/dev-activities.d.ts +115 -0
  125. package/dist/app/http/dev-activities.js +193 -0
  126. package/dist/app/http/dev-overview.d.ts +108 -0
  127. package/dist/app/http/dev-overview.js +209 -0
  128. package/dist/app/http/dev-tutor-files.d.ts +80 -0
  129. package/dist/app/http/dev-tutor-files.js +151 -0
  130. package/dist/app/http/parent-home.d.ts +51 -0
  131. package/dist/app/http/parent-home.js +266 -0
  132. package/dist/app/http/parent-look.d.ts +2 -0
  133. package/dist/app/http/parent-look.js +151 -0
  134. package/dist/app/http/range.d.ts +9 -0
  135. package/dist/app/http/range.js +19 -0
  136. package/dist/app/http/raw-view.d.ts +117 -0
  137. package/dist/app/http/raw-view.js +149 -0
  138. package/dist/app/http/send-file.d.ts +7 -0
  139. package/dist/app/http/send-file.js +29 -0
  140. package/dist/{server → app/http}/stage.d.ts +9 -0
  141. package/dist/{server → app/http}/stage.js +34 -6
  142. package/dist/app/http/theme.d.ts +13 -0
  143. package/dist/app/http/theme.js +41 -0
  144. package/dist/app/http/voice-preview.d.ts +4 -0
  145. package/dist/app/http/voice-preview.js +34 -0
  146. package/dist/app/machine/bailian.d.ts +26 -0
  147. package/dist/app/machine/bailian.js +87 -0
  148. package/dist/app/mock/mock-live.d.ts +16 -0
  149. package/dist/app/mock/mock-live.js +140 -0
  150. package/dist/{server → app/mock}/mock.d.ts +38 -5
  151. package/dist/app/mock/mock.js +1125 -0
  152. package/dist/app/replay.d.ts +94 -0
  153. package/dist/app/replay.js +170 -0
  154. package/dist/app/skills/analyze-doc.d.ts +3 -0
  155. package/dist/app/skills/analyze-doc.js +47 -0
  156. package/dist/app/skills/home-doc.d.ts +5 -0
  157. package/dist/app/skills/home-doc.js +112 -0
  158. package/dist/app/skills/tune-doc.d.ts +3 -0
  159. package/dist/app/skills/tune-doc.js +80 -0
  160. package/dist/app/talk/list.d.ts +11 -0
  161. package/dist/app/talk/list.js +9 -0
  162. package/dist/app/talk/route.d.ts +16 -0
  163. package/dist/app/talk/route.js +142 -0
  164. package/dist/app/workspace.d.ts +63 -0
  165. package/dist/{cli → app}/workspace.js +100 -52
  166. package/dist/app/ws/route.d.ts +31 -0
  167. package/dist/app/ws/route.js +33 -0
  168. package/dist/app/ws/ws.d.ts +31 -0
  169. package/dist/app/ws/ws.js +169 -0
  170. package/dist/board/canvas-chat.d.ts +97 -0
  171. package/dist/board/canvas-chat.js +175 -0
  172. package/dist/board/card-guards.d.ts +15 -0
  173. package/dist/board/card-guards.js +38 -0
  174. package/dist/board/cards/canvas.d.ts +41 -0
  175. package/dist/board/cards/canvas.js +83 -0
  176. package/dist/{cards → board/cards}/choice.js +0 -12
  177. package/dist/{cards → board/cards}/code.js +0 -3
  178. package/dist/board/cards/dictation.d.ts +42 -0
  179. package/dist/board/cards/dictation.js +105 -0
  180. package/dist/board/cards/docs.d.ts +47 -0
  181. package/dist/board/cards/docs.js +152 -0
  182. package/dist/{cards → board/cards}/image.js +1 -10
  183. package/dist/board/cards/index.d.ts +62 -0
  184. package/dist/board/cards/index.js +144 -0
  185. package/dist/{cards → board/cards}/kind.d.ts +10 -4
  186. package/dist/board/cards/kind.js +9 -0
  187. package/dist/board/cards/lecture.d.ts +26 -0
  188. package/dist/board/cards/lecture.js +62 -0
  189. package/dist/board/cards/paint.d.ts +38 -0
  190. package/dist/board/cards/paint.js +85 -0
  191. package/dist/board/cards/photo.d.ts +15 -0
  192. package/dist/board/cards/photo.js +29 -0
  193. package/dist/{cards → board/cards}/read.js +1 -10
  194. package/dist/board/cards/text.d.ts +20 -0
  195. package/dist/board/cards/text.js +59 -0
  196. package/dist/board/cards/tianzige.d.ts +16 -0
  197. package/dist/board/cards/tianzige.js +64 -0
  198. package/dist/board/cards/tutor.d.ts +72 -0
  199. package/dist/board/cards/tutor.js +134 -0
  200. package/dist/board/cards/word.d.ts +20 -0
  201. package/dist/board/cards/word.js +76 -0
  202. package/dist/board/lecture.d.ts +100 -0
  203. package/dist/board/lecture.js +204 -0
  204. package/dist/board/paper.d.ts +20 -0
  205. package/dist/board/paper.js +76 -0
  206. package/dist/board/parse.d.ts +118 -0
  207. package/dist/board/parse.js +324 -0
  208. package/dist/board/presentation.d.ts +289 -0
  209. package/dist/board/presentation.js +613 -0
  210. package/dist/board/sections.d.ts +16 -0
  211. package/dist/board/sections.js +130 -0
  212. package/dist/brain/api-tools.d.ts +8 -0
  213. package/dist/brain/api-tools.js +191 -0
  214. package/dist/brain/api.d.ts +57 -0
  215. package/dist/brain/api.js +394 -0
  216. package/dist/brain/index.d.ts +97 -0
  217. package/dist/brain/index.js +11 -0
  218. package/dist/brain/log.d.ts +5 -0
  219. package/dist/brain/log.js +22 -0
  220. package/dist/brain/runtime.d.ts +30 -0
  221. package/dist/brain/runtime.js +23 -0
  222. package/dist/brain/stream-json.d.ts +16 -0
  223. package/dist/brain/stream-json.js +82 -0
  224. package/dist/brain/stream.d.ts +20 -0
  225. package/dist/brain/stream.js +70 -0
  226. package/dist/brain/transcript.d.ts +45 -0
  227. package/dist/brain/transcript.js +132 -0
  228. package/dist/brain/types.d.ts +99 -0
  229. package/dist/brain/types.js +14 -0
  230. package/dist/chalk/actions.d.ts +37 -0
  231. package/dist/chalk/actions.js +69 -0
  232. package/dist/chalk/bundle.d.ts +26 -0
  233. package/dist/chalk/bundle.js +69 -0
  234. package/dist/chalk/check.d.ts +28 -0
  235. package/dist/chalk/check.js +291 -0
  236. package/dist/chalk/circle.d.ts +64 -0
  237. package/dist/chalk/circle.js +193 -0
  238. package/dist/chalk/clock.d.ts +84 -0
  239. package/dist/chalk/clock.js +84 -0
  240. package/dist/chalk/geometry.d.ts +44 -0
  241. package/dist/chalk/geometry.js +139 -0
  242. package/dist/chalk/glyphs/capitals.d.ts +12 -0
  243. package/dist/chalk/glyphs/capitals.js +264 -0
  244. package/dist/chalk/glyphs/index.d.ts +21 -0
  245. package/dist/chalk/glyphs/index.js +18 -0
  246. package/dist/chalk/glyphs/letters.d.ts +13 -0
  247. package/dist/chalk/glyphs/letters.js +280 -0
  248. package/dist/chalk/glyphs/metrics.d.ts +33 -0
  249. package/dist/chalk/glyphs/metrics.js +28 -0
  250. package/dist/chalk/glyphs/registry.d.ts +7 -0
  251. package/dist/chalk/glyphs/registry.js +8 -0
  252. package/dist/chalk/glyphs/sample.d.ts +32 -0
  253. package/dist/chalk/glyphs/sample.js +102 -0
  254. package/dist/chalk/glyphs/skeleton.d.ts +64 -0
  255. package/dist/chalk/glyphs/skeleton.js +126 -0
  256. package/dist/chalk/glyphs/types.d.ts +58 -0
  257. package/dist/chalk/glyphs/types.js +17 -0
  258. package/dist/chalk/index.d.ts +23 -0
  259. package/dist/chalk/index.js +15 -0
  260. package/dist/chalk/manifest.d.ts +41 -0
  261. package/dist/chalk/manifest.js +6 -0
  262. package/dist/chalk/paint.d.ts +180 -0
  263. package/dist/chalk/paint.js +210 -0
  264. package/dist/chalk/pointer.d.ts +8 -0
  265. package/dist/chalk/pointer.js +21 -0
  266. package/dist/chalk/prepare.d.ts +11 -0
  267. package/dist/chalk/prepare.js +15 -0
  268. package/dist/chalk/scene-schema.d.ts +199 -0
  269. package/dist/chalk/scene-schema.js +91 -0
  270. package/dist/chalk/seed.d.ts +3 -0
  271. package/dist/chalk/seed.js +10 -0
  272. package/dist/chalk/text-metrics.d.ts +8 -0
  273. package/dist/chalk/text-metrics.js +156 -0
  274. package/dist/chalk/timeline.d.ts +47 -0
  275. package/dist/chalk/timeline.js +84 -0
  276. package/dist/chalk/types.d.ts +150 -0
  277. package/dist/chalk/types.js +8 -0
  278. package/dist/lib/index.d.ts +14 -12
  279. package/dist/lib/index.js +14 -12
  280. package/dist/media/draw.d.ts +23 -0
  281. package/dist/media/draw.js +44 -0
  282. package/dist/media/mp3.d.ts +6 -0
  283. package/dist/media/mp3.js +58 -0
  284. package/dist/media/mp4.d.ts +1 -0
  285. package/dist/media/mp4.js +58 -0
  286. package/dist/media/tts-voices.d.ts +18 -0
  287. package/dist/media/tts-voices.js +606 -0
  288. package/dist/media/tts.d.ts +56 -0
  289. package/dist/media/tts.js +174 -0
  290. package/dist/media/vision.d.ts +25 -0
  291. package/dist/media/vision.js +71 -0
  292. package/dist/memory/commit.d.ts +67 -0
  293. package/dist/memory/commit.js +130 -0
  294. package/dist/memory/context.d.ts +86 -0
  295. package/dist/memory/context.js +97 -0
  296. package/dist/memory/diary.d.ts +84 -0
  297. package/dist/memory/diary.js +183 -0
  298. package/dist/memory/grade.d.ts +2 -0
  299. package/dist/memory/grade.js +7 -0
  300. package/dist/{lib → memory}/plan.d.ts +1 -1
  301. package/dist/{lib → memory}/plan.js +1 -1
  302. package/dist/memory/proposals.d.ts +11 -0
  303. package/dist/memory/proposals.js +43 -0
  304. package/dist/memory/retrieval.d.ts +44 -0
  305. package/dist/memory/retrieval.js +157 -0
  306. package/dist/{lib → memory}/timetable.d.ts +0 -3
  307. package/dist/{lib → memory}/timetable.js +0 -11
  308. package/dist/memory/vault-notes.d.ts +165 -0
  309. package/dist/memory/vault-notes.js +359 -0
  310. package/dist/memory/vault.d.ts +70 -0
  311. package/dist/memory/vault.js +169 -0
  312. package/dist/realtime/bailian.d.ts +120 -0
  313. package/dist/realtime/bailian.js +289 -0
  314. package/dist/realtime/cues.d.ts +51 -0
  315. package/dist/realtime/cues.js +94 -0
  316. package/dist/realtime/listen.d.ts +32 -0
  317. package/dist/realtime/listen.js +53 -0
  318. package/dist/realtime/preview.d.ts +23 -0
  319. package/dist/realtime/preview.js +38 -0
  320. package/dist/realtime/prompt.d.ts +8 -0
  321. package/dist/realtime/prompt.js +13 -0
  322. package/dist/realtime/voices.d.ts +21 -0
  323. package/dist/realtime/voices.js +71 -0
  324. package/dist/runtime/activities.d.ts +29 -0
  325. package/dist/runtime/activities.js +72 -0
  326. package/dist/runtime/activity-state.d.ts +22 -0
  327. package/dist/runtime/activity-state.js +83 -0
  328. package/dist/runtime/activity.d.ts +63 -0
  329. package/dist/runtime/activity.js +428 -0
  330. package/dist/runtime/agent-file.d.ts +24 -0
  331. package/dist/runtime/agent-file.js +59 -0
  332. package/dist/runtime/auto-bookkeep.d.ts +30 -0
  333. package/dist/runtime/auto-bookkeep.js +84 -0
  334. package/dist/{lib → runtime/context}/context-pack.d.ts +3 -3
  335. package/dist/runtime/context/context-pack.js +182 -0
  336. package/dist/runtime/context/thread-digest.d.ts +4 -0
  337. package/dist/runtime/context/thread-digest.js +35 -0
  338. package/dist/runtime/context/tutor-rules.d.ts +25 -0
  339. package/dist/runtime/context/tutor-rules.js +47 -0
  340. package/dist/runtime/delivery/delivery.d.ts +94 -0
  341. package/dist/runtime/delivery/delivery.js +145 -0
  342. package/dist/runtime/delivery/playback.d.ts +25 -0
  343. package/dist/runtime/delivery/playback.js +29 -0
  344. package/dist/runtime/delivery/player.d.ts +145 -0
  345. package/dist/runtime/delivery/player.js +221 -0
  346. package/dist/runtime/delivery/queue.d.ts +89 -0
  347. package/dist/runtime/delivery/queue.js +59 -0
  348. package/dist/runtime/home/edit.d.ts +39 -0
  349. package/dist/runtime/home/edit.js +132 -0
  350. package/dist/runtime/home/home.d.ts +191 -0
  351. package/dist/runtime/home/home.js +318 -0
  352. package/dist/runtime/home/store.d.ts +142 -0
  353. package/dist/runtime/home/store.js +455 -0
  354. package/dist/runtime/journal/conversation.d.ts +46 -0
  355. package/dist/runtime/journal/conversation.js +89 -0
  356. package/dist/runtime/journal/events.d.ts +27 -0
  357. package/dist/runtime/journal/events.js +136 -0
  358. package/dist/runtime/journal/kid-log.d.ts +105 -0
  359. package/dist/runtime/journal/kid-log.js +133 -0
  360. package/dist/runtime/journal/ledger.d.ts +17 -0
  361. package/dist/{lib → runtime/journal}/ledger.js +7 -40
  362. package/dist/runtime/journal/mix.d.ts +42 -0
  363. package/dist/runtime/journal/mix.js +129 -0
  364. package/dist/runtime/journal/mouth-index.d.ts +26 -0
  365. package/dist/runtime/journal/mouth-index.js +34 -0
  366. package/dist/runtime/journal/mouth.d.ts +54 -0
  367. package/dist/runtime/journal/mouth.js +102 -0
  368. package/dist/runtime/journal/recorder.d.ts +91 -0
  369. package/dist/runtime/journal/recorder.js +148 -0
  370. package/dist/runtime/journal/store.d.ts +123 -0
  371. package/dist/runtime/journal/store.js +316 -0
  372. package/dist/runtime/kid-input.d.ts +16 -0
  373. package/dist/runtime/kid-input.js +194 -0
  374. package/dist/runtime/kid-view.d.ts +124 -0
  375. package/dist/runtime/kid-view.js +157 -0
  376. package/dist/runtime/lecture.d.ts +86 -0
  377. package/dist/runtime/lecture.js +237 -0
  378. package/dist/runtime/live/call.d.ts +231 -0
  379. package/dist/runtime/live/call.js +1244 -0
  380. package/dist/runtime/live/turns.d.ts +48 -0
  381. package/dist/runtime/live/turns.js +102 -0
  382. package/dist/runtime/runner.d.ts +243 -0
  383. package/dist/runtime/runner.js +777 -0
  384. package/dist/runtime/talk-run.d.ts +21 -0
  385. package/dist/runtime/talk-run.js +34 -0
  386. package/dist/scenes/dictation/match.d.ts +57 -0
  387. package/dist/scenes/dictation/match.js +255 -0
  388. package/dist/scenes/dictation/recognize.d.ts +86 -0
  389. package/dist/scenes/dictation/recognize.js +163 -0
  390. package/dist/scenes/dictation/store.d.ts +112 -0
  391. package/dist/scenes/dictation/store.js +99 -0
  392. package/dist/scenes/look.d.ts +26 -0
  393. package/dist/scenes/look.js +1 -0
  394. package/dist/scenes/paint/painter.d.ts +84 -0
  395. package/dist/scenes/paint/painter.js +171 -0
  396. package/dist/scenes/paint/prompt.d.ts +23 -0
  397. package/dist/scenes/paint/prompt.js +36 -0
  398. package/dist/scenes/talk/en-words.d.ts +8 -0
  399. package/dist/scenes/talk/en-words.js +44 -0
  400. package/dist/scenes/talk/list.d.ts +44 -0
  401. package/dist/scenes/talk/list.js +88 -0
  402. package/dist/scenes/talk/store.d.ts +27 -0
  403. package/dist/scenes/talk/store.js +61 -0
  404. package/dist/scenes/talk/warmup.d.ts +16 -0
  405. package/dist/scenes/talk/warmup.js +39 -0
  406. package/dist/schema/activity.d.ts +149 -0
  407. package/dist/schema/activity.js +113 -0
  408. package/dist/schema/board.d.ts +143 -2
  409. package/dist/schema/board.js +15 -3
  410. package/dist/schema/config.d.ts +339 -103
  411. package/dist/schema/config.js +269 -84
  412. package/dist/schema/context-pack.d.ts +76 -14
  413. package/dist/schema/context-pack.js +91 -10
  414. package/dist/{lib/conversation.d.ts → schema/conversation-files.d.ts} +11 -33
  415. package/dist/schema/conversation-files.js +26 -0
  416. package/dist/schema/conversation.d.ts +391 -49
  417. package/dist/schema/conversation.js +135 -19
  418. package/dist/schema/events.d.ts +138 -0
  419. package/dist/schema/events.js +1 -0
  420. package/dist/schema/home.d.ts +56 -0
  421. package/dist/schema/home.js +35 -0
  422. package/dist/schema/index.d.ts +14 -3
  423. package/dist/schema/index.js +14 -3
  424. package/dist/schema/kid-device.d.ts +20 -0
  425. package/dist/schema/kid-device.js +32 -0
  426. package/dist/schema/ledger.d.ts +8 -63
  427. package/dist/schema/ledger.js +7 -31
  428. package/dist/schema/memory.d.ts +73 -0
  429. package/dist/schema/memory.js +47 -0
  430. package/dist/schema/plan.d.ts +2 -2
  431. package/dist/schema/plan.js +2 -2
  432. package/dist/schema/sections.d.ts +32 -25
  433. package/dist/schema/sections.js +21 -22
  434. package/dist/schema/theme.d.ts +25 -0
  435. package/dist/schema/theme.js +26 -0
  436. package/dist/schema/timetable.d.ts +2 -2
  437. package/dist/schema/timetable.js +2 -2
  438. package/dist/schema/workspace.d.ts +68 -0
  439. package/dist/schema/workspace.js +37 -0
  440. package/dist/shared/default-port.d.ts +2 -0
  441. package/dist/shared/default-port.js +2 -0
  442. package/dist/shared/errors.d.ts +8 -0
  443. package/dist/shared/errors.js +13 -0
  444. package/dist/shared/home.d.ts +2 -0
  445. package/dist/shared/home.js +16 -0
  446. package/dist/shared/human-notes.d.ts +5 -0
  447. package/dist/shared/human-notes.js +7 -0
  448. package/dist/shared/qianwen.d.ts +54 -0
  449. package/dist/shared/qianwen.js +113 -0
  450. package/dist/shared/site-url.d.ts +2 -0
  451. package/dist/shared/site-url.js +5 -0
  452. package/dist/shared/time.d.ts +9 -0
  453. package/dist/shared/time.js +22 -0
  454. package/dist/shared/tokens.d.ts +18 -0
  455. package/dist/shared/tokens.js +11 -0
  456. package/dist/shared/wav.d.ts +10 -0
  457. package/dist/shared/wav.js +50 -0
  458. package/dist/stage/chunk-226TNLQA.js +129 -0
  459. package/dist/stage/chunk-24LGQEKE.js +1 -0
  460. package/dist/stage/chunk-25XV6UY3.js +10 -0
  461. package/dist/stage/chunk-2AZI3NHJ.js +1 -0
  462. package/dist/stage/chunk-2BQZTTBE.js +1 -0
  463. package/dist/stage/chunk-2M7CGY3Y.js +11 -0
  464. package/dist/stage/chunk-2VR4WFQ7.js +10 -0
  465. package/dist/stage/chunk-2ZYXBUWG.js +9 -0
  466. package/dist/stage/chunk-32LAWMGY.js +1 -0
  467. package/dist/stage/chunk-3LEMTSOO.js +11 -0
  468. package/dist/stage/chunk-3QCKGZYE.js +32 -0
  469. package/dist/stage/chunk-44P66WFA.js +1 -0
  470. package/dist/stage/chunk-4AM6FRR6.js +7 -0
  471. package/dist/stage/chunk-4QDE4SUK.js +1 -0
  472. package/dist/stage/chunk-4QESHV3U.js +1 -0
  473. package/dist/stage/chunk-4SG5QPHB.js +2 -0
  474. package/dist/stage/chunk-4T4UVCOC.js +1 -0
  475. package/dist/stage/chunk-4WUEPPG3.js +34 -0
  476. package/dist/stage/chunk-4YCN6UZ5.js +99 -0
  477. package/dist/stage/chunk-5V7ZY2AP.js +1 -0
  478. package/dist/stage/chunk-5VS5Y2VJ.js +6 -0
  479. package/dist/stage/chunk-5W4NO2ZD.js +62 -0
  480. package/dist/stage/chunk-65CRNICM.js +1 -0
  481. package/dist/stage/chunk-66MULO7F.js +5 -0
  482. package/dist/stage/chunk-6COFQTBS.js +162 -0
  483. package/dist/stage/chunk-6VZG3M3I.js +8 -0
  484. package/dist/stage/chunk-7HVDH43T.js +1 -0
  485. package/dist/stage/chunk-7JLJN4EZ.js +8 -0
  486. package/dist/stage/chunk-7QDSP4LN.js +1 -0
  487. package/dist/stage/chunk-7R6OQAO3.js +1 -0
  488. package/dist/stage/chunk-7VTTHZKW.js +7 -0
  489. package/dist/stage/chunk-ATHR5KEN.js +10 -0
  490. package/dist/stage/chunk-B6R5LTP2.js +36 -0
  491. package/dist/stage/chunk-BD4WE264.js +1 -0
  492. package/dist/stage/chunk-BONANU47.js +206 -0
  493. package/dist/stage/chunk-BTVW7OFK.js +89 -0
  494. package/dist/stage/chunk-BUTJIDHG.js +8 -0
  495. package/dist/stage/chunk-C2IPYMML.js +84 -0
  496. package/dist/stage/chunk-C54FTPPV.js +9 -0
  497. package/dist/stage/chunk-C6LOUF2Z.js +90 -0
  498. package/dist/stage/chunk-CFF3PILO.js +339 -0
  499. package/dist/stage/chunk-CI2FQ2JY.js +9 -0
  500. package/dist/stage/chunk-CW5O4RV7.js +12 -0
  501. package/dist/stage/chunk-CYABNQYD.js +1 -0
  502. package/dist/stage/chunk-D7FFA4NS.js +15 -0
  503. package/dist/stage/chunk-DUNNXU6Z.js +8 -0
  504. package/dist/stage/chunk-E3E4Q6JF.js +6 -0
  505. package/dist/stage/chunk-EB3U3LH7.js +9 -0
  506. package/dist/stage/chunk-EGSZ736B.js +8 -0
  507. package/dist/stage/chunk-EOBXW5VQ.js +2 -0
  508. package/dist/stage/chunk-ERZC3B7Y.js +11 -0
  509. package/dist/stage/chunk-ESDOOBIH.js +11 -0
  510. package/dist/stage/chunk-EVU4QAL4.js +178 -0
  511. package/dist/stage/chunk-EVVZI2NY.js +39 -0
  512. package/dist/stage/chunk-FBKAZUKD.js +39 -0
  513. package/dist/stage/chunk-FDVKYQJN.js +1 -0
  514. package/dist/stage/chunk-FGPVYHVR.js +5 -0
  515. package/dist/stage/chunk-FHUD4AZC.js +1 -0
  516. package/dist/stage/chunk-FKUJ2DMY.js +96 -0
  517. package/dist/stage/chunk-FNZGVIJV.js +1 -0
  518. package/dist/stage/chunk-GBYSEGYM.js +78 -0
  519. package/dist/stage/chunk-GCO4TDHX.js +1 -0
  520. package/dist/stage/chunk-GKTML2LG.js +10 -0
  521. package/dist/stage/chunk-GMDIHHXQ.js +11 -0
  522. package/dist/stage/chunk-GOUNACI3.js +10 -0
  523. package/dist/stage/chunk-GXAYATPF.js +3 -0
  524. package/dist/stage/chunk-H2K2DDXV.js +8 -0
  525. package/dist/stage/chunk-H3UJI6ZY.js +13 -0
  526. package/dist/stage/chunk-H6PUGCME.js +7 -0
  527. package/dist/stage/chunk-HNBUIMIG.js +1 -0
  528. package/dist/stage/chunk-HRZY2BJQ.js +10 -0
  529. package/dist/stage/chunk-HSPJGALW.js +30 -0
  530. package/dist/stage/chunk-IBYORHIP.js +25 -0
  531. package/dist/stage/chunk-IHF4EWTY.js +1 -0
  532. package/dist/stage/chunk-ISBRPNKI.js +1 -0
  533. package/dist/stage/chunk-IZ3OI3C2.js +2 -0
  534. package/dist/stage/chunk-JEFZAC2R.js +1 -0
  535. package/dist/stage/chunk-JFIGRDPO.js +1 -0
  536. package/dist/stage/chunk-JFVYBOOC.js +9 -0
  537. package/dist/stage/chunk-JGD4TUTQ.js +1 -0
  538. package/dist/stage/chunk-JO4BEHDH.js +4 -0
  539. package/dist/stage/chunk-JOWBS42C.js +1 -0
  540. package/dist/stage/chunk-JP3TM2TG.js +1 -0
  541. package/dist/stage/chunk-JVK2C52O.js +1 -0
  542. package/dist/stage/chunk-K4I76XBX.js +14 -0
  543. package/dist/stage/chunk-KA6CZZ4M.js +1 -0
  544. package/dist/stage/chunk-KESSJ36M.js +1 -0
  545. package/dist/stage/chunk-LKATEVRU.js +1 -0
  546. package/dist/stage/chunk-LS4EJ2EI.js +1 -0
  547. package/dist/stage/chunk-LUKJQC2X.js +70 -0
  548. package/dist/stage/chunk-LWULR3SM.js +1 -0
  549. package/dist/stage/chunk-LWVRFMKX.js +2 -0
  550. package/dist/stage/chunk-LXC4ZBPZ.js +1 -0
  551. package/dist/stage/chunk-M2UP255H.js +1 -0
  552. package/dist/stage/chunk-MAPPXUZQ.js +231 -0
  553. package/dist/stage/chunk-MBMPW7Z5.js +1 -0
  554. package/dist/stage/chunk-MD3HMMTK.js +1 -0
  555. package/dist/stage/chunk-MLPCUIKR.js +17 -0
  556. package/dist/stage/chunk-MNQIRPDQ.js +8 -0
  557. package/dist/stage/chunk-MRG7MJVS.js +1 -0
  558. package/dist/stage/chunk-MU6EXW72.js +10 -0
  559. package/dist/stage/chunk-MVU2X6LU.js +4 -0
  560. package/dist/stage/chunk-N6UA5CZV.js +36 -0
  561. package/dist/stage/chunk-NLZIT2TJ.js +7 -0
  562. package/dist/stage/chunk-NOJR3J7M.js +1 -0
  563. package/dist/stage/chunk-NT7ARDOL.js +1 -0
  564. package/dist/stage/chunk-NWOGMPZH.js +1 -0
  565. package/dist/stage/chunk-NXE4KMG3.js +40 -0
  566. package/dist/stage/chunk-O4YCZXD2.js +257 -0
  567. package/dist/stage/chunk-OAJZ7HLK.js +1 -0
  568. package/dist/stage/chunk-OCFCFASO.js +1 -0
  569. package/dist/stage/chunk-ODGPG5RY.js +7 -0
  570. package/dist/stage/chunk-ODUEA52Q.js +3 -0
  571. package/dist/stage/chunk-OGDJ3FCI.js +1 -0
  572. package/dist/stage/chunk-OLDJ55TT.js +1 -0
  573. package/dist/stage/chunk-OOCL4ATI.js +2 -0
  574. package/dist/stage/chunk-OQEFDUDV.js +1 -0
  575. package/dist/stage/chunk-OQWVEWG7.js +4 -0
  576. package/dist/stage/chunk-OUIX6BGK.js +1 -0
  577. package/dist/stage/chunk-OV7OZYUO.js +7 -0
  578. package/dist/stage/chunk-PFGDY33O.js +1 -0
  579. package/dist/stage/chunk-PFJDUJB3.js +139 -0
  580. package/dist/stage/chunk-PGEW76ER.js +1 -0
  581. package/dist/stage/chunk-PP76TAQX.js +32 -0
  582. package/dist/stage/chunk-PTBOP4OT.js +2 -0
  583. package/dist/stage/chunk-PX2RVHCK.js +1 -0
  584. package/dist/stage/chunk-Q7K3PNAD.js +1 -0
  585. package/dist/stage/chunk-QDDPLZDB.js +1 -0
  586. package/dist/stage/chunk-QLGLZ77F.js +1 -0
  587. package/dist/stage/chunk-QOPFDFHI.js +1 -0
  588. package/dist/stage/chunk-QXT4KAEJ.js +1 -0
  589. package/dist/stage/chunk-R4YVZCIT.js +1 -0
  590. package/dist/stage/chunk-R6P6EHWA.js +62 -0
  591. package/dist/stage/chunk-RCH3OXBI.js +9 -0
  592. package/dist/stage/chunk-RHPE44I2.js +1 -0
  593. package/dist/stage/chunk-RJ2R4FVC.js +1 -0
  594. package/dist/stage/chunk-RJH2YVTD.js +1 -0
  595. package/dist/stage/chunk-RLWWW5OB.js +6 -0
  596. package/dist/stage/chunk-S3WO35Z7.js +120 -0
  597. package/dist/stage/chunk-S7ZGX6MW.js +1 -0
  598. package/dist/stage/chunk-SIAWX27B.js +1 -0
  599. package/dist/stage/chunk-SLG4X622.js +1 -0
  600. package/dist/stage/chunk-SLJRBC77.js +168 -0
  601. package/dist/stage/chunk-SRORWQJZ.js +1 -0
  602. package/dist/stage/chunk-STZTUIIF.js +2 -0
  603. package/dist/stage/chunk-SVQ6MWNV.js +9 -0
  604. package/dist/stage/chunk-TL3HLL2S.js +132 -0
  605. package/dist/stage/chunk-U3DOE6SF.js +24 -0
  606. package/dist/stage/chunk-UABQIZKW.js +6 -0
  607. package/dist/stage/chunk-UDK3R764.js +1 -0
  608. package/dist/stage/chunk-UFF4E54B.js +41 -0
  609. package/dist/stage/chunk-UFP5Q4AY.js +1 -0
  610. package/dist/stage/chunk-UMH2TSW2.js +72 -0
  611. package/dist/stage/chunk-UTASVNF5.js +10 -0
  612. package/dist/stage/chunk-UW7ML5ML.js +88 -0
  613. package/dist/stage/chunk-V3J7F6OP.js +1 -0
  614. package/dist/stage/chunk-VEHP5B5Q.js +5 -0
  615. package/dist/stage/chunk-VRXWB733.js +9 -0
  616. package/dist/stage/chunk-VVDHBBS5.js +5 -0
  617. package/dist/stage/chunk-VYFOH6FU.js +106 -0
  618. package/dist/stage/chunk-W3VZTLQS.js +3 -0
  619. package/dist/stage/chunk-W7WNRWTZ.js +8 -0
  620. package/dist/stage/chunk-WHUCV53C.js +1 -0
  621. package/dist/stage/chunk-WULMYHIF.js +1 -0
  622. package/dist/stage/chunk-X54EX7AW.js +9 -0
  623. package/dist/stage/chunk-X565ISZM.js +1 -0
  624. package/dist/stage/chunk-XGZMDECB.js +1 -0
  625. package/dist/stage/chunk-XHONC4RF.js +172 -0
  626. package/dist/stage/chunk-XIK4XQ6E.js +24 -0
  627. package/dist/stage/chunk-XJQQWFTE.js +1 -0
  628. package/dist/stage/chunk-XM4WOU3I.js +13 -0
  629. package/dist/stage/chunk-XM7Y5HP5.js +38 -0
  630. package/dist/stage/chunk-XNYYRGD5.js +292 -0
  631. package/dist/stage/chunk-XOYVR3SV.js +1 -0
  632. package/dist/stage/chunk-XQIW5HCE.js +1 -0
  633. package/dist/stage/chunk-YEWL7FUW.js +8 -0
  634. package/dist/stage/chunk-YI55PY3V.js +1 -0
  635. package/dist/stage/chunk-YM63HI6W.js +1 -0
  636. package/dist/stage/chunk-YNLGLU4P.js +9 -0
  637. package/dist/stage/chunk-YTNMNOWP.js +1 -0
  638. package/dist/stage/chunk-YV62XKTC.js +1 -0
  639. package/dist/stage/chunk-YVBA3QW6.js +1 -0
  640. package/dist/stage/chunk-Z2SY2HOC.js +1 -0
  641. package/dist/stage/chunk-ZBTCQEBK.js +10 -0
  642. package/dist/stage/chunk-ZCUFN74D.js +1 -0
  643. package/dist/stage/chunk-ZHOULXEJ.js +11 -0
  644. package/dist/stage/chunk-ZTRZIET2.js +1 -0
  645. package/dist/stage/index.html +1 -0
  646. package/dist/stage/stage.css +1 -1
  647. package/dist/stage/stage.js +1 -4383
  648. package/dist/ui/dev/dev-page.d.ts +1 -0
  649. package/dist/ui/dev/dev-page.js +2021 -0
  650. package/dist/ui/dev/dev-theme.d.ts +6 -0
  651. package/dist/ui/dev/dev-theme.js +67 -0
  652. package/dist/ui/dev/voice-gallery-page.d.ts +1 -0
  653. package/dist/ui/dev/voice-gallery-page.js +121 -0
  654. package/dist/ui/dev/voice-scenes.d.ts +21 -0
  655. package/dist/ui/dev/voice-scenes.js +30 -0
  656. package/dist/ui/dictation/en-box.d.ts +2 -0
  657. package/dist/ui/dictation/en-box.js +86 -0
  658. package/dist/ui/dictation/en-page.d.ts +1 -0
  659. package/dist/ui/dictation/en-page.js +484 -0
  660. package/dist/ui/dictation/page.d.ts +1 -0
  661. package/dist/ui/dictation/page.js +1084 -0
  662. package/dist/ui/dictation/parent-page.d.ts +1 -0
  663. package/dist/ui/dictation/parent-page.js +234 -0
  664. package/dist/ui/dictation/reel-mode.d.ts +1 -0
  665. package/dist/ui/dictation/reel-mode.js +87 -0
  666. package/dist/ui/dictation/reel-page.d.ts +1 -0
  667. package/dist/ui/dictation/reel-page.js +62 -0
  668. package/dist/ui/dictation/reel.d.ts +163 -0
  669. package/dist/ui/dictation/reel.js +436 -0
  670. package/dist/ui/dictation/ui.d.ts +44 -0
  671. package/dist/ui/dictation/ui.js +80 -0
  672. package/dist/ui/dictation/unlock.d.ts +7 -0
  673. package/dist/ui/dictation/unlock.js +16 -0
  674. package/dist/ui/kid/audio-client.d.ts +11 -0
  675. package/dist/ui/kid/audio-client.js +74 -0
  676. package/dist/ui/kid/board-mark-art.d.ts +37 -0
  677. package/dist/ui/kid/board-mark-art.js +5 -0
  678. package/dist/ui/kid/board-mark.d.ts +24 -0
  679. package/dist/ui/kid/board-mark.js +58 -0
  680. package/dist/ui/kid/home-tiles.d.ts +14 -0
  681. package/dist/ui/kid/home-tiles.js +44 -0
  682. package/dist/ui/kid/kid-log.d.ts +15 -0
  683. package/dist/ui/kid/kid-log.js +87 -0
  684. package/dist/ui/kid/kid-nav.d.ts +11 -0
  685. package/dist/ui/kid/kid-nav.js +22 -0
  686. package/dist/ui/kid/kid-page.d.ts +9 -0
  687. package/dist/ui/kid/kid-page.js +3684 -0
  688. package/dist/ui/kid/letters.d.ts +26 -0
  689. package/dist/ui/kid/letters.js +51 -0
  690. package/dist/ui/kid/photo-edit.d.ts +83 -0
  691. package/dist/ui/kid/photo-edit.js +106 -0
  692. package/dist/ui/kid/photo-ui.d.ts +23 -0
  693. package/dist/ui/kid/photo-ui.js +60 -0
  694. package/dist/ui/kid/reel.d.ts +419 -0
  695. package/dist/ui/kid/reel.js +648 -0
  696. package/dist/ui/kid/tianzige.d.ts +8 -0
  697. package/dist/ui/kid/tianzige.js +45 -0
  698. package/dist/ui/kid/tutor-face.d.ts +35 -0
  699. package/dist/ui/kid/tutor-face.js +84 -0
  700. package/dist/ui/kid/voice-ui.d.ts +70 -0
  701. package/dist/ui/kid/voice-ui.js +316 -0
  702. package/dist/ui/kid/voice-view.d.ts +71 -0
  703. package/dist/ui/kid/voice-view.js +75 -0
  704. package/dist/ui/kid/word-draw.d.ts +2 -0
  705. package/dist/ui/kid/word-draw.js +107 -0
  706. package/dist/ui/kid/word-emoji.d.ts +10 -0
  707. package/dist/ui/kid/word-emoji.js +68 -0
  708. package/dist/ui/kid/word-layout.d.ts +25 -0
  709. package/dist/ui/kid/word-layout.js +29 -0
  710. package/dist/ui/parent/parent-home-page.d.ts +1 -0
  711. package/dist/ui/parent/parent-home-page.js +722 -0
  712. package/dist/ui/parent/parent-page.d.ts +2 -0
  713. package/dist/ui/parent/parent-page.js +511 -0
  714. package/dist/ui/parent/parent-settings-page.d.ts +1 -0
  715. package/dist/ui/parent/parent-settings-page.js +133 -0
  716. package/dist/ui/parent/qr-page.d.ts +8 -0
  717. package/dist/ui/parent/qr-page.js +66 -0
  718. package/dist/ui/shared/brand.d.ts +38 -0
  719. package/dist/ui/shared/brand.js +53 -0
  720. package/dist/ui/shared/favicon.d.ts +12 -0
  721. package/dist/ui/shared/favicon.js +96 -0
  722. package/dist/ui/shared/icon.d.ts +9 -0
  723. package/dist/ui/shared/icon.js +35 -0
  724. package/dist/ui/shared/inline-lib.d.ts +1 -0
  725. package/dist/ui/shared/inline-lib.js +28 -0
  726. package/dist/ui/shared/logo.d.ts +31 -0
  727. package/dist/ui/shared/logo.js +43 -0
  728. package/dist/ui/shared/page-dom.d.ts +12 -0
  729. package/dist/ui/shared/page-dom.js +36 -0
  730. package/dist/ui/shared/png.d.ts +1 -0
  731. package/dist/ui/shared/png.js +45 -0
  732. package/dist/ui/shared/qr-svg.d.ts +3 -0
  733. package/dist/ui/shared/qr-svg.js +32 -0
  734. package/dist/ui/shared/qr.d.ts +14 -0
  735. package/dist/ui/shared/qr.js +281 -0
  736. package/dist/ui/shared/reel-dock.d.ts +22 -0
  737. package/dist/ui/shared/reel-dock.js +365 -0
  738. package/dist/ui/shared/tutor-color.d.ts +15 -0
  739. package/dist/ui/shared/tutor-color.js +47 -0
  740. package/dist/ui/talk/page.d.ts +6 -0
  741. package/dist/ui/talk/page.js +294 -0
  742. package/grades/grade-2/README.md +11 -0
  743. package/grades/grade-2/VALIDATION.md +41 -0
  744. package/grades/grade-2/agents/chinese-tutor/activities//344/275/240/350/257/264/346/210/221/347/224/273.md +157 -0
  745. package/grades/grade-2/agents/chinese-tutor/activities//344/275/240/350/257/264/346/210/221/347/224/273./344/276/213/345/255/220.md +78 -0
  746. package/grades/grade-2/agents/chinese-tutor/activities//344/276/213/345/255/220/345/233/276//345/200/237/344/274/236.jpg +0 -0
  747. package/grades/grade-2/agents/chinese-tutor/activities//344/276/213/345/255/220/345/233/276//345/260/217/347/214/264/346/221/230/346/241/203.jpg +0 -0
  748. package/grades/grade-2/agents/chinese-tutor/activities//345/206/231/350/257/235.md +64 -0
  749. package/grades/grade-2/agents/chinese-tutor/activities//345/206/231/350/257/235./344/276/213/345/255/220.md +31 -0
  750. package/grades/grade-2/agents/chinese-tutor/activities//345/220/254/345/206/231.md +48 -0
  751. package/grades/grade-2/agents/chinese-tutor/activities//345/244/215/344/271/240.md +79 -0
  752. package/grades/grade-2/agents/chinese-tutor/activities//345/244/215/344/271/240./344/276/213/345/255/220.md +35 -0
  753. package/grades/grade-2/agents/chinese-tutor/activities//345/260/217/350/257/276/345/240/202.md +53 -0
  754. package/grades/grade-2/agents/chinese-tutor/activities//346/243/200/346/237/245/344/275/234/344/270/232.md +81 -0
  755. package/grades/grade-2/agents/chinese-tutor/activities//346/243/200/346/237/245/344/275/234/344/270/232./344/276/213/345/255/220.md +35 -0
  756. package/grades/grade-2/agents/chinese-tutor/activities//347/234/213/345/233/276/350/257/264/350/257/235.md +94 -0
  757. package/grades/grade-2/agents/chinese-tutor/activities//347/234/213/345/233/276/350/257/264/350/257/235./344/276/213/345/255/220.md +63 -0
  758. package/grades/grade-2/agents/chinese-tutor/activities//351/242/204/344/271/240.md +82 -0
  759. package/grades/grade-2/agents/chinese-tutor/activities//351/242/204/344/271/240./344/276/213/345/255/220.md +35 -0
  760. package/grades/grade-2/agents/chinese-tutor.md +59 -0
  761. package/grades/grade-2/agents/english-tutor/activities//345/217/243/350/257/255/350/257/276.md +149 -0
  762. package/grades/grade-2/agents/english-tutor/activities//345/217/243/350/257/255/350/257/276./344/276/213/345/255/220.md +13 -0
  763. package/grades/grade-2/agents/english-tutor/activities//345/220/254/345/206/231.md +47 -0
  764. package/grades/grade-2/agents/english-tutor/activities//345/244/215/344/271/240.md +78 -0
  765. package/grades/grade-2/agents/english-tutor/activities//345/244/215/344/271/240./344/276/213/345/255/220.md +35 -0
  766. package/grades/grade-2/agents/english-tutor/activities//345/260/217/350/257/276/345/240/202.md +53 -0
  767. package/grades/grade-2/agents/english-tutor/activities//346/243/200/346/237/245/344/275/234/344/270/232.md +80 -0
  768. package/grades/grade-2/agents/english-tutor/activities//346/243/200/346/237/245/344/275/234/344/270/232./344/276/213/345/255/220.md +35 -0
  769. package/grades/grade-2/agents/english-tutor/activities//351/242/204/344/271/240.md +86 -0
  770. package/grades/grade-2/agents/english-tutor/activities//351/242/204/344/271/240./344/276/213/345/255/220.md +35 -0
  771. package/grades/grade-2/agents/english-tutor.md +57 -0
  772. package/grades/grade-2/agents/math-tutor/activities//345/244/215/344/271/240.md +78 -0
  773. package/grades/grade-2/agents/math-tutor/activities//345/244/215/344/271/240./344/276/213/345/255/220.md +35 -0
  774. package/grades/grade-2/agents/math-tutor/activities//345/260/217/350/257/276/345/240/202.md +56 -0
  775. package/grades/grade-2/agents/math-tutor/activities//345/260/217/350/257/276/345/240/202./344/276/213/345/255/220.md +52 -0
  776. package/grades/grade-2/agents/math-tutor/activities//346/243/200/346/237/245/344/275/234/344/270/232.md +80 -0
  777. package/grades/grade-2/agents/math-tutor/activities//346/243/200/346/237/245/344/275/234/344/270/232./344/276/213/345/255/220.md +35 -0
  778. package/grades/grade-2/agents/math-tutor/activities//351/242/204/344/271/240.md +81 -0
  779. package/grades/grade-2/agents/math-tutor/activities//351/242/204/344/271/240./344/276/213/345/255/220.md +35 -0
  780. package/grades/grade-2/agents/math-tutor.md +51 -0
  781. package/grades/grade-2/examples/2026-10-27-pingjunfen/audio/index.json +44 -0
  782. package/grades/grade-2/examples/2026-10-27-pingjunfen/audio/step-1.mp3 +0 -0
  783. package/grades/grade-2/examples/2026-10-27-pingjunfen/audio/step-2.mp3 +0 -0
  784. package/grades/grade-2/examples/2026-10-27-pingjunfen/audio/step-3.mp3 +0 -0
  785. package/grades/grade-2/examples/2026-10-27-pingjunfen/audio/step-4.mp3 +0 -0
  786. package/grades/grade-2/examples/2026-10-27-pingjunfen/audio/step-5.mp3 +0 -0
  787. package/grades/grade-2/examples/2026-10-27-pingjunfen/bake.json +1 -0
  788. package/grades/grade-2/examples/2026-10-27-pingjunfen/manifest.json +63 -0
  789. package/grades/grade-2/examples/2026-10-27-pingjunfen/scene.json +247 -0
  790. package/grades/grade-2/examples/2026-10-27-pingjunfen.md +40 -0
  791. package/grades/grade-2/examples/2026-10-27-pingjunfen.ts +26 -0
  792. package/grades/grade-2/examples//345/271/263/345/235/207/345/210/206./344/276/213/345/255/220.md +24 -0
  793. package/grades/grade-2/examples//346/225/260/345/255/246/345/271/263/345/235/207/345/210/206.md +42 -0
  794. package/grades/grade-2/validation/2026-10-27.json +4410 -0
  795. package/package.json +27 -15
  796. package/skills/chalk-cli/SKILL.md +62 -0
  797. package/skills/chalk-scene/SKILL.md +91 -0
  798. package/skills/chalk-teaching/SKILL.md +82 -0
  799. package/skills/chalk-teaching/models//344/272/244/351/224/231/346/225/260/345/210/227/345/210/206/350/241/214.md +8 -0
  800. package/skills/chalk-teaching/models//345/207/221/345/215/201.md +7 -0
  801. package/skills/chalk-teaching/models//345/221/250/346/234/237/350/247/204/345/276/213.md +6 -0
  802. package/skills/chalk-teaching/models//345/256/236/347/211/251/345/233/276-/345/242/236/345/207/217.md +6 -0
  803. package/skills/chalk-teaching/models//345/256/236/347/211/251/345/233/276-/346/257/224/345/244/232/345/260/221-/346/261/202/345/244/247/346/225/260/346/261/202/345/260/217/346/225/260.md +7 -0
  804. package/skills/chalk-teaching/models//345/256/236/347/211/251/345/233/276-/346/257/224/345/244/232/345/260/221-/346/261/202/345/267/256.md +6 -0
  805. package/skills/chalk-teaching/models//345/260/217/346/243/222/350/277/233/344/275/215/345/212/240.md +7 -0
  806. package/skills/chalk-teaching/models//345/260/217/346/243/222/351/200/200/344/275/215/345/207/217.md +6 -0
  807. package/skills/chalk-teaching/models//346/216/222/351/230/237/347/202/271/351/230/265.md +7 -0
  808. package/skills/chalk-teaching/models//346/227/266/351/227/264/346/225/260/350/275/264.md +6 -0
  809. package/skills/chalk-teaching/models//346/245/274/345/261/202/351/227/264/351/232/224/345/233/276.md +7 -0
  810. package/skills/chalk-teaching/models//347/240/264/345/215/201.md +7 -0
  811. package/skills/chalk-teaching/models//347/253/226/345/274/217/351/200/200/344/275/215.md +6 -0
  812. package/skills/chalk-teaching/models//347/272/277/346/256/265/345/233/276.md +7 -0
  813. package/skills/chalk-teaching/models-index.md +24 -0
  814. package/skills/chalk-teaching/references//350/256/262/350/247/243/346/250/241/346/235/277/344/270/211/346/241/243.md +32 -0
  815. package/skills/chalk-teaching/references//350/257/264/346/230/216/346/226/207/344/273/266.md +102 -0
  816. package/skills/chalk-verify/SKILL.md +57 -0
  817. package/skills/chalk-verify/references//350/257/204/345/210/244/346/240/207/345/207/206.md +69 -0
  818. package/skills/cotutor-analyze/SKILL.md +106 -0
  819. package/skills/cotutor-analyze/references//345/221/275/344/273/244/344/270/216/346/226/207/344/273/266.md +31 -0
  820. package/skills/cotutor-board/SKILL.md +373 -0
  821. package/skills/cotutor-board/references/README.md +38 -0
  822. package/skills/cotutor-board/references/canvas.md +68 -0
  823. package/skills/cotutor-board/references/choice.md +55 -0
  824. package/skills/cotutor-board/references/code.md +46 -0
  825. package/skills/cotutor-board/references/image.md +52 -0
  826. package/skills/cotutor-board/references/lecture.md +69 -0
  827. package/skills/cotutor-board/references/paint.md +77 -0
  828. package/skills/cotutor-board/references/photo.md +61 -0
  829. package/skills/cotutor-board/references/read.md +51 -0
  830. package/skills/cotutor-board/references/text.md +69 -0
  831. package/skills/cotutor-board/references/tianzige.md +78 -0
  832. package/skills/cotutor-board/references/word.md +91 -0
  833. package/skills/cotutor-home/SKILL.md +170 -0
  834. package/skills/cotutor-home/references/dictation.md +97 -0
  835. package/skills/cotutor-home/references/tutor.md +149 -0
  836. package/skills/cotutor-home/references//345/221/275/344/273/244.md +21 -0
  837. package/skills/cotutor-home/references//351/246/226/351/241/265/350/257/255/346/263/225.md +143 -0
  838. package/skills/cotutor-tune/SKILL.md +147 -0
  839. package/skills/cotutor-tune/references//345/255/227/346/256/265.md +53 -0
  840. package/skills/cotutor-tutor/SKILL.md +253 -0
  841. package/skills/cotutor-tutor/references//344/270/212/344/270/213/346/226/207/345/214/205.md +78 -0
  842. package/themes/default/kid.css +86 -0
  843. package/themes/default/theme.json +26 -0
  844. package/agents/chinese-tutor.md +0 -67
  845. package/agents/homework-tutor.md +0 -17
  846. package/agents/math-tutor.md +0 -68
  847. package/agents/planner.md +0 -18
  848. package/agents/reading-tutor.md +0 -65
  849. package/agents/scene-maker.md +0 -41
  850. package/dist/cards/canvas.d.ts +0 -22
  851. package/dist/cards/canvas.js +0 -65
  852. package/dist/cards/fill.d.ts +0 -14
  853. package/dist/cards/fill.js +0 -64
  854. package/dist/cards/index.d.ts +0 -48
  855. package/dist/cards/index.js +0 -115
  856. package/dist/cards/kind.js +0 -7
  857. package/dist/cards/scene.d.ts +0 -24
  858. package/dist/cards/scene.js +0 -67
  859. package/dist/cards/text.d.ts +0 -18
  860. package/dist/cards/text.js +0 -41
  861. package/dist/cli/cert.d.ts +0 -7
  862. package/dist/cli/cert.js +0 -36
  863. package/dist/cli/doctor.d.ts +0 -22
  864. package/dist/cli/doctor.js +0 -355
  865. package/dist/cli/init.js +0 -116
  866. package/dist/cli/main.js +0 -243
  867. package/dist/cli/serve.d.ts +0 -30
  868. package/dist/cli/serve.js +0 -56
  869. package/dist/cli/skeleton.d.ts +0 -39
  870. package/dist/cli/skeleton.js +0 -184
  871. package/dist/cli/skills.d.ts +0 -40
  872. package/dist/cli/skills.js +0 -170
  873. package/dist/cli/workspace.d.ts +0 -69
  874. package/dist/lib/agent-file.d.ts +0 -10
  875. package/dist/lib/agent-file.js +0 -16
  876. package/dist/lib/board.d.ts +0 -15
  877. package/dist/lib/board.js +0 -107
  878. package/dist/lib/context-pack.js +0 -55
  879. package/dist/lib/conversation.js +0 -88
  880. package/dist/lib/kid-board.d.ts +0 -148
  881. package/dist/lib/kid-board.js +0 -294
  882. package/dist/lib/kid-view.d.ts +0 -63
  883. package/dist/lib/kid-view.js +0 -93
  884. package/dist/lib/ledger.d.ts +0 -29
  885. package/dist/lib/run-plan.d.ts +0 -30
  886. package/dist/lib/run-plan.js +0 -32
  887. package/dist/lib/sections.d.ts +0 -12
  888. package/dist/lib/sections.js +0 -151
  889. package/dist/lib/stream.d.ts +0 -15
  890. package/dist/lib/stream.js +0 -69
  891. package/dist/lib/transcript.d.ts +0 -36
  892. package/dist/lib/transcript.js +0 -95
  893. package/dist/server/app.d.ts +0 -74
  894. package/dist/server/app.js +0 -406
  895. package/dist/server/kid-page.d.ts +0 -1
  896. package/dist/server/kid-page.js +0 -768
  897. package/dist/server/mock.js +0 -403
  898. package/dist/server/parent-page.d.ts +0 -8
  899. package/dist/server/parent-page.js +0 -393
  900. package/dist/server/runner.d.ts +0 -64
  901. package/dist/server/runner.js +0 -277
  902. package/dist/server/scene-props.d.ts +0 -16
  903. package/dist/server/scene-props.js +0 -39
  904. package/dist/server/store.d.ts +0 -43
  905. package/dist/server/store.js +0 -210
  906. package/dist/server/tts.d.ts +0 -51
  907. package/dist/server/tts.js +0 -99
  908. /package/dist/{cli → app/cli}/main.d.ts +0 -0
  909. /package/dist/{cards → board/cards}/choice.d.ts +0 -0
  910. /package/dist/{cards → board/cards}/code.d.ts +0 -0
  911. /package/dist/{cards → board/cards}/image.d.ts +0 -0
  912. /package/dist/{cards → board/cards}/read.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"schema":"drawtell-bake","version":2,"viewBox":[0,0,628,350.5],"offset":[-31,-6],"fonts":"\n @font-face { font-family: Xiaolai; src: url(data:font/woff2;base64,d09GMgABAAAAAASMABEAAAAADMAAAAQ0AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhYbHhweBmAANAgKCY4uERAKgkyCJQsGAAE2AiQDCAQgBYJeByAMFBtmC8iuA+yG/HuoqKLEwDEwmJDa7ty2Qq/W3upBEzxQXu+bTHY/oOQLqpjaRzqFlfaUUjfhJJ3hHRinM6KdaIW6dCk/VKXy7KjMwZvbevcCBlYIgWQRZBYPxL17fzUBu2hM7LzzOZTbYGNbwImUpeTsTaKY6q5WRvsfzr/w/3+vfsz9LxMDNrYFMC/n3yzRiOyFYy6gCZIQRsNpa9XaxCpXvN+lg+4mBevvV4IAvAEAASgIBALwJFo00djcsScIVAAXABh4LOX9YA8BCgogpiQK2x4gZhThRAoXsHPnmzquWvpgWTrTTvAUVwByCnsVCHD3/wHFofwH0DgABZBAMImAchUNVIFo9En9Y7nz99AAHAR7P/ILyOza8F37nhFi1fpWuHbLUTwHjxw8KMsGZmpa09hGSwzJskGZNjBdz7LBMrVmSyY1d++bYGimZrY1TK1ZGzN0hKUmYU/rq0aahkKzOFdjNYtrpVu12Shnp2kY5Vk2+BZEXTINZrM2bjEZ5yGT/2S3EJkd4DvI5K59u/W15jZSrFqHEaXrWpN1NbKyrjoKumFk2ZCX9CTFWWPDrwtUhkwncXqDSA/mIYWsaVbSCTpc2RllJhjWVVtARbU5m9nzMqnJFnNH7bW5JT0KvSRBT9CNKN1ozLJhMjv06NvUKGS6EWE/1zm0iKY44Alne4FBi3iJgwwKK0tUQS2Fpbl/i/emNYROGWASw/YWg7bxDgcXPNblqw/oABFSEcQksn3CoFN8xiGHgs35WgK6QtRUAy1pbN8x6B4/cBhhYke+zsB8eUdA4o5COOECDIACgAo4gXEALAOAJvCWznCVGhOgbs3kSYdiB+1O2ey1fP6IVi8/yFs4S9zQuzxpYJ/kTSLq2b9sf1HSVm7luSfBE/bW8/IvdX+cynHT0N7bj3sNPRjxJCPdUJ2M3C3mLWq9+if7X+8Su/MbsTRk43/has+BV+kghWrUMWDtRXGoHfB74GxT8QaE6PDfJ7+VeOiPJ5mS0knefzwCrn+UbQtf38mRu9ir7mh42r7wxP6Le4hLH9iHR8LndUymJ7d0Hz3WKToeJ7/Wm8DTYnSU26w+J/yeLdrtPyIrRSkOFcCvm2KHzptSTQrtWig7VamB7uKgsET53pE+xZQAIAAZnTZ379Izg/GGbwi0/AQ8PxcAvMVb54oI8oNNAeCOssD/50mr3wak/xIEuD7UR37SY31F+aqGiUjkS7/7yI1+wAjVA0j3stAKgt3WKvhiayXZzH11WOtgKlLEab4P+uqqGhuo6oqzS2mamesaG2EqkC1PngqNmuqahmqwy1Qok+Xz5QZuGGue3l2wm8FINYNxnilvg0RukM9X3IhoyW2FsgzTtbhEjMnP0/FId5hvW048OVvm4cqxia1xV1vHYv/oRe9qOspwSwPjunJFqWID6paEEHRgsyAD); }\n @font-face { font-family: Xiaolai; src: url(data:font/woff2;base64,d09GMgABAAAAAASMABEAAAAADPAAAAQ0AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhYbHhweBmAANAgKCY4uERAKgnyCUgsGAAE2AiQDCAQgBYJeByAMFBuTC8geg23z+Oj9MVmyZMqRhEnigW+t/Zk58XSY5N1FQ6Z5FA2RJPY6ZELR0DfF62go5P35vOz9UanB4qcg06kcrFtPQaRc4gZmnRV0k0+aYdtIq3o6HU+u1vTl71/IRjhg43KZ3/kYH2MAL4ASkIRK2grTKFlbTSAcy6oqUeGrZH9Ur9Jg5d+8gB7XX+SjoPV0zP4maEOdmgu6alBpYeDqlO6EGaBEEeEi0ZXwBN2ZGGSQggvg0rKxtZ9AQ/TlEzwhrtXWgugeMHMuQZtfPwaxLvqPxS39hKWADXEscK3EItT40LgcabUw9+gyNKBu6H3LEkCxKYCyx+xDaIoVkHZIgG/uKCjS2SIPAWCBcbyG5NESDwFQIQDMCA8BcIHVvNhBnc3YsZjDXFIRh9W4LL+Ilzhgb+uLijnWC/Pw72swD2yf4KNZlbNTzLKhHgKQLYhkiWOxGpcvJuVe8pb/lgSgRQrmxY6ZTBbD95IqPppkVQSB4/kzmQx/hlQRLOshAHdJb1Ls0sivC3yGy0hc2IDlMC8psBxXSdsRcIXjVJwdax0VEFBldE6A2fNih3gB9Wa213rtCBW6nR1hR7AqgiU9BBCLlBwmnlQR1Gvz0nEBhM9VCpQMCpGlVzm0htdFGGAKhtrioylw1vu/4L1pG+FQLnjEld7n0AE+FBFBLERyTQCdIjIqh4Lk0pccusLXIhpohUauHaB7xECNMJFR+plDL/hVxAa7sMn1AI7nGwJIWqJJqNJKIIIaWngAXoAm+OzWpEQiCTWSGLe1O65Cqq2XDag+p60m48A+LjqshOCZoqlcfSo3z4jWzyvUf5StQn2q1QYOdMGGB7kr9KdPnab1DyOkt/Oo9QZW9GMnp1lzb3dckWew+P721IMtBaus1yG7zQYOa/PkK2iqAOin0FU4O57U/0OCTHN9MvVDJuT9J+/O1dtC+PSTcluzPUvzU9bJl/15pfW6epG47bGobUiq16AvblOL24wetmMcvcfNpINH5bul7YPS7jl0UMx1pct6m+XR9vVNg46yZVfNu5F0zaK5W9Yjz5iqu+1/RfZ4wghtorj18mXvzdKQdGuXUdp3Yb9cRrq6HEZZy5+cfItq2yW1V3TkT07ZLN9ubuFyQrFs+3/rddOsy4Gk/OWLTcJ/twzE7wCjty/2AHzmDsu0X1qX2t9UB6AlLgj8j9K1/wHN/0/nBa4f9aU/Uawf40dOmITEugy4VzUdEgs1PSDzrDAHQ5fM0UBpTpZx+7Vhc901c9YwXwf2aeSrUSmfRo44lGL1GmjUqIb58eTDRxhSsULFqhTALubPneV9eQceGFNP7zaKUw9ZfgY1ecxng4R3kPcV2GA4uZg/DwU0Gi8Rw/xsoZxlw3yppomn1i/zcn2NWm32GqXKNO5vv+ilWCpGApqY666q5a1SGnIJGTggZUEO); }\n @font-face { font-family: Xiaolai; src: url(data:font/woff2;base64,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); }\n @font-face { font-family: Xiaolai; src: url(data:font/woff2;base64,d09GMgABAAAAAAP4ABEAAAAADCgAAAOgAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhYbHhweBmAANAgKCY4uERAKgTSBNQsGAAE2AiQDCAQgBYJeByAMFBv2CsgeB+WmM8EjSdbGVT58Xvl+ftbMHn4Wzpozs9RkpXYKIrVOQurf+qQbiFtvyODN/d67gIEVQjzQn/qyxBIcCyw6Oib1vhU0V9RWIIgFKde+X9OTt2Eb4YCNy8/cm4vxMQqYXKKIfApCVcna6AKPB5S1mozsDdNLGMy/bwkIwBUAAAQgIAgCcBYiBJks1c1wJAJgGAAwcjZN7kbrQUEgAMia6jbckeOIENmDRh7g4mihOpS1oehVRh+VTjAmAHTF+l6R7HvzBBAy4T+AsQMIAArwRZFUK2IQedKftDMMlltzaWwI2PHFX3IDiD9xyHfrKULWqpwYSzme4iJk9NmtcMCBMbPNpJNehQMNHLCTFQ48MItOIyyN1jCVaUyrGNSYhY3sG9TFCOzpfNCQpiYyHW+wMR1fkPUiVXJXhlQ1R+Ege8jFKU1lFjZqtXyUh7zmP4WDDlVMp5H11garvsAk6UUmVZJlZtZv1Fv1GyZJVlWFg93Skzbm2gLvCy7DOhLnd4g0MQ+pq5pWS4fJcEbTJC1MtU/kBFRZlONYPE4jzJwsqO/uLgiTJZQOk8V1VUlWTQqHMFQ1Wc0mSZZVhUP8Xee8kmckyHJJfIUjq3RNgA5DpqtNvoiBswX/C9/NWgSbceDKHfE9juzTAwEhIlko1RiwCSFlMuTyTPyCI5f0SkCNRlZLtQVsR+iZAaN8EH/iyDN9EbBik61S3YHj8YoAKEeCQORvgAIAAQCIAALIBdRAG3gMMo51jtxJOvofPqzf7KxFbiXS0bYndGHrPpeIPY/Q95C2ZX9fW7kF/sd53ILmdy6r/Lbgf7ggcPOTJvvssyFufnscHKryLyovvR3atcBFqRENpu2t1aLZHJf9kw6kFQgOhzbeCYx5TvuT9tLsVQH7a4Ld7SyudTl288K7/QKjPD8WX7pj0nwOzWOuRi7b0OOR98fRhX4F4On7dzgAfOgjNhofjRjxL50IwJEAAAiYIGWIvxHN/5++PUJeAA9AvwaYXoh/iEpgDp+iEACdg3Z0K3UCEOt5aSZ83TQL3HEzlUDbFcfNdmbwjthbnwdY2fQZb4w+Nk1KtRoyyWQ2443DpEqQLFkukyEDhozVD/cxaeIxKZLCWi7L/OUpSk0ypA9jfI1J3iGRhGspMloRlp4ujaKfzZRbxBg/Xg6PNMLaCFNnHjlpnYfrx5tgpr3NCCNN2T18071MNasybSjPnTEBSdocfS+RwoaYBXE=); }\n @font-face { font-family: Xiaolai; src: url(data:font/woff2;base64,d09GMgABAAAAAAR8ABEAAAAADLgAAAQiAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhYbHhweBmAANAgKCY4uERAKgkSCKQsGAAE2AiQDCAQgBYJeByAMFBtqC8ieA27LfLjWEYpOJ9SJkAr3868oyufLq36lMmb6zVYGZGOIrpEWdBZW1tn1iSfIx70NBs65yHxEWCQm0MEOdj4dPMo4Cvw88Byzv+rnHc9nozzami5JT88GeAWUQKVleP0P51/Yr1/Tk3n3gzLCARuXn7kNGRtjADdYBoUsFArTKlnXqULQBKpTpSt9b9DdpGD9LQYBYA93IQEggFAnYAvdX0L0k9JaWEMEgEEAA2dT+jCwAwoIEACQcYlDQy1gPU8glqDEBWKsMbv0YGpA7t6ebaLj/gN6DWvPRbLnwwsgWAgDgG2ZJUwDdscVwu0iGMTFBGiYDoKtj29Dk4AF3L1f+QIg8kQDU3k4S8hqrpHBvQCD4hUwoG2nURrASMYMw/UqaR9qgCI1gOFylAY4khlVGmSsNgdwpjClqFthRjaso1sVg5J064N6FB7DVCwOw5mK5UFWc7nkrOvhPD1KA7KFEJconBnZiMViRJpw/4j3QiNLmEqDK81VZnXeQFJz9VySZWZQb08P6u1BXuY8SgN2yXTSP3u493WBN2PhpEpswDUsTfq4olSaAmS4bLu1lQBe3VMjoKbcVg2zF9Igg0bmVbaPzAuQJXSZADlA5pLM9VEayMiSGrNBX7HJnKnPTQzCREg0GEFHn1XIHJ3XIEBUBYtkyJUQbt7/wnvLMkGRVGhCjb6ukA26qcGCrVp6dYDsEjzJRyD86IcKOUKPaoghrsb0mgBykpCS0siIdPSzCjlHz2sooKgW9FoCoeVhANS+mwBvZJAQAEAAAIgBRmI1UBeTS4c6BjtNT16q3kykLXaHwl789udPl0fb4GrXi789PyJoEzabrhXYfL8336uOpvkSTbMDjff7+RORTrxo7mqT8SMvaHDPyMqyZ/RWidWli77vV/cPEttyXfXnHuPnVVssi7vuvf6KvirXZW20znJ9vJ3LKP+SN/pI8dbVBZ52qv8yuqfdrOzLdjY6vyFudzNjtzrXipCv7RsXi0XT9c2+RTs9N5hHJP7DB70NHyc5Q+DPVSR/pJMdInfoo8K2u5LWJUlTvBc0Jc0nb6+D0F1eG7hur9+z4614j856IFer424kG+7/o56P6sIWD1TsaXPK/G9N058A4OX+HwPgS7a5fvCrMLEvtIb3zS/I/XuaxP8D1v/dLQA3iyZAfxqwCUH4I4kFqcXLnHuWFRpRENEGQLjXhZfA3R2vAEdoXopoykZx2GuBaVzZ0nwfYDZch7FG6TBcjQL1ekww0XBjjcEkiBYnTga9Hl16jNYJx5hEkaw3XmyQghXj9LFJCkyA3JFhbC8Tt0EtNuiNl9xgluwvUZROw026RIXxnaVzroa9Q02euO2EZWnuHGuc6cHDDTXMpI3HLnooU8rMpAGFm2wwsYY0qX4ADwqoFiACAAA=); }\n @font-face { font-family: Xiaolai; src: url(data:font/woff2;base64,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); }\n @font-face { font-family: Excalifont; src: url(data:font/woff2;base64,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); }","defs":"","elements":[{"id":"title","node":{"tag":"g","attrs":{"transform":"translate(24 24) rotate(0 165.171875 16.25)"},"children":[{"tag":"text","attrs":{"x":"0","y":"22.906","font-family":"Excalifont, Xiaolai, Segoe UI Emoji","font-size":"26px","fill":"#1e1e1e","text-anchor":"start","style":"white-space: pre;","direction":"ltr","dominant-baseline":"alphabetic"},"text":"6 个圆片,平均放进 3 个盘子"}]},"reveal":{"width":330.3,"height":32.5},"track":[[24,41.9,0],[29.9,41.9,0.017857142857142856],[35.8,41.9,0.03571428571428571],[41.7,41.9,0.05357142857142857],[47.6,41.9,0.07142857142857142],[53.5,41.9,0.08928571428571429],[59.4,41.9,0.10714285714285714],[65.3,41.9,0.125],[71.2,41.9,0.14285714285714285],[77.1,41.9,0.16071428571428573],[83,41.9,0.17857142857142858],[88.9,41.9,0.19642857142857142],[94.8,41.9,0.21428571428571427],[100.7,41.9,0.23214285714285715],[106.6,41.9,0.25],[112.5,41.9,0.26785714285714285],[118.4,41.9,0.2857142857142857],[124.3,41.9,0.30357142857142855],[130.2,41.9,0.32142857142857145],[136.1,41.9,0.3392857142857143],[142,41.9,0.35714285714285715],[147.9,41.9,0.375],[153.8,41.9,0.39285714285714285],[159.7,41.9,0.4107142857142857],[165.6,41.9,0.42857142857142855],[171.5,41.9,0.44642857142857145],[177.4,41.9,0.4642857142857143],[183.3,41.9,0.48214285714285715],[189.2,41.9,0.5],[195.1,41.9,0.5178571428571429],[201,41.9,0.5357142857142857],[206.9,41.9,0.5535714285714286],[212.8,41.9,0.5714285714285714],[218.7,41.9,0.5892857142857143],[224.6,41.9,0.6071428571428571],[230.5,41.9,0.625],[236.4,41.9,0.6428571428571429],[242.3,41.9,0.6607142857142857],[248.2,41.9,0.6785714285714286],[254.1,41.9,0.6964285714285714],[260,41.9,0.7142857142857143],[265.9,41.9,0.7321428571428571],[271.8,41.9,0.75],[277.7,41.9,0.7678571428571429],[283.6,41.9,0.7857142857142857],[289.5,41.9,0.8035714285714286],[295.4,41.9,0.8214285714285714],[301.3,41.9,0.8392857142857143],[307.2,41.9,0.8571428571428571],[313.1,41.9,0.875],[318.9,41.9,0.8928571428571429],[324.8,41.9,0.9107142857142857],[330.7,41.9,0.9285714285714286],[336.6,41.9,0.9464285714285714],[342.5,41.9,0.9642857142857143],[348.4,41.9,0.9821428571428571],[354.3,41.9,1]]},{"id":"plate-0","node":{"tag":"g","attrs":{"stroke-linecap":"round","transform":"translate(24 94) rotate(0 75 50)"},"children":[{"tag":"g","attrs":{},"children":[{"tag":"path","attrs":{"d":"M0 0 C35.59 0.34, 69.26 3.08, 150 0","stroke":"#1e1e1e","stroke-width":"2","fill":"none"},"len":150.03,"pass":0},{"tag":"path","attrs":{"d":"M0 0 C53.92 -0.78, 108.14 0.63, 150 0","stroke":"#1e1e1e","stroke-width":"2","fill":"none"},"len":150,"pass":0},{"tag":"path","attrs":{"d":"M150 0 C148.91 33.02, 149.78 65.81, 150 100","stroke":"#1e1e1e","stroke-width":"2","fill":"none"},"len":100.01,"pass":1},{"tag":"path","attrs":{"d":"M150 0 C149.01 24.52, 150.1 48.67, 150 100","stroke":"#1e1e1e","stroke-width":"2","fill":"none"},"len":100.01,"pass":1},{"tag":"path","attrs":{"d":"M150 100 C114.04 98.61, 80.49 100.64, 0 100","stroke":"#1e1e1e","stroke-width":"2","fill":"none"},"len":150.01,"pass":2},{"tag":"path","attrs":{"d":"M150 100 C114.5 99.28, 78.83 99.19, 0 100","stroke":"#1e1e1e","stroke-width":"2","fill":"none"},"len":150.01,"pass":2},{"tag":"path","attrs":{"d":"M0 100 C-2.41 74.14, -1.11 47.95, 0 0","stroke":"#1e1e1e","stroke-width":"2","fill":"none"},"len":100.06,"pass":3},{"tag":"path","attrs":{"d":"M0 100 C0.19 77.13, 0.81 55.64, 0 0","stroke":"#1e1e1e","stroke-width":"2","fill":"none"},"len":100,"pass":3}]}]},"track":[[24,94,0],[29.8,94.1,0.0115],[35.5,94.2,0.0231],[41.3,94.3,0.0346],[47.1,94.5,0.0462],[52.8,94.6,0.0577],[58.6,94.8,0.0692],[64.4,94.9,0.0808],[70.2,95.1,0.0923],[75.9,95.2,0.1038],[81.7,95.3,0.1154],[87.5,95.4,0.1269],[93.2,95.4,0.1385],[99,95.4,0.15],[104.8,95.4,0.1615],[110.5,95.4,0.1731],[116.3,95.4,0.1846],[122.1,95.3,0.1961],[127.9,95.3,0.2077],[133.6,95.2,0.2192],[139.4,95,0.2308],[145.2,94.9,0.2423],[150.9,94.8,0.2538],[156.7,94.6,0.2654],[162.5,94.4,0.2769],[168.2,94.2,0.2885],[174,94,0.3],[174,94,0.3],[173.8,99.9,0.3118],[173.7,105.8,0.3235],[173.6,111.6,0.3353],[173.5,117.5,0.347],[173.5,123.4,0.3588],[173.5,129.3,0.3706],[173.5,135.2,0.3823],[173.5,141.1,0.3941],[173.5,146.9,0.4059],[173.6,152.8,0.4176],[173.6,158.7,0.4294],[173.7,164.6,0.4412],[173.8,170.5,0.4529],[173.8,176.4,0.4647],[173.9,182.2,0.4764],[174,188.1,0.4882],[174,194,0.5],[174,194,0.5],[168.2,193.8,0.5115],[162.5,193.7,0.523],[156.7,193.6,0.5346],[150.9,193.5,0.5461],[145.2,193.5,0.5577],[139.4,193.5,0.5692],[133.6,193.5,0.5807],[127.8,193.6,0.5923],[122.1,193.7,0.6038],[116.3,193.7,0.6153],[110.5,193.8,0.6269],[104.8,193.8,0.6384],[99,193.9,0.6499],[93.2,194,0.6615],[87.5,194,0.673],[81.7,194,0.6846],[75.9,194.1,0.6961],[70.2,194.1,0.7076],[64.4,194.1,0.7192],[58.6,194.1,0.7307],[52.8,194.1,0.7422],[47.1,194.1,0.7538],[41.3,194.1,0.7653],[35.5,194.1,0.7769],[29.8,194,0.7884],[24,194,0.7999],[24,194,0.7999],[23.5,188.1,0.8117],[23.2,182.3,0.8235],[22.9,176.4,0.8352],[22.7,170.5,0.847],[22.7,164.6,0.8588],[22.6,158.7,0.8705],[22.7,152.8,0.8823],[22.7,147,0.8941],[22.9,141.1,0.9058],[23,135.2,0.9176],[23.1,129.3,0.9294],[23.3,123.4,0.9412],[23.4,117.5,0.9529],[23.6,111.6,0.9647],[23.7,105.8,0.9765],[23.9,99.9,0.9882],[24,94,1]]},{"id":"plate-1","node":{"tag":"g","attrs":{"stroke-linecap":"round","transform":"translate(239 94) rotate(0 75 50)"},"children":[{"tag":"g","attrs":{},"children":[{"tag":"path","attrs":{"d":"M0 0 C36.89 -0.85, 75 -0.8, 150 0","stroke":"#1e1e1e","stroke-width":"2","fill":"none"},"len":150.01,"pass":0},{"tag":"path","attrs":{"d":"M0 0 C56.97 -0.62, 112.9 -0.78, 150 0","stroke":"#1e1e1e","stroke-width":"2","fill":"none"},"len":150.01,"pass":0},{"tag":"path","attrs":{"d":"M150 0 C151.43 27.34, 152.15 52.94, 150 100","stroke":"#1e1e1e","stroke-width":"2","fill":"none"},"len":100.05,"pass":1},{"tag":"path","attrs":{"d":"M150 0 C150.44 33.68, 149.6 66.12, 150 100","stroke":"#1e1e1e","stroke-width":"2","fill":"none"},"len":100,"pass":1},{"tag":"path","attrs":{"d":"M150 100 C110.5 98.9, 74.85 98, 0 100","stroke":"#1e1e1e","stroke-width":"2","fill":"none"},"len":150.02,"pass":2},{"tag":"path","attrs":{"d":"M150 100 C116.57 98.78, 81.69 99.82, 0 100","stroke":"#1e1e1e","stroke-width":"2","fill":"none"},"len":150.01,"pass":2},{"tag":"path","attrs":{"d":"M0 100 C-0.88 75.9, -2.76 54.29, 0 0","stroke":"#1e1e1e","stroke-width":"2","fill":"none"},"len":100.05,"pass":3},{"tag":"path","attrs":{"d":"M0 100 C-0.83 77.22, -0.6 51.64, 0 0","stroke":"#1e1e1e","stroke-width":"2","fill":"none"},"len":100.01,"pass":3}]}]},"track":[[239,94,0],[244.8,93.9,0.0115],[250.5,93.8,0.0231],[256.3,93.7,0.0346],[262.1,93.6,0.0461],[267.8,93.5,0.0577],[273.6,93.5,0.0692],[279.4,93.4,0.0808],[285.2,93.4,0.0923],[290.9,93.4,0.1038],[296.7,93.4,0.1154],[302.5,93.4,0.1269],[308.2,93.4,0.1384],[314,93.4,0.15],[319.8,93.4,0.1615],[325.5,93.5,0.173],[331.3,93.5,0.1846],[337.1,93.5,0.1961],[342.8,93.6,0.2077],[348.6,93.6,0.2192],[354.4,93.7,0.2307],[360.2,93.7,0.2423],[365.9,93.8,0.2538],[371.7,93.8,0.2653],[377.5,93.9,0.2769],[383.2,93.9,0.2884],[389,94,0.2999],[389,94,0.2999],[389.3,99.9,0.3117],[389.6,105.8,0.3235],[389.8,111.6,0.3352],[390,117.5,0.347],[390.2,123.4,0.3588],[390.3,129.3,0.3705],[390.3,135.2,0.3823],[390.4,141.1,0.3941],[390.3,146.9,0.4058],[390.3,152.8,0.4176],[390.2,158.7,0.4294],[390.1,164.6,0.4412],[389.9,170.5,0.4529],[389.7,176.4,0.4647],[389.5,182.2,0.4765],[389.3,188.1,0.4882],[389,194,0.5],[389,194,0.5],[383.2,193.8,0.5115],[377.5,193.7,0.5231],[371.7,193.5,0.5346],[365.9,193.4,0.5461],[360.2,193.3,0.5577],[354.4,193.2,0.5692],[348.6,193.1,0.5807],[342.9,193,0.5923],[337.1,192.9,0.6038],[331.3,192.9,0.6154],[325.5,192.8,0.6269],[319.8,192.8,0.6384],[314,192.8,0.65],[308.2,192.8,0.6615],[302.5,192.9,0.673],[296.7,192.9,0.6846],[290.9,193,0.6961],[285.2,193,0.7077],[279.4,193.1,0.7192],[273.6,193.2,0.7307],[267.8,193.3,0.7423],[262.1,193.4,0.7538],[256.3,193.6,0.7653],[250.5,193.7,0.7769],[244.8,193.8,0.7884],[239,194,0.8],[239,194,0.8],[238.8,188.1,0.8117],[238.5,182.2,0.8235],[238.3,176.4,0.8353],[238,170.5,0.847],[237.8,164.6,0.8588],[237.7,158.7,0.8706],[237.6,152.8,0.8823],[237.6,146.9,0.8941],[237.6,141.1,0.9059],[237.6,135.2,0.9176],[237.7,129.3,0.9294],[237.8,123.4,0.9412],[238,117.5,0.9529],[238.2,111.6,0.9647],[238.5,105.8,0.9765],[238.7,99.9,0.9882],[239,94,1]]},{"id":"plate-2","node":{"tag":"g","attrs":{"stroke-linecap":"round","transform":"translate(454 94) rotate(0 75 50)"},"children":[{"tag":"g","attrs":{},"children":[{"tag":"path","attrs":{"d":"M0 0 C55 0.73, 113.77 0.84, 150 0","stroke":"#1e1e1e","stroke-width":"2","fill":"none"},"len":150.01,"pass":0},{"tag":"path","attrs":{"d":"M0 0 C49.82 -2.08, 100.63 -1.55, 150 0","stroke":"#1e1e1e","stroke-width":"2","fill":"none"},"len":150.03,"pass":0},{"tag":"path","attrs":{"d":"M150 0 C147.86 28.37, 149.05 55.55, 150 100","stroke":"#1e1e1e","stroke-width":"2","fill":"none"},"len":100.04,"pass":1},{"tag":"path","attrs":{"d":"M150 0 C150.15 26.19, 151.12 51.76, 150 100","stroke":"#1e1e1e","stroke-width":"2","fill":"none"},"len":100.01,"pass":1},{"tag":"path","attrs":{"d":"M150 100 C117.14 101.03, 87.77 100.91, 0 100","stroke":"#1e1e1e","stroke-width":"2","fill":"none"},"len":150.01,"pass":2},{"tag":"path","attrs":{"d":"M150 100 C110.35 99.28, 71.11 98.92, 0 100","stroke":"#1e1e1e","stroke-width":"2","fill":"none"},"len":150.01,"pass":2},{"tag":"path","attrs":{"d":"M0 100 C-1.47 70.64, -1.79 39.28, 0 0","stroke":"#1e1e1e","stroke-width":"2","fill":"none"},"len":100.04,"pass":3},{"tag":"path","attrs":{"d":"M0 100 C0.23 60.94, -0.36 21.63, 0 0","stroke":"#1e1e1e","stroke-width":"2","fill":"none"},"len":100,"pass":3}]}]},"track":[[454,94,0],[459.8,94.1,0.0115],[465.5,94.1,0.0231],[471.3,94.2,0.0346],[477.1,94.3,0.0462],[482.8,94.3,0.0577],[488.6,94.4,0.0692],[494.4,94.4,0.0808],[500.2,94.5,0.0923],[505.9,94.5,0.1038],[511.7,94.5,0.1154],[517.5,94.5,0.1269],[523.2,94.6,0.1385],[529,94.6,0.15],[534.8,94.6,0.1615],[540.5,94.6,0.1731],[546.3,94.6,0.1846],[552.1,94.6,0.1961],[557.9,94.6,0.2077],[563.6,94.5,0.2192],[569.4,94.5,0.2308],[575.2,94.4,0.2423],[580.9,94.4,0.2538],[586.7,94.3,0.2654],[592.5,94.2,0.2769],[598.2,94.1,0.2885],[604,94,0.3],[604,94,0.3],[603.6,99.9,0.3118],[603.3,105.7,0.3235],[603.1,111.6,0.3353],[602.9,117.5,0.3471],[602.8,123.4,0.3588],[602.8,129.3,0.3706],[602.8,135.2,0.3824],[602.9,141,0.3941],[603,146.9,0.4059],[603.1,152.8,0.4177],[603.2,158.7,0.4294],[603.3,164.6,0.4412],[603.5,170.5,0.453],[603.6,176.3,0.4647],[603.7,182.2,0.4765],[603.9,188.1,0.4883],[604,194,0.5],[604,194,0.5],[598.2,194.2,0.5116],[592.5,194.3,0.5231],[586.7,194.4,0.5346],[580.9,194.5,0.5462],[575.2,194.6,0.5577],[569.4,194.7,0.5692],[563.6,194.7,0.5808],[557.9,194.7,0.5923],[552.1,194.7,0.6038],[546.3,194.7,0.6154],[540.5,194.7,0.6269],[534.8,194.7,0.6385],[529,194.7,0.65],[523.2,194.6,0.6615],[517.5,194.6,0.6731],[511.7,194.5,0.6846],[505.9,194.5,0.6961],[500.2,194.4,0.7077],[494.4,194.4,0.7192],[488.6,194.3,0.7307],[482.8,194.3,0.7423],[477.1,194.2,0.7538],[471.3,194.2,0.7654],[465.5,194.1,0.7769],[459.8,194.1,0.7884],[454,194,0.8],[454,194,0.8],[453.7,188.1,0.8117],[453.5,182.2,0.8235],[453.3,176.4,0.8353],[453.1,170.5,0.847],[453,164.6,0.8588],[452.9,158.7,0.8706],[452.8,152.8,0.8823],[452.8,146.9,0.8941],[452.8,141.1,0.9059],[452.8,135.2,0.9176],[452.9,129.3,0.9294],[453,123.4,0.9412],[453.1,117.5,0.9529],[453.3,111.6,0.9647],[453.5,105.8,0.9765],[453.7,99.9,0.9882],[454,94,1]]},{"id":"round-1-0","node":{"tag":"g","attrs":{"stroke-linecap":"round","transform":"translate(61 129) rotate(0 13 13)"},"children":[{"tag":"path","attrs":{"d":"M9.69 0.38 C12.34 -0.42, 16.56 -0.16, 19.14 1.17 C21.71 2.49, 24.16 5.78, 25.14 8.35 C26.11 10.91, 25.81 13.94, 24.97 16.56 C24.13 19.18, 22.37 22.48, 20.12 24.06 C17.87 25.64, 14.26 26.47, 11.47 26.05 C8.68 25.63, 5.31 23.52, 3.36 21.52 C1.41 19.53, -0.14 16.77, -0.23 14.08 C-0.33 11.39, 1.03 7.62, 2.79 5.37 C4.55 3.12, 8.94 1.43, 10.32 0.57 C11.7 -0.28, 10.97 0.12, 11.08 0.26 M10.63 -0.36 C13.26 -0.89, 18.12 0.65, 20.61 2.31 C23.11 3.97, 24.92 6.91, 25.6 9.59 C26.28 12.27, 25.87 15.93, 24.68 18.4 C23.5 20.88, 21.01 23.2, 18.5 24.43 C15.99 25.66, 12.15 26.25, 9.63 25.79 C7.1 25.33, 4.92 23.82, 3.34 21.67 C1.76 19.53, 0.09 15.84, 0.15 12.9 C0.22 9.97, 1.79 6.15, 3.72 4.09 C5.65 2.03, 10.43 1.13, 11.72 0.53 C13.02 -0.06, 11.53 0.42, 11.51 0.52","stroke":"none","stroke-width":"0","fill":"#d3f9d8"},"len":166.72},{"tag":"g","attrs":{},"children":[{"tag":"path","attrs":{"d":"M13.03 0.04 C15.63 -0.05, 19.44 1.29, 21.61 3.14 C23.78 4.99, 25.6 8.35, 26.05 11.15 C26.51 13.95, 25.95 17.61, 24.36 19.94 C22.77 22.26, 19.2 24.22, 16.53 25.09 C13.86 25.97, 10.77 26.15, 8.33 25.18 C5.88 24.21, 3.27 21.77, 1.86 19.28 C0.44 16.79, -0.73 13, -0.17 10.24 C0.39 7.49, 2.91 4.5, 5.23 2.75 C7.54 1, 12.25 0.21, 13.73 -0.26 C15.21 -0.73, 14.13 -0.29, 14.1 -0.06","stroke":"#1e1e1e","stroke-width":"2","fill":"none"},"len":83.84,"pass":0},{"tag":"path","attrs":{"d":"M13.83 0.03 C16.43 0.21, 20 2.43, 21.93 4.24 C23.87 6.05, 25.14 8.21, 25.44 10.9 C25.75 13.58, 25.17 17.89, 23.75 20.36 C22.33 22.84, 19.67 24.89, 16.94 25.73 C14.21 26.57, 9.93 26.61, 7.38 25.43 C4.83 24.24, 2.86 21.22, 1.65 18.64 C0.45 16.05, -0.44 12.67, 0.15 9.91 C0.73 7.16, 2.91 3.65, 5.16 2.09 C7.41 0.54, 12.23 0.97, 13.65 0.58 C15.06 0.19, 13.62 -0.27, 13.66 -0.27","stroke":"#1e1e1e","stroke-width":"2","fill":"none"},"len":83.1,"pass":0}]}]},"track":[[74,129,0],[79.8,130.4,0.0714],[84.4,134.1,0.1429],[86.9,139.5,0.2143],[86.8,145.5,0.2857],[83.9,150.6,0.3571],[78.8,153.6,0.4286],[73,154.8,0.5],[67.3,153.1,0.5714],[63.2,148.8,0.6429],[61,143.3,0.7143],[61.4,137.4,0.7857],[65.1,132.7,0.8571],[70.3,129.9,0.9286],[75.1,128.9,1]]},{"id":"round-1-1","node":{"tag":"g","attrs":{"stroke-linecap":"round","transform":"translate(276 129) rotate(0 13 13)"},"children":[{"tag":"path","attrs":{"d":"M12.3 -0.13 C14.85 -0.31, 18.75 1.15, 21.06 2.91 C23.37 4.66, 25.65 7.71, 26.16 10.4 C26.66 13.08, 25.57 16.6, 24.09 19.02 C22.61 21.44, 19.85 23.83, 17.27 24.9 C14.69 25.98, 11.26 26.27, 8.61 25.45 C5.96 24.63, 2.79 22.45, 1.38 20 C-0.03 17.55, -0.38 13.59, 0.15 10.75 C0.69 7.91, 2.41 4.77, 4.61 2.95 C6.81 1.14, 11.98 0.39, 13.36 -0.13 C14.74 -0.65, 13.02 -0.41, 12.91 -0.16 M14.79 0.39 C17.54 0.61, 21.25 2.45, 23.05 4.59 C24.86 6.73, 25.54 10.6, 25.65 13.25 C25.76 15.9, 25.3 18.39, 23.72 20.49 C22.14 22.59, 18.94 25.27, 16.14 25.86 C13.35 26.44, 9.56 25.28, 6.95 23.99 C4.34 22.71, 1.63 20.62, 0.49 18.15 C-0.64 15.68, -0.92 11.86, 0.13 9.18 C1.17 6.5, 4.29 3.46, 6.75 2.08 C9.21 0.69, 13.51 1.12, 14.87 0.84 C16.23 0.57, 14.97 0.37, 14.9 0.42","stroke":"none","stroke-width":"0","fill":"#d3f9d8"},"len":167.39},{"tag":"g","attrs":{},"children":[{"tag":"path","attrs":{"d":"M14.58 0.49 C17.3 0.67, 21.1 2.55, 22.96 4.59 C24.81 6.64, 25.66 10.05, 25.7 12.75 C25.75 15.45, 24.88 18.66, 23.25 20.81 C21.62 22.96, 18.59 24.96, 15.92 25.63 C13.25 26.3, 9.79 26.07, 7.2 24.82 C4.62 23.56, 1.51 20.75, 0.42 18.1 C-0.67 15.46, -0.24 11.72, 0.67 8.95 C1.59 6.18, 3.47 2.88, 5.92 1.49 C8.38 0.09, 13.64 0.77, 15.4 0.57 C17.16 0.38, 16.54 0.18, 16.5 0.32","stroke":"#1e1e1e","stroke-width":"2","fill":"none"},"len":84.1,"pass":0},{"tag":"path","attrs":{"d":"M11.72 0.05 C14.28 -0.51, 17.82 0.8, 20.05 2.24 C22.28 3.68, 24.38 6.1, 25.1 8.69 C25.82 11.27, 25.38 15.06, 24.38 17.74 C23.38 20.41, 21.46 23.47, 19.09 24.73 C16.71 25.98, 12.87 25.77, 10.12 25.26 C7.36 24.75, 4.27 23.78, 2.58 21.66 C0.89 19.55, -0.24 15.44, -0.02 12.56 C0.2 9.68, 2.07 6.43, 3.9 4.4 C5.72 2.36, 9.81 1, 10.95 0.36 C12.09 -0.28, 10.65 0.41, 10.72 0.55","stroke":"#1e1e1e","stroke-width":"2","fill":"none"},"len":81.33,"pass":0}]}]},"track":[[290.6,129.5,0],[295.9,131.2,0.0667],[300,135,0.1333],[301.6,140.3,0.2],[301.1,145.8,0.2667],[298.5,150.7,0.3333],[293.9,153.9,0.4],[288.5,155,0.4667],[283.1,153.7,0.5333],[278.6,150.3,0.6],[276,145.5,0.6667],[276.1,139.9,0.7333],[278.1,134.7,0.8],[281.8,130.6,0.8667],[287.2,129.6,0.9333],[292.5,129.3,1]]},{"id":"round-1-2","node":{"tag":"g","attrs":{"stroke-linecap":"round","transform":"translate(491 129) rotate(0 13 13)"},"children":[{"tag":"path","attrs":{"d":"M14.92 -0.09 C17.42 0.36, 20.86 2.8, 22.64 5.07 C24.43 7.34, 25.63 10.86, 25.64 13.55 C25.66 16.24, 24.46 19.1, 22.72 21.22 C20.99 23.33, 18.03 25.72, 15.23 26.24 C12.43 26.76, 8.32 25.84, 5.93 24.34 C3.54 22.83, 1.69 19.83, 0.88 17.19 C0.07 14.55, 0.09 11.05, 1.08 8.51 C2.06 5.97, 4.37 3.25, 6.78 1.95 C9.2 0.66, 14.02 0.89, 15.56 0.73 C17.1 0.58, 16.03 0.84, 16.02 1.02 M12.49 -0.56 C15.06 -0.91, 18.37 0.7, 20.67 2.55 C22.96 4.39, 25.6 7.84, 26.27 10.51 C26.94 13.18, 25.98 16.12, 24.67 18.57 C23.37 21.03, 21.09 24.01, 18.45 25.26 C15.8 26.52, 11.49 26.93, 8.79 26.11 C6.08 25.29, 3.63 22.73, 2.21 20.34 C0.79 17.96, -0.14 14.51, 0.27 11.8 C0.69 9.08, 2.56 6.12, 4.69 4.06 C6.81 2.01, 11.84 0.1, 13.05 -0.55 C14.26 -1.21, 11.95 -0.14, 11.95 0.13","stroke":"none","stroke-width":"0","fill":"#d3f9d8"},"len":167.66},{"tag":"g","attrs":{},"children":[{"tag":"path","attrs":{"d":"M9.68 -0.01 C12.25 -0.86, 16.73 -0.39, 19.31 0.95 C21.9 2.28, 24.17 5.31, 25.17 8 C26.17 10.68, 26.11 14.4, 25.31 17.06 C24.51 19.71, 22.71 22.48, 20.35 23.91 C18 25.33, 14.02 26.01, 11.17 25.61 C8.32 25.2, 5.05 23.41, 3.27 21.48 C1.48 19.55, 0.55 16.7, 0.46 14.02 C0.37 11.34, 1.09 7.73, 2.71 5.42 C4.32 3.12, 8.82 1.08, 10.15 0.22 C11.47 -0.65, 10.59 0.01, 10.65 0.22","stroke":"#1e1e1e","stroke-width":"2","fill":"none"},"len":83.27,"pass":0},{"tag":"path","attrs":{"d":"M14.59 0 C17.21 0.27, 21.29 2.2, 23.18 4.34 C25.07 6.48, 25.92 10.11, 25.94 12.85 C25.97 15.58, 25.12 18.56, 23.33 20.75 C21.53 22.95, 17.93 25.4, 15.17 26.01 C12.41 26.63, 9.23 25.85, 6.74 24.45 C4.25 23.05, 1.18 20.22, 0.21 17.61 C-0.77 15.01, -0.11 11.34, 0.87 8.82 C1.84 6.3, 3.74 3.94, 6.05 2.49 C8.36 1.03, 13.14 0.52, 14.74 0.07 C16.33 -0.38, 15.65 -0.48, 15.63 -0.21","stroke":"#1e1e1e","stroke-width":"2","fill":"none"},"len":83.37,"pass":0}]}]},"track":[[500.7,129,0],[506.6,128.8,0.0714],[512,131.1,0.1429],[515.6,135.7,0.2143],[516.9,141.5,0.2857],[515.9,147.3,0.3571],[512.5,152.1,0.4286],[507.1,154.4,0.5],[501.2,154.4,0.5714],[495.8,151.9,0.6429],[492.3,147.2,0.7143],[491.5,141.3,0.7857],[493,135.6,0.8571],[497.2,131.5,0.9286],[501.6,129.2,1]]},{"id":"round-2-0","node":{"tag":"g","attrs":{"stroke-linecap":"round","transform":"translate(106 129) rotate(0 13 13)"},"children":[{"tag":"path","attrs":{"d":"M15.34 0.69 C17.99 1.18, 21.42 3.24, 23.26 5.33 C25.1 7.42, 26.5 10.59, 26.35 13.24 C26.2 15.9, 24.22 19.24, 22.34 21.27 C20.46 23.3, 17.81 24.99, 15.08 25.42 C12.34 25.86, 8.33 25.21, 5.93 23.87 C3.54 22.52, 1.56 20.01, 0.73 17.37 C-0.11 14.73, -0.14 10.71, 0.94 8.04 C2.02 5.37, 4.71 2.62, 7.19 1.36 C9.68 0.1, 14.36 0.61, 15.86 0.49 C17.36 0.36, 16.13 0.46, 16.2 0.61 M15.65 -0.27 C18.08 0.1, 20.74 2.37, 22.36 4.57 C23.98 6.76, 25.32 10.03, 25.35 12.91 C25.37 15.78, 24.17 19.54, 22.51 21.81 C20.84 24.07, 18.06 26.15, 15.34 26.5 C12.62 26.86, 8.55 25.42, 6.19 23.94 C3.83 22.46, 2.17 20.2, 1.17 17.64 C0.18 15.08, -0.66 11.17, 0.22 8.59 C1.1 6.01, 3.97 3.52, 6.47 2.15 C8.98 0.77, 13.78 0.69, 15.27 0.33 C16.76 -0.04, 15.44 -0.16, 15.4 -0.05","stroke":"none","stroke-width":"0","fill":"#d3f9d8"},"len":164.78},{"tag":"g","attrs":{},"children":[{"tag":"path","attrs":{"d":"M11.9 0.37 C14.56 -0.11, 18.39 0.44, 20.75 2.08 C23.12 3.71, 25.39 7.38, 26.09 10.18 C26.8 12.99, 26.23 16.46, 24.96 18.9 C23.7 21.33, 21.18 23.62, 18.51 24.77 C15.83 25.92, 11.56 26.53, 8.91 25.78 C6.26 25.03, 4.01 22.7, 2.59 20.26 C1.18 17.81, 0.23 13.94, 0.44 11.11 C0.66 8.29, 1.7 5.15, 3.86 3.3 C6.02 1.44, 11.73 0.49, 13.41 -0.01 C15.09 -0.51, 14.04 0.13, 13.94 0.31","stroke":"#1e1e1e","stroke-width":"2","fill":"none"},"len":85.37,"pass":0},{"tag":"path","attrs":{"d":"M13.14 0.28 C15.65 0.14, 18.73 1.34, 20.94 3.15 C23.16 4.96, 25.92 8.26, 26.43 11.13 C26.93 14, 25.47 18.09, 23.97 20.37 C22.47 22.66, 19.98 24.17, 17.44 24.85 C14.89 25.53, 11.23 25.31, 8.7 24.44 C6.17 23.57, 3.76 22.02, 2.28 19.63 C0.79 17.24, -0.61 13.06, -0.21 10.13 C0.2 7.2, 2.35 3.7, 4.7 2.05 C7.06 0.39, 12.41 0.56, 13.91 0.18 C15.41 -0.19, 13.88 -0.52, 13.7 -0.2","stroke":"#1e1e1e","stroke-width":"2","fill":"none"},"len":84.08,"pass":0}]}]},"track":[[117.9,129.4,0],[123.5,129.7,0.0667],[128.4,132.5,0.1333],[131.4,137.3,0.2],[132.4,142.8,0.2667],[130.8,148.3,0.3333],[126.9,152.4,0.4],[121.7,154.6,0.4667],[116.1,155,0.5333],[111.1,152.5,0.6],[107.9,147.8,0.6667],[106.5,142.3,0.7333],[107.1,136.7,0.8],[110.2,132,0.8667],[115.5,130,0.9333],[119.9,129.3,1]]},{"id":"round-2-1","node":{"tag":"g","attrs":{"stroke-linecap":"round","transform":"translate(321 129) rotate(0 13 13)"},"children":[{"tag":"path","attrs":{"d":"M12.72 -0.42 C15.44 -0.57, 19.53 1.19, 21.73 3.11 C23.94 5.03, 25.6 8.42, 25.94 11.08 C26.28 13.75, 25.23 16.77, 23.76 19.11 C22.3 21.46, 19.67 24.18, 17.14 25.17 C14.61 26.16, 11.08 26.04, 8.58 25.05 C6.09 24.06, 3.6 21.67, 2.16 19.21 C0.72 16.74, -0.53 12.91, -0.06 10.26 C0.41 7.61, 2.66 5.08, 4.97 3.3 C7.29 1.52, 12.25 0.04, 13.82 -0.45 C15.39 -0.93, 14.43 0.16, 14.39 0.38 M11.48 0.36 C14.08 -0.02, 17.68 0.72, 20 2.2 C22.32 3.68, 24.58 6.54, 25.42 9.22 C26.27 11.9, 26.1 15.62, 25.07 18.28 C24.04 20.94, 21.69 23.94, 19.23 25.2 C16.77 26.46, 13.12 26.51, 10.32 25.85 C7.52 25.18, 4.11 23.48, 2.41 21.22 C0.71 18.96, -0.03 15.15, 0.13 12.29 C0.29 9.43, 1.37 6.13, 3.37 4.07 C5.37 2, 10.68 0.58, 12.12 -0.11 C13.56 -0.8, 12.01 -0.23, 12.01 -0.08","stroke":"none","stroke-width":"0","fill":"#d3f9d8"},"len":168.29},{"tag":"g","attrs":{},"children":[{"tag":"path","attrs":{"d":"M10.35 0.24 C12.83 -0.34, 16.74 0.46, 19.21 1.87 C21.67 3.27, 24.2 5.98, 25.13 8.64 C26.07 11.31, 25.82 15.32, 24.8 17.87 C23.78 20.42, 21.29 22.61, 19.01 23.94 C16.73 25.26, 13.75 26.29, 11.14 25.85 C8.52 25.4, 5.17 23.34, 3.3 21.28 C1.43 19.21, -0.1 16.21, -0.09 13.46 C-0.08 10.72, 1.47 6.96, 3.37 4.8 C5.27 2.64, 9.92 1.26, 11.31 0.51 C12.7 -0.25, 11.79 0.18, 11.71 0.28","stroke":"#1e1e1e","stroke-width":"2","fill":"none"},"len":82.33,"pass":0},{"tag":"path","attrs":{"d":"M15.23 0.7 C17.94 1.3, 22.17 3.36, 24.02 5.48 C25.87 7.6, 26.51 10.76, 26.34 13.39 C26.16 16.03, 24.83 19.26, 22.97 21.26 C21.11 23.27, 17.96 24.94, 15.16 25.43 C12.35 25.92, 8.62 25.7, 6.13 24.2 C3.64 22.69, 1.2 19.17, 0.24 16.4 C-0.72 13.63, -0.86 10.04, 0.39 7.57 C1.64 5.11, 5.03 2.71, 7.73 1.59 C10.43 0.47, 15.1 0.96, 16.58 0.85 C18.06 0.73, 16.83 0.74, 16.62 0.91","stroke":"#1e1e1e","stroke-width":"2","fill":"none"},"len":84.53,"pass":0}]}]},"track":[[331.4,129.2,0],[337.2,129.6,0.0714],[342.3,132.4,0.1429],[345.9,137,0.2143],[346.7,142.8,0.2857],[345,148.3,0.3571],[340.8,152.4,0.4286],[335.5,154.7,0.5],[329.7,154.1,0.5714],[324.9,150.9,0.6429],[321.6,146,0.7143],[321.2,140.2,0.7857],[323.5,134.9,0.8571],[328.1,131.3,0.9286],[332.7,129.3,1]]},{"id":"round-2-2","node":{"tag":"g","attrs":{"stroke-linecap":"round","transform":"translate(536 129) rotate(0 13 13)"},"children":[{"tag":"path","attrs":{"d":"M10.1 0.01 C12.61 -0.76, 16.37 -0.03, 18.85 1.31 C21.33 2.64, 23.85 5.28, 24.99 8.01 C26.14 10.74, 26.55 14.95, 25.72 17.68 C24.89 20.41, 22.4 23.05, 20.02 24.39 C17.63 25.73, 14.25 26.16, 11.42 25.72 C8.6 25.29, 4.89 23.8, 3.07 21.78 C1.25 19.75, 0.47 16.43, 0.48 13.58 C0.48 10.73, 1.41 6.89, 3.1 4.66 C4.79 2.43, 9.27 0.84, 10.64 0.19 C12 -0.47, 11.27 0.44, 11.29 0.72 M13.8 -0.36 C16.6 -0.17, 20.39 2.07, 22.5 4.12 C24.61 6.17, 26.17 9.25, 26.46 11.94 C26.75 14.64, 25.84 17.95, 24.26 20.29 C22.68 22.62, 19.87 25.1, 16.98 25.95 C14.09 26.8, 9.66 26.53, 6.92 25.39 C4.18 24.25, 1.73 21.74, 0.55 19.11 C-0.64 16.49, -0.98 12.5, -0.18 9.64 C0.61 6.78, 2.97 3.62, 5.33 1.95 C7.68 0.28, 12.35 -0.06, 13.96 -0.38 C15.56 -0.7, 15.03 -0.15, 14.96 0.05","stroke":"none","stroke-width":"0","fill":"#d3f9d8"},"len":170.38},{"tag":"g","attrs":{},"children":[{"tag":"path","attrs":{"d":"M15.25 0.03 C17.99 0.32, 21.81 2.51, 23.66 4.74 C25.52 6.98, 26.57 10.66, 26.38 13.45 C26.18 16.24, 24.46 19.49, 22.48 21.48 C20.5 23.47, 17.17 25, 14.47 25.39 C11.77 25.77, 8.56 25.22, 6.27 23.78 C3.97 22.34, 1.52 19.3, 0.71 16.74 C-0.1 14.19, 0.4 11.05, 1.41 8.44 C2.43 5.83, 4.33 2.47, 6.78 1.09 C9.22 -0.3, 14.45 0.2, 16.09 0.11 C17.73 0.02, 16.64 0.35, 16.63 0.54","stroke":"#1e1e1e","stroke-width":"2","fill":"none"},"len":83.57,"pass":0},{"tag":"path","attrs":{"d":"M12.37 0.49 C15.08 0.25, 18.84 1.73, 21.07 3.18 C23.3 4.63, 25.22 6.67, 25.75 9.2 C26.28 11.74, 25.59 15.85, 24.24 18.39 C22.9 20.92, 20.13 23.25, 17.65 24.4 C15.18 25.54, 11.95 25.89, 9.4 25.26 C6.86 24.62, 3.82 22.9, 2.38 20.57 C0.94 18.24, 0.49 14.14, 0.75 11.26 C1 8.38, 2.15 5.27, 3.91 3.29 C5.67 1.31, 10.01 -0.06, 11.31 -0.63 C12.61 -1.19, 11.6 -0.38, 11.72 -0.09","stroke":"#1e1e1e","stroke-width":"2","fill":"none"},"len":80.87,"pass":0}]}]},"track":[[551.3,129,0],[556.7,131.2,0.0714],[560.8,135.5,0.1429],[562.4,141.2,0.2143],[561,146.9,0.2857],[557.3,151.5,0.3571],[551.9,154.1,0.4286],[546,154.2,0.5],[540.7,151.6,0.5714],[537.1,146.9,0.6429],[536.5,141,0.7143],[538.3,135.4,0.7857],[541.9,130.7,0.8571],[547.6,129.1,0.9286],[552.6,129.5,1]]},{"id":"answer","node":{"tag":"g","attrs":{"transform":"translate(24 234) rotate(0 139.84375 16.25)"},"children":[{"tag":"text","attrs":{"x":"0","y":"22.906","font-family":"Excalifont, Xiaolai, Segoe UI Emoji","font-size":"26px","fill":"#1e1e1e","text-anchor":"start","style":"white-space: pre;","direction":"ltr","dominant-baseline":"alphabetic"},"text":"每盘 2 个,三盘一样多。"}]},"reveal":{"width":279.7,"height":32.5},"track":[[24,251.9,0],[30,251.9,0.02127659574468085],[35.9,251.9,0.0425531914893617],[41.9,251.9,0.06382978723404255],[47.8,251.9,0.0851063829787234],[53.8,251.9,0.10638297872340426],[59.7,251.9,0.1276595744680851],[65.7,251.9,0.14893617021276595],[71.6,251.9,0.1702127659574468],[77.6,251.9,0.19148936170212766],[83.5,251.9,0.2127659574468085],[89.5,251.9,0.23404255319148937],[95.4,251.9,0.2553191489361702],[101.4,251.9,0.2765957446808511],[107.3,251.9,0.2978723404255319],[113.3,251.9,0.3191489361702128],[119.2,251.9,0.3404255319148936],[125.2,251.9,0.3617021276595745],[131.1,251.9,0.3829787234042553],[137.1,251.9,0.40425531914893614],[143,251.9,0.425531914893617],[149,251.9,0.44680851063829785],[154.9,251.9,0.46808510638297873],[160.9,251.9,0.48936170212765956],[166.8,251.9,0.5106382978723404],[172.8,251.9,0.5319148936170213],[178.7,251.9,0.5531914893617021],[184.7,251.9,0.574468085106383],[190.6,251.9,0.5957446808510638],[196.6,251.9,0.6170212765957447],[202.5,251.9,0.6382978723404256],[208.5,251.9,0.6595744680851063],[214.4,251.9,0.6808510638297872],[220.4,251.9,0.7021276595744681],[226.3,251.9,0.723404255319149],[232.3,251.9,0.7446808510638298],[238.2,251.9,0.7659574468085106],[244.2,251.9,0.7872340425531915],[250.1,251.9,0.8085106382978723],[256.1,251.9,0.8297872340425532],[262,251.9,0.851063829787234],[268,251.9,0.8723404255319149],[273.9,251.9,0.8936170212765957],[279.9,251.9,0.9148936170212766],[285.8,251.9,0.9361702127659575],[291.8,251.9,0.9574468085106383],[297.7,251.9,0.9787234042553191],[303.7,251.9,1]]},{"id":"verify","node":{"tag":"g","attrs":{"transform":"translate(24 294) rotate(0 88.2734375 16.25)"},"children":[{"tag":"text","attrs":{"x":"0","y":"22.906","font-family":"Excalifont, Xiaolai, Segoe UI Emoji","font-size":"26px","fill":"#1e1e1e","text-anchor":"start","style":"white-space: pre;","direction":"ltr","dominant-baseline":"alphabetic"},"text":"2 + 2 + 2 = 6"}]},"reveal":{"width":176.5,"height":32.5},"track":[[24,311.9,0],[29.9,311.9,0.03333333333333333],[35.8,311.9,0.06666666666666667],[41.7,311.9,0.1],[47.5,311.9,0.13333333333333333],[53.4,311.9,0.16666666666666666],[59.3,311.9,0.2],[65.2,311.9,0.23333333333333334],[71.1,311.9,0.26666666666666666],[77,311.9,0.3],[82.8,311.9,0.3333333333333333],[88.7,311.9,0.36666666666666664],[94.6,311.9,0.4],[100.5,311.9,0.43333333333333335],[106.4,311.9,0.4666666666666667],[112.3,311.9,0.5],[118.2,311.9,0.5333333333333333],[124,311.9,0.5666666666666667],[129.9,311.9,0.6],[135.8,311.9,0.6333333333333333],[141.7,311.9,0.6666666666666666],[147.6,311.9,0.7],[153.5,311.9,0.7333333333333333],[159.4,311.9,0.7666666666666667],[165.2,311.9,0.8],[171.1,311.9,0.8333333333333334],[177,311.9,0.8666666666666667],[182.9,311.9,0.9],[188.8,311.9,0.9333333333333333],[194.7,311.9,0.9666666666666667],[200.5,311.9,1]]}],"source":{"excalidraw":"unknown","hash":"3fae811ca6b4e7ff"}}
@@ -0,0 +1,63 @@
1
+ {
2
+ "schema": "lesson-manifest",
3
+ "version": 2,
4
+ "steps": [
5
+ {
6
+ "step": 1,
7
+ "elementIds": [
8
+ "title",
9
+ "plate-0",
10
+ "plate-1",
11
+ "plate-2"
12
+ ],
13
+ "line": "6 个圆片,放进 3 个盘子,每盘要一样多。",
14
+ "pauseAfter": true,
15
+ "audioSrc": "audio/step-1.mp3",
16
+ "audioDurationMs": 6144
17
+ },
18
+ {
19
+ "step": 2,
20
+ "elementIds": [
21
+ "round-1-0",
22
+ "round-1-1",
23
+ "round-1-2"
24
+ ],
25
+ "line": "先给每个盘子放 1 个,一共放了 3 个。",
26
+ "pauseAfter": true,
27
+ "audioSrc": "audio/step-2.mp3",
28
+ "audioDurationMs": 4128
29
+ },
30
+ {
31
+ "step": 3,
32
+ "elementIds": [
33
+ "round-2-0",
34
+ "round-2-1",
35
+ "round-2-2"
36
+ ],
37
+ "line": "还剩 3 个,再给每盘放 1 个,正好放完。",
38
+ "pauseAfter": true,
39
+ "audioSrc": "audio/step-3.mp3",
40
+ "audioDurationMs": 4368
41
+ },
42
+ {
43
+ "step": 4,
44
+ "elementIds": [
45
+ "answer"
46
+ ],
47
+ "line": "数一数,每盘都是 2 个。每盘一样多,就是平均分。",
48
+ "pauseAfter": true,
49
+ "audioSrc": "audio/step-4.mp3",
50
+ "audioDurationMs": 5496
51
+ },
52
+ {
53
+ "step": 5,
54
+ "elementIds": [
55
+ "verify"
56
+ ],
57
+ "line": "再合起来数,2 加 2 加 2 是 6,一个也没少。",
58
+ "pauseAfter": true,
59
+ "audioSrc": "audio/step-5.mp3",
60
+ "audioDurationMs": 4776
61
+ }
62
+ ]
63
+ }
@@ -0,0 +1,247 @@
1
+ {
2
+ "schema": "chalk-scene",
3
+ "version": 1,
4
+ "id": "2026-10-27-pingjunfen",
5
+ "title": "平均分:每盘一样多",
6
+ "problem": "6 个圆片平均放进 3 个盘子,每盘几个?",
7
+ "model": "实物分组",
8
+ "template": "paper-strict",
9
+ "subject": "数学",
10
+ "skeletons": [
11
+ {
12
+ "type": "text",
13
+ "id": "title",
14
+ "x": 55,
15
+ "y": 30,
16
+ "animateDuration": 900,
17
+ "text": "6 个圆片,平均放进 3 个盘子",
18
+ "fontSize": 26,
19
+ "strokeColor": "#1e1e1e"
20
+ },
21
+ {
22
+ "type": "rectangle",
23
+ "id": "plate-0",
24
+ "x": 55,
25
+ "y": 100,
26
+ "animateDuration": 900,
27
+ "width": 150,
28
+ "height": 100,
29
+ "strokeColor": "#1e1e1e"
30
+ },
31
+ {
32
+ "type": "rectangle",
33
+ "id": "plate-1",
34
+ "x": 270,
35
+ "y": 100,
36
+ "animateDuration": 900,
37
+ "width": 150,
38
+ "height": 100,
39
+ "strokeColor": "#1e1e1e"
40
+ },
41
+ {
42
+ "type": "rectangle",
43
+ "id": "plate-2",
44
+ "x": 485,
45
+ "y": 100,
46
+ "animateDuration": 900,
47
+ "width": 150,
48
+ "height": 100,
49
+ "strokeColor": "#1e1e1e"
50
+ },
51
+ {
52
+ "type": "ellipse",
53
+ "id": "round-1-0",
54
+ "x": 92,
55
+ "y": 135,
56
+ "animateDuration": 900,
57
+ "width": 26,
58
+ "height": 26,
59
+ "strokeColor": "#1e1e1e",
60
+ "backgroundColor": "#d3f9d8",
61
+ "fillStyle": "solid"
62
+ },
63
+ {
64
+ "type": "ellipse",
65
+ "id": "round-1-1",
66
+ "x": 307,
67
+ "y": 135,
68
+ "animateDuration": 900,
69
+ "width": 26,
70
+ "height": 26,
71
+ "strokeColor": "#1e1e1e",
72
+ "backgroundColor": "#d3f9d8",
73
+ "fillStyle": "solid"
74
+ },
75
+ {
76
+ "type": "ellipse",
77
+ "id": "round-1-2",
78
+ "x": 522,
79
+ "y": 135,
80
+ "animateDuration": 900,
81
+ "width": 26,
82
+ "height": 26,
83
+ "strokeColor": "#1e1e1e",
84
+ "backgroundColor": "#d3f9d8",
85
+ "fillStyle": "solid"
86
+ },
87
+ {
88
+ "type": "ellipse",
89
+ "id": "round-2-0",
90
+ "x": 137,
91
+ "y": 135,
92
+ "animateDuration": 900,
93
+ "width": 26,
94
+ "height": 26,
95
+ "strokeColor": "#1e1e1e",
96
+ "backgroundColor": "#d3f9d8",
97
+ "fillStyle": "solid"
98
+ },
99
+ {
100
+ "type": "ellipse",
101
+ "id": "round-2-1",
102
+ "x": 352,
103
+ "y": 135,
104
+ "animateDuration": 900,
105
+ "width": 26,
106
+ "height": 26,
107
+ "strokeColor": "#1e1e1e",
108
+ "backgroundColor": "#d3f9d8",
109
+ "fillStyle": "solid"
110
+ },
111
+ {
112
+ "type": "ellipse",
113
+ "id": "round-2-2",
114
+ "x": 567,
115
+ "y": 135,
116
+ "animateDuration": 900,
117
+ "width": 26,
118
+ "height": 26,
119
+ "strokeColor": "#1e1e1e",
120
+ "backgroundColor": "#d3f9d8",
121
+ "fillStyle": "solid"
122
+ },
123
+ {
124
+ "type": "text",
125
+ "id": "answer",
126
+ "x": 55,
127
+ "y": 240,
128
+ "animateDuration": 900,
129
+ "text": "每盘 2 个,三盘一样多。",
130
+ "fontSize": 26,
131
+ "strokeColor": "#1e1e1e"
132
+ },
133
+ {
134
+ "type": "text",
135
+ "id": "verify",
136
+ "x": 55,
137
+ "y": 300,
138
+ "animateDuration": 900,
139
+ "text": "2 + 2 + 2 = 6",
140
+ "fontSize": 26,
141
+ "strokeColor": "#1e1e1e"
142
+ }
143
+ ],
144
+ "groups": [
145
+ {
146
+ "id": "group-0",
147
+ "label": "第 1 个盘子",
148
+ "elementIds": [
149
+ "plate-0",
150
+ "round-1-0",
151
+ "round-2-0"
152
+ ]
153
+ },
154
+ {
155
+ "id": "group-1",
156
+ "label": "第 2 个盘子",
157
+ "elementIds": [
158
+ "plate-1",
159
+ "round-1-1",
160
+ "round-2-1"
161
+ ]
162
+ },
163
+ {
164
+ "id": "group-2",
165
+ "label": "第 3 个盘子",
166
+ "elementIds": [
167
+ "plate-2",
168
+ "round-1-2",
169
+ "round-2-2"
170
+ ]
171
+ }
172
+ ],
173
+ "bounds": {
174
+ "title": [
175
+ 55,
176
+ 30,
177
+ 385.3,
178
+ 62.5
179
+ ],
180
+ "plate-0": [
181
+ 55,
182
+ 100,
183
+ 205,
184
+ 200
185
+ ],
186
+ "plate-1": [
187
+ 270,
188
+ 100,
189
+ 420,
190
+ 200
191
+ ],
192
+ "plate-2": [
193
+ 485,
194
+ 100,
195
+ 635,
196
+ 200
197
+ ],
198
+ "round-1-0": [
199
+ 92,
200
+ 135,
201
+ 118,
202
+ 161
203
+ ],
204
+ "round-1-1": [
205
+ 307,
206
+ 135,
207
+ 333,
208
+ 161
209
+ ],
210
+ "round-1-2": [
211
+ 522,
212
+ 135,
213
+ 548,
214
+ 161
215
+ ],
216
+ "round-2-0": [
217
+ 137,
218
+ 135,
219
+ 163,
220
+ 161
221
+ ],
222
+ "round-2-1": [
223
+ 352,
224
+ 135,
225
+ 378,
226
+ 161
227
+ ],
228
+ "round-2-2": [
229
+ 567,
230
+ 135,
231
+ 593,
232
+ 161
233
+ ],
234
+ "answer": [
235
+ 55,
236
+ 240,
237
+ 334.7,
238
+ 272.5
239
+ ],
240
+ "verify": [
241
+ 55,
242
+ 300,
243
+ 232.6,
244
+ 332.5
245
+ ]
246
+ }
247
+ }
@@ -0,0 +1,40 @@
1
+ ---
2
+ id: 2026-10-27-pingjunfen
3
+ 表征: 实物分组
4
+ template: paper-strict
5
+ 假设: 能数到 6,能比较一样多;不要求学过除法
6
+ ---
7
+
8
+ ## 题面
9
+
10
+ 6 个圆片平均放进 3 个盘子,每盘几个?
11
+
12
+ ## 步 1
13
+
14
+ - 讲稿:6 个圆片,放进 3 个盘子,每盘要一样多。
15
+ - 草稿:上方写题目,下方并排画三个空盘子。
16
+ - 检验:三个盘子都为空,不先显示答案。
17
+
18
+ ## 步 2
19
+
20
+ - 讲稿:先给每个盘子放 1 个,一共放了 3 个。
21
+ - 草稿:从左往右,每盘画一个圆片。
22
+ - 检验:三个圆片,每盘一个。
23
+
24
+ ## 步 3
25
+
26
+ - 讲稿:还剩 3 个,再给每盘放 1 个,正好放完。
27
+ - 草稿:从左往右,每盘再画一个圆片。
28
+ - 检验:六个圆片,每盘两个,没有多出或漏掉的。
29
+
30
+ ## 步 4
31
+
32
+ - 讲稿:数一数,每盘都是 2 个。每盘一样多,就是平均分。
33
+ - 作答:在盘子下写「每盘 2 个,三盘一样多。」
34
+ - 检验:数字与盘子里的数量一致。
35
+
36
+ ## 步 5
37
+
38
+ - 讲稿:再合起来数,2 加 2 加 2 是 6,一个也没少。
39
+ - 作答:下一行写「2 + 2 + 2 = 6」。
40
+ - 检验:用已会的加法检查,不引入除法符号。
@@ -0,0 +1,26 @@
1
+ /** 6 个圆片平均放进 3 个盘子。一轮一个,每盘一样多;无需先学除法。 */
2
+ import type { ChalkScene, ChalkSkeleton } from 'cotutor/chalk';
3
+ const ink = '#1e1e1e';
4
+ const text = (id: string, value: string, x: number, y: number): ChalkSkeleton => ({ type: 'text', id, text: value, x, y, fontSize: 26, strokeColor: ink, animateDuration: 900 });
5
+ const plates: ChalkSkeleton[] = Array.from({ length: 3 }, (_, i) => ({ type: 'rectangle', id: `plate-${i}`, x: 55 + i * 215, y: 100, width: 150, height: 100, strokeColor: ink, animateDuration: 900 }));
6
+ const round = (n: number): ChalkSkeleton[] => Array.from({ length: 3 }, (_, i) => ({ type: 'ellipse', id: `round-${n}-${i}`, x: 92 + i * 215 + (n - 1) * 45, y: 135, width: 26, height: 26, strokeColor: ink, backgroundColor: '#d3f9d8', fillStyle: 'solid', animateDuration: 900 }));
7
+ const scene: ChalkScene = {
8
+ id: '2026-10-27-pingjunfen', title: '平均分:每盘一样多',
9
+ problem: '6 个圆片平均放进 3 个盘子,每盘几个?',
10
+ model: '实物分组', template: 'paper-strict', subject: '数学',
11
+ skeletons: [
12
+ text('title', '6 个圆片,平均放进 3 个盘子', 55, 30), ...plates,
13
+ ...round(1), ...round(2),
14
+ text('answer', '每盘 2 个,三盘一样多。', 55, 240),
15
+ text('verify', '2 + 2 + 2 = 6', 55, 300),
16
+ ],
17
+ groups: plates.map((_, i) => ({ id: `group-${i}`, label: `第 ${i + 1} 个盘子`, elementIds: [`plate-${i}`, `round-1-${i}`, `round-2-${i}`] })),
18
+ steps: [
19
+ { step: 1, elementIds: ['title', ...plates.map(p => p.id!)], line: '6 个圆片,放进 3 个盘子,每盘要一样多。', pauseAfter: true },
20
+ { step: 2, elementIds: round(1).map(p => p.id!), line: '先给每个盘子放 1 个,一共放了 3 个。', pauseAfter: true },
21
+ { step: 3, elementIds: round(2).map(p => p.id!), line: '还剩 3 个,再给每盘放 1 个,正好放完。', pauseAfter: true },
22
+ { step: 4, elementIds: ['answer'], line: '数一数,每盘都是 2 个。每盘一样多,就是平均分。', pauseAfter: true },
23
+ { step: 5, elementIds: ['verify'], line: '再合起来数,2 加 2 加 2 是 6,一个也没少。', pauseAfter: true },
24
+ ],
25
+ };
26
+ export default scene;
@@ -0,0 +1,24 @@
1
+ ---
2
+ activity: 小课堂
3
+ ---
4
+
5
+ ## 看懂就结束
6
+
7
+ 课: 2026-10-27-pingjunfen
8
+ 孩子: 我知道了,平均分就是每盘一样多,今天先到这里
9
+ 最多轮: 1
10
+ 判:
11
+ - 收尾不问
12
+ - 不出画图卡
13
+
14
+ ## 主动想试一题
15
+
16
+ 课: 2026-10-27-pingjunfen
17
+ 孩子: 我想自己试一道平均分
18
+ 故事: 孩子会数到十,未学除法。老师问一个问题就回答,自己想到每盘先放一个,再放一个。每盘数出两个后说做完了,不要继续加题。
19
+ 人设: 二年级孩子,简短回答
20
+ 最多轮: 5
21
+ 判:
22
+ - 一节一问
23
+ - 不说: 方程、未知数
24
+ - 不出画图卡
@@ -0,0 +1,42 @@
1
+ # 典型题型:平均分
2
+
3
+ 这是一份可选的小课堂样例,供家长看过后使用。适合能数到 6、会比较一样多的孩子,无需先学除法。不把二年级当成已经学过平均分。
4
+
5
+ - 题目:6 个圆片平均放进 3 个盘子,每盘几个?
6
+ - 做法:一轮每盘放一个,放两轮,再合起来核对总数。
7
+ - 目标:理解「平均」表示每盘一样多。
8
+ - 源文件: `2026-10-27-pingjunfen.ts` 与同名讲法说明。
9
+ - 课包: `2026-10-27-pingjunfen/`,含画面、讲稿和配音。
10
+
11
+ ## 安装与首页
12
+
13
+ 把课包目录复制到试用 workspace 的 `bundles/2026-10-27-pingjunfen/`。仅复制课包不改变已有课程或首页。
14
+
15
+ 在数学老师的首页卡中加入:
16
+
17
+ ```tutor
18
+ math-tutor
19
+ 小课堂 2026-10-27-pingjunfen 平均分:每盘一样多
20
+ ```
21
+
22
+ 跑 `cotutor home check`,家长看过内容后再发布首页。孩子看完会进入数学老师原有的「小课堂」activity。
23
+
24
+ ## 看完怎么聊
25
+
26
+ 孩子说「为什么每盘放一样多」:回看课里解释「平均分」的一段,请他看三个盘子的数量。孩子说懂了就结束。
27
+
28
+ 孩子主动说「我想自己试一道」:用 8 个圆片、4 个盘子,请他自己分。不会时提示先每盘放一个;不要先给出每盘数量。做完核对各盘一样多且总数为 8,然后结束。
29
+
30
+ 孩子不想练:直接结束。不在看懂之后强制加题。
31
+
32
+ ## 开发者重建
33
+
34
+ 在仓库根运行(配音调用服务,会产生费用;配音缓存在解析到的那个 workspace 的 `.cotutor/tts/`):
35
+
36
+ ```sh
37
+ node bin/cotutor.js chalk build grades/grade-2/examples/2026-10-27-pingjunfen.ts --out grades/grade-2/examples/2026-10-27-pingjunfen
38
+ node bin/cotutor.js chalk bake 2026-10-27-pingjunfen --bundles grades/grade-2/examples
39
+ node bin/cotutor.js chalk dub 2026-10-27-pingjunfen --bundles grades/grade-2/examples --voice qwen-audio-3.0-tts-plus-longcanzhuyue
40
+ ```
41
+
42
+ 检查数量、笔顺、文字与讲稿是否一致;配音变化后再确认每步时长。不能只凭构建成功宣称教学效果通过。