ksaa 2025.8.23.1.post1__py3-none-any.whl → 2025.9__py3-none-any.whl

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 (828) hide show
  1. {kotonebot/kaa → kaa}/application/core/idle_mode.py +1 -1
  2. {kotonebot/kaa → kaa}/application/core/misc_core.py +1 -1
  3. {kotonebot/kaa → kaa}/common.py +2 -2
  4. {kotonebot/kaa → kaa}/config/const.py +1 -1
  5. {kotonebot/kaa → kaa}/config/produce.py +1 -1
  6. {kotonebot/kaa → kaa}/config/schema.py +10 -1
  7. kaa/db/drink.py +84 -0
  8. kaa/db/sqlite.py +42 -0
  9. {kotonebot → kaa}/debug_entry.py +3 -3
  10. {kotonebot/kaa → kaa}/errors.py +14 -0
  11. {kotonebot/kaa → kaa}/game_ui/dialog.py +1 -1
  12. kaa/game_ui/drinks_overview.py +174 -0
  13. {kotonebot/kaa → kaa}/game_ui/idols_overview.py +13 -7
  14. {kotonebot/kaa → kaa}/game_ui/schedule.py +2 -2
  15. {kotonebot/kaa → kaa}/game_ui/scrollable.py +4 -3
  16. {kotonebot/kaa → kaa}/image_db/db.py +24 -4
  17. {kotonebot/kaa → kaa}/main/gr.py +489 -110
  18. {kotonebot/kaa → kaa}/main/kaa.py +11 -2
  19. {kotonebot/kaa → kaa}/metadata.py +135 -0
  20. kaa/resources/__pycache__/__init__.cpython-310.pyc +0 -0
  21. kaa/resources/drinks/img_general_pdrink_1-001.png +0 -0
  22. kaa/resources/drinks/img_general_pdrink_1-002.png +0 -0
  23. kaa/resources/drinks/img_general_pdrink_1-003.png +0 -0
  24. kaa/resources/drinks/img_general_pdrink_1-004.png +0 -0
  25. kaa/resources/drinks/img_general_pdrink_1-006.png +0 -0
  26. kaa/resources/drinks/img_general_pdrink_1-008.png +0 -0
  27. kaa/resources/drinks/img_general_pdrink_1-009.png +0 -0
  28. kaa/resources/drinks/img_general_pdrink_1-010.png +0 -0
  29. kaa/resources/drinks/img_general_pdrink_2-001.png +0 -0
  30. kaa/resources/drinks/img_general_pdrink_2-003.png +0 -0
  31. kaa/resources/drinks/img_general_pdrink_2-004.png +0 -0
  32. kaa/resources/drinks/img_general_pdrink_2-005.png +0 -0
  33. kaa/resources/drinks/img_general_pdrink_2-006.png +0 -0
  34. kaa/resources/drinks/img_general_pdrink_2-007.png +0 -0
  35. kaa/resources/drinks/img_general_pdrink_2-008.png +0 -0
  36. kaa/resources/drinks/img_general_pdrink_2-009.png +0 -0
  37. kaa/resources/drinks/img_general_pdrink_2-010.png +0 -0
  38. kaa/resources/drinks/img_general_pdrink_3-001.png +0 -0
  39. kaa/resources/drinks/img_general_pdrink_3-002.png +0 -0
  40. kaa/resources/drinks/img_general_pdrink_3-004.png +0 -0
  41. kaa/resources/drinks/img_general_pdrink_3-005.png +0 -0
  42. kaa/resources/drinks/img_general_pdrink_3-006.png +0 -0
  43. kaa/resources/drinks/img_general_pdrink_3-007.png +0 -0
  44. kaa/resources/drinks/img_general_pdrink_3-008.png +0 -0
  45. kaa/resources/drinks/img_general_pdrink_3-009.png +0 -0
  46. kaa/resources/drinks/img_general_pdrink_3-010.png +0 -0
  47. kaa/resources/drinks/img_general_pdrink_3-011.png +0 -0
  48. kaa/resources/drinks/img_general_pdrink_3-012.png +0 -0
  49. kaa/resources/drinks/img_general_pdrink_3-013.png +0 -0
  50. {kotonebot/kaa → kaa}/resources/game.db +0 -0
  51. kaa/resources/game_ver.txt +0 -0
  52. kaa/resources/idol_cards/i_card-skin-amao-3-014_0.png +0 -0
  53. kaa/resources/idol_cards/i_card-skin-amao-3-014_1.png +0 -0
  54. kaa/resources/idol_cards/i_card-skin-fktn-3-016_0.png +0 -0
  55. kaa/resources/idol_cards/i_card-skin-fktn-3-016_1.png +0 -0
  56. kaa/resources/idol_cards/i_card-skin-hmsz-3-013_0.png +0 -0
  57. kaa/resources/idol_cards/i_card-skin-hmsz-3-013_1.png +0 -0
  58. kaa/resources/idol_cards/i_card-skin-hrnm-3-015_0.png +0 -0
  59. kaa/resources/idol_cards/i_card-skin-hrnm-3-015_1.png +0 -0
  60. kaa/resources/idol_cards/i_card-skin-hski-3-015_0.png +0 -0
  61. kaa/resources/idol_cards/i_card-skin-hski-3-015_1.png +0 -0
  62. kaa/resources/idol_cards/i_card-skin-hume-3-015_0.png +0 -0
  63. kaa/resources/idol_cards/i_card-skin-hume-3-015_1.png +0 -0
  64. kaa/resources/idol_cards/i_card-skin-jsna-1-000_1.png +0 -0
  65. kaa/resources/idol_cards/i_card-skin-jsna-3-008_1.png +0 -0
  66. kaa/resources/idol_cards/i_card-skin-jsna-3-014_0.png +0 -0
  67. kaa/resources/idol_cards/i_card-skin-jsna-3-014_1.png +0 -0
  68. kaa/resources/idol_cards/i_card-skin-kcna-3-015_0.png +0 -0
  69. kaa/resources/idol_cards/i_card-skin-kcna-3-015_1.png +0 -0
  70. kaa/resources/idol_cards/i_card-skin-kllj-3-008_0.png +0 -0
  71. kaa/resources/idol_cards/i_card-skin-kllj-3-014_0.png +0 -0
  72. kaa/resources/idol_cards/i_card-skin-kllj-3-014_1.png +0 -0
  73. kaa/resources/idol_cards/i_card-skin-shro-3-015_0.png +0 -0
  74. kaa/resources/idol_cards/i_card-skin-shro-3-015_1.png +0 -0
  75. kaa/resources/idol_cards/i_card-skin-ssmk-3-015_0.png +0 -0
  76. kaa/resources/idol_cards/i_card-skin-ssmk-3-015_1.png +0 -0
  77. kaa/sprites/16db02f4-5297-427d-8c84-587ea5193b53.png +0 -0
  78. kaa/sprites/207594fa-6a0b-45ec-aeff-b3e45348c508.png +0 -0
  79. kaa/sprites/7b5c8883-a1f9-4ce9-bd84-26668577dfc6.png +0 -0
  80. kaa/sprites/9483fae5-3a72-4684-9403-d25d2c602d3d.png +0 -0
  81. kaa/sprites/a3736105-b3e6-467b-888a-f93b8f4d37be.png +0 -0
  82. kaa/sprites/ad2f8633-f5a6-4ae8-853d-88b0254b6216.png +0 -0
  83. kaa/sprites/eaad330d-4e50-4b55-be2c-8da0f72764d9.png +0 -0
  84. kaa/sprites/f0abbf38-ba4b-474a-bdce-f22db7379de2.png +0 -0
  85. {kotonebot/kaa → kaa}/tasks/R.py +153 -131
  86. {kotonebot/kaa → kaa}/tasks/actions/commu.py +3 -3
  87. {kotonebot/kaa → kaa}/tasks/actions/loading.py +1 -1
  88. {kotonebot/kaa → kaa}/tasks/actions/scenes.py +5 -3
  89. {kotonebot/kaa → kaa}/tasks/actions/stats.py +1 -1
  90. {kotonebot/kaa → kaa}/tasks/daily/acquire_activity_funds.py +2 -2
  91. {kotonebot/kaa → kaa}/tasks/daily/acquire_presents.py +2 -2
  92. {kotonebot/kaa → kaa}/tasks/daily/assignment.py +2 -2
  93. {kotonebot/kaa → kaa}/tasks/daily/capsule_toys.py +4 -3
  94. {kotonebot/kaa → kaa}/tasks/daily/club_reward.py +3 -3
  95. {kotonebot/kaa → kaa}/tasks/daily/contest.py +4 -4
  96. {kotonebot/kaa → kaa}/tasks/daily/mission_reward.py +2 -2
  97. {kotonebot/kaa → kaa}/tasks/daily/purchase.py +2 -4
  98. {kotonebot/kaa → kaa}/tasks/daily/upgrade_support_card.py +3 -3
  99. {kotonebot/kaa → kaa}/tasks/end_game.py +1 -1
  100. {kotonebot/kaa → kaa}/tasks/produce/cards.py +76 -8
  101. {kotonebot/kaa → kaa}/tasks/produce/common.py +94 -6
  102. {kotonebot/kaa → kaa}/tasks/produce/in_purodyuusu.py +96 -73
  103. {kotonebot/kaa → kaa}/tasks/produce/non_lesson_actions.py +17 -11
  104. {kotonebot/kaa → kaa}/tasks/produce/p_drink.py +1 -1
  105. {kotonebot/kaa → kaa}/tasks/produce/produce.py +45 -61
  106. {kotonebot/kaa → kaa}/tasks/start_game.py +18 -10
  107. {kotonebot/kaa → kaa}/util/paths.py +1 -1
  108. {ksaa-2025.8.23.1.post1.dist-info → ksaa-2025.9.dist-info}/METADATA +11 -5
  109. ksaa-2025.9.dist-info/RECORD +753 -0
  110. ksaa-2025.9.dist-info/entry_points.txt +2 -0
  111. ksaa-2025.9.dist-info/top_level.txt +1 -0
  112. kotonebot/__init__.py +0 -40
  113. kotonebot/backend/bot.py +0 -302
  114. kotonebot/backend/color.py +0 -525
  115. kotonebot/backend/context/__init__.py +0 -3
  116. kotonebot/backend/context/context.py +0 -1001
  117. kotonebot/backend/context/task_action.py +0 -176
  118. kotonebot/backend/core.py +0 -126
  119. kotonebot/backend/debug/__init__.py +0 -1
  120. kotonebot/backend/debug/entry.py +0 -89
  121. kotonebot/backend/debug/mock.py +0 -79
  122. kotonebot/backend/debug/server.py +0 -223
  123. kotonebot/backend/debug/vars.py +0 -346
  124. kotonebot/backend/dispatch.py +0 -228
  125. kotonebot/backend/flow_controller.py +0 -197
  126. kotonebot/backend/image.py +0 -748
  127. kotonebot/backend/loop.py +0 -277
  128. kotonebot/backend/ocr.py +0 -511
  129. kotonebot/backend/preprocessor.py +0 -103
  130. kotonebot/client/__init__.py +0 -10
  131. kotonebot/client/device.py +0 -500
  132. kotonebot/client/fast_screenshot.py +0 -378
  133. kotonebot/client/host/__init__.py +0 -12
  134. kotonebot/client/host/adb_common.py +0 -94
  135. kotonebot/client/host/custom.py +0 -114
  136. kotonebot/client/host/leidian_host.py +0 -202
  137. kotonebot/client/host/mumu12_host.py +0 -245
  138. kotonebot/client/host/protocol.py +0 -213
  139. kotonebot/client/host/windows_common.py +0 -55
  140. kotonebot/client/implements/__init__.py +0 -7
  141. kotonebot/client/implements/adb.py +0 -85
  142. kotonebot/client/implements/adb_raw.py +0 -159
  143. kotonebot/client/implements/nemu_ipc/__init__.py +0 -8
  144. kotonebot/client/implements/nemu_ipc/external_renderer_ipc.py +0 -280
  145. kotonebot/client/implements/nemu_ipc/nemu_ipc.py +0 -327
  146. kotonebot/client/implements/remote_windows.py +0 -193
  147. kotonebot/client/implements/uiautomator2.py +0 -82
  148. kotonebot/client/implements/windows.py +0 -168
  149. kotonebot/client/protocol.py +0 -69
  150. kotonebot/client/registration.py +0 -24
  151. kotonebot/config/__init__.py +0 -1
  152. kotonebot/config/base_config.py +0 -96
  153. kotonebot/config/manager.py +0 -36
  154. kotonebot/errors.py +0 -72
  155. kotonebot/interop/win/message_box.py +0 -314
  156. kotonebot/interop/win/reg.py +0 -37
  157. kotonebot/interop/win/shortcut.py +0 -43
  158. kotonebot/interop/win/task_dialog.py +0 -469
  159. kotonebot/kaa/db/sqlite.py +0 -25
  160. kotonebot/kaa/resources/game_ver.txt +0 -0
  161. kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-1-000_1.png +0 -0
  162. kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-008_1.png +0 -0
  163. kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-008_0.png +0 -0
  164. kotonebot/kaa/sprites/dc0b9a0a-edbb-4eea-80cd-683e6b27be98.png +0 -0
  165. kotonebot/kaa/tasks/actions/__init__.py +0 -0
  166. kotonebot/kaa/tasks/daily/__init__.py +0 -0
  167. kotonebot/kaa/tasks/produce/__init__.py +0 -0
  168. kotonebot/logging/__init__.py +0 -2
  169. kotonebot/logging/log.py +0 -18
  170. kotonebot/primitives/__init__.py +0 -17
  171. kotonebot/primitives/geometry.py +0 -290
  172. kotonebot/primitives/visual.py +0 -63
  173. kotonebot/tools/__init__.py +0 -0
  174. kotonebot/tools/mirror.py +0 -354
  175. kotonebot/ui/__init__.py +0 -0
  176. kotonebot/ui/file_host/sensio.py +0 -36
  177. kotonebot/ui/file_host/tmp_send.py +0 -54
  178. kotonebot/ui/pushkit/__init__.py +0 -3
  179. kotonebot/ui/pushkit/image_host.py +0 -87
  180. kotonebot/ui/pushkit/protocol.py +0 -13
  181. kotonebot/ui/pushkit/wxpusher.py +0 -53
  182. kotonebot/ui/user.py +0 -144
  183. kotonebot/util.py +0 -409
  184. ksaa-2025.8.23.1.post1.dist-info/RECORD +0 -758
  185. ksaa-2025.8.23.1.post1.dist-info/entry_points.txt +0 -2
  186. ksaa-2025.8.23.1.post1.dist-info/top_level.txt +0 -1
  187. {kotonebot/kaa → kaa}/application/adapter/misc_adapter.py +0 -0
  188. {kotonebot/kaa → kaa}/config/__init__.py +0 -0
  189. {kotonebot/kaa → kaa}/config/migrations/__init__.py +0 -0
  190. {kotonebot/kaa → kaa}/config/migrations/_idol.py +0 -0
  191. {kotonebot/kaa → kaa}/config/migrations/_v1_to_v2.py +0 -0
  192. {kotonebot/kaa → kaa}/config/migrations/_v2_to_v3.py +0 -0
  193. {kotonebot/kaa → kaa}/config/migrations/_v3_to_v4.py +0 -0
  194. {kotonebot/kaa → kaa}/config/migrations/_v4_to_v5.py +0 -0
  195. {kotonebot/kaa → kaa}/config/migrations/_v5_to_v6.py +0 -0
  196. {kotonebot/kaa → kaa}/config/upgrade.py +0 -0
  197. {kotonebot/kaa → kaa}/db/__init__.py +0 -0
  198. {kotonebot/kaa → kaa}/db/constants.py +0 -0
  199. {kotonebot/kaa → kaa}/db/idol_card.py +0 -0
  200. {kotonebot/kaa → kaa}/game_ui/__init__.py +0 -0
  201. {kotonebot/kaa → kaa}/game_ui/badge.py +0 -0
  202. {kotonebot/kaa → kaa}/game_ui/common.py +0 -0
  203. {kotonebot/kaa → kaa}/game_ui/commu_event_buttons.py +0 -0
  204. {kotonebot/kaa → kaa}/game_ui/primary_button.py +0 -0
  205. {kotonebot/kaa → kaa}/game_ui/toolbar.py +0 -0
  206. {kotonebot/kaa → kaa}/image_db/__init__.py +0 -0
  207. {kotonebot/kaa → kaa}/image_db/descriptors/__init__.py +0 -0
  208. {kotonebot/kaa → kaa}/image_db/descriptors/hist.py +0 -0
  209. {kotonebot/kaa → kaa}/kaa_context.py +0 -0
  210. {kotonebot/kaa → kaa}/main/__init__.py +0 -0
  211. {kotonebot/kaa → kaa}/main/cli.py +0 -0
  212. {kotonebot/kaa → kaa}/main/dmm_host.py +0 -0
  213. {kotonebot/backend → kaa/resources}/__init__.py +0 -0
  214. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-1-000_0.png +0 -0
  215. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-1-000_1.png +0 -0
  216. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-1-001_0.png +0 -0
  217. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-1-001_1.png +0 -0
  218. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-2-000_0.png +0 -0
  219. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-2-000_1.png +0 -0
  220. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-000_0.png +0 -0
  221. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-000_1.png +0 -0
  222. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-001_0.png +0 -0
  223. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-001_1.png +0 -0
  224. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-002_0.png +0 -0
  225. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-002_1.png +0 -0
  226. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-003_0.png +0 -0
  227. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-003_1.png +0 -0
  228. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-005_0.png +0 -0
  229. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-005_1.png +0 -0
  230. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-006_0.png +0 -0
  231. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-006_1.png +0 -0
  232. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-007_0.png +0 -0
  233. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-007_1.png +0 -0
  234. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-008_0.png +0 -0
  235. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-008_1.png +0 -0
  236. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-009_0.png +0 -0
  237. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-009_1.png +0 -0
  238. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-010_0.png +0 -0
  239. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-010_1.png +0 -0
  240. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-011_0.png +0 -0
  241. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-011_1.png +0 -0
  242. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-012_0.png +0 -0
  243. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-012_1.png +0 -0
  244. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-013_0.png +0 -0
  245. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-013_1.png +0 -0
  246. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-1-000_0.png +0 -0
  247. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-1-000_1.png +0 -0
  248. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-1-001_0.png +0 -0
  249. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-1-001_1.png +0 -0
  250. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-2-000_0.png +0 -0
  251. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-2-000_1.png +0 -0
  252. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-000_0.png +0 -0
  253. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-000_1.png +0 -0
  254. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-001_0.png +0 -0
  255. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-001_1.png +0 -0
  256. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-002_0.png +0 -0
  257. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-002_1.png +0 -0
  258. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-003_0.png +0 -0
  259. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-003_1.png +0 -0
  260. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-005_0.png +0 -0
  261. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-005_1.png +0 -0
  262. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-006_0.png +0 -0
  263. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-006_1.png +0 -0
  264. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-007_0.png +0 -0
  265. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-007_1.png +0 -0
  266. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-008_0.png +0 -0
  267. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-008_1.png +0 -0
  268. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-009_0.png +0 -0
  269. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-009_1.png +0 -0
  270. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-010_0.png +0 -0
  271. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-010_1.png +0 -0
  272. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-011_0.png +0 -0
  273. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-011_1.png +0 -0
  274. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-012_0.png +0 -0
  275. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-012_1.png +0 -0
  276. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-013_0.png +0 -0
  277. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-013_1.png +0 -0
  278. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-014_0.png +0 -0
  279. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-014_1.png +0 -0
  280. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-015_0.png +0 -0
  281. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-015_1.png +0 -0
  282. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-1-000_0.png +0 -0
  283. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-1-000_1.png +0 -0
  284. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-1-001_0.png +0 -0
  285. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-1-001_1.png +0 -0
  286. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-2-000_0.png +0 -0
  287. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-2-000_1.png +0 -0
  288. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-000_0.png +0 -0
  289. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-000_1.png +0 -0
  290. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-001_0.png +0 -0
  291. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-001_1.png +0 -0
  292. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-002_0.png +0 -0
  293. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-002_1.png +0 -0
  294. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-005_0.png +0 -0
  295. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-005_1.png +0 -0
  296. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-010_0.png +0 -0
  297. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-010_1.png +0 -0
  298. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-012_0.png +0 -0
  299. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-012_1.png +0 -0
  300. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-1-000_0.png +0 -0
  301. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-1-000_1.png +0 -0
  302. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-1-001_0.png +0 -0
  303. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-1-001_1.png +0 -0
  304. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-2-000_0.png +0 -0
  305. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-2-000_1.png +0 -0
  306. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-000_0.png +0 -0
  307. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-000_1.png +0 -0
  308. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-001_0.png +0 -0
  309. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-001_1.png +0 -0
  310. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-002_0.png +0 -0
  311. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-002_1.png +0 -0
  312. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-003_0.png +0 -0
  313. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-003_1.png +0 -0
  314. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-004_0.png +0 -0
  315. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-004_1.png +0 -0
  316. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-005_0.png +0 -0
  317. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-005_1.png +0 -0
  318. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-006_0.png +0 -0
  319. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-006_1.png +0 -0
  320. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-007_0.png +0 -0
  321. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-007_1.png +0 -0
  322. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-008_0.png +0 -0
  323. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-008_1.png +0 -0
  324. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-009_0.png +0 -0
  325. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-009_1.png +0 -0
  326. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-010_0.png +0 -0
  327. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-010_1.png +0 -0
  328. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-011_0.png +0 -0
  329. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-011_1.png +0 -0
  330. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-012_0.png +0 -0
  331. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-012_1.png +0 -0
  332. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-013_0.png +0 -0
  333. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-013_1.png +0 -0
  334. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-014_0.png +0 -0
  335. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-014_1.png +0 -0
  336. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-1-000_0.png +0 -0
  337. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-1-000_1.png +0 -0
  338. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-1-001_0.png +0 -0
  339. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-1-001_1.png +0 -0
  340. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-2-000_0.png +0 -0
  341. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-2-000_1.png +0 -0
  342. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-000_0.png +0 -0
  343. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-000_1.png +0 -0
  344. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-001_0.png +0 -0
  345. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-001_1.png +0 -0
  346. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-002_0.png +0 -0
  347. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-002_1.png +0 -0
  348. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-003_0.png +0 -0
  349. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-003_1.png +0 -0
  350. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-005_0.png +0 -0
  351. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-005_1.png +0 -0
  352. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-006_0.png +0 -0
  353. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-006_1.png +0 -0
  354. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-007_0.png +0 -0
  355. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-007_1.png +0 -0
  356. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-008_0.png +0 -0
  357. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-008_1.png +0 -0
  358. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-009_0.png +0 -0
  359. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-009_1.png +0 -0
  360. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-010_0.png +0 -0
  361. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-010_1.png +0 -0
  362. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-011_0.png +0 -0
  363. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-011_1.png +0 -0
  364. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-012_0.png +0 -0
  365. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-012_1.png +0 -0
  366. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-013_0.png +0 -0
  367. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-013_1.png +0 -0
  368. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-014_0.png +0 -0
  369. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-014_1.png +0 -0
  370. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-1-000_0.png +0 -0
  371. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-1-000_1.png +0 -0
  372. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-1-001_0.png +0 -0
  373. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-1-001_1.png +0 -0
  374. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-2-000_0.png +0 -0
  375. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-2-000_1.png +0 -0
  376. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-000_0.png +0 -0
  377. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-000_1.png +0 -0
  378. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-001_0.png +0 -0
  379. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-001_1.png +0 -0
  380. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-002_0.png +0 -0
  381. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-002_1.png +0 -0
  382. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-004_0.png +0 -0
  383. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-004_1.png +0 -0
  384. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-005_0.png +0 -0
  385. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-005_1.png +0 -0
  386. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-006_0.png +0 -0
  387. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-006_1.png +0 -0
  388. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-011_0.png +0 -0
  389. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-011_1.png +0 -0
  390. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-012_0.png +0 -0
  391. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-012_1.png +0 -0
  392. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-013_0.png +0 -0
  393. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-013_1.png +0 -0
  394. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-014_0.png +0 -0
  395. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-014_1.png +0 -0
  396. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-1-000_0.png +0 -0
  397. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-1-001_0.png +0 -0
  398. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-1-001_1.png +0 -0
  399. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-2-000_0.png +0 -0
  400. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-2-000_1.png +0 -0
  401. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-000_0.png +0 -0
  402. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-000_1.png +0 -0
  403. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-002_0.png +0 -0
  404. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-002_1.png +0 -0
  405. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-003_0.png +0 -0
  406. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-003_1.png +0 -0
  407. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-004_0.png +0 -0
  408. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-004_1.png +0 -0
  409. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-005_0.png +0 -0
  410. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-005_1.png +0 -0
  411. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-006_0.png +0 -0
  412. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-006_1.png +0 -0
  413. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-007_0.png +0 -0
  414. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-007_1.png +0 -0
  415. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-008_0.png +0 -0
  416. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-010_0.png +0 -0
  417. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-010_1.png +0 -0
  418. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-011_0.png +0 -0
  419. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-011_1.png +0 -0
  420. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-012_0.png +0 -0
  421. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-012_1.png +0 -0
  422. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-013_0.png +0 -0
  423. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-013_1.png +0 -0
  424. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-1-000_0.png +0 -0
  425. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-1-000_1.png +0 -0
  426. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-1-001_0.png +0 -0
  427. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-1-001_1.png +0 -0
  428. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-2-000_0.png +0 -0
  429. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-2-000_1.png +0 -0
  430. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-000_0.png +0 -0
  431. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-000_1.png +0 -0
  432. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-001_0.png +0 -0
  433. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-001_1.png +0 -0
  434. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-002_0.png +0 -0
  435. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-002_1.png +0 -0
  436. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-003_0.png +0 -0
  437. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-003_1.png +0 -0
  438. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-004_0.png +0 -0
  439. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-004_1.png +0 -0
  440. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-005_0.png +0 -0
  441. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-005_1.png +0 -0
  442. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-006_0.png +0 -0
  443. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-006_1.png +0 -0
  444. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-007_0.png +0 -0
  445. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-007_1.png +0 -0
  446. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-008_0.png +0 -0
  447. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-008_1.png +0 -0
  448. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-009_0.png +0 -0
  449. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-009_1.png +0 -0
  450. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-010_0.png +0 -0
  451. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-010_1.png +0 -0
  452. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-011_0.png +0 -0
  453. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-011_1.png +0 -0
  454. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-012_0.png +0 -0
  455. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-012_1.png +0 -0
  456. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-013_0.png +0 -0
  457. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-013_1.png +0 -0
  458. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-1-000_0.png +0 -0
  459. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-1-000_1.png +0 -0
  460. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-1-001_0.png +0 -0
  461. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-1-001_1.png +0 -0
  462. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-2-000_0.png +0 -0
  463. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-2-000_1.png +0 -0
  464. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-000_0.png +0 -0
  465. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-000_1.png +0 -0
  466. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-001_0.png +0 -0
  467. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-001_1.png +0 -0
  468. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-002_0.png +0 -0
  469. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-002_1.png +0 -0
  470. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-004_0.png +0 -0
  471. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-004_1.png +0 -0
  472. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-005_0.png +0 -0
  473. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-005_1.png +0 -0
  474. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-006_0.png +0 -0
  475. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-006_1.png +0 -0
  476. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-007_0.png +0 -0
  477. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-007_1.png +0 -0
  478. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-008_1.png +0 -0
  479. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-009_0.png +0 -0
  480. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-009_1.png +0 -0
  481. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-010_0.png +0 -0
  482. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-010_1.png +0 -0
  483. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-011_0.png +0 -0
  484. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-011_1.png +0 -0
  485. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-012_0.png +0 -0
  486. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-012_1.png +0 -0
  487. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-013_0.png +0 -0
  488. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-013_1.png +0 -0
  489. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-1-000_0.png +0 -0
  490. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-1-000_1.png +0 -0
  491. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-1-001_0.png +0 -0
  492. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-1-001_1.png +0 -0
  493. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-2-000_0.png +0 -0
  494. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-2-000_1.png +0 -0
  495. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-000_0.png +0 -0
  496. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-000_1.png +0 -0
  497. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-001_0.png +0 -0
  498. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-001_1.png +0 -0
  499. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-002_0.png +0 -0
  500. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-002_1.png +0 -0
  501. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-003_0.png +0 -0
  502. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-003_1.png +0 -0
  503. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-004_0.png +0 -0
  504. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-004_1.png +0 -0
  505. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-006_0.png +0 -0
  506. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-006_1.png +0 -0
  507. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-007_0.png +0 -0
  508. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-007_1.png +0 -0
  509. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-008_0.png +0 -0
  510. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-008_1.png +0 -0
  511. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-009_0.png +0 -0
  512. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-009_1.png +0 -0
  513. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-010_0.png +0 -0
  514. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-010_1.png +0 -0
  515. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-011_0.png +0 -0
  516. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-011_1.png +0 -0
  517. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-012_0.png +0 -0
  518. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-012_1.png +0 -0
  519. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-013_0.png +0 -0
  520. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-013_1.png +0 -0
  521. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-014_0.png +0 -0
  522. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-014_1.png +0 -0
  523. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-1-000_0.png +0 -0
  524. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-1-000_1.png +0 -0
  525. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-1-001_0.png +0 -0
  526. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-1-001_1.png +0 -0
  527. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-2-000_0.png +0 -0
  528. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-2-000_1.png +0 -0
  529. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-000_0.png +0 -0
  530. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-000_1.png +0 -0
  531. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-001_0.png +0 -0
  532. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-001_1.png +0 -0
  533. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-002_0.png +0 -0
  534. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-002_1.png +0 -0
  535. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-003_0.png +0 -0
  536. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-003_1.png +0 -0
  537. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-005_0.png +0 -0
  538. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-005_1.png +0 -0
  539. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-006_0.png +0 -0
  540. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-006_1.png +0 -0
  541. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-007_0.png +0 -0
  542. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-007_1.png +0 -0
  543. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-008_0.png +0 -0
  544. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-008_1.png +0 -0
  545. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-009_0.png +0 -0
  546. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-009_1.png +0 -0
  547. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-010_0.png +0 -0
  548. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-010_1.png +0 -0
  549. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-011_0.png +0 -0
  550. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-011_1.png +0 -0
  551. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-012_0.png +0 -0
  552. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-012_1.png +0 -0
  553. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-013_0.png +0 -0
  554. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-013_1.png +0 -0
  555. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-014_0.png +0 -0
  556. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-014_1.png +0 -0
  557. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-1-000_0.png +0 -0
  558. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-1-000_1.png +0 -0
  559. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-1-001_0.png +0 -0
  560. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-1-001_1.png +0 -0
  561. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-2-000_0.png +0 -0
  562. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-2-000_1.png +0 -0
  563. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-000_0.png +0 -0
  564. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-000_1.png +0 -0
  565. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-001_0.png +0 -0
  566. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-001_1.png +0 -0
  567. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-002_0.png +0 -0
  568. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-002_1.png +0 -0
  569. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-003_0.png +0 -0
  570. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-003_1.png +0 -0
  571. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-004_0.png +0 -0
  572. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-004_1.png +0 -0
  573. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-006_0.png +0 -0
  574. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-006_1.png +0 -0
  575. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-007_0.png +0 -0
  576. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-007_1.png +0 -0
  577. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-008_0.png +0 -0
  578. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-008_1.png +0 -0
  579. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-009_0.png +0 -0
  580. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-009_1.png +0 -0
  581. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-010_0.png +0 -0
  582. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-010_1.png +0 -0
  583. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-011_0.png +0 -0
  584. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-011_1.png +0 -0
  585. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-012_0.png +0 -0
  586. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-012_1.png +0 -0
  587. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-013_0.png +0 -0
  588. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-013_1.png +0 -0
  589. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-014_0.png +0 -0
  590. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-014_1.png +0 -0
  591. {kotonebot/kaa → kaa}/sprites/00551158-fee9-483f-b034-549139a96f58.png +0 -0
  592. /kotonebot/kaa/sprites/b46e004e-7b2d-48ba-913d-afad70d839fd.png → /kaa/sprites/03f4353c-4160-46d1-97cc-474d7f797f1f.png +0 -0
  593. /kotonebot/kaa/sprites/48491f5d-9c1f-4705-8958-5e9698d71d84.png → /kaa/sprites/055e54c9-753e-4f8b-b6ea-17dc8e0afb61.png +0 -0
  594. {kotonebot/kaa → kaa}/sprites/05890a1b-8764-4e9f-9d21-65d292c22e13.png +0 -0
  595. /kotonebot/kaa/sprites/0a9f84bd-74ca-4e08-855d-05f49e786b6d.png → /kaa/sprites/06349609-2e10-483b-91b6-bc590d27d2c5.png +0 -0
  596. /kotonebot/kaa/sprites/06463280-d775-4261-8fc8-3fe1377cb1d2.png → /kaa/sprites/06842e56-3de1-4076-81c4-bd5466d2eff5.png +0 -0
  597. {kotonebot/kaa → kaa}/sprites/0949c622-9067-4f0d-bac2-3f938a1d2ed2.png +0 -0
  598. /kotonebot/kaa/sprites/f3940227-b533-436d-b8b0-b26afc53de12.png → /kaa/sprites/0a41bec8-19c0-483f-848b-1c79f47debbe.png +0 -0
  599. /kotonebot/kaa/sprites/74446b0d-4252-4954-9166-efe6739a1cba.png → /kaa/sprites/0b279fb0-0c30-4767-bf71-4d34cc1ee9cf.png +0 -0
  600. {kotonebot/kaa → kaa}/sprites/0bf5e34e-afc6-4447-bbac-67026ce2ad26.png +0 -0
  601. {kotonebot/kaa → kaa}/sprites/0c0627be-4a09-4450-a078-1858d3ace532.png +0 -0
  602. /kotonebot/kaa/sprites/296c476e-f1ef-49d3-bf05-029938163b2e.png → /kaa/sprites/0c54e162-a97e-402c-a0e6-7ec47e28b788.png +0 -0
  603. /kotonebot/kaa/sprites/0e65c99e-31c6-4ee8-b116-731adf836e63.png → /kaa/sprites/0c78b400-5b9c-4c3c-8973-372d6a10ecd6.png +0 -0
  604. {kotonebot/kaa → kaa}/sprites/0d9ac648-eefa-4869-ac99-1b0c83649681.png +0 -0
  605. {kotonebot/kaa → kaa}/sprites/0f7d581d-cea3-4039-9205-732e4cd29293.png +0 -0
  606. /kotonebot/kaa/sprites/239cdf33-ea11-48bf-8586-0b843af9654f.png → /kaa/sprites/10ef2258-ffc2-4d94-b059-01d2d7f02e2c.png +0 -0
  607. /kotonebot/kaa/sprites/2e27e0b3-5b06-4ac5-915a-d7e1f58d184a.png → /kaa/sprites/10f6e608-9ebb-4198-aaf6-cb2a932891ee.png +0 -0
  608. /kotonebot/kaa/sprites/8d2bedbc-a5b3-4da3-b988-412eae0f8df7.png → /kaa/sprites/124ffbb0-eed0-4bd9-9f2d-145746eb27a0.png +0 -0
  609. /kotonebot/kaa/sprites/51a3aaab-9992-4585-a0e0-3558414aa179.png → /kaa/sprites/134c72e0-4c66-412e-921d-f21d975bfc07.png +0 -0
  610. /kotonebot/kaa/sprites/99b225de-b83c-44a3-ab1a-090800021dc0.png → /kaa/sprites/1522d76b-a91f-4f4e-b3df-02276e7249c8.png +0 -0
  611. {kotonebot/kaa → kaa}/sprites/1652f06a-5417-49ef-8949-4854772d9ab7.png +0 -0
  612. /kotonebot/kaa/sprites/ca8d401f-2b4c-4ae8-bbc1-3a7c1d664079.png → /kaa/sprites/16532eae-670d-4708-9396-0dc4070c3027.png +0 -0
  613. /kotonebot/kaa/sprites/77fedc1c-a49c-4487-affd-fcf220148581.png → /kaa/sprites/166d2598-e912-4891-9377-945048ac094a.png +0 -0
  614. {kotonebot/kaa → kaa}/sprites/16fbc93d-b294-4001-b4e9-ee2af181415f.png +0 -0
  615. {kotonebot/kaa → kaa}/sprites/185f7838-92a7-460b-9340-f60858948ce9.png +0 -0
  616. /kotonebot/kaa/sprites/bd4e379e-ac4f-4d88-a0c9-5066aa1561f4.png → /kaa/sprites/18ec006e-1a82-45de-9e53-10c54ef1de59.png +0 -0
  617. {kotonebot/kaa → kaa}/sprites/1926f2f9-4bd7-48eb-9eba-28ec4efb0606.png +0 -0
  618. /kotonebot/kaa/sprites/4a75182a-fc2f-4386-84d6-f8307c7f81cb.png → /kaa/sprites/1b9c5c23-d6b0-4d6c-9cdf-9f5bcc718412.png +0 -0
  619. /kotonebot/kaa/sprites/27b9f0e1-78be-40b4-8b71-241610f5f5bb.png → /kaa/sprites/1b9f7964-d562-437c-a055-7f5381a740d5.png +0 -0
  620. /kotonebot/kaa/sprites/2dde5965-3b96-4d9b-bc1d-cbd8076f3fdc.png → /kaa/sprites/1c04c78a-ad02-4b0a-a4b6-a2ef16134100.png +0 -0
  621. /kotonebot/kaa/sprites/e766edc0-ebd2-44aa-9ddc-f1915d27d43a.png → /kaa/sprites/1dce8db2-8183-45f5-aaa6-00b4625883d4.png +0 -0
  622. {kotonebot/kaa → kaa}/sprites/213016c2-c3a2-43d8-86a3-ab4d27666ced.png +0 -0
  623. {kotonebot/kaa → kaa}/sprites/23d88465-65d9-4718-8725-8dbf0a98a5a4.png +0 -0
  624. /kotonebot/kaa/sprites/a12e5285-3339-4268-9c73-3f6f8ec653b2.png → /kaa/sprites/2404d43a-95b5-4bba-9de3-f8a854612701.png +0 -0
  625. /kotonebot/kaa/sprites/ec9bee13-28ec-4439-bf2d-07b9724fb9e2.png → /kaa/sprites/24cb2b15-d55b-4fcd-b02a-81ec7b56cdb6.png +0 -0
  626. {kotonebot/kaa → kaa}/sprites/24dc7158-036c-4a66-9280-e934f470be53.png +0 -0
  627. {kotonebot/kaa → kaa}/sprites/24e99232-9434-457f-a9a0-69dd7ecf675f.png +0 -0
  628. {kotonebot/kaa → kaa}/sprites/25f00ee3-8dfe-42d1-a67e-191fa5c3df4b.png +0 -0
  629. /kotonebot/kaa/sprites/3ba7d5d3-1e87-46c7-b40b-2acb941df147.png → /kaa/sprites/2a82a975-d4a4-44a5-9755-867f06e6969e.png +0 -0
  630. /kotonebot/kaa/sprites/0d15f610-49e3-4709-bd0c-deeb74e67bf1.png → /kaa/sprites/2ace1e32-3a6c-4a7e-951c-3c5e216e190e.png +0 -0
  631. /kotonebot/kaa/sprites/e7fdba1a-b8b5-4fa3-a401-a36611b05f8e.png → /kaa/sprites/2b406314-82d8-407b-a2e6-85b6c67f19f1.png +0 -0
  632. {kotonebot/kaa → kaa}/sprites/2bd6fe88-99fa-443d-8e42-bb3de5881213.png +0 -0
  633. /kotonebot/kaa/sprites/4a0a4f83-d0bb-444e-b06c-cc6b513e2710.png → /kaa/sprites/2c7e603e-4524-48f6-afb6-3b226292b5d5.png +0 -0
  634. /kotonebot/kaa/sprites/2f03c1ad-c86d-4f54-9fa7-b455a4795400.png → /kaa/sprites/2c9318f4-4aa3-4803-a93f-f39b0177c49f.png +0 -0
  635. {kotonebot/kaa → kaa}/sprites/2ededcf5-1d80-4e2a-9c83-2a31998331ce.png +0 -0
  636. /kotonebot/kaa/sprites/e84ec669-51a0-4ec0-a2de-31f3c9c34c3e.png → /kaa/sprites/2fa93a4b-b104-4b35-9ddb-c3098cc6ac8d.png +0 -0
  637. /kotonebot/kaa/sprites/69c2c61a-6a20-47d0-8c98-989da3a20d9a.png → /kaa/sprites/3024ea29-3c2a-494f-99c6-f48c90b9e157.png +0 -0
  638. {kotonebot/kaa → kaa}/sprites/303cccc1-c674-4d3a-8c89-19ea729fdbef.png +0 -0
  639. {kotonebot/kaa → kaa}/sprites/30a6f399-6999-4f04-bb77-651e0214112f.png +0 -0
  640. /kotonebot/kaa/sprites/d582f1dc-c4ad-4db2-9596-143a7b52c769.png → /kaa/sprites/30e3c754-4231-481c-9bf2-ba532503cbd8.png +0 -0
  641. /kotonebot/kaa/sprites/319af0d0-81fa-4a28-a8bb-d026bc3f58f4.png → /kaa/sprites/30ea28ac-a7c3-4f60-aaf6-2e641a760ba6.png +0 -0
  642. /kotonebot/kaa/sprites/55e94211-7dc4-4aed-a366-7ee166d9477a.png → /kaa/sprites/321ee0f9-c89f-4abd-bc7b-020429326361.png +0 -0
  643. /kotonebot/kaa/sprites/dc9e169e-c77d-4cff-9126-4e7165a97723.png → /kaa/sprites/35935996-53ad-47e5-b821-879945df3167.png +0 -0
  644. {kotonebot/kaa → kaa}/sprites/3942ae40-7f22-412c-aebe-4b064f68db9b.png +0 -0
  645. /kotonebot/kaa/sprites/4623e9f7-301f-457e-afcb-4f51da973e5f.png → /kaa/sprites/3b2ccce1-2507-4cfe-afd7-6c584c73fc52.png +0 -0
  646. {kotonebot/kaa → kaa}/sprites/3b473fe6-e147-477f-b088-9b8fb042a4f6.png +0 -0
  647. {kotonebot/kaa → kaa}/sprites/3c8b477a-8eda-407e-9e9f-7540c8808f89.png +0 -0
  648. /kotonebot/kaa/sprites/872f2721-832d-4687-89ff-91d60dab5e95.png → /kaa/sprites/3f53fe69-f49e-4a34-86bd-608c74e4f33b.png +0 -0
  649. {kotonebot/kaa → kaa}/sprites/3f637e86-6b74-4693-9131-1fe411fc21e5.png +0 -0
  650. /kotonebot/kaa/sprites/4e18315b-30d0-44c9-9f47-733b6dcf045e.png → /kaa/sprites/3f955b28-d82b-4bff-bc90-0b579d7b8304.png +0 -0
  651. /kotonebot/kaa/sprites/e46db326-e080-43ad-8e4c-0c127190f9fb.png → /kaa/sprites/3ff71180-76ef-4325-bc67-606bca5bbd8e.png +0 -0
  652. {kotonebot/kaa → kaa}/sprites/4096cffa-a889-4622-852e-760fc7022d93.png +0 -0
  653. /kotonebot/kaa/sprites/af2fe104-cb93-4dd1-b3f1-c756a1dda704.png → /kaa/sprites/41ebad4c-2047-42b4-a008-29db3e918045.png +0 -0
  654. /kotonebot/kaa/sprites/1c48f547-83bd-4422-963b-5e4bd354e78c.png → /kaa/sprites/43c3ca7f-4d38-4d03-bb68-fa7e0465612a.png +0 -0
  655. /kotonebot/kaa/sprites/d30cf21a-b6f4-4b6f-93a4-aab23119f1ed.png → /kaa/sprites/4454792c-6ebf-4b96-af13-ef1d12531314.png +0 -0
  656. {kotonebot/kaa → kaa}/sprites/447d0e44-5d87-4b7c-8e60-edb111fe1639.png +0 -0
  657. {kotonebot/kaa → kaa}/sprites/44ba8515-4a60-42c9-8878-b42e4e34ee15.png +0 -0
  658. {kotonebot/kaa → kaa}/sprites/4503db6b-7224-4b81-9971-e7cfa56e10f2.png +0 -0
  659. /kotonebot/kaa/sprites/0a524c79-43f4-4ed5-b292-2af9392d6399.png → /kaa/sprites/45a97ef7-99ef-4ea9-8329-1b0577647bc0.png +0 -0
  660. {kotonebot/kaa → kaa}/sprites/4695f96b-c4f5-4bb6-a021-a13b6ceb2883.png +0 -0
  661. {kotonebot/kaa → kaa}/sprites/4883c564-f950-4a29-9f5f-6f924123cd22.png +0 -0
  662. {kotonebot/kaa → kaa}/sprites/4d78add6-1027-4939-bb51-f99fca7db2ce.png +0 -0
  663. /kotonebot/kaa/sprites/e113807f-d73f-484f-a74a-63194b9e340b.png → /kaa/sprites/4f3c19db-154c-438d-b93c-3cc6ad1bc603.png +0 -0
  664. /kotonebot/kaa/sprites/2c965b6e-cde2-4073-9ab3-752766033714.png → /kaa/sprites/4f43aab0-06ef-47e2-9aea-82153cf73d89.png +0 -0
  665. /kotonebot/kaa/sprites/3ae39c9f-670a-4696-9879-16b6ff17dd4c.png → /kaa/sprites/4f4b72d5-61c5-4d76-a265-84d5c376de80.png +0 -0
  666. {kotonebot/kaa → kaa}/sprites/5031808b-5525-4118-92b4-317ec8bda985.png +0 -0
  667. {kotonebot/kaa → kaa}/sprites/50e23c8a-7ba2-4c9c-9cfb-196c260fa1d5.png +0 -0
  668. {kotonebot/kaa → kaa}/sprites/55f7db71-0a18-4b3d-b847-57959b8d2e32.png +0 -0
  669. /kotonebot/kaa/sprites/36a5c003-eddd-4183-8233-0e59984bf96b.png → /kaa/sprites/57cdefa6-4168-43f6-b584-a15b46114277.png +0 -0
  670. {kotonebot/kaa → kaa}/sprites/582d36c0-0916-4706-9833-4fbc026701f5.png +0 -0
  671. /kotonebot/kaa/sprites/1fce7123-6940-44ff-87e9-816888c123e6.png → /kaa/sprites/589bfdd8-9d3a-4c19-a2e6-116824350b6e.png +0 -0
  672. /kotonebot/kaa/sprites/a73da379-305f-4597-a212-13599d43d008.png → /kaa/sprites/5c99c6b4-8a09-4e34-a5a9-496e1188b3b5.png +0 -0
  673. {kotonebot/kaa → kaa}/sprites/5d36b880-7b3f-49b1-a018-7de59867d376.png +0 -0
  674. {kotonebot/kaa → kaa}/sprites/5ebcde3b-f0fd-4e5d-b3de-ada8f0b5e03b.png +0 -0
  675. /kotonebot/kaa/sprites/1844b18c-7889-48d1-aa21-6e4021c8acca.png → /kaa/sprites/5fc9e5c2-a8cb-43e3-b0c2-9bca4877b44b.png +0 -0
  676. /kotonebot/kaa/sprites/8516b064-77a4-48bc-a83a-2b9e6cf2ce92.png → /kaa/sprites/686bfe8b-787c-4ad8-852e-0e2c58f6dc42.png +0 -0
  677. /kotonebot/kaa/sprites/31ecdbd3-31a2-43f4-9992-98d8e9e78e77.png → /kaa/sprites/69ac12a4-5ab2-4e64-9508-688b1e7dfdd5.png +0 -0
  678. {kotonebot/kaa → kaa}/sprites/6b58d90d-2e5e-4b7f-bc01-941f2633de89.png +0 -0
  679. {kotonebot/kaa → kaa}/sprites/6cd80be8-c9b3-4ba5-bf17-3ffc9b000743.png +0 -0
  680. /kotonebot/kaa/sprites/40492316-8c69-456e-bf24-0dc183bf9c67.png → /kaa/sprites/6e5a4c13-1e63-4b23-a19f-6d8f4f899b38.png +0 -0
  681. {kotonebot/kaa → kaa}/sprites/70898bf8-56c5-4f84-becb-629c9ab6a7da.png +0 -0
  682. /kotonebot/kaa/sprites/30835199-31a9-4506-90a6-0e79244d3354.png → /kaa/sprites/715591f4-19db-4dba-a313-d728ec8aa9f3.png +0 -0
  683. /kotonebot/kaa/sprites/1947ef8e-27bc-4f12-ab61-c6fa6d7b08a3.png → /kaa/sprites/71da60b3-a0c2-4211-ba8b-a60a87d046d6.png +0 -0
  684. /kotonebot/kaa/sprites/d393a411-5ca5-4632-80a9-232683a28f9b.png → /kaa/sprites/7303cb87-5d31-4725-b40f-4a71b054a473.png +0 -0
  685. {kotonebot/kaa → kaa}/sprites/74ec3510-583d-4a76-ac69-38480fbf1387.png +0 -0
  686. /kotonebot/kaa/sprites/1230edb1-7c06-4770-a428-f29c7b63b3bb.png → /kaa/sprites/75636434-d148-4855-9a28-7624e066fc43.png +0 -0
  687. /kotonebot/kaa/sprites/79f791f0-9a08-4a59-92e0-3a8b782f2894.png → /kaa/sprites/7626a19a-53ce-44f9-8038-5d5f6cb400ec.png +0 -0
  688. /kotonebot/kaa/sprites/5c447f0f-ce99-4e66-b316-23b40d037614.png → /kaa/sprites/7644328c-160c-49b0-8040-5de2191acade.png +0 -0
  689. /kotonebot/kaa/sprites/0a6f764f-f967-4172-afcf-dc437e08a0c7.png → /kaa/sprites/781b0414-4530-47a3-a2b2-dcaa22043bfa.png +0 -0
  690. /kotonebot/kaa/sprites/791f5210-957d-41ca-9d38-0de9b1cefee4.png → /kaa/sprites/785e477b-0917-40f3-ad98-0458b816bfa2.png +0 -0
  691. /kotonebot/kaa/sprites/48850095-5e21-4a56-8e82-2c4686752be2.png → /kaa/sprites/78ce3025-c313-4dee-9097-96bb0b428584.png +0 -0
  692. {kotonebot/kaa → kaa}/sprites/79abd239-5eed-4195-9fa8-d729daa874ca.png +0 -0
  693. /kotonebot/kaa/sprites/17ac77d9-4649-419d-9f5e-8a98fab36967.png → /kaa/sprites/7b0c2c89-8a01-40ee-bfec-f6bd36e3ebd0.png +0 -0
  694. /kotonebot/kaa/sprites/63c47481-99f1-4171-8990-fb0f1d17f933.png → /kaa/sprites/7eace29d-0d92-47b2-a6b2-8616fe1f1628.png +0 -0
  695. /kotonebot/kaa/sprites/ae2af935-63d8-45ee-a393-e9fb7c3996d2.png → /kaa/sprites/7fba4fb5-fe30-44c5-90ca-23c40b3e78fb.png +0 -0
  696. {kotonebot/kaa → kaa}/sprites/81c97cd3-df53-44d3-bf3d-1eb4dc67b62a.png +0 -0
  697. {kotonebot/kaa → kaa}/sprites/835489e2-b29b-426c-b4c9-3bb9f8eb6195.png +0 -0
  698. {kotonebot/kaa → kaa}/sprites/83d0a033-466c-463a-bb8c-be0f2953e9b2.png +0 -0
  699. {kotonebot/kaa → kaa}/sprites/8424ecdd-8857-4764-9fd0-d4bfa440c128.png +0 -0
  700. /kotonebot/kaa/sprites/ae359ca3-7463-4d4b-acd0-be946da03cee.png → /kaa/sprites/8831d905-96e9-454c-9b18-12717a868244.png +0 -0
  701. /kotonebot/kaa/sprites/7b0d3cac-46a0-40db-a6c9-81de66a3488d.png → /kaa/sprites/88563ae3-26a5-43b6-92f0-8200639d9dfc.png +0 -0
  702. /kotonebot/kaa/sprites/202167a5-e786-473e-a5e3-3899e1b552f9.png → /kaa/sprites/8b0d963b-5430-4686-97e5-0c7ccdf4a0c9.png +0 -0
  703. /kotonebot/kaa/sprites/0bfb5cdf-47aa-4732-bdd5-6708a3a5a8b9.png → /kaa/sprites/8b248585-c463-4a01-b189-7bda5f30c508.png +0 -0
  704. {kotonebot/kaa → kaa}/sprites/8c179a21-be6f-4db8-a9b0-9afeb5c36b1c.png +0 -0
  705. {kotonebot/kaa → kaa}/sprites/8ded6c98-85ea-4858-a66d-4fc8caecb7c5.png +0 -0
  706. /kotonebot/kaa/sprites/97661998-4233-4f75-9975-0ebf342a9b4b.png → /kaa/sprites/8f76e6f2-4069-421e-9867-7212e17f7fb3.png +0 -0
  707. {kotonebot/kaa → kaa}/sprites/8f8b7b46-53bb-42ab-907a-4ea87eb09ab4.png +0 -0
  708. /kotonebot/kaa/sprites/52dd4b67-653b-4948-9640-39fcfd1eed8d.png → /kaa/sprites/8fbd928c-1eff-4dd6-8009-fd1a52c7eee5.png +0 -0
  709. /kotonebot/kaa/sprites/05a955be-befc-45df-875e-fb56e87ae36a.png → /kaa/sprites/9066e428-a248-46f5-9309-13a7f1ec608e.png +0 -0
  710. /kotonebot/kaa/sprites/5d2d0fce-6057-4bf0-a6c8-4d1c52bfdc0e.png → /kaa/sprites/90eb7800-7ec7-494d-91ee-8cec501b67a9.png +0 -0
  711. {kotonebot/kaa → kaa}/sprites/921eefeb-730e-46fc-9924-d338fb286592.png +0 -0
  712. {kotonebot/kaa → kaa}/sprites/9340b854-025c-40da-9387-385d38433bef.png +0 -0
  713. /kotonebot/kaa/sprites/87959194-67a2-4dc9-858e-1c6870471c72.png → /kaa/sprites/9469635b-8fef-470b-907e-f7491d144243.png +0 -0
  714. /kotonebot/kaa/sprites/b320f660-4c72-41ab-83b4-52f745b94f0a.png → /kaa/sprites/94a098bc-8a4e-41be-ac14-0d5528517241.png +0 -0
  715. /kotonebot/kaa/sprites/ca3032db-87af-4b3e-9b04-f035bfed128e.png → /kaa/sprites/95c0e57a-6983-4951-b7bc-863a3638a186.png +0 -0
  716. /kotonebot/kaa/sprites/3a187efe-0088-458b-9d6c-0421ea830663.png → /kaa/sprites/97adcebd-bf26-4155-bc64-ac7d3f59d419.png +0 -0
  717. /kotonebot/kaa/sprites/77a5aacd-ce76-4d2a-a0e9-f2f71ec10a61.png → /kaa/sprites/98699927-81c8-4ddc-a5fc-5d0fe03b4c72.png +0 -0
  718. /kotonebot/kaa/sprites/9e6d7026-b868-438a-a1ee-6c8877ede4bb.png → /kaa/sprites/9ab2e90a-6f3a-442a-a0eb-10a935514656.png +0 -0
  719. /kotonebot/kaa/sprites/93af71c3-2ed1-4332-be42-b508566a44df.png → /kaa/sprites/9ab3a1a5-40d6-45ca-873d-22c270f264ea.png +0 -0
  720. /kotonebot/kaa/sprites/dc179828-b29f-450f-b533-fc5a7dc6ce81.png → /kaa/sprites/9b70d18f-52b6-4616-9e05-c1c52cb4df7a.png +0 -0
  721. /kotonebot/kaa/sprites/b0013c51-4ff3-47c7-8075-4b4a6bd449d4.png → /kaa/sprites/9e893645-1ed3-4cc9-8dea-dad90617f61a.png +0 -0
  722. {kotonebot/kaa → kaa}/sprites/9fd0753f-c607-4d49-82d1-40bda27e014f.png +0 -0
  723. {kotonebot/interop/win → kaa/sprites}/__init__.py +0 -0
  724. {kotonebot/kaa → kaa}/sprites/a0bd6a5f-784d-4f0a-9d66-10f4b80c8d3e.png +0 -0
  725. {kotonebot/kaa → kaa}/sprites/a1df3af1-a3e7-4521-a085-e4dc3cd1cc57.png +0 -0
  726. /kotonebot/kaa/sprites/b892fb61-fbab-4ebf-a5d3-bd053981aeff.png → /kaa/sprites/a227e737-e250-483e-ab27-920a050949d5.png +0 -0
  727. {kotonebot/kaa → kaa}/sprites/a48324ae-7c1a-489e-b3c4-93d12267f88d.png +0 -0
  728. /kotonebot/kaa/sprites/bede98dc-85ad-4e28-a51b-dce6a0352f0a.png → /kaa/sprites/a552aef0-ddff-4f6f-a4a2-01961cd4456a.png +0 -0
  729. /kotonebot/kaa/sprites/34dc25b7-26b5-436d-958a-e7cd16f19300.png → /kaa/sprites/a6075d44-059b-41b1-b85b-c788465dfd28.png +0 -0
  730. /kotonebot/kaa/sprites/3ef36a70-6be8-459f-b7a8-e46f1f58508f.png → /kaa/sprites/a6aa055f-298c-4695-8efd-492159f832f5.png +0 -0
  731. /kotonebot/kaa/sprites/29f38481-3b5f-464c-9c24-fe80615253d9.png → /kaa/sprites/a8c555f5-d7d5-4ffd-85c7-1fc8bd1014df.png +0 -0
  732. {kotonebot/kaa → kaa}/sprites/a9fcaf04-0c1f-4b0f-bb5b-ede9da96180f.png +0 -0
  733. /kotonebot/kaa/sprites/23053a1e-08a5-4d99-85a5-e04148119d76.png → /kaa/sprites/ab075e3f-963f-4a55-9fed-6e4eb9f2c553.png +0 -0
  734. /kotonebot/kaa/sprites/d0b26ad1-5c22-46ac-b39b-20692ba0fbb7.png → /kaa/sprites/ab984712-9e57-4c42-ac5e-f90079f2902a.png +0 -0
  735. {kotonebot/kaa → kaa}/sprites/adc533a7-970b-4c5b-a037-2181531a35d6.png +0 -0
  736. {kotonebot/kaa → kaa}/sprites/ae9fe233-9acc-4e96-ba8e-1fb1d9bc2ea5.png +0 -0
  737. {kotonebot/kaa → kaa}/sprites/b0283997-7931-476d-a92f-d7569f6ea34c.png +0 -0
  738. /kotonebot/kaa/sprites/ff1c7645-59e9-4f9d-b130-93c2c8b00cef.png → /kaa/sprites/b14d0a2e-9ba8-4196-aafb-beeee7f51767.png +0 -0
  739. /kotonebot/kaa/sprites/102bf857-2bd4-4e84-9a01-45f782cba6d6.png → /kaa/sprites/b21fa3a4-1aab-46a2-be7a-01d548f2ea9d.png +0 -0
  740. {kotonebot/kaa → kaa}/sprites/b2af59e9-60e3-4d97-8c72-c7ba092113a3.png +0 -0
  741. /kotonebot/kaa/sprites/2f35947b-f873-4f31-869e-7d7a1b7cef74.png → /kaa/sprites/b2c45f1d-e548-4eba-b306-b5eb356ff29b.png +0 -0
  742. {kotonebot/kaa → kaa}/sprites/b2e1bf3c-2c36-4fb5-9db7-c10a29563a37.png +0 -0
  743. /kotonebot/kaa/sprites/cb061e0c-3715-47f3-8b45-b5981731676b.png → /kaa/sprites/b341f18a-dfcc-4387-b146-061b308f5bea.png +0 -0
  744. {kotonebot/kaa → kaa}/sprites/b62bf889-da3c-495a-8707-f3bde73efe92.png +0 -0
  745. {kotonebot/kaa → kaa}/sprites/b6b94f21-ef4b-4425-9c7e-ca2b574b0add.png +0 -0
  746. /kotonebot/kaa/sprites/82a136e5-9d9c-4905-8cfe-ca64f774faff.png → /kaa/sprites/ba1b392d-ad28-4668-8b91-94d161d1a16d.png +0 -0
  747. /kotonebot/kaa/sprites/2eb3f479-b995-4502-b456-bd37281f3bae.png → /kaa/sprites/ba45b90d-0e6f-4188-a0df-069e2a6914bd.png +0 -0
  748. {kotonebot/kaa → kaa}/sprites/bab6c393-692c-4681-ac0d-76c0d9dabea6.png +0 -0
  749. {kotonebot/kaa → kaa}/sprites/bc7155ac-18c9-4335-9ec2-c8762d37a057.png +0 -0
  750. /kotonebot/kaa/sprites/5b3df718-9933-4462-8145-58ed8f0a3c2f.png → /kaa/sprites/be5c90c5-da5f-40d5-bc5a-3d677abc5795.png +0 -0
  751. /kotonebot/kaa/sprites/71d8c88f-e91e-4f78-bcef-84bb34d65f38.png → /kaa/sprites/bfb3a923-7b5e-439d-a19a-fd5150ec8443.png +0 -0
  752. /kotonebot/kaa/sprites/149cbb67-77b2-4f46-ba54-acd91e81bfd5.png → /kaa/sprites/c0c1a392-bc82-48c2-a304-0587e7038279.png +0 -0
  753. {kotonebot/kaa → kaa}/sprites/c3f536d6-a04a-4651-b3f9-dd2c22593f7f.png +0 -0
  754. {kotonebot/kaa → kaa}/sprites/c5b7d67e-7260-4f08-a0e9-4d31ce9bbecf.png +0 -0
  755. {kotonebot/kaa → kaa}/sprites/c78c38cc-7b61-4dc4-820d-0a5b684ef52e.png +0 -0
  756. /kotonebot/kaa/sprites/f35b5318-e598-4415-bea5-2c170e9a9c23.png → /kaa/sprites/c7daf7d5-42b0-4c38-be47-d3b957211e2a.png +0 -0
  757. /kotonebot/kaa/sprites/5dde9efd-2ba7-4776-9685-11846d021a42.png → /kaa/sprites/c916030c-dc67-4c88-9b86-390c8f66f0c8.png +0 -0
  758. {kotonebot/kaa → kaa}/sprites/c948f136-416f-447e-8152-54a1cd1d1329.png +0 -0
  759. {kotonebot/kaa → kaa}/sprites/c954e153-d3e9-4488-869f-d00cfdfac5ee.png +0 -0
  760. /kotonebot/kaa/sprites/a0c49e6f-2c82-43f6-91ae-907f22845e88.png → /kaa/sprites/ca80e346-d3d9-4228-9b92-373467dadadd.png +0 -0
  761. {kotonebot/kaa → kaa}/sprites/cb3d0ca7-8d14-408a-a2f5-2e25f7b86d6c.png +0 -0
  762. {kotonebot/kaa → kaa}/sprites/cbf4ce9c-f8d8-4fb7-a197-15bb9847df04.png +0 -0
  763. {kotonebot/kaa → kaa}/sprites/cc60b509-2ed5-493d-bb9f-333c6d2a6006.png +0 -0
  764. {kotonebot/kaa → kaa}/sprites/cc8a495d-330d-447d-8a80-a8a6ecc409c5.png +0 -0
  765. {kotonebot/kaa → kaa}/sprites/ccbcb114-7f73-43d1-904a-3a7ae660c531.png +0 -0
  766. {kotonebot/kaa → kaa}/sprites/ce1d1d6f-38f2-48bf-98bd-6e091c7ca5b8.png +0 -0
  767. {kotonebot/kaa → kaa}/sprites/ce20a856-5629-4f8e-a8e1-d1bd14e18e4f.png +0 -0
  768. /kotonebot/kaa/sprites/7d6d6c45-93f3-4332-aac6-6de9a34289ee.png → /kaa/sprites/cfa95767-6869-42c2-94ec-a2ffeca8179f.png +0 -0
  769. {kotonebot/kaa → kaa}/sprites/cfc9c8e8-cbe1-49f0-9afa-ead7f9455a2e.png +0 -0
  770. /kotonebot/kaa/sprites/2caa71d9-d1e4-48e0-92f7-89a5884a7db0.png → /kaa/sprites/d224df78-a15a-4edc-91c0-c6243c3c43b4.png +0 -0
  771. {kotonebot/kaa → kaa}/sprites/d271a24f-efe8-424d-8fd5-f6b3756ba4ca.png +0 -0
  772. /kotonebot/kaa/sprites/50d2efc0-cccd-4198-a7e9-2c2f6e598274.png → /kaa/sprites/d2d4752f-7c62-42d3-8d3a-f5d186bc0e0d.png +0 -0
  773. {kotonebot/kaa → kaa}/sprites/d3424d31-0502-4623-996e-f0194e5085ce.png +0 -0
  774. {kotonebot/kaa → kaa}/sprites/d3cc3323-51af-4882-ae12-49e7384b746d.png +0 -0
  775. /kotonebot/kaa/sprites/5e904d2f-6fed-4085-82e8-3134d1f942f6.png → /kaa/sprites/d4db176f-8597-4c3e-99e8-a7acc4012df8.png +0 -0
  776. /kotonebot/kaa/sprites/b8264207-a1f1-475a-9f92-492e6376ed9b.png → /kaa/sprites/d53b56af-153c-476c-bab5-1478a66eecb2.png +0 -0
  777. {kotonebot/kaa → kaa}/sprites/d6b64759-26b7-45b1-bf8e-5c0d98611e0d.png +0 -0
  778. /kotonebot/kaa/sprites/80d783a0-0de5-4c02-93b0-a5bed13ecb4f.png → /kaa/sprites/d727e802-443b-4f14-a448-caf53426c488.png +0 -0
  779. {kotonebot/kaa → kaa}/sprites/d7667903-7149-4f2f-9c15-d8a4b5f4d347.png +0 -0
  780. {kotonebot/kaa → kaa}/sprites/d83f338d-dde3-494b-9bea-cae511e3517c.png +0 -0
  781. {kotonebot/kaa → kaa}/sprites/d982d2b5-4bc0-4ae9-a516-f29c2848d64b.png +0 -0
  782. {kotonebot/kaa → kaa}/sprites/da439e8c-3b74-4371-9657-0736d826c7d1.png +0 -0
  783. {kotonebot/kaa → kaa}/sprites/daf3d823-b7f1-4584-acf3-90b9d880332c.png +0 -0
  784. {kotonebot/kaa → kaa}/sprites/db7d3f03-1f7f-43bf-8125-f7c2d345fca2.png +0 -0
  785. /kotonebot/kaa/sprites/07fbcfc2-2c7e-4e57-a9ee-8c4ccea390a2.png → /kaa/sprites/dd4987ea-d1a0-4a84-a7b6-6023eb5c4ec8.png +0 -0
  786. {kotonebot/kaa → kaa}/sprites/de325534-3fd3-480a-9eb8-eb47960a753a.png +0 -0
  787. /kotonebot/kaa/sprites/24d5f7f4-7d36-4b53-8774-843be5f22baa.png → /kaa/sprites/de9bbc4c-6d29-422f-8f29-82870270efb3.png +0 -0
  788. /kotonebot/kaa/sprites/2e9ab3a1-135a-44a7-a99c-9a6894447303.png → /kaa/sprites/dedc30bf-4a69-4bec-b3f7-c3b1fcf61283.png +0 -0
  789. {kotonebot/kaa → kaa}/sprites/df991b42-ed8e-4f2c-bf0c-aa7522f147b6.png +0 -0
  790. /kotonebot/kaa/sprites/274f63ce-7ac0-47a1-b927-a17168232784.png → /kaa/sprites/e149613e-d126-42f8-94c9-180cf2244041.png +0 -0
  791. {kotonebot/kaa → kaa}/sprites/e4683def-8d1d-472b-a5ab-bb3885c0c98e.png +0 -0
  792. /kotonebot/kaa/sprites/0ce6ecd8-a980-4696-90d2-be60f23be362.png → /kaa/sprites/e56f125e-1b4b-48ea-be9c-256496f91f6f.png +0 -0
  793. {kotonebot/kaa → kaa}/sprites/e5e84f9e-28da-4cf4-bcba-c9145fe39b07.png +0 -0
  794. /kotonebot/kaa/sprites/68989732-4759-456c-9f10-9f055106b3bb.png → /kaa/sprites/e5f0644a-26a7-4d00-a5c8-2e6263b0e547.png +0 -0
  795. /kotonebot/kaa/sprites/4e41543c-6294-40c4-bf67-fdc363d3abfb.png → /kaa/sprites/e62398fa-f25e-4a1b-86d6-f89ec096cc27.png +0 -0
  796. /kotonebot/kaa/sprites/2a92cb8d-304a-41d5-8a8d-c84cc4c7f84d.png → /kaa/sprites/e65f87fe-3a59-4465-90cd-5167fb3aa4ae.png +0 -0
  797. {kotonebot/kaa → kaa}/sprites/e6b45405-cd9f-4c6e-a9f1-6ec953747c65.png +0 -0
  798. /kotonebot/kaa/sprites/ed490a4e-e9ef-4240-8496-fa11403631d0.png → /kaa/sprites/e772ae1e-3c75-417c-bd36-52b5fa046cf9.png +0 -0
  799. /kotonebot/kaa/sprites/87c70e5f-56be-4e21-859c-e8641f9d9b2d.png → /kaa/sprites/e80f5d59-6c4a-4d40-8fd2-7ccfc8f20d08.png +0 -0
  800. {kotonebot/kaa → kaa}/sprites/e88c9ad1-ec37-4fcd-b086-862e1e7ce8fd.png +0 -0
  801. /kotonebot/kaa/sprites/c5108fd1-0c73-4271-8376-878ebd4d32c2.png → /kaa/sprites/e8ef0ab6-9132-410d-ad44-c6bbdda8298a.png +0 -0
  802. {kotonebot/kaa → kaa}/sprites/e9ee330d-dfca-440e-8b8c-0a3b4e8c8730.png +0 -0
  803. {kotonebot/kaa → kaa}/sprites/ea1ba124-9cb3-4427-969a-bacd47e7d920.png +0 -0
  804. {kotonebot/kaa → kaa}/sprites/eaba6ebe-f0df-4918-aee5-ef4e3ffedcf0.png +0 -0
  805. /kotonebot/kaa/sprites/9f74fc6e-9052-4323-8108-48990b4e4705.png → /kaa/sprites/ecd053a6-3791-4535-8e7f-65c740619fc5.png +0 -0
  806. /kotonebot/kaa/sprites/606b5dc6-45e8-426d-9d99-be0222e424e5.png → /kaa/sprites/edecb8c9-60b8-4576-8c56-03a33f0a2496.png +0 -0
  807. {kotonebot/kaa → kaa}/sprites/ee4e512b-4982-49b6-9c71-31984b58e1d0.png +0 -0
  808. /kotonebot/kaa/sprites/31a33973-5d6b-4e3f-85c9-29c3056c05ac.png → /kaa/sprites/ee775922-936a-4445-85fc-0a2607fea917.png +0 -0
  809. {kotonebot/kaa → kaa}/sprites/eef25cf9-afd0-43b1-b9c5-fbd997bd5fe0.png +0 -0
  810. /kotonebot/kaa/sprites/fe07afa6-75db-4b1d-b028-ffcdc7c5f4da.png → /kaa/sprites/ef0226e3-6bad-4b40-9056-7dc2952b4de9.png +0 -0
  811. /kotonebot/kaa/sprites/67000df5-e696-4292-91de-1875f3cfd4d7.png → /kaa/sprites/ef84cc0f-4699-4514-8d1f-cf1ca30ce790.png +0 -0
  812. {kotonebot/kaa → kaa}/sprites/f1f21925-3e22-4dd1-b53b-bb52bcf26c2b.png +0 -0
  813. {kotonebot/kaa → kaa}/sprites/f43c313b-8a7b-467b-8442-fc5bcb8b4388.png +0 -0
  814. {kotonebot/kaa → kaa}/sprites/f5c16d2f-ebc5-4617-9b96-971696af7c52.png +0 -0
  815. {kotonebot/kaa → kaa}/sprites/f6ca6bd3-543f-4779-8367-c5c883f04b95.png +0 -0
  816. /kotonebot/kaa/sprites/f153a10b-5294-4d5f-8585-cfe1278c6ec0.png → /kaa/sprites/f6f8e8b4-6426-43b0-b3e6-020401a1da3f.png +0 -0
  817. /kotonebot/kaa/sprites/d6b35f90-a6f6-4e94-8fa3-6be58c52cc56.png → /kaa/sprites/f7f6a9d8-13cb-4c19-b43f-ca0e4b9176d5.png +0 -0
  818. /kotonebot/kaa/sprites/f98018bc-533a-4a46-8e4e-2d514fbe626a.png → /kaa/sprites/f8b12dfa-bef8-41eb-a325-e7dd73c14124.png +0 -0
  819. /kotonebot/kaa/sprites/fcf32106-d3c4-4ffd-862b-bd0927d8a9ee.png → /kaa/sprites/f9a04314-15b1-41bb-9e7f-670d952973ce.png +0 -0
  820. {kotonebot/kaa → kaa}/sprites/fad5eec2-5fd5-412f-9abb-987a3087dc54.png +0 -0
  821. {kotonebot/kaa → kaa/tasks}/__init__.py +0 -0
  822. {kotonebot/kaa/resources → kaa/tasks/actions}/__init__.py +0 -0
  823. {kotonebot/kaa → kaa}/tasks/clear_logs.py +0 -0
  824. {kotonebot/kaa/sprites → kaa/tasks/daily}/__init__.py +0 -0
  825. {kotonebot/kaa/tasks → kaa/tasks/produce}/__init__.py +0 -0
  826. {kotonebot/kaa → kaa}/util/trace.py +0 -0
  827. {ksaa-2025.8.23.1.post1.dist-info → ksaa-2025.9.dist-info}/WHEEL +0 -0
  828. {ksaa-2025.8.23.1.post1.dist-info → ksaa-2025.9.dist-info}/licenses/LICENSE +0 -0
@@ -1,290 +0,0 @@
1
- from typing import Generic, TypeVar, TypeGuard, overload
2
-
3
- T = TypeVar('T')
4
-
5
- class Vector2D(Generic[T]):
6
- """2D 坐标类"""
7
- def __init__(self, x: T, y: T, *, name: str | None = None):
8
- self.x = x
9
- self.y = y
10
- self.name: str | None = name
11
- """坐标的名称。"""
12
-
13
- def __getitem__(self, item: int):
14
- if item == 0:
15
- return self.x
16
- elif item == 1:
17
- return self.y
18
- else:
19
- raise IndexError
20
-
21
- def __repr__(self) -> str:
22
- return f'Point<"{self.name}" at ({self.x}, {self.y})>'
23
-
24
- def __str__(self) -> str:
25
- return f'({self.x}, {self.y})'
26
-
27
-
28
- class Vector3D(Generic[T]):
29
- """三元组类。"""
30
- def __init__(self, x: T, y: T, z: T, *, name: str | None = None):
31
- self.x = x
32
- self.y = y
33
- self.z = z
34
- self.name: str | None = name
35
- """坐标的名称。"""
36
-
37
- def __getitem__(self, item: int):
38
- if item == 0:
39
- return self.x
40
- elif item == 1:
41
- return self.y
42
- elif item == 2:
43
- return self.z
44
- else:
45
- raise IndexError
46
-
47
- @property
48
- def xyz(self) -> tuple[T, T, T]:
49
- """
50
- 三元组 (x, y, z)。OpenCV 格式的坐标。
51
- """
52
- return self.x, self.y, self.z
53
-
54
- @property
55
- def xy(self) -> tuple[T, T]:
56
- """
57
- 二元组 (x, y)。OpenCV 格式的坐标。
58
- """
59
- return self.x, self.y
60
-
61
- class Vector4D(Generic[T]):
62
- """四元组类。"""
63
- def __init__(self, x: T, y: T, z: T, w: T, *, name: str | None = None):
64
- self.x = x
65
- self.y = y
66
- self.z = z
67
- self.w = w
68
- self.name: str | None = name
69
- """坐标的名称。"""
70
-
71
- def __getitem__(self, item: int):
72
- if item == 0:
73
- return self.x
74
- elif item == 1:
75
- return self.y
76
- elif item == 2:
77
- return self.z
78
- elif item == 3:
79
- return self.w
80
- else:
81
- raise IndexError
82
-
83
- Size = Vector2D[int]
84
- """尺寸。相当于 Vector2D[int]"""
85
- RectTuple = tuple[int, int, int, int]
86
- """矩形。(x, y, w, h)"""
87
- PointTuple = tuple[int, int]
88
- """点。(x, y)"""
89
-
90
- class Point(Vector2D[int]):
91
- """点。"""
92
-
93
- @property
94
- def xy(self) -> PointTuple:
95
- """
96
- 二元组 (x, y)。OpenCV 格式的坐标。
97
- """
98
- return self.x, self.y
99
-
100
- def offset(self, dx: int, dy: int) -> 'Point':
101
- """
102
- 偏移坐标。
103
-
104
- :param dx: 偏移量。
105
- :param dy: 偏移量。
106
- :return: 偏移后的坐标。
107
- """
108
- return Point(self.x + dx, self.y + dy, name=self.name)
109
-
110
- def __add__(self, other: 'Point | PointTuple') -> 'Point':
111
- """
112
- 相加。
113
-
114
- :param other: 另一个 Point 对象或二元组 (x: int, y: int)。
115
- :return: 相加后的点。
116
- """
117
- if isinstance(other, Point):
118
- return Point(self.x + other.x, self.y + other.y, name=self.name)
119
- else:
120
- return Point(self.x + other[0], self.y + other[1], name=self.name)
121
-
122
- def __sub__(self, other: 'Point | PointTuple') -> 'Point':
123
- """
124
- 相减。
125
-
126
- :param other: 另一个 Point 对象或二元组 (x: int, y: int)。
127
- :return: 相减后的点。
128
- """
129
- if isinstance(other, Point):
130
- return Point(self.x - other.x, self.y - other.y, name=self.name)
131
- else:
132
- return Point(self.x - other[0], self.y - other[1], name=self.name)
133
-
134
- class Rect:
135
- """
136
- 矩形类。
137
- """
138
- def __init__(
139
- self,
140
- x: int | None = None,
141
- y: int | None = None,
142
- w: int | None = None,
143
- h: int | None = None,
144
- *,
145
- xywh: RectTuple | None = None,
146
- name: str | None = None,
147
- ):
148
- """
149
- 从给定的坐标信息创建矩形。
150
-
151
- 参数 `x`, `y`, `w`, `h` 和 `xywh` 必须至少指定一组。
152
-
153
- :param x: 矩形左上角的 X 坐标。
154
- :param y: 矩形左上角的 Y 坐标。
155
- :param w: 矩形的宽度。
156
- :param h: 矩形的高度。
157
- :param xywh: 四元组 (x, y, w, h)。
158
- :param name: 矩形的名称。
159
- :raises ValueError: 提供的坐标参数不完整时抛出。
160
- """
161
- if xywh is not None:
162
- x, y, w, h = xywh
163
- elif (
164
- x is not None and
165
- y is not None and
166
- w is not None and
167
- h is not None
168
- ):
169
- pass
170
- else:
171
- raise ValueError('Either xywh or x, y, w, h must be provided.')
172
-
173
- self.x1 = x
174
- """矩形左上角的 X 坐标。"""
175
- self.y1 = y
176
- """矩形左上角的 Y 坐标。"""
177
- self.w = w
178
- """矩形的宽度。"""
179
- self.h = h
180
- """矩形的高度。"""
181
- self.name: str | None = name
182
- """矩形的名称。"""
183
-
184
- @classmethod
185
- def from_xyxy(cls, x1: int, y1: int, x2: int, y2: int) -> 'Rect':
186
- """
187
- 从 (x1, y1, x2, y2) 创建矩形。
188
- :return: 创建结果。
189
- """
190
- return cls(x1, y1, x2 - x1, y2 - y1)
191
-
192
- @property
193
- def x2(self) -> int:
194
- """矩形右下角的 X 坐标。"""
195
- return self.x1 + self.w
196
-
197
- @x2.setter
198
- def x2(self, value: int):
199
- self.w = value - self.x1
200
-
201
- @property
202
- def y2(self) -> int:
203
- """矩形右下角的 Y 坐标。"""
204
- return self.y1 + self.h
205
-
206
- @y2.setter
207
- def y2(self, value: int):
208
- self.h = value - self.y1
209
-
210
- @property
211
- def xywh(self) -> RectTuple:
212
- """
213
- 四元组 (x1, y1, w, h)。OpenCV 格式的坐标。
214
- """
215
- return self.x1, self.y1, self.w, self.h
216
-
217
- @property
218
- def xyxy(self) -> RectTuple:
219
- """
220
- 四元组 (x1, y1, x2, y2)。
221
- """
222
- return self.x1, self.y1, self.x2, self.y2
223
-
224
- @property
225
- def top_left(self) -> Point:
226
- """
227
- 矩形的左上角点。
228
- """
229
- if self.name:
230
- name = "Left-top of rect "+ self.name
231
- else:
232
- name = None
233
- return Point(self.x1, self.y1, name=name)
234
-
235
- @property
236
- def bottom_right(self) -> Point:
237
- """
238
- 矩形的右下角点。
239
- """
240
- if self.name:
241
- name = "Right-bottom of rect "+ self.name
242
- else:
243
- name = None
244
- return Point(self.x2, self.y2, name=name)
245
-
246
- @property
247
- def left_bottom(self) -> Point:
248
- """
249
- 矩形的左下角点。
250
- """
251
- if self.name:
252
- name = "Left-bottom of rect "+ self.name
253
- else:
254
- name = None
255
- return Point(self.x1, self.y2, name=name)
256
-
257
- @property
258
- def right_top(self) -> Point:
259
- """
260
- 矩形的右上角点。
261
- """
262
- if self.name:
263
- name = "Right-top of rect "+ self.name
264
- else:
265
- name = None
266
- return Point(self.x2, self.y1, name=name)
267
-
268
- @property
269
- def center(self) -> Point:
270
- """
271
- 矩形的中心点。
272
- """
273
- if self.name:
274
- name = "Center of rect "+ self.name
275
- else:
276
- name = None
277
- return Point(self.x1 + self.w // 2, self.y1 + self.h // 2, name=name)
278
-
279
- def __repr__(self) -> str:
280
- return f'Rect<"{self.name}" at (x={self.x1}, y={self.y1}, w={self.w}, h={self.h})>'
281
-
282
- def __str__(self) -> str:
283
- return f'(x={self.x1}, y={self.y1}, w={self.w}, h={self.h})'
284
-
285
-
286
- def is_point(obj: object) -> TypeGuard[Point]:
287
- return isinstance(obj, Point)
288
-
289
- def is_rect(obj: object) -> TypeGuard[Rect]:
290
- return isinstance(obj, Rect)
@@ -1,63 +0,0 @@
1
- import logging
2
-
3
- from cv2.typing import MatLike
4
-
5
- from .geometry import Size
6
- from kotonebot.util import cv2_imread
7
-
8
- logger = logging.getLogger(__name__)
9
-
10
- class Image:
11
- """
12
- 图像类。
13
- """
14
- def __init__(
15
- self,
16
- pixels: MatLike | None = None,
17
- file_path: str | None = None,
18
- lazy_load: bool = False,
19
- name: str | None = None,
20
- description: str | None = None
21
- ):
22
- """
23
- 从内存数据或图像文件创建图像类。
24
-
25
- :param pixels: 图像数据。格式必须为 BGR。
26
- :param file_path: 图像文件路径。
27
- :param lazy_load: 是否延迟加载图像数据。
28
- 若为 False,立即载入,否则仅当访问图像数据时才载入。仅当从文件创建图像类时生效。
29
- :param name: 图像名称。
30
- :param description: 图像描述。
31
- """
32
- self.name: str | None = name
33
- """图像名称。"""
34
- self.description: str | None = description
35
- """图像描述。"""
36
- self.file_path: str | None = file_path
37
- """图像的文件路径。"""
38
- self.__pixels: MatLike | None = None
39
- # 立即加载
40
- if not lazy_load and self.file_path:
41
- _ = self.pixels
42
- # 传入像素数据而不是文件
43
- if pixels is not None:
44
- self.__pixels = pixels
45
-
46
- @property
47
- def pixels(self) -> MatLike:
48
- """图像的像素数据。"""
49
- if self.__pixels is None:
50
- if not self.file_path:
51
- raise ValueError('Either pixels or file_path must be provided.')
52
- logger.debug('Loading image "%s" from %s...', self.name or '(unnamed)', self.file_path)
53
- self.__pixels = cv2_imread(self.file_path)
54
- return self.__pixels
55
-
56
- @property
57
- def size(self) -> Size:
58
- return Size(self.pixels.shape[1], self.pixels.shape[0])
59
-
60
- class Template(Image):
61
- """
62
- 模板图像类。
63
- """
File without changes
kotonebot/tools/mirror.py DELETED
@@ -1,354 +0,0 @@
1
- import wx
2
- import cv2
3
- import numpy as np
4
- import time
5
- from typing import Optional, Tuple, Callable
6
- from threading import Thread, Lock
7
- from cv2.typing import MatLike
8
- from queue import Queue
9
-
10
- from kotonebot.client.device import Device
11
-
12
- class DeviceMirrorPanel(wx.Panel):
13
- def __init__(self, parent, device: Device, log_callback=None):
14
- super().__init__(parent)
15
- self.device = device
16
- self.screen_bitmap: Optional[wx.Bitmap] = None
17
- self.fps = 0
18
- self.last_frame_time = time.time()
19
- self.frame_count = 0
20
- self.is_running = True
21
- self.lock = Lock()
22
- self.last_mouse_pos = (0, 0)
23
- self.is_dragging = False
24
- self.screenshot_interval = 0 # 截图耗时(ms)
25
- self.log_callback = log_callback
26
- self.operation_queue = Queue()
27
-
28
- # 设置背景色为黑色
29
- self.SetBackgroundColour(wx.BLACK)
30
-
31
- # 双缓冲,减少闪烁
32
- self.SetDoubleBuffered(True)
33
-
34
- # 绑定事件
35
- self.Bind(wx.EVT_PAINT, self.on_paint)
36
- self.Bind(wx.EVT_SIZE, self.on_size)
37
- self.Bind(wx.EVT_LEFT_DOWN, self.on_left_down)
38
- self.Bind(wx.EVT_LEFT_UP, self.on_left_up)
39
- self.Bind(wx.EVT_MOTION, self.on_motion)
40
-
41
- # 启动刷新线程
42
- self.update_thread = Thread(target=self.update_screen, daemon=True)
43
- self.update_thread.start()
44
-
45
- # 启动操作处理线程
46
- self.operation_thread = Thread(target=self.process_operations, daemon=True)
47
- self.operation_thread.start()
48
-
49
- def process_operations(self):
50
- """处理设备操作的线程"""
51
- while self.is_running:
52
- try:
53
- operation = self.operation_queue.get()
54
- if operation is not None:
55
- operation()
56
- self.operation_queue.task_done()
57
- except Exception as e:
58
- if self.log_callback:
59
- self.log_callback(f"操作执行错误: {e}")
60
-
61
- def execute_device_operation(self, operation: Callable):
62
- """将设备操作添加到队列"""
63
- self.operation_queue.put(operation)
64
-
65
- def update_screen(self):
66
- while self.is_running:
67
- try:
68
- # 获取设备截图并计时
69
- start_time = time.time()
70
- frame = self.device.screenshot()
71
- end_time = time.time()
72
- self.screenshot_interval = int((end_time - start_time) * 1000)
73
-
74
- if frame is None:
75
- continue
76
-
77
- # 计算FPS
78
- current_time = time.time()
79
- self.frame_count += 1
80
- if current_time - self.last_frame_time >= 1.0:
81
- self.fps = self.frame_count
82
- self.frame_count = 0
83
- self.last_frame_time = current_time
84
-
85
- # 转换为wx.Bitmap
86
- height, width = frame.shape[:2]
87
- frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
88
- wximage = wx.Bitmap.FromBuffer(width, height, frame)
89
-
90
- with self.lock:
91
- self.screen_bitmap = wximage
92
-
93
- # 请求重绘
94
- wx.CallAfter(self.Refresh)
95
-
96
- # 控制刷新率
97
- time.sleep(1/60)
98
-
99
- except Exception as e:
100
- print(f"Error updating screen: {e}")
101
- time.sleep(1)
102
-
103
- def on_paint(self, event):
104
- dc = wx.BufferedPaintDC(self)
105
-
106
- # 清空背景
107
- dc.SetBackground(wx.Brush(wx.BLACK))
108
- dc.Clear()
109
-
110
- if not self.screen_bitmap:
111
- return
112
-
113
- # 绘制设备画面
114
- with self.lock:
115
- # 计算缩放比例,保持宽高比
116
- panel_width, panel_height = self.GetSize()
117
- bitmap_width = self.screen_bitmap.GetWidth()
118
- bitmap_height = self.screen_bitmap.GetHeight()
119
-
120
- scale = min(panel_width/bitmap_width, panel_height/bitmap_height)
121
- scaled_width = int(bitmap_width * scale)
122
- scaled_height = int(bitmap_height * scale)
123
-
124
- # 居中显示
125
- x = (panel_width - scaled_width) // 2
126
- y = (panel_height - scaled_height) // 2
127
-
128
- if scale != 1:
129
- img = self.screen_bitmap.ConvertToImage()
130
- img = img.Scale(scaled_width, scaled_height, wx.IMAGE_QUALITY_HIGH)
131
- bitmap = wx.Bitmap(img)
132
- else:
133
- bitmap = self.screen_bitmap
134
-
135
- dc.DrawBitmap(bitmap, x, y)
136
-
137
- # 绘制FPS和截图时间
138
- dc.SetTextForeground(wx.GREEN)
139
- dc.SetFont(wx.Font(10, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD))
140
- dc.DrawText(f"FPS: {self.fps}", 10, 10)
141
- dc.DrawText(f"Interval: {self.screenshot_interval}ms", 10, 30)
142
-
143
- def on_size(self, event):
144
- self.Refresh()
145
- event.Skip()
146
-
147
- def get_device_coordinates(self, x: int, y: int) -> Tuple[int, int]:
148
- """将面板坐标转换为设备坐标"""
149
- if not self.screen_bitmap:
150
- return (0, 0)
151
-
152
- panel_width, panel_height = self.GetSize()
153
- bitmap_width = self.screen_bitmap.GetWidth()
154
- bitmap_height = self.screen_bitmap.GetHeight()
155
-
156
- scale = min(panel_width/bitmap_width, panel_height/bitmap_height)
157
- scaled_width = int(bitmap_width * scale)
158
- scaled_height = int(bitmap_height * scale)
159
-
160
- # 计算显示区域的偏移
161
- x_offset = (panel_width - scaled_width) // 2
162
- y_offset = (panel_height - scaled_height) // 2
163
-
164
- # 转换坐标
165
- device_x = int((x - x_offset) / scale)
166
- device_y = int((y - y_offset) / scale)
167
-
168
- # 确保坐标在设备范围内
169
- device_x = max(0, min(device_x, bitmap_width-1))
170
- device_y = max(0, min(device_y, bitmap_height-1))
171
-
172
- return (device_x, device_y)
173
-
174
- def on_left_down(self, event):
175
- self.last_mouse_pos = event.GetPosition()
176
- self.is_dragging = True
177
- event.Skip()
178
-
179
- def on_left_up(self, event):
180
- if not self.is_dragging:
181
- return
182
-
183
- self.is_dragging = False
184
- pos = event.GetPosition()
185
-
186
- # 如果鼠标位置没有明显变化,执行点击
187
- if abs(pos[0] - self.last_mouse_pos[0]) < 5 and abs(pos[1] - self.last_mouse_pos[1]) < 5:
188
- device_x, device_y = self.get_device_coordinates(*pos)
189
- self.execute_device_operation(lambda: self.device.click(device_x, device_y))
190
- if self.log_callback:
191
- self.log_callback(f"点击: ({device_x}, {device_y})")
192
- else:
193
- # 执行滑动
194
- start_x, start_y = self.get_device_coordinates(*self.last_mouse_pos)
195
- end_x, end_y = self.get_device_coordinates(*pos)
196
- self.execute_device_operation(lambda: self.device.swipe(start_x, start_y, end_x, end_y))
197
- if self.log_callback:
198
- self.log_callback(f"滑动: ({start_x}, {start_y}) -> ({end_x}, {end_y})")
199
-
200
- event.Skip()
201
-
202
- def on_motion(self, event):
203
- if not self.is_dragging:
204
- event.Skip()
205
- return
206
-
207
- event.Skip()
208
-
209
- class DeviceMirrorFrame(wx.Frame):
210
- def __init__(self, device: Device):
211
- super().__init__(None, title="设备镜像", size=(800, 600))
212
-
213
- # 创建分割窗口
214
- self.splitter = wx.SplitterWindow(self)
215
-
216
- # 创建左侧面板(包含控制区域和日志区域)
217
- self.left_panel = wx.Panel(self.splitter)
218
- left_sizer = wx.BoxSizer(wx.VERTICAL)
219
-
220
- # 控制区域
221
- self.control_panel = wx.Panel(self.left_panel)
222
- self.init_control_panel()
223
- left_sizer.Add(self.control_panel, 0, wx.EXPAND | wx.ALL, 5)
224
-
225
- # 日志区域
226
- self.log_text = wx.TextCtrl(self.left_panel, style=wx.TE_MULTILINE | wx.TE_READONLY | wx.HSCROLL)
227
- self.log_text.SetBackgroundColour(wx.BLACK)
228
- self.log_text.SetForegroundColour(wx.GREEN)
229
- self.log_text.SetFont(wx.Font(9, wx.FONTFAMILY_TELETYPE, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL))
230
- left_sizer.Add(self.log_text, 1, wx.EXPAND | wx.ALL, 5)
231
-
232
- self.left_panel.SetSizer(left_sizer)
233
-
234
- # 创建设备画面
235
- self.device_panel = DeviceMirrorPanel(self.splitter, device, self.log)
236
-
237
- # 设置分割
238
- self.splitter.SplitVertically(self.left_panel, self.device_panel)
239
- self.splitter.SetMinimumPaneSize(200)
240
-
241
- # 保存设备引用
242
- self.device = device
243
-
244
- def log(self, message: str):
245
- """添加日志"""
246
- timestamp = time.strftime("%H:%M:%S", time.localtime())
247
- wx.CallAfter(self.log_text.AppendText, f"[{timestamp}] {message}\n")
248
-
249
- def init_control_panel(self):
250
- vbox = wx.BoxSizer(wx.VERTICAL)
251
-
252
- # 添加控制按钮
253
- btn_get_resolution = wx.Button(self.control_panel, label="获取分辨率")
254
- btn_get_resolution.Bind(wx.EVT_BUTTON, self.on_get_resolution)
255
- vbox.Add(btn_get_resolution, 0, wx.EXPAND | wx.ALL, 5)
256
-
257
- btn_get_orientation = wx.Button(self.control_panel, label="获取设备方向")
258
- btn_get_orientation.Bind(wx.EVT_BUTTON, self.on_get_orientation)
259
- vbox.Add(btn_get_orientation, 0, wx.EXPAND | wx.ALL, 5)
260
-
261
- # 启动APP区域
262
- hbox = wx.BoxSizer(wx.HORIZONTAL)
263
- self.package_input = wx.TextCtrl(self.control_panel)
264
- hbox.Add(self.package_input, 1, wx.EXPAND | wx.RIGHT, 5)
265
- btn_launch_app = wx.Button(self.control_panel, label="启动APP")
266
- btn_launch_app.Bind(wx.EVT_BUTTON, self.on_launch_app)
267
- hbox.Add(btn_launch_app, 0)
268
- vbox.Add(hbox, 0, wx.EXPAND | wx.ALL, 5)
269
-
270
- btn_get_current_app = wx.Button(self.control_panel, label="获取前台APP")
271
- btn_get_current_app.Bind(wx.EVT_BUTTON, self.on_get_current_app)
272
- vbox.Add(btn_get_current_app, 0, wx.EXPAND | wx.ALL, 5)
273
-
274
- self.control_panel.SetSizer(vbox)
275
-
276
- def on_get_resolution(self, event):
277
- """获取分辨率"""
278
- try:
279
- width, height = self.device.screen_size
280
- self.log(f"设备分辨率: {width}x{height}")
281
- except Exception as e:
282
- self.log(f"获取分辨率失败: {e}")
283
-
284
- def on_get_orientation(self, event):
285
- """获取设备方向"""
286
- try:
287
- orientation = self.device.detect_orientation()
288
- orientation_text = "横屏" if orientation == "landscape" else "竖屏"
289
- self.log(f"设备方向: {orientation_text}")
290
- except Exception as e:
291
- self.log(f"获取设备方向失败: {e}")
292
-
293
- def on_launch_app(self, event):
294
- """启动APP"""
295
- package_name = self.package_input.GetValue().strip()
296
- if not package_name:
297
- self.log("请输入包名")
298
- return
299
- try:
300
- # 使用新的 API 通过 commands 属性访问平台特定方法
301
- if hasattr(self.device, 'commands') and hasattr(self.device.commands, 'launch_app'):
302
- self.device.commands.launch_app(package_name)
303
- self.log(f"启动APP: {package_name}")
304
- else:
305
- self.log("当前设备不支持启动APP功能")
306
- except Exception as e:
307
- self.log(f"启动APP失败: {e}")
308
-
309
- def on_get_current_app(self, event):
310
- """获取前台APP"""
311
- try:
312
- # 使用新的 API 通过 commands 属性访问平台特定方法
313
- if hasattr(self.device, 'commands') and hasattr(self.device.commands, 'current_package'):
314
- package = self.device.commands.current_package()
315
- if package:
316
- self.log(f"前台APP: {package}")
317
- else:
318
- self.log("未获取到前台APP")
319
- else:
320
- self.log("当前设备不支持获取前台APP功能")
321
- except Exception as e:
322
- self.log(f"获取前台APP失败: {e}")
323
-
324
- def on_quit(self, event):
325
- self.device_panel.is_running = False
326
- self.Close()
327
-
328
- def show_device_mirror(device: Device):
329
- """显示设备镜像窗口"""
330
- app = wx.App()
331
- frame = DeviceMirrorFrame(device)
332
- frame.Show()
333
- app.MainLoop()
334
-
335
- if __name__ == "__main__":
336
- # 测试代码
337
- from kotonebot.client.device import AndroidDevice
338
- from kotonebot.client.implements.adb import AdbImpl
339
- from kotonebot.client.implements.uiautomator2 import UiAutomator2Impl
340
- from adbutils import adb
341
-
342
- print("server version:", adb.server_version())
343
- adb.connect("127.0.0.1:5555")
344
- print("devices:", adb.device_list())
345
- d = adb.device_list()[-1]
346
-
347
- # 使用新的 API
348
- dd = AndroidDevice(d)
349
- adb_imp = AdbImpl(d) # 直接传入 adb 连接
350
- dd._touch = adb_imp
351
- dd._screenshot = UiAutomator2Impl(dd) # UiAutomator2Impl 可能还需要 device 对象
352
- dd.commands = adb_imp # 设置 Android 特定命令
353
-
354
- show_device_mirror(dd)