ksaa 2025.11b3__py3-none-any.whl → 2025.11.post1__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 (303) hide show
  1. kaa/__init__.py +0 -0
  2. kaa/application/__init__.py +0 -0
  3. kaa/application/services/__init__.py +0 -0
  4. kaa/application/services/config_service.py +112 -0
  5. kaa/application/{core → services}/feedback_service.py +1 -1
  6. kaa/application/services/produce_solution_service.py +83 -0
  7. kaa/application/services/task_service.py +145 -0
  8. kaa/application/ui/__init__.py +0 -0
  9. kaa/application/ui/common.py +123 -0
  10. kaa/application/ui/components/alert.py +251 -0
  11. kaa/application/ui/components/alert.pyi +257 -0
  12. kaa/application/ui/components/categorized_select.pyi +697 -0
  13. kaa/application/ui/facade.py +189 -0
  14. kaa/application/ui/gradio_view.py +135 -0
  15. kaa/application/ui/views/__init__.py +0 -0
  16. kaa/application/ui/views/feedback_view.py +65 -0
  17. kaa/application/ui/views/produce_view.py +251 -0
  18. kaa/application/ui/views/settings_view.py +581 -0
  19. kaa/application/ui/views/status_view.py +171 -0
  20. kaa/application/ui/views/task_view.py +102 -0
  21. kaa/application/ui/views/update_view.py +106 -0
  22. kaa/config/schema.py +2 -0
  23. kaa/db/constants.py +3 -2
  24. kaa/main/gr.py +71 -2733
  25. kaa/metadata.py +71 -1
  26. kaa/resources/__pycache__/__init__.cpython-310.pyc +0 -0
  27. kaa/resources/game.db +0 -0
  28. kaa/resources/game_ver.txt +0 -0
  29. kaa/sprites/41904062-e218-4b28-972a-b5cfcd058d2c.png +0 -0
  30. kaa/sprites/5c49d3b3-656e-4c8c-ae1a-9b0209b9dcc3.png +0 -0
  31. kaa/sprites/__pycache__/__init__.cpython-310.pyc +0 -0
  32. kaa/sprites/ae4742aa-acda-442d-bf73-b3fe7b66e85c.png +0 -0
  33. kaa/tasks/R.py +136 -128
  34. kaa/tasks/R2.py +24 -0
  35. kaa/tasks/daily/club_reward.py +1 -0
  36. kaa/tasks/daily/purchase.py +33 -1
  37. kaa/tasks/daily/upgrade_support_card.py +12 -2
  38. kaa/tasks/produce/common.py +1 -0
  39. kaa/tasks/produce/in_purodyuusu.py +21 -7
  40. kaa/util/reactive.py +182 -0
  41. {ksaa-2025.11b3.dist-info → ksaa-2025.11.post1.dist-info}/METADATA +21 -21
  42. {ksaa-2025.11b3.dist-info → ksaa-2025.11.post1.dist-info}/RECORD +303 -278
  43. /kaa/application/{core → services}/update_service.py +0 -0
  44. /kaa/sprites/{3cda578a-fa75-4bbd-9cff-be4bc4355a58.png → 01e93c2c-28dc-41f8-8f9a-ec62ec12aa01.png} +0 -0
  45. /kaa/sprites/{03d22cb3-0193-4dcb-8a0d-98b7ca9c2b4c.png → 02ac01e0-00b0-46d8-a6db-56248c843c6d.png} +0 -0
  46. /kaa/sprites/{3ffd2992-fa55-499c-8c3b-193518ebbe07.png → 033e73d1-9f45-4bca-bf96-6778410f2fc4.png} +0 -0
  47. /kaa/sprites/{9f46f543-d7dc-4836-a210-125d686475f9.png → 04036690-5b0f-4ee0-a9d0-022ee822bf0e.png} +0 -0
  48. /kaa/sprites/{ae106b38-da4f-4b0d-b9c3-541fd58f4de7.png → 041bd3fc-d040-4773-8641-4e4509300d2f.png} +0 -0
  49. /kaa/sprites/{2abce6a4-111f-42bb-9255-f98d544108de.png → 04974917-b1e8-4ccc-807b-6f651026c955.png} +0 -0
  50. /kaa/sprites/{114730f6-eddd-4381-b723-aee18cde0d90.png → 04c4e4c2-9908-4be7-bcbe-4d926ca76737.png} +0 -0
  51. /kaa/sprites/{b76add75-2187-428c-9ede-fb43086bacb6.png → 052ab0f5-8d95-4b5d-8678-3838322d9e5e.png} +0 -0
  52. /kaa/sprites/{a3fe5859-62ba-403e-9367-65db0ad15943.png → 05b97cdf-f7df-4d91-9ec8-5e9594a46382.png} +0 -0
  53. /kaa/sprites/{0b436edb-8f6a-429d-87b7-5d4250f651ac.png → 061b032f-860b-4c53-889b-aa126797f062.png} +0 -0
  54. /kaa/sprites/{7c4ca388-5167-478a-a32b-0e108edad888.png → 07b43eb9-db32-4046-96d3-9f4314bfd80a.png} +0 -0
  55. /kaa/sprites/{3eb9b21b-abbe-49fd-a3a9-6e1c1a6e91d9.png → 08b12ded-8230-4c7e-bb9f-27c85b0fdabb.png} +0 -0
  56. /kaa/sprites/{218a6ab3-93f6-4bb1-9848-8c97ff695945.png → 09364c3a-f892-4911-abdc-2f5fea09289f.png} +0 -0
  57. /kaa/sprites/{307b58f0-20c1-41bd-9eaa-1337fd0e6563.png → 09d2a63d-d2f0-4b97-b3cb-22a61b1530f7.png} +0 -0
  58. /kaa/sprites/{ae0ce964-eb8f-45a1-aa4d-f47a5c8c720f.png → 0cad6e46-276f-424e-a79e-d272ebaa7c8e.png} +0 -0
  59. /kaa/sprites/{5a49b6d2-2bcb-49bc-a28f-b8bd1441f60a.png → 0e49fbde-6be6-42b3-b8d1-36e0cb9cc35d.png} +0 -0
  60. /kaa/sprites/{1a5c147b-e28e-42ad-893a-7430d8f4fc35.png → 0e51d671-928c-4972-8ac0-de446202070b.png} +0 -0
  61. /kaa/sprites/{a4c6d967-0251-4b33-acb3-81d24f82d5a4.png → 0e6f8981-f46c-4c7d-9d90-fe349f0a1d77.png} +0 -0
  62. /kaa/sprites/{12455dbd-7d70-4435-a3ba-f40654e75c37.png → 0e9e3dbf-6e94-4a12-b558-3d8ab500c0a6.png} +0 -0
  63. /kaa/sprites/{95d715c3-d569-48b5-be7b-c21cd2a160db.png → 0eafb6c1-9d85-4fe0-8011-7235704ca9d3.png} +0 -0
  64. /kaa/sprites/{22071c63-a1bc-4163-8d5a-973b3d579c76.png → 1002a830-1ad5-47a7-b7dd-ed2989e6fc1b.png} +0 -0
  65. /kaa/sprites/{8d416e23-04ef-47bd-8cc8-7f18d1bab736.png → 10943367-c1d8-41c7-a831-d5d05288875a.png} +0 -0
  66. /kaa/sprites/{8f9dd0f0-f9af-4eec-a89e-8f2c92f88a98.png → 10f37db0-8c3e-4790-a5c3-cdb841f106a7.png} +0 -0
  67. /kaa/sprites/{aeab8f9a-fe61-4c2d-a494-ffc19a9cae91.png → 11f65378-b982-4936-9ac7-68560a74a042.png} +0 -0
  68. /kaa/sprites/{71913fde-c3db-463d-800d-e1b35fa2c8b4.png → 1660acf7-a420-4d92-a90c-55c5ff208da6.png} +0 -0
  69. /kaa/sprites/{88be2dcc-68ca-4596-9b2c-544a196cab64.png → 170d28bf-d262-4bf1-b35f-8f3d4b4fff6e.png} +0 -0
  70. /kaa/sprites/{bd4cd421-f702-47c0-9f8b-77914973108c.png → 182d8c71-5ce5-4ee1-9f66-ef99aadae654.png} +0 -0
  71. /kaa/sprites/{ff8efb8f-e1a4-4202-a6e1-680eb44f58da.png → 18adb1a5-b95d-41ff-9cb9-16613fa4cf6a.png} +0 -0
  72. /kaa/sprites/{3a211792-1243-496a-b41e-0e3fd121cd5b.png → 18d26894-fd12-4644-8269-a09d11be9520.png} +0 -0
  73. /kaa/sprites/{4f370ff6-61d1-405a-b29e-e6d0b3072194.png → 1b0dd18b-eb41-4c9c-b031-bab91c93fd5d.png} +0 -0
  74. /kaa/sprites/{11bc7d35-e58d-4301-a0b0-f557dbd73c7b.png → 1e7a6e19-760c-4fbc-b0f1-f620f51056b9.png} +0 -0
  75. /kaa/sprites/{6f50cd3b-6e46-46c5-99ed-26728d3212ad.png → 1fbe13d6-3a4d-4935-b687-a76a76a1e32c.png} +0 -0
  76. /kaa/sprites/{2f9e2dbb-66a1-4b13-9b9e-d62e10efa6d3.png → 1fe31432-a050-48db-acc1-becde42deaf9.png} +0 -0
  77. /kaa/sprites/{1b3c84c5-16d1-43a7-8513-719bd7a10450.png → 20146fe6-e62b-4c57-b229-901994903b70.png} +0 -0
  78. /kaa/sprites/{1e57ab88-9962-4024-81df-746529a758f9.png → 20c673e9-fcbe-469b-be35-7844a1d5a9cd.png} +0 -0
  79. /kaa/sprites/{9f3bfe36-8462-404f-94da-9bc324b1beed.png → 21747ae5-d94d-45d1-bda8-939389dc4874.png} +0 -0
  80. /kaa/sprites/{12f330a6-4eab-4015-b0e3-4e1a35a7b676.png → 21fbbe96-02bf-4835-aa04-068bc5cc6ca3.png} +0 -0
  81. /kaa/sprites/{6069f8bc-2a06-45a4-95ca-1ac9d8fa3b04.png → 24be7d90-7944-4a0a-a60c-67c9737b322c.png} +0 -0
  82. /kaa/sprites/{63b74752-73ce-4020-a7c8-0a71a9f67415.png → 24d6a47c-2099-45e2-9a67-b37767f459fc.png} +0 -0
  83. /kaa/sprites/{80800c2e-417d-4118-b726-93aaabfc08bd.png → 2568d3d3-b642-4ea4-b929-4dee0b09738a.png} +0 -0
  84. /kaa/sprites/{4eb665ef-7741-40f9-8174-7b6ca66d045b.png → 263b1037-fb51-4eb1-8c71-5232b03235d2.png} +0 -0
  85. /kaa/sprites/{81b1b160-2d0f-42ad-924a-9572a54f343a.png → 27dbd535-7f95-4698-8fea-2bed67dd6968.png} +0 -0
  86. /kaa/sprites/{2a82e2d6-0722-433a-87fa-f1752ce0b9b7.png → 286801f7-3af5-4cd0-9c25-46c12c2cd8f8.png} +0 -0
  87. /kaa/sprites/{5f2d0b2b-8425-4dd8-8b85-d62f4b75286c.png → 298182ae-747a-44e3-8511-a64d3532b8ac.png} +0 -0
  88. /kaa/sprites/{f7e34403-a53c-4d3f-935b-25b4acb7f7a5.png → 2aac3a97-435e-4c02-925f-e2d1673b7982.png} +0 -0
  89. /kaa/sprites/{a2dd125b-9868-4e01-9a46-3b552c2ebdc9.png → 2cc63c6d-5988-4f72-ae88-b03b8246ad97.png} +0 -0
  90. /kaa/sprites/{0db579bf-d555-4468-8104-c2d2e68d33b1.png → 2d3470f8-a714-4175-a8fe-71eef80921b6.png} +0 -0
  91. /kaa/sprites/{87ed135a-2eb1-4e21-8928-d0307a22ea66.png → 2e3b2982-d14b-4b49-bb64-da8178311d75.png} +0 -0
  92. /kaa/sprites/{7e8904fd-5863-471f-8e9a-d69d9ca72f8f.png → 2e41df89-a8d7-4e7e-96cb-7f551414823b.png} +0 -0
  93. /kaa/sprites/{11870372-dc78-4a80-8320-15bb24da6f25.png → 31e02e56-f266-47b5-8b10-fe79fe06d614.png} +0 -0
  94. /kaa/sprites/{ed6df33a-c7aa-4542-a87b-9cc9cae0465c.png → 3208d803-2c92-4775-80dc-0527df4b63d9.png} +0 -0
  95. /kaa/sprites/{330c2207-af32-453b-8db7-889cda83e7cc.png → 3314dc6c-868f-4045-9f60-1f3a17fed324.png} +0 -0
  96. /kaa/sprites/{ad17ae00-f6ce-4f32-9386-9a8073b5e79a.png → 345435d0-5a5c-494b-95ab-1e086fb88f51.png} +0 -0
  97. /kaa/sprites/{03d0acec-15fd-4c21-82ce-122764def185.png → 358f1561-c16f-45a0-842d-d62fc735dc80.png} +0 -0
  98. /kaa/sprites/{3c490171-6810-44f0-b28d-c6b664347a3c.png → 3782897a-f1c2-4f05-a02d-4c760672f52a.png} +0 -0
  99. /kaa/sprites/{ec35a0b8-1afa-48ff-ae66-9c1ef966348d.png → 385e60df-2063-4caf-b1ea-e6ac909bc49d.png} +0 -0
  100. /kaa/sprites/{5ec51718-1403-4a79-bd85-46e1fe04d8c9.png → 39450419-26b5-4fbd-a5d4-1bab369ced30.png} +0 -0
  101. /kaa/sprites/{9088f8c0-59f8-41c6-994c-ae283ac94c24.png → 397c0e24-f35a-48c9-a576-aa1fcfc517b5.png} +0 -0
  102. /kaa/sprites/{e79a2a08-3b58-4ab0-8c2b-769f30cc8591.png → 3ad30d90-8b57-4641-a9e2-33970e5cea1d.png} +0 -0
  103. /kaa/sprites/{2d8e6464-aceb-41fd-9e78-7523738d5720.png → 3adef8f4-629d-4cb7-b54a-dadabfea155e.png} +0 -0
  104. /kaa/sprites/{3fb84a71-ed15-4989-9598-34e7342f38f5.png → 3b86b4ac-aa29-4309-82da-f47a174d88cc.png} +0 -0
  105. /kaa/sprites/{2460d0c9-50e2-451b-b609-ad466b574395.png → 3c6bbcea-488d-4df8-ab40-21e263aa0b16.png} +0 -0
  106. /kaa/sprites/{15605f7a-2206-436c-8a71-011d9f95cf4e.png → 3db54e0b-672d-4dfd-8a9b-5db37a08be74.png} +0 -0
  107. /kaa/sprites/{f237d88e-92ac-4ebf-85e1-80a696b5203a.png → 3e0da5df-a4de-42bd-83bd-13df3c393af4.png} +0 -0
  108. /kaa/sprites/{9acd9a59-004f-4e1d-a208-0c293f2702d5.png → 402d430d-b507-4aa6-b3e1-db66b38c71b4.png} +0 -0
  109. /kaa/sprites/{455dcf19-63f5-4b0a-99e6-b23d3876d199.png → 414140a2-de67-4c7f-a7f6-c8b30a6c8d6a.png} +0 -0
  110. /kaa/sprites/{97a3791d-fa9d-453d-8081-c574fe88b823.png → 4147514f-4f3f-4dd5-952b-0f2cf5f62181.png} +0 -0
  111. /kaa/sprites/{cb15d9a3-78fe-4f03-bd23-90ba6169ddff.png → 43e53b71-9d69-4f4f-b217-a1abeea8991e.png} +0 -0
  112. /kaa/sprites/{f333118a-81c2-417f-b54f-64dc4e8df613.png → 44a50906-1835-4e29-ae97-496b4cdde9e9.png} +0 -0
  113. /kaa/sprites/{3192a62f-224d-44b1-a0b9-b1fc22de8ec1.png → 44fab632-3920-4cd8-9967-f7a8a1ee29a0.png} +0 -0
  114. /kaa/sprites/{31b4c370-696f-4dfc-a918-839495520266.png → 45f705f9-58fb-4729-ae55-ee10848678d6.png} +0 -0
  115. /kaa/sprites/{3ea8e354-2684-46f3-9f5a-43f094717c95.png → 4678a5fa-5b1c-4fdc-b7c4-e0b820039546.png} +0 -0
  116. /kaa/sprites/{affc87db-2f63-4e4a-855e-6ff608226f1e.png → 4738974e-60b8-4583-8548-94211c164291.png} +0 -0
  117. /kaa/sprites/{0c266b0e-de7a-49c1-9709-b01fb5086f75.png → 474c1678-9c36-495b-aef2-cadbb47b237d.png} +0 -0
  118. /kaa/sprites/{5a677634-99cf-45b5-bc0c-94120872a518.png → 47783412-9cc7-4ba0-904d-8cd300222889.png} +0 -0
  119. /kaa/sprites/{72a8bcd2-3f32-4ee5-8295-eedf441d6a1a.png → 47ed66a4-9e7e-4646-b554-469dc86322db.png} +0 -0
  120. /kaa/sprites/{a9c5aeb0-c0c9-47da-8793-ffe8d172bea0.png → 488a1403-d300-4fa6-94c7-da71d09fd4bb.png} +0 -0
  121. /kaa/sprites/{d23a600a-7002-4268-96a4-18dc54928ec6.png → 48c16d60-05d6-43bc-97c3-7f099bfc0881.png} +0 -0
  122. /kaa/sprites/{7b4c3a81-8f09-4a00-90ee-d4df3f57e863.png → 4d0074ad-6db4-4060-b71a-05c0e36e57a6.png} +0 -0
  123. /kaa/sprites/{e30922ed-a02f-4ede-9968-1656be5a05b2.png → 4e3dbeb5-70bb-4642-9f73-01f9f98bc3aa.png} +0 -0
  124. /kaa/sprites/{b7f62cab-cc24-480e-bf4c-25c43a1e801e.png → 4f2f8328-a698-40d3-a40f-1f1ae77dc843.png} +0 -0
  125. /kaa/sprites/{45f09e08-53ea-4e08-97dc-70f689bab002.png → 52d0ff68-7a55-4d53-bc20-a1fa05cfe876.png} +0 -0
  126. /kaa/sprites/{60896822-de58-4e07-b2d9-86a7f4068de1.png → 52d737a7-5b0b-4ce0-ae3f-5d4048060f12.png} +0 -0
  127. /kaa/sprites/{bbe59f62-c3e7-404c-a313-b50db70de7b5.png → 54987de4-3e1b-4640-b203-1e4c82d7e98d.png} +0 -0
  128. /kaa/sprites/{568608bd-a1fa-4faf-ae15-179563a7e84f.png → 54a9cae1-62e5-4546-a46a-a5157f51e8b4.png} +0 -0
  129. /kaa/sprites/{71976c1a-5df9-44a5-b4ea-08b5d617d813.png → 56d35e14-ada9-4bfa-a48f-e4601054e7eb.png} +0 -0
  130. /kaa/sprites/{0814c0fd-6f89-47d3-8089-e8cfde569750.png → 575784c1-7c4a-4484-9f38-aa3c280ce56e.png} +0 -0
  131. /kaa/sprites/{28335ba3-9a0f-46cd-b66d-047781773264.png → 577417ee-6635-4cb4-9f28-d1e1b47ae2cd.png} +0 -0
  132. /kaa/sprites/{3ea03db7-4de9-45c4-a07b-a9bbc2c63e70.png → 58358122-984b-4c31-91d7-eaf5c8c9353d.png} +0 -0
  133. /kaa/sprites/{3a4e2d8a-deca-4980-b6c2-37bfc17d2720.png → 5a06a662-ffa9-49a9-a86d-136e5983abdd.png} +0 -0
  134. /kaa/sprites/{545a9032-a676-4d9d-ac74-2b2c9b330d1a.png → 5a0bfeac-fb22-4b0c-b775-4aa6220bae89.png} +0 -0
  135. /kaa/sprites/{fe993a91-1a49-488e-b7ff-c1b05b8f2b5f.png → 5aad0930-54a3-4b6d-bec8-250228963f69.png} +0 -0
  136. /kaa/sprites/{c76c6ccb-d099-4c3c-9eda-13be33aa48ae.png → 5c8eebc5-6d5e-445e-a3d1-66dce2bb6338.png} +0 -0
  137. /kaa/sprites/{803fb770-6982-4460-8fe0-f9ccd67367c2.png → 5c9a1581-a14a-449b-a1b0-7a31a965facc.png} +0 -0
  138. /kaa/sprites/{d1bdfa3b-34df-488d-9f9b-8c7b04dd4ab3.png → 5d2b03a2-acb6-4bd2-86e8-1b203d1aeaec.png} +0 -0
  139. /kaa/sprites/{264d021a-b322-4472-8a7b-5f1322aba993.png → 5f02656f-1314-44d0-ae31-a176c24d758c.png} +0 -0
  140. /kaa/sprites/{8bf08bab-7c55-45e1-8433-c2213a323480.png → 608c12e2-95dd-4efa-93b2-e648e9583062.png} +0 -0
  141. /kaa/sprites/{bb3990c8-4618-4d96-9365-a4d1213b59f7.png → 62411b55-7be8-46d9-aa4a-fb56dab6658c.png} +0 -0
  142. /kaa/sprites/{a42ac612-acbd-45cc-88fb-104ff9b7d2d8.png → 647bb09a-13f8-4d54-a8ac-5b534f1a8d87.png} +0 -0
  143. /kaa/sprites/{8805fead-f7e2-4905-a42e-05ebba2fbe21.png → 6483c406-26cc-44ee-ad12-2a30ec47aedb.png} +0 -0
  144. /kaa/sprites/{acd741da-d4ab-4b76-a6a3-4a2fd25870ef.png → 6580ea89-553e-4445-a855-f834d580e6e6.png} +0 -0
  145. /kaa/sprites/{622d700e-0fd8-4a92-a286-1e8143c70570.png → 67d6a201-dfb9-4c88-b42b-d968cf9a034c.png} +0 -0
  146. /kaa/sprites/{8d09178a-251e-4f74-b023-12233417621b.png → 686a2bf5-0498-4d53-8ba1-1110ff36f046.png} +0 -0
  147. /kaa/sprites/{cf49878d-a1c5-4b9f-9502-1e0d9eaadc49.png → 699ca639-3006-45c1-b5fd-8cf9631fd3ea.png} +0 -0
  148. /kaa/sprites/{15dd89cc-53ed-4c77-a355-62e3bd7a15dd.png → 6a93b483-0848-45e4-a937-51850f296c3d.png} +0 -0
  149. /kaa/sprites/{20bd834e-c99c-4e80-92db-0740e5bbe746.png → 6b4e4351-b370-48cd-8e8f-ca663d44aa0c.png} +0 -0
  150. /kaa/sprites/{04ea8503-cdd5-4b3e-a33b-63893b92f6ba.png → 6c961dee-87f3-42f1-acef-9fe7d6be4df1.png} +0 -0
  151. /kaa/sprites/{6f6d7af3-8380-439b-9d26-3fbd5a103b49.png → 6d22b7ee-6e0f-4f5d-96a4-d4cba26a4d04.png} +0 -0
  152. /kaa/sprites/{28df544b-72f2-4ed8-8bf3-609ff99633d9.png → 6d5a3e08-257c-4394-96a6-e0719a66e5ae.png} +0 -0
  153. /kaa/sprites/{e687c2ba-2c30-4fc8-804f-fea5815f6765.png → 6e8325f9-7fdb-4729-ac13-ca67244d97bc.png} +0 -0
  154. /kaa/sprites/{d91483a2-83fa-4664-8eda-52498c0e77bc.png → 71051aa7-81f1-4144-9318-4405e10547ee.png} +0 -0
  155. /kaa/sprites/{05251a85-2883-4098-842e-6544391de919.png → 71d0d086-50f1-4f50-bb24-a0190827bd08.png} +0 -0
  156. /kaa/sprites/{08bde3ff-7554-4bdb-a7f0-193323489d5b.png → 71f87e1c-77f1-45c7-bb9c-16f14498682b.png} +0 -0
  157. /kaa/sprites/{321b7040-87d7-4f87-9b44-ad2972584a11.png → 732ffc6c-6a17-41f8-9cd1-f218ebc0c23f.png} +0 -0
  158. /kaa/sprites/{205e03de-46d9-4983-a2ea-a7f7500d508f.png → 737570a7-b8f9-4cd7-b5bd-f40cd51b49f8.png} +0 -0
  159. /kaa/sprites/{cb0bbf0f-a25b-4ec4-99bd-f5742270a062.png → 744ea25a-9b6e-4f8f-9a00-0ac714571b09.png} +0 -0
  160. /kaa/sprites/{06cf74aa-635f-48ab-b965-36981f2063d3.png → 745ee069-0f22-4b99-9327-513f365eb922.png} +0 -0
  161. /kaa/sprites/{67edcd91-d2c1-418b-987a-e60263626f56.png → 74b50642-0b18-45c3-8a5d-013ef1e0eb78.png} +0 -0
  162. /kaa/sprites/{c4505a31-74c5-4b3d-bfcf-a67c3ef0039e.png → 7601152e-a216-4bf8-92a6-4e3e6ea01d3d.png} +0 -0
  163. /kaa/sprites/{5f6fafd9-43aa-443e-994e-f2688af5e238.png → 77e7262f-0d12-4bd9-9f22-e8f41a600bf8.png} +0 -0
  164. /kaa/sprites/{3ae72684-1d40-43cf-9508-511c010de64f.png → 78b928c6-0d24-4e87-a84f-0091d42f8e49.png} +0 -0
  165. /kaa/sprites/{65f79941-1c78-496a-a67c-c50f4227bd34.png → 7a23d548-4395-40cc-ac19-4497fa3d9fe2.png} +0 -0
  166. /kaa/sprites/{7d4709f8-6d0d-493f-819e-74cb0f7c166b.png → 7a7871dd-fd07-4234-bd01-c3c9e41bad45.png} +0 -0
  167. /kaa/sprites/{f7264cee-fea6-47b5-9f9b-8f3f31c03ea0.png → 7c193df5-0a1d-444d-9f92-e9c0db79e53a.png} +0 -0
  168. /kaa/sprites/{861a4faa-2522-41e9-8e20-7bd9180bea5a.png → 7d3c3a12-8d0f-48a7-9fd4-66db5e58488f.png} +0 -0
  169. /kaa/sprites/{51eb4be2-22fa-4683-82c7-513f5934f7b9.png → 7d9f8ea3-1fdf-4675-8ddf-38393e235746.png} +0 -0
  170. /kaa/sprites/{fda4b3eb-e31a-448b-8cb3-9126e1ab7deb.png → 7e729638-f54a-48bb-8bbf-eeaa4d697502.png} +0 -0
  171. /kaa/sprites/{b9770cd2-b55f-44dc-965f-f29686fba7da.png → 802e717f-d70a-4f34-8b96-be586a8dfde9.png} +0 -0
  172. /kaa/sprites/{ccfab3e2-7b6d-4ae3-998b-4e5c1863884a.png → 831cac7e-49e9-45d1-bb65-b1db733cda90.png} +0 -0
  173. /kaa/sprites/{6005bf30-fd7c-401e-8efd-050fa97ad7f3.png → 83f258af-35b8-4918-a971-80ea938a854e.png} +0 -0
  174. /kaa/sprites/{e05f2c16-926f-48be-bdd0-16182e879394.png → 8411b102-866d-4e41-ab12-507397b80ca5.png} +0 -0
  175. /kaa/sprites/{09222fb0-78a6-4663-8c1f-1d44e881513d.png → 848a6c94-97a5-44f7-b84b-2f3283dc446b.png} +0 -0
  176. /kaa/sprites/{e2a0c1a6-c0cf-400e-99be-1ed0d35c6ed8.png → 84b3c8e2-6e37-443c-be9b-8a95aedc6f37.png} +0 -0
  177. /kaa/sprites/{fa5b5b92-9c60-4811-a44c-8e897c9632c3.png → 85308e03-ba72-499a-9d12-870269fa3cd0.png} +0 -0
  178. /kaa/sprites/{38426696-ff13-4f20-9f74-b05855990153.png → 86a56df9-47ff-4741-822d-5b7e024d1598.png} +0 -0
  179. /kaa/sprites/{89437aca-7339-4795-b848-ec529b1e5e8d.png → 8922feef-17db-4b10-93da-1bad30492ac2.png} +0 -0
  180. /kaa/sprites/{61229c71-303b-4dc9-ba4e-6a14e5ab161e.png → 8a6ed80c-79c6-4df6-ab65-64d67afb2d5b.png} +0 -0
  181. /kaa/sprites/{504e4927-bfeb-43ee-aa5c-35cec664a4c8.png → 8b04d1a8-6cd6-4d2e-91e7-bdc58c46d939.png} +0 -0
  182. /kaa/sprites/{648d43f6-b251-4d6f-a808-ae7325c91a59.png → 8b60ce9f-09c0-48a0-93f0-d51e0aa16afb.png} +0 -0
  183. /kaa/sprites/{76970b91-7864-4413-bfc7-79c04a48dce7.png → 8c0439d9-9eb7-43f3-8d1e-7e41c57c1bbd.png} +0 -0
  184. /kaa/sprites/{922af7d1-75e9-4ac8-a4e7-2dad8bb1ca87.png → 8c59d3ca-baff-4260-aa0a-6cedac1c2771.png} +0 -0
  185. /kaa/sprites/{e7630ccb-6824-49e3-986f-2a65a2c4a948.png → 8d7b4761-2555-4398-bb74-b70de3b75e22.png} +0 -0
  186. /kaa/sprites/{fbbb73f9-880e-4c7f-9ec9-276bdab4b394.png → 8dd3de6d-07d5-4d93-9663-71a3a4c57a32.png} +0 -0
  187. /kaa/sprites/{ddb59f04-91a0-4fbd-8921-be13acdab291.png → 9009323d-1418-4aed-8a93-075b326d2e7a.png} +0 -0
  188. /kaa/sprites/{82259f79-2bef-442b-bf16-78cb4f22e3be.png → 901a2e7a-37f3-4dda-a58b-5a7644ead6b9.png} +0 -0
  189. /kaa/sprites/{fd8a7a5d-f021-4bfd-83f7-a2dd33325837.png → 904d22f7-51be-486f-8dd1-1871c0cf28e3.png} +0 -0
  190. /kaa/sprites/{bff753bb-b02e-441b-89e5-14845f18c6f6.png → 90943f62-0a03-4a75-804a-0c2fa7b27af4.png} +0 -0
  191. /kaa/sprites/{e392856d-ac59-4414-8fb8-df93a1a99be4.png → 9180e0e7-2cc4-46c7-95ff-fbe83806baf2.png} +0 -0
  192. /kaa/sprites/{f9157db8-d70b-4d46-9800-5a833ce7eda8.png → 93f5c33e-ec81-4a70-a11f-b2e8cb1751ee.png} +0 -0
  193. /kaa/sprites/{ed98a341-5dff-4af7-a194-d28232d481a4.png → 9558b2a5-3961-4ad0-9ce8-379d71920d78.png} +0 -0
  194. /kaa/sprites/{64dfeb35-61ad-4e9b-9847-a18530f02584.png → 968dff88-5a2f-42c7-b64b-406801e22c87.png} +0 -0
  195. /kaa/sprites/{8661bc83-9b0a-4555-8b21-2258b31c7f57.png → 99d99d78-ee37-4e84-8768-b5a7f4f9bd51.png} +0 -0
  196. /kaa/sprites/{6c032aa7-20e3-4e2e-b1a4-1585141ba22b.png → 9caa102c-70af-4a8c-b595-82df9f4c05d8.png} +0 -0
  197. /kaa/sprites/{73b6f3aa-5179-41d6-a82e-22e14aa8cd6a.png → 9cc77f5e-e7d0-4de4-aeb8-587ab8cb212a.png} +0 -0
  198. /kaa/sprites/{e57db8c2-c050-43fb-8205-339aeb5875e8.png → 9e06b7d6-5d15-4844-bbfe-ad1af7da3113.png} +0 -0
  199. /kaa/sprites/{14a697d4-0b58-4644-bb2d-8823d2fefcb8.png → 9e45adeb-4637-4b8b-a687-f1d2cd8c6c18.png} +0 -0
  200. /kaa/sprites/{38186efc-850c-4d83-97bc-9417f1494b94.png → a006054e-61fb-4d2b-a98e-45ce3c663662.png} +0 -0
  201. /kaa/sprites/{b77a7e97-dc59-493d-9d76-4ea9c2876978.png → a04ed558-25e3-42d7-a662-250cad9fa5df.png} +0 -0
  202. /kaa/sprites/{c78fb143-18e3-4697-a0c1-6151514f2a7c.png → a0a62dbf-a027-4b63-86e4-2e863b2edb01.png} +0 -0
  203. /kaa/sprites/{b02c15b5-04b4-40d9-bb13-267786e8e049.png → a0f98517-e4cf-422c-b29f-395a55939772.png} +0 -0
  204. /kaa/sprites/{dcea5aae-322e-4cd4-b218-0eac48690755.png → a4b898aa-405e-4235-8075-a34640a2b023.png} +0 -0
  205. /kaa/sprites/{b40bebbf-2800-40fb-b7a2-1c2d5995e747.png → a5c3108f-c92d-4ce7-8c4e-93b79f55ceb3.png} +0 -0
  206. /kaa/sprites/{fac7b90a-1174-477b-803b-28798647c307.png → a7e6222f-f8ca-47c2-af1e-f158a87f6a03.png} +0 -0
  207. /kaa/sprites/{d8ba1932-978c-451c-a717-d7d2b6db35d9.png → a94d76ef-db70-45a9-aeca-ba16344cc572.png} +0 -0
  208. /kaa/sprites/{cec36685-85a7-4e84-bbbc-4df70b4f7bac.png → ab3d3301-8297-43a8-bf0b-85413c115a7d.png} +0 -0
  209. /kaa/sprites/{bdb72f31-5808-4451-827f-fffc3b616083.png → ad589feb-6d19-47c7-a582-55ee130ee89d.png} +0 -0
  210. /kaa/sprites/{c035ac76-39e9-466b-a606-28bc52bc73e8.png → aed87cd4-eb05-4c24-8adf-cd3fab20e9a3.png} +0 -0
  211. /kaa/sprites/{a888e87e-49fe-405d-b074-3dda30304808.png → afb9e4a9-29a5-4202-9f75-e7d2f1b64aa4.png} +0 -0
  212. /kaa/sprites/{56ac84af-4c85-4b69-b449-98981c1df292.png → afe7f086-723e-4999-a7aa-3342a797d828.png} +0 -0
  213. /kaa/sprites/{fce4a481-e71c-4dab-aeac-59ff8b18201b.png → b1f547d4-c1ba-43fc-9398-4ccdc25b8b62.png} +0 -0
  214. /kaa/sprites/{0455e229-75c9-44ba-8729-745799746979.png → b2036053-36fb-4aa7-8348-e31942731a93.png} +0 -0
  215. /kaa/sprites/{8a0260f5-b32e-430e-bc98-7b5a77cab6ab.png → b61bd48f-1fe7-49fd-a588-09aac3b66f5a.png} +0 -0
  216. /kaa/sprites/{5247b052-5b45-4e64-b7fc-d566f5d4bc82.png → b6219452-323a-44eb-9f44-97b2ad0ee49a.png} +0 -0
  217. /kaa/sprites/{049ecbf6-d434-46fa-a42c-a447475269bb.png → b6da02bf-3f43-4ed0-9b13-f15becb42ce9.png} +0 -0
  218. /kaa/sprites/{f4195ceb-586a-4a8c-9424-4962239d2120.png → b7550a50-5943-45e7-9c1b-771117364844.png} +0 -0
  219. /kaa/sprites/{82200c8c-0916-4601-839a-945f96cc4ebc.png → b865eedf-7bea-46f6-bf14-7f8f4e9ab000.png} +0 -0
  220. /kaa/sprites/{c8c17304-e949-4dfc-b07d-9e7133483e31.png → b8f0ed47-6115-4b88-848a-2fc4a1ab25d8.png} +0 -0
  221. /kaa/sprites/{bdb1460e-c5db-494a-a58a-688f72b6bdba.png → b9224799-d0c1-43d9-9f11-1d35903fc4d9.png} +0 -0
  222. /kaa/sprites/{89841ff0-e834-4a7e-b9d5-00a9490b6b7f.png → ba2fd21c-6228-4e2d-b2db-a6d085cb38a6.png} +0 -0
  223. /kaa/sprites/{c2100faf-1234-49db-b6d4-5a08a4b08272.png → baa9c530-68cb-4111-85f6-060823ad32c4.png} +0 -0
  224. /kaa/sprites/{7a74b5f5-7a04-4678-8e6e-57b5de127182.png → bb224de8-828e-4bc5-a986-632c72fc9157.png} +0 -0
  225. /kaa/sprites/{a34502b4-10bd-42ca-9ada-a9cdb57097dc.png → bcc6ee72-ad5a-4d5c-b6c7-1b3fdfc5fa81.png} +0 -0
  226. /kaa/sprites/{a6ed21f0-4da4-4065-bb59-062a70e132ca.png → bebf9f6d-7cca-44c5-9b9f-fa36e29e97b3.png} +0 -0
  227. /kaa/sprites/{de81f919-4d01-4a4e-bdc1-ffe6e23a5c22.png → bed54f67-d828-403c-9cb3-6a7c85695c2a.png} +0 -0
  228. /kaa/sprites/{a2545c5c-b5cc-4fd2-93c1-04c74c17ee16.png → befadc5e-862a-4818-9223-5d58e4ac03cb.png} +0 -0
  229. /kaa/sprites/{8fdc102b-d8f3-4d16-b8ef-1d804f5aff07.png → c0d1896c-71a1-47d6-9847-b87543a942e9.png} +0 -0
  230. /kaa/sprites/{cdf310f0-b917-4f92-95a9-893af76e3c3a.png → c2984c0f-3e17-45c3-9d7c-dc4f14440b13.png} +0 -0
  231. /kaa/sprites/{054db45e-1434-4604-91ec-7ac586ca11b5.png → c4d0b0c9-ffbe-4b6c-9bf3-b05919e1a07c.png} +0 -0
  232. /kaa/sprites/{64f8ef99-4766-471b-aeb0-b109704d9615.png → c6b53acc-bc89-465e-9814-0138513327ac.png} +0 -0
  233. /kaa/sprites/{7c62081d-097a-4514-a69d-69e96201e816.png → c72a4609-6bf0-4568-8ebc-73c30d67c61e.png} +0 -0
  234. /kaa/sprites/{7e16af89-bb51-4889-8a7e-25715ff5faa1.png → c7829f82-bfce-4259-9ec6-f1cfb7bac925.png} +0 -0
  235. /kaa/sprites/{99a27ff1-bc1c-48a2-9f9b-0803338d1bd8.png → c82ebc01-0127-417f-831a-9d17a84b2691.png} +0 -0
  236. /kaa/sprites/{f1eb4089-8cd1-4830-b00e-40535ddcd116.png → c8747b3b-745c-45ed-84b6-dde1b2558ce8.png} +0 -0
  237. /kaa/sprites/{5f4abae0-a1f0-4c8c-9d93-a8525caa9dd0.png → c893e762-f328-4ef6-b862-5da8eb049f9c.png} +0 -0
  238. /kaa/sprites/{3a4ec054-2c48-4359-afb9-fa5ea8191d16.png → c944d298-a46b-4799-aea3-eec22fc7d4ac.png} +0 -0
  239. /kaa/sprites/{c9245201-4d29-4088-a5e0-f4e93d4494b5.png → c98ef89e-4a1c-40f0-a82e-6851f7b6bbc9.png} +0 -0
  240. /kaa/sprites/{cea8f98d-ba68-498f-bd3d-cc10f0d4575b.png → cb04d87c-f5a9-405c-92ac-b3603e482221.png} +0 -0
  241. /kaa/sprites/{f34e8026-bdfc-47e6-a0ed-49e587ef0f40.png → cb43f670-6623-4af9-ac1d-746372e40511.png} +0 -0
  242. /kaa/sprites/{c0801be3-f07a-4afc-ab0d-7f5d3c4afbd3.png → ce357023-436b-4a39-882f-8410acd8f0d7.png} +0 -0
  243. /kaa/sprites/{19513e9f-2cbb-4f66-84b7-2ad2faed252d.png → cea9f5ea-5923-4c6e-bd24-90d2e084112c.png} +0 -0
  244. /kaa/sprites/{1ef5fa52-b6e1-42d0-947a-ce970eba057d.png → cf62e2df-3be1-4d03-9f34-1518280abd90.png} +0 -0
  245. /kaa/sprites/{fda78372-04b4-4d55-92b1-aedec20d0913.png → d0a483a9-400f-4b6e-87a0-9781b4454da0.png} +0 -0
  246. /kaa/sprites/{7efce7bc-12a5-4a53-9a0a-9fa755649ebd.png → d10d480c-e96e-475e-815c-0969f37fe3bc.png} +0 -0
  247. /kaa/sprites/{5e2b4bb9-f200-4723-96ac-5f907e28eaaa.png → d1839450-8d60-41a4-b035-8e1acd0f1c7a.png} +0 -0
  248. /kaa/sprites/{3e669188-5933-4502-b039-38f4d4649664.png → d19859f3-f7cc-46ef-8bc6-86df7856fd53.png} +0 -0
  249. /kaa/sprites/{18b13508-c46f-4134-b991-975c0a1b9a74.png → d28a18db-0f66-45a6-b3cd-69173ecdd790.png} +0 -0
  250. /kaa/sprites/{6fadb00b-e32e-4c45-a738-f21b8f48c139.png → d2d3d77d-a06f-4167-b02b-5ca688c0c0c3.png} +0 -0
  251. /kaa/sprites/{c05a600a-d79e-432d-a49f-5b2443d67bd4.png → d38c5015-e461-4e09-8b56-731472bdf59e.png} +0 -0
  252. /kaa/sprites/{e388db01-0870-412d-b8bc-5a512ec997c8.png → d473b5bd-4be3-4f0f-bb92-b909050f273a.png} +0 -0
  253. /kaa/sprites/{aba47934-f264-49f9-a72c-6ed90b112701.png → d609a029-5407-43c2-a9a9-07bfd43fcbb8.png} +0 -0
  254. /kaa/sprites/{318abb8a-5950-4d22-ac42-77219b5bc1a0.png → d6491f82-9637-47eb-8f35-eb272b5ef8df.png} +0 -0
  255. /kaa/sprites/{41ff9641-d200-4caa-bcfa-d8389a3438eb.png → d8d5019c-52e6-4767-a9aa-d8da6ffcbd00.png} +0 -0
  256. /kaa/sprites/{8299e3e2-cfd5-4380-adce-a46c93b1be4d.png → d8dd8b59-c05c-4350-a15d-be75c94d46cc.png} +0 -0
  257. /kaa/sprites/{a7f25aeb-d91b-47e0-ba1a-0c6382380102.png → d98263bf-15fb-430e-ba39-2558fa99cac0.png} +0 -0
  258. /kaa/sprites/{f8d8c943-1b36-4391-a7fc-2a49f8966d53.png → d9bc9bbb-9a1a-4cbe-b6ed-24112d7c5ac7.png} +0 -0
  259. /kaa/sprites/{4729b509-0f4a-4e96-b186-ec56c680c9e6.png → d9cb2f43-2786-48d8-90f8-8cf1929f6172.png} +0 -0
  260. /kaa/sprites/{677933e9-1481-4f01-95b4-d55bea51db8c.png → da922566-97ba-4477-bcad-35ea02a3ee48.png} +0 -0
  261. /kaa/sprites/{abe2757f-84f3-4967-bd05-79c17cb1f32c.png → dac8d8fd-006c-4f50-a4e0-d79dbf3f5915.png} +0 -0
  262. /kaa/sprites/{9a9a1f40-d308-4aa5-8d91-60342bc6a4e0.png → db33ab8d-160d-48c7-b464-dfe194e762d4.png} +0 -0
  263. /kaa/sprites/{c6b6b77b-2ec7-4fb7-8033-f4d061f4e9c8.png → dbc5db78-81f5-41e6-bdc4-dafaa9173320.png} +0 -0
  264. /kaa/sprites/{4fb1d36c-5fb6-4fe5-9ba3-07e056eb1dfc.png → dcfdfab4-8dfb-4069-bf88-8e8401ef86f3.png} +0 -0
  265. /kaa/sprites/{ebe22aea-0318-49d8-ab07-ce2eef34265f.png → de354b53-2fd0-4039-87e2-fcad2e070579.png} +0 -0
  266. /kaa/sprites/{c6b0f9ba-a976-474b-b22d-6fe4391d9373.png → e28ea25e-0bcf-4d52-b501-9ef7a4863870.png} +0 -0
  267. /kaa/sprites/{a97e2840-1575-4f2c-97df-6a720c644969.png → e2ac106f-edeb-4375-af8c-45f33e9bfae6.png} +0 -0
  268. /kaa/sprites/{a9ba2741-38da-4448-ab80-f0e5b3c3847f.png → e2ac927f-257e-4537-995d-fbfbe4983b70.png} +0 -0
  269. /kaa/sprites/{83c27159-36d2-4ccf-ace7-e5d2169e7e52.png → e642b9ef-c8a7-41d5-8d71-5cfbaf3017a1.png} +0 -0
  270. /kaa/sprites/{719297ec-82be-4820-8ecf-8bf6322b81fe.png → e749feec-6bf2-4c24-bb12-948e696b8116.png} +0 -0
  271. /kaa/sprites/{94ed55fe-3ef8-46bc-855a-a7b1dedab801.png → e8a33d3f-a4fb-4851-b47a-b5f3d85e882f.png} +0 -0
  272. /kaa/sprites/{93e91dd0-0050-48b4-8bf8-c732cd76f0e3.png → ed3aa6e6-4256-416b-9d04-d57ca340e39d.png} +0 -0
  273. /kaa/sprites/{dc51eccf-9470-495a-9e38-59d4481adbd4.png → ed4c0554-84df-4c29-af18-7c38523cc59b.png} +0 -0
  274. /kaa/sprites/{8c3bc157-022a-4bb1-be74-af1ad254e67f.png → ef1bfd47-78e9-4cb7-a344-53d980fc3e5e.png} +0 -0
  275. /kaa/sprites/{f3a5992b-dabf-4c2b-83e9-4c91c3b7aac8.png → ef1ddc7d-75f9-4798-afa1-733e16794a81.png} +0 -0
  276. /kaa/sprites/{e6e66204-8a2f-4377-8674-b7d663ff0081.png → efb01328-b6e1-438e-9471-bef3ea77a22c.png} +0 -0
  277. /kaa/sprites/{d6dd92b3-310f-4f5d-a8ef-b941c3659c0c.png → f06b1a4f-eeb6-4dea-9543-5ec27640bdd9.png} +0 -0
  278. /kaa/sprites/{dcf465c6-ad64-48e7-9c3c-7bc7cfc13a44.png → f07bac27-9201-498f-9f26-a58291a70542.png} +0 -0
  279. /kaa/sprites/{f2f818c9-b0cf-436d-9d3e-6544c5399063.png → f0fd613b-d2f8-4b18-90d8-0b328373e715.png} +0 -0
  280. /kaa/sprites/{ae73d26b-2d47-4921-a6ec-5bbea32773a3.png → f1fbe46a-759d-467d-b8ca-2158f530f7c5.png} +0 -0
  281. /kaa/sprites/{ed854df1-878c-4e0b-8138-9b28d314ede6.png → f2314c76-3a2b-4644-831a-343a601145df.png} +0 -0
  282. /kaa/sprites/{993a33ac-994b-4eb0-9c1e-b9412d499d67.png → f329d4ba-e836-4be6-a05b-879b53667df3.png} +0 -0
  283. /kaa/sprites/{c91874f4-363f-4997-a38e-3e486dfd8043.png → f469d235-552f-4b07-9d03-9bcae425b6d8.png} +0 -0
  284. /kaa/sprites/{9f573ac2-9d28-4d92-8e3f-1b78031220dd.png → f5177258-a3cf-4d4f-9c69-0b49556f754f.png} +0 -0
  285. /kaa/sprites/{f9a353b2-958d-4aae-ade4-66bdc6481e35.png → f5dcac82-7c54-4020-84c5-b1334b595612.png} +0 -0
  286. /kaa/sprites/{d57f792a-f086-4fbe-b4d9-5db629a78d42.png → f6656842-1460-41ab-95ed-561aefaf08e2.png} +0 -0
  287. /kaa/sprites/{d9a636be-a017-4ef5-a70c-c374827008a0.png → f70e9455-7cc8-449c-8282-89a9e69f7ac3.png} +0 -0
  288. /kaa/sprites/{1b847790-90e2-44f8-b6d9-4814812006bd.png → f7facb3a-1b41-4409-b128-d4ad03245845.png} +0 -0
  289. /kaa/sprites/{b10281ae-cfaf-4400-b2fb-c8c2b432c8e7.png → f7fd469f-791e-4bf7-ae3f-b5aaed92f999.png} +0 -0
  290. /kaa/sprites/{ba8ee2cd-f662-440c-90b3-1e4bfe7bab6b.png → f873280f-bc68-40d1-8d8d-3d86964264f0.png} +0 -0
  291. /kaa/sprites/{bf3ff37e-d4fc-42ee-87d6-db1e2040aed5.png → f9da6eeb-ff9e-45b3-94b0-e7ba34938dec.png} +0 -0
  292. /kaa/sprites/{4370013d-f052-4314-94ff-a342d70754c3.png → fa24f5d5-d7e5-4421-8cbc-2ce3a0189654.png} +0 -0
  293. /kaa/sprites/{57741798-65dd-47eb-b4b1-b3f0e3c3e318.png → fb61dbf3-fbc1-400a-adde-83ea08b5027d.png} +0 -0
  294. /kaa/sprites/{f0ed1dd3-b227-48c1-8c8c-858dbd84fcc7.png → fc8457b6-f8a3-4b01-9864-0cd624c312b6.png} +0 -0
  295. /kaa/sprites/{f485db66-2159-4d31-ba53-0fbb726e7f64.png → fdbf6a89-b95a-481f-a269-be53e05b18de.png} +0 -0
  296. /kaa/sprites/{dae37bd7-6a34-4eb4-8cd0-3c0c03b4575a.png → fed11307-2186-4ede-875f-ffa0383f410c.png} +0 -0
  297. /kaa/sprites/{8fbee6fe-9409-407e-8f55-d2d36ab37f6a.png → ff0d3db2-c4e5-41e7-a85b-df4fd392924c.png} +0 -0
  298. /kaa/sprites/{d8967770-c64a-4609-a0a5-f46ba81edceb.png → ff40ff91-4e8c-46cb-a254-66cd5ffd363e.png} +0 -0
  299. /kaa/sprites/{62f93327-5946-4a48-aff8-a203483b0562.png → ff614071-c318-4263-af3e-01ea0ab45b73.png} +0 -0
  300. {ksaa-2025.11b3.dist-info → ksaa-2025.11.post1.dist-info}/WHEEL +0 -0
  301. {ksaa-2025.11b3.dist-info → ksaa-2025.11.post1.dist-info}/entry_points.txt +0 -0
  302. {ksaa-2025.11b3.dist-info → ksaa-2025.11.post1.dist-info}/licenses/LICENSE +0 -0
  303. {ksaa-2025.11b3.dist-info → ksaa-2025.11.post1.dist-info}/top_level.txt +0 -0
kaa/tasks/R2.py ADDED
@@ -0,0 +1,24 @@
1
+ from . import R
2
+ from kaa.game_ui.primary_button import GakumasButtonPrefab
3
+ from kotonebot.primitives import Image
4
+
5
+ class ButtonNextNoIcon(GakumasButtonPrefab):
6
+ template = Image(R.Common.ButtonNextNoIcon.data)
7
+
8
+ # @classmethod
9
+ # def require(cls, **kwargs: *PrefabKwargs[GakumasButtonObject]) -> GakumasButtonObject:
10
+ # ...
11
+
12
+
13
+ if __name__ == '__main__':
14
+ # from kotonebot.backend.context.context import manual_context
15
+ from kotonebot import device
16
+
17
+ # device.click(100, 100)
18
+ from time import sleep
19
+ device.screenshot()
20
+ sleep(0.5)
21
+ device.screenshot()
22
+ # print(image.find(R.Common.ButtonNextNoIcon, threshold=0.6))
23
+ btn1 = ButtonNextNoIcon.require()
24
+ print(btn1.disabled)
@@ -25,6 +25,7 @@ def club_reward():
25
25
  # 进入社团UI
26
26
  logger.info('Entering club UI')
27
27
  device.click(toolbar_menu(True))
28
+ sleep(0.5) # 避免过早点击
28
29
  device.click(image.expect_wait(R.Daily.IconMenuClub, timeout=5))
29
30
  sleep(3)
30
31
 
@@ -154,7 +154,12 @@ def ap_items():
154
154
  if purchased is not None:
155
155
  logger.info(f'AP item #{index} already purchased.')
156
156
  continue
157
- comfirm = image.expect_wait(R.Common.ButtonConfirm, timeout=2)
157
+ comfirm = image.wait_for(R.Common.ButtonConfirm, colored=True, timeout=2)
158
+ # 如果体力不足
159
+ if comfirm is None:
160
+ logger.info(f'Not enough AP for item #{index}. Skipping all AP items.')
161
+ device.click(image.expect_wait(R.Common.ButtonIconClose))
162
+ break
158
163
  # 如果数量不是最大,调到最大
159
164
  for _ in Loop(interval=0.3):
160
165
  if image.find(R.Daily.ButtonShopCountAdd, colored=True):
@@ -169,6 +174,23 @@ def ap_items():
169
174
  logger.warning(f'AP item #{index} not found')
170
175
  logger.info(f'Purchasing AP items completed. {len(item_indices)} items purchased.')
171
176
 
177
+ @action('购买 周免费礼包')
178
+ def weekly_free_pack():
179
+ """
180
+ 购买 周免费礼包
181
+
182
+ 前置条件:位于主商店页面
183
+ """
184
+ logger.info(f'Purchasing weekly free pack.')
185
+
186
+ sleep(1.0) # 动画加载完毕,但是按钮不可点击
187
+ device.click(image.expect_wait(R.Common.ShopPackButton))
188
+
189
+ if image.wait_for(R.Daily.WeeklyFreePack, colored=True, timeout=1):
190
+ device.click()
191
+ device.click(image.expect_wait(R.Common.ButtonConfirmNoIcon))
192
+ logger.info('Confirming purchase of weekly free pack.')
193
+
172
194
  @task('商店购买')
173
195
  def purchase():
174
196
  """
@@ -204,6 +226,9 @@ def purchase():
204
226
 
205
227
  # 购买 AP 物品
206
228
  if conf().purchase.ap_enabled:
229
+ # 如果不购买マニー物品,则需要等待动画加载完毕,否则按钮无法点击
230
+ # FIXME: 使用Loop形式重构整个purchase函数
231
+ sleep(0.5)
207
232
  # 点击 AP 选项卡
208
233
  device.click(ap_tab)
209
234
  # 等待 AP 选项卡加载完成
@@ -213,6 +238,13 @@ def purchase():
213
238
  else:
214
239
  logger.info('AP purchase is disabled.')
215
240
 
241
+ # 返回主商店页面
242
+ device.click(image.expect_wait(R.Common.ButtonToolbarBack))
243
+
244
+ # 购买周免费礼包
245
+ if conf().purchase.weekly_enabled:
246
+ weekly_free_pack()
247
+
216
248
  goto_home()
217
249
 
218
250
  if __name__ == '__main__':
@@ -31,8 +31,18 @@ def upgrade_support_card():
31
31
  device.click(image.expect_wait(R.Common.ButtonIdolSupportCard, timeout=5))
32
32
  sleep(2)
33
33
 
34
- # 往下滑,划到最底部
35
- Scrollable().to(1)
34
+ # 重试10次
35
+ for retry_idx in range(10):
36
+ logger.debug(f'Scrolling down to find low-level support cards, attempt {retry_idx + 1}/10')
37
+ # 往下滑,划到最底部
38
+ scrollbar = Scrollable()
39
+ scrollbar.to(1)
40
+ sleep(0.1)
41
+ scrollbar.update()
42
+ if scrollbar.position >= 0.99:
43
+ logger.debug('Successfully scrolled to the bottom.')
44
+ break
45
+ sleep(0.5)
36
46
 
37
47
  # 点击左上角第一张支援卡
38
48
  # 点击位置百分比: (0.18, 0.34)
@@ -85,6 +85,7 @@ def acquire_skill_card():
85
85
  if acquire_btn := image.find(R.InPurodyuusu.AcquireBtnDisabled):
86
86
  logger.debug("Click acquire button")
87
87
  device.click(acquire_btn)
88
+ sleep(0.2)
88
89
  break
89
90
 
90
91
  @action('选择P物品', screenshot_mode='auto')
@@ -536,7 +536,7 @@ def handle_action(action: ProduceAction, final_week: bool = False) -> ProduceAct
536
536
  logger.warning("Unknown action: %s", action)
537
537
  return None
538
538
 
539
- def week_normal(week_first: bool = False):
539
+ def week_normal(week_first: bool = False) -> bool:
540
540
  until_action_scene(week_first)
541
541
  logger.info("Handling actions...")
542
542
  action: ProduceAction | None = None
@@ -572,7 +572,9 @@ def week_normal(week_first: bool = False):
572
572
  assert_never(action)
573
573
  until_action_scene()
574
574
 
575
- def week_final_lesson():
575
+ return True # 继续执行下一周
576
+
577
+ def week_final_lesson() -> bool:
576
578
  until_action_scene()
577
579
  action: ProduceAction | None = None
578
580
  actions = produce_solution().data.actions_order
@@ -599,6 +601,8 @@ def week_final_lesson():
599
601
  raise ValueError("Action is None.")
600
602
  case _:
601
603
  assert_never(action)
604
+
605
+ return True # 继续执行下一周
602
606
 
603
607
  def week_mid_and_final_exam_common():
604
608
  logger.info("Wait for exam scene...")
@@ -609,23 +613,27 @@ def week_mid_and_final_exam_common():
609
613
  sleep(0.5)
610
614
  loading.wait_loading_end()
611
615
 
612
- def week_mid_exam():
616
+ def week_mid_exam() -> bool:
613
617
  logger.info("Week mid exam started.")
614
618
 
615
619
  week_mid_and_final_exam_common()
616
620
 
617
621
  if exam('mid'):
618
622
  until_action_scene() # 考试通过
623
+ return True
619
624
  else:
620
625
  produce_end(has_live=False) # 考试不合格
626
+ return False
621
627
 
622
- def week_final_exam():
628
+ def week_final_exam() -> bool:
623
629
  logger.info("Week final exam started.")
624
630
 
625
631
  week_mid_and_final_exam_common()
626
632
 
627
633
  exam('final')
634
+
628
635
  produce_end()
636
+ return False
629
637
 
630
638
  @action('执行 Regular 培育', screenshot_mode='manual-inherit')
631
639
  def hajime_regular(week: int = -1, start_from: int = 1):
@@ -658,7 +666,9 @@ def hajime_regular(week: int = -1, start_from: int = 1):
658
666
  else:
659
667
  for i, w in enumerate(weeks[start_from-1:]):
660
668
  logger.info("Week %d started.", i + start_from)
661
- w()
669
+ if not w():
670
+ logger.info("Exit produce after week %d.", i + start_from)
671
+ break
662
672
 
663
673
  @action('执行 PRO 培育', screenshot_mode='manual-inherit')
664
674
  def hajime_pro(week: int = -1, start_from: int = 1):
@@ -692,7 +702,9 @@ def hajime_pro(week: int = -1, start_from: int = 1):
692
702
  else:
693
703
  for i, w in enumerate(weeks[start_from-1:]):
694
704
  logger.info("Week %d started.", i + start_from)
695
- w()
705
+ if not w():
706
+ logger.info("Exit produce after week %d.", i + start_from)
707
+ break
696
708
 
697
709
  @action("执行 MASTER 培育", screenshot_mode='manual-inherit')
698
710
  def hajime_master(week: int = -1, start_from: int = 1):
@@ -728,7 +740,9 @@ def hajime_master(week: int = -1, start_from: int = 1):
728
740
  else:
729
741
  for i, w in enumerate(weeks[start_from-1:]):
730
742
  logger.info("Week %d started.", i + start_from)
731
- w()
743
+ if not w():
744
+ logger.info("Exit produce after week %d.", i + start_from)
745
+ break
732
746
 
733
747
  @action('是否在考试场景')
734
748
  def is_exam_scene():
kaa/util/reactive.py ADDED
@@ -0,0 +1,182 @@
1
+ from typing import TypeVar, Generic, Any, Callable, Optional, cast
2
+
3
+ # T: 原始对象的类型 (Root)
4
+ # V: 属性值的类型 (Leaf)
5
+ T = TypeVar("T")
6
+ V = TypeVar("V")
7
+
8
+ class PathRecorder(Generic[T]):
9
+ """
10
+ 记录路径操作(属性访问 或 索引访问)
11
+ """
12
+ # FIX: 显式声明 path 可以为 None
13
+ def __init__(self, root: Any = None, path: Optional[list[tuple[str, Any]]] = None):
14
+ self._root = root
15
+ # path 存储操作记录: ('attr', 'name') 或 ('item', 'key')
16
+ self._path: list[tuple[str, Any]] = path if path is not None else []
17
+
18
+ def __getattr__(self, name: str) -> "PathRecorder":
19
+ # 记录 .attr 操作
20
+ return PathRecorder(self._root, self._path + [('attr', name)])
21
+
22
+ def __getitem__(self, key: Any) -> "PathRecorder":
23
+ # 记录 [key] 操作
24
+ return PathRecorder(self._root, self._path + [('item', key)])
25
+
26
+ # 内部接口
27
+ def _get_recorder_info(self) -> tuple[Any, list[tuple[str, Any]]]:
28
+ return self._root, self._path
29
+
30
+ def of(obj: T) -> T:
31
+ """
32
+ Proxy 入口。类型标记返回 T 以获得 IDE 提示,运行时返回 Recorder。
33
+ """
34
+ return cast(T, PathRecorder(root=obj))
35
+
36
+ def _traverse(target: Any, path: list[tuple[str, Any]]) -> tuple[Any, str, Any]:
37
+ """
38
+ 辅助函数:遍历路径,返回 (parent_container, last_op_type, last_key)
39
+ """
40
+ current = target
41
+
42
+ # 遍历直到倒数第二个节点(获取父容器)
43
+ for op_type, key in path[:-1]:
44
+ if op_type == 'attr':
45
+ current = getattr(current, key)
46
+ elif op_type == 'item':
47
+ current = current[key]
48
+
49
+ # 获取最后一个操作的信息
50
+ last_op, last_key = path[-1]
51
+ return current, last_op, last_key
52
+
53
+ def getter(proxy: V) -> Callable[[], V]:
54
+ """
55
+ 创建一个 getter 函数。
56
+ """
57
+ # 运行时检查
58
+ if not isinstance(proxy, PathRecorder):
59
+ raise TypeError("getter argument must be a proxy object created by of()")
60
+
61
+ # 显式转换类型以通过静态检查
62
+ recorder = cast(PathRecorder, proxy)
63
+ root, path = recorder._get_recorder_info()
64
+
65
+ if not path:
66
+ return lambda: cast(V, root)
67
+
68
+ def _getter_impl() -> V:
69
+ parent, last_op, last_key = _traverse(root, path)
70
+
71
+ if last_op == 'attr':
72
+ return getattr(parent, last_key)
73
+ elif last_op == 'item':
74
+ return parent[last_key]
75
+
76
+ # FIX: 抛出异常而不是返回 None,以满足返回类型 V
77
+ raise ValueError(f"Unknown operation type: {last_op}")
78
+
79
+ return _getter_impl
80
+
81
+ def setter(proxy: V) -> Callable[[V], None]:
82
+ """
83
+ 创建一个 setter 函数。
84
+ """
85
+ if not isinstance(proxy, PathRecorder):
86
+ raise TypeError("setter argument must be a proxy object created by of()")
87
+
88
+ recorder = cast(PathRecorder, proxy)
89
+ root, path = recorder._get_recorder_info()
90
+
91
+ if not path:
92
+ raise ValueError("Cannot set root object directly")
93
+
94
+ def _setter_impl(value: V) -> None:
95
+ parent, last_op, last_key = _traverse(root, path)
96
+
97
+ if last_op == 'attr':
98
+ setattr(parent, last_key, value)
99
+ elif last_op == 'item':
100
+ parent[last_key] = value
101
+ else:
102
+ raise ValueError(f"Unknown operation type: {last_op}")
103
+
104
+ return _setter_impl
105
+
106
+ class Ref(Generic[T]):
107
+ """
108
+ 持有对特定数据路径的引用,支持读写。
109
+ Ref 接收一个 path recorder 代理对象。
110
+ """
111
+ def __init__(self, proxy: T):
112
+ self._getter_fn = getter(proxy)
113
+ self._setter_fn = setter(proxy)
114
+
115
+ @property
116
+ def value(self) -> T:
117
+ return self._getter_fn()
118
+
119
+ @value.setter
120
+ def value(self, new_value: T) -> None:
121
+ self._setter_fn(new_value)
122
+
123
+ def ref(proxy: T) -> Ref[T]:
124
+ """
125
+ 创建一个引用对象 (Ref),用于直接读写路径记录器的目标值。
126
+
127
+ Example:
128
+ name_ref = ref(of(user).name)
129
+ name_ref.value = "Bob"
130
+ """
131
+ return Ref(proxy)
132
+
133
+ if __name__ == "__main__":
134
+ class Address:
135
+ def __init__(self, city):
136
+ self.city = city
137
+ def __repr__(self):
138
+ return f"Address(city='{self.city}')"
139
+
140
+ class User:
141
+ def __init__(self, name, city):
142
+ self.name = name
143
+ self.addresses = {"home": Address(city)}
144
+ def __repr__(self):
145
+ return f"User(name='{self.name}', addresses={self.addresses})"
146
+
147
+ data = User("Alice", "New York")
148
+ print(f"Original Data: {data}")
149
+
150
+ # 1. 测试 Getter (混合 属性 和 字典索引)
151
+ get_city = getter(of(data).addresses["home"].city)
152
+ print(f"Getter result: {get_city()}") # Output: New York
153
+
154
+ # 2. 测试 Setter
155
+ set_city = setter(of(data).addresses["home"].city)
156
+ set_city("San Francisco")
157
+ print(f"After Setter: {data.addresses['home'].city}") # Output: San Francisco
158
+
159
+ # 3. 测试 Ref (引用)
160
+ print("-" * 30)
161
+ print("Testing Ref...")
162
+
163
+ # 创建一个指向 user.name 的 Ref
164
+ name_ref = ref(of(data).name)
165
+
166
+ print(f"Ref initial value: {name_ref.value}") # Alice
167
+
168
+ # 修改 Ref,应该影响原始对象
169
+ name_ref.value = "Bob"
170
+ print(f"Ref value set to 'Bob'.")
171
+ print(f"Original object name: {data.name}") # Bob
172
+
173
+ # 修改原始对象,Ref 应该能感知
174
+ data.name = "Charlie"
175
+ print(f"Original object name set to 'Charlie'.")
176
+ print(f"Ref value: {name_ref.value}") # Charlie
177
+
178
+ # 复杂路径 Ref
179
+ city_ref = ref(of(data).addresses["home"].city)
180
+ print(f"City Ref value: {city_ref.value}") # San Francisco
181
+ city_ref.value = "Tokyo"
182
+ print(f"City Ref set to 'Tokyo'. Original: {data.addresses['home'].city}")
@@ -1,33 +1,33 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ksaa
3
- Version: 2025.11b3
3
+ Version: 2025.11.post1
4
4
  Summary: Kotones Auto Assistant(kaa) is a script for game 'Gakuen Idol M@ster' that automates the dailies and produces.
5
5
  Requires-Python: ~=3.10.0
6
6
  Description-Content-Type: text/markdown
7
7
  License-File: LICENSE
8
- Requires-Dist: opencv-python==4.10.0.84
9
- Requires-Dist: rapidocr_onnxruntime==1.4.3
10
- Requires-Dist: av==14.0.1
11
- Requires-Dist: scikit-image==0.25.0
12
- Requires-Dist: thefuzz==0.22.1
13
- Requires-Dist: adbutils==2.8.0
14
- Requires-Dist: uiautomator2==3.2.8
15
- Requires-Dist: fastapi==0.115.6
16
- Requires-Dist: uvicorn==0.34.0
17
- Requires-Dist: python-multipart==0.0.20
18
- Requires-Dist: websockets==14.1
19
- Requires-Dist: psutil==6.1.1
20
- Requires-Dist: gradio==5.21.0
21
- Requires-Dist: pydantic==2.10.4
8
+ Requires-Dist: opencv-python~=4.10
9
+ Requires-Dist: rapidocr_onnxruntime~=1.4
10
+ Requires-Dist: av~=14.0
11
+ Requires-Dist: scikit-image~=0.25
12
+ Requires-Dist: thefuzz~=0.22
13
+ Requires-Dist: adbutils~=2.8
14
+ Requires-Dist: uiautomator2~=3.2
15
+ Requires-Dist: fastapi~=0.115.6
16
+ Requires-Dist: uvicorn~=0.34.0
17
+ Requires-Dist: python-multipart~=0.0.20
18
+ Requires-Dist: websockets~=14.1
19
+ Requires-Dist: psutil~=6.1
20
+ Requires-Dist: gradio~=6.0
21
+ Requires-Dist: pydantic~=2.10
22
22
  Requires-Dist: ksaa-res==0.2.0
23
- Requires-Dist: typing-extensions==4.12.2
24
- Requires-Dist: python-dotenv==1.0.1
25
- Requires-Dist: onnxruntime==1.14.0
23
+ Requires-Dist: typing-extensions~=4.12
24
+ Requires-Dist: python-dotenv~=1.0.1
25
+ Requires-Dist: onnxruntime~=1.14.0
26
26
  Requires-Dist: numpy<2.0
27
27
  Requires-Dist: pywin32==310; sys_platform == "win32"
28
- Requires-Dist: ahk==1.8.3; sys_platform == "win32"
29
- Requires-Dist: win11toast==0.35; sys_platform == "win32"
30
- Requires-Dist: keyboard==0.13.5
28
+ Requires-Dist: ahk~=1.8.3; sys_platform == "win32"
29
+ Requires-Dist: win11toast~=0.35; sys_platform == "win32"
30
+ Requires-Dist: keyboard~=0.13.5
31
31
  Requires-Dist: kotonebot[android]==0.5.0
32
32
  Requires-Dist: kotonebot[windows]==0.5.0; sys_platform == "win32"
33
33
  Dynamic: license-file