repoburg 1.3.147 → 1.3.149

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 (503) hide show
  1. package/backend/dist/src/seeding/data/context-templates/default-initial_full-project-context.d.ts +1 -1
  2. package/backend/dist/src/seeding/data/context-templates/default-initial_full-project-context.js +0 -3
  3. package/backend/dist/src/seeding/data/context-templates/default-initial_full-project-context.js.map +1 -1
  4. package/backend/dist/tsconfig.build.tsbuildinfo +1 -1
  5. package/package.json +1 -1
  6. package/.claude/settings.local.json +0 -7
  7. package/.playwright-mcp/console-2026-05-12T09-54-31-560Z.log +0 -13
  8. package/.playwright-mcp/console-2026-05-12T10-04-14-892Z.log +0 -13
  9. package/.playwright-mcp/console-2026-05-12T10-50-32-398Z.log +0 -14
  10. package/.playwright-mcp/console-2026-05-12T12-50-09-889Z.log +0 -13
  11. package/.playwright-mcp/console-2026-05-12T12-58-49-817Z.log +0 -60
  12. package/.playwright-mcp/console-2026-05-13T18-41-50-654Z.log +0 -13
  13. package/.playwright-mcp/console-2026-05-13T18-54-58-000Z.log +0 -13
  14. package/.playwright-mcp/console-2026-05-13T19-13-30-875Z.log +0 -95
  15. package/.playwright-mcp/console-2026-05-13T20-09-13-456Z.log +0 -17
  16. package/.playwright-mcp/console-2026-05-13T20-21-01-662Z.log +0 -13
  17. package/.playwright-mcp/console-2026-05-13T20-22-00-038Z.log +0 -15
  18. package/.playwright-mcp/console-2026-05-13T20-26-26-665Z.log +0 -28
  19. package/.playwright-mcp/console-2026-05-13T20-35-49-544Z.log +0 -26
  20. package/.playwright-mcp/console-2026-05-13T20-38-10-958Z.log +0 -676
  21. package/.playwright-mcp/console-2026-05-14T21-27-06-074Z.log +0 -69
  22. package/.playwright-mcp/console-2026-05-14T22-13-07-470Z.log +0 -101
  23. package/.playwright-mcp/console-2026-05-14T23-58-12-858Z.log +0 -28
  24. package/.playwright-mcp/console-2026-05-15T00-15-00-760Z.log +0 -81
  25. package/.playwright-mcp/page-2026-05-12T09-54-32-920Z.yml +0 -223
  26. package/.playwright-mcp/page-2026-05-12T09-54-42-067Z.yml +0 -190
  27. package/.playwright-mcp/page-2026-05-12T09-55-12-019Z.yml +0 -389
  28. package/.playwright-mcp/page-2026-05-12T09-55-49-065Z.yml +0 -428
  29. package/.playwright-mcp/page-2026-05-12T09-56-06-607Z.yml +0 -389
  30. package/.playwright-mcp/page-2026-05-12T09-56-23-371Z.yml +0 -196
  31. package/.playwright-mcp/page-2026-05-12T09-56-55-792Z.yml +0 -389
  32. package/.playwright-mcp/page-2026-05-12T10-04-15-716Z.yml +0 -164
  33. package/.playwright-mcp/page-2026-05-12T10-04-43-994Z.yml +0 -190
  34. package/.playwright-mcp/page-2026-05-12T10-05-04-616Z.yml +0 -389
  35. package/.playwright-mcp/page-2026-05-12T10-05-27-643Z.yml +0 -428
  36. package/.playwright-mcp/page-2026-05-12T10-05-47-851Z.yml +0 -389
  37. package/.playwright-mcp/page-2026-05-12T10-06-13-429Z.yml +0 -196
  38. package/.playwright-mcp/page-2026-05-12T10-06-58-147Z.yml +0 -389
  39. package/.playwright-mcp/page-2026-05-12T10-08-20-216Z.yml +0 -428
  40. package/.playwright-mcp/page-2026-05-12T10-08-38-177Z.yml +0 -389
  41. package/.playwright-mcp/page-2026-05-12T10-09-01-851Z.yml +0 -196
  42. package/.playwright-mcp/page-2026-05-12T10-09-24-888Z.yml +0 -389
  43. package/.playwright-mcp/page-2026-05-12T10-50-33-049Z.yml +0 -212
  44. package/.playwright-mcp/page-2026-05-12T10-50-48-496Z.yml +0 -196
  45. package/.playwright-mcp/page-2026-05-12T10-51-51-308Z.yml +0 -196
  46. package/.playwright-mcp/page-2026-05-12T10-52-07-379Z.yml +0 -196
  47. package/.playwright-mcp/page-2026-05-12T12-50-10-589Z.yml +0 -143
  48. package/.playwright-mcp/page-2026-05-12T12-50-25-461Z.yml +0 -196
  49. package/.playwright-mcp/page-2026-05-12T12-51-11-190Z.yml +0 -394
  50. package/.playwright-mcp/page-2026-05-12T12-52-21-138Z.yml +0 -524
  51. package/.playwright-mcp/page-2026-05-12T12-53-42-423Z.yml +0 -431
  52. package/.playwright-mcp/page-2026-05-12T12-54-18-549Z.yml +0 -196
  53. package/.playwright-mcp/page-2026-05-12T12-54-26-818Z.yml +0 -390
  54. package/.playwright-mcp/page-2026-05-12T12-55-32-697Z.yml +0 -520
  55. package/.playwright-mcp/page-2026-05-12T12-58-50-450Z.yml +0 -164
  56. package/.playwright-mcp/page-2026-05-12T12-59-12-954Z.yml +0 -196
  57. package/.playwright-mcp/page-2026-05-12T12-59-38-479Z.yml +0 -394
  58. package/.playwright-mcp/page-2026-05-12T13-01-17-580Z.yml +0 -524
  59. package/.playwright-mcp/page-2026-05-12T13-01-58-447Z.yml +0 -271
  60. package/.playwright-mcp/page-2026-05-12T13-03-12-109Z.yml +0 -394
  61. package/.playwright-mcp/page-2026-05-13T18-41-51-436Z.yml +0 -159
  62. package/.playwright-mcp/page-2026-05-13T18-42-27-482Z.yml +0 -4814
  63. package/.playwright-mcp/page-2026-05-13T18-54-58-644Z.yml +0 -154
  64. package/.playwright-mcp/page-2026-05-13T18-56-11-217Z.yml +0 -1560
  65. package/.playwright-mcp/page-2026-05-13T18-56-32-205Z.yml +0 -1560
  66. package/.playwright-mcp/page-2026-05-13T19-13-31-457Z.yml +0 -164
  67. package/.playwright-mcp/page-2026-05-13T19-14-26-248Z.yml +0 -1560
  68. package/.playwright-mcp/page-2026-05-13T19-15-02-355Z.yml +0 -1560
  69. package/.playwright-mcp/page-2026-05-13T20-09-14-478Z.yml +0 -149
  70. package/.playwright-mcp/page-2026-05-13T20-10-49-292Z.yml +0 -4814
  71. package/.playwright-mcp/page-2026-05-13T20-21-02-852Z.yml +0 -143
  72. package/.playwright-mcp/page-2026-05-13T20-22-01-084Z.yml +0 -143
  73. package/.playwright-mcp/page-2026-05-13T20-22-09-334Z.yml +0 -1561
  74. package/.playwright-mcp/page-2026-05-13T20-26-27-690Z.yml +0 -143
  75. package/.playwright-mcp/page-2026-05-13T20-26-53-324Z.yml +0 -1561
  76. package/.playwright-mcp/page-2026-05-13T20-27-35-395Z.yml +0 -1561
  77. package/.playwright-mcp/page-2026-05-13T20-35-50-708Z.yml +0 -149
  78. package/.playwright-mcp/page-2026-05-13T20-37-41-379Z.yml +0 -0
  79. package/.playwright-mcp/page-2026-05-13T20-38-12-049Z.yml +0 -149
  80. package/.playwright-mcp/page-2026-05-13T20-38-19-708Z.yml +0 -1561
  81. package/.playwright-mcp/page-2026-05-14T21-27-07-278Z.yml +0 -164
  82. package/.playwright-mcp/page-2026-05-14T22-13-07-628Z.yml +0 -5
  83. package/.playwright-mcp/page-2026-05-14T22-13-27-676Z.yml +0 -1561
  84. package/.playwright-mcp/page-2026-05-14T23-58-13-064Z.yml +0 -3
  85. package/.playwright-mcp/page-2026-05-14T23-58-33-500Z.yml +0 -1561
  86. package/.playwright-mcp/page-2026-05-15T00-15-00-945Z.yml +0 -3
  87. package/.run/backend _ build.run.xml +0 -12
  88. package/.run/backend _ lint.run.xml +0 -12
  89. package/.run/backend _ test.run.xml +0 -12
  90. package/.run/frontend _ build.run.xml +0 -12
  91. package/.run/frontend _ lint_fix.run.xml +0 -12
  92. package/CODEMAP.md +0 -53
  93. package/backend/.repoburg/hooks/README.md +0 -53
  94. package/backend/.repoburg/hooks/eslint-hook.ts +0 -46
  95. package/backend/.repoburg/hooks/example-hook.ts +0 -62
  96. package/backend/CODEMAP.md +0 -48
  97. package/backend/README.md +0 -3
  98. package/backend/coverage/clover.xml +0 -12003
  99. package/backend/coverage/coverage-final.json +0 -313
  100. package/backend/coverage/lcov-report/base.css +0 -224
  101. package/backend/coverage/lcov-report/block-navigation.js +0 -87
  102. package/backend/coverage/lcov-report/favicon.png +0 -0
  103. package/backend/coverage/lcov-report/index.html +0 -1301
  104. package/backend/coverage/lcov-report/packages/gemini-core/examples/index.html +0 -116
  105. package/backend/coverage/lcov-report/packages/gemini-core/examples/simple.ts.html +0 -445
  106. package/backend/coverage/lcov-report/packages/gemini-core/index.html +0 -116
  107. package/backend/coverage/lcov-report/packages/gemini-core/index.ts.html +0 -127
  108. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/codeAssist.ts.html +0 -193
  109. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/converter.ts.html +0 -832
  110. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/index.html +0 -206
  111. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/oauth-credential-storage.ts.html +0 -469
  112. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/oauth2.ts.html +0 -1705
  113. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/server.ts.html +0 -790
  114. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/setup.ts.html +0 -454
  115. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/types.ts.html +0 -685
  116. package/backend/coverage/lcov-report/packages/gemini-core/src/config/config.ts.html +0 -307
  117. package/backend/coverage/lcov-report/packages/gemini-core/src/config/index.html +0 -146
  118. package/backend/coverage/lcov-report/packages/gemini-core/src/config/models.ts.html +0 -151
  119. package/backend/coverage/lcov-report/packages/gemini-core/src/config/storage.ts.html +0 -172
  120. package/backend/coverage/lcov-report/packages/gemini-core/src/core/contentGenerator.ts.html +0 -490
  121. package/backend/coverage/lcov-report/packages/gemini-core/src/core/geminiChat.ts.html +0 -1237
  122. package/backend/coverage/lcov-report/packages/gemini-core/src/core/geminiRequest.ts.html +0 -139
  123. package/backend/coverage/lcov-report/packages/gemini-core/src/core/index.html +0 -176
  124. package/backend/coverage/lcov-report/packages/gemini-core/src/core/prompts.ts.html +0 -409
  125. package/backend/coverage/lcov-report/packages/gemini-core/src/core/tokenLimits.ts.html +0 -181
  126. package/backend/coverage/lcov-report/packages/gemini-core/src/index.html +0 -116
  127. package/backend/coverage/lcov-report/packages/gemini-core/src/index.ts.html +0 -187
  128. package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/base-token-storage.ts.html +0 -229
  129. package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/file-token-storage.ts.html +0 -634
  130. package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/hybrid-token-storage.ts.html +0 -373
  131. package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/index.html +0 -191
  132. package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/index.ts.html +0 -124
  133. package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/keychain-token-storage.ts.html +0 -835
  134. package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/types.ts.html +0 -211
  135. package/backend/coverage/lcov-report/packages/gemini-core/src/utils/errors.ts.html +0 -421
  136. package/backend/coverage/lcov-report/packages/gemini-core/src/utils/index.html +0 -191
  137. package/backend/coverage/lcov-report/packages/gemini-core/src/utils/partUtils.ts.html +0 -592
  138. package/backend/coverage/lcov-report/packages/gemini-core/src/utils/quotaErrorDetection.ts.html +0 -388
  139. package/backend/coverage/lcov-report/packages/gemini-core/src/utils/retry.ts.html +0 -877
  140. package/backend/coverage/lcov-report/packages/gemini-core/src/utils/session.ts.html +0 -112
  141. package/backend/coverage/lcov-report/packages/gemini-core/src/utils/userAccountManager.ts.html +0 -502
  142. package/backend/coverage/lcov-report/packages/tokenpatch/index.html +0 -161
  143. package/backend/coverage/lcov-report/packages/tokenpatch/index.ts.html +0 -415
  144. package/backend/coverage/lcov-report/packages/tokenpatch/parser.ts.html +0 -139
  145. package/backend/coverage/lcov-report/packages/tokenpatch/patcher.ts.html +0 -1249
  146. package/backend/coverage/lcov-report/packages/tokenpatch/strategies/index.html +0 -131
  147. package/backend/coverage/lcov-report/packages/tokenpatch/strategies/tiktoken-tokenizer.ts.html +0 -187
  148. package/backend/coverage/lcov-report/packages/tokenpatch/strategies/tree-sitter-tokenizer.ts.html +0 -193
  149. package/backend/coverage/lcov-report/packages/tokenpatch/tokens.ts.html +0 -178
  150. package/backend/coverage/lcov-report/prettify.css +0 -1
  151. package/backend/coverage/lcov-report/prettify.js +0 -2
  152. package/backend/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  153. package/backend/coverage/lcov-report/sorter.js +0 -210
  154. package/backend/coverage/lcov-report/src/ai-actions/ai-action-batch.service.ts.html +0 -1549
  155. package/backend/coverage/lcov-report/src/ai-actions/ai-actions.controller.ts.html +0 -904
  156. package/backend/coverage/lcov-report/src/ai-actions/ai-actions.module.ts.html +0 -175
  157. package/backend/coverage/lcov-report/src/ai-actions/ai-actions.service.ts.html +0 -1534
  158. package/backend/coverage/lcov-report/src/ai-actions/index.html +0 -161
  159. package/backend/coverage/lcov-report/src/app.controller.ts.html +0 -151
  160. package/backend/coverage/lcov-report/src/app.module.ts.html +0 -451
  161. package/backend/coverage/lcov-report/src/app.service.ts.html +0 -163
  162. package/backend/coverage/lcov-report/src/application-state/application-state.controller.ts.html +0 -1609
  163. package/backend/coverage/lcov-report/src/application-state/application-state.module.ts.html +0 -136
  164. package/backend/coverage/lcov-report/src/application-state/application-state.service.ts.html +0 -2281
  165. package/backend/coverage/lcov-report/src/application-state/dto/index.html +0 -416
  166. package/backend/coverage/lcov-report/src/application-state/dto/set-alibaba-config.dto.ts.html +0 -109
  167. package/backend/coverage/lcov-report/src/application-state/dto/set-auto-context-fetch-enabled.dto.ts.html +0 -118
  168. package/backend/coverage/lcov-report/src/application-state/dto/set-auto-send-to-ai-studio-enabled.dto.ts.html +0 -109
  169. package/backend/coverage/lcov-report/src/application-state/dto/set-context-token-limit.dto.ts.html +0 -124
  170. package/backend/coverage/lcov-report/src/application-state/dto/set-execution-strategy.dto.ts.html +0 -121
  171. package/backend/coverage/lcov-report/src/application-state/dto/set-followup-token-limit.dto.ts.html +0 -124
  172. package/backend/coverage/lcov-report/src/application-state/dto/set-history-compression-enabled.dto.ts.html +0 -115
  173. package/backend/coverage/lcov-report/src/application-state/dto/set-llm-retry-enabled.dto.ts.html +0 -115
  174. package/backend/coverage/lcov-report/src/application-state/dto/set-llm-retry-max-attempts.dto.ts.html +0 -127
  175. package/backend/coverage/lcov-report/src/application-state/dto/set-manual-llm-enabled.dto.ts.html +0 -118
  176. package/backend/coverage/lcov-report/src/application-state/dto/set-ollama-config.dto.ts.html +0 -109
  177. package/backend/coverage/lcov-report/src/application-state/dto/set-openai-config.dto.ts.html +0 -139
  178. package/backend/coverage/lcov-report/src/application-state/dto/set-openrouter-config.dto.ts.html +0 -109
  179. package/backend/coverage/lcov-report/src/application-state/dto/set-streaming-enabled.dto.ts.html +0 -109
  180. package/backend/coverage/lcov-report/src/application-state/dto/set-syntax-validation-enabled.dto.ts.html +0 -118
  181. package/backend/coverage/lcov-report/src/application-state/dto/set-theme.dto.ts.html +0 -124
  182. package/backend/coverage/lcov-report/src/application-state/dto/set-tools-enabled.dto.ts.html +0 -118
  183. package/backend/coverage/lcov-report/src/application-state/dto/set-websocket-enabled.dto.ts.html +0 -109
  184. package/backend/coverage/lcov-report/src/application-state/dto/set-yolo-mode-message.dto.ts.html +0 -124
  185. package/backend/coverage/lcov-report/src/application-state/dto/set-yolo-mode.dto.ts.html +0 -118
  186. package/backend/coverage/lcov-report/src/application-state/dto/set-zai-config.dto.ts.html +0 -109
  187. package/backend/coverage/lcov-report/src/application-state/index.html +0 -146
  188. package/backend/coverage/lcov-report/src/common/cache/cache-invalidation.service.ts.html +0 -1297
  189. package/backend/coverage/lcov-report/src/common/cache/cache-invalidation.subscriber.ts.html +0 -712
  190. package/backend/coverage/lcov-report/src/common/cache/etag-cache.service.ts.html +0 -379
  191. package/backend/coverage/lcov-report/src/common/cache/index.html +0 -146
  192. package/backend/coverage/lcov-report/src/common/common.module.ts.html +0 -121
  193. package/backend/coverage/lcov-report/src/common/index.html +0 -116
  194. package/backend/coverage/lcov-report/src/common/interceptors/etag-cache.interceptor.ts.html +0 -337
  195. package/backend/coverage/lcov-report/src/common/interceptors/index.html +0 -116
  196. package/backend/coverage/lcov-report/src/common/middleware/cache.middleware.ts.html +0 -265
  197. package/backend/coverage/lcov-report/src/common/middleware/index.html +0 -116
  198. package/backend/coverage/lcov-report/src/context-generation/context-generation.module.ts.html +0 -118
  199. package/backend/coverage/lcov-report/src/context-generation/context-generation.service.ts.html +0 -1501
  200. package/backend/coverage/lcov-report/src/context-generation/index.html +0 -131
  201. package/backend/coverage/lcov-report/src/context-snippets/context-snippets.controller.ts.html +0 -427
  202. package/backend/coverage/lcov-report/src/context-snippets/context-snippets.module.ts.html +0 -142
  203. package/backend/coverage/lcov-report/src/context-snippets/context-snippets.service.ts.html +0 -442
  204. package/backend/coverage/lcov-report/src/context-snippets/dto/context-snippet.dto.ts.html +0 -211
  205. package/backend/coverage/lcov-report/src/context-snippets/dto/index.html +0 -116
  206. package/backend/coverage/lcov-report/src/context-snippets/index.html +0 -146
  207. package/backend/coverage/lcov-report/src/context-templates/context-templates.controller.ts.html +0 -724
  208. package/backend/coverage/lcov-report/src/context-templates/context-templates.module.ts.html +0 -142
  209. package/backend/coverage/lcov-report/src/context-templates/context-templates.service.ts.html +0 -1015
  210. package/backend/coverage/lcov-report/src/context-templates/dto/context-template.dto.ts.html +0 -511
  211. package/backend/coverage/lcov-report/src/context-templates/dto/index.html +0 -116
  212. package/backend/coverage/lcov-report/src/context-templates/index.html +0 -146
  213. package/backend/coverage/lcov-report/src/core-entities/ai-action.entity.ts.html +0 -613
  214. package/backend/coverage/lcov-report/src/core-entities/application-state.entity.ts.html +0 -124
  215. package/backend/coverage/lcov-report/src/core-entities/base.entity.ts.html +0 -211
  216. package/backend/coverage/lcov-report/src/core-entities/context-snippet.entity.ts.html +0 -190
  217. package/backend/coverage/lcov-report/src/core-entities/context-template.entity.ts.html +0 -439
  218. package/backend/coverage/lcov-report/src/core-entities/custom-snippet.entity.ts.html +0 -205
  219. package/backend/coverage/lcov-report/src/core-entities/custom-variable.entity.ts.html +0 -241
  220. package/backend/coverage/lcov-report/src/core-entities/enums.ts.html +0 -553
  221. package/backend/coverage/lcov-report/src/core-entities/execution-log.entity.ts.html +0 -208
  222. package/backend/coverage/lcov-report/src/core-entities/index.html +0 -371
  223. package/backend/coverage/lcov-report/src/core-entities/index.ts.html +0 -136
  224. package/backend/coverage/lcov-report/src/core-entities/llm-call-log.entity.ts.html +0 -388
  225. package/backend/coverage/lcov-report/src/core-entities/mcp-config.entity.ts.html +0 -256
  226. package/backend/coverage/lcov-report/src/core-entities/mcp-tool.entity.ts.html +0 -256
  227. package/backend/coverage/lcov-report/src/core-entities/project.entity.ts.html +0 -181
  228. package/backend/coverage/lcov-report/src/core-entities/session-input.entity.ts.html +0 -745
  229. package/backend/coverage/lcov-report/src/core-entities/session.entity.ts.html +0 -688
  230. package/backend/coverage/lcov-report/src/core-entities/system-prompt.entity.ts.html +0 -349
  231. package/backend/coverage/lcov-report/src/core-entities/tool-hook.entity.ts.html +0 -235
  232. package/backend/coverage/lcov-report/src/custom-snippets/custom-snippets.controller.ts.html +0 -442
  233. package/backend/coverage/lcov-report/src/custom-snippets/custom-snippets.module.ts.html +0 -124
  234. package/backend/coverage/lcov-report/src/custom-snippets/custom-snippets.service.ts.html +0 -304
  235. package/backend/coverage/lcov-report/src/custom-snippets/dto/custom-snippet.dto.ts.html +0 -205
  236. package/backend/coverage/lcov-report/src/custom-snippets/dto/index.html +0 -116
  237. package/backend/coverage/lcov-report/src/custom-snippets/index.html +0 -146
  238. package/backend/coverage/lcov-report/src/custom-variables/custom-variables.controller.ts.html +0 -463
  239. package/backend/coverage/lcov-report/src/custom-variables/custom-variables.module.ts.html +0 -124
  240. package/backend/coverage/lcov-report/src/custom-variables/custom-variables.service.ts.html +0 -310
  241. package/backend/coverage/lcov-report/src/custom-variables/dto/custom-variable.dto.ts.html +0 -244
  242. package/backend/coverage/lcov-report/src/custom-variables/dto/index.html +0 -116
  243. package/backend/coverage/lcov-report/src/custom-variables/index.html +0 -146
  244. package/backend/coverage/lcov-report/src/events/events.gateway.ts.html +0 -295
  245. package/backend/coverage/lcov-report/src/events/events.module.ts.html +0 -109
  246. package/backend/coverage/lcov-report/src/events/index.html +0 -146
  247. package/backend/coverage/lcov-report/src/events/websocket.events.ts.html +0 -466
  248. package/backend/coverage/lcov-report/src/execution-logs/dto/execution-log.dto.ts.html +0 -130
  249. package/backend/coverage/lcov-report/src/execution-logs/dto/index.html +0 -116
  250. package/backend/coverage/lcov-report/src/execution-logs/execution-logs.controller.ts.html +0 -130
  251. package/backend/coverage/lcov-report/src/execution-logs/execution-logs.module.ts.html +0 -124
  252. package/backend/coverage/lcov-report/src/execution-logs/execution-logs.service.ts.html +0 -238
  253. package/backend/coverage/lcov-report/src/execution-logs/index.html +0 -146
  254. package/backend/coverage/lcov-report/src/gemini/gemini-llm.provider.ts.html +0 -553
  255. package/backend/coverage/lcov-report/src/gemini/gemini.module.ts.html +0 -109
  256. package/backend/coverage/lcov-report/src/gemini/index.html +0 -131
  257. package/backend/coverage/lcov-report/src/global-config/dto/index.html +0 -116
  258. package/backend/coverage/lcov-report/src/global-config/dto/update-global-config.dto.ts.html +0 -367
  259. package/backend/coverage/lcov-report/src/global-config/global-config.controller.ts.html +0 -220
  260. package/backend/coverage/lcov-report/src/global-config/global-config.module.ts.html +0 -115
  261. package/backend/coverage/lcov-report/src/global-config/global-config.service.ts.html +0 -397
  262. package/backend/coverage/lcov-report/src/global-config/index.html +0 -146
  263. package/backend/coverage/lcov-report/src/http-exception.filter.ts.html +0 -340
  264. package/backend/coverage/lcov-report/src/index.html +0 -206
  265. package/backend/coverage/lcov-report/src/interactive-chat/chat.module.ts.html +0 -187
  266. package/backend/coverage/lcov-report/src/interactive-chat/chat.service.ts.html +0 -1825
  267. package/backend/coverage/lcov-report/src/interactive-chat/index.html +0 -146
  268. package/backend/coverage/lcov-report/src/interactive-chat/streaming.controller.ts.html +0 -343
  269. package/backend/coverage/lcov-report/src/llm-call-logs/dto/index.html +0 -116
  270. package/backend/coverage/lcov-report/src/llm-call-logs/dto/llm-call-log.dto.ts.html +0 -214
  271. package/backend/coverage/lcov-report/src/llm-call-logs/index.html +0 -146
  272. package/backend/coverage/lcov-report/src/llm-call-logs/llm-call-logs.controller.ts.html +0 -634
  273. package/backend/coverage/lcov-report/src/llm-call-logs/llm-call-logs.module.ts.html +0 -124
  274. package/backend/coverage/lcov-report/src/llm-call-logs/llm-call-logs.service.ts.html +0 -643
  275. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/apply-diff.handler.ts.html +0 -1090
  276. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/ask-user.handler.ts.html +0 -433
  277. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/create-file.handler.ts.html +0 -757
  278. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/delete-file.handler.ts.html +0 -586
  279. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/discard-messages.handler.ts.html +0 -1153
  280. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/apply-diff.args.dto.ts.html +0 -124
  281. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/ask-user.args.dto.ts.html +0 -103
  282. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/create-file.args.dto.ts.html +0 -124
  283. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/delete-file.args.dto.ts.html +0 -106
  284. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/execute-code.args.dto.ts.html +0 -106
  285. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/final.args.dto.ts.html +0 -118
  286. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/generate-title.args.dto.ts.html +0 -190
  287. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/get-session-history.args.dto.ts.html +0 -196
  288. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/howto.args.dto.ts.html +0 -91
  289. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/index.html +0 -356
  290. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/new-session.args.dto.ts.html +0 -106
  291. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/overwrite-file.args.dto.ts.html +0 -124
  292. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/patch.args.dto.ts.html +0 -124
  293. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/quick-edit.args.dto.ts.html +0 -214
  294. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/request-context.args.dto.ts.html +0 -202
  295. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/run-command.args.dto.ts.html +0 -151
  296. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/sanitizer.decorator.ts.html +0 -181
  297. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/write-todo.args.dto.ts.html +0 -130
  298. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/execute-code.handler.ts.html +0 -631
  299. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/final.handler.ts.html +0 -469
  300. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/generate-title.handler.ts.html +0 -448
  301. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/get-messages.handler.ts.html +0 -1351
  302. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/get-session-history.handler.ts.html +0 -868
  303. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/howto.handler.ts.html +0 -481
  304. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/index.html +0 -416
  305. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/invoke-subagent.handler.ts.html +0 -580
  306. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/list-sub-agents.handler.ts.html +0 -352
  307. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/matchers/context-aware.matcher.ts.html +0 -1054
  308. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/matchers/exact.matcher.ts.html +0 -331
  309. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/matchers/hybrid.matcher.ts.html +0 -403
  310. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/matchers/index.html +0 -176
  311. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/matchers/index.ts.html +0 -100
  312. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/matchers/normalized.matcher.ts.html +0 -724
  313. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/mcp-tool-action.handler.ts.html +0 -358
  314. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/new-session.handler.ts.html +0 -379
  315. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/overwrite-file.handler.ts.html +0 -838
  316. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/patch.handler.ts.html +0 -1702
  317. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/quick-edit.handler.ts.html +0 -1459
  318. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/request-context.handler.ts.html +0 -679
  319. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/run-command.handler.ts.html +0 -964
  320. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/write-todo.handler.ts.html +0 -625
  321. package/backend/coverage/lcov-report/src/llm-orchestration/errors/handler-validation.error.ts.html +0 -103
  322. package/backend/coverage/lcov-report/src/llm-orchestration/errors/index.html +0 -116
  323. package/backend/coverage/lcov-report/src/llm-orchestration/history-compression.service.ts.html +0 -1645
  324. package/backend/coverage/lcov-report/src/llm-orchestration/hooks/follow-up-post-execution.hook.ts.html +0 -238
  325. package/backend/coverage/lcov-report/src/llm-orchestration/hooks/frontend-notification.hook.ts.html +0 -181
  326. package/backend/coverage/lcov-report/src/llm-orchestration/hooks/index.html +0 -161
  327. package/backend/coverage/lcov-report/src/llm-orchestration/hooks/invalid-tool-feedback.hook.ts.html +0 -313
  328. package/backend/coverage/lcov-report/src/llm-orchestration/hooks/yolo-mode-post-execution.hook.ts.html +0 -466
  329. package/backend/coverage/lcov-report/src/llm-orchestration/index.html +0 -176
  330. package/backend/coverage/lcov-report/src/llm-orchestration/llm-orchestration.interfaces.ts.html +0 -319
  331. package/backend/coverage/lcov-report/src/llm-orchestration/llm-orchestration.module.ts.html +0 -706
  332. package/backend/coverage/lcov-report/src/llm-orchestration/llm-turn-processor.service.ts.html +0 -1150
  333. package/backend/coverage/lcov-report/src/llm-orchestration/parser/index.html +0 -131
  334. package/backend/coverage/lcov-report/src/llm-orchestration/parser/llm-output-parser.service.ts.html +0 -658
  335. package/backend/coverage/lcov-report/src/llm-orchestration/parser/parsing.constants.ts.html +0 -127
  336. package/backend/coverage/lcov-report/src/llm-orchestration/tool-schema.service.ts.html +0 -547
  337. package/backend/coverage/lcov-report/src/llm-provider/alibaba-llm.provider.ts.html +0 -1681
  338. package/backend/coverage/lcov-report/src/llm-provider/index.html +0 -236
  339. package/backend/coverage/lcov-report/src/llm-provider/llm-provider.controller.ts.html +0 -187
  340. package/backend/coverage/lcov-report/src/llm-provider/llm-provider.interface.ts.html +0 -361
  341. package/backend/coverage/lcov-report/src/llm-provider/llm-provider.module.ts.html +0 -175
  342. package/backend/coverage/lcov-report/src/llm-provider/ollama-llm.provider.ts.html +0 -1780
  343. package/backend/coverage/lcov-report/src/llm-provider/openai-llm.provider.ts.html +0 -1867
  344. package/backend/coverage/lcov-report/src/llm-provider/openrouter-llm.provider.ts.html +0 -1891
  345. package/backend/coverage/lcov-report/src/llm-provider/proxy-llm.provider.ts.html +0 -304
  346. package/backend/coverage/lcov-report/src/llm-provider/zai-llm.provider.ts.html +0 -1666
  347. package/backend/coverage/lcov-report/src/llm-responses/dto/index.html +0 -131
  348. package/backend/coverage/lcov-report/src/llm-responses/dto/submit-llm-response.dto.ts.html +0 -436
  349. package/backend/coverage/lcov-report/src/llm-responses/dto/sync-conversation.dto.ts.html +0 -319
  350. package/backend/coverage/lcov-report/src/llm-responses/index.html +0 -146
  351. package/backend/coverage/lcov-report/src/llm-responses/llm-responses.controller.ts.html +0 -283
  352. package/backend/coverage/lcov-report/src/llm-responses/llm-responses.module.ts.html +0 -184
  353. package/backend/coverage/lcov-report/src/llm-responses/llm-responses.service.ts.html +0 -1474
  354. package/backend/coverage/lcov-report/src/main.ts.html +0 -463
  355. package/backend/coverage/lcov-report/src/mcp/dto/batch-update-mcp-tools.dto.ts.html +0 -145
  356. package/backend/coverage/lcov-report/src/mcp/dto/create-mcp-config.dto.ts.html +0 -127
  357. package/backend/coverage/lcov-report/src/mcp/dto/index.html +0 -146
  358. package/backend/coverage/lcov-report/src/mcp/dto/update-mcp-config.dto.ts.html +0 -112
  359. package/backend/coverage/lcov-report/src/mcp/index.html +0 -146
  360. package/backend/coverage/lcov-report/src/mcp/mcp.controller.ts.html +0 -340
  361. package/backend/coverage/lcov-report/src/mcp/mcp.module.ts.html +0 -124
  362. package/backend/coverage/lcov-report/src/mcp/mcp.service.ts.html +0 -1345
  363. package/backend/coverage/lcov-report/src/message-bus/dto/index.html +0 -116
  364. package/backend/coverage/lcov-report/src/message-bus/dto/submit-message.dto.ts.html +0 -109
  365. package/backend/coverage/lcov-report/src/message-bus/index.html +0 -146
  366. package/backend/coverage/lcov-report/src/message-bus/message-bus.controller.ts.html +0 -148
  367. package/backend/coverage/lcov-report/src/message-bus/message-bus.module.ts.html +0 -115
  368. package/backend/coverage/lcov-report/src/message-bus/message-bus.service.ts.html +0 -151
  369. package/backend/coverage/lcov-report/src/projects/dto/index.html +0 -116
  370. package/backend/coverage/lcov-report/src/projects/dto/project.dto.ts.html +0 -196
  371. package/backend/coverage/lcov-report/src/projects/index.html +0 -146
  372. package/backend/coverage/lcov-report/src/projects/projects.controller.ts.html +0 -322
  373. package/backend/coverage/lcov-report/src/projects/projects.module.ts.html +0 -124
  374. package/backend/coverage/lcov-report/src/projects/projects.service.ts.html +0 -235
  375. package/backend/coverage/lcov-report/src/seeding/context-snippet-seeding.service.ts.html +0 -280
  376. package/backend/coverage/lcov-report/src/seeding/context-template-seeding.service.ts.html +0 -439
  377. package/backend/coverage/lcov-report/src/seeding/custom-snippet-seeding.service.ts.html +0 -271
  378. package/backend/coverage/lcov-report/src/seeding/custom-variable-seeding.service.ts.html +0 -271
  379. package/backend/coverage/lcov-report/src/seeding/data/context-snippets/compress.ts.html +0 -172
  380. package/backend/coverage/lcov-report/src/seeding/data/context-snippets/index.html +0 -116
  381. package/backend/coverage/lcov-report/src/seeding/data/context-templates/default-followup_ad-hoc-focused-context.ts.html +0 -157
  382. package/backend/coverage/lcov-report/src/seeding/data/context-templates/default-initial_condensed-project-context.ts.html +0 -148
  383. package/backend/coverage/lcov-report/src/seeding/data/context-templates/default-initial_full-project-context.ts.html +0 -151
  384. package/backend/coverage/lcov-report/src/seeding/data/context-templates/index.html +0 -161
  385. package/backend/coverage/lcov-report/src/seeding/data/context-templates/open-pr-command.ts.html +0 -247
  386. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/default_rglob.ts.html +0 -94
  387. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/eta-for.ts.html +0 -100
  388. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/eta-if.ts.html +0 -97
  389. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/eta-ifelse.ts.html +0 -100
  390. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/everest-playwright-auth.ts.html +0 -304
  391. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/git-diff.ts.html +0 -94
  392. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/index.html +0 -341
  393. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/it-mcp.ts.html +0 -100
  394. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/it-tools.ts.html +0 -97
  395. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/rg-exclude.ts.html +0 -94
  396. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/rg-search-glob.ts.html +0 -94
  397. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/rg-search.ts.html +0 -94
  398. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/run-command.ts.html +0 -94
  399. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/tree.ts.html +0 -94
  400. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/usr-adhoc-incl.ts.html +0 -100
  401. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/usr-cmd-output-incl.ts.html +0 -94
  402. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/usr-input-incl.ts.html +0 -94
  403. package/backend/coverage/lcov-report/src/seeding/data/custom-variables/default-auto-execute-code.ts.html +0 -94
  404. package/backend/coverage/lcov-report/src/seeding/data/custom-variables/default-plan-mode.ts.html +0 -97
  405. package/backend/coverage/lcov-report/src/seeding/data/custom-variables/index.html +0 -131
  406. package/backend/coverage/lcov-report/src/seeding/data/mcp-configs/default-configs.ts.html +0 -121
  407. package/backend/coverage/lcov-report/src/seeding/data/mcp-configs/index.html +0 -116
  408. package/backend/coverage/lcov-report/src/seeding/data/sub-agents/browser-use.ts.html +0 -115
  409. package/backend/coverage/lcov-report/src/seeding/data/sub-agents/explore-codebase.ts.html +0 -136
  410. package/backend/coverage/lcov-report/src/seeding/data/sub-agents/index.html +0 -131
  411. package/backend/coverage/lcov-report/src/seeding/data/system-prompts/browser-use-agent.ts.html +0 -190
  412. package/backend/coverage/lcov-report/src/seeding/data/system-prompts/default_native_tool_agent.ts.html +0 -421
  413. package/backend/coverage/lcov-report/src/seeding/data/system-prompts/explore-codebase-agent.ts.html +0 -265
  414. package/backend/coverage/lcov-report/src/seeding/data/system-prompts/index.html +0 -161
  415. package/backend/coverage/lcov-report/src/seeding/data/system-prompts/master-agent.ts.html +0 -388
  416. package/backend/coverage/lcov-report/src/seeding/data/tool-hooks/eslint-hook.ts.html +0 -265
  417. package/backend/coverage/lcov-report/src/seeding/data/tool-hooks/example-hook.ts.html +0 -274
  418. package/backend/coverage/lcov-report/src/seeding/data/tool-hooks/index.html +0 -146
  419. package/backend/coverage/lcov-report/src/seeding/data/tool-hooks/readme.ts.html +0 -250
  420. package/backend/coverage/lcov-report/src/seeding/index.html +0 -236
  421. package/backend/coverage/lcov-report/src/seeding/mcp-config-seeding.service.ts.html +0 -193
  422. package/backend/coverage/lcov-report/src/seeding/seeding.module.ts.html +0 -211
  423. package/backend/coverage/lcov-report/src/seeding/seeding.service.ts.html +0 -187
  424. package/backend/coverage/lcov-report/src/seeding/sub-agent-seeding.service.ts.html +0 -742
  425. package/backend/coverage/lcov-report/src/seeding/system-prompt-seeding.service.ts.html +0 -397
  426. package/backend/coverage/lcov-report/src/session-followup/index.html +0 -131
  427. package/backend/coverage/lcov-report/src/session-followup/session-followup.module.ts.html +0 -130
  428. package/backend/coverage/lcov-report/src/session-followup/session-followup.service.ts.html +0 -718
  429. package/backend/coverage/lcov-report/src/session-inputs/dto/index.html +0 -116
  430. package/backend/coverage/lcov-report/src/session-inputs/dto/session-input.dto.ts.html +0 -577
  431. package/backend/coverage/lcov-report/src/session-inputs/index.html +0 -176
  432. package/backend/coverage/lcov-report/src/session-inputs/session-input-context.service.ts.html +0 -832
  433. package/backend/coverage/lcov-report/src/session-inputs/session-input.subscriber.ts.html +0 -220
  434. package/backend/coverage/lcov-report/src/session-inputs/session-inputs.controller.ts.html +0 -685
  435. package/backend/coverage/lcov-report/src/session-inputs/session-inputs.module.ts.html +0 -229
  436. package/backend/coverage/lcov-report/src/session-inputs/session-inputs.service.ts.html +0 -1981
  437. package/backend/coverage/lcov-report/src/session-transfer/index.html +0 -131
  438. package/backend/coverage/lcov-report/src/session-transfer/session-transfer.module.ts.html +0 -160
  439. package/backend/coverage/lcov-report/src/session-transfer/session-transfer.service.ts.html +0 -883
  440. package/backend/coverage/lcov-report/src/sessions/dto/index.html +0 -116
  441. package/backend/coverage/lcov-report/src/sessions/dto/session.dto.ts.html +0 -769
  442. package/backend/coverage/lcov-report/src/sessions/index.html +0 -146
  443. package/backend/coverage/lcov-report/src/sessions/sessions.controller.ts.html +0 -1306
  444. package/backend/coverage/lcov-report/src/sessions/sessions.module.ts.html +0 -220
  445. package/backend/coverage/lcov-report/src/sessions/sessions.service.ts.html +0 -2797
  446. package/backend/coverage/lcov-report/src/sub-agents/dto/create-sub-agent.dto.ts.html +0 -355
  447. package/backend/coverage/lcov-report/src/sub-agents/dto/index.html +0 -131
  448. package/backend/coverage/lcov-report/src/sub-agents/dto/update-sub-agent.dto.ts.html +0 -295
  449. package/backend/coverage/lcov-report/src/sub-agents/index.html +0 -221
  450. package/backend/coverage/lcov-report/src/sub-agents/sub-agent-run.entity.ts.html +0 -463
  451. package/backend/coverage/lcov-report/src/sub-agents/sub-agent-runner.service.ts.html +0 -2428
  452. package/backend/coverage/lcov-report/src/sub-agents/sub-agent-runs.controller.ts.html +0 -580
  453. package/backend/coverage/lcov-report/src/sub-agents/sub-agent-runs.service.ts.html +0 -550
  454. package/backend/coverage/lcov-report/src/sub-agents/sub-agent.entity.ts.html +0 -475
  455. package/backend/coverage/lcov-report/src/sub-agents/sub-agents.controller.ts.html +0 -373
  456. package/backend/coverage/lcov-report/src/sub-agents/sub-agents.module.ts.html +0 -205
  457. package/backend/coverage/lcov-report/src/sub-agents/sub-agents.service.ts.html +0 -619
  458. package/backend/coverage/lcov-report/src/syntax-validation/index.html +0 -131
  459. package/backend/coverage/lcov-report/src/syntax-validation/syntax-validation.module.ts.html +0 -109
  460. package/backend/coverage/lcov-report/src/syntax-validation/syntax-validation.service.ts.html +0 -724
  461. package/backend/coverage/lcov-report/src/system-prompts/dto/index.html +0 -176
  462. package/backend/coverage/lcov-report/src/system-prompts/dto/set-enabled-mcp-tools.dto.ts.html +0 -157
  463. package/backend/coverage/lcov-report/src/system-prompts/dto/set-enabled-tools.dto.ts.html +0 -148
  464. package/backend/coverage/lcov-report/src/system-prompts/dto/system-prompt.dto.ts.html +0 -517
  465. package/backend/coverage/lcov-report/src/system-prompts/dto/toggle-mcp-tool.dto.ts.html +0 -121
  466. package/backend/coverage/lcov-report/src/system-prompts/dto/toggle-tool.dto.ts.html +0 -118
  467. package/backend/coverage/lcov-report/src/system-prompts/index.html +0 -146
  468. package/backend/coverage/lcov-report/src/system-prompts/system-prompts.controller.ts.html +0 -1060
  469. package/backend/coverage/lcov-report/src/system-prompts/system-prompts.module.ts.html +0 -160
  470. package/backend/coverage/lcov-report/src/system-prompts/system-prompts.service.ts.html +0 -2254
  471. package/backend/coverage/lcov-report/src/timeout.interceptor.ts.html +0 -178
  472. package/backend/coverage/lcov-report/src/tool-hooks/dto/create-tool-hook.dto.ts.html +0 -181
  473. package/backend/coverage/lcov-report/src/tool-hooks/dto/index.html +0 -131
  474. package/backend/coverage/lcov-report/src/tool-hooks/dto/update-tool-hook.dto.ts.html +0 -178
  475. package/backend/coverage/lcov-report/src/tool-hooks/index.html +0 -146
  476. package/backend/coverage/lcov-report/src/tool-hooks/tool-hooks.controller.ts.html +0 -481
  477. package/backend/coverage/lcov-report/src/tool-hooks/tool-hooks.module.ts.html +0 -127
  478. package/backend/coverage/lcov-report/src/tool-hooks/tool-hooks.service.ts.html +0 -1222
  479. package/backend/coverage/lcov-report/src/tracing.ts.html +0 -214
  480. package/backend/coverage/lcov-report/src/types/express-multer.d.ts.html +0 -130
  481. package/backend/coverage/lcov-report/src/types/index.html +0 -116
  482. package/backend/coverage/lcov-report/src/utils/ai-format-generator.ts.html +0 -253
  483. package/backend/coverage/lcov-report/src/utils/fuzzy-search.ts.html +0 -310
  484. package/backend/coverage/lcov-report/src/utils/index.html +0 -191
  485. package/backend/coverage/lcov-report/src/utils/index.ts.html +0 -100
  486. package/backend/coverage/lcov-report/src/utils/short-id.ts.html +0 -109
  487. package/backend/coverage/lcov-report/src/utils/spawn-with-kill.ts.html +0 -412
  488. package/backend/coverage/lcov-report/src/utils/trace.decorator.ts.html +0 -223
  489. package/backend/coverage/lcov-report/src/visual-editor/index.html +0 -146
  490. package/backend/coverage/lcov-report/src/visual-editor/visual-editor.controller.ts.html +0 -409
  491. package/backend/coverage/lcov-report/src/visual-editor/visual-editor.dto.ts.html +0 -130
  492. package/backend/coverage/lcov-report/src/visual-editor/visual-editor.module.ts.html +0 -118
  493. package/backend/coverage/lcov-report/src/workspace/dto/file-tree.dto.ts.html +0 -112
  494. package/backend/coverage/lcov-report/src/workspace/dto/index.html +0 -131
  495. package/backend/coverage/lcov-report/src/workspace/dto/search-workspace.dto.ts.html +0 -193
  496. package/backend/coverage/lcov-report/src/workspace/index.html +0 -146
  497. package/backend/coverage/lcov-report/src/workspace/workspace.controller.ts.html +0 -394
  498. package/backend/coverage/lcov-report/src/workspace/workspace.module.ts.html +0 -121
  499. package/backend/coverage/lcov-report/src/workspace/workspace.service.ts.html +0 -1027
  500. package/backend/coverage/lcov.info +0 -20220
  501. package/backend/packages/tokenpatch/CODEMAP.md +0 -25
  502. package/daemon/CODEMAP.md +0 -23
  503. package/visual-editor-proxy/CODEMAP.md +0 -21
@@ -1,2797 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for src/sessions/sessions.service.ts</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="../../prettify.css" />
9
- <link rel="stylesheet" href="../../base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(../../sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="../../index.html">All files</a> / <a href="index.html">src/sessions</a> sessions.service.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">88.71% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>291/328</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">74.54% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>82/110</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">82.35% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>28/34</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">88.47% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>284/321</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- <template id="filterTemplate">
58
- <div class="quiet">
59
- Filter:
60
- <input type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line high'></div>
65
- <pre><table class="coverage">
66
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
- <a name='L2'></a><a href='#L2'>2</a>
68
- <a name='L3'></a><a href='#L3'>3</a>
69
- <a name='L4'></a><a href='#L4'>4</a>
70
- <a name='L5'></a><a href='#L5'>5</a>
71
- <a name='L6'></a><a href='#L6'>6</a>
72
- <a name='L7'></a><a href='#L7'>7</a>
73
- <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a>
76
- <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a>
82
- <a name='L17'></a><a href='#L17'>17</a>
83
- <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a>
85
- <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a>
87
- <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a>
129
- <a name='L64'></a><a href='#L64'>64</a>
130
- <a name='L65'></a><a href='#L65'>65</a>
131
- <a name='L66'></a><a href='#L66'>66</a>
132
- <a name='L67'></a><a href='#L67'>67</a>
133
- <a name='L68'></a><a href='#L68'>68</a>
134
- <a name='L69'></a><a href='#L69'>69</a>
135
- <a name='L70'></a><a href='#L70'>70</a>
136
- <a name='L71'></a><a href='#L71'>71</a>
137
- <a name='L72'></a><a href='#L72'>72</a>
138
- <a name='L73'></a><a href='#L73'>73</a>
139
- <a name='L74'></a><a href='#L74'>74</a>
140
- <a name='L75'></a><a href='#L75'>75</a>
141
- <a name='L76'></a><a href='#L76'>76</a>
142
- <a name='L77'></a><a href='#L77'>77</a>
143
- <a name='L78'></a><a href='#L78'>78</a>
144
- <a name='L79'></a><a href='#L79'>79</a>
145
- <a name='L80'></a><a href='#L80'>80</a>
146
- <a name='L81'></a><a href='#L81'>81</a>
147
- <a name='L82'></a><a href='#L82'>82</a>
148
- <a name='L83'></a><a href='#L83'>83</a>
149
- <a name='L84'></a><a href='#L84'>84</a>
150
- <a name='L85'></a><a href='#L85'>85</a>
151
- <a name='L86'></a><a href='#L86'>86</a>
152
- <a name='L87'></a><a href='#L87'>87</a>
153
- <a name='L88'></a><a href='#L88'>88</a>
154
- <a name='L89'></a><a href='#L89'>89</a>
155
- <a name='L90'></a><a href='#L90'>90</a>
156
- <a name='L91'></a><a href='#L91'>91</a>
157
- <a name='L92'></a><a href='#L92'>92</a>
158
- <a name='L93'></a><a href='#L93'>93</a>
159
- <a name='L94'></a><a href='#L94'>94</a>
160
- <a name='L95'></a><a href='#L95'>95</a>
161
- <a name='L96'></a><a href='#L96'>96</a>
162
- <a name='L97'></a><a href='#L97'>97</a>
163
- <a name='L98'></a><a href='#L98'>98</a>
164
- <a name='L99'></a><a href='#L99'>99</a>
165
- <a name='L100'></a><a href='#L100'>100</a>
166
- <a name='L101'></a><a href='#L101'>101</a>
167
- <a name='L102'></a><a href='#L102'>102</a>
168
- <a name='L103'></a><a href='#L103'>103</a>
169
- <a name='L104'></a><a href='#L104'>104</a>
170
- <a name='L105'></a><a href='#L105'>105</a>
171
- <a name='L106'></a><a href='#L106'>106</a>
172
- <a name='L107'></a><a href='#L107'>107</a>
173
- <a name='L108'></a><a href='#L108'>108</a>
174
- <a name='L109'></a><a href='#L109'>109</a>
175
- <a name='L110'></a><a href='#L110'>110</a>
176
- <a name='L111'></a><a href='#L111'>111</a>
177
- <a name='L112'></a><a href='#L112'>112</a>
178
- <a name='L113'></a><a href='#L113'>113</a>
179
- <a name='L114'></a><a href='#L114'>114</a>
180
- <a name='L115'></a><a href='#L115'>115</a>
181
- <a name='L116'></a><a href='#L116'>116</a>
182
- <a name='L117'></a><a href='#L117'>117</a>
183
- <a name='L118'></a><a href='#L118'>118</a>
184
- <a name='L119'></a><a href='#L119'>119</a>
185
- <a name='L120'></a><a href='#L120'>120</a>
186
- <a name='L121'></a><a href='#L121'>121</a>
187
- <a name='L122'></a><a href='#L122'>122</a>
188
- <a name='L123'></a><a href='#L123'>123</a>
189
- <a name='L124'></a><a href='#L124'>124</a>
190
- <a name='L125'></a><a href='#L125'>125</a>
191
- <a name='L126'></a><a href='#L126'>126</a>
192
- <a name='L127'></a><a href='#L127'>127</a>
193
- <a name='L128'></a><a href='#L128'>128</a>
194
- <a name='L129'></a><a href='#L129'>129</a>
195
- <a name='L130'></a><a href='#L130'>130</a>
196
- <a name='L131'></a><a href='#L131'>131</a>
197
- <a name='L132'></a><a href='#L132'>132</a>
198
- <a name='L133'></a><a href='#L133'>133</a>
199
- <a name='L134'></a><a href='#L134'>134</a>
200
- <a name='L135'></a><a href='#L135'>135</a>
201
- <a name='L136'></a><a href='#L136'>136</a>
202
- <a name='L137'></a><a href='#L137'>137</a>
203
- <a name='L138'></a><a href='#L138'>138</a>
204
- <a name='L139'></a><a href='#L139'>139</a>
205
- <a name='L140'></a><a href='#L140'>140</a>
206
- <a name='L141'></a><a href='#L141'>141</a>
207
- <a name='L142'></a><a href='#L142'>142</a>
208
- <a name='L143'></a><a href='#L143'>143</a>
209
- <a name='L144'></a><a href='#L144'>144</a>
210
- <a name='L145'></a><a href='#L145'>145</a>
211
- <a name='L146'></a><a href='#L146'>146</a>
212
- <a name='L147'></a><a href='#L147'>147</a>
213
- <a name='L148'></a><a href='#L148'>148</a>
214
- <a name='L149'></a><a href='#L149'>149</a>
215
- <a name='L150'></a><a href='#L150'>150</a>
216
- <a name='L151'></a><a href='#L151'>151</a>
217
- <a name='L152'></a><a href='#L152'>152</a>
218
- <a name='L153'></a><a href='#L153'>153</a>
219
- <a name='L154'></a><a href='#L154'>154</a>
220
- <a name='L155'></a><a href='#L155'>155</a>
221
- <a name='L156'></a><a href='#L156'>156</a>
222
- <a name='L157'></a><a href='#L157'>157</a>
223
- <a name='L158'></a><a href='#L158'>158</a>
224
- <a name='L159'></a><a href='#L159'>159</a>
225
- <a name='L160'></a><a href='#L160'>160</a>
226
- <a name='L161'></a><a href='#L161'>161</a>
227
- <a name='L162'></a><a href='#L162'>162</a>
228
- <a name='L163'></a><a href='#L163'>163</a>
229
- <a name='L164'></a><a href='#L164'>164</a>
230
- <a name='L165'></a><a href='#L165'>165</a>
231
- <a name='L166'></a><a href='#L166'>166</a>
232
- <a name='L167'></a><a href='#L167'>167</a>
233
- <a name='L168'></a><a href='#L168'>168</a>
234
- <a name='L169'></a><a href='#L169'>169</a>
235
- <a name='L170'></a><a href='#L170'>170</a>
236
- <a name='L171'></a><a href='#L171'>171</a>
237
- <a name='L172'></a><a href='#L172'>172</a>
238
- <a name='L173'></a><a href='#L173'>173</a>
239
- <a name='L174'></a><a href='#L174'>174</a>
240
- <a name='L175'></a><a href='#L175'>175</a>
241
- <a name='L176'></a><a href='#L176'>176</a>
242
- <a name='L177'></a><a href='#L177'>177</a>
243
- <a name='L178'></a><a href='#L178'>178</a>
244
- <a name='L179'></a><a href='#L179'>179</a>
245
- <a name='L180'></a><a href='#L180'>180</a>
246
- <a name='L181'></a><a href='#L181'>181</a>
247
- <a name='L182'></a><a href='#L182'>182</a>
248
- <a name='L183'></a><a href='#L183'>183</a>
249
- <a name='L184'></a><a href='#L184'>184</a>
250
- <a name='L185'></a><a href='#L185'>185</a>
251
- <a name='L186'></a><a href='#L186'>186</a>
252
- <a name='L187'></a><a href='#L187'>187</a>
253
- <a name='L188'></a><a href='#L188'>188</a>
254
- <a name='L189'></a><a href='#L189'>189</a>
255
- <a name='L190'></a><a href='#L190'>190</a>
256
- <a name='L191'></a><a href='#L191'>191</a>
257
- <a name='L192'></a><a href='#L192'>192</a>
258
- <a name='L193'></a><a href='#L193'>193</a>
259
- <a name='L194'></a><a href='#L194'>194</a>
260
- <a name='L195'></a><a href='#L195'>195</a>
261
- <a name='L196'></a><a href='#L196'>196</a>
262
- <a name='L197'></a><a href='#L197'>197</a>
263
- <a name='L198'></a><a href='#L198'>198</a>
264
- <a name='L199'></a><a href='#L199'>199</a>
265
- <a name='L200'></a><a href='#L200'>200</a>
266
- <a name='L201'></a><a href='#L201'>201</a>
267
- <a name='L202'></a><a href='#L202'>202</a>
268
- <a name='L203'></a><a href='#L203'>203</a>
269
- <a name='L204'></a><a href='#L204'>204</a>
270
- <a name='L205'></a><a href='#L205'>205</a>
271
- <a name='L206'></a><a href='#L206'>206</a>
272
- <a name='L207'></a><a href='#L207'>207</a>
273
- <a name='L208'></a><a href='#L208'>208</a>
274
- <a name='L209'></a><a href='#L209'>209</a>
275
- <a name='L210'></a><a href='#L210'>210</a>
276
- <a name='L211'></a><a href='#L211'>211</a>
277
- <a name='L212'></a><a href='#L212'>212</a>
278
- <a name='L213'></a><a href='#L213'>213</a>
279
- <a name='L214'></a><a href='#L214'>214</a>
280
- <a name='L215'></a><a href='#L215'>215</a>
281
- <a name='L216'></a><a href='#L216'>216</a>
282
- <a name='L217'></a><a href='#L217'>217</a>
283
- <a name='L218'></a><a href='#L218'>218</a>
284
- <a name='L219'></a><a href='#L219'>219</a>
285
- <a name='L220'></a><a href='#L220'>220</a>
286
- <a name='L221'></a><a href='#L221'>221</a>
287
- <a name='L222'></a><a href='#L222'>222</a>
288
- <a name='L223'></a><a href='#L223'>223</a>
289
- <a name='L224'></a><a href='#L224'>224</a>
290
- <a name='L225'></a><a href='#L225'>225</a>
291
- <a name='L226'></a><a href='#L226'>226</a>
292
- <a name='L227'></a><a href='#L227'>227</a>
293
- <a name='L228'></a><a href='#L228'>228</a>
294
- <a name='L229'></a><a href='#L229'>229</a>
295
- <a name='L230'></a><a href='#L230'>230</a>
296
- <a name='L231'></a><a href='#L231'>231</a>
297
- <a name='L232'></a><a href='#L232'>232</a>
298
- <a name='L233'></a><a href='#L233'>233</a>
299
- <a name='L234'></a><a href='#L234'>234</a>
300
- <a name='L235'></a><a href='#L235'>235</a>
301
- <a name='L236'></a><a href='#L236'>236</a>
302
- <a name='L237'></a><a href='#L237'>237</a>
303
- <a name='L238'></a><a href='#L238'>238</a>
304
- <a name='L239'></a><a href='#L239'>239</a>
305
- <a name='L240'></a><a href='#L240'>240</a>
306
- <a name='L241'></a><a href='#L241'>241</a>
307
- <a name='L242'></a><a href='#L242'>242</a>
308
- <a name='L243'></a><a href='#L243'>243</a>
309
- <a name='L244'></a><a href='#L244'>244</a>
310
- <a name='L245'></a><a href='#L245'>245</a>
311
- <a name='L246'></a><a href='#L246'>246</a>
312
- <a name='L247'></a><a href='#L247'>247</a>
313
- <a name='L248'></a><a href='#L248'>248</a>
314
- <a name='L249'></a><a href='#L249'>249</a>
315
- <a name='L250'></a><a href='#L250'>250</a>
316
- <a name='L251'></a><a href='#L251'>251</a>
317
- <a name='L252'></a><a href='#L252'>252</a>
318
- <a name='L253'></a><a href='#L253'>253</a>
319
- <a name='L254'></a><a href='#L254'>254</a>
320
- <a name='L255'></a><a href='#L255'>255</a>
321
- <a name='L256'></a><a href='#L256'>256</a>
322
- <a name='L257'></a><a href='#L257'>257</a>
323
- <a name='L258'></a><a href='#L258'>258</a>
324
- <a name='L259'></a><a href='#L259'>259</a>
325
- <a name='L260'></a><a href='#L260'>260</a>
326
- <a name='L261'></a><a href='#L261'>261</a>
327
- <a name='L262'></a><a href='#L262'>262</a>
328
- <a name='L263'></a><a href='#L263'>263</a>
329
- <a name='L264'></a><a href='#L264'>264</a>
330
- <a name='L265'></a><a href='#L265'>265</a>
331
- <a name='L266'></a><a href='#L266'>266</a>
332
- <a name='L267'></a><a href='#L267'>267</a>
333
- <a name='L268'></a><a href='#L268'>268</a>
334
- <a name='L269'></a><a href='#L269'>269</a>
335
- <a name='L270'></a><a href='#L270'>270</a>
336
- <a name='L271'></a><a href='#L271'>271</a>
337
- <a name='L272'></a><a href='#L272'>272</a>
338
- <a name='L273'></a><a href='#L273'>273</a>
339
- <a name='L274'></a><a href='#L274'>274</a>
340
- <a name='L275'></a><a href='#L275'>275</a>
341
- <a name='L276'></a><a href='#L276'>276</a>
342
- <a name='L277'></a><a href='#L277'>277</a>
343
- <a name='L278'></a><a href='#L278'>278</a>
344
- <a name='L279'></a><a href='#L279'>279</a>
345
- <a name='L280'></a><a href='#L280'>280</a>
346
- <a name='L281'></a><a href='#L281'>281</a>
347
- <a name='L282'></a><a href='#L282'>282</a>
348
- <a name='L283'></a><a href='#L283'>283</a>
349
- <a name='L284'></a><a href='#L284'>284</a>
350
- <a name='L285'></a><a href='#L285'>285</a>
351
- <a name='L286'></a><a href='#L286'>286</a>
352
- <a name='L287'></a><a href='#L287'>287</a>
353
- <a name='L288'></a><a href='#L288'>288</a>
354
- <a name='L289'></a><a href='#L289'>289</a>
355
- <a name='L290'></a><a href='#L290'>290</a>
356
- <a name='L291'></a><a href='#L291'>291</a>
357
- <a name='L292'></a><a href='#L292'>292</a>
358
- <a name='L293'></a><a href='#L293'>293</a>
359
- <a name='L294'></a><a href='#L294'>294</a>
360
- <a name='L295'></a><a href='#L295'>295</a>
361
- <a name='L296'></a><a href='#L296'>296</a>
362
- <a name='L297'></a><a href='#L297'>297</a>
363
- <a name='L298'></a><a href='#L298'>298</a>
364
- <a name='L299'></a><a href='#L299'>299</a>
365
- <a name='L300'></a><a href='#L300'>300</a>
366
- <a name='L301'></a><a href='#L301'>301</a>
367
- <a name='L302'></a><a href='#L302'>302</a>
368
- <a name='L303'></a><a href='#L303'>303</a>
369
- <a name='L304'></a><a href='#L304'>304</a>
370
- <a name='L305'></a><a href='#L305'>305</a>
371
- <a name='L306'></a><a href='#L306'>306</a>
372
- <a name='L307'></a><a href='#L307'>307</a>
373
- <a name='L308'></a><a href='#L308'>308</a>
374
- <a name='L309'></a><a href='#L309'>309</a>
375
- <a name='L310'></a><a href='#L310'>310</a>
376
- <a name='L311'></a><a href='#L311'>311</a>
377
- <a name='L312'></a><a href='#L312'>312</a>
378
- <a name='L313'></a><a href='#L313'>313</a>
379
- <a name='L314'></a><a href='#L314'>314</a>
380
- <a name='L315'></a><a href='#L315'>315</a>
381
- <a name='L316'></a><a href='#L316'>316</a>
382
- <a name='L317'></a><a href='#L317'>317</a>
383
- <a name='L318'></a><a href='#L318'>318</a>
384
- <a name='L319'></a><a href='#L319'>319</a>
385
- <a name='L320'></a><a href='#L320'>320</a>
386
- <a name='L321'></a><a href='#L321'>321</a>
387
- <a name='L322'></a><a href='#L322'>322</a>
388
- <a name='L323'></a><a href='#L323'>323</a>
389
- <a name='L324'></a><a href='#L324'>324</a>
390
- <a name='L325'></a><a href='#L325'>325</a>
391
- <a name='L326'></a><a href='#L326'>326</a>
392
- <a name='L327'></a><a href='#L327'>327</a>
393
- <a name='L328'></a><a href='#L328'>328</a>
394
- <a name='L329'></a><a href='#L329'>329</a>
395
- <a name='L330'></a><a href='#L330'>330</a>
396
- <a name='L331'></a><a href='#L331'>331</a>
397
- <a name='L332'></a><a href='#L332'>332</a>
398
- <a name='L333'></a><a href='#L333'>333</a>
399
- <a name='L334'></a><a href='#L334'>334</a>
400
- <a name='L335'></a><a href='#L335'>335</a>
401
- <a name='L336'></a><a href='#L336'>336</a>
402
- <a name='L337'></a><a href='#L337'>337</a>
403
- <a name='L338'></a><a href='#L338'>338</a>
404
- <a name='L339'></a><a href='#L339'>339</a>
405
- <a name='L340'></a><a href='#L340'>340</a>
406
- <a name='L341'></a><a href='#L341'>341</a>
407
- <a name='L342'></a><a href='#L342'>342</a>
408
- <a name='L343'></a><a href='#L343'>343</a>
409
- <a name='L344'></a><a href='#L344'>344</a>
410
- <a name='L345'></a><a href='#L345'>345</a>
411
- <a name='L346'></a><a href='#L346'>346</a>
412
- <a name='L347'></a><a href='#L347'>347</a>
413
- <a name='L348'></a><a href='#L348'>348</a>
414
- <a name='L349'></a><a href='#L349'>349</a>
415
- <a name='L350'></a><a href='#L350'>350</a>
416
- <a name='L351'></a><a href='#L351'>351</a>
417
- <a name='L352'></a><a href='#L352'>352</a>
418
- <a name='L353'></a><a href='#L353'>353</a>
419
- <a name='L354'></a><a href='#L354'>354</a>
420
- <a name='L355'></a><a href='#L355'>355</a>
421
- <a name='L356'></a><a href='#L356'>356</a>
422
- <a name='L357'></a><a href='#L357'>357</a>
423
- <a name='L358'></a><a href='#L358'>358</a>
424
- <a name='L359'></a><a href='#L359'>359</a>
425
- <a name='L360'></a><a href='#L360'>360</a>
426
- <a name='L361'></a><a href='#L361'>361</a>
427
- <a name='L362'></a><a href='#L362'>362</a>
428
- <a name='L363'></a><a href='#L363'>363</a>
429
- <a name='L364'></a><a href='#L364'>364</a>
430
- <a name='L365'></a><a href='#L365'>365</a>
431
- <a name='L366'></a><a href='#L366'>366</a>
432
- <a name='L367'></a><a href='#L367'>367</a>
433
- <a name='L368'></a><a href='#L368'>368</a>
434
- <a name='L369'></a><a href='#L369'>369</a>
435
- <a name='L370'></a><a href='#L370'>370</a>
436
- <a name='L371'></a><a href='#L371'>371</a>
437
- <a name='L372'></a><a href='#L372'>372</a>
438
- <a name='L373'></a><a href='#L373'>373</a>
439
- <a name='L374'></a><a href='#L374'>374</a>
440
- <a name='L375'></a><a href='#L375'>375</a>
441
- <a name='L376'></a><a href='#L376'>376</a>
442
- <a name='L377'></a><a href='#L377'>377</a>
443
- <a name='L378'></a><a href='#L378'>378</a>
444
- <a name='L379'></a><a href='#L379'>379</a>
445
- <a name='L380'></a><a href='#L380'>380</a>
446
- <a name='L381'></a><a href='#L381'>381</a>
447
- <a name='L382'></a><a href='#L382'>382</a>
448
- <a name='L383'></a><a href='#L383'>383</a>
449
- <a name='L384'></a><a href='#L384'>384</a>
450
- <a name='L385'></a><a href='#L385'>385</a>
451
- <a name='L386'></a><a href='#L386'>386</a>
452
- <a name='L387'></a><a href='#L387'>387</a>
453
- <a name='L388'></a><a href='#L388'>388</a>
454
- <a name='L389'></a><a href='#L389'>389</a>
455
- <a name='L390'></a><a href='#L390'>390</a>
456
- <a name='L391'></a><a href='#L391'>391</a>
457
- <a name='L392'></a><a href='#L392'>392</a>
458
- <a name='L393'></a><a href='#L393'>393</a>
459
- <a name='L394'></a><a href='#L394'>394</a>
460
- <a name='L395'></a><a href='#L395'>395</a>
461
- <a name='L396'></a><a href='#L396'>396</a>
462
- <a name='L397'></a><a href='#L397'>397</a>
463
- <a name='L398'></a><a href='#L398'>398</a>
464
- <a name='L399'></a><a href='#L399'>399</a>
465
- <a name='L400'></a><a href='#L400'>400</a>
466
- <a name='L401'></a><a href='#L401'>401</a>
467
- <a name='L402'></a><a href='#L402'>402</a>
468
- <a name='L403'></a><a href='#L403'>403</a>
469
- <a name='L404'></a><a href='#L404'>404</a>
470
- <a name='L405'></a><a href='#L405'>405</a>
471
- <a name='L406'></a><a href='#L406'>406</a>
472
- <a name='L407'></a><a href='#L407'>407</a>
473
- <a name='L408'></a><a href='#L408'>408</a>
474
- <a name='L409'></a><a href='#L409'>409</a>
475
- <a name='L410'></a><a href='#L410'>410</a>
476
- <a name='L411'></a><a href='#L411'>411</a>
477
- <a name='L412'></a><a href='#L412'>412</a>
478
- <a name='L413'></a><a href='#L413'>413</a>
479
- <a name='L414'></a><a href='#L414'>414</a>
480
- <a name='L415'></a><a href='#L415'>415</a>
481
- <a name='L416'></a><a href='#L416'>416</a>
482
- <a name='L417'></a><a href='#L417'>417</a>
483
- <a name='L418'></a><a href='#L418'>418</a>
484
- <a name='L419'></a><a href='#L419'>419</a>
485
- <a name='L420'></a><a href='#L420'>420</a>
486
- <a name='L421'></a><a href='#L421'>421</a>
487
- <a name='L422'></a><a href='#L422'>422</a>
488
- <a name='L423'></a><a href='#L423'>423</a>
489
- <a name='L424'></a><a href='#L424'>424</a>
490
- <a name='L425'></a><a href='#L425'>425</a>
491
- <a name='L426'></a><a href='#L426'>426</a>
492
- <a name='L427'></a><a href='#L427'>427</a>
493
- <a name='L428'></a><a href='#L428'>428</a>
494
- <a name='L429'></a><a href='#L429'>429</a>
495
- <a name='L430'></a><a href='#L430'>430</a>
496
- <a name='L431'></a><a href='#L431'>431</a>
497
- <a name='L432'></a><a href='#L432'>432</a>
498
- <a name='L433'></a><a href='#L433'>433</a>
499
- <a name='L434'></a><a href='#L434'>434</a>
500
- <a name='L435'></a><a href='#L435'>435</a>
501
- <a name='L436'></a><a href='#L436'>436</a>
502
- <a name='L437'></a><a href='#L437'>437</a>
503
- <a name='L438'></a><a href='#L438'>438</a>
504
- <a name='L439'></a><a href='#L439'>439</a>
505
- <a name='L440'></a><a href='#L440'>440</a>
506
- <a name='L441'></a><a href='#L441'>441</a>
507
- <a name='L442'></a><a href='#L442'>442</a>
508
- <a name='L443'></a><a href='#L443'>443</a>
509
- <a name='L444'></a><a href='#L444'>444</a>
510
- <a name='L445'></a><a href='#L445'>445</a>
511
- <a name='L446'></a><a href='#L446'>446</a>
512
- <a name='L447'></a><a href='#L447'>447</a>
513
- <a name='L448'></a><a href='#L448'>448</a>
514
- <a name='L449'></a><a href='#L449'>449</a>
515
- <a name='L450'></a><a href='#L450'>450</a>
516
- <a name='L451'></a><a href='#L451'>451</a>
517
- <a name='L452'></a><a href='#L452'>452</a>
518
- <a name='L453'></a><a href='#L453'>453</a>
519
- <a name='L454'></a><a href='#L454'>454</a>
520
- <a name='L455'></a><a href='#L455'>455</a>
521
- <a name='L456'></a><a href='#L456'>456</a>
522
- <a name='L457'></a><a href='#L457'>457</a>
523
- <a name='L458'></a><a href='#L458'>458</a>
524
- <a name='L459'></a><a href='#L459'>459</a>
525
- <a name='L460'></a><a href='#L460'>460</a>
526
- <a name='L461'></a><a href='#L461'>461</a>
527
- <a name='L462'></a><a href='#L462'>462</a>
528
- <a name='L463'></a><a href='#L463'>463</a>
529
- <a name='L464'></a><a href='#L464'>464</a>
530
- <a name='L465'></a><a href='#L465'>465</a>
531
- <a name='L466'></a><a href='#L466'>466</a>
532
- <a name='L467'></a><a href='#L467'>467</a>
533
- <a name='L468'></a><a href='#L468'>468</a>
534
- <a name='L469'></a><a href='#L469'>469</a>
535
- <a name='L470'></a><a href='#L470'>470</a>
536
- <a name='L471'></a><a href='#L471'>471</a>
537
- <a name='L472'></a><a href='#L472'>472</a>
538
- <a name='L473'></a><a href='#L473'>473</a>
539
- <a name='L474'></a><a href='#L474'>474</a>
540
- <a name='L475'></a><a href='#L475'>475</a>
541
- <a name='L476'></a><a href='#L476'>476</a>
542
- <a name='L477'></a><a href='#L477'>477</a>
543
- <a name='L478'></a><a href='#L478'>478</a>
544
- <a name='L479'></a><a href='#L479'>479</a>
545
- <a name='L480'></a><a href='#L480'>480</a>
546
- <a name='L481'></a><a href='#L481'>481</a>
547
- <a name='L482'></a><a href='#L482'>482</a>
548
- <a name='L483'></a><a href='#L483'>483</a>
549
- <a name='L484'></a><a href='#L484'>484</a>
550
- <a name='L485'></a><a href='#L485'>485</a>
551
- <a name='L486'></a><a href='#L486'>486</a>
552
- <a name='L487'></a><a href='#L487'>487</a>
553
- <a name='L488'></a><a href='#L488'>488</a>
554
- <a name='L489'></a><a href='#L489'>489</a>
555
- <a name='L490'></a><a href='#L490'>490</a>
556
- <a name='L491'></a><a href='#L491'>491</a>
557
- <a name='L492'></a><a href='#L492'>492</a>
558
- <a name='L493'></a><a href='#L493'>493</a>
559
- <a name='L494'></a><a href='#L494'>494</a>
560
- <a name='L495'></a><a href='#L495'>495</a>
561
- <a name='L496'></a><a href='#L496'>496</a>
562
- <a name='L497'></a><a href='#L497'>497</a>
563
- <a name='L498'></a><a href='#L498'>498</a>
564
- <a name='L499'></a><a href='#L499'>499</a>
565
- <a name='L500'></a><a href='#L500'>500</a>
566
- <a name='L501'></a><a href='#L501'>501</a>
567
- <a name='L502'></a><a href='#L502'>502</a>
568
- <a name='L503'></a><a href='#L503'>503</a>
569
- <a name='L504'></a><a href='#L504'>504</a>
570
- <a name='L505'></a><a href='#L505'>505</a>
571
- <a name='L506'></a><a href='#L506'>506</a>
572
- <a name='L507'></a><a href='#L507'>507</a>
573
- <a name='L508'></a><a href='#L508'>508</a>
574
- <a name='L509'></a><a href='#L509'>509</a>
575
- <a name='L510'></a><a href='#L510'>510</a>
576
- <a name='L511'></a><a href='#L511'>511</a>
577
- <a name='L512'></a><a href='#L512'>512</a>
578
- <a name='L513'></a><a href='#L513'>513</a>
579
- <a name='L514'></a><a href='#L514'>514</a>
580
- <a name='L515'></a><a href='#L515'>515</a>
581
- <a name='L516'></a><a href='#L516'>516</a>
582
- <a name='L517'></a><a href='#L517'>517</a>
583
- <a name='L518'></a><a href='#L518'>518</a>
584
- <a name='L519'></a><a href='#L519'>519</a>
585
- <a name='L520'></a><a href='#L520'>520</a>
586
- <a name='L521'></a><a href='#L521'>521</a>
587
- <a name='L522'></a><a href='#L522'>522</a>
588
- <a name='L523'></a><a href='#L523'>523</a>
589
- <a name='L524'></a><a href='#L524'>524</a>
590
- <a name='L525'></a><a href='#L525'>525</a>
591
- <a name='L526'></a><a href='#L526'>526</a>
592
- <a name='L527'></a><a href='#L527'>527</a>
593
- <a name='L528'></a><a href='#L528'>528</a>
594
- <a name='L529'></a><a href='#L529'>529</a>
595
- <a name='L530'></a><a href='#L530'>530</a>
596
- <a name='L531'></a><a href='#L531'>531</a>
597
- <a name='L532'></a><a href='#L532'>532</a>
598
- <a name='L533'></a><a href='#L533'>533</a>
599
- <a name='L534'></a><a href='#L534'>534</a>
600
- <a name='L535'></a><a href='#L535'>535</a>
601
- <a name='L536'></a><a href='#L536'>536</a>
602
- <a name='L537'></a><a href='#L537'>537</a>
603
- <a name='L538'></a><a href='#L538'>538</a>
604
- <a name='L539'></a><a href='#L539'>539</a>
605
- <a name='L540'></a><a href='#L540'>540</a>
606
- <a name='L541'></a><a href='#L541'>541</a>
607
- <a name='L542'></a><a href='#L542'>542</a>
608
- <a name='L543'></a><a href='#L543'>543</a>
609
- <a name='L544'></a><a href='#L544'>544</a>
610
- <a name='L545'></a><a href='#L545'>545</a>
611
- <a name='L546'></a><a href='#L546'>546</a>
612
- <a name='L547'></a><a href='#L547'>547</a>
613
- <a name='L548'></a><a href='#L548'>548</a>
614
- <a name='L549'></a><a href='#L549'>549</a>
615
- <a name='L550'></a><a href='#L550'>550</a>
616
- <a name='L551'></a><a href='#L551'>551</a>
617
- <a name='L552'></a><a href='#L552'>552</a>
618
- <a name='L553'></a><a href='#L553'>553</a>
619
- <a name='L554'></a><a href='#L554'>554</a>
620
- <a name='L555'></a><a href='#L555'>555</a>
621
- <a name='L556'></a><a href='#L556'>556</a>
622
- <a name='L557'></a><a href='#L557'>557</a>
623
- <a name='L558'></a><a href='#L558'>558</a>
624
- <a name='L559'></a><a href='#L559'>559</a>
625
- <a name='L560'></a><a href='#L560'>560</a>
626
- <a name='L561'></a><a href='#L561'>561</a>
627
- <a name='L562'></a><a href='#L562'>562</a>
628
- <a name='L563'></a><a href='#L563'>563</a>
629
- <a name='L564'></a><a href='#L564'>564</a>
630
- <a name='L565'></a><a href='#L565'>565</a>
631
- <a name='L566'></a><a href='#L566'>566</a>
632
- <a name='L567'></a><a href='#L567'>567</a>
633
- <a name='L568'></a><a href='#L568'>568</a>
634
- <a name='L569'></a><a href='#L569'>569</a>
635
- <a name='L570'></a><a href='#L570'>570</a>
636
- <a name='L571'></a><a href='#L571'>571</a>
637
- <a name='L572'></a><a href='#L572'>572</a>
638
- <a name='L573'></a><a href='#L573'>573</a>
639
- <a name='L574'></a><a href='#L574'>574</a>
640
- <a name='L575'></a><a href='#L575'>575</a>
641
- <a name='L576'></a><a href='#L576'>576</a>
642
- <a name='L577'></a><a href='#L577'>577</a>
643
- <a name='L578'></a><a href='#L578'>578</a>
644
- <a name='L579'></a><a href='#L579'>579</a>
645
- <a name='L580'></a><a href='#L580'>580</a>
646
- <a name='L581'></a><a href='#L581'>581</a>
647
- <a name='L582'></a><a href='#L582'>582</a>
648
- <a name='L583'></a><a href='#L583'>583</a>
649
- <a name='L584'></a><a href='#L584'>584</a>
650
- <a name='L585'></a><a href='#L585'>585</a>
651
- <a name='L586'></a><a href='#L586'>586</a>
652
- <a name='L587'></a><a href='#L587'>587</a>
653
- <a name='L588'></a><a href='#L588'>588</a>
654
- <a name='L589'></a><a href='#L589'>589</a>
655
- <a name='L590'></a><a href='#L590'>590</a>
656
- <a name='L591'></a><a href='#L591'>591</a>
657
- <a name='L592'></a><a href='#L592'>592</a>
658
- <a name='L593'></a><a href='#L593'>593</a>
659
- <a name='L594'></a><a href='#L594'>594</a>
660
- <a name='L595'></a><a href='#L595'>595</a>
661
- <a name='L596'></a><a href='#L596'>596</a>
662
- <a name='L597'></a><a href='#L597'>597</a>
663
- <a name='L598'></a><a href='#L598'>598</a>
664
- <a name='L599'></a><a href='#L599'>599</a>
665
- <a name='L600'></a><a href='#L600'>600</a>
666
- <a name='L601'></a><a href='#L601'>601</a>
667
- <a name='L602'></a><a href='#L602'>602</a>
668
- <a name='L603'></a><a href='#L603'>603</a>
669
- <a name='L604'></a><a href='#L604'>604</a>
670
- <a name='L605'></a><a href='#L605'>605</a>
671
- <a name='L606'></a><a href='#L606'>606</a>
672
- <a name='L607'></a><a href='#L607'>607</a>
673
- <a name='L608'></a><a href='#L608'>608</a>
674
- <a name='L609'></a><a href='#L609'>609</a>
675
- <a name='L610'></a><a href='#L610'>610</a>
676
- <a name='L611'></a><a href='#L611'>611</a>
677
- <a name='L612'></a><a href='#L612'>612</a>
678
- <a name='L613'></a><a href='#L613'>613</a>
679
- <a name='L614'></a><a href='#L614'>614</a>
680
- <a name='L615'></a><a href='#L615'>615</a>
681
- <a name='L616'></a><a href='#L616'>616</a>
682
- <a name='L617'></a><a href='#L617'>617</a>
683
- <a name='L618'></a><a href='#L618'>618</a>
684
- <a name='L619'></a><a href='#L619'>619</a>
685
- <a name='L620'></a><a href='#L620'>620</a>
686
- <a name='L621'></a><a href='#L621'>621</a>
687
- <a name='L622'></a><a href='#L622'>622</a>
688
- <a name='L623'></a><a href='#L623'>623</a>
689
- <a name='L624'></a><a href='#L624'>624</a>
690
- <a name='L625'></a><a href='#L625'>625</a>
691
- <a name='L626'></a><a href='#L626'>626</a>
692
- <a name='L627'></a><a href='#L627'>627</a>
693
- <a name='L628'></a><a href='#L628'>628</a>
694
- <a name='L629'></a><a href='#L629'>629</a>
695
- <a name='L630'></a><a href='#L630'>630</a>
696
- <a name='L631'></a><a href='#L631'>631</a>
697
- <a name='L632'></a><a href='#L632'>632</a>
698
- <a name='L633'></a><a href='#L633'>633</a>
699
- <a name='L634'></a><a href='#L634'>634</a>
700
- <a name='L635'></a><a href='#L635'>635</a>
701
- <a name='L636'></a><a href='#L636'>636</a>
702
- <a name='L637'></a><a href='#L637'>637</a>
703
- <a name='L638'></a><a href='#L638'>638</a>
704
- <a name='L639'></a><a href='#L639'>639</a>
705
- <a name='L640'></a><a href='#L640'>640</a>
706
- <a name='L641'></a><a href='#L641'>641</a>
707
- <a name='L642'></a><a href='#L642'>642</a>
708
- <a name='L643'></a><a href='#L643'>643</a>
709
- <a name='L644'></a><a href='#L644'>644</a>
710
- <a name='L645'></a><a href='#L645'>645</a>
711
- <a name='L646'></a><a href='#L646'>646</a>
712
- <a name='L647'></a><a href='#L647'>647</a>
713
- <a name='L648'></a><a href='#L648'>648</a>
714
- <a name='L649'></a><a href='#L649'>649</a>
715
- <a name='L650'></a><a href='#L650'>650</a>
716
- <a name='L651'></a><a href='#L651'>651</a>
717
- <a name='L652'></a><a href='#L652'>652</a>
718
- <a name='L653'></a><a href='#L653'>653</a>
719
- <a name='L654'></a><a href='#L654'>654</a>
720
- <a name='L655'></a><a href='#L655'>655</a>
721
- <a name='L656'></a><a href='#L656'>656</a>
722
- <a name='L657'></a><a href='#L657'>657</a>
723
- <a name='L658'></a><a href='#L658'>658</a>
724
- <a name='L659'></a><a href='#L659'>659</a>
725
- <a name='L660'></a><a href='#L660'>660</a>
726
- <a name='L661'></a><a href='#L661'>661</a>
727
- <a name='L662'></a><a href='#L662'>662</a>
728
- <a name='L663'></a><a href='#L663'>663</a>
729
- <a name='L664'></a><a href='#L664'>664</a>
730
- <a name='L665'></a><a href='#L665'>665</a>
731
- <a name='L666'></a><a href='#L666'>666</a>
732
- <a name='L667'></a><a href='#L667'>667</a>
733
- <a name='L668'></a><a href='#L668'>668</a>
734
- <a name='L669'></a><a href='#L669'>669</a>
735
- <a name='L670'></a><a href='#L670'>670</a>
736
- <a name='L671'></a><a href='#L671'>671</a>
737
- <a name='L672'></a><a href='#L672'>672</a>
738
- <a name='L673'></a><a href='#L673'>673</a>
739
- <a name='L674'></a><a href='#L674'>674</a>
740
- <a name='L675'></a><a href='#L675'>675</a>
741
- <a name='L676'></a><a href='#L676'>676</a>
742
- <a name='L677'></a><a href='#L677'>677</a>
743
- <a name='L678'></a><a href='#L678'>678</a>
744
- <a name='L679'></a><a href='#L679'>679</a>
745
- <a name='L680'></a><a href='#L680'>680</a>
746
- <a name='L681'></a><a href='#L681'>681</a>
747
- <a name='L682'></a><a href='#L682'>682</a>
748
- <a name='L683'></a><a href='#L683'>683</a>
749
- <a name='L684'></a><a href='#L684'>684</a>
750
- <a name='L685'></a><a href='#L685'>685</a>
751
- <a name='L686'></a><a href='#L686'>686</a>
752
- <a name='L687'></a><a href='#L687'>687</a>
753
- <a name='L688'></a><a href='#L688'>688</a>
754
- <a name='L689'></a><a href='#L689'>689</a>
755
- <a name='L690'></a><a href='#L690'>690</a>
756
- <a name='L691'></a><a href='#L691'>691</a>
757
- <a name='L692'></a><a href='#L692'>692</a>
758
- <a name='L693'></a><a href='#L693'>693</a>
759
- <a name='L694'></a><a href='#L694'>694</a>
760
- <a name='L695'></a><a href='#L695'>695</a>
761
- <a name='L696'></a><a href='#L696'>696</a>
762
- <a name='L697'></a><a href='#L697'>697</a>
763
- <a name='L698'></a><a href='#L698'>698</a>
764
- <a name='L699'></a><a href='#L699'>699</a>
765
- <a name='L700'></a><a href='#L700'>700</a>
766
- <a name='L701'></a><a href='#L701'>701</a>
767
- <a name='L702'></a><a href='#L702'>702</a>
768
- <a name='L703'></a><a href='#L703'>703</a>
769
- <a name='L704'></a><a href='#L704'>704</a>
770
- <a name='L705'></a><a href='#L705'>705</a>
771
- <a name='L706'></a><a href='#L706'>706</a>
772
- <a name='L707'></a><a href='#L707'>707</a>
773
- <a name='L708'></a><a href='#L708'>708</a>
774
- <a name='L709'></a><a href='#L709'>709</a>
775
- <a name='L710'></a><a href='#L710'>710</a>
776
- <a name='L711'></a><a href='#L711'>711</a>
777
- <a name='L712'></a><a href='#L712'>712</a>
778
- <a name='L713'></a><a href='#L713'>713</a>
779
- <a name='L714'></a><a href='#L714'>714</a>
780
- <a name='L715'></a><a href='#L715'>715</a>
781
- <a name='L716'></a><a href='#L716'>716</a>
782
- <a name='L717'></a><a href='#L717'>717</a>
783
- <a name='L718'></a><a href='#L718'>718</a>
784
- <a name='L719'></a><a href='#L719'>719</a>
785
- <a name='L720'></a><a href='#L720'>720</a>
786
- <a name='L721'></a><a href='#L721'>721</a>
787
- <a name='L722'></a><a href='#L722'>722</a>
788
- <a name='L723'></a><a href='#L723'>723</a>
789
- <a name='L724'></a><a href='#L724'>724</a>
790
- <a name='L725'></a><a href='#L725'>725</a>
791
- <a name='L726'></a><a href='#L726'>726</a>
792
- <a name='L727'></a><a href='#L727'>727</a>
793
- <a name='L728'></a><a href='#L728'>728</a>
794
- <a name='L729'></a><a href='#L729'>729</a>
795
- <a name='L730'></a><a href='#L730'>730</a>
796
- <a name='L731'></a><a href='#L731'>731</a>
797
- <a name='L732'></a><a href='#L732'>732</a>
798
- <a name='L733'></a><a href='#L733'>733</a>
799
- <a name='L734'></a><a href='#L734'>734</a>
800
- <a name='L735'></a><a href='#L735'>735</a>
801
- <a name='L736'></a><a href='#L736'>736</a>
802
- <a name='L737'></a><a href='#L737'>737</a>
803
- <a name='L738'></a><a href='#L738'>738</a>
804
- <a name='L739'></a><a href='#L739'>739</a>
805
- <a name='L740'></a><a href='#L740'>740</a>
806
- <a name='L741'></a><a href='#L741'>741</a>
807
- <a name='L742'></a><a href='#L742'>742</a>
808
- <a name='L743'></a><a href='#L743'>743</a>
809
- <a name='L744'></a><a href='#L744'>744</a>
810
- <a name='L745'></a><a href='#L745'>745</a>
811
- <a name='L746'></a><a href='#L746'>746</a>
812
- <a name='L747'></a><a href='#L747'>747</a>
813
- <a name='L748'></a><a href='#L748'>748</a>
814
- <a name='L749'></a><a href='#L749'>749</a>
815
- <a name='L750'></a><a href='#L750'>750</a>
816
- <a name='L751'></a><a href='#L751'>751</a>
817
- <a name='L752'></a><a href='#L752'>752</a>
818
- <a name='L753'></a><a href='#L753'>753</a>
819
- <a name='L754'></a><a href='#L754'>754</a>
820
- <a name='L755'></a><a href='#L755'>755</a>
821
- <a name='L756'></a><a href='#L756'>756</a>
822
- <a name='L757'></a><a href='#L757'>757</a>
823
- <a name='L758'></a><a href='#L758'>758</a>
824
- <a name='L759'></a><a href='#L759'>759</a>
825
- <a name='L760'></a><a href='#L760'>760</a>
826
- <a name='L761'></a><a href='#L761'>761</a>
827
- <a name='L762'></a><a href='#L762'>762</a>
828
- <a name='L763'></a><a href='#L763'>763</a>
829
- <a name='L764'></a><a href='#L764'>764</a>
830
- <a name='L765'></a><a href='#L765'>765</a>
831
- <a name='L766'></a><a href='#L766'>766</a>
832
- <a name='L767'></a><a href='#L767'>767</a>
833
- <a name='L768'></a><a href='#L768'>768</a>
834
- <a name='L769'></a><a href='#L769'>769</a>
835
- <a name='L770'></a><a href='#L770'>770</a>
836
- <a name='L771'></a><a href='#L771'>771</a>
837
- <a name='L772'></a><a href='#L772'>772</a>
838
- <a name='L773'></a><a href='#L773'>773</a>
839
- <a name='L774'></a><a href='#L774'>774</a>
840
- <a name='L775'></a><a href='#L775'>775</a>
841
- <a name='L776'></a><a href='#L776'>776</a>
842
- <a name='L777'></a><a href='#L777'>777</a>
843
- <a name='L778'></a><a href='#L778'>778</a>
844
- <a name='L779'></a><a href='#L779'>779</a>
845
- <a name='L780'></a><a href='#L780'>780</a>
846
- <a name='L781'></a><a href='#L781'>781</a>
847
- <a name='L782'></a><a href='#L782'>782</a>
848
- <a name='L783'></a><a href='#L783'>783</a>
849
- <a name='L784'></a><a href='#L784'>784</a>
850
- <a name='L785'></a><a href='#L785'>785</a>
851
- <a name='L786'></a><a href='#L786'>786</a>
852
- <a name='L787'></a><a href='#L787'>787</a>
853
- <a name='L788'></a><a href='#L788'>788</a>
854
- <a name='L789'></a><a href='#L789'>789</a>
855
- <a name='L790'></a><a href='#L790'>790</a>
856
- <a name='L791'></a><a href='#L791'>791</a>
857
- <a name='L792'></a><a href='#L792'>792</a>
858
- <a name='L793'></a><a href='#L793'>793</a>
859
- <a name='L794'></a><a href='#L794'>794</a>
860
- <a name='L795'></a><a href='#L795'>795</a>
861
- <a name='L796'></a><a href='#L796'>796</a>
862
- <a name='L797'></a><a href='#L797'>797</a>
863
- <a name='L798'></a><a href='#L798'>798</a>
864
- <a name='L799'></a><a href='#L799'>799</a>
865
- <a name='L800'></a><a href='#L800'>800</a>
866
- <a name='L801'></a><a href='#L801'>801</a>
867
- <a name='L802'></a><a href='#L802'>802</a>
868
- <a name='L803'></a><a href='#L803'>803</a>
869
- <a name='L804'></a><a href='#L804'>804</a>
870
- <a name='L805'></a><a href='#L805'>805</a>
871
- <a name='L806'></a><a href='#L806'>806</a>
872
- <a name='L807'></a><a href='#L807'>807</a>
873
- <a name='L808'></a><a href='#L808'>808</a>
874
- <a name='L809'></a><a href='#L809'>809</a>
875
- <a name='L810'></a><a href='#L810'>810</a>
876
- <a name='L811'></a><a href='#L811'>811</a>
877
- <a name='L812'></a><a href='#L812'>812</a>
878
- <a name='L813'></a><a href='#L813'>813</a>
879
- <a name='L814'></a><a href='#L814'>814</a>
880
- <a name='L815'></a><a href='#L815'>815</a>
881
- <a name='L816'></a><a href='#L816'>816</a>
882
- <a name='L817'></a><a href='#L817'>817</a>
883
- <a name='L818'></a><a href='#L818'>818</a>
884
- <a name='L819'></a><a href='#L819'>819</a>
885
- <a name='L820'></a><a href='#L820'>820</a>
886
- <a name='L821'></a><a href='#L821'>821</a>
887
- <a name='L822'></a><a href='#L822'>822</a>
888
- <a name='L823'></a><a href='#L823'>823</a>
889
- <a name='L824'></a><a href='#L824'>824</a>
890
- <a name='L825'></a><a href='#L825'>825</a>
891
- <a name='L826'></a><a href='#L826'>826</a>
892
- <a name='L827'></a><a href='#L827'>827</a>
893
- <a name='L828'></a><a href='#L828'>828</a>
894
- <a name='L829'></a><a href='#L829'>829</a>
895
- <a name='L830'></a><a href='#L830'>830</a>
896
- <a name='L831'></a><a href='#L831'>831</a>
897
- <a name='L832'></a><a href='#L832'>832</a>
898
- <a name='L833'></a><a href='#L833'>833</a>
899
- <a name='L834'></a><a href='#L834'>834</a>
900
- <a name='L835'></a><a href='#L835'>835</a>
901
- <a name='L836'></a><a href='#L836'>836</a>
902
- <a name='L837'></a><a href='#L837'>837</a>
903
- <a name='L838'></a><a href='#L838'>838</a>
904
- <a name='L839'></a><a href='#L839'>839</a>
905
- <a name='L840'></a><a href='#L840'>840</a>
906
- <a name='L841'></a><a href='#L841'>841</a>
907
- <a name='L842'></a><a href='#L842'>842</a>
908
- <a name='L843'></a><a href='#L843'>843</a>
909
- <a name='L844'></a><a href='#L844'>844</a>
910
- <a name='L845'></a><a href='#L845'>845</a>
911
- <a name='L846'></a><a href='#L846'>846</a>
912
- <a name='L847'></a><a href='#L847'>847</a>
913
- <a name='L848'></a><a href='#L848'>848</a>
914
- <a name='L849'></a><a href='#L849'>849</a>
915
- <a name='L850'></a><a href='#L850'>850</a>
916
- <a name='L851'></a><a href='#L851'>851</a>
917
- <a name='L852'></a><a href='#L852'>852</a>
918
- <a name='L853'></a><a href='#L853'>853</a>
919
- <a name='L854'></a><a href='#L854'>854</a>
920
- <a name='L855'></a><a href='#L855'>855</a>
921
- <a name='L856'></a><a href='#L856'>856</a>
922
- <a name='L857'></a><a href='#L857'>857</a>
923
- <a name='L858'></a><a href='#L858'>858</a>
924
- <a name='L859'></a><a href='#L859'>859</a>
925
- <a name='L860'></a><a href='#L860'>860</a>
926
- <a name='L861'></a><a href='#L861'>861</a>
927
- <a name='L862'></a><a href='#L862'>862</a>
928
- <a name='L863'></a><a href='#L863'>863</a>
929
- <a name='L864'></a><a href='#L864'>864</a>
930
- <a name='L865'></a><a href='#L865'>865</a>
931
- <a name='L866'></a><a href='#L866'>866</a>
932
- <a name='L867'></a><a href='#L867'>867</a>
933
- <a name='L868'></a><a href='#L868'>868</a>
934
- <a name='L869'></a><a href='#L869'>869</a>
935
- <a name='L870'></a><a href='#L870'>870</a>
936
- <a name='L871'></a><a href='#L871'>871</a>
937
- <a name='L872'></a><a href='#L872'>872</a>
938
- <a name='L873'></a><a href='#L873'>873</a>
939
- <a name='L874'></a><a href='#L874'>874</a>
940
- <a name='L875'></a><a href='#L875'>875</a>
941
- <a name='L876'></a><a href='#L876'>876</a>
942
- <a name='L877'></a><a href='#L877'>877</a>
943
- <a name='L878'></a><a href='#L878'>878</a>
944
- <a name='L879'></a><a href='#L879'>879</a>
945
- <a name='L880'></a><a href='#L880'>880</a>
946
- <a name='L881'></a><a href='#L881'>881</a>
947
- <a name='L882'></a><a href='#L882'>882</a>
948
- <a name='L883'></a><a href='#L883'>883</a>
949
- <a name='L884'></a><a href='#L884'>884</a>
950
- <a name='L885'></a><a href='#L885'>885</a>
951
- <a name='L886'></a><a href='#L886'>886</a>
952
- <a name='L887'></a><a href='#L887'>887</a>
953
- <a name='L888'></a><a href='#L888'>888</a>
954
- <a name='L889'></a><a href='#L889'>889</a>
955
- <a name='L890'></a><a href='#L890'>890</a>
956
- <a name='L891'></a><a href='#L891'>891</a>
957
- <a name='L892'></a><a href='#L892'>892</a>
958
- <a name='L893'></a><a href='#L893'>893</a>
959
- <a name='L894'></a><a href='#L894'>894</a>
960
- <a name='L895'></a><a href='#L895'>895</a>
961
- <a name='L896'></a><a href='#L896'>896</a>
962
- <a name='L897'></a><a href='#L897'>897</a>
963
- <a name='L898'></a><a href='#L898'>898</a>
964
- <a name='L899'></a><a href='#L899'>899</a>
965
- <a name='L900'></a><a href='#L900'>900</a>
966
- <a name='L901'></a><a href='#L901'>901</a>
967
- <a name='L902'></a><a href='#L902'>902</a>
968
- <a name='L903'></a><a href='#L903'>903</a>
969
- <a name='L904'></a><a href='#L904'>904</a>
970
- <a name='L905'></a><a href='#L905'>905</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">19x</span>
971
- <span class="cline-any cline-yes">19x</span>
972
- <span class="cline-any cline-yes">19x</span>
973
- <span class="cline-any cline-yes">19x</span>
974
- <span class="cline-any cline-neutral">&nbsp;</span>
975
- <span class="cline-any cline-neutral">&nbsp;</span>
976
- <span class="cline-any cline-neutral">&nbsp;</span>
977
- <span class="cline-any cline-neutral">&nbsp;</span>
978
- <span class="cline-any cline-neutral">&nbsp;</span>
979
- <span class="cline-any cline-neutral">&nbsp;</span>
980
- <span class="cline-any cline-neutral">&nbsp;</span>
981
- <span class="cline-any cline-neutral">&nbsp;</span>
982
- <span class="cline-any cline-yes">19x</span>
983
- <span class="cline-any cline-yes">19x</span>
984
- <span class="cline-any cline-yes">19x</span>
985
- <span class="cline-any cline-neutral">&nbsp;</span>
986
- <span class="cline-any cline-neutral">&nbsp;</span>
987
- <span class="cline-any cline-neutral">&nbsp;</span>
988
- <span class="cline-any cline-neutral">&nbsp;</span>
989
- <span class="cline-any cline-neutral">&nbsp;</span>
990
- <span class="cline-any cline-yes">19x</span>
991
- <span class="cline-any cline-yes">19x</span>
992
- <span class="cline-any cline-yes">19x</span>
993
- <span class="cline-any cline-neutral">&nbsp;</span>
994
- <span class="cline-any cline-neutral">&nbsp;</span>
995
- <span class="cline-any cline-yes">19x</span>
996
- <span class="cline-any cline-yes">51x</span>
997
- <span class="cline-any cline-neutral">&nbsp;</span>
998
- <span class="cline-any cline-neutral">&nbsp;</span>
999
- <span class="cline-any cline-yes">51x</span>
1000
- <span class="cline-any cline-neutral">&nbsp;</span>
1001
- <span class="cline-any cline-yes">51x</span>
1002
- <span class="cline-any cline-neutral">&nbsp;</span>
1003
- <span class="cline-any cline-yes">51x</span>
1004
- <span class="cline-any cline-neutral">&nbsp;</span>
1005
- <span class="cline-any cline-yes">51x</span>
1006
- <span class="cline-any cline-yes">51x</span>
1007
- <span class="cline-any cline-yes">51x</span>
1008
- <span class="cline-any cline-yes">51x</span>
1009
- <span class="cline-any cline-neutral">&nbsp;</span>
1010
- <span class="cline-any cline-neutral">&nbsp;</span>
1011
- <span class="cline-any cline-neutral">&nbsp;</span>
1012
- <span class="cline-any cline-yes">19x</span>
1013
- <span class="cline-any cline-yes">5x</span>
1014
- <span class="cline-any cline-neutral">&nbsp;</span>
1015
- <span class="cline-any cline-yes">5x</span>
1016
- <span class="cline-any cline-neutral">&nbsp;</span>
1017
- <span class="cline-any cline-neutral">&nbsp;</span>
1018
- <span class="cline-any cline-neutral">&nbsp;</span>
1019
- <span class="cline-any cline-neutral">&nbsp;</span>
1020
- <span class="cline-any cline-yes">5x</span>
1021
- <span class="cline-any cline-neutral">&nbsp;</span>
1022
- <span class="cline-any cline-yes">5x</span>
1023
- <span class="cline-any cline-yes">5x</span>
1024
- <span class="cline-any cline-neutral">&nbsp;</span>
1025
- <span class="cline-any cline-yes">5x</span>
1026
- <span class="cline-any cline-yes">5x</span>
1027
- <span class="cline-any cline-yes">5x</span>
1028
- <span class="cline-any cline-neutral">&nbsp;</span>
1029
- <span class="cline-any cline-neutral">&nbsp;</span>
1030
- <span class="cline-any cline-neutral">&nbsp;</span>
1031
- <span class="cline-any cline-neutral">&nbsp;</span>
1032
- <span class="cline-any cline-yes">5x</span>
1033
- <span class="cline-any cline-yes">2x</span>
1034
- <span class="cline-any cline-neutral">&nbsp;</span>
1035
- <span class="cline-any cline-neutral">&nbsp;</span>
1036
- <span class="cline-any cline-yes">2x</span>
1037
- <span class="cline-any cline-yes">1x</span>
1038
- <span class="cline-any cline-neutral">&nbsp;</span>
1039
- <span class="cline-any cline-neutral">&nbsp;</span>
1040
- <span class="cline-any cline-neutral">&nbsp;</span>
1041
- <span class="cline-any cline-yes">1x</span>
1042
- <span class="cline-any cline-neutral">&nbsp;</span>
1043
- <span class="cline-any cline-neutral">&nbsp;</span>
1044
- <span class="cline-any cline-yes">4x</span>
1045
- <span class="cline-any cline-yes">1x</span>
1046
- <span class="cline-any cline-neutral">&nbsp;</span>
1047
- <span class="cline-any cline-neutral">&nbsp;</span>
1048
- <span class="cline-any cline-yes">1x</span>
1049
- <span class="cline-any cline-yes">1x</span>
1050
- <span class="cline-any cline-neutral">&nbsp;</span>
1051
- <span class="cline-any cline-neutral">&nbsp;</span>
1052
- <span class="cline-any cline-neutral">&nbsp;</span>
1053
- <span class="cline-any cline-no">&nbsp;</span>
1054
- <span class="cline-any cline-neutral">&nbsp;</span>
1055
- <span class="cline-any cline-yes">3x</span>
1056
- <span class="cline-any cline-neutral">&nbsp;</span>
1057
- <span class="cline-any cline-neutral">&nbsp;</span>
1058
- <span class="cline-any cline-yes">3x</span>
1059
- <span class="cline-any cline-yes">1x</span>
1060
- <span class="cline-any cline-neutral">&nbsp;</span>
1061
- <span class="cline-any cline-neutral">&nbsp;</span>
1062
- <span class="cline-any cline-neutral">&nbsp;</span>
1063
- <span class="cline-any cline-yes">3x</span>
1064
- <span class="cline-any cline-no">&nbsp;</span>
1065
- <span class="cline-any cline-neutral">&nbsp;</span>
1066
- <span class="cline-any cline-neutral">&nbsp;</span>
1067
- <span class="cline-any cline-no">&nbsp;</span>
1068
- <span class="cline-any cline-no">&nbsp;</span>
1069
- <span class="cline-any cline-neutral">&nbsp;</span>
1070
- <span class="cline-any cline-neutral">&nbsp;</span>
1071
- <span class="cline-any cline-neutral">&nbsp;</span>
1072
- <span class="cline-any cline-no">&nbsp;</span>
1073
- <span class="cline-any cline-neutral">&nbsp;</span>
1074
- <span class="cline-any cline-yes">3x</span>
1075
- <span class="cline-any cline-neutral">&nbsp;</span>
1076
- <span class="cline-any cline-neutral">&nbsp;</span>
1077
- <span class="cline-any cline-yes">3x</span>
1078
- <span class="cline-any cline-yes">1x</span>
1079
- <span class="cline-any cline-neutral">&nbsp;</span>
1080
- <span class="cline-any cline-neutral">&nbsp;</span>
1081
- <span class="cline-any cline-neutral">&nbsp;</span>
1082
- <span class="cline-any cline-yes">3x</span>
1083
- <span class="cline-any cline-no">&nbsp;</span>
1084
- <span class="cline-any cline-neutral">&nbsp;</span>
1085
- <span class="cline-any cline-neutral">&nbsp;</span>
1086
- <span class="cline-any cline-no">&nbsp;</span>
1087
- <span class="cline-any cline-no">&nbsp;</span>
1088
- <span class="cline-any cline-neutral">&nbsp;</span>
1089
- <span class="cline-any cline-neutral">&nbsp;</span>
1090
- <span class="cline-any cline-neutral">&nbsp;</span>
1091
- <span class="cline-any cline-no">&nbsp;</span>
1092
- <span class="cline-any cline-neutral">&nbsp;</span>
1093
- <span class="cline-any cline-yes">3x</span>
1094
- <span class="cline-any cline-neutral">&nbsp;</span>
1095
- <span class="cline-any cline-neutral">&nbsp;</span>
1096
- <span class="cline-any cline-yes">3x</span>
1097
- <span class="cline-any cline-yes">1x</span>
1098
- <span class="cline-any cline-neutral">&nbsp;</span>
1099
- <span class="cline-any cline-neutral">&nbsp;</span>
1100
- <span class="cline-any cline-neutral">&nbsp;</span>
1101
- <span class="cline-any cline-yes">3x</span>
1102
- <span class="cline-any cline-yes">3x</span>
1103
- <span class="cline-any cline-yes">3x</span>
1104
- <span class="cline-any cline-neutral">&nbsp;</span>
1105
- <span class="cline-any cline-neutral">&nbsp;</span>
1106
- <span class="cline-any cline-neutral">&nbsp;</span>
1107
- <span class="cline-any cline-yes">19x</span>
1108
- <span class="cline-any cline-no">&nbsp;</span>
1109
- <span class="cline-any cline-neutral">&nbsp;</span>
1110
- <span class="cline-any cline-neutral">&nbsp;</span>
1111
- <span class="cline-any cline-neutral">&nbsp;</span>
1112
- <span class="cline-any cline-neutral">&nbsp;</span>
1113
- <span class="cline-any cline-neutral">&nbsp;</span>
1114
- <span class="cline-any cline-neutral">&nbsp;</span>
1115
- <span class="cline-any cline-neutral">&nbsp;</span>
1116
- <span class="cline-any cline-neutral">&nbsp;</span>
1117
- <span class="cline-any cline-neutral">&nbsp;</span>
1118
- <span class="cline-any cline-neutral">&nbsp;</span>
1119
- <span class="cline-any cline-neutral">&nbsp;</span>
1120
- <span class="cline-any cline-neutral">&nbsp;</span>
1121
- <span class="cline-any cline-neutral">&nbsp;</span>
1122
- <span class="cline-any cline-neutral">&nbsp;</span>
1123
- <span class="cline-any cline-neutral">&nbsp;</span>
1124
- <span class="cline-any cline-no">&nbsp;</span>
1125
- <span class="cline-any cline-neutral">&nbsp;</span>
1126
- <span class="cline-any cline-neutral">&nbsp;</span>
1127
- <span class="cline-any cline-neutral">&nbsp;</span>
1128
- <span class="cline-any cline-neutral">&nbsp;</span>
1129
- <span class="cline-any cline-neutral">&nbsp;</span>
1130
- <span class="cline-any cline-neutral">&nbsp;</span>
1131
- <span class="cline-any cline-no">&nbsp;</span>
1132
- <span class="cline-any cline-no">&nbsp;</span>
1133
- <span class="cline-any cline-neutral">&nbsp;</span>
1134
- <span class="cline-any cline-neutral">&nbsp;</span>
1135
- <span class="cline-any cline-neutral">&nbsp;</span>
1136
- <span class="cline-any cline-neutral">&nbsp;</span>
1137
- <span class="cline-any cline-no">&nbsp;</span>
1138
- <span class="cline-any cline-neutral">&nbsp;</span>
1139
- <span class="cline-any cline-no">&nbsp;</span>
1140
- <span class="cline-any cline-no">&nbsp;</span>
1141
- <span class="cline-any cline-no">&nbsp;</span>
1142
- <span class="cline-any cline-no">&nbsp;</span>
1143
- <span class="cline-any cline-neutral">&nbsp;</span>
1144
- <span class="cline-any cline-neutral">&nbsp;</span>
1145
- <span class="cline-any cline-neutral">&nbsp;</span>
1146
- <span class="cline-any cline-neutral">&nbsp;</span>
1147
- <span class="cline-any cline-yes">19x</span>
1148
- <span class="cline-any cline-yes">95x</span>
1149
- <span class="cline-any cline-neutral">&nbsp;</span>
1150
- <span class="cline-any cline-neutral">&nbsp;</span>
1151
- <span class="cline-any cline-neutral">&nbsp;</span>
1152
- <span class="cline-any cline-neutral">&nbsp;</span>
1153
- <span class="cline-any cline-neutral">&nbsp;</span>
1154
- <span class="cline-any cline-neutral">&nbsp;</span>
1155
- <span class="cline-any cline-neutral">&nbsp;</span>
1156
- <span class="cline-any cline-neutral">&nbsp;</span>
1157
- <span class="cline-any cline-neutral">&nbsp;</span>
1158
- <span class="cline-any cline-neutral">&nbsp;</span>
1159
- <span class="cline-any cline-neutral">&nbsp;</span>
1160
- <span class="cline-any cline-neutral">&nbsp;</span>
1161
- <span class="cline-any cline-yes">95x</span>
1162
- <span class="cline-any cline-yes">15x</span>
1163
- <span class="cline-any cline-neutral">&nbsp;</span>
1164
- <span class="cline-any cline-neutral">&nbsp;</span>
1165
- <span class="cline-any cline-yes">95x</span>
1166
- <span class="cline-any cline-neutral">&nbsp;</span>
1167
- <span class="cline-any cline-neutral">&nbsp;</span>
1168
- <span class="cline-any cline-neutral">&nbsp;</span>
1169
- <span class="cline-any cline-neutral">&nbsp;</span>
1170
- <span class="cline-any cline-neutral">&nbsp;</span>
1171
- <span class="cline-any cline-neutral">&nbsp;</span>
1172
- <span class="cline-any cline-neutral">&nbsp;</span>
1173
- <span class="cline-any cline-neutral">&nbsp;</span>
1174
- <span class="cline-any cline-neutral">&nbsp;</span>
1175
- <span class="cline-any cline-neutral">&nbsp;</span>
1176
- <span class="cline-any cline-neutral">&nbsp;</span>
1177
- <span class="cline-any cline-yes">95x</span>
1178
- <span class="cline-any cline-yes">7x</span>
1179
- <span class="cline-any cline-neutral">&nbsp;</span>
1180
- <span class="cline-any cline-yes">88x</span>
1181
- <span class="cline-any cline-neutral">&nbsp;</span>
1182
- <span class="cline-any cline-neutral">&nbsp;</span>
1183
- <span class="cline-any cline-neutral">&nbsp;</span>
1184
- <span class="cline-any cline-neutral">&nbsp;</span>
1185
- <span class="cline-any cline-neutral">&nbsp;</span>
1186
- <span class="cline-any cline-neutral">&nbsp;</span>
1187
- <span class="cline-any cline-neutral">&nbsp;</span>
1188
- <span class="cline-any cline-neutral">&nbsp;</span>
1189
- <span class="cline-any cline-yes">19x</span>
1190
- <span class="cline-any cline-yes">5x</span>
1191
- <span class="cline-any cline-neutral">&nbsp;</span>
1192
- <span class="cline-any cline-neutral">&nbsp;</span>
1193
- <span class="cline-any cline-neutral">&nbsp;</span>
1194
- <span class="cline-any cline-neutral">&nbsp;</span>
1195
- <span class="cline-any cline-neutral">&nbsp;</span>
1196
- <span class="cline-any cline-neutral">&nbsp;</span>
1197
- <span class="cline-any cline-neutral">&nbsp;</span>
1198
- <span class="cline-any cline-neutral">&nbsp;</span>
1199
- <span class="cline-any cline-neutral">&nbsp;</span>
1200
- <span class="cline-any cline-neutral">&nbsp;</span>
1201
- <span class="cline-any cline-yes">5x</span>
1202
- <span class="cline-any cline-yes">3x</span>
1203
- <span class="cline-any cline-neutral">&nbsp;</span>
1204
- <span class="cline-any cline-yes">2x</span>
1205
- <span class="cline-any cline-neutral">&nbsp;</span>
1206
- <span class="cline-any cline-neutral">&nbsp;</span>
1207
- <span class="cline-any cline-neutral">&nbsp;</span>
1208
- <span class="cline-any cline-yes">19x</span>
1209
- <span class="cline-any cline-neutral">&nbsp;</span>
1210
- <span class="cline-any cline-yes">3x</span>
1211
- <span class="cline-any cline-yes">3x</span>
1212
- <span class="cline-any cline-yes">1x</span>
1213
- <span class="cline-any cline-neutral">&nbsp;</span>
1214
- <span class="cline-any cline-yes">2x</span>
1215
- <span class="cline-any cline-neutral">&nbsp;</span>
1216
- <span class="cline-any cline-neutral">&nbsp;</span>
1217
- <span class="cline-any cline-yes">2x</span>
1218
- <span class="cline-any cline-neutral">&nbsp;</span>
1219
- <span class="cline-any cline-yes">1x</span>
1220
- <span class="cline-any cline-neutral">&nbsp;</span>
1221
- <span class="cline-any cline-yes">1x</span>
1222
- <span class="cline-any cline-neutral">&nbsp;</span>
1223
- <span class="cline-any cline-no">&nbsp;</span>
1224
- <span class="cline-any cline-neutral">&nbsp;</span>
1225
- <span class="cline-any cline-neutral">&nbsp;</span>
1226
- <span class="cline-any cline-neutral">&nbsp;</span>
1227
- <span class="cline-any cline-neutral">&nbsp;</span>
1228
- <span class="cline-any cline-yes">19x</span>
1229
- <span class="cline-any cline-no">&nbsp;</span>
1230
- <span class="cline-any cline-neutral">&nbsp;</span>
1231
- <span class="cline-any cline-neutral">&nbsp;</span>
1232
- <span class="cline-any cline-neutral">&nbsp;</span>
1233
- <span class="cline-any cline-neutral">&nbsp;</span>
1234
- <span class="cline-any cline-neutral">&nbsp;</span>
1235
- <span class="cline-any cline-yes">19x</span>
1236
- <span class="cline-any cline-neutral">&nbsp;</span>
1237
- <span class="cline-any cline-yes">3x</span>
1238
- <span class="cline-any cline-yes">3x</span>
1239
- <span class="cline-any cline-yes">1x</span>
1240
- <span class="cline-any cline-neutral">&nbsp;</span>
1241
- <span class="cline-any cline-yes">2x</span>
1242
- <span class="cline-any cline-neutral">&nbsp;</span>
1243
- <span class="cline-any cline-neutral">&nbsp;</span>
1244
- <span class="cline-any cline-neutral">&nbsp;</span>
1245
- <span class="cline-any cline-yes">19x</span>
1246
- <span class="cline-any cline-neutral">&nbsp;</span>
1247
- <span class="cline-any cline-neutral">&nbsp;</span>
1248
- <span class="cline-any cline-neutral">&nbsp;</span>
1249
- <span class="cline-any cline-yes">4x</span>
1250
- <span class="cline-any cline-yes">4x</span>
1251
- <span class="cline-any cline-yes">1x</span>
1252
- <span class="cline-any cline-neutral">&nbsp;</span>
1253
- <span class="cline-any cline-neutral">&nbsp;</span>
1254
- <span class="cline-any cline-yes">3x</span>
1255
- <span class="cline-any cline-no">&nbsp;</span>
1256
- <span class="cline-any cline-neutral">&nbsp;</span>
1257
- <span class="cline-any cline-neutral">&nbsp;</span>
1258
- <span class="cline-any cline-yes">3x</span>
1259
- <span class="cline-any cline-no">&nbsp;</span>
1260
- <span class="cline-any cline-neutral">&nbsp;</span>
1261
- <span class="cline-any cline-neutral">&nbsp;</span>
1262
- <span class="cline-any cline-yes">3x</span>
1263
- <span class="cline-any cline-yes">1x</span>
1264
- <span class="cline-any cline-neutral">&nbsp;</span>
1265
- <span class="cline-any cline-yes">3x</span>
1266
- <span class="cline-any cline-yes">2x</span>
1267
- <span class="cline-any cline-yes">2x</span>
1268
- <span class="cline-any cline-neutral">&nbsp;</span>
1269
- <span class="cline-any cline-neutral">&nbsp;</span>
1270
- <span class="cline-any cline-neutral">&nbsp;</span>
1271
- <span class="cline-any cline-neutral">&nbsp;</span>
1272
- <span class="cline-any cline-neutral">&nbsp;</span>
1273
- <span class="cline-any cline-neutral">&nbsp;</span>
1274
- <span class="cline-any cline-yes">1x</span>
1275
- <span class="cline-any cline-neutral">&nbsp;</span>
1276
- <span class="cline-any cline-neutral">&nbsp;</span>
1277
- <span class="cline-any cline-neutral">&nbsp;</span>
1278
- <span class="cline-any cline-yes">3x</span>
1279
- <span class="cline-any cline-no">&nbsp;</span>
1280
- <span class="cline-any cline-neutral">&nbsp;</span>
1281
- <span class="cline-any cline-neutral">&nbsp;</span>
1282
- <span class="cline-any cline-yes">3x</span>
1283
- <span class="cline-any cline-no">&nbsp;</span>
1284
- <span class="cline-any cline-neutral">&nbsp;</span>
1285
- <span class="cline-any cline-neutral">&nbsp;</span>
1286
- <span class="cline-any cline-neutral">&nbsp;</span>
1287
- <span class="cline-any cline-yes">3x</span>
1288
- <span class="cline-any cline-no">&nbsp;</span>
1289
- <span class="cline-any cline-neutral">&nbsp;</span>
1290
- <span class="cline-any cline-neutral">&nbsp;</span>
1291
- <span class="cline-any cline-neutral">&nbsp;</span>
1292
- <span class="cline-any cline-yes">3x</span>
1293
- <span class="cline-any cline-no">&nbsp;</span>
1294
- <span class="cline-any cline-neutral">&nbsp;</span>
1295
- <span class="cline-any cline-neutral">&nbsp;</span>
1296
- <span class="cline-any cline-yes">3x</span>
1297
- <span class="cline-any cline-no">&nbsp;</span>
1298
- <span class="cline-any cline-neutral">&nbsp;</span>
1299
- <span class="cline-any cline-neutral">&nbsp;</span>
1300
- <span class="cline-any cline-yes">3x</span>
1301
- <span class="cline-any cline-no">&nbsp;</span>
1302
- <span class="cline-any cline-neutral">&nbsp;</span>
1303
- <span class="cline-any cline-neutral">&nbsp;</span>
1304
- <span class="cline-any cline-yes">3x</span>
1305
- <span class="cline-any cline-yes">3x</span>
1306
- <span class="cline-any cline-neutral">&nbsp;</span>
1307
- <span class="cline-any cline-neutral">&nbsp;</span>
1308
- <span class="cline-any cline-neutral">&nbsp;</span>
1309
- <span class="cline-any cline-yes">19x</span>
1310
- <span class="cline-any cline-yes">5x</span>
1311
- <span class="cline-any cline-neutral">&nbsp;</span>
1312
- <span class="cline-any cline-neutral">&nbsp;</span>
1313
- <span class="cline-any cline-yes">4x</span>
1314
- <span class="cline-any cline-neutral">&nbsp;</span>
1315
- <span class="cline-any cline-neutral">&nbsp;</span>
1316
- <span class="cline-any cline-neutral">&nbsp;</span>
1317
- <span class="cline-any cline-yes">4x</span>
1318
- <span class="cline-any cline-yes">3x</span>
1319
- <span class="cline-any cline-neutral">&nbsp;</span>
1320
- <span class="cline-any cline-neutral">&nbsp;</span>
1321
- <span class="cline-any cline-yes">3x</span>
1322
- <span class="cline-any cline-yes">3x</span>
1323
- <span class="cline-any cline-neutral">&nbsp;</span>
1324
- <span class="cline-any cline-neutral">&nbsp;</span>
1325
- <span class="cline-any cline-neutral">&nbsp;</span>
1326
- <span class="cline-any cline-neutral">&nbsp;</span>
1327
- <span class="cline-any cline-yes">4x</span>
1328
- <span class="cline-any cline-neutral">&nbsp;</span>
1329
- <span class="cline-any cline-neutral">&nbsp;</span>
1330
- <span class="cline-any cline-neutral">&nbsp;</span>
1331
- <span class="cline-any cline-neutral">&nbsp;</span>
1332
- <span class="cline-any cline-neutral">&nbsp;</span>
1333
- <span class="cline-any cline-neutral">&nbsp;</span>
1334
- <span class="cline-any cline-neutral">&nbsp;</span>
1335
- <span class="cline-any cline-neutral">&nbsp;</span>
1336
- <span class="cline-any cline-neutral">&nbsp;</span>
1337
- <span class="cline-any cline-neutral">&nbsp;</span>
1338
- <span class="cline-any cline-yes">7x</span>
1339
- <span class="cline-any cline-neutral">&nbsp;</span>
1340
- <span class="cline-any cline-neutral">&nbsp;</span>
1341
- <span class="cline-any cline-neutral">&nbsp;</span>
1342
- <span class="cline-any cline-neutral">&nbsp;</span>
1343
- <span class="cline-any cline-yes">7x</span>
1344
- <span class="cline-any cline-neutral">&nbsp;</span>
1345
- <span class="cline-any cline-yes">7x</span>
1346
- <span class="cline-any cline-yes">3x</span>
1347
- <span class="cline-any cline-neutral">&nbsp;</span>
1348
- <span class="cline-any cline-yes">3x</span>
1349
- <span class="cline-any cline-yes">3x</span>
1350
- <span class="cline-any cline-neutral">&nbsp;</span>
1351
- <span class="cline-any cline-neutral">&nbsp;</span>
1352
- <span class="cline-any cline-yes">7x</span>
1353
- <span class="cline-any cline-neutral">&nbsp;</span>
1354
- <span class="cline-any cline-neutral">&nbsp;</span>
1355
- <span class="cline-any cline-neutral">&nbsp;</span>
1356
- <span class="cline-any cline-yes">19x</span>
1357
- <span class="cline-any cline-no">&nbsp;</span>
1358
- <span class="cline-any cline-neutral">&nbsp;</span>
1359
- <span class="cline-any cline-neutral">&nbsp;</span>
1360
- <span class="cline-any cline-neutral">&nbsp;</span>
1361
- <span class="cline-any cline-neutral">&nbsp;</span>
1362
- <span class="cline-any cline-neutral">&nbsp;</span>
1363
- <span class="cline-any cline-neutral">&nbsp;</span>
1364
- <span class="cline-any cline-neutral">&nbsp;</span>
1365
- <span class="cline-any cline-yes">19x</span>
1366
- <span class="cline-any cline-neutral">&nbsp;</span>
1367
- <span class="cline-any cline-neutral">&nbsp;</span>
1368
- <span class="cline-any cline-neutral">&nbsp;</span>
1369
- <span class="cline-any cline-neutral">&nbsp;</span>
1370
- <span class="cline-any cline-neutral">&nbsp;</span>
1371
- <span class="cline-any cline-neutral">&nbsp;</span>
1372
- <span class="cline-any cline-yes">9x</span>
1373
- <span class="cline-any cline-yes">8x</span>
1374
- <span class="cline-any cline-neutral">&nbsp;</span>
1375
- <span class="cline-any cline-neutral">&nbsp;</span>
1376
- <span class="cline-any cline-yes">8x</span>
1377
- <span class="cline-any cline-neutral">&nbsp;</span>
1378
- <span class="cline-any cline-neutral">&nbsp;</span>
1379
- <span class="cline-any cline-neutral">&nbsp;</span>
1380
- <span class="cline-any cline-neutral">&nbsp;</span>
1381
- <span class="cline-any cline-neutral">&nbsp;</span>
1382
- <span class="cline-any cline-neutral">&nbsp;</span>
1383
- <span class="cline-any cline-neutral">&nbsp;</span>
1384
- <span class="cline-any cline-yes">8x</span>
1385
- <span class="cline-any cline-neutral">&nbsp;</span>
1386
- <span class="cline-any cline-yes">8x</span>
1387
- <span class="cline-any cline-yes">8x</span>
1388
- <span class="cline-any cline-yes">14x</span>
1389
- <span class="cline-any cline-yes">12x</span>
1390
- <span class="cline-any cline-yes">12x</span>
1391
- <span class="cline-any cline-yes">12x</span>
1392
- <span class="cline-any cline-neutral">&nbsp;</span>
1393
- <span class="cline-any cline-neutral">&nbsp;</span>
1394
- <span class="cline-any cline-neutral">&nbsp;</span>
1395
- <span class="cline-any cline-neutral">&nbsp;</span>
1396
- <span class="cline-any cline-neutral">&nbsp;</span>
1397
- <span class="cline-any cline-neutral">&nbsp;</span>
1398
- <span class="cline-any cline-neutral">&nbsp;</span>
1399
- <span class="cline-any cline-neutral">&nbsp;</span>
1400
- <span class="cline-any cline-yes">8x</span>
1401
- <span class="cline-any cline-neutral">&nbsp;</span>
1402
- <span class="cline-any cline-yes">8x</span>
1403
- <span class="cline-any cline-neutral">&nbsp;</span>
1404
- <span class="cline-any cline-yes">12x</span>
1405
- <span class="cline-any cline-neutral">&nbsp;</span>
1406
- <span class="cline-any cline-no">&nbsp;</span>
1407
- <span class="cline-any cline-neutral">&nbsp;</span>
1408
- <span class="cline-any cline-neutral">&nbsp;</span>
1409
- <span class="cline-any cline-neutral">&nbsp;</span>
1410
- <span class="cline-any cline-yes">12x</span>
1411
- <span class="cline-any cline-yes">12x</span>
1412
- <span class="cline-any cline-neutral">&nbsp;</span>
1413
- <span class="cline-any cline-neutral">&nbsp;</span>
1414
- <span class="cline-any cline-yes">12x</span>
1415
- <span class="cline-any cline-yes">12x</span>
1416
- <span class="cline-any cline-yes">12x</span>
1417
- <span class="cline-any cline-yes">12x</span>
1418
- <span class="cline-any cline-yes">12x</span>
1419
- <span class="cline-any cline-neutral">&nbsp;</span>
1420
- <span class="cline-any cline-neutral">&nbsp;</span>
1421
- <span class="cline-any cline-neutral">&nbsp;</span>
1422
- <span class="cline-any cline-yes">12x</span>
1423
- <span class="cline-any cline-neutral">&nbsp;</span>
1424
- <span class="cline-any cline-neutral">&nbsp;</span>
1425
- <span class="cline-any cline-yes">12x</span>
1426
- <span class="cline-any cline-neutral">&nbsp;</span>
1427
- <span class="cline-any cline-neutral">&nbsp;</span>
1428
- <span class="cline-any cline-neutral">&nbsp;</span>
1429
- <span class="cline-any cline-neutral">&nbsp;</span>
1430
- <span class="cline-any cline-neutral">&nbsp;</span>
1431
- <span class="cline-any cline-neutral">&nbsp;</span>
1432
- <span class="cline-any cline-neutral">&nbsp;</span>
1433
- <span class="cline-any cline-yes">8x</span>
1434
- <span class="cline-any cline-neutral">&nbsp;</span>
1435
- <span class="cline-any cline-neutral">&nbsp;</span>
1436
- <span class="cline-any cline-neutral">&nbsp;</span>
1437
- <span class="cline-any cline-yes">19x</span>
1438
- <span class="cline-any cline-neutral">&nbsp;</span>
1439
- <span class="cline-any cline-yes">7x</span>
1440
- <span class="cline-any cline-neutral">&nbsp;</span>
1441
- <span class="cline-any cline-yes">6x</span>
1442
- <span class="cline-any cline-yes">6x</span>
1443
- <span class="cline-any cline-yes">6x</span>
1444
- <span class="cline-any cline-neutral">&nbsp;</span>
1445
- <span class="cline-any cline-yes">6x</span>
1446
- <span class="cline-any cline-neutral">&nbsp;</span>
1447
- <span class="cline-any cline-yes">6x</span>
1448
- <span class="cline-any cline-neutral">&nbsp;</span>
1449
- <span class="cline-any cline-neutral">&nbsp;</span>
1450
- <span class="cline-any cline-neutral">&nbsp;</span>
1451
- <span class="cline-any cline-neutral">&nbsp;</span>
1452
- <span class="cline-any cline-neutral">&nbsp;</span>
1453
- <span class="cline-any cline-neutral">&nbsp;</span>
1454
- <span class="cline-any cline-neutral">&nbsp;</span>
1455
- <span class="cline-any cline-neutral">&nbsp;</span>
1456
- <span class="cline-any cline-neutral">&nbsp;</span>
1457
- <span class="cline-any cline-neutral">&nbsp;</span>
1458
- <span class="cline-any cline-neutral">&nbsp;</span>
1459
- <span class="cline-any cline-neutral">&nbsp;</span>
1460
- <span class="cline-any cline-neutral">&nbsp;</span>
1461
- <span class="cline-any cline-neutral">&nbsp;</span>
1462
- <span class="cline-any cline-neutral">&nbsp;</span>
1463
- <span class="cline-any cline-neutral">&nbsp;</span>
1464
- <span class="cline-any cline-yes">6x</span>
1465
- <span class="cline-any cline-neutral">&nbsp;</span>
1466
- <span class="cline-any cline-neutral">&nbsp;</span>
1467
- <span class="cline-any cline-yes">6x</span>
1468
- <span class="cline-any cline-yes">6x</span>
1469
- <span class="cline-any cline-yes">7x</span>
1470
- <span class="cline-any cline-neutral">&nbsp;</span>
1471
- <span class="cline-any cline-neutral">&nbsp;</span>
1472
- <span class="cline-any cline-neutral">&nbsp;</span>
1473
- <span class="cline-any cline-neutral">&nbsp;</span>
1474
- <span class="cline-any cline-neutral">&nbsp;</span>
1475
- <span class="cline-any cline-neutral">&nbsp;</span>
1476
- <span class="cline-any cline-neutral">&nbsp;</span>
1477
- <span class="cline-any cline-neutral">&nbsp;</span>
1478
- <span class="cline-any cline-neutral">&nbsp;</span>
1479
- <span class="cline-any cline-neutral">&nbsp;</span>
1480
- <span class="cline-any cline-neutral">&nbsp;</span>
1481
- <span class="cline-any cline-neutral">&nbsp;</span>
1482
- <span class="cline-any cline-neutral">&nbsp;</span>
1483
- <span class="cline-any cline-neutral">&nbsp;</span>
1484
- <span class="cline-any cline-neutral">&nbsp;</span>
1485
- <span class="cline-any cline-neutral">&nbsp;</span>
1486
- <span class="cline-any cline-neutral">&nbsp;</span>
1487
- <span class="cline-any cline-neutral">&nbsp;</span>
1488
- <span class="cline-any cline-neutral">&nbsp;</span>
1489
- <span class="cline-any cline-neutral">&nbsp;</span>
1490
- <span class="cline-any cline-neutral">&nbsp;</span>
1491
- <span class="cline-any cline-neutral">&nbsp;</span>
1492
- <span class="cline-any cline-yes">7x</span>
1493
- <span class="cline-any cline-neutral">&nbsp;</span>
1494
- <span class="cline-any cline-neutral">&nbsp;</span>
1495
- <span class="cline-any cline-yes">7x</span>
1496
- <span class="cline-any cline-yes">7x</span>
1497
- <span class="cline-any cline-yes">4x</span>
1498
- <span class="cline-any cline-neutral">&nbsp;</span>
1499
- <span class="cline-any cline-neutral">&nbsp;</span>
1500
- <span class="cline-any cline-neutral">&nbsp;</span>
1501
- <span class="cline-any cline-neutral">&nbsp;</span>
1502
- <span class="cline-any cline-neutral">&nbsp;</span>
1503
- <span class="cline-any cline-neutral">&nbsp;</span>
1504
- <span class="cline-any cline-neutral">&nbsp;</span>
1505
- <span class="cline-any cline-neutral">&nbsp;</span>
1506
- <span class="cline-any cline-neutral">&nbsp;</span>
1507
- <span class="cline-any cline-neutral">&nbsp;</span>
1508
- <span class="cline-any cline-neutral">&nbsp;</span>
1509
- <span class="cline-any cline-neutral">&nbsp;</span>
1510
- <span class="cline-any cline-neutral">&nbsp;</span>
1511
- <span class="cline-any cline-neutral">&nbsp;</span>
1512
- <span class="cline-any cline-neutral">&nbsp;</span>
1513
- <span class="cline-any cline-neutral">&nbsp;</span>
1514
- <span class="cline-any cline-neutral">&nbsp;</span>
1515
- <span class="cline-any cline-neutral">&nbsp;</span>
1516
- <span class="cline-any cline-neutral">&nbsp;</span>
1517
- <span class="cline-any cline-yes">4x</span>
1518
- <span class="cline-any cline-neutral">&nbsp;</span>
1519
- <span class="cline-any cline-neutral">&nbsp;</span>
1520
- <span class="cline-any cline-yes">4x</span>
1521
- <span class="cline-any cline-yes">4x</span>
1522
- <span class="cline-any cline-yes">2x</span>
1523
- <span class="cline-any cline-neutral">&nbsp;</span>
1524
- <span class="cline-any cline-neutral">&nbsp;</span>
1525
- <span class="cline-any cline-neutral">&nbsp;</span>
1526
- <span class="cline-any cline-neutral">&nbsp;</span>
1527
- <span class="cline-any cline-yes">2x</span>
1528
- <span class="cline-any cline-neutral">&nbsp;</span>
1529
- <span class="cline-any cline-neutral">&nbsp;</span>
1530
- <span class="cline-any cline-neutral">&nbsp;</span>
1531
- <span class="cline-any cline-neutral">&nbsp;</span>
1532
- <span class="cline-any cline-neutral">&nbsp;</span>
1533
- <span class="cline-any cline-neutral">&nbsp;</span>
1534
- <span class="cline-any cline-neutral">&nbsp;</span>
1535
- <span class="cline-any cline-yes">6x</span>
1536
- <span class="cline-any cline-neutral">&nbsp;</span>
1537
- <span class="cline-any cline-neutral">&nbsp;</span>
1538
- <span class="cline-any cline-yes">6x</span>
1539
- <span class="cline-any cline-neutral">&nbsp;</span>
1540
- <span class="cline-any cline-no">&nbsp;</span>
1541
- <span class="cline-any cline-no">&nbsp;</span>
1542
- <span class="cline-any cline-neutral">&nbsp;</span>
1543
- <span class="cline-any cline-yes">6x</span>
1544
- <span class="cline-any cline-neutral">&nbsp;</span>
1545
- <span class="cline-any cline-neutral">&nbsp;</span>
1546
- <span class="cline-any cline-neutral">&nbsp;</span>
1547
- <span class="cline-any cline-neutral">&nbsp;</span>
1548
- <span class="cline-any cline-neutral">&nbsp;</span>
1549
- <span class="cline-any cline-neutral">&nbsp;</span>
1550
- <span class="cline-any cline-neutral">&nbsp;</span>
1551
- <span class="cline-any cline-neutral">&nbsp;</span>
1552
- <span class="cline-any cline-yes">19x</span>
1553
- <span class="cline-any cline-yes">15x</span>
1554
- <span class="cline-any cline-yes">14x</span>
1555
- <span class="cline-any cline-neutral">&nbsp;</span>
1556
- <span class="cline-any cline-neutral">&nbsp;</span>
1557
- <span class="cline-any cline-yes">14x</span>
1558
- <span class="cline-any cline-neutral">&nbsp;</span>
1559
- <span class="cline-any cline-neutral">&nbsp;</span>
1560
- <span class="cline-any cline-neutral">&nbsp;</span>
1561
- <span class="cline-any cline-neutral">&nbsp;</span>
1562
- <span class="cline-any cline-neutral">&nbsp;</span>
1563
- <span class="cline-any cline-neutral">&nbsp;</span>
1564
- <span class="cline-any cline-neutral">&nbsp;</span>
1565
- <span class="cline-any cline-yes">14x</span>
1566
- <span class="cline-any cline-neutral">&nbsp;</span>
1567
- <span class="cline-any cline-yes">14x</span>
1568
- <span class="cline-any cline-yes">14x</span>
1569
- <span class="cline-any cline-yes">23x</span>
1570
- <span class="cline-any cline-neutral">&nbsp;</span>
1571
- <span class="cline-any cline-neutral">&nbsp;</span>
1572
- <span class="cline-any cline-neutral">&nbsp;</span>
1573
- <span class="cline-any cline-yes">16x</span>
1574
- <span class="cline-any cline-neutral">&nbsp;</span>
1575
- <span class="cline-any cline-neutral">&nbsp;</span>
1576
- <span class="cline-any cline-neutral">&nbsp;</span>
1577
- <span class="cline-any cline-neutral">&nbsp;</span>
1578
- <span class="cline-any cline-yes">14x</span>
1579
- <span class="cline-any cline-yes">2x</span>
1580
- <span class="cline-any cline-neutral">&nbsp;</span>
1581
- <span class="cline-any cline-neutral">&nbsp;</span>
1582
- <span class="cline-any cline-neutral">&nbsp;</span>
1583
- <span class="cline-any cline-neutral">&nbsp;</span>
1584
- <span class="cline-any cline-neutral">&nbsp;</span>
1585
- <span class="cline-any cline-yes">12x</span>
1586
- <span class="cline-any cline-neutral">&nbsp;</span>
1587
- <span class="cline-any cline-yes">4x</span>
1588
- <span class="cline-any cline-neutral">&nbsp;</span>
1589
- <span class="cline-any cline-neutral">&nbsp;</span>
1590
- <span class="cline-any cline-yes">12x</span>
1591
- <span class="cline-any cline-yes">12x</span>
1592
- <span class="cline-any cline-neutral">&nbsp;</span>
1593
- <span class="cline-any cline-yes">12x</span>
1594
- <span class="cline-any cline-yes">12x</span>
1595
- <span class="cline-any cline-yes">1x</span>
1596
- <span class="cline-any cline-neutral">&nbsp;</span>
1597
- <span class="cline-any cline-neutral">&nbsp;</span>
1598
- <span class="cline-any cline-yes">11x</span>
1599
- <span class="cline-any cline-yes">11x</span>
1600
- <span class="cline-any cline-neutral">&nbsp;</span>
1601
- <span class="cline-any cline-yes">6x</span>
1602
- <span class="cline-any cline-yes">3x</span>
1603
- <span class="cline-any cline-neutral">&nbsp;</span>
1604
- <span class="cline-any cline-neutral">&nbsp;</span>
1605
- <span class="cline-any cline-yes">5x</span>
1606
- <span class="cline-any cline-yes">5x</span>
1607
- <span class="cline-any cline-yes">5x</span>
1608
- <span class="cline-any cline-neutral">&nbsp;</span>
1609
- <span class="cline-any cline-neutral">&nbsp;</span>
1610
- <span class="cline-any cline-neutral">&nbsp;</span>
1611
- <span class="cline-any cline-yes">8x</span>
1612
- <span class="cline-any cline-yes">12x</span>
1613
- <span class="cline-any cline-yes">12x</span>
1614
- <span class="cline-any cline-neutral">&nbsp;</span>
1615
- <span class="cline-any cline-neutral">&nbsp;</span>
1616
- <span class="cline-any cline-yes">3x</span>
1617
- <span class="cline-any cline-yes">3x</span>
1618
- <span class="cline-any cline-neutral">&nbsp;</span>
1619
- <span class="cline-any cline-neutral">&nbsp;</span>
1620
- <span class="cline-any cline-neutral">&nbsp;</span>
1621
- <span class="cline-any cline-neutral">&nbsp;</span>
1622
- <span class="cline-any cline-neutral">&nbsp;</span>
1623
- <span class="cline-any cline-neutral">&nbsp;</span>
1624
- <span class="cline-any cline-neutral">&nbsp;</span>
1625
- <span class="cline-any cline-neutral">&nbsp;</span>
1626
- <span class="cline-any cline-yes">19x</span>
1627
- <span class="cline-any cline-neutral">&nbsp;</span>
1628
- <span class="cline-any cline-neutral">&nbsp;</span>
1629
- <span class="cline-any cline-neutral">&nbsp;</span>
1630
- <span class="cline-any cline-neutral">&nbsp;</span>
1631
- <span class="cline-any cline-neutral">&nbsp;</span>
1632
- <span class="cline-any cline-neutral">&nbsp;</span>
1633
- <span class="cline-any cline-neutral">&nbsp;</span>
1634
- <span class="cline-any cline-neutral">&nbsp;</span>
1635
- <span class="cline-any cline-neutral">&nbsp;</span>
1636
- <span class="cline-any cline-yes">21x</span>
1637
- <span class="cline-any cline-neutral">&nbsp;</span>
1638
- <span class="cline-any cline-neutral">&nbsp;</span>
1639
- <span class="cline-any cline-yes">30x</span>
1640
- <span class="cline-any cline-yes">20x</span>
1641
- <span class="cline-any cline-yes">28x</span>
1642
- <span class="cline-any cline-yes">2x</span>
1643
- <span class="cline-any cline-neutral">&nbsp;</span>
1644
- <span class="cline-any cline-neutral">&nbsp;</span>
1645
- <span class="cline-any cline-neutral">&nbsp;</span>
1646
- <span class="cline-any cline-neutral">&nbsp;</span>
1647
- <span class="cline-any cline-neutral">&nbsp;</span>
1648
- <span class="cline-any cline-neutral">&nbsp;</span>
1649
- <span class="cline-any cline-yes">18x</span>
1650
- <span class="cline-any cline-yes">28x</span>
1651
- <span class="cline-any cline-neutral">&nbsp;</span>
1652
- <span class="cline-any cline-neutral">&nbsp;</span>
1653
- <span class="cline-any cline-neutral">&nbsp;</span>
1654
- <span class="cline-any cline-yes">18x</span>
1655
- <span class="cline-any cline-neutral">&nbsp;</span>
1656
- <span class="cline-any cline-neutral">&nbsp;</span>
1657
- <span class="cline-any cline-neutral">&nbsp;</span>
1658
- <span class="cline-any cline-neutral">&nbsp;</span>
1659
- <span class="cline-any cline-neutral">&nbsp;</span>
1660
- <span class="cline-any cline-neutral">&nbsp;</span>
1661
- <span class="cline-any cline-neutral">&nbsp;</span>
1662
- <span class="cline-any cline-yes">18x</span>
1663
- <span class="cline-any cline-neutral">&nbsp;</span>
1664
- <span class="cline-any cline-yes">18x</span>
1665
- <span class="cline-any cline-yes">24x</span>
1666
- <span class="cline-any cline-yes">35x</span>
1667
- <span class="cline-any cline-yes">31x</span>
1668
- <span class="cline-any cline-yes">31x</span>
1669
- <span class="cline-any cline-yes">31x</span>
1670
- <span class="cline-any cline-neutral">&nbsp;</span>
1671
- <span class="cline-any cline-neutral">&nbsp;</span>
1672
- <span class="cline-any cline-neutral">&nbsp;</span>
1673
- <span class="cline-any cline-neutral">&nbsp;</span>
1674
- <span class="cline-any cline-neutral">&nbsp;</span>
1675
- <span class="cline-any cline-neutral">&nbsp;</span>
1676
- <span class="cline-any cline-neutral">&nbsp;</span>
1677
- <span class="cline-any cline-neutral">&nbsp;</span>
1678
- <span class="cline-any cline-yes">18x</span>
1679
- <span class="cline-any cline-neutral">&nbsp;</span>
1680
- <span class="cline-any cline-yes">18x</span>
1681
- <span class="cline-any cline-neutral">&nbsp;</span>
1682
- <span class="cline-any cline-yes">27x</span>
1683
- <span class="cline-any cline-neutral">&nbsp;</span>
1684
- <span class="cline-any cline-yes">4x</span>
1685
- <span class="cline-any cline-neutral">&nbsp;</span>
1686
- <span class="cline-any cline-neutral">&nbsp;</span>
1687
- <span class="cline-any cline-neutral">&nbsp;</span>
1688
- <span class="cline-any cline-yes">27x</span>
1689
- <span class="cline-any cline-yes">27x</span>
1690
- <span class="cline-any cline-neutral">&nbsp;</span>
1691
- <span class="cline-any cline-neutral">&nbsp;</span>
1692
- <span class="cline-any cline-neutral">&nbsp;</span>
1693
- <span class="cline-any cline-neutral">&nbsp;</span>
1694
- <span class="cline-any cline-yes">27x</span>
1695
- <span class="cline-any cline-yes">27x</span>
1696
- <span class="cline-any cline-neutral">&nbsp;</span>
1697
- <span class="cline-any cline-yes">27x</span>
1698
- <span class="cline-any cline-neutral">&nbsp;</span>
1699
- <span class="cline-any cline-neutral">&nbsp;</span>
1700
- <span class="cline-any cline-neutral">&nbsp;</span>
1701
- <span class="cline-any cline-neutral">&nbsp;</span>
1702
- <span class="cline-any cline-neutral">&nbsp;</span>
1703
- <span class="cline-any cline-neutral">&nbsp;</span>
1704
- <span class="cline-any cline-neutral">&nbsp;</span>
1705
- <span class="cline-any cline-yes">18x</span>
1706
- <span class="cline-any cline-neutral">&nbsp;</span>
1707
- <span class="cline-any cline-neutral">&nbsp;</span>
1708
- <span class="cline-any cline-neutral">&nbsp;</span>
1709
- <span class="cline-any cline-neutral">&nbsp;</span>
1710
- <span class="cline-any cline-neutral">&nbsp;</span>
1711
- <span class="cline-any cline-neutral">&nbsp;</span>
1712
- <span class="cline-any cline-neutral">&nbsp;</span>
1713
- <span class="cline-any cline-yes">19x</span>
1714
- <span class="cline-any cline-neutral">&nbsp;</span>
1715
- <span class="cline-any cline-neutral">&nbsp;</span>
1716
- <span class="cline-any cline-neutral">&nbsp;</span>
1717
- <span class="cline-any cline-yes">17x</span>
1718
- <span class="cline-any cline-yes">16x</span>
1719
- <span class="cline-any cline-neutral">&nbsp;</span>
1720
- <span class="cline-any cline-neutral">&nbsp;</span>
1721
- <span class="cline-any cline-yes">19x</span>
1722
- <span class="cline-any cline-yes">16x</span>
1723
- <span class="cline-any cline-yes">18x</span>
1724
- <span class="cline-any cline-yes">2x</span>
1725
- <span class="cline-any cline-neutral">&nbsp;</span>
1726
- <span class="cline-any cline-neutral">&nbsp;</span>
1727
- <span class="cline-any cline-neutral">&nbsp;</span>
1728
- <span class="cline-any cline-neutral">&nbsp;</span>
1729
- <span class="cline-any cline-neutral">&nbsp;</span>
1730
- <span class="cline-any cline-neutral">&nbsp;</span>
1731
- <span class="cline-any cline-yes">14x</span>
1732
- <span class="cline-any cline-yes">17x</span>
1733
- <span class="cline-any cline-neutral">&nbsp;</span>
1734
- <span class="cline-any cline-neutral">&nbsp;</span>
1735
- <span class="cline-any cline-neutral">&nbsp;</span>
1736
- <span class="cline-any cline-yes">14x</span>
1737
- <span class="cline-any cline-neutral">&nbsp;</span>
1738
- <span class="cline-any cline-neutral">&nbsp;</span>
1739
- <span class="cline-any cline-neutral">&nbsp;</span>
1740
- <span class="cline-any cline-neutral">&nbsp;</span>
1741
- <span class="cline-any cline-neutral">&nbsp;</span>
1742
- <span class="cline-any cline-neutral">&nbsp;</span>
1743
- <span class="cline-any cline-neutral">&nbsp;</span>
1744
- <span class="cline-any cline-yes">14x</span>
1745
- <span class="cline-any cline-neutral">&nbsp;</span>
1746
- <span class="cline-any cline-yes">14x</span>
1747
- <span class="cline-any cline-yes">14x</span>
1748
- <span class="cline-any cline-yes">17x</span>
1749
- <span class="cline-any cline-yes">15x</span>
1750
- <span class="cline-any cline-yes">15x</span>
1751
- <span class="cline-any cline-yes">15x</span>
1752
- <span class="cline-any cline-neutral">&nbsp;</span>
1753
- <span class="cline-any cline-neutral">&nbsp;</span>
1754
- <span class="cline-any cline-neutral">&nbsp;</span>
1755
- <span class="cline-any cline-neutral">&nbsp;</span>
1756
- <span class="cline-any cline-yes">14x</span>
1757
- <span class="cline-any cline-neutral">&nbsp;</span>
1758
- <span class="cline-any cline-neutral">&nbsp;</span>
1759
- <span class="cline-any cline-neutral">&nbsp;</span>
1760
- <span class="cline-any cline-neutral">&nbsp;</span>
1761
- <span class="cline-any cline-neutral">&nbsp;</span>
1762
- <span class="cline-any cline-neutral">&nbsp;</span>
1763
- <span class="cline-any cline-yes">14x</span>
1764
- <span class="cline-any cline-yes">14x</span>
1765
- <span class="cline-any cline-yes">14x</span>
1766
- <span class="cline-any cline-yes">17x</span>
1767
- <span class="cline-any cline-neutral">&nbsp;</span>
1768
- <span class="cline-any cline-neutral">&nbsp;</span>
1769
- <span class="cline-any cline-yes">14x</span>
1770
- <span class="cline-any cline-yes">14x</span>
1771
- <span class="cline-any cline-yes">3x</span>
1772
- <span class="cline-any cline-yes">3x</span>
1773
- <span class="cline-any cline-yes">3x</span>
1774
- <span class="cline-any cline-neutral">&nbsp;</span>
1775
- <span class="cline-any cline-neutral">&nbsp;</span>
1776
- <span class="cline-any cline-neutral">&nbsp;</span>
1777
- <span class="cline-any cline-neutral">&nbsp;</span>
1778
- <span class="cline-any cline-neutral">&nbsp;</span>
1779
- <span class="cline-any cline-yes">14x</span>
1780
- <span class="cline-any cline-yes">13x</span>
1781
- <span class="cline-any cline-yes">13x</span>
1782
- <span class="cline-any cline-neutral">&nbsp;</span>
1783
- <span class="cline-any cline-yes">2x</span>
1784
- <span class="cline-any cline-neutral">&nbsp;</span>
1785
- <span class="cline-any cline-neutral">&nbsp;</span>
1786
- <span class="cline-any cline-yes">13x</span>
1787
- <span class="cline-any cline-yes">13x</span>
1788
- <span class="cline-any cline-neutral">&nbsp;</span>
1789
- <span class="cline-any cline-yes">13x</span>
1790
- <span class="cline-any cline-yes">13x</span>
1791
- <span class="cline-any cline-yes">1x</span>
1792
- <span class="cline-any cline-yes">1x</span>
1793
- <span class="cline-any cline-yes">1x</span>
1794
- <span class="cline-any cline-neutral">&nbsp;</span>
1795
- <span class="cline-any cline-neutral">&nbsp;</span>
1796
- <span class="cline-any cline-yes">12x</span>
1797
- <span class="cline-any cline-neutral">&nbsp;</span>
1798
- <span class="cline-any cline-yes">6x</span>
1799
- <span class="cline-any cline-yes">4x</span>
1800
- <span class="cline-any cline-neutral">&nbsp;</span>
1801
- <span class="cline-any cline-neutral">&nbsp;</span>
1802
- <span class="cline-any cline-neutral">&nbsp;</span>
1803
- <span class="cline-any cline-neutral">&nbsp;</span>
1804
- <span class="cline-any cline-yes">6x</span>
1805
- <span class="cline-any cline-yes">6x</span>
1806
- <span class="cline-any cline-yes">6x</span>
1807
- <span class="cline-any cline-neutral">&nbsp;</span>
1808
- <span class="cline-any cline-neutral">&nbsp;</span>
1809
- <span class="cline-any cline-neutral">&nbsp;</span>
1810
- <span class="cline-any cline-neutral">&nbsp;</span>
1811
- <span class="cline-any cline-neutral">&nbsp;</span>
1812
- <span class="cline-any cline-yes">10x</span>
1813
- <span class="cline-any cline-yes">12x</span>
1814
- <span class="cline-any cline-yes">12x</span>
1815
- <span class="cline-any cline-neutral">&nbsp;</span>
1816
- <span class="cline-any cline-neutral">&nbsp;</span>
1817
- <span class="cline-any cline-yes">10x</span>
1818
- <span class="cline-any cline-neutral">&nbsp;</span>
1819
- <span class="cline-any cline-yes">2x</span>
1820
- <span class="cline-any cline-yes">2x</span>
1821
- <span class="cline-any cline-neutral">&nbsp;</span>
1822
- <span class="cline-any cline-neutral">&nbsp;</span>
1823
- <span class="cline-any cline-neutral">&nbsp;</span>
1824
- <span class="cline-any cline-yes">14x</span>
1825
- <span class="cline-any cline-neutral">&nbsp;</span>
1826
- <span class="cline-any cline-neutral">&nbsp;</span>
1827
- <span class="cline-any cline-neutral">&nbsp;</span>
1828
- <span class="cline-any cline-neutral">&nbsp;</span>
1829
- <span class="cline-any cline-neutral">&nbsp;</span>
1830
- <span class="cline-any cline-neutral">&nbsp;</span>
1831
- <span class="cline-any cline-neutral">&nbsp;</span>
1832
- <span class="cline-any cline-yes">19x</span>
1833
- <span class="cline-any cline-yes">9x</span>
1834
- <span class="cline-any cline-neutral">&nbsp;</span>
1835
- <span class="cline-any cline-yes">8x</span>
1836
- <span class="cline-any cline-neutral">&nbsp;</span>
1837
- <span class="cline-any cline-neutral">&nbsp;</span>
1838
- <span class="cline-any cline-neutral">&nbsp;</span>
1839
- <span class="cline-any cline-neutral">&nbsp;</span>
1840
- <span class="cline-any cline-neutral">&nbsp;</span>
1841
- <span class="cline-any cline-neutral">&nbsp;</span>
1842
- <span class="cline-any cline-yes">8x</span>
1843
- <span class="cline-any cline-yes">12x</span>
1844
- <span class="cline-any cline-neutral">&nbsp;</span>
1845
- <span class="cline-any cline-yes">8x</span>
1846
- <span class="cline-any cline-yes">12x</span>
1847
- <span class="cline-any cline-neutral">&nbsp;</span>
1848
- <span class="cline-any cline-neutral">&nbsp;</span>
1849
- <span class="cline-any cline-neutral">&nbsp;</span>
1850
- <span class="cline-any cline-yes">8x</span>
1851
- <span class="cline-any cline-no">&nbsp;</span>
1852
- <span class="cline-any cline-no">&nbsp;</span>
1853
- <span class="cline-any cline-no">&nbsp;</span>
1854
- <span class="cline-any cline-neutral">&nbsp;</span>
1855
- <span class="cline-any cline-no">&nbsp;</span>
1856
- <span class="cline-any cline-no">&nbsp;</span>
1857
- <span class="cline-any cline-neutral">&nbsp;</span>
1858
- <span class="cline-any cline-neutral">&nbsp;</span>
1859
- <span class="cline-any cline-neutral">&nbsp;</span>
1860
- <span class="cline-any cline-neutral">&nbsp;</span>
1861
- <span class="cline-any cline-yes">8x</span>
1862
- <span class="cline-any cline-yes">12x</span>
1863
- <span class="cline-any cline-yes">12x</span>
1864
- <span class="cline-any cline-yes">7x</span>
1865
- <span class="cline-any cline-neutral">&nbsp;</span>
1866
- <span class="cline-any cline-yes">5x</span>
1867
- <span class="cline-any cline-yes">5x</span>
1868
- <span class="cline-any cline-neutral">&nbsp;</span>
1869
- <span class="cline-any cline-neutral">&nbsp;</span>
1870
- <span class="cline-any cline-neutral">&nbsp;</span>
1871
- <span class="cline-any cline-yes">8x</span>
1872
- <span class="cline-any cline-neutral">&nbsp;</span>
1873
- <span class="cline-any cline-neutral">&nbsp;</span>
1874
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { Injectable, NotFoundException, Logger } from '@nestjs/common';
1875
- import { InjectRepository } from '@nestjs/typeorm';
1876
- import { DataSource, Repository } from 'typeorm';
1877
- import {
1878
- Session,
1879
- Project,
1880
- ContextTemplate,
1881
- SystemPrompt,
1882
- SessionInput,
1883
- AIAction,
1884
- ExecutionLog,
1885
- } from '../core-entities';
1886
- import * as fs from 'fs/promises';
1887
- import * as path from 'path';
1888
- import {
1889
- CreateSessionDto,
1890
- UpdateSessionDto,
1891
- SessionStatus,
1892
- RevertSessionResponseDto,
1893
- } from './dto/session.dto';
1894
- import { ApplicationStateService } from '../application-state/application-state.service';
1895
- import { Trace } from '../utils';
1896
- import { MessageBusService } from '../message-bus/message-bus.service';
1897
- &nbsp;
1898
- @Injectable()
1899
- export class SessionsService {
1900
- private readonly logger = new Logger(SessionsService.name);
1901
- constructor(
1902
- @InjectRepository(Session)
1903
- private sessionsRepository: Repository&lt;Session&gt;,
1904
- @InjectRepository(Project)
1905
- private projectsRepository: Repository&lt;Project&gt;,
1906
- @InjectRepository(ContextTemplate)
1907
- private contextTemplatesRepository: Repository&lt;ContextTemplate&gt;,
1908
- @InjectRepository(SystemPrompt)
1909
- private systemPromptsRepository: Repository&lt;SystemPrompt&gt;,
1910
- private readonly applicationStateService: ApplicationStateService,
1911
- private readonly messageBusService: MessageBusService,
1912
- private readonly dataSource: DataSource,
1913
- ) {}
1914
- &nbsp;
1915
- @Trace()
1916
- async create(createSessionDto: CreateSessionDto): Promise&lt;Session&gt; {
1917
- this.messageBusService.clear();
1918
- &nbsp;
1919
- const session = this.sessionsRepository.create({
1920
- ...createSessionDto,
1921
- status: SessionStatus.ACTIVE,
1922
- });
1923
- &nbsp;
1924
- if (!createSessionDto.model_id) {
1925
- const manualModeEnabled =
1926
- await this.applicationStateService.getManualLlmEnabled();
1927
- if (!manualModeEnabled) {
1928
- const recentModels =
1929
- await this.applicationStateService.getRecentModels();
1930
- if (recentModels.length &gt; 0) {
1931
- session.model_id = recentModels[0];
1932
- }
1933
- }
1934
- }
1935
- &nbsp;
1936
- if (createSessionDto.project_id) {
1937
- const project = await this.projectsRepository.findOneBy({
1938
- id: createSessionDto.project_id,
1939
- });
1940
- if (!project) {
1941
- throw new NotFoundException(
1942
- `Project with ID "${createSessionDto.project_id}" not found`,
1943
- );
1944
- }
1945
- session.project = project;
1946
- }
1947
- &nbsp;
1948
- if (createSessionDto.system_prompt_id) {
1949
- const systemPrompt = await this.systemPromptsRepository.findOneBy({
1950
- id: createSessionDto.system_prompt_id,
1951
- });
1952
- if (!systemPrompt) {
1953
- throw new NotFoundException(
1954
- `SystemPrompt with ID "${createSessionDto.system_prompt_id}" not found`,
1955
- );
1956
- }
1957
- <span class="cstat-no" title="statement not covered" > session.systemPrompt = systemPrompt;</span>
1958
- } else {
1959
- const defaultSystemPrompt = await this.systemPromptsRepository.findOneBy({
1960
- is_default: true,
1961
- });
1962
- if (defaultSystemPrompt) {
1963
- session.systemPrompt = defaultSystemPrompt;
1964
- }
1965
- }
1966
- &nbsp;
1967
- <span class="missing-if-branch" title="if path not taken" >I</span>if (createSessionDto.default_initial_context_template_id) {
1968
- const template = <span class="cstat-no" title="statement not covered" >await this.contextTemplatesRepository.findOneBy({</span>
1969
- id: createSessionDto.default_initial_context_template_id,
1970
- });
1971
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!template) {</span>
1972
- <span class="cstat-no" title="statement not covered" > throw new NotFoundException(</span>
1973
- `ContextTemplate with ID "${createSessionDto.default_initial_context_template_id}" not found`,
1974
- );
1975
- }
1976
- <span class="cstat-no" title="statement not covered" > session.defaultInitialContextTemplate = template;</span>
1977
- } else {
1978
- const defaultInitial = await this.contextTemplatesRepository.findOneBy({
1979
- is_default_initial: true,
1980
- });
1981
- if (defaultInitial) {
1982
- session.defaultInitialContextTemplate = defaultInitial;
1983
- }
1984
- }
1985
- &nbsp;
1986
- <span class="missing-if-branch" title="if path not taken" >I</span>if (createSessionDto.default_followup_context_template_id) {
1987
- const template = <span class="cstat-no" title="statement not covered" >await this.contextTemplatesRepository.findOneBy({</span>
1988
- id: createSessionDto.default_followup_context_template_id,
1989
- });
1990
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!template) {</span>
1991
- <span class="cstat-no" title="statement not covered" > throw new NotFoundException(</span>
1992
- `ContextTemplate with ID "${createSessionDto.default_followup_context_template_id}" not found`,
1993
- );
1994
- }
1995
- <span class="cstat-no" title="statement not covered" > session.defaultFollowupContextTemplate = template;</span>
1996
- } else {
1997
- const defaultFollowup = await this.contextTemplatesRepository.findOneBy({
1998
- is_default_followup: true,
1999
- });
2000
- if (defaultFollowup) {
2001
- session.defaultFollowupContextTemplate = defaultFollowup;
2002
- }
2003
- }
2004
- &nbsp;
2005
- const savedSession = await this.sessionsRepository.save(session);
2006
- await this.applicationStateService.setActiveSessionId(savedSession.id);
2007
- return this.findOne(savedSession.id);
2008
- }
2009
- &nbsp;
2010
- @Trace()
2011
- <span class="fstat-no" title="function not covered" > async </span>findAll(filter?: string): Promise&lt;Session[]&gt; {
2012
- const query = <span class="cstat-no" title="statement not covered" >this.sessionsRepository</span>
2013
- .createQueryBuilder('session')
2014
- .leftJoinAndSelect('session.project', 'project')
2015
- .leftJoinAndSelect(
2016
- 'session.defaultInitialContextTemplate',
2017
- 'defaultInitialContextTemplate',
2018
- )
2019
- .leftJoinAndSelect(
2020
- 'session.defaultFollowupContextTemplate',
2021
- 'defaultFollowupContextTemplate',
2022
- )
2023
- .leftJoinAndSelect('session.systemPrompt', 'systemPrompt')
2024
- .leftJoinAndSelect('session.subAgent', 'subAgent')
2025
- .leftJoinAndSelect('session.parentSession', 'parentSession')
2026
- .addSelect(
2027
- <span class="fstat-no" title="function not covered" > (s</span>ubQuery) =&gt;
2028
- <span class="cstat-no" title="statement not covered" > subQuery</span>
2029
- .select('COUNT(si.id)')
2030
- .from(SessionInput, 'si')
2031
- .where('si.session_id = session.id'),
2032
- 'sessionInputCount',
2033
- );
2034
- &nbsp;
2035
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (filter === 'non-empty') {</span>
2036
- <span class="cstat-no" title="statement not covered" > query.where(</span>
2037
- 'EXISTS (SELECT 1 FROM session_inputs si WHERE si.session_id = session.id)',
2038
- );
2039
- }
2040
- &nbsp;
2041
- const result = <span class="cstat-no" title="statement not covered" >await query.getRawAndEntities();</span>
2042
- &nbsp;
2043
- <span class="cstat-no" title="statement not covered" > return result.entities.map(<span class="fstat-no" title="function not covered" >(s</span>ession, index) =&gt; {</span>
2044
- const raw = <span class="cstat-no" title="statement not covered" >result.raw[index];</span>
2045
- <span class="cstat-no" title="statement not covered" > session.sessionInputCount = parseInt(raw.sessionInputCount, 10) || 0;</span>
2046
- <span class="cstat-no" title="statement not covered" > return session;</span>
2047
- });
2048
- }
2049
- &nbsp;
2050
- @Trace()
2051
- async findOne(id: string, includeExecutionLogs = false): Promise&lt;Session&gt; {
2052
- const relations: string[] = [
2053
- 'project',
2054
- 'defaultInitialContextTemplate',
2055
- 'defaultFollowupContextTemplate',
2056
- 'systemPrompt',
2057
- 'sessionInputs',
2058
- 'sessionInputs.contextTemplate',
2059
- 'sessionInputs.aiActions',
2060
- 'subAgent',
2061
- 'parentSession',
2062
- ];
2063
- &nbsp;
2064
- // Only load executionLogs when explicitly requested (they can be large)
2065
- if (includeExecutionLogs) {
2066
- relations.push('sessionInputs.aiActions.executionLogs');
2067
- }
2068
- &nbsp;
2069
- const session = await this.sessionsRepository.findOne({
2070
- where: { id },
2071
- relations,
2072
- order: {
2073
- sessionInputs: {
2074
- sequence_number: 'ASC',
2075
- aiActions: {
2076
- order_of_execution: 'ASC',
2077
- },
2078
- },
2079
- },
2080
- });
2081
- if (!session) {
2082
- throw new NotFoundException(`Session with ID "${id}" not found`);
2083
- }
2084
- return session;
2085
- }
2086
- &nbsp;
2087
- /**
2088
- * Lightweight version of findOne() for boot/initial load.
2089
- * Excludes heavy sessionInputs relation with nested aiActions and executionLogs.
2090
- * Used by findActive() to speed up initial session loading.
2091
- */
2092
- @Trace()
2093
- async findOneLight(id: string): Promise&lt;Session&gt; {
2094
- const session = await this.sessionsRepository.findOne({
2095
- where: { id },
2096
- relations: [
2097
- 'project',
2098
- 'defaultInitialContextTemplate',
2099
- 'defaultFollowupContextTemplate',
2100
- 'systemPrompt',
2101
- 'subAgent',
2102
- 'parentSession',
2103
- ],
2104
- });
2105
- if (!session) {
2106
- throw new NotFoundException(`Session with ID "${id}" not found`);
2107
- }
2108
- return session;
2109
- }
2110
- &nbsp;
2111
- @Trace()
2112
- async findActive(): Promise&lt;Session | null&gt; {
2113
- const activeSessionId =
2114
- await this.applicationStateService.getActiveSessionId();
2115
- if (!activeSessionId) {
2116
- return null;
2117
- }
2118
- try {
2119
- // Use lightweight findOneLight for boot performance
2120
- // Frontend can call findOne() separately when full details needed
2121
- return await this.findOneLight(activeSessionId);
2122
- } catch (error) {
2123
- if (error instanceof NotFoundException) {
2124
- // The active session ID points to a session that no longer exists.
2125
- return null;
2126
- }
2127
- <span class="cstat-no" title="statement not covered" > throw error;</span>
2128
- }
2129
- }
2130
- &nbsp;
2131
- @Trace()
2132
- <span class="fstat-no" title="function not covered" > async </span>findLatest(): Promise&lt;Session | null&gt; {
2133
- <span class="cstat-no" title="statement not covered" > return this.sessionsRepository.findOne({</span>
2134
- order: { created_at: 'DESC' },
2135
- });
2136
- }
2137
- &nbsp;
2138
- @Trace()
2139
- async setActive(id: string): Promise&lt;void&gt; {
2140
- // Use lightweight existence check instead of heavy findOne()
2141
- const exists = await this.sessionsRepository.existsBy({ id });
2142
- if (!exists) {
2143
- throw new NotFoundException(`Session with ID "${id}" not found`);
2144
- }
2145
- await this.applicationStateService.setActiveSessionId(id);
2146
- }
2147
- &nbsp;
2148
- @Trace()
2149
- async update(
2150
- id: string,
2151
- updateSessionDto: UpdateSessionDto,
2152
- ): Promise&lt;Session&gt; {
2153
- const session = await this.sessionsRepository.findOneBy({ id });
2154
- if (!session) {
2155
- throw new NotFoundException(`Session with ID "${id}" not found`);
2156
- }
2157
- &nbsp;
2158
- <span class="missing-if-branch" title="if path not taken" >I</span>if (updateSessionDto.model_id !== undefined) {
2159
- <span class="cstat-no" title="statement not covered" > session.model_id = updateSessionDto.model_id;</span>
2160
- }
2161
- &nbsp;
2162
- <span class="missing-if-branch" title="if path not taken" >I</span>if (updateSessionDto.reasoning_effort !== undefined) {
2163
- <span class="cstat-no" title="statement not covered" > session.reasoning_effort = updateSessionDto.reasoning_effort;</span>
2164
- }
2165
- &nbsp;
2166
- if (updateSessionDto.session_title !== undefined) {
2167
- session.session_title = updateSessionDto.session_title;
2168
- }
2169
- if (updateSessionDto.status !== undefined) {
2170
- session.status = updateSessionDto.status;
2171
- if (
2172
- [
2173
- SessionStatus.COMPLETED,
2174
- SessionStatus.ABORTED,
2175
- SessionStatus.FAILED,
2176
- ].includes(updateSessionDto.status)
2177
- ) {
2178
- session.end_time = new Date();
2179
- }
2180
- }
2181
- &nbsp;
2182
- <span class="missing-if-branch" title="if path not taken" >I</span>if (updateSessionDto.system_prompt_id !== undefined) {
2183
- <span class="cstat-no" title="statement not covered" > session.system_prompt_id = updateSessionDto.system_prompt_id;</span>
2184
- }
2185
- &nbsp;
2186
- <span class="missing-if-branch" title="if path not taken" >I</span>if (updateSessionDto.default_initial_context_template_id !== undefined) {
2187
- <span class="cstat-no" title="statement not covered" > session.default_initial_context_template_id =</span>
2188
- updateSessionDto.default_initial_context_template_id;
2189
- }
2190
- &nbsp;
2191
- <span class="missing-if-branch" title="if path not taken" >I</span>if (updateSessionDto.default_followup_context_template_id !== undefined) {
2192
- <span class="cstat-no" title="statement not covered" > session.default_followup_context_template_id =</span>
2193
- updateSessionDto.default_followup_context_template_id;
2194
- }
2195
- &nbsp;
2196
- <span class="missing-if-branch" title="if path not taken" >I</span>if (updateSessionDto.url !== undefined) {
2197
- <span class="cstat-no" title="statement not covered" > session.url = updateSessionDto.url;</span>
2198
- }
2199
- &nbsp;
2200
- <span class="missing-if-branch" title="if path not taken" >I</span>if (updateSessionDto.sub_agent_id !== undefined) {
2201
- <span class="cstat-no" title="statement not covered" > session.sub_agent_id = updateSessionDto.sub_agent_id;</span>
2202
- }
2203
- &nbsp;
2204
- <span class="missing-if-branch" title="if path not taken" >I</span>if (updateSessionDto.parent_session_id !== undefined) {
2205
- <span class="cstat-no" title="statement not covered" > session.parent_session_id = updateSessionDto.parent_session_id;</span>
2206
- }
2207
- &nbsp;
2208
- await this.sessionsRepository.save(session);
2209
- return this.findOne(id);
2210
- }
2211
- &nbsp;
2212
- @Trace()
2213
- async remove(id: string): Promise&lt;void&gt; {
2214
- const session = await this.findOne(id);
2215
- &nbsp;
2216
- // Get all descendant sessions recursively (children, grandchildren, etc.)
2217
- const descendantIds = await this.findAllDescendantSessions(id);
2218
- &nbsp;
2219
- // Delete descendants first (bottom-up) to avoid FK violations
2220
- // Process in reverse order (deepest first)
2221
- for (const descendantId of descendantIds.reverse()) {
2222
- const descendant = await this.sessionsRepository.findOneBy({
2223
- id: descendantId,
2224
- });
2225
- if (descendant) {
2226
- await this.sessionsRepository.remove(descendant);
2227
- }
2228
- }
2229
- &nbsp;
2230
- // Finally delete the target session
2231
- await this.sessionsRepository.remove(session);
2232
- }
2233
- &nbsp;
2234
- /**
2235
- * Recursively finds all descendant session IDs in depth-first order.
2236
- * Returns sessions in order from root to leaves (parent before children).
2237
- * For deletion, reverse this order to delete children first.
2238
- */
2239
- private async findAllDescendantSessions(
2240
- parentSessionId: string,
2241
- ): Promise&lt;string[]&gt; {
2242
- const children = await this.sessionsRepository.find({
2243
- where: { parent_session_id: parentSessionId },
2244
- select: ['id'],
2245
- });
2246
- &nbsp;
2247
- const result: string[] = [];
2248
- &nbsp;
2249
- for (const child of children) {
2250
- result.push(child.id);
2251
- // Recursively find grandchildren
2252
- const descendants = await this.findAllDescendantSessions(child.id);
2253
- result.push(...descendants);
2254
- }
2255
- &nbsp;
2256
- return result;
2257
- }
2258
- &nbsp;
2259
- @Trace()
2260
- <span class="fstat-no" title="function not covered" > async </span>findChildSessions(parentSessionId: string): Promise&lt;Session[]&gt; {
2261
- <span class="cstat-no" title="statement not covered" > return this.sessionsRepository.find({</span>
2262
- where: { parent_session_id: parentSessionId },
2263
- relations: ['subAgent', 'sessionInputs', 'sessionInputs.contextTemplate'],
2264
- order: { created_at: 'DESC' },
2265
- });
2266
- }
2267
- &nbsp;
2268
- @Trace()
2269
- async getFileChanges(sessionId: string): Promise&lt;
2270
- {
2271
- file_path: string;
2272
- initial_content: string | null;
2273
- current_content: string | null;
2274
- }[]
2275
- &gt; {
2276
- const session = await this.findOne(sessionId);
2277
- const projectRoot = process.env.REPOBURG_PROJECT_PATH || process.cwd();
2278
- &nbsp;
2279
- // Collect all file actions from all session inputs
2280
- const fileActionTypes = [
2281
- 'create_file',
2282
- 'overwrite_file',
2283
- 'delete_file',
2284
- 'quick_edit',
2285
- 'patch',
2286
- 'apply_diff',
2287
- ];
2288
- const fileActionsMap = new Map&lt;string, AIAction[]&gt;();
2289
- &nbsp;
2290
- for (const input of session.sessionInputs || <span class="branch-1 cbranch-no" title="branch not covered" >[])</span> {
2291
- for (const action of input.aiActions || <span class="branch-1 cbranch-no" title="branch not covered" >[])</span> {
2292
- if (action.file_path &amp;&amp; fileActionTypes.includes(action.action_type)) {
2293
- const existing = fileActionsMap.get(action.file_path) || [];
2294
- existing.push(action);
2295
- fileActionsMap.set(action.file_path, existing);
2296
- }
2297
- }
2298
- }
2299
- &nbsp;
2300
- const changes: {
2301
- file_path: string;
2302
- initial_content: string | null;
2303
- current_content: string | null;
2304
- }[] = [];
2305
- &nbsp;
2306
- for (const [filePath, actions] of fileActionsMap) {
2307
- // Sort by creation time to find oldest
2308
- const sortedActions = actions.sort(
2309
- <span class="fstat-no" title="function not covered" > (a</span>, b) =&gt;
2310
- <span class="cstat-no" title="statement not covered" > new Date(a.created_at).getTime() - new Date(b.created_at).getTime(),</span>
2311
- );
2312
- &nbsp;
2313
- // Get initial content from oldest action's original_content_for_revert
2314
- const oldestAction = sortedActions[0];
2315
- const initialContent = oldestAction.original_content_for_revert;
2316
- &nbsp;
2317
- // Read current content from filesystem
2318
- let currentContent: string | null = null;
2319
- try {
2320
- const safePath = path.resolve(projectRoot, filePath);
2321
- if (safePath.startsWith(projectRoot)) {
2322
- currentContent = await fs.readFile(safePath, 'utf8');
2323
- }
2324
- } catch {
2325
- // File doesn't exist or can't be read
2326
- currentContent = null;
2327
- }
2328
- &nbsp;
2329
- changes.push({
2330
- file_path: filePath,
2331
- initial_content: initialContent,
2332
- current_content: currentContent,
2333
- });
2334
- }
2335
- &nbsp;
2336
- // Sort by file path
2337
- return changes.sort((a, b) =&gt; a.file_path.localeCompare(b.file_path));
2338
- }
2339
- &nbsp;
2340
- @Trace()
2341
- async cloneSession(sourceSessionId: string): Promise&lt;Session&gt; {
2342
- // Load source session with all relations INCLUDING executionLogs for cloning
2343
- const sourceSession = await this.findOne(sourceSessionId, true);
2344
- &nbsp;
2345
- const queryRunner = this.dataSource.createQueryRunner();
2346
- await queryRunner.connect();
2347
- await queryRunner.startTransaction();
2348
- &nbsp;
2349
- try {
2350
- // Create new session
2351
- const newSession = queryRunner.manager.create(Session, {
2352
- project_id: sourceSession.project_id,
2353
- session_title: sourceSession.session_title
2354
- ? `${sourceSession.session_title} (Copy)`
2355
- : <span class="branch-1 cbranch-no" title="branch not covered" >'Cloned Session',</span>
2356
- status: SessionStatus.ACTIVE,
2357
- system_prompt_id: sourceSession.system_prompt_id,
2358
- default_initial_context_template_id:
2359
- sourceSession.default_initial_context_template_id,
2360
- default_followup_context_template_id:
2361
- sourceSession.default_followup_context_template_id,
2362
- model_id: sourceSession.model_id,
2363
- reasoning_effort: sourceSession.reasoning_effort,
2364
- url: sourceSession.url,
2365
- sub_agent_id: sourceSession.sub_agent_id,
2366
- // parent_session_id is intentionally NULL - not linked to parent
2367
- });
2368
- await queryRunner.manager.save(newSession);
2369
- &nbsp;
2370
- // Clone session inputs with their actions and logs
2371
- if (sourceSession.sessionInputs) {
2372
- for (const sourceInput of sourceSession.sessionInputs) {
2373
- const newInput = queryRunner.manager.create(SessionInput, {
2374
- session_id: newSession.id,
2375
- sequence_number: sourceInput.sequence_number,
2376
- user_prompt: sourceInput.user_prompt,
2377
- context_template_id: sourceInput.context_template_id,
2378
- ad_hoc_context_definition: sourceInput.ad_hoc_context_definition,
2379
- generated_context_string: sourceInput.generated_context_string,
2380
- execution_strategy: sourceInput.execution_strategy,
2381
- raw_llm_response: sourceInput.raw_llm_response,
2382
- llm_response_explanation: sourceInput.llm_response_explanation,
2383
- raw_studio_request_body: sourceInput.raw_studio_request_body,
2384
- idempotency_key: sourceInput.idempotency_key,
2385
- is_context_carrier: sourceInput.is_context_carrier,
2386
- thoughts: sourceInput.thoughts,
2387
- role: sourceInput.role,
2388
- external_conversation_id: sourceInput.external_conversation_id,
2389
- external_turn_id: sourceInput.external_turn_id,
2390
- input_token_count: sourceInput.input_token_count,
2391
- cached_token_count: sourceInput.cached_token_count,
2392
- output_token_count: sourceInput.output_token_count,
2393
- error_message: sourceInput.error_message,
2394
- tool_calls: sourceInput.tool_calls,
2395
- });
2396
- await queryRunner.manager.save(newInput);
2397
- &nbsp;
2398
- // Clone AIActions for this input
2399
- if (sourceInput.aiActions) {
2400
- for (const sourceAction of sourceInput.aiActions) {
2401
- const newAction = queryRunner.manager.create(AIAction, {
2402
- input_id: newInput.id,
2403
- action_type: sourceAction.action_type,
2404
- file_path: sourceAction.file_path,
2405
- content: sourceAction.content,
2406
- original_content_for_revert:
2407
- sourceAction.original_content_for_revert,
2408
- command_string: sourceAction.command_string,
2409
- files: sourceAction.files,
2410
- folders: sourceAction.folders,
2411
- reason: sourceAction.reason,
2412
- handover_string: sourceAction.handover_string,
2413
- status: sourceAction.status,
2414
- order_of_execution: sourceAction.order_of_execution,
2415
- server_name: sourceAction.server_name,
2416
- tool_name: sourceAction.tool_name,
2417
- arguments: sourceAction.arguments,
2418
- plain: sourceAction.plain,
2419
- tool_call_id: sourceAction.tool_call_id,
2420
- });
2421
- await queryRunner.manager.save(newAction);
2422
- &nbsp;
2423
- // Clone ExecutionLogs for this action
2424
- if (sourceAction.executionLogs) {
2425
- for (const sourceLog of sourceAction.executionLogs) {
2426
- const newLog = queryRunner.manager.create(ExecutionLog, {
2427
- action_id: newAction.id,
2428
- output: sourceLog.output,
2429
- error_message: sourceLog.error_message,
2430
- });
2431
- await queryRunner.manager.save(newLog);
2432
- }
2433
- }
2434
- }
2435
- }
2436
- }
2437
- }
2438
- &nbsp;
2439
- await queryRunner.commitTransaction();
2440
- &nbsp;
2441
- // Return the cloned session with all relations including executionLogs
2442
- return this.findOne(newSession.id, true);
2443
- } catch (error) {
2444
- <span class="cstat-no" title="statement not covered" > await queryRunner.rollbackTransaction();</span>
2445
- <span class="cstat-no" title="statement not covered" > throw error;</span>
2446
- } finally {
2447
- await queryRunner.release();
2448
- }
2449
- }
2450
- &nbsp;
2451
- /**
2452
- * Revert a specific file to its state before the session started.
2453
- * Finds the oldest action for this file and restores original_content_for_revert.
2454
- */
2455
- @Trace()
2456
- async revertFile(sessionId: string, filePath: string): Promise&lt;void&gt; {
2457
- const session = await this.findOne(sessionId);
2458
- const projectRoot = process.env.REPOBURG_PROJECT_PATH || process.cwd();
2459
- &nbsp;
2460
- // Collect all file actions for this specific file path
2461
- const fileActionTypes = [
2462
- 'create_file',
2463
- 'overwrite_file',
2464
- 'delete_file',
2465
- 'quick_edit',
2466
- 'patch',
2467
- 'apply_diff',
2468
- ];
2469
- const fileActions: AIAction[] = [];
2470
- &nbsp;
2471
- for (const input of session.sessionInputs || <span class="branch-1 cbranch-no" title="branch not covered" >[])</span> {
2472
- for (const action of input.aiActions || <span class="branch-1 cbranch-no" title="branch not covered" >[])</span> {
2473
- if (
2474
- action.file_path === filePath &amp;&amp;
2475
- fileActionTypes.includes(action.action_type)
2476
- ) {
2477
- fileActions.push(action);
2478
- }
2479
- }
2480
- }
2481
- &nbsp;
2482
- if (fileActions.length === 0) {
2483
- throw new NotFoundException(
2484
- `No file actions found for path "${filePath}" in session ${sessionId}`,
2485
- );
2486
- }
2487
- &nbsp;
2488
- // Sort by creation time to find oldest
2489
- const sortedActions = fileActions.sort(
2490
- (a, b) =&gt;
2491
- new Date(a.created_at).getTime() - new Date(b.created_at).getTime(),
2492
- );
2493
- &nbsp;
2494
- const oldestAction = sortedActions[0];
2495
- const originalContent = oldestAction.original_content_for_revert;
2496
- &nbsp;
2497
- const safePath = path.resolve(projectRoot, filePath);
2498
- if (!safePath.startsWith(projectRoot)) {
2499
- throw new NotFoundException(`Path traversal detected: ${filePath}`);
2500
- }
2501
- &nbsp;
2502
- try {
2503
- if (originalContent === null) {
2504
- // File was created by this session - delete it
2505
- await fs.unlink(safePath);
2506
- this.logger.log(`Reverted created file by deleting: ${filePath}`);
2507
- } else {
2508
- // File was modified - restore original content
2509
- await fs.mkdir(path.dirname(safePath), { recursive: true });
2510
- await fs.writeFile(safePath, originalContent, 'utf8');
2511
- this.logger.log(`Reverted file to original content: ${filePath}`);
2512
- }
2513
- &nbsp;
2514
- // Mark all actions for this file as confirmed_reverted
2515
- for (const action of fileActions) {
2516
- action.status = 'confirmed_reverted';
2517
- await this.dataSource.manager.save(AIAction, action);
2518
- }
2519
- } catch (error) {
2520
- this.logger.error(`Failed to revert file ${filePath}: ${error.message}`);
2521
- throw error;
2522
- }
2523
- }
2524
- &nbsp;
2525
- /**
2526
- * Get file changes for specific inputs within a session.
2527
- * Used for section-level diff view.
2528
- */
2529
- @Trace()
2530
- async getInputFileChanges(
2531
- sessionId: string,
2532
- inputIds: string[],
2533
- ): Promise&lt;
2534
- {
2535
- file_path: string;
2536
- initial_content: string | null;
2537
- current_content: string | null;
2538
- }[]
2539
- &gt; {
2540
- const session = await this.findOne(sessionId);
2541
- &nbsp;
2542
- // Validate inputIds belong to this session
2543
- const sessionInputIds = (session.sessionInputs || <span class="branch-1 cbranch-no" title="branch not covered" >[])</span>.map((i) =&gt; i.id);
2544
- for (const inputId of inputIds) {
2545
- if (!sessionInputIds.includes(inputId)) {
2546
- throw new NotFoundException(
2547
- `Input with ID "${inputId}" not found in session ${sessionId}`,
2548
- );
2549
- }
2550
- }
2551
- &nbsp;
2552
- // Filter inputs to the specified IDs
2553
- const targetInputs = (session.sessionInputs || <span class="branch-1 cbranch-no" title="branch not covered" >[])</span>.filter((i) =&gt;
2554
- inputIds.includes(i.id),
2555
- );
2556
- &nbsp;
2557
- // Collect file actions from target inputs
2558
- const fileActionTypes = [
2559
- 'create_file',
2560
- 'overwrite_file',
2561
- 'delete_file',
2562
- 'quick_edit',
2563
- 'patch',
2564
- 'apply_diff',
2565
- ];
2566
- const fileActionsMap = new Map&lt;string, AIAction[]&gt;();
2567
- &nbsp;
2568
- for (const input of targetInputs) {
2569
- for (const action of input.aiActions || <span class="branch-1 cbranch-no" title="branch not covered" >[])</span> {
2570
- if (action.file_path &amp;&amp; fileActionTypes.includes(action.action_type)) {
2571
- const existing = fileActionsMap.get(action.file_path) || [];
2572
- existing.push(action);
2573
- fileActionsMap.set(action.file_path, existing);
2574
- }
2575
- }
2576
- }
2577
- &nbsp;
2578
- const changes: {
2579
- file_path: string;
2580
- initial_content: string | null;
2581
- current_content: string | null;
2582
- }[] = [];
2583
- &nbsp;
2584
- for (const [filePath, actions] of fileActionsMap) {
2585
- // Sort by creation time to find oldest and newest actions in this section
2586
- const sortedActions = actions.sort(
2587
- (a, b) =&gt;
2588
- new Date(a.created_at).getTime() - new Date(b.created_at).getTime(),
2589
- );
2590
- &nbsp;
2591
- // Get initial content from oldest action's original_content_for_revert
2592
- const oldestAction = sortedActions[0];
2593
- const initialContent = oldestAction.original_content_for_revert;
2594
- &nbsp;
2595
- // Get current content from newest action's content (what this section produced)
2596
- // This ensures section diff shows only changes made within this section,
2597
- // not cumulative changes from later sections that exist on filesystem
2598
- const newestAction = sortedActions[sortedActions.length - 1];
2599
- const currentContent = newestAction.content;
2600
- &nbsp;
2601
- changes.push({
2602
- file_path: filePath,
2603
- initial_content: initialContent,
2604
- current_content: currentContent,
2605
- });
2606
- }
2607
- &nbsp;
2608
- // Sort by file path
2609
- return changes.sort((a, b) =&gt; a.file_path.localeCompare(b.file_path));
2610
- }
2611
- &nbsp;
2612
- /**
2613
- * Revert file changes for specific inputs within a session.
2614
- * Used for section-level revert.
2615
- */
2616
- @Trace()
2617
- async revertInputFileChanges(
2618
- sessionId: string,
2619
- inputIds: string[],
2620
- ): Promise&lt;RevertSessionResponseDto&gt; {
2621
- const session = await this.findOne(sessionId);
2622
- const projectRoot = process.env.REPOBURG_PROJECT_PATH || process.cwd();
2623
- &nbsp;
2624
- // Validate inputIds belong to this session
2625
- const sessionInputIds = (session.sessionInputs || <span class="branch-1 cbranch-no" title="branch not covered" >[])</span>.map((i) =&gt; i.id);
2626
- for (const inputId of inputIds) {
2627
- if (!sessionInputIds.includes(inputId)) {
2628
- throw new NotFoundException(
2629
- `Input with ID "${inputId}" not found in session ${sessionId}`,
2630
- );
2631
- }
2632
- }
2633
- &nbsp;
2634
- // Filter inputs to the specified IDs
2635
- const targetInputs = (session.sessionInputs || <span class="branch-1 cbranch-no" title="branch not covered" >[])</span>.filter((i) =&gt;
2636
- inputIds.includes(i.id),
2637
- );
2638
- &nbsp;
2639
- // Collect file actions from target inputs
2640
- const fileActionTypes = [
2641
- 'create_file',
2642
- 'overwrite_file',
2643
- 'delete_file',
2644
- 'quick_edit',
2645
- 'patch',
2646
- 'apply_diff',
2647
- ];
2648
- const fileActionsMap = new Map&lt;string, AIAction[]&gt;();
2649
- &nbsp;
2650
- for (const input of targetInputs) {
2651
- for (const action of input.aiActions || <span class="branch-1 cbranch-no" title="branch not covered" >[])</span> {
2652
- if (action.file_path &amp;&amp; fileActionTypes.includes(action.action_type)) {
2653
- const existing = fileActionsMap.get(action.file_path) || [];
2654
- existing.push(action);
2655
- fileActionsMap.set(action.file_path, existing);
2656
- }
2657
- }
2658
- }
2659
- &nbsp;
2660
- const result: RevertSessionResponseDto = {
2661
- reverted: [],
2662
- failed: [],
2663
- errors: [],
2664
- };
2665
- &nbsp;
2666
- // Also check for conflicts - files modified in inputs after our target inputs
2667
- const targetInputSequences = targetInputs.map((i) =&gt; i.sequence_number);
2668
- const maxTargetSequence = Math.max(...targetInputSequences);
2669
- const laterInputs = (session.sessionInputs || <span class="branch-1 cbranch-no" title="branch not covered" >[])</span>.filter(
2670
- (i) =&gt; i.sequence_number &gt; maxTargetSequence,
2671
- );
2672
- &nbsp;
2673
- const laterFilePaths = new Set&lt;string&gt;();
2674
- for (const input of laterInputs) {
2675
- for (const action of input.aiActions || <span class="branch-1 cbranch-no" title="branch not covered" >[])</span> {
2676
- if (action.file_path &amp;&amp; fileActionTypes.includes(action.action_type)) {
2677
- laterFilePaths.add(action.file_path);
2678
- }
2679
- }
2680
- }
2681
- &nbsp;
2682
- // Process each file
2683
- for (const [filePath, actions] of fileActionsMap) {
2684
- try {
2685
- const sortedActions = actions.sort(
2686
- (a, b) =&gt;
2687
- new Date(a.created_at).getTime() - new Date(b.created_at).getTime(),
2688
- );
2689
- &nbsp;
2690
- const oldestAction = sortedActions[0];
2691
- const originalContent = oldestAction.original_content_for_revert;
2692
- &nbsp;
2693
- const safePath = path.resolve(projectRoot, filePath);
2694
- if (!safePath.startsWith(projectRoot)) {
2695
- result.failed.push(filePath);
2696
- result.errors.push(`Path traversal detected: ${filePath}`);
2697
- continue;
2698
- }
2699
- &nbsp;
2700
- if (originalContent === null) {
2701
- // File was created - delete it
2702
- await fs.unlink(safePath);
2703
- this.logger.log(
2704
- `Reverted section-created file by deleting: ${filePath}`,
2705
- );
2706
- } else {
2707
- // File was modified - restore original content
2708
- await fs.mkdir(path.dirname(safePath), { recursive: true });
2709
- await fs.writeFile(safePath, originalContent, 'utf8');
2710
- this.logger.log(
2711
- `Reverted file to section-start content: ${filePath}`,
2712
- );
2713
- }
2714
- &nbsp;
2715
- // Mark these specific actions as confirmed_reverted
2716
- for (const action of actions) {
2717
- action.status = 'confirmed_reverted';
2718
- await this.dataSource.manager.save(AIAction, action);
2719
- }
2720
- &nbsp;
2721
- result.reverted.push(filePath);
2722
- } catch (error) {
2723
- result.failed.push(filePath);
2724
- result.errors.push(error.message);
2725
- }
2726
- }
2727
- &nbsp;
2728
- return result;
2729
- }
2730
- &nbsp;
2731
- /**
2732
- * Revert all file changes made in this session.
2733
- * Returns lists of reverted and failed files.
2734
- */
2735
- @Trace()
2736
- async revertSession(sessionId: string): Promise&lt;RevertSessionResponseDto&gt; {
2737
- const changes = await this.getFileChanges(sessionId);
2738
- &nbsp;
2739
- const result: RevertSessionResponseDto = {
2740
- reverted: [],
2741
- failed: [],
2742
- errors: [],
2743
- };
2744
- &nbsp;
2745
- // Process in order: first delete created files, then restore modified/deleted
2746
- const createdFiles = changes.filter(
2747
- (c) =&gt; c.initial_content === null &amp;&amp; c.current_content !== null,
2748
- );
2749
- const otherFiles = changes.filter(
2750
- (c) =&gt; c.initial_content !== null || c.current_content === null,
2751
- );
2752
- &nbsp;
2753
- // Revert created files first (delete them)
2754
- for (const change of createdFiles) {
2755
- <span class="cstat-no" title="statement not covered" > try {</span>
2756
- <span class="cstat-no" title="statement not covered" > await this.revertFile(sessionId, change.file_path);</span>
2757
- <span class="cstat-no" title="statement not covered" > result.reverted.push(change.file_path);</span>
2758
- } catch (error) {
2759
- <span class="cstat-no" title="statement not covered" > result.failed.push(change.file_path);</span>
2760
- <span class="cstat-no" title="statement not covered" > result.errors.push(error.message);</span>
2761
- }
2762
- }
2763
- &nbsp;
2764
- // Then revert modified/deleted files (restore them)
2765
- for (const change of otherFiles) {
2766
- try {
2767
- await this.revertFile(sessionId, change.file_path);
2768
- result.reverted.push(change.file_path);
2769
- } catch (error) {
2770
- result.failed.push(change.file_path);
2771
- result.errors.push(error.message);
2772
- }
2773
- }
2774
- &nbsp;
2775
- return result;
2776
- }
2777
- }
2778
- &nbsp;</pre></td></tr></table></pre>
2779
-
2780
- <div class='push'></div><!-- for sticky footer -->
2781
- </div><!-- /wrapper -->
2782
- <div class='footer quiet pad2 space-top1 center small'>
2783
- Code coverage generated by
2784
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
2785
- at 2026-05-09T01:03:45.353Z
2786
- </div>
2787
- <script src="../../prettify.js"></script>
2788
- <script>
2789
- window.onload = function () {
2790
- prettyPrint();
2791
- };
2792
- </script>
2793
- <script src="../../sorter.js"></script>
2794
- <script src="../../block-navigation.js"></script>
2795
- </body>
2796
- </html>
2797
-