repoburg 1.3.148 → 1.3.150

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 (515) hide show
  1. package/backend/dist/src/core-entities/session.entity.d.ts +1 -0
  2. package/backend/dist/src/core-entities/session.entity.js +8 -0
  3. package/backend/dist/src/core-entities/session.entity.js.map +1 -1
  4. package/backend/dist/src/interactive-chat/chat.service.js +9 -0
  5. package/backend/dist/src/interactive-chat/chat.service.js.map +1 -1
  6. package/backend/dist/src/main.js +3 -0
  7. package/backend/dist/src/main.js.map +1 -1
  8. package/backend/dist/src/sessions/dto/session.dto.d.ts +1 -0
  9. package/backend/dist/src/sessions/dto/session.dto.js +9 -0
  10. package/backend/dist/src/sessions/dto/session.dto.js.map +1 -1
  11. package/backend/dist/src/sessions/sessions.service.d.ts +1 -0
  12. package/backend/dist/src/sessions/sessions.service.js +7 -0
  13. package/backend/dist/src/sessions/sessions.service.js.map +1 -1
  14. package/backend/dist/src/sub-agents/sub-agent-runner.service.js +17 -0
  15. package/backend/dist/src/sub-agents/sub-agent-runner.service.js.map +1 -1
  16. package/backend/dist/tsconfig.build.tsbuildinfo +1 -1
  17. package/package.json +1 -1
  18. package/.claude/settings.local.json +0 -7
  19. package/.playwright-mcp/console-2026-05-12T09-54-31-560Z.log +0 -13
  20. package/.playwright-mcp/console-2026-05-12T10-04-14-892Z.log +0 -13
  21. package/.playwright-mcp/console-2026-05-12T10-50-32-398Z.log +0 -14
  22. package/.playwright-mcp/console-2026-05-12T12-50-09-889Z.log +0 -13
  23. package/.playwright-mcp/console-2026-05-12T12-58-49-817Z.log +0 -60
  24. package/.playwright-mcp/console-2026-05-13T18-41-50-654Z.log +0 -13
  25. package/.playwright-mcp/console-2026-05-13T18-54-58-000Z.log +0 -13
  26. package/.playwright-mcp/console-2026-05-13T19-13-30-875Z.log +0 -95
  27. package/.playwright-mcp/console-2026-05-13T20-09-13-456Z.log +0 -17
  28. package/.playwright-mcp/console-2026-05-13T20-21-01-662Z.log +0 -13
  29. package/.playwright-mcp/console-2026-05-13T20-22-00-038Z.log +0 -15
  30. package/.playwright-mcp/console-2026-05-13T20-26-26-665Z.log +0 -28
  31. package/.playwright-mcp/console-2026-05-13T20-35-49-544Z.log +0 -26
  32. package/.playwright-mcp/console-2026-05-13T20-38-10-958Z.log +0 -676
  33. package/.playwright-mcp/console-2026-05-14T21-27-06-074Z.log +0 -69
  34. package/.playwright-mcp/console-2026-05-14T22-13-07-470Z.log +0 -101
  35. package/.playwright-mcp/console-2026-05-14T23-58-12-858Z.log +0 -28
  36. package/.playwright-mcp/console-2026-05-15T00-15-00-760Z.log +0 -81
  37. package/.playwright-mcp/page-2026-05-12T09-54-32-920Z.yml +0 -223
  38. package/.playwright-mcp/page-2026-05-12T09-54-42-067Z.yml +0 -190
  39. package/.playwright-mcp/page-2026-05-12T09-55-12-019Z.yml +0 -389
  40. package/.playwright-mcp/page-2026-05-12T09-55-49-065Z.yml +0 -428
  41. package/.playwright-mcp/page-2026-05-12T09-56-06-607Z.yml +0 -389
  42. package/.playwright-mcp/page-2026-05-12T09-56-23-371Z.yml +0 -196
  43. package/.playwright-mcp/page-2026-05-12T09-56-55-792Z.yml +0 -389
  44. package/.playwright-mcp/page-2026-05-12T10-04-15-716Z.yml +0 -164
  45. package/.playwright-mcp/page-2026-05-12T10-04-43-994Z.yml +0 -190
  46. package/.playwright-mcp/page-2026-05-12T10-05-04-616Z.yml +0 -389
  47. package/.playwright-mcp/page-2026-05-12T10-05-27-643Z.yml +0 -428
  48. package/.playwright-mcp/page-2026-05-12T10-05-47-851Z.yml +0 -389
  49. package/.playwright-mcp/page-2026-05-12T10-06-13-429Z.yml +0 -196
  50. package/.playwright-mcp/page-2026-05-12T10-06-58-147Z.yml +0 -389
  51. package/.playwright-mcp/page-2026-05-12T10-08-20-216Z.yml +0 -428
  52. package/.playwright-mcp/page-2026-05-12T10-08-38-177Z.yml +0 -389
  53. package/.playwright-mcp/page-2026-05-12T10-09-01-851Z.yml +0 -196
  54. package/.playwright-mcp/page-2026-05-12T10-09-24-888Z.yml +0 -389
  55. package/.playwright-mcp/page-2026-05-12T10-50-33-049Z.yml +0 -212
  56. package/.playwright-mcp/page-2026-05-12T10-50-48-496Z.yml +0 -196
  57. package/.playwright-mcp/page-2026-05-12T10-51-51-308Z.yml +0 -196
  58. package/.playwright-mcp/page-2026-05-12T10-52-07-379Z.yml +0 -196
  59. package/.playwright-mcp/page-2026-05-12T12-50-10-589Z.yml +0 -143
  60. package/.playwright-mcp/page-2026-05-12T12-50-25-461Z.yml +0 -196
  61. package/.playwright-mcp/page-2026-05-12T12-51-11-190Z.yml +0 -394
  62. package/.playwright-mcp/page-2026-05-12T12-52-21-138Z.yml +0 -524
  63. package/.playwright-mcp/page-2026-05-12T12-53-42-423Z.yml +0 -431
  64. package/.playwright-mcp/page-2026-05-12T12-54-18-549Z.yml +0 -196
  65. package/.playwright-mcp/page-2026-05-12T12-54-26-818Z.yml +0 -390
  66. package/.playwright-mcp/page-2026-05-12T12-55-32-697Z.yml +0 -520
  67. package/.playwright-mcp/page-2026-05-12T12-58-50-450Z.yml +0 -164
  68. package/.playwright-mcp/page-2026-05-12T12-59-12-954Z.yml +0 -196
  69. package/.playwright-mcp/page-2026-05-12T12-59-38-479Z.yml +0 -394
  70. package/.playwright-mcp/page-2026-05-12T13-01-17-580Z.yml +0 -524
  71. package/.playwright-mcp/page-2026-05-12T13-01-58-447Z.yml +0 -271
  72. package/.playwright-mcp/page-2026-05-12T13-03-12-109Z.yml +0 -394
  73. package/.playwright-mcp/page-2026-05-13T18-41-51-436Z.yml +0 -159
  74. package/.playwright-mcp/page-2026-05-13T18-42-27-482Z.yml +0 -4814
  75. package/.playwright-mcp/page-2026-05-13T18-54-58-644Z.yml +0 -154
  76. package/.playwright-mcp/page-2026-05-13T18-56-11-217Z.yml +0 -1560
  77. package/.playwright-mcp/page-2026-05-13T18-56-32-205Z.yml +0 -1560
  78. package/.playwright-mcp/page-2026-05-13T19-13-31-457Z.yml +0 -164
  79. package/.playwright-mcp/page-2026-05-13T19-14-26-248Z.yml +0 -1560
  80. package/.playwright-mcp/page-2026-05-13T19-15-02-355Z.yml +0 -1560
  81. package/.playwright-mcp/page-2026-05-13T20-09-14-478Z.yml +0 -149
  82. package/.playwright-mcp/page-2026-05-13T20-10-49-292Z.yml +0 -4814
  83. package/.playwright-mcp/page-2026-05-13T20-21-02-852Z.yml +0 -143
  84. package/.playwright-mcp/page-2026-05-13T20-22-01-084Z.yml +0 -143
  85. package/.playwright-mcp/page-2026-05-13T20-22-09-334Z.yml +0 -1561
  86. package/.playwright-mcp/page-2026-05-13T20-26-27-690Z.yml +0 -143
  87. package/.playwright-mcp/page-2026-05-13T20-26-53-324Z.yml +0 -1561
  88. package/.playwright-mcp/page-2026-05-13T20-27-35-395Z.yml +0 -1561
  89. package/.playwright-mcp/page-2026-05-13T20-35-50-708Z.yml +0 -149
  90. package/.playwright-mcp/page-2026-05-13T20-37-41-379Z.yml +0 -0
  91. package/.playwright-mcp/page-2026-05-13T20-38-12-049Z.yml +0 -149
  92. package/.playwright-mcp/page-2026-05-13T20-38-19-708Z.yml +0 -1561
  93. package/.playwright-mcp/page-2026-05-14T21-27-07-278Z.yml +0 -164
  94. package/.playwright-mcp/page-2026-05-14T22-13-07-628Z.yml +0 -5
  95. package/.playwright-mcp/page-2026-05-14T22-13-27-676Z.yml +0 -1561
  96. package/.playwright-mcp/page-2026-05-14T23-58-13-064Z.yml +0 -3
  97. package/.playwright-mcp/page-2026-05-14T23-58-33-500Z.yml +0 -1561
  98. package/.playwright-mcp/page-2026-05-15T00-15-00-945Z.yml +0 -3
  99. package/.run/backend _ build.run.xml +0 -12
  100. package/.run/backend _ lint.run.xml +0 -12
  101. package/.run/backend _ test.run.xml +0 -12
  102. package/.run/frontend _ build.run.xml +0 -12
  103. package/.run/frontend _ lint_fix.run.xml +0 -12
  104. package/CODEMAP.md +0 -53
  105. package/backend/.repoburg/hooks/README.md +0 -53
  106. package/backend/.repoburg/hooks/eslint-hook.ts +0 -46
  107. package/backend/.repoburg/hooks/example-hook.ts +0 -62
  108. package/backend/CODEMAP.md +0 -48
  109. package/backend/README.md +0 -3
  110. package/backend/coverage/clover.xml +0 -12003
  111. package/backend/coverage/coverage-final.json +0 -313
  112. package/backend/coverage/lcov-report/base.css +0 -224
  113. package/backend/coverage/lcov-report/block-navigation.js +0 -87
  114. package/backend/coverage/lcov-report/favicon.png +0 -0
  115. package/backend/coverage/lcov-report/index.html +0 -1301
  116. package/backend/coverage/lcov-report/packages/gemini-core/examples/index.html +0 -116
  117. package/backend/coverage/lcov-report/packages/gemini-core/examples/simple.ts.html +0 -445
  118. package/backend/coverage/lcov-report/packages/gemini-core/index.html +0 -116
  119. package/backend/coverage/lcov-report/packages/gemini-core/index.ts.html +0 -127
  120. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/codeAssist.ts.html +0 -193
  121. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/converter.ts.html +0 -832
  122. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/index.html +0 -206
  123. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/oauth-credential-storage.ts.html +0 -469
  124. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/oauth2.ts.html +0 -1705
  125. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/server.ts.html +0 -790
  126. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/setup.ts.html +0 -454
  127. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/types.ts.html +0 -685
  128. package/backend/coverage/lcov-report/packages/gemini-core/src/config/config.ts.html +0 -307
  129. package/backend/coverage/lcov-report/packages/gemini-core/src/config/index.html +0 -146
  130. package/backend/coverage/lcov-report/packages/gemini-core/src/config/models.ts.html +0 -151
  131. package/backend/coverage/lcov-report/packages/gemini-core/src/config/storage.ts.html +0 -172
  132. package/backend/coverage/lcov-report/packages/gemini-core/src/core/contentGenerator.ts.html +0 -490
  133. package/backend/coverage/lcov-report/packages/gemini-core/src/core/geminiChat.ts.html +0 -1237
  134. package/backend/coverage/lcov-report/packages/gemini-core/src/core/geminiRequest.ts.html +0 -139
  135. package/backend/coverage/lcov-report/packages/gemini-core/src/core/index.html +0 -176
  136. package/backend/coverage/lcov-report/packages/gemini-core/src/core/prompts.ts.html +0 -409
  137. package/backend/coverage/lcov-report/packages/gemini-core/src/core/tokenLimits.ts.html +0 -181
  138. package/backend/coverage/lcov-report/packages/gemini-core/src/index.html +0 -116
  139. package/backend/coverage/lcov-report/packages/gemini-core/src/index.ts.html +0 -187
  140. package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/base-token-storage.ts.html +0 -229
  141. package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/file-token-storage.ts.html +0 -634
  142. package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/hybrid-token-storage.ts.html +0 -373
  143. package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/index.html +0 -191
  144. package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/index.ts.html +0 -124
  145. package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/keychain-token-storage.ts.html +0 -835
  146. package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/types.ts.html +0 -211
  147. package/backend/coverage/lcov-report/packages/gemini-core/src/utils/errors.ts.html +0 -421
  148. package/backend/coverage/lcov-report/packages/gemini-core/src/utils/index.html +0 -191
  149. package/backend/coverage/lcov-report/packages/gemini-core/src/utils/partUtils.ts.html +0 -592
  150. package/backend/coverage/lcov-report/packages/gemini-core/src/utils/quotaErrorDetection.ts.html +0 -388
  151. package/backend/coverage/lcov-report/packages/gemini-core/src/utils/retry.ts.html +0 -877
  152. package/backend/coverage/lcov-report/packages/gemini-core/src/utils/session.ts.html +0 -112
  153. package/backend/coverage/lcov-report/packages/gemini-core/src/utils/userAccountManager.ts.html +0 -502
  154. package/backend/coverage/lcov-report/packages/tokenpatch/index.html +0 -161
  155. package/backend/coverage/lcov-report/packages/tokenpatch/index.ts.html +0 -415
  156. package/backend/coverage/lcov-report/packages/tokenpatch/parser.ts.html +0 -139
  157. package/backend/coverage/lcov-report/packages/tokenpatch/patcher.ts.html +0 -1249
  158. package/backend/coverage/lcov-report/packages/tokenpatch/strategies/index.html +0 -131
  159. package/backend/coverage/lcov-report/packages/tokenpatch/strategies/tiktoken-tokenizer.ts.html +0 -187
  160. package/backend/coverage/lcov-report/packages/tokenpatch/strategies/tree-sitter-tokenizer.ts.html +0 -193
  161. package/backend/coverage/lcov-report/packages/tokenpatch/tokens.ts.html +0 -178
  162. package/backend/coverage/lcov-report/prettify.css +0 -1
  163. package/backend/coverage/lcov-report/prettify.js +0 -2
  164. package/backend/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  165. package/backend/coverage/lcov-report/sorter.js +0 -210
  166. package/backend/coverage/lcov-report/src/ai-actions/ai-action-batch.service.ts.html +0 -1549
  167. package/backend/coverage/lcov-report/src/ai-actions/ai-actions.controller.ts.html +0 -904
  168. package/backend/coverage/lcov-report/src/ai-actions/ai-actions.module.ts.html +0 -175
  169. package/backend/coverage/lcov-report/src/ai-actions/ai-actions.service.ts.html +0 -1534
  170. package/backend/coverage/lcov-report/src/ai-actions/index.html +0 -161
  171. package/backend/coverage/lcov-report/src/app.controller.ts.html +0 -151
  172. package/backend/coverage/lcov-report/src/app.module.ts.html +0 -451
  173. package/backend/coverage/lcov-report/src/app.service.ts.html +0 -163
  174. package/backend/coverage/lcov-report/src/application-state/application-state.controller.ts.html +0 -1609
  175. package/backend/coverage/lcov-report/src/application-state/application-state.module.ts.html +0 -136
  176. package/backend/coverage/lcov-report/src/application-state/application-state.service.ts.html +0 -2281
  177. package/backend/coverage/lcov-report/src/application-state/dto/index.html +0 -416
  178. package/backend/coverage/lcov-report/src/application-state/dto/set-alibaba-config.dto.ts.html +0 -109
  179. package/backend/coverage/lcov-report/src/application-state/dto/set-auto-context-fetch-enabled.dto.ts.html +0 -118
  180. package/backend/coverage/lcov-report/src/application-state/dto/set-auto-send-to-ai-studio-enabled.dto.ts.html +0 -109
  181. package/backend/coverage/lcov-report/src/application-state/dto/set-context-token-limit.dto.ts.html +0 -124
  182. package/backend/coverage/lcov-report/src/application-state/dto/set-execution-strategy.dto.ts.html +0 -121
  183. package/backend/coverage/lcov-report/src/application-state/dto/set-followup-token-limit.dto.ts.html +0 -124
  184. package/backend/coverage/lcov-report/src/application-state/dto/set-history-compression-enabled.dto.ts.html +0 -115
  185. package/backend/coverage/lcov-report/src/application-state/dto/set-llm-retry-enabled.dto.ts.html +0 -115
  186. package/backend/coverage/lcov-report/src/application-state/dto/set-llm-retry-max-attempts.dto.ts.html +0 -127
  187. package/backend/coverage/lcov-report/src/application-state/dto/set-manual-llm-enabled.dto.ts.html +0 -118
  188. package/backend/coverage/lcov-report/src/application-state/dto/set-ollama-config.dto.ts.html +0 -109
  189. package/backend/coverage/lcov-report/src/application-state/dto/set-openai-config.dto.ts.html +0 -139
  190. package/backend/coverage/lcov-report/src/application-state/dto/set-openrouter-config.dto.ts.html +0 -109
  191. package/backend/coverage/lcov-report/src/application-state/dto/set-streaming-enabled.dto.ts.html +0 -109
  192. package/backend/coverage/lcov-report/src/application-state/dto/set-syntax-validation-enabled.dto.ts.html +0 -118
  193. package/backend/coverage/lcov-report/src/application-state/dto/set-theme.dto.ts.html +0 -124
  194. package/backend/coverage/lcov-report/src/application-state/dto/set-tools-enabled.dto.ts.html +0 -118
  195. package/backend/coverage/lcov-report/src/application-state/dto/set-websocket-enabled.dto.ts.html +0 -109
  196. package/backend/coverage/lcov-report/src/application-state/dto/set-yolo-mode-message.dto.ts.html +0 -124
  197. package/backend/coverage/lcov-report/src/application-state/dto/set-yolo-mode.dto.ts.html +0 -118
  198. package/backend/coverage/lcov-report/src/application-state/dto/set-zai-config.dto.ts.html +0 -109
  199. package/backend/coverage/lcov-report/src/application-state/index.html +0 -146
  200. package/backend/coverage/lcov-report/src/common/cache/cache-invalidation.service.ts.html +0 -1297
  201. package/backend/coverage/lcov-report/src/common/cache/cache-invalidation.subscriber.ts.html +0 -712
  202. package/backend/coverage/lcov-report/src/common/cache/etag-cache.service.ts.html +0 -379
  203. package/backend/coverage/lcov-report/src/common/cache/index.html +0 -146
  204. package/backend/coverage/lcov-report/src/common/common.module.ts.html +0 -121
  205. package/backend/coverage/lcov-report/src/common/index.html +0 -116
  206. package/backend/coverage/lcov-report/src/common/interceptors/etag-cache.interceptor.ts.html +0 -337
  207. package/backend/coverage/lcov-report/src/common/interceptors/index.html +0 -116
  208. package/backend/coverage/lcov-report/src/common/middleware/cache.middleware.ts.html +0 -265
  209. package/backend/coverage/lcov-report/src/common/middleware/index.html +0 -116
  210. package/backend/coverage/lcov-report/src/context-generation/context-generation.module.ts.html +0 -118
  211. package/backend/coverage/lcov-report/src/context-generation/context-generation.service.ts.html +0 -1501
  212. package/backend/coverage/lcov-report/src/context-generation/index.html +0 -131
  213. package/backend/coverage/lcov-report/src/context-snippets/context-snippets.controller.ts.html +0 -427
  214. package/backend/coverage/lcov-report/src/context-snippets/context-snippets.module.ts.html +0 -142
  215. package/backend/coverage/lcov-report/src/context-snippets/context-snippets.service.ts.html +0 -442
  216. package/backend/coverage/lcov-report/src/context-snippets/dto/context-snippet.dto.ts.html +0 -211
  217. package/backend/coverage/lcov-report/src/context-snippets/dto/index.html +0 -116
  218. package/backend/coverage/lcov-report/src/context-snippets/index.html +0 -146
  219. package/backend/coverage/lcov-report/src/context-templates/context-templates.controller.ts.html +0 -724
  220. package/backend/coverage/lcov-report/src/context-templates/context-templates.module.ts.html +0 -142
  221. package/backend/coverage/lcov-report/src/context-templates/context-templates.service.ts.html +0 -1015
  222. package/backend/coverage/lcov-report/src/context-templates/dto/context-template.dto.ts.html +0 -511
  223. package/backend/coverage/lcov-report/src/context-templates/dto/index.html +0 -116
  224. package/backend/coverage/lcov-report/src/context-templates/index.html +0 -146
  225. package/backend/coverage/lcov-report/src/core-entities/ai-action.entity.ts.html +0 -613
  226. package/backend/coverage/lcov-report/src/core-entities/application-state.entity.ts.html +0 -124
  227. package/backend/coverage/lcov-report/src/core-entities/base.entity.ts.html +0 -211
  228. package/backend/coverage/lcov-report/src/core-entities/context-snippet.entity.ts.html +0 -190
  229. package/backend/coverage/lcov-report/src/core-entities/context-template.entity.ts.html +0 -439
  230. package/backend/coverage/lcov-report/src/core-entities/custom-snippet.entity.ts.html +0 -205
  231. package/backend/coverage/lcov-report/src/core-entities/custom-variable.entity.ts.html +0 -241
  232. package/backend/coverage/lcov-report/src/core-entities/enums.ts.html +0 -553
  233. package/backend/coverage/lcov-report/src/core-entities/execution-log.entity.ts.html +0 -208
  234. package/backend/coverage/lcov-report/src/core-entities/index.html +0 -371
  235. package/backend/coverage/lcov-report/src/core-entities/index.ts.html +0 -136
  236. package/backend/coverage/lcov-report/src/core-entities/llm-call-log.entity.ts.html +0 -388
  237. package/backend/coverage/lcov-report/src/core-entities/mcp-config.entity.ts.html +0 -256
  238. package/backend/coverage/lcov-report/src/core-entities/mcp-tool.entity.ts.html +0 -256
  239. package/backend/coverage/lcov-report/src/core-entities/project.entity.ts.html +0 -181
  240. package/backend/coverage/lcov-report/src/core-entities/session-input.entity.ts.html +0 -745
  241. package/backend/coverage/lcov-report/src/core-entities/session.entity.ts.html +0 -688
  242. package/backend/coverage/lcov-report/src/core-entities/system-prompt.entity.ts.html +0 -349
  243. package/backend/coverage/lcov-report/src/core-entities/tool-hook.entity.ts.html +0 -235
  244. package/backend/coverage/lcov-report/src/custom-snippets/custom-snippets.controller.ts.html +0 -442
  245. package/backend/coverage/lcov-report/src/custom-snippets/custom-snippets.module.ts.html +0 -124
  246. package/backend/coverage/lcov-report/src/custom-snippets/custom-snippets.service.ts.html +0 -304
  247. package/backend/coverage/lcov-report/src/custom-snippets/dto/custom-snippet.dto.ts.html +0 -205
  248. package/backend/coverage/lcov-report/src/custom-snippets/dto/index.html +0 -116
  249. package/backend/coverage/lcov-report/src/custom-snippets/index.html +0 -146
  250. package/backend/coverage/lcov-report/src/custom-variables/custom-variables.controller.ts.html +0 -463
  251. package/backend/coverage/lcov-report/src/custom-variables/custom-variables.module.ts.html +0 -124
  252. package/backend/coverage/lcov-report/src/custom-variables/custom-variables.service.ts.html +0 -310
  253. package/backend/coverage/lcov-report/src/custom-variables/dto/custom-variable.dto.ts.html +0 -244
  254. package/backend/coverage/lcov-report/src/custom-variables/dto/index.html +0 -116
  255. package/backend/coverage/lcov-report/src/custom-variables/index.html +0 -146
  256. package/backend/coverage/lcov-report/src/events/events.gateway.ts.html +0 -295
  257. package/backend/coverage/lcov-report/src/events/events.module.ts.html +0 -109
  258. package/backend/coverage/lcov-report/src/events/index.html +0 -146
  259. package/backend/coverage/lcov-report/src/events/websocket.events.ts.html +0 -466
  260. package/backend/coverage/lcov-report/src/execution-logs/dto/execution-log.dto.ts.html +0 -130
  261. package/backend/coverage/lcov-report/src/execution-logs/dto/index.html +0 -116
  262. package/backend/coverage/lcov-report/src/execution-logs/execution-logs.controller.ts.html +0 -130
  263. package/backend/coverage/lcov-report/src/execution-logs/execution-logs.module.ts.html +0 -124
  264. package/backend/coverage/lcov-report/src/execution-logs/execution-logs.service.ts.html +0 -238
  265. package/backend/coverage/lcov-report/src/execution-logs/index.html +0 -146
  266. package/backend/coverage/lcov-report/src/gemini/gemini-llm.provider.ts.html +0 -553
  267. package/backend/coverage/lcov-report/src/gemini/gemini.module.ts.html +0 -109
  268. package/backend/coverage/lcov-report/src/gemini/index.html +0 -131
  269. package/backend/coverage/lcov-report/src/global-config/dto/index.html +0 -116
  270. package/backend/coverage/lcov-report/src/global-config/dto/update-global-config.dto.ts.html +0 -367
  271. package/backend/coverage/lcov-report/src/global-config/global-config.controller.ts.html +0 -220
  272. package/backend/coverage/lcov-report/src/global-config/global-config.module.ts.html +0 -115
  273. package/backend/coverage/lcov-report/src/global-config/global-config.service.ts.html +0 -397
  274. package/backend/coverage/lcov-report/src/global-config/index.html +0 -146
  275. package/backend/coverage/lcov-report/src/http-exception.filter.ts.html +0 -340
  276. package/backend/coverage/lcov-report/src/index.html +0 -206
  277. package/backend/coverage/lcov-report/src/interactive-chat/chat.module.ts.html +0 -187
  278. package/backend/coverage/lcov-report/src/interactive-chat/chat.service.ts.html +0 -1825
  279. package/backend/coverage/lcov-report/src/interactive-chat/index.html +0 -146
  280. package/backend/coverage/lcov-report/src/interactive-chat/streaming.controller.ts.html +0 -343
  281. package/backend/coverage/lcov-report/src/llm-call-logs/dto/index.html +0 -116
  282. package/backend/coverage/lcov-report/src/llm-call-logs/dto/llm-call-log.dto.ts.html +0 -214
  283. package/backend/coverage/lcov-report/src/llm-call-logs/index.html +0 -146
  284. package/backend/coverage/lcov-report/src/llm-call-logs/llm-call-logs.controller.ts.html +0 -634
  285. package/backend/coverage/lcov-report/src/llm-call-logs/llm-call-logs.module.ts.html +0 -124
  286. package/backend/coverage/lcov-report/src/llm-call-logs/llm-call-logs.service.ts.html +0 -643
  287. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/apply-diff.handler.ts.html +0 -1090
  288. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/ask-user.handler.ts.html +0 -433
  289. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/create-file.handler.ts.html +0 -757
  290. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/delete-file.handler.ts.html +0 -586
  291. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/discard-messages.handler.ts.html +0 -1153
  292. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/apply-diff.args.dto.ts.html +0 -124
  293. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/ask-user.args.dto.ts.html +0 -103
  294. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/create-file.args.dto.ts.html +0 -124
  295. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/delete-file.args.dto.ts.html +0 -106
  296. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/execute-code.args.dto.ts.html +0 -106
  297. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/final.args.dto.ts.html +0 -118
  298. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/generate-title.args.dto.ts.html +0 -190
  299. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/get-session-history.args.dto.ts.html +0 -196
  300. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/howto.args.dto.ts.html +0 -91
  301. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/index.html +0 -356
  302. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/new-session.args.dto.ts.html +0 -106
  303. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/overwrite-file.args.dto.ts.html +0 -124
  304. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/patch.args.dto.ts.html +0 -124
  305. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/quick-edit.args.dto.ts.html +0 -214
  306. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/request-context.args.dto.ts.html +0 -202
  307. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/run-command.args.dto.ts.html +0 -151
  308. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/sanitizer.decorator.ts.html +0 -181
  309. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/write-todo.args.dto.ts.html +0 -130
  310. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/execute-code.handler.ts.html +0 -631
  311. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/final.handler.ts.html +0 -469
  312. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/generate-title.handler.ts.html +0 -448
  313. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/get-messages.handler.ts.html +0 -1351
  314. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/get-session-history.handler.ts.html +0 -868
  315. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/howto.handler.ts.html +0 -481
  316. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/index.html +0 -416
  317. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/invoke-subagent.handler.ts.html +0 -580
  318. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/list-sub-agents.handler.ts.html +0 -352
  319. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/matchers/context-aware.matcher.ts.html +0 -1054
  320. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/matchers/exact.matcher.ts.html +0 -331
  321. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/matchers/hybrid.matcher.ts.html +0 -403
  322. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/matchers/index.html +0 -176
  323. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/matchers/index.ts.html +0 -100
  324. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/matchers/normalized.matcher.ts.html +0 -724
  325. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/mcp-tool-action.handler.ts.html +0 -358
  326. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/new-session.handler.ts.html +0 -379
  327. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/overwrite-file.handler.ts.html +0 -838
  328. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/patch.handler.ts.html +0 -1702
  329. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/quick-edit.handler.ts.html +0 -1459
  330. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/request-context.handler.ts.html +0 -679
  331. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/run-command.handler.ts.html +0 -964
  332. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/write-todo.handler.ts.html +0 -625
  333. package/backend/coverage/lcov-report/src/llm-orchestration/errors/handler-validation.error.ts.html +0 -103
  334. package/backend/coverage/lcov-report/src/llm-orchestration/errors/index.html +0 -116
  335. package/backend/coverage/lcov-report/src/llm-orchestration/history-compression.service.ts.html +0 -1645
  336. package/backend/coverage/lcov-report/src/llm-orchestration/hooks/follow-up-post-execution.hook.ts.html +0 -238
  337. package/backend/coverage/lcov-report/src/llm-orchestration/hooks/frontend-notification.hook.ts.html +0 -181
  338. package/backend/coverage/lcov-report/src/llm-orchestration/hooks/index.html +0 -161
  339. package/backend/coverage/lcov-report/src/llm-orchestration/hooks/invalid-tool-feedback.hook.ts.html +0 -313
  340. package/backend/coverage/lcov-report/src/llm-orchestration/hooks/yolo-mode-post-execution.hook.ts.html +0 -466
  341. package/backend/coverage/lcov-report/src/llm-orchestration/index.html +0 -176
  342. package/backend/coverage/lcov-report/src/llm-orchestration/llm-orchestration.interfaces.ts.html +0 -319
  343. package/backend/coverage/lcov-report/src/llm-orchestration/llm-orchestration.module.ts.html +0 -706
  344. package/backend/coverage/lcov-report/src/llm-orchestration/llm-turn-processor.service.ts.html +0 -1150
  345. package/backend/coverage/lcov-report/src/llm-orchestration/parser/index.html +0 -131
  346. package/backend/coverage/lcov-report/src/llm-orchestration/parser/llm-output-parser.service.ts.html +0 -658
  347. package/backend/coverage/lcov-report/src/llm-orchestration/parser/parsing.constants.ts.html +0 -127
  348. package/backend/coverage/lcov-report/src/llm-orchestration/tool-schema.service.ts.html +0 -547
  349. package/backend/coverage/lcov-report/src/llm-provider/alibaba-llm.provider.ts.html +0 -1681
  350. package/backend/coverage/lcov-report/src/llm-provider/index.html +0 -236
  351. package/backend/coverage/lcov-report/src/llm-provider/llm-provider.controller.ts.html +0 -187
  352. package/backend/coverage/lcov-report/src/llm-provider/llm-provider.interface.ts.html +0 -361
  353. package/backend/coverage/lcov-report/src/llm-provider/llm-provider.module.ts.html +0 -175
  354. package/backend/coverage/lcov-report/src/llm-provider/ollama-llm.provider.ts.html +0 -1780
  355. package/backend/coverage/lcov-report/src/llm-provider/openai-llm.provider.ts.html +0 -1867
  356. package/backend/coverage/lcov-report/src/llm-provider/openrouter-llm.provider.ts.html +0 -1891
  357. package/backend/coverage/lcov-report/src/llm-provider/proxy-llm.provider.ts.html +0 -304
  358. package/backend/coverage/lcov-report/src/llm-provider/zai-llm.provider.ts.html +0 -1666
  359. package/backend/coverage/lcov-report/src/llm-responses/dto/index.html +0 -131
  360. package/backend/coverage/lcov-report/src/llm-responses/dto/submit-llm-response.dto.ts.html +0 -436
  361. package/backend/coverage/lcov-report/src/llm-responses/dto/sync-conversation.dto.ts.html +0 -319
  362. package/backend/coverage/lcov-report/src/llm-responses/index.html +0 -146
  363. package/backend/coverage/lcov-report/src/llm-responses/llm-responses.controller.ts.html +0 -283
  364. package/backend/coverage/lcov-report/src/llm-responses/llm-responses.module.ts.html +0 -184
  365. package/backend/coverage/lcov-report/src/llm-responses/llm-responses.service.ts.html +0 -1474
  366. package/backend/coverage/lcov-report/src/main.ts.html +0 -463
  367. package/backend/coverage/lcov-report/src/mcp/dto/batch-update-mcp-tools.dto.ts.html +0 -145
  368. package/backend/coverage/lcov-report/src/mcp/dto/create-mcp-config.dto.ts.html +0 -127
  369. package/backend/coverage/lcov-report/src/mcp/dto/index.html +0 -146
  370. package/backend/coverage/lcov-report/src/mcp/dto/update-mcp-config.dto.ts.html +0 -112
  371. package/backend/coverage/lcov-report/src/mcp/index.html +0 -146
  372. package/backend/coverage/lcov-report/src/mcp/mcp.controller.ts.html +0 -340
  373. package/backend/coverage/lcov-report/src/mcp/mcp.module.ts.html +0 -124
  374. package/backend/coverage/lcov-report/src/mcp/mcp.service.ts.html +0 -1345
  375. package/backend/coverage/lcov-report/src/message-bus/dto/index.html +0 -116
  376. package/backend/coverage/lcov-report/src/message-bus/dto/submit-message.dto.ts.html +0 -109
  377. package/backend/coverage/lcov-report/src/message-bus/index.html +0 -146
  378. package/backend/coverage/lcov-report/src/message-bus/message-bus.controller.ts.html +0 -148
  379. package/backend/coverage/lcov-report/src/message-bus/message-bus.module.ts.html +0 -115
  380. package/backend/coverage/lcov-report/src/message-bus/message-bus.service.ts.html +0 -151
  381. package/backend/coverage/lcov-report/src/projects/dto/index.html +0 -116
  382. package/backend/coverage/lcov-report/src/projects/dto/project.dto.ts.html +0 -196
  383. package/backend/coverage/lcov-report/src/projects/index.html +0 -146
  384. package/backend/coverage/lcov-report/src/projects/projects.controller.ts.html +0 -322
  385. package/backend/coverage/lcov-report/src/projects/projects.module.ts.html +0 -124
  386. package/backend/coverage/lcov-report/src/projects/projects.service.ts.html +0 -235
  387. package/backend/coverage/lcov-report/src/seeding/context-snippet-seeding.service.ts.html +0 -280
  388. package/backend/coverage/lcov-report/src/seeding/context-template-seeding.service.ts.html +0 -439
  389. package/backend/coverage/lcov-report/src/seeding/custom-snippet-seeding.service.ts.html +0 -271
  390. package/backend/coverage/lcov-report/src/seeding/custom-variable-seeding.service.ts.html +0 -271
  391. package/backend/coverage/lcov-report/src/seeding/data/context-snippets/compress.ts.html +0 -172
  392. package/backend/coverage/lcov-report/src/seeding/data/context-snippets/index.html +0 -116
  393. package/backend/coverage/lcov-report/src/seeding/data/context-templates/default-followup_ad-hoc-focused-context.ts.html +0 -157
  394. package/backend/coverage/lcov-report/src/seeding/data/context-templates/default-initial_condensed-project-context.ts.html +0 -148
  395. package/backend/coverage/lcov-report/src/seeding/data/context-templates/default-initial_full-project-context.ts.html +0 -151
  396. package/backend/coverage/lcov-report/src/seeding/data/context-templates/index.html +0 -161
  397. package/backend/coverage/lcov-report/src/seeding/data/context-templates/open-pr-command.ts.html +0 -247
  398. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/default_rglob.ts.html +0 -94
  399. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/eta-for.ts.html +0 -100
  400. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/eta-if.ts.html +0 -97
  401. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/eta-ifelse.ts.html +0 -100
  402. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/everest-playwright-auth.ts.html +0 -304
  403. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/git-diff.ts.html +0 -94
  404. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/index.html +0 -341
  405. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/it-mcp.ts.html +0 -100
  406. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/it-tools.ts.html +0 -97
  407. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/rg-exclude.ts.html +0 -94
  408. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/rg-search-glob.ts.html +0 -94
  409. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/rg-search.ts.html +0 -94
  410. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/run-command.ts.html +0 -94
  411. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/tree.ts.html +0 -94
  412. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/usr-adhoc-incl.ts.html +0 -100
  413. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/usr-cmd-output-incl.ts.html +0 -94
  414. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/usr-input-incl.ts.html +0 -94
  415. package/backend/coverage/lcov-report/src/seeding/data/custom-variables/default-auto-execute-code.ts.html +0 -94
  416. package/backend/coverage/lcov-report/src/seeding/data/custom-variables/default-plan-mode.ts.html +0 -97
  417. package/backend/coverage/lcov-report/src/seeding/data/custom-variables/index.html +0 -131
  418. package/backend/coverage/lcov-report/src/seeding/data/mcp-configs/default-configs.ts.html +0 -121
  419. package/backend/coverage/lcov-report/src/seeding/data/mcp-configs/index.html +0 -116
  420. package/backend/coverage/lcov-report/src/seeding/data/sub-agents/browser-use.ts.html +0 -115
  421. package/backend/coverage/lcov-report/src/seeding/data/sub-agents/explore-codebase.ts.html +0 -136
  422. package/backend/coverage/lcov-report/src/seeding/data/sub-agents/index.html +0 -131
  423. package/backend/coverage/lcov-report/src/seeding/data/system-prompts/browser-use-agent.ts.html +0 -190
  424. package/backend/coverage/lcov-report/src/seeding/data/system-prompts/default_native_tool_agent.ts.html +0 -421
  425. package/backend/coverage/lcov-report/src/seeding/data/system-prompts/explore-codebase-agent.ts.html +0 -265
  426. package/backend/coverage/lcov-report/src/seeding/data/system-prompts/index.html +0 -161
  427. package/backend/coverage/lcov-report/src/seeding/data/system-prompts/master-agent.ts.html +0 -388
  428. package/backend/coverage/lcov-report/src/seeding/data/tool-hooks/eslint-hook.ts.html +0 -265
  429. package/backend/coverage/lcov-report/src/seeding/data/tool-hooks/example-hook.ts.html +0 -274
  430. package/backend/coverage/lcov-report/src/seeding/data/tool-hooks/index.html +0 -146
  431. package/backend/coverage/lcov-report/src/seeding/data/tool-hooks/readme.ts.html +0 -250
  432. package/backend/coverage/lcov-report/src/seeding/index.html +0 -236
  433. package/backend/coverage/lcov-report/src/seeding/mcp-config-seeding.service.ts.html +0 -193
  434. package/backend/coverage/lcov-report/src/seeding/seeding.module.ts.html +0 -211
  435. package/backend/coverage/lcov-report/src/seeding/seeding.service.ts.html +0 -187
  436. package/backend/coverage/lcov-report/src/seeding/sub-agent-seeding.service.ts.html +0 -742
  437. package/backend/coverage/lcov-report/src/seeding/system-prompt-seeding.service.ts.html +0 -397
  438. package/backend/coverage/lcov-report/src/session-followup/index.html +0 -131
  439. package/backend/coverage/lcov-report/src/session-followup/session-followup.module.ts.html +0 -130
  440. package/backend/coverage/lcov-report/src/session-followup/session-followup.service.ts.html +0 -718
  441. package/backend/coverage/lcov-report/src/session-inputs/dto/index.html +0 -116
  442. package/backend/coverage/lcov-report/src/session-inputs/dto/session-input.dto.ts.html +0 -577
  443. package/backend/coverage/lcov-report/src/session-inputs/index.html +0 -176
  444. package/backend/coverage/lcov-report/src/session-inputs/session-input-context.service.ts.html +0 -832
  445. package/backend/coverage/lcov-report/src/session-inputs/session-input.subscriber.ts.html +0 -220
  446. package/backend/coverage/lcov-report/src/session-inputs/session-inputs.controller.ts.html +0 -685
  447. package/backend/coverage/lcov-report/src/session-inputs/session-inputs.module.ts.html +0 -229
  448. package/backend/coverage/lcov-report/src/session-inputs/session-inputs.service.ts.html +0 -1981
  449. package/backend/coverage/lcov-report/src/session-transfer/index.html +0 -131
  450. package/backend/coverage/lcov-report/src/session-transfer/session-transfer.module.ts.html +0 -160
  451. package/backend/coverage/lcov-report/src/session-transfer/session-transfer.service.ts.html +0 -883
  452. package/backend/coverage/lcov-report/src/sessions/dto/index.html +0 -116
  453. package/backend/coverage/lcov-report/src/sessions/dto/session.dto.ts.html +0 -769
  454. package/backend/coverage/lcov-report/src/sessions/index.html +0 -146
  455. package/backend/coverage/lcov-report/src/sessions/sessions.controller.ts.html +0 -1306
  456. package/backend/coverage/lcov-report/src/sessions/sessions.module.ts.html +0 -220
  457. package/backend/coverage/lcov-report/src/sessions/sessions.service.ts.html +0 -2797
  458. package/backend/coverage/lcov-report/src/sub-agents/dto/create-sub-agent.dto.ts.html +0 -355
  459. package/backend/coverage/lcov-report/src/sub-agents/dto/index.html +0 -131
  460. package/backend/coverage/lcov-report/src/sub-agents/dto/update-sub-agent.dto.ts.html +0 -295
  461. package/backend/coverage/lcov-report/src/sub-agents/index.html +0 -221
  462. package/backend/coverage/lcov-report/src/sub-agents/sub-agent-run.entity.ts.html +0 -463
  463. package/backend/coverage/lcov-report/src/sub-agents/sub-agent-runner.service.ts.html +0 -2428
  464. package/backend/coverage/lcov-report/src/sub-agents/sub-agent-runs.controller.ts.html +0 -580
  465. package/backend/coverage/lcov-report/src/sub-agents/sub-agent-runs.service.ts.html +0 -550
  466. package/backend/coverage/lcov-report/src/sub-agents/sub-agent.entity.ts.html +0 -475
  467. package/backend/coverage/lcov-report/src/sub-agents/sub-agents.controller.ts.html +0 -373
  468. package/backend/coverage/lcov-report/src/sub-agents/sub-agents.module.ts.html +0 -205
  469. package/backend/coverage/lcov-report/src/sub-agents/sub-agents.service.ts.html +0 -619
  470. package/backend/coverage/lcov-report/src/syntax-validation/index.html +0 -131
  471. package/backend/coverage/lcov-report/src/syntax-validation/syntax-validation.module.ts.html +0 -109
  472. package/backend/coverage/lcov-report/src/syntax-validation/syntax-validation.service.ts.html +0 -724
  473. package/backend/coverage/lcov-report/src/system-prompts/dto/index.html +0 -176
  474. package/backend/coverage/lcov-report/src/system-prompts/dto/set-enabled-mcp-tools.dto.ts.html +0 -157
  475. package/backend/coverage/lcov-report/src/system-prompts/dto/set-enabled-tools.dto.ts.html +0 -148
  476. package/backend/coverage/lcov-report/src/system-prompts/dto/system-prompt.dto.ts.html +0 -517
  477. package/backend/coverage/lcov-report/src/system-prompts/dto/toggle-mcp-tool.dto.ts.html +0 -121
  478. package/backend/coverage/lcov-report/src/system-prompts/dto/toggle-tool.dto.ts.html +0 -118
  479. package/backend/coverage/lcov-report/src/system-prompts/index.html +0 -146
  480. package/backend/coverage/lcov-report/src/system-prompts/system-prompts.controller.ts.html +0 -1060
  481. package/backend/coverage/lcov-report/src/system-prompts/system-prompts.module.ts.html +0 -160
  482. package/backend/coverage/lcov-report/src/system-prompts/system-prompts.service.ts.html +0 -2254
  483. package/backend/coverage/lcov-report/src/timeout.interceptor.ts.html +0 -178
  484. package/backend/coverage/lcov-report/src/tool-hooks/dto/create-tool-hook.dto.ts.html +0 -181
  485. package/backend/coverage/lcov-report/src/tool-hooks/dto/index.html +0 -131
  486. package/backend/coverage/lcov-report/src/tool-hooks/dto/update-tool-hook.dto.ts.html +0 -178
  487. package/backend/coverage/lcov-report/src/tool-hooks/index.html +0 -146
  488. package/backend/coverage/lcov-report/src/tool-hooks/tool-hooks.controller.ts.html +0 -481
  489. package/backend/coverage/lcov-report/src/tool-hooks/tool-hooks.module.ts.html +0 -127
  490. package/backend/coverage/lcov-report/src/tool-hooks/tool-hooks.service.ts.html +0 -1222
  491. package/backend/coverage/lcov-report/src/tracing.ts.html +0 -214
  492. package/backend/coverage/lcov-report/src/types/express-multer.d.ts.html +0 -130
  493. package/backend/coverage/lcov-report/src/types/index.html +0 -116
  494. package/backend/coverage/lcov-report/src/utils/ai-format-generator.ts.html +0 -253
  495. package/backend/coverage/lcov-report/src/utils/fuzzy-search.ts.html +0 -310
  496. package/backend/coverage/lcov-report/src/utils/index.html +0 -191
  497. package/backend/coverage/lcov-report/src/utils/index.ts.html +0 -100
  498. package/backend/coverage/lcov-report/src/utils/short-id.ts.html +0 -109
  499. package/backend/coverage/lcov-report/src/utils/spawn-with-kill.ts.html +0 -412
  500. package/backend/coverage/lcov-report/src/utils/trace.decorator.ts.html +0 -223
  501. package/backend/coverage/lcov-report/src/visual-editor/index.html +0 -146
  502. package/backend/coverage/lcov-report/src/visual-editor/visual-editor.controller.ts.html +0 -409
  503. package/backend/coverage/lcov-report/src/visual-editor/visual-editor.dto.ts.html +0 -130
  504. package/backend/coverage/lcov-report/src/visual-editor/visual-editor.module.ts.html +0 -118
  505. package/backend/coverage/lcov-report/src/workspace/dto/file-tree.dto.ts.html +0 -112
  506. package/backend/coverage/lcov-report/src/workspace/dto/index.html +0 -131
  507. package/backend/coverage/lcov-report/src/workspace/dto/search-workspace.dto.ts.html +0 -193
  508. package/backend/coverage/lcov-report/src/workspace/index.html +0 -146
  509. package/backend/coverage/lcov-report/src/workspace/workspace.controller.ts.html +0 -394
  510. package/backend/coverage/lcov-report/src/workspace/workspace.module.ts.html +0 -121
  511. package/backend/coverage/lcov-report/src/workspace/workspace.service.ts.html +0 -1027
  512. package/backend/coverage/lcov.info +0 -20220
  513. package/backend/packages/tokenpatch/CODEMAP.md +0 -25
  514. package/daemon/CODEMAP.md +0 -23
  515. 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
-