@xxmachina/components 19.24.1 → 19.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (329) hide show
  1. package/fesm2022/xxmachina-components-extras-flow.mjs +176 -94
  2. package/fesm2022/xxmachina-components-extras-flow.mjs.map +1 -1
  3. package/fesm2022/xxmachina-components-features-command.mjs +16 -16
  4. package/fesm2022/xxmachina-components-features-command.mjs.map +1 -1
  5. package/fesm2022/xxmachina-components-features-query.mjs +15 -15
  6. package/fesm2022/xxmachina-components-features-query.mjs.map +1 -1
  7. package/fesm2022/xxmachina-components-groups-command-form.mjs +6 -6
  8. package/fesm2022/xxmachina-components-groups-command-form.mjs.map +1 -1
  9. package/fesm2022/xxmachina-components-groups-query-form.mjs +11 -11
  10. package/fesm2022/xxmachina-components-groups-query-form.mjs.map +1 -1
  11. package/fesm2022/xxmachina-components-molecules-calendar-paginator.mjs +7 -7
  12. package/fesm2022/xxmachina-components-molecules-calendar-paginator.mjs.map +1 -1
  13. package/fesm2022/xxmachina-components-molecules-daily-cell.mjs +41 -35
  14. package/fesm2022/xxmachina-components-molecules-daily-cell.mjs.map +1 -1
  15. package/fesm2022/xxmachina-components-molecules-inline-edit-field.mjs +12 -12
  16. package/fesm2022/xxmachina-components-molecules-inline-edit-field.mjs.map +1 -1
  17. package/fesm2022/xxmachina-components-molecules-weekly-header.mjs +16 -16
  18. package/fesm2022/xxmachina-components-molecules-weekly-header.mjs.map +1 -1
  19. package/fesm2022/xxmachina-components-organisms-calendar-section.mjs +40 -41
  20. package/fesm2022/xxmachina-components-organisms-calendar-section.mjs.map +1 -1
  21. package/fesm2022/xxmachina-components-organisms-event-input-section.mjs +8 -10
  22. package/fesm2022/xxmachina-components-organisms-event-input-section.mjs.map +1 -1
  23. package/fesm2022/xxmachina-components-organisms-terminal-input-section.mjs +26 -16
  24. package/fesm2022/xxmachina-components-organisms-terminal-input-section.mjs.map +1 -1
  25. package/fesm2022/xxmachina-components-organisms-video-trimmer-section.mjs +12 -12
  26. package/fesm2022/xxmachina-components-organisms-video-trimmer-section.mjs.map +1 -1
  27. package/fesm2022/xxmachina-components-organisms-xterm.mjs +29 -21
  28. package/fesm2022/xxmachina-components-organisms-xterm.mjs.map +1 -1
  29. package/fesm2022/xxmachina-components-pages-command-harness.mjs.map +1 -1
  30. package/fesm2022/xxmachina-components-pages-command.mjs +26 -26
  31. package/fesm2022/xxmachina-components-pages-command.mjs.map +1 -1
  32. package/fesm2022/xxmachina-components-pages-query-v2.mjs +27 -28
  33. package/fesm2022/xxmachina-components-pages-query-v2.mjs.map +1 -1
  34. package/fesm2022/xxmachina-components-pages-query.mjs +46 -46
  35. package/fesm2022/xxmachina-components-pages-query.mjs.map +1 -1
  36. package/fesm2022/xxmachina-components-pages-thread.mjs +14 -14
  37. package/fesm2022/xxmachina-components-pages-thread.mjs.map +1 -1
  38. package/fesm2022/xxmachina-components-routes-commands-command.routes-CSwIdXZg.mjs.map +1 -1
  39. package/fesm2022/xxmachina-components-routes-commands-pages.routes-j2xVop4W.mjs.map +1 -1
  40. package/fesm2022/xxmachina-components-routes-commands.mjs.map +1 -1
  41. package/fesm2022/xxmachina-components-routes-pages.mjs.map +1 -1
  42. package/fesm2022/xxmachina-components-routes-preloading.mjs +3 -3
  43. package/fesm2022/xxmachina-components-routes-preloading.mjs.map +1 -1
  44. package/fesm2022/xxmachina-components-routes-queries-pages.routes-CfrglCIL.mjs.map +1 -1
  45. package/fesm2022/xxmachina-components-routes-queries.mjs +1 -1
  46. package/fesm2022/xxmachina-components-routes-queries.mjs.map +1 -1
  47. package/fesm2022/xxmachina-components-routes-query-pages.routes-CxTbOJDQ.mjs.map +1 -1
  48. package/fesm2022/xxmachina-components-routes-query.mjs.map +1 -1
  49. package/fesm2022/{xxmachina-components-routes-resources-pages.routes-CzjQOxwT.mjs → xxmachina-components-routes-resources-pages.routes-CRXxavHb.mjs} +2 -2
  50. package/fesm2022/xxmachina-components-routes-resources-pages.routes-CRXxavHb.mjs.map +1 -0
  51. package/fesm2022/{xxmachina-components-routes-resources-resource.routes-C5KpB3KM.mjs → xxmachina-components-routes-resources-resource.routes-CkkmqB2_.mjs} +2 -2
  52. package/fesm2022/xxmachina-components-routes-resources-resource.routes-CkkmqB2_.mjs.map +1 -0
  53. package/fesm2022/xxmachina-components-routes-resources.mjs +1 -1
  54. package/fesm2022/xxmachina-components-routes-resources.mjs.map +1 -1
  55. package/fesm2022/xxmachina-components-routes-side-chat.mjs.map +1 -1
  56. package/fesm2022/xxmachina-components-routes-side.mjs.map +1 -1
  57. package/fesm2022/xxmachina-components-routes-transformer.mjs +6 -6
  58. package/fesm2022/xxmachina-components-routes-transformer.mjs.map +1 -1
  59. package/fesm2022/xxmachina-components-routes-transformers-pages.routes-02pVsNas.mjs.map +1 -1
  60. package/fesm2022/xxmachina-components-routes-transformers.mjs +1 -1
  61. package/fesm2022/xxmachina-components-routes-transformers.mjs.map +1 -1
  62. package/fesm2022/xxmachina-components-routes.mjs.map +1 -1
  63. package/fesm2022/xxmachina-components-services-app.mjs +3 -3
  64. package/fesm2022/xxmachina-components-services-app.mjs.map +1 -1
  65. package/fesm2022/xxmachina-components-services-assistant.mjs +3 -3
  66. package/fesm2022/xxmachina-components-services-assistant.mjs.map +1 -1
  67. package/fesm2022/xxmachina-components-services-command.mjs +4 -4
  68. package/fesm2022/xxmachina-components-services-command.mjs.map +1 -1
  69. package/fesm2022/xxmachina-components-services-context.mjs +4 -4
  70. package/fesm2022/xxmachina-components-services-context.mjs.map +1 -1
  71. package/fesm2022/xxmachina-components-services-contract.mjs +3 -3
  72. package/fesm2022/xxmachina-components-services-contract.mjs.map +1 -1
  73. package/fesm2022/xxmachina-components-services-debug.mjs +4 -4
  74. package/fesm2022/xxmachina-components-services-debug.mjs.map +1 -1
  75. package/fesm2022/xxmachina-components-services-forms-query.mjs +3 -3
  76. package/fesm2022/xxmachina-components-services-forms-query.mjs.map +1 -1
  77. package/fesm2022/xxmachina-components-services-forms-schedule.mjs +3 -3
  78. package/fesm2022/xxmachina-components-services-forms-schedule.mjs.map +1 -1
  79. package/fesm2022/xxmachina-components-services-forms-variables.mjs +3 -3
  80. package/fesm2022/xxmachina-components-services-forms-variables.mjs.map +1 -1
  81. package/fesm2022/xxmachina-components-services-graphql.mjs +3 -3
  82. package/fesm2022/xxmachina-components-services-graphql.mjs.map +1 -1
  83. package/fesm2022/xxmachina-components-services-invoice.mjs +3 -3
  84. package/fesm2022/xxmachina-components-services-invoice.mjs.map +1 -1
  85. package/fesm2022/xxmachina-components-services-json-schema.mjs +3 -3
  86. package/fesm2022/xxmachina-components-services-json-schema.mjs.map +1 -1
  87. package/fesm2022/xxmachina-components-services-link.mjs +3 -3
  88. package/fesm2022/xxmachina-components-services-link.mjs.map +1 -1
  89. package/fesm2022/xxmachina-components-services-message.mjs +5 -5
  90. package/fesm2022/xxmachina-components-services-message.mjs.map +1 -1
  91. package/fesm2022/xxmachina-components-services-openai.mjs +9 -9
  92. package/fesm2022/xxmachina-components-services-openai.mjs.map +1 -1
  93. package/fesm2022/xxmachina-components-services-openapi.mjs +3 -3
  94. package/fesm2022/xxmachina-components-services-openapi.mjs.map +1 -1
  95. package/fesm2022/xxmachina-components-services-order.mjs +3 -3
  96. package/fesm2022/xxmachina-components-services-order.mjs.map +1 -1
  97. package/fesm2022/xxmachina-components-services-partner.mjs +3 -3
  98. package/fesm2022/xxmachina-components-services-partner.mjs.map +1 -1
  99. package/fesm2022/xxmachina-components-services-query.mjs +3 -3
  100. package/fesm2022/xxmachina-components-services-query.mjs.map +1 -1
  101. package/fesm2022/xxmachina-components-services-recording.mjs +7 -7
  102. package/fesm2022/xxmachina-components-services-recording.mjs.map +1 -1
  103. package/fesm2022/xxmachina-components-services-thread.mjs +3 -3
  104. package/fesm2022/xxmachina-components-services-thread.mjs.map +1 -1
  105. package/fesm2022/xxmachina-components-services-transformer.mjs +3 -3
  106. package/fesm2022/xxmachina-components-services-transformer.mjs.map +1 -1
  107. package/fesm2022/xxmachina-components-services-youtube.mjs +3 -3
  108. package/fesm2022/xxmachina-components-services-youtube.mjs.map +1 -1
  109. package/fesm2022/xxmachina-components-templates-agent.mjs +19 -21
  110. package/fesm2022/xxmachina-components-templates-agent.mjs.map +1 -1
  111. package/fesm2022/xxmachina-components-templates-background.mjs +9 -9
  112. package/fesm2022/xxmachina-components-templates-background.mjs.map +1 -1
  113. package/fesm2022/xxmachina-components-templates-flow-nodes-group.mjs +5 -5
  114. package/fesm2022/xxmachina-components-templates-flow-nodes-group.mjs.map +1 -1
  115. package/fesm2022/xxmachina-components-templates-flow-nodes-issue.mjs +6 -6
  116. package/fesm2022/xxmachina-components-templates-flow-nodes-issue.mjs.map +1 -1
  117. package/fesm2022/xxmachina-components-templates-flow-nodes-task.mjs +5 -6
  118. package/fesm2022/xxmachina-components-templates-flow-nodes-task.mjs.map +1 -1
  119. package/fesm2022/xxmachina-components-templates-flow.mjs +30 -27
  120. package/fesm2022/xxmachina-components-templates-flow.mjs.map +1 -1
  121. package/fesm2022/xxmachina-components-templates-invoice-iframe.mjs +5 -7
  122. package/fesm2022/xxmachina-components-templates-invoice-iframe.mjs.map +1 -1
  123. package/fesm2022/xxmachina-components-templates-scheduler.mjs +3 -3
  124. package/fesm2022/xxmachina-components-templates-scheduler.mjs.map +1 -1
  125. package/fesm2022/xxmachina-components-templates-video.mjs +16 -16
  126. package/fesm2022/xxmachina-components-templates-video.mjs.map +1 -1
  127. package/fesm2022/xxmachina-components-validators-query.mjs.map +1 -1
  128. package/fesm2022/xxmachina-components.mjs +43 -25
  129. package/fesm2022/xxmachina-components.mjs.map +1 -1
  130. package/package.json +93 -93
  131. package/{extras/flow/index.d.ts → types/xxmachina-components-extras-flow.d.ts} +10 -2
  132. package/types/xxmachina-components-extras-flow.d.ts.map +1 -0
  133. package/{features/command/index.d.ts → types/xxmachina-components-features-command.d.ts} +1 -1
  134. package/types/xxmachina-components-features-command.d.ts.map +1 -0
  135. package/{features/query/index.d.ts → types/xxmachina-components-features-query.d.ts} +1 -1
  136. package/types/xxmachina-components-features-query.d.ts.map +1 -0
  137. package/{groups/command-form/index.d.ts → types/xxmachina-components-groups-command-form.d.ts} +1 -1
  138. package/types/xxmachina-components-groups-command-form.d.ts.map +1 -0
  139. package/{groups/query-form/index.d.ts → types/xxmachina-components-groups-query-form.d.ts} +1 -1
  140. package/types/xxmachina-components-groups-query-form.d.ts.map +1 -0
  141. package/{molecules/calendar-paginator/index.d.ts → types/xxmachina-components-molecules-calendar-paginator.d.ts} +1 -1
  142. package/types/xxmachina-components-molecules-calendar-paginator.d.ts.map +1 -0
  143. package/{molecules/daily-cell/index.d.ts → types/xxmachina-components-molecules-daily-cell.d.ts} +1 -1
  144. package/types/xxmachina-components-molecules-daily-cell.d.ts.map +1 -0
  145. package/{molecules/inline-edit-field/index.d.ts → types/xxmachina-components-molecules-inline-edit-field.d.ts} +1 -1
  146. package/types/xxmachina-components-molecules-inline-edit-field.d.ts.map +1 -0
  147. package/{molecules/weekly-header/index.d.ts → types/xxmachina-components-molecules-weekly-header.d.ts} +1 -1
  148. package/types/xxmachina-components-molecules-weekly-header.d.ts.map +1 -0
  149. package/{organisms/calendar-section/index.d.ts → types/xxmachina-components-organisms-calendar-section.d.ts} +1 -1
  150. package/types/xxmachina-components-organisms-calendar-section.d.ts.map +1 -0
  151. package/{organisms/event-input-section/index.d.ts → types/xxmachina-components-organisms-event-input-section.d.ts} +1 -1
  152. package/types/xxmachina-components-organisms-event-input-section.d.ts.map +1 -0
  153. package/{organisms/terminal-input-section/index.d.ts → types/xxmachina-components-organisms-terminal-input-section.d.ts} +2 -1
  154. package/types/xxmachina-components-organisms-terminal-input-section.d.ts.map +1 -0
  155. package/{organisms/video-trimmer-section/index.d.ts → types/xxmachina-components-organisms-video-trimmer-section.d.ts} +1 -1
  156. package/types/xxmachina-components-organisms-video-trimmer-section.d.ts.map +1 -0
  157. package/{organisms/xterm/index.d.ts → types/xxmachina-components-organisms-xterm.d.ts} +3 -1
  158. package/types/xxmachina-components-organisms-xterm.d.ts.map +1 -0
  159. package/{pages/command/harness/index.d.ts → types/xxmachina-components-pages-command-harness.d.ts} +1 -1
  160. package/types/xxmachina-components-pages-command-harness.d.ts.map +1 -0
  161. package/{pages/command/index.d.ts → types/xxmachina-components-pages-command.d.ts} +1 -1
  162. package/types/xxmachina-components-pages-command.d.ts.map +1 -0
  163. package/{pages/query-v2/index.d.ts → types/xxmachina-components-pages-query-v2.d.ts} +3 -3
  164. package/types/xxmachina-components-pages-query-v2.d.ts.map +1 -0
  165. package/{pages/query/index.d.ts → types/xxmachina-components-pages-query.d.ts} +3 -3
  166. package/types/xxmachina-components-pages-query.d.ts.map +1 -0
  167. package/{pages/thread/index.d.ts → types/xxmachina-components-pages-thread.d.ts} +1 -1
  168. package/types/xxmachina-components-pages-thread.d.ts.map +1 -0
  169. package/types/xxmachina-components-routes-commands.d.ts +6 -0
  170. package/types/xxmachina-components-routes-commands.d.ts.map +1 -0
  171. package/{routes/commands/index.d.ts → types/xxmachina-components-routes-pages.d.ts} +1 -1
  172. package/types/xxmachina-components-routes-pages.d.ts.map +1 -0
  173. package/{routes/preloading/index.d.ts → types/xxmachina-components-routes-preloading.d.ts} +1 -1
  174. package/types/xxmachina-components-routes-preloading.d.ts.map +1 -0
  175. package/{routes/pages/index.d.ts → types/xxmachina-components-routes-queries.d.ts} +1 -1
  176. package/types/xxmachina-components-routes-queries.d.ts.map +1 -0
  177. package/{routes/query/index.d.ts → types/xxmachina-components-routes-query.d.ts} +1 -1
  178. package/types/xxmachina-components-routes-query.d.ts.map +1 -0
  179. package/types/xxmachina-components-routes-resources.d.ts +6 -0
  180. package/types/xxmachina-components-routes-resources.d.ts.map +1 -0
  181. package/types/xxmachina-components-routes-side-chat.d.ts +6 -0
  182. package/types/xxmachina-components-routes-side-chat.d.ts.map +1 -0
  183. package/{routes/queries/index.d.ts → types/xxmachina-components-routes-side.d.ts} +1 -1
  184. package/types/xxmachina-components-routes-side.d.ts.map +1 -0
  185. package/types/xxmachina-components-routes-transformer.d.ts +6 -0
  186. package/types/xxmachina-components-routes-transformer.d.ts.map +1 -0
  187. package/types/xxmachina-components-routes-transformers.d.ts +6 -0
  188. package/types/xxmachina-components-routes-transformers.d.ts.map +1 -0
  189. package/{routes/index.d.ts → types/xxmachina-components-routes.d.ts} +1 -1
  190. package/types/xxmachina-components-routes.d.ts.map +1 -0
  191. package/{services/app/index.d.ts → types/xxmachina-components-services-app.d.ts} +1 -1
  192. package/types/xxmachina-components-services-app.d.ts.map +1 -0
  193. package/{services/assistant/index.d.ts → types/xxmachina-components-services-assistant.d.ts} +1 -1
  194. package/types/xxmachina-components-services-assistant.d.ts.map +1 -0
  195. package/{services/command/index.d.ts → types/xxmachina-components-services-command.d.ts} +1 -1
  196. package/types/xxmachina-components-services-command.d.ts.map +1 -0
  197. package/{services/context/index.d.ts → types/xxmachina-components-services-context.d.ts} +1 -1
  198. package/types/xxmachina-components-services-context.d.ts.map +1 -0
  199. package/{services/contract/index.d.ts → types/xxmachina-components-services-contract.d.ts} +1 -1
  200. package/types/xxmachina-components-services-contract.d.ts.map +1 -0
  201. package/{services/debug/index.d.ts → types/xxmachina-components-services-debug.d.ts} +1 -1
  202. package/types/xxmachina-components-services-debug.d.ts.map +1 -0
  203. package/{services/forms/query/index.d.ts → types/xxmachina-components-services-forms-query.d.ts} +1 -1
  204. package/types/xxmachina-components-services-forms-query.d.ts.map +1 -0
  205. package/{services/forms/schedule/index.d.ts → types/xxmachina-components-services-forms-schedule.d.ts} +1 -1
  206. package/types/xxmachina-components-services-forms-schedule.d.ts.map +1 -0
  207. package/{services/forms/variables/index.d.ts → types/xxmachina-components-services-forms-variables.d.ts} +1 -1
  208. package/types/xxmachina-components-services-forms-variables.d.ts.map +1 -0
  209. package/{services/graphql/index.d.ts → types/xxmachina-components-services-graphql.d.ts} +1 -1
  210. package/types/xxmachina-components-services-graphql.d.ts.map +1 -0
  211. package/{services/invoice/index.d.ts → types/xxmachina-components-services-invoice.d.ts} +1 -1
  212. package/types/xxmachina-components-services-invoice.d.ts.map +1 -0
  213. package/{services/json-schema/index.d.ts → types/xxmachina-components-services-json-schema.d.ts} +1 -1
  214. package/types/xxmachina-components-services-json-schema.d.ts.map +1 -0
  215. package/{services/link/index.d.ts → types/xxmachina-components-services-link.d.ts} +1 -1
  216. package/types/xxmachina-components-services-link.d.ts.map +1 -0
  217. package/{services/message/index.d.ts → types/xxmachina-components-services-message.d.ts} +1 -1
  218. package/types/xxmachina-components-services-message.d.ts.map +1 -0
  219. package/{services/openai/index.d.ts → types/xxmachina-components-services-openai.d.ts} +1 -1
  220. package/types/xxmachina-components-services-openai.d.ts.map +1 -0
  221. package/{services/openapi/index.d.ts → types/xxmachina-components-services-openapi.d.ts} +1 -1
  222. package/types/xxmachina-components-services-openapi.d.ts.map +1 -0
  223. package/{services/order/index.d.ts → types/xxmachina-components-services-order.d.ts} +1 -1
  224. package/types/xxmachina-components-services-order.d.ts.map +1 -0
  225. package/{services/partner/index.d.ts → types/xxmachina-components-services-partner.d.ts} +1 -1
  226. package/types/xxmachina-components-services-partner.d.ts.map +1 -0
  227. package/{services/query/index.d.ts → types/xxmachina-components-services-query.d.ts} +1 -1
  228. package/types/xxmachina-components-services-query.d.ts.map +1 -0
  229. package/{services/recording/index.d.ts → types/xxmachina-components-services-recording.d.ts} +1 -1
  230. package/types/xxmachina-components-services-recording.d.ts.map +1 -0
  231. package/{services/thread/index.d.ts → types/xxmachina-components-services-thread.d.ts} +1 -1
  232. package/types/xxmachina-components-services-thread.d.ts.map +1 -0
  233. package/{services/transformer/index.d.ts → types/xxmachina-components-services-transformer.d.ts} +1 -1
  234. package/types/xxmachina-components-services-transformer.d.ts.map +1 -0
  235. package/{services/youtube/index.d.ts → types/xxmachina-components-services-youtube.d.ts} +1 -1
  236. package/types/xxmachina-components-services-youtube.d.ts.map +1 -0
  237. package/{templates/agent/index.d.ts → types/xxmachina-components-templates-agent.d.ts} +1 -1
  238. package/types/xxmachina-components-templates-agent.d.ts.map +1 -0
  239. package/{templates/background/index.d.ts → types/xxmachina-components-templates-background.d.ts} +1 -1
  240. package/types/xxmachina-components-templates-background.d.ts.map +1 -0
  241. package/{templates/flow/nodes/group/index.d.ts → types/xxmachina-components-templates-flow-nodes-group.d.ts} +1 -1
  242. package/types/xxmachina-components-templates-flow-nodes-group.d.ts.map +1 -0
  243. package/{templates/flow/nodes/issue/index.d.ts → types/xxmachina-components-templates-flow-nodes-issue.d.ts} +1 -1
  244. package/types/xxmachina-components-templates-flow-nodes-issue.d.ts.map +1 -0
  245. package/{templates/flow/nodes/task/index.d.ts → types/xxmachina-components-templates-flow-nodes-task.d.ts} +1 -1
  246. package/types/xxmachina-components-templates-flow-nodes-task.d.ts.map +1 -0
  247. package/{templates/flow/index.d.ts → types/xxmachina-components-templates-flow.d.ts} +7 -2
  248. package/types/xxmachina-components-templates-flow.d.ts.map +1 -0
  249. package/{templates/invoice-iframe/index.d.ts → types/xxmachina-components-templates-invoice-iframe.d.ts} +1 -1
  250. package/types/xxmachina-components-templates-invoice-iframe.d.ts.map +1 -0
  251. package/{templates/scheduler/index.d.ts → types/xxmachina-components-templates-scheduler.d.ts} +1 -1
  252. package/types/xxmachina-components-templates-scheduler.d.ts.map +1 -0
  253. package/{templates/video/index.d.ts → types/xxmachina-components-templates-video.d.ts} +1 -1
  254. package/types/xxmachina-components-templates-video.d.ts.map +1 -0
  255. package/{validators/query/index.d.ts → types/xxmachina-components-validators-query.d.ts} +1 -1
  256. package/types/xxmachina-components-validators-query.d.ts.map +1 -0
  257. package/{index.d.ts → types/xxmachina-components.d.ts} +1 -1
  258. package/types/xxmachina-components.d.ts.map +1 -0
  259. package/extras/flow/index.d.ts.map +0 -1
  260. package/features/command/index.d.ts.map +0 -1
  261. package/features/query/index.d.ts.map +0 -1
  262. package/fesm2022/xxmachina-components-routes-resources-pages.routes-CzjQOxwT.mjs.map +0 -1
  263. package/fesm2022/xxmachina-components-routes-resources-resource.routes-C5KpB3KM.mjs.map +0 -1
  264. package/groups/command-form/index.d.ts.map +0 -1
  265. package/groups/query-form/index.d.ts.map +0 -1
  266. package/index.d.ts.map +0 -1
  267. package/molecules/calendar-paginator/index.d.ts.map +0 -1
  268. package/molecules/daily-cell/index.d.ts.map +0 -1
  269. package/molecules/inline-edit-field/index.d.ts.map +0 -1
  270. package/molecules/weekly-header/index.d.ts.map +0 -1
  271. package/organisms/calendar-section/index.d.ts.map +0 -1
  272. package/organisms/event-input-section/index.d.ts.map +0 -1
  273. package/organisms/terminal-input-section/index.d.ts.map +0 -1
  274. package/organisms/video-trimmer-section/index.d.ts.map +0 -1
  275. package/organisms/xterm/index.d.ts.map +0 -1
  276. package/pages/command/harness/index.d.ts.map +0 -1
  277. package/pages/command/index.d.ts.map +0 -1
  278. package/pages/query/index.d.ts.map +0 -1
  279. package/pages/query-v2/index.d.ts.map +0 -1
  280. package/pages/thread/index.d.ts.map +0 -1
  281. package/routes/commands/index.d.ts.map +0 -1
  282. package/routes/index.d.ts.map +0 -1
  283. package/routes/pages/index.d.ts.map +0 -1
  284. package/routes/preloading/index.d.ts.map +0 -1
  285. package/routes/queries/index.d.ts.map +0 -1
  286. package/routes/query/index.d.ts.map +0 -1
  287. package/routes/resources/index.d.ts +0 -6
  288. package/routes/resources/index.d.ts.map +0 -1
  289. package/routes/side/chat/index.d.ts +0 -6
  290. package/routes/side/chat/index.d.ts.map +0 -1
  291. package/routes/side/index.d.ts +0 -6
  292. package/routes/side/index.d.ts.map +0 -1
  293. package/routes/transformer/index.d.ts +0 -6
  294. package/routes/transformer/index.d.ts.map +0 -1
  295. package/routes/transformers/index.d.ts +0 -6
  296. package/routes/transformers/index.d.ts.map +0 -1
  297. package/services/app/index.d.ts.map +0 -1
  298. package/services/assistant/index.d.ts.map +0 -1
  299. package/services/command/index.d.ts.map +0 -1
  300. package/services/context/index.d.ts.map +0 -1
  301. package/services/contract/index.d.ts.map +0 -1
  302. package/services/debug/index.d.ts.map +0 -1
  303. package/services/forms/query/index.d.ts.map +0 -1
  304. package/services/forms/schedule/index.d.ts.map +0 -1
  305. package/services/forms/variables/index.d.ts.map +0 -1
  306. package/services/graphql/index.d.ts.map +0 -1
  307. package/services/invoice/index.d.ts.map +0 -1
  308. package/services/json-schema/index.d.ts.map +0 -1
  309. package/services/link/index.d.ts.map +0 -1
  310. package/services/message/index.d.ts.map +0 -1
  311. package/services/openai/index.d.ts.map +0 -1
  312. package/services/openapi/index.d.ts.map +0 -1
  313. package/services/order/index.d.ts.map +0 -1
  314. package/services/partner/index.d.ts.map +0 -1
  315. package/services/query/index.d.ts.map +0 -1
  316. package/services/recording/index.d.ts.map +0 -1
  317. package/services/thread/index.d.ts.map +0 -1
  318. package/services/transformer/index.d.ts.map +0 -1
  319. package/services/youtube/index.d.ts.map +0 -1
  320. package/templates/agent/index.d.ts.map +0 -1
  321. package/templates/background/index.d.ts.map +0 -1
  322. package/templates/flow/index.d.ts.map +0 -1
  323. package/templates/flow/nodes/group/index.d.ts.map +0 -1
  324. package/templates/flow/nodes/issue/index.d.ts.map +0 -1
  325. package/templates/flow/nodes/task/index.d.ts.map +0 -1
  326. package/templates/invoice-iframe/index.d.ts.map +0 -1
  327. package/templates/scheduler/index.d.ts.map +0 -1
  328. package/templates/video/index.d.ts.map +0 -1
  329. package/validators/query/index.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"xxmachina-components-organisms-xterm.mjs","sources":["../tmp-esm2022/organisms/xterm/web-link.provider.js","../tmp-esm2022/organisms/xterm/web-links.addon.js","../tmp-esm2022/organisms/xterm/github-link.provider.js","../tmp-esm2022/organisms/xterm/github-links.addon.js","../tmp-esm2022/organisms/xterm/file-link.provider.js","../tmp-esm2022/organisms/xterm/file-links.addon.js","../tmp-esm2022/organisms/xterm/xterm.organism.store.js","../tmp-esm2022/organisms/xterm/xterm.organism.js","../tmp-esm2022/organisms/xterm/image.utils.js","../tmp-esm2022/organisms/xterm/xxmachina-components-organisms-xterm.js"],"sourcesContent":["const URL_REGEX = /https?:\\/\\/[^\\s<>'\")\\]]+/g;\nconst MAX_SCAN_LINES = 30;\n/**\n * Link provider that detects URLs spanning multiple terminal lines.\n *\n * Handles two wrapping scenarios:\n * 1. Terminal wrapping (isWrapped=true) - xterm splits long output\n * 2. Application wrapping (isWrapped=false) - e.g. Claude Code/Ink explicitly\n * breaks lines at some width. Detected by heuristic: previous line ends\n * without whitespace and current line starts without whitespace.\n */\nexport class WebLinkProvider {\n _terminal;\n _handler;\n constructor(_terminal, _handler = (_, uri) => {\n window.open(uri, '_blank', 'noopener');\n }) {\n this._terminal = _terminal;\n this._handler = _handler;\n }\n provideLinks(bufferLineNumber, callback) {\n const buffer = this._terminal.buffer.active;\n // Find the start of this line group (0-indexed)\n let startY = bufferLineNumber - 1;\n while (startY > 0\n && (bufferLineNumber - 1 - startY) < MAX_SCAN_LINES\n && this._isLineContinuation(startY)) {\n startY--;\n }\n // Collect text from all lines in the group\n const lineTexts = [];\n let y = startY;\n do {\n const line = buffer.getLine(y);\n if (!line)\n break;\n lineTexts.push(line.translateToString(true));\n y++;\n } while (y < buffer.length\n && (y - startY) < MAX_SCAN_LINES\n && this._isLineContinuation(y));\n const fullText = lineTexts.join('');\n URL_REGEX.lastIndex = 0;\n let match;\n const links = [];\n while ((match = URL_REGEX.exec(fullText)) !== null) {\n const startPos = this._offsetToPos(match.index, startY, lineTexts);\n const endPos = this._offsetToPos(match.index + match[0].length - 1, startY, lineTexts);\n if (!startPos || !endPos)\n continue;\n links.push({\n text: match[0],\n range: {\n start: { x: startPos.x + 1, y: startPos.y + 1 },\n end: { x: endPos.x + 1, y: endPos.y + 1 },\n },\n activate: (event, text) => this._handler(event, text),\n });\n }\n callback(links.length > 0 ? links : undefined);\n }\n /**\n * Determine if a line is a continuation of the previous line.\n * True when either:\n * - xterm marks it as wrapped (isWrapped=true), OR\n * - no whitespace at line boundary (previous line ends without space,\n * current line starts without space) suggesting mid-token line break\n */\n _isLineContinuation(lineIdx) {\n const buffer = this._terminal.buffer.active;\n const line = buffer.getLine(lineIdx);\n if (!line)\n return false;\n if (line.isWrapped)\n return true;\n if (lineIdx === 0)\n return false;\n const prevLine = buffer.getLine(lineIdx - 1);\n if (!prevLine)\n return false;\n const prevText = prevLine.translateToString(true);\n const currentText = line.translateToString(true);\n return (prevText.length > 0\n && !/\\s$/.test(prevText)\n && currentText.length > 0\n && !/^\\s/.test(currentText));\n }\n /** Convert a character offset in the concatenated text to a buffer position. */\n _offsetToPos(offset, startY, lineTexts) {\n let remaining = offset;\n for (let i = 0; i < lineTexts.length; i++) {\n if (remaining < lineTexts[i].length) {\n return { x: remaining, y: startY + i };\n }\n remaining -= lineTexts[i].length;\n }\n const lastIdx = lineTexts.length - 1;\n return { x: lineTexts[lastIdx].length, y: startY + lastIdx };\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLWxpbmsucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AeHhtYWNoaW5hL2NvbXBvbmVudHMvc3JjL2xpYi9vcmdhbmlzbXMveHRlcm0vd2ViLWxpbmsucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxTQUFTLEdBQUcsMkJBQTJCLENBQUM7QUFDOUMsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDO0FBRTFCOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxPQUFPLGVBQWU7SUFFUDtJQUNBO0lBRm5CLFlBQ21CLFNBQW1CLEVBQ25CLFdBQXFELENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQy9FLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN6QyxDQUFDO1FBSGdCLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDbkIsYUFBUSxHQUFSLFFBQVEsQ0FFeEI7SUFDQSxDQUFDO0lBRUosWUFBWSxDQUFDLGdCQUF3QixFQUFFLFFBQThDO1FBQ25GLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUU1QyxnREFBZ0Q7UUFDaEQsSUFBSSxNQUFNLEdBQUcsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sTUFBTSxHQUFHLENBQUM7ZUFDWixDQUFDLGdCQUFnQixHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxjQUFjO2VBQ2hELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsRUFDbkMsQ0FBQztZQUNELE1BQU0sRUFBRSxDQUFDO1FBQ1gsQ0FBQztRQUVELDJDQUEyQztRQUMzQyxNQUFNLFNBQVMsR0FBYSxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBQ2YsR0FBRyxDQUFDO1lBQ0Ys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UUFDakQsT0FBTyxDQUNMLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQztlQUNoQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO2VBQ3JCLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQztlQUN0QixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQzVCLENBQUM7SUFDSixDQUFDO0lBRUQsZ0ZBQWdGO0lBQ3hFLFlBQVksQ0FDbEIsTUFBYyxFQUFFLE1BQWMsRUFBRSxTQUFtQjtRQUVuRCxJQUFJLFNBQVMsR0FBRyxNQUFNLENBQUM7UUFDdkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUMxQyxJQUFJLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3BDLE9BQU8sRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDekMsQ0FBQztZQUNELFNBQVMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ25DLENBQUM7UUFDRCxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNyQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sR0FBRyxPQUFPLEVBQUUsQ0FBQztJQUMvRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJTGlua1Byb3ZpZGVyLCBJTGluaywgVGVybWluYWwgfSBmcm9tICdAeHRlcm0veHRlcm0nO1xuXG5jb25zdCBVUkxfUkVHRVggPSAvaHR0cHM/OlxcL1xcL1teXFxzPD4nXCIpXFxdXSsvZztcbmNvbnN0IE1BWF9TQ0FOX0xJTkVTID0gMzA7XG5cbi8qKlxuICogTGluayBwcm92aWRlciB0aGF0IGRldGVjdHMgVVJMcyBzcGFubmluZyBtdWx0aXBsZSB0ZXJtaW5hbCBsaW5lcy5cbiAqXG4gKiBIYW5kbGVzIHR3byB3cmFwcGluZyBzY2VuYXJpb3M6XG4gKiAxLiBUZXJtaW5hbCB3cmFwcGluZyAoaXNXcmFwcGVkPXRydWUpIC0geHRlcm0gc3BsaXRzIGxvbmcgb3V0cHV0XG4gKiAyLiBBcHBsaWNhdGlvbiB3cmFwcGluZyAoaXNXcmFwcGVkPWZhbHNlKSAtIGUuZy4gQ2xhdWRlIENvZGUvSW5rIGV4cGxpY2l0bHlcbiAqICAgIGJyZWFrcyBsaW5lcyBhdCBzb21lIHdpZHRoLiBEZXRlY3RlZCBieSBoZXVyaXN0aWM6IHByZXZpb3VzIGxpbmUgZW5kc1xuICogICAgd2l0aG91dCB3aGl0ZXNwYWNlIGFuZCBjdXJyZW50IGxpbmUgc3RhcnRzIHdpdGhvdXQgd2hpdGVzcGFjZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFdlYkxpbmtQcm92aWRlciBpbXBsZW1lbnRzIElMaW5rUHJvdmlkZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF90ZXJtaW5hbDogVGVybWluYWwsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfaGFuZGxlcjogKGV2ZW50OiBNb3VzZUV2ZW50LCB1cmk6IHN0cmluZykgPT4gdm9pZCA9IChfLCB1cmkpID0+IHtcbiAgICAgIHdpbmRvdy5vcGVuKHVyaSwgJ19ibGFuaycsICdub29wZW5lcicpO1xuICAgIH1cbiAgKSB7fVxuXG4gIHByb3ZpZGVMaW5rcyhidWZmZXJMaW5lTnVtYmVyOiBudW1iZXIsIGNhbGxiYWNrOiAobGlua3M6IElMaW5rW10gfCB1bmRlZmluZWQpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBjb25zdCBidWZmZXIgPSB0aGlzLl90ZXJtaW5hbC5idWZmZXIuYWN0aXZlO1xuXG4gICAgLy8gRmluZCB0aGUgc3RhcnQgb2YgdGhpcyBsaW5lIGdyb3VwICgwLWluZGV4ZWQpXG4gICAgbGV0IHN0YXJ0WSA9IGJ1ZmZlckxpbmVOdW1iZXIgLSAxO1xuICAgIHdoaWxlIChzdGFydFkgPiAwXG4gICAgICAmJiAoYnVmZmVyTGluZU51bWJlciAtIDEgLSBzdGFydFkpIDwgTUFYX1NDQU5fTElORVNcbiAgICAgICYmIHRoaXMuX2lzTGluZUNvbnRpbnVhdGlvbihzdGFydFkpXG4gICAgKSB7XG4gICAgICBzdGFydFktLTtcbiAgICB9XG5cbiAgICAvLyBDb2xsZWN0IHRleHQgZnJvbSBhbGwgbGluZXMgaW4gdGhlIGdyb3VwXG4gICAgY29uc3QgbGluZVRleHRzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGxldCB5ID0gc3RhcnRZO1xuICAgIGRvIHtcbiAgICAgIGNvbnN0IGxpbmUgPSBidWZmZXIuZ2V0TGluZSh5KTtcbiAgICAgIGlmICghbGluZSkgYnJlYWs7XG4gICAgICBsaW5lVGV4dHMucHVzaChsaW5lLnRyYW5zbGF0ZVRvU3RyaW5nKHRydWUpKTtcbiAgICAgIHkrKztcbiAgICB9IHdoaWxlIChcbiAgICAgIHkgPCBidWZmZXIubGVuZ3RoXG4gICAgICAmJiAoeSAtIHN0YXJ0WSkgPCBNQVhfU0NBTl9MSU5FU1xuICAgICAgJiYgdGhpcy5faXNMaW5lQ29udGludWF0aW9uKHkpXG4gICAgKTtcblxuICAgIGNvbnN0IGZ1bGxUZXh0ID0gbGluZVRleHRzLmpvaW4oJycpO1xuXG4gICAgVVJMX1JFR0VYLmxhc3RJbmRleCA9IDA7XG4gICAgbGV0IG1hdGNoOiBSZWdFeHBFeGVjQXJyYXkgfCBudWxsO1xuICAgIGNvbnN0IGxpbmtzOiBJTGlua1tdID0gW107XG5cbiAgICB3aGlsZSAoKG1hdGNoID0gVVJMX1JFR0VYLmV4ZWMoZnVsbFRleHQpKSAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3RhcnRQb3MgPSB0aGlzLl9vZmZzZXRUb1BvcyhtYXRjaC5pbmRleCwgc3RhcnRZLCBsaW5lVGV4dHMpO1xuICAgICAgY29uc3QgZW5kUG9zID0gdGhpcy5fb2Zmc2V0VG9Qb3MobWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGggLSAxLCBzdGFydFksIGxpbmVUZXh0cyk7XG4gICAgICBpZiAoIXN0YXJ0UG9zIHx8ICFlbmRQb3MpIGNvbnRpbnVlO1xuXG4gICAgICBsaW5rcy5wdXNoKHtcbiAgICAgICAgdGV4dDogbWF0Y2hbMF0sXG4gICAgICAgIHJhbmdlOiB7XG4gICAgICAgICAgc3RhcnQ6IHsgeDogc3RhcnRQb3MueCArIDEsIHk6IHN0YXJ0UG9zLnkgKyAxIH0sXG4gICAgICAgICAgZW5kOiB7IHg6IGVuZFBvcy54ICsgMSwgeTogZW5kUG9zLnkgKyAxIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGFjdGl2YXRlOiAoZXZlbnQsIHRleHQpID0+IHRoaXMuX2hhbmRsZXIoZXZlbnQsIHRleHQpLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY2FsbGJhY2sobGlua3MubGVuZ3RoID4gMCA/IGxpbmtzIDogdW5kZWZpbmVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgaWYgYSBsaW5lIGlzIGEgY29udGludWF0aW9uIG9mIHRoZSBwcmV2aW91cyBsaW5lLlxuICAgKiBUcnVlIHdoZW4gZWl0aGVyOlxuICAgKiAtIHh0ZXJtIG1hcmtzIGl0IGFzIHdyYXBwZWQgKGlzV3JhcHBlZD10cnVlKSwgT1JcbiAgICogLSBubyB3aGl0ZXNwYWNlIGF0IGxpbmUgYm91bmRhcnkgKHByZXZpb3VzIGxpbmUgZW5kcyB3aXRob3V0IHNwYWNlLFxuICAgKiAgIGN1cnJlbnQgbGluZSBzdGFydHMgd2l0aG91dCBzcGFjZSkgc3VnZ2VzdGluZyBtaWQtdG9rZW4gbGluZSBicmVha1xuICAgKi9cbiAgcHJpdmF0ZSBfaXNMaW5lQ29udGludWF0aW9uKGxpbmVJZHg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGJ1ZmZlciA9IHRoaXMuX3Rlcm1pbmFsLmJ1ZmZlci5hY3RpdmU7XG4gICAgY29uc3QgbGluZSA9IGJ1ZmZlci5nZXRMaW5lKGxpbmVJZHgpO1xuICAgIGlmICghbGluZSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChsaW5lLmlzV3JhcHBlZCkgcmV0dXJuIHRydWU7XG5cbiAgICBpZiAobGluZUlkeCA9PT0gMCkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IHByZXZMaW5lID0gYnVmZmVyLmdldExpbmUobGluZUlkeCAtIDEpO1xuICAgIGlmICghcHJldkxpbmUpIHJldHVybiBmYWxzZTtcblxuICAgIGNvbnN0IHByZXZUZXh0ID0gcHJldkxpbmUudHJhbnNsYXRlVG9TdHJpbmcodHJ1ZSk7XG4gICAgY29uc3QgY3VycmVudFRleHQgPSBsaW5lLnRyYW5zbGF0ZVRvU3RyaW5nKHRydWUpO1xuICAgIHJldHVybiAoXG4gICAgICBwcmV2VGV4dC5sZW5ndGggPiAwXG4gICAgICAmJiAhL1xccyQvLnRlc3QocHJldlRleHQpXG4gICAgICAmJiBjdXJyZW50VGV4dC5sZW5ndGggPiAwXG4gICAgICAmJiAhL15cXHMvLnRlc3QoY3VycmVudFRleHQpXG4gICAgKTtcbiAgfVxuXG4gIC8qKiBDb252ZXJ0IGEgY2hhcmFjdGVyIG9mZnNldCBpbiB0aGUgY29uY2F0ZW5hdGVkIHRleHQgdG8gYSBidWZmZXIgcG9zaXRpb24uICovXG4gIHByaXZhdGUgX29mZnNldFRvUG9zKFxuICAgIG9mZnNldDogbnVtYmVyLCBzdGFydFk6IG51bWJlciwgbGluZVRleHRzOiBzdHJpbmdbXSxcbiAgKTogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9IHwgbnVsbCB7XG4gICAgbGV0IHJlbWFpbmluZyA9IG9mZnNldDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVUZXh0cy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHJlbWFpbmluZyA8IGxpbmVUZXh0c1tpXS5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHsgeDogcmVtYWluaW5nLCB5OiBzdGFydFkgKyBpIH07XG4gICAgICB9XG4gICAgICByZW1haW5pbmcgLT0gbGluZVRleHRzW2ldLmxlbmd0aDtcbiAgICB9XG4gICAgY29uc3QgbGFzdElkeCA9IGxpbmVUZXh0cy5sZW5ndGggLSAxO1xuICAgIHJldHVybiB7IHg6IGxpbmVUZXh0c1tsYXN0SWR4XS5sZW5ndGgsIHk6IHN0YXJ0WSArIGxhc3RJZHggfTtcbiAgfVxufVxuIl19","import { WebLinkProvider } from './web-link.provider';\n/**\n * Drop-in replacement for @xterm/addon-web-links that supports\n * URLs spanning wrapped terminal lines.\n */\nexport class WebLinksAddon {\n _handler;\n _linkProvider;\n constructor(_handler) {\n this._handler = _handler;\n }\n activate(terminal) {\n this._linkProvider = terminal.registerLinkProvider(new WebLinkProvider(terminal, this._handler));\n }\n dispose() {\n this._linkProvider?.dispose();\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLWxpbmtzLmFkZG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQHh4bWFjaGluYS9jb21wb25lbnRzL3NyYy9saWIvb3JnYW5pc21zL3h0ZXJtL3dlYi1saW5rcy5hZGRvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdEQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGFBQWE7SUFJTDtJQUhYLGFBQWEsQ0FBZTtJQUVwQyxZQUNtQixRQUFtRDtRQUFuRCxhQUFRLEdBQVIsUUFBUSxDQUEyQztJQUNuRSxDQUFDO0lBRUosUUFBUSxDQUFDLFFBQWtCO1FBQ3pCLElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDLG9CQUFvQixDQUNoRCxJQUFJLGVBQWUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUM3QyxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ2hDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlcm1pbmFsLCBJVGVybWluYWxBZGRvbiwgSURpc3Bvc2FibGUgfSBmcm9tICdAeHRlcm0veHRlcm0nO1xuaW1wb3J0IHsgV2ViTGlua1Byb3ZpZGVyIH0gZnJvbSAnLi93ZWItbGluay5wcm92aWRlcic7XG5cbi8qKlxuICogRHJvcC1pbiByZXBsYWNlbWVudCBmb3IgQHh0ZXJtL2FkZG9uLXdlYi1saW5rcyB0aGF0IHN1cHBvcnRzXG4gKiBVUkxzIHNwYW5uaW5nIHdyYXBwZWQgdGVybWluYWwgbGluZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBXZWJMaW5rc0FkZG9uIGltcGxlbWVudHMgSVRlcm1pbmFsQWRkb24ge1xuICBwcml2YXRlIF9saW5rUHJvdmlkZXI/OiBJRGlzcG9zYWJsZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9oYW5kbGVyPzogKGV2ZW50OiBNb3VzZUV2ZW50LCB1cmk6IHN0cmluZykgPT4gdm9pZFxuICApIHt9XG5cbiAgYWN0aXZhdGUodGVybWluYWw6IFRlcm1pbmFsKTogdm9pZCB7XG4gICAgdGhpcy5fbGlua1Byb3ZpZGVyID0gdGVybWluYWwucmVnaXN0ZXJMaW5rUHJvdmlkZXIoXG4gICAgICBuZXcgV2ViTGlua1Byb3ZpZGVyKHRlcm1pbmFsLCB0aGlzLl9oYW5kbGVyKVxuICAgICk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2xpbmtQcm92aWRlcj8uZGlzcG9zZSgpO1xuICB9XG59XG4iXX0=","export class GitHubLinkProvider {\n _terminal;\n _handler;\n // #番号 形式を検出(負の先読みで数字以外が続く場合にマッチ)\n GITHUB_ISSUE_REGEX = /(?:^|[\\s(])#(\\d+)(?!\\d)/g;\n constructor(_terminal, _handler) {\n this._terminal = _terminal;\n this._handler = _handler;\n }\n provideLinks(bufferLineNumber, callback) {\n const lineIndex = bufferLineNumber - 1;\n const line = this._terminal.buffer.active.getLine(lineIndex);\n if (!line) {\n callback(undefined);\n return;\n }\n const text = line.translateToString(true);\n const links = [];\n this.GITHUB_ISSUE_REGEX.lastIndex = 0;\n let match;\n while ((match = this.GITHUB_ISSUE_REGEX.exec(text)) !== null) {\n const issueNumber = parseInt(match[1], 10);\n const fullMatch = match[0];\n const issueRef = `#${match[1]}`;\n // マッチ開始位置を計算(プレフィックス文字を除く)\n const stringStartIndex = match.index + (fullMatch.length - issueRef.length);\n const [, startX] = this._mapStrIdx(lineIndex, 0, stringStartIndex);\n const [, endX] = this._mapStrIdx(lineIndex, startX, issueRef.length);\n if (startX === -1 || endX === -1)\n continue;\n links.push({\n text: issueRef,\n range: {\n start: { x: startX + 1, y: bufferLineNumber },\n end: { x: endX, y: bufferLineNumber }\n },\n activate: (event) => {\n this._handler(event, issueNumber);\n }\n });\n }\n callback(links.length > 0 ? links : undefined);\n }\n _mapStrIdx(lineIndex, rowIndex, stringIndex) {\n const buf = this._terminal.buffer.active;\n const cell = buf.getNullCell();\n let start = rowIndex;\n while (stringIndex) {\n const line = buf.getLine(lineIndex);\n if (!line)\n return [-1, -1];\n for (let i = start; i < line.length; ++i) {\n line.getCell(i, cell);\n const chars = cell.getChars();\n const width = cell.getWidth();\n if (width) {\n stringIndex -= chars.length || 1;\n }\n if (stringIndex < 0) {\n return [lineIndex, i];\n }\n }\n lineIndex++;\n start = 0;\n }\n return [lineIndex, start];\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0aHViLWxpbmsucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AeHhtYWNoaW5hL2NvbXBvbmVudHMvc3JjL2xpYi9vcmdhbmlzbXMveHRlcm0vZ2l0aHViLWxpbmsucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsTUFBTSxPQUFPLGtCQUFrQjtJQUtWO0lBQ0E7SUFMbkIsaUNBQWlDO0lBQ2hCLGtCQUFrQixHQUFHLDBCQUEwQixDQUFDO0lBRWpFLFlBQ21CLFNBQW1CLEVBQ25CLFFBQW1DO1FBRG5DLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDbkIsYUFBUSxHQUFSLFFBQVEsQ0FBMkI7SUFDbkQsQ0FBQztJQUVKLFlBQVksQ0FBQyxnQkFBd0IsRUFBRSxRQUE4QztRQUNuRixNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFDdkMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDcEIsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsTUFBTSxLQUFLLEdBQVksRUFBRSxDQUFDO1FBRTFCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBRXRDLElBQUksS0FBNkIsQ0FBQztRQUNsQyxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUM3RCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsS0FBSyxD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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElMaW5rUHJvdmlkZXIsIElMaW5rLCBUZXJtaW5hbCB9IGZyb20gJ0B4dGVybS94dGVybSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2l0SHViTGlua0FjdGl2YXRlSGFuZGxlciB7XG4gIChldmVudDogTW91c2VFdmVudCwgaXNzdWVOdW1iZXI6IG51bWJlcik6IHZvaWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBHaXRIdWJMaW5rUHJvdmlkZXIgaW1wbGVtZW50cyBJTGlua1Byb3ZpZGVyIHtcbiAgLy8gI+eVquWPtyDlvaLlvI/jgpLmpJzlh7rvvIjosqDjga7lhYjoqq3jgb/jgafmlbDlrZfku6XlpJbjgYzntprjgY/loLTlkIjjgavjg57jg4Pjg4HvvIlcbiAgcHJpdmF0ZSByZWFkb25seSBHSVRIVUJfSVNTVUVfUkVHRVggPSAvKD86XnxbXFxzKF0pIyhcXGQrKSg/IVxcZCkvZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF90ZXJtaW5hbDogVGVybWluYWwsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfaGFuZGxlcjogR2l0SHViTGlua0FjdGl2YXRlSGFuZGxlclxuICApIHt9XG5cbiAgcHJvdmlkZUxpbmtzKGJ1ZmZlckxpbmVOdW1iZXI6IG51bWJlciwgY2FsbGJhY2s6IChsaW5rczogSUxpbmtbXSB8IHVuZGVmaW5lZCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIGNvbnN0IGxpbmVJbmRleCA9IGJ1ZmZlckxpbmVOdW1iZXIgLSAxO1xuICAgIGNvbnN0IGxpbmUgPSB0aGlzLl90ZXJtaW5hbC5idWZmZXIuYWN0aXZlLmdldExpbmUobGluZUluZGV4KTtcbiAgICBpZiAoIWxpbmUpIHtcbiAgICAgIGNhbGxiYWNrKHVuZGVmaW5lZCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdGV4dCA9IGxpbmUudHJhbnNsYXRlVG9TdHJpbmcodHJ1ZSk7XG4gICAgY29uc3QgbGlua3M6IElMaW5rW10gPSBbXTtcblxuICAgIHRoaXMuR0lUSFVCX0lTU1VFX1JFR0VYLmxhc3RJbmRleCA9IDA7XG5cbiAgICBsZXQgbWF0Y2g6IFJlZ0V4cEV4ZWNBcnJheSB8IG51bGw7XG4gICAgd2hpbGUgKChtYXRjaCA9IHRoaXMuR0lUSFVCX0lTU1VFX1JFR0VYLmV4ZWModGV4dCkpICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBpc3N1ZU51bWJlciA9IHBhcnNlSW50KG1hdGNoWzFdLCAxMCk7XG4gICAgICBjb25zdCBmdWxsTWF0Y2ggPSBtYXRjaFswXTtcbiAgICAgIGNvbnN0IGlzc3VlUmVmID0gYCMke21hdGNoWzFdfWA7XG5cbiAgICAgIC8vIOODnuODg+ODgemWi+Wni+S9jee9ruOCkuioiOeul++8iOODl+ODrOODleOCo+ODg+OCr+OCueaWh+Wtl+OCkumZpOOBj++8iVxuICAgICAgY29uc3Qgc3RyaW5nU3RhcnRJbmRleCA9IG1hdGNoLmluZGV4ICsgKGZ1bGxNYXRjaC5sZW5ndGggLSBpc3N1ZVJlZi5sZW5ndGgpO1xuXG4gICAgICBjb25zdCBbLCBzdGFydFhdID0gdGhpcy5fbWFwU3RySWR4KGxpbmVJbmRleCwgMCwgc3RyaW5nU3RhcnRJbmRleCk7XG4gICAgICBjb25zdCBbLCBlbmRYXSA9IHRoaXMuX21hcFN0cklkeChsaW5lSW5kZXgsIHN0YXJ0WCwgaXNzdWVSZWYubGVuZ3RoKTtcblxuICAgICAgaWYgKHN0YXJ0WCA9PT0gLTEgfHwgZW5kWCA9PT0gLTEpIGNvbnRpbnVlO1xuXG4gICAgICBsaW5rcy5wdXNoKHtcbiAgICAgICAgdGV4dDogaXNzdWVSZWYsXG4gICAgICAgIHJhbmdlOiB7XG4gICAgICAgICAgc3RhcnQ6IHsgeDogc3RhcnRYICsgMSwgeTogYnVmZmVyTGluZU51bWJlciB9LFxuICAgICAgICAgIGVuZDogeyB4OiBlbmRYLCB5OiBidWZmZXJMaW5lTnVtYmVyIH1cbiAgICAgICAgfSxcbiAgICAgICAgYWN0aXZhdGU6IChldmVudCkgPT4ge1xuICAgICAgICAgIHRoaXMuX2hhbmRsZXIoZXZlbnQsIGlzc3VlTnVtYmVyKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY2FsbGJhY2sobGlua3MubGVuZ3RoID4gMCA/IGxpbmtzIDogdW5kZWZpbmVkKTtcbiAgfVxuXG4gIHByaXZhdGUgX21hcFN0cklkeChsaW5lSW5kZXg6IG51bWJlciwgcm93SW5kZXg6IG51bWJlciwgc3RyaW5nSW5kZXg6IG51bWJlcik6IFtudW1iZXIsIG51bWJlcl0ge1xuICAgIGNvbnN0IGJ1ZiA9IHRoaXMuX3Rlcm1pbmFsLmJ1ZmZlci5hY3RpdmU7XG4gICAgY29uc3QgY2VsbCA9IGJ1Zi5nZXROdWxsQ2VsbCgpO1xuICAgIGxldCBzdGFydCA9IHJvd0luZGV4O1xuXG4gICAgd2hpbGUgKHN0cmluZ0luZGV4KSB7XG4gICAgICBjb25zdCBsaW5lID0gYnVmLmdldExpbmUobGluZUluZGV4KTtcbiAgICAgIGlmICghbGluZSkgcmV0dXJuIFstMSwgLTFdO1xuXG4gICAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCBsaW5lLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIGxpbmUuZ2V0Q2VsbChpLCBjZWxsKTtcbiAgICAgICAgY29uc3QgY2hhcnMgPSBjZWxsLmdldENoYXJzKCk7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gY2VsbC5nZXRXaWR0aCgpO1xuICAgICAgICBpZiAod2lkdGgpIHtcbiAgICAgICAgICBzdHJpbmdJbmRleCAtPSBjaGFycy5sZW5ndGggfHwgMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RyaW5nSW5kZXggPCAwKSB7XG4gICAgICAgICAgcmV0dXJuIFtsaW5lSW5kZXgsIGldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsaW5lSW5kZXgrKztcbiAgICAgIHN0YXJ0ID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIFtsaW5lSW5kZXgsIHN0YXJ0XTtcbiAgfVxufVxuIl19","import { GitHubLinkProvider } from './github-link.provider';\nexport class GitHubLinksAddon {\n _handler;\n _terminal;\n _linkProvider;\n constructor(_handler) {\n this._handler = _handler;\n }\n activate(terminal) {\n this._terminal = terminal;\n this._linkProvider = terminal.registerLinkProvider(new GitHubLinkProvider(terminal, this._handler));\n }\n dispose() {\n this._linkProvider?.dispose();\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0aHViLWxpbmtzLmFkZG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQHh4bWFjaGluYS9jb21wb25lbnRzL3NyYy9saWIvb3JnYW5pc21zL3h0ZXJtL2dpdGh1Yi1saW5rcy5hZGRvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsa0JBQWtCLEVBQTZCLE1BQU0sd0JBQXdCLENBQUM7QUFFdkYsTUFBTSxPQUFPLGdCQUFnQjtJQUtSO0lBSlgsU0FBUyxDQUFZO0lBQ3JCLGFBQWEsQ0FBZTtJQUVwQyxZQUNtQixRQUFtQztRQUFuQyxhQUFRLEdBQVIsUUFBUSxDQUEyQjtJQUNuRCxDQUFDO0lBRUosUUFBUSxDQUFDLFFBQWtCO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDLG9CQUFvQixDQUNoRCxJQUFJLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQ2hELENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDaEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVybWluYWwsIElUZXJtaW5hbEFkZG9uLCBJRGlzcG9zYWJsZSB9IGZyb20gJ0B4dGVybS94dGVybSc7XG5pbXBvcnQgeyBHaXRIdWJMaW5rUHJvdmlkZXIsIEdpdEh1YkxpbmtBY3RpdmF0ZUhhbmRsZXIgfSBmcm9tICcuL2dpdGh1Yi1saW5rLnByb3ZpZGVyJztcblxuZXhwb3J0IGNsYXNzIEdpdEh1YkxpbmtzQWRkb24gaW1wbGVtZW50cyBJVGVybWluYWxBZGRvbiB7XG4gIHByaXZhdGUgX3Rlcm1pbmFsPzogVGVybWluYWw7XG4gIHByaXZhdGUgX2xpbmtQcm92aWRlcj86IElEaXNwb3NhYmxlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2hhbmRsZXI6IEdpdEh1YkxpbmtBY3RpdmF0ZUhhbmRsZXJcbiAgKSB7fVxuXG4gIGFjdGl2YXRlKHRlcm1pbmFsOiBUZXJtaW5hbCk6IHZvaWQge1xuICAgIHRoaXMuX3Rlcm1pbmFsID0gdGVybWluYWw7XG4gICAgdGhpcy5fbGlua1Byb3ZpZGVyID0gdGVybWluYWwucmVnaXN0ZXJMaW5rUHJvdmlkZXIoXG4gICAgICBuZXcgR2l0SHViTGlua1Byb3ZpZGVyKHRlcm1pbmFsLCB0aGlzLl9oYW5kbGVyKVxuICAgICk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2xpbmtQcm92aWRlcj8uZGlzcG9zZSgpO1xuICB9XG59XG4iXX0=","export class FileLinkProvider {\n _terminal;\n _handler;\n // ファイルパスを検出する正規表現\n // - 絶対パス: /path/to/file.ts, /path/to/file.ts:10:5\n // - 相対パス: ./src/file.ts, ../lib/utils.ts:20\n // - 拡張子を持つファイル名\n FILE_PATH_REGEX = /(?:^|[\\s'\"`(])((\\.\\.?\\/|\\/)?[\\w.@-]+(?:\\/[\\w.@-]+)*\\.[a-zA-Z0-9]+(?::\\d+(?::\\d+)?)?)/g;\n constructor(_terminal, _handler) {\n this._terminal = _terminal;\n this._handler = _handler;\n }\n provideLinks(bufferLineNumber, callback) {\n // bufferLineNumber は 1-indexed、buffer.getLine() は 0-indexed を期待\n const lineIndex = bufferLineNumber - 1;\n const line = this._terminal.buffer.active.getLine(lineIndex);\n if (!line) {\n callback(undefined);\n return;\n }\n const text = line.translateToString(true);\n const links = [];\n // Reset regex lastIndex\n this.FILE_PATH_REGEX.lastIndex = 0;\n let match;\n while ((match = this.FILE_PATH_REGEX.exec(text)) !== null) {\n const filePath = match[1];\n if (this._isLikelyFilePath(filePath) && !this._isUrl(filePath)) {\n // 文字列インデックスから表示位置(セル位置)を計算\n const stringStartIndex = match.index + (match[0].length - match[1].length);\n // WebLinksAddon と同じ方式で位置をマッピング(0-indexed lineIndexを渡す)\n const [, startX] = this._mapStrIdx(lineIndex, 0, stringStartIndex);\n const [, endX] = this._mapStrIdx(lineIndex, startX, filePath.length);\n if (startX === -1 || endX === -1) {\n continue;\n }\n links.push({\n text: filePath,\n range: {\n // IBufferCellPosition は 1-indexed\n start: { x: startX + 1, y: bufferLineNumber },\n end: { x: endX, y: bufferLineNumber }\n },\n activate: (event, linkText) => {\n const parsed = this._parseFilePath(linkText);\n this._handler(event, parsed.path, parsed.line, parsed.column);\n }\n });\n }\n }\n callback(links.length > 0 ? links : undefined);\n }\n /**\n * Map a string index back to buffer positions.\n * Returns buffer position as [lineIndex, columnIndex] 0-based,\n * or [-1, -1] in case the lookup ran into a non-existing line.\n * (Based on xterm.js WebLinkProvider implementation)\n */\n _mapStrIdx(lineIndex, rowIndex, stringIndex) {\n const buf = this._terminal.buffer.active;\n const cell = buf.getNullCell();\n let start = rowIndex;\n while (stringIndex) {\n const line = buf.getLine(lineIndex);\n if (!line) {\n return [-1, -1];\n }\n for (let i = start; i < line.length; ++i) {\n line.getCell(i, cell);\n const chars = cell.getChars();\n const width = cell.getWidth();\n if (width) {\n stringIndex -= chars.length || 1;\n }\n if (stringIndex < 0) {\n return [lineIndex, i];\n }\n }\n lineIndex++;\n start = 0;\n }\n return [lineIndex, start];\n }\n _isLikelyFilePath(text) {\n // 拡張子を持つか確認\n return /\\.[a-zA-Z0-9]+(?::\\d+(?::\\d+)?)?$/.test(text);\n }\n _isUrl(text) {\n // URL形式を除外\n return /^https?:\\/\\//.test(text) || /^file:\\/\\//.test(text);\n }\n _parseFilePath(text) {\n const match = text.match(/^(.+?)(?::(\\d+)(?::(\\d+))?)?$/);\n if (match) {\n return {\n path: match[1],\n line: match[2] ? parseInt(match[2], 10) : undefined,\n column: match[3] ? parseInt(match[3], 10) : undefined\n };\n }\n return { path: text };\n }\n}\n// Export helper functions for testing\nexport const isLikelyFilePath = (text) => {\n return /\\.[a-zA-Z0-9]+(?::\\d+(?::\\d+)?)?$/.test(text) && !/^https?:\\/\\//.test(text);\n};\nexport const parseFilePath = (text) => {\n const match = text.match(/^(.+?)(?::(\\d+)(?::(\\d+))?)?$/);\n if (match) {\n return {\n path: match[1],\n line: match[2] ? parseInt(match[2], 10) : undefined,\n column: match[3] ? parseInt(match[3], 10) : undefined\n };\n }\n return { path: text };\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1saW5rLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQHh4bWFjaGluYS9jb21wb25lbnRzL3NyYy9saWIvb3JnYW5pc21zL3h0ZXJtL2ZpbGUtbGluay5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxNQUFNLE9BQU8sZ0JBQWdCO0lBUVI7SUFDQTtJQVJuQixrQkFBa0I7SUFDbEIsa0RBQWtEO0lBQ2xELDRDQUE0QztJQUM1QyxnQkFBZ0I7SUFDQyxlQUFlLEdBQUcsdUZBQXVGLENBQUM7SUFFM0gsWUFDbUIsU0FBbUIsRUFDbkIsUUFBaUM7UUFEakMsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNuQixhQUFRLEdBQVIsUUFBUSxDQUF5QjtJQUNqRCxDQUFDO0lBRUosWUFBWSxDQUFDLGdCQUF3QixFQUFFLFFBQThDO1FBQ25GLGdFQUFnRTtRQUNoRSxNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFDdkMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDcEIsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsTUFBTSxLQUFLLEdBQVksRUFBRSxDQUFDO1FBRTFCLHdCQUF3QjtRQUN4QixJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFFbkMsSUFBSSxLQUE2QixDQUFDO1FBQ2xDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUMxRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQy9ELDJCQUEyQjtnQkFDM0IsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBRTNFLHVEQUF1RDtnQkFDdkQsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLENBQUM7Z0JBQ25FLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBRXJFLElBQUksTUFBTSxLQUFLLENBQUMsQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNqQyxTQUFTO2dCQUNYLENBQUM7Z0JBRUQsS0FBSyxDQUFDLElBQUksQ0FBQztvQkFDVCxJQUFJLEVBQUUsUUFBUTtvQkFDZCxLQUFLLEVBQUU7d0JBQ0wsa0NBQWtDO3dCQUNsQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsZ0JBQWdCLEVBQUU7d0JBQzdDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLGdCQUFnQixFQUFFO3FCQUN0QztvQkFDRCxRQUFRLEVBQUUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUU7d0JBQzVCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7d0JBQzdDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ2hFLENBQUM7aUJBQ0YsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7UUFFRCxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssVUFBVSxDQUFDLFNBQWlCLEVBQUUsUUFBZ0IsRUFBRSxXQUFtQjtRQUN6RSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDekMsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQy9CLElBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQztRQUVyQixPQUFPLFdBQVcsRUFBRSxDQUFDO1lBQ25CLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNWLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xCLENBQUM7WUFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUN6QyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUM5QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQzlCLElBQUksS0FBSyxFQUFFLENBQUM7b0JBQ1YsV0FBVyxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO2dCQUNuQyxDQUFDO2dCQUNELElBQUksV0FBVyxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNwQixPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixDQUFDO1lBQ0gsQ0FBQztZQUNELFNBQVMsRUFBRSxDQUFDO1lBQ1osS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNaLENBQUM7UUFDRCxPQUFPLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxJQUFZO1FBQ3BDLFlBQVk7UUFDWixPQUFPLG1DQUFtQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU8sTUFBTSxDQUFDLElBQVk7UUFDekIsV0FBVztRQUNYLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFTyxjQUFjLENBQUMsSUFBWTtRQUNqQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDMUQsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ2QsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFDbkQsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUzthQUN0RCxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDeEIsQ0FBQztDQUNGO0FBRUQsc0NBQXNDO0FBQ3RDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsSUFBWSxFQUFXLEVBQUU7SUFDeEQsT0FBTyxtQ0FBbUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RGLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLElBQVksRUFBb0QsRUFBRTtJQUM5RixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7SUFDMUQsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNWLE9BQU87WUFDTCxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNkLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDbkQsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztTQUN0RCxDQUFDO0lBQ0osQ0FBQztJQUNELE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDeEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUxpbmtQcm92aWRlciwgSUxpbmssIFRlcm1pbmFsIH0gZnJvbSAnQHh0ZXJtL3h0ZXJtJztcblxuZXhwb3J0IGludGVyZmFjZSBGaWxlTGlua0FjdGl2YXRlSGFuZGxlciB7XG4gIChldmVudDogTW91c2VFdmVudCwgZmlsZVBhdGg6IHN0cmluZywgbGluZT86IG51bWJlciwgY29sdW1uPzogbnVtYmVyKTogdm9pZDtcbn1cblxuZXhwb3J0IGNsYXNzIEZpbGVMaW5rUHJvdmlkZXIgaW1wbGVtZW50cyBJTGlua1Byb3ZpZGVyIHtcbiAgLy8g44OV44Kh44Kk44Or44OR44K544KS5qSc5Ye644GZ44KL5q2j6KaP6KGo54++XG4gIC8vIC0g57W25a++44OR44K5OiAvcGF0aC90by9maWxlLnRzLCAvcGF0aC90by9maWxlLnRzOjEwOjVcbiAgLy8gLSDnm7jlr77jg5Hjgrk6IC4vc3JjL2ZpbGUudHMsIC4uL2xpYi91dGlscy50czoyMFxuICAvLyAtIOaLoeW8teWtkOOCkuaMgeOBpOODleOCoeOCpOODq+WQjVxuICBwcml2YXRlIHJlYWRvbmx5IEZJTEVfUEFUSF9SRUdFWCA9IC8oPzpefFtcXHMnXCJgKF0pKChcXC5cXC4/XFwvfFxcLyk/W1xcdy5ALV0rKD86XFwvW1xcdy5ALV0rKSpcXC5bYS16QS1aMC05XSsoPzo6XFxkKyg/OjpcXGQrKT8pPykvZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF90ZXJtaW5hbDogVGVybWluYWwsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfaGFuZGxlcjogRmlsZUxpbmtBY3RpdmF0ZUhhbmRsZXJcbiAgKSB7fVxuXG4gIHByb3ZpZGVMaW5rcyhidWZmZXJMaW5lTnVtYmVyOiBudW1iZXIsIGNhbGxiYWNrOiAobGlua3M6IElMaW5rW10gfCB1bmRlZmluZWQpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAvLyBidWZmZXJMaW5lTnVtYmVyIOOBryAxLWluZGV4ZWTjgIFidWZmZXIuZ2V0TGluZSgpIOOBryAwLWluZGV4ZWQg44KS5pyf5b6FXG4gICAgY29uc3QgbGluZUluZGV4ID0gYnVmZmVyTGluZU51bWJlciAtIDE7XG4gICAgY29uc3QgbGluZSA9IHRoaXMuX3Rlcm1pbmFsLmJ1ZmZlci5hY3RpdmUuZ2V0TGluZShsaW5lSW5kZXgpO1xuICAgIGlmICghbGluZSkge1xuICAgICAgY2FsbGJhY2sodW5kZWZpbmVkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0ZXh0ID0gbGluZS50cmFuc2xhdGVUb1N0cmluZyh0cnVlKTtcbiAgICBjb25zdCBsaW5rczogSUxpbmtbXSA9IFtdO1xuXG4gICAgLy8gUmVzZXQgcmVnZXggbGFzdEluZGV4XG4gICAgdGhpcy5GSUxFX1BBVEhfUkVHRVgubGFzdEluZGV4ID0gMDtcblxuICAgIGxldCBtYXRjaDogUmVnRXhwRXhlY0FycmF5IHwgbnVsbDtcbiAgICB3aGlsZSAoKG1hdGNoID0gdGhpcy5GSUxFX1BBVEhfUkVHRVguZXhlYyh0ZXh0KSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGZpbGVQYXRoID0gbWF0Y2hbMV07XG4gICAgICBpZiAodGhpcy5faXNMaWtlbHlGaWxlUGF0aChmaWxlUGF0aCkgJiYgIXRoaXMuX2lzVXJsKGZpbGVQYXRoKSkge1xuICAgICAgICAvLyDmloflrZfliJfjgqTjg7Pjg4fjg4Pjgq/jgrnjgYvjgonooajnpLrkvY3nva7vvIjjgrvjg6vkvY3nva7vvInjgpLoqIjnrpdcbiAgICAgICAgY29uc3Qgc3RyaW5nU3RhcnRJbmRleCA9IG1hdGNoLmluZGV4ICsgKG1hdGNoWzBdLmxlbmd0aCAtIG1hdGNoWzFdLmxlbmd0aCk7XG5cbiAgICAgICAgLy8gV2ViTGlua3NBZGRvbiDjgajlkIzjgZjmlrnlvI/jgafkvY3nva7jgpLjg57jg4Pjg5Tjg7PjgrDvvIgwLWluZGV4ZWQgbGluZUluZGV444KS5rih44GZ77yJXG4gICAgICAgIGNvbnN0IFssIHN0YXJ0WF0gPSB0aGlzLl9tYXBTdHJJZHgobGluZUluZGV4LCAwLCBzdHJpbmdTdGFydEluZGV4KTtcbiAgICAgICAgY29uc3QgWywgZW5kWF0gPSB0aGlzLl9tYXBTdHJJZHgobGluZUluZGV4LCBzdGFydFgsIGZpbGVQYXRoLmxlbmd0aCk7XG5cbiAgICAgICAgaWYgKHN0YXJ0WCA9PT0gLTEgfHwgZW5kWCA9PT0gLTEpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxpbmtzLnB1c2goe1xuICAgICAgICAgIHRleHQ6IGZpbGVQYXRoLFxuICAgICAgICAgIHJhbmdlOiB7XG4gICAgICAgICAgICAvLyBJQnVmZmVyQ2VsbFBvc2l0aW9uIOOBryAxLWluZGV4ZWRcbiAgICAgICAgICAgIHN0YXJ0OiB7IHg6IHN0YXJ0WCArIDEsIHk6IGJ1ZmZlckxpbmVOdW1iZXIgfSxcbiAgICAgICAgICAgIGVuZDogeyB4OiBlbmRYLCB5OiBidWZmZXJMaW5lTnVtYmVyIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGFjdGl2YXRlOiAoZXZlbnQsIGxpbmtUZXh0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZWQgPSB0aGlzLl9wYXJzZUZpbGVQYXRoKGxpbmtUZXh0KTtcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZXIoZXZlbnQsIHBhcnNlZC5wYXRoLCBwYXJzZWQubGluZSwgcGFyc2VkLmNvbHVtbik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjYWxsYmFjayhsaW5rcy5sZW5ndGggPiAwID8gbGlua3MgOiB1bmRlZmluZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hcCBhIHN0cmluZyBpbmRleCBiYWNrIHRvIGJ1ZmZlciBwb3NpdGlvbnMuXG4gICAqIFJldHVybnMgYnVmZmVyIHBvc2l0aW9uIGFzIFtsaW5lSW5kZXgsIGNvbHVtbkluZGV4XSAwLWJhc2VkLFxuICAgKiBvciBbLTEsIC0xXSBpbiBjYXNlIHRoZSBsb29rdXAgcmFuIGludG8gYSBub24tZXhpc3RpbmcgbGluZS5cbiAgICogKEJhc2VkIG9uIHh0ZXJtLmpzIFdlYkxpbmtQcm92aWRlciBpbXBsZW1lbnRhdGlvbilcbiAgICovXG4gIHByaXZhdGUgX21hcFN0cklkeChsaW5lSW5kZXg6IG51bWJlciwgcm93SW5kZXg6IG51bWJlciwgc3RyaW5nSW5kZXg6IG51bWJlcik6IFtudW1iZXIsIG51bWJlcl0ge1xuICAgIGNvbnN0IGJ1ZiA9IHRoaXMuX3Rlcm1pbmFsLmJ1ZmZlci5hY3RpdmU7XG4gICAgY29uc3QgY2VsbCA9IGJ1Zi5nZXROdWxsQ2VsbCgpO1xuICAgIGxldCBzdGFydCA9IHJvd0luZGV4O1xuXG4gICAgd2hpbGUgKHN0cmluZ0luZGV4KSB7XG4gICAgICBjb25zdCBsaW5lID0gYnVmLmdldExpbmUobGluZUluZGV4KTtcbiAgICAgIGlmICghbGluZSkge1xuICAgICAgICByZXR1cm4gWy0xLCAtMV07XG4gICAgICB9XG4gICAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCBsaW5lLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIGxpbmUuZ2V0Q2VsbChpLCBjZWxsKTtcbiAgICAgICAgY29uc3QgY2hhcnMgPSBjZWxsLmdldENoYXJzKCk7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gY2VsbC5nZXRXaWR0aCgpO1xuICAgICAgICBpZiAod2lkdGgpIHtcbiAgICAgICAgICBzdHJpbmdJbmRleCAtPSBjaGFycy5sZW5ndGggfHwgMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RyaW5nSW5kZXggPCAwKSB7XG4gICAgICAgICAgcmV0dXJuIFtsaW5lSW5kZXgsIGldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsaW5lSW5kZXgrKztcbiAgICAgIHN0YXJ0ID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIFtsaW5lSW5kZXgsIHN0YXJ0XTtcbiAgfVxuXG4gIHByaXZhdGUgX2lzTGlrZWx5RmlsZVBhdGgodGV4dDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgLy8g5ouh5by15a2Q44KS5oyB44Gk44GL56K66KqNXG4gICAgcmV0dXJuIC9cXC5bYS16QS1aMC05XSsoPzo6XFxkKyg/OjpcXGQrKT8pPyQvLnRlc3QodGV4dCk7XG4gIH1cblxuICBwcml2YXRlIF9pc1VybCh0ZXh0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvLyBVUkzlvaLlvI/jgpLpmaTlpJZcbiAgICByZXR1cm4gL15odHRwcz86XFwvXFwvLy50ZXN0KHRleHQpIHx8IC9eZmlsZTpcXC9cXC8vLnRlc3QodGV4dCk7XG4gIH1cblxuICBwcml2YXRlIF9wYXJzZUZpbGVQYXRoKHRleHQ6IHN0cmluZyk6IHsgcGF0aDogc3RyaW5nOyBsaW5lPzogbnVtYmVyOyBjb2x1bW4/OiBudW1iZXIgfSB7XG4gICAgY29uc3QgbWF0Y2ggPSB0ZXh0Lm1hdGNoKC9eKC4rPykoPzo6KFxcZCspKD86OihcXGQrKSk/KT8kLyk7XG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYXRoOiBtYXRjaFsxXSxcbiAgICAgICAgbGluZTogbWF0Y2hbMl0gPyBwYXJzZUludChtYXRjaFsyXSwgMTApIDogdW5kZWZpbmVkLFxuICAgICAgICBjb2x1bW46IG1hdGNoWzNdID8gcGFyc2VJbnQobWF0Y2hbM10sIDEwKSA6IHVuZGVmaW5lZFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHsgcGF0aDogdGV4dCB9O1xuICB9XG59XG5cbi8vIEV4cG9ydCBoZWxwZXIgZnVuY3Rpb25zIGZvciB0ZXN0aW5nXG5leHBvcnQgY29uc3QgaXNMaWtlbHlGaWxlUGF0aCA9ICh0ZXh0OiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgcmV0dXJuIC9cXC5bYS16QS1aMC05XSsoPzo6XFxkKyg/OjpcXGQrKT8pPyQvLnRlc3QodGV4dCkgJiYgIS9eaHR0cHM/OlxcL1xcLy8udGVzdCh0ZXh0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBwYXJzZUZpbGVQYXRoID0gKHRleHQ6IHN0cmluZyk6IHsgcGF0aDogc3RyaW5nOyBsaW5lPzogbnVtYmVyOyBjb2x1bW4/OiBudW1iZXIgfSA9PiB7XG4gIGNvbnN0IG1hdGNoID0gdGV4dC5tYXRjaCgvXiguKz8pKD86OihcXGQrKSg/OjooXFxkKykpPyk/JC8pO1xuICBpZiAobWF0Y2gpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcGF0aDogbWF0Y2hbMV0sXG4gICAgICBsaW5lOiBtYXRjaFsyXSA/IHBhcnNlSW50KG1hdGNoWzJdLCAxMCkgOiB1bmRlZmluZWQsXG4gICAgICBjb2x1bW46IG1hdGNoWzNdID8gcGFyc2VJbnQobWF0Y2hbM10sIDEwKSA6IHVuZGVmaW5lZFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHsgcGF0aDogdGV4dCB9O1xufTtcbiJdfQ==","import { FileLinkProvider } from './file-link.provider';\n/**\n * xterm.js addon for detecting and handling file path links in terminal output.\n * Similar to WebLinksAddon but for local file paths.\n *\n * Usage:\n * ```typescript\n * const fileLinksAddon = new FileLinksAddon((event, filePath, line, column) => {\n * if (event.metaKey || event.ctrlKey) {\n * // Open file in editor\n * }\n * });\n * terminal.loadAddon(fileLinksAddon);\n * ```\n */\nexport class FileLinksAddon {\n _handler;\n _terminal;\n _linkProvider;\n constructor(_handler) {\n this._handler = _handler;\n }\n activate(terminal) {\n this._terminal = terminal;\n this._linkProvider = terminal.registerLinkProvider(new FileLinkProvider(terminal, this._handler));\n }\n dispose() {\n this._linkProvider?.dispose();\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1saW5rcy5hZGRvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0B4eG1hY2hpbmEvY29tcG9uZW50cy9zcmMvbGliL29yZ2FuaXNtcy94dGVybS9maWxlLWxpbmtzLmFkZG9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBMkIsTUFBTSxzQkFBc0IsQ0FBQztBQUVqRjs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBTSxPQUFPLGNBQWM7SUFLTjtJQUpYLFNBQVMsQ0FBWTtJQUNyQixhQUFhLENBQWU7SUFFcEMsWUFDbUIsUUFBaUM7UUFBakMsYUFBUSxHQUFSLFFBQVEsQ0FBeUI7SUFDakQsQ0FBQztJQUVKLFFBQVEsQ0FBQyxRQUFrQjtRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxvQkFBb0IsQ0FDaEQsSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUM5QyxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ2hDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlcm1pbmFsLCBJVGVybWluYWxBZGRvbiwgSURpc3Bvc2FibGUgfSBmcm9tICdAeHRlcm0veHRlcm0nO1xuaW1wb3J0IHsgRmlsZUxpbmtQcm92aWRlciwgRmlsZUxpbmtBY3RpdmF0ZUhhbmRsZXIgfSBmcm9tICcuL2ZpbGUtbGluay5wcm92aWRlcic7XG5cbi8qKlxuICogeHRlcm0uanMgYWRkb24gZm9yIGRldGVjdGluZyBhbmQgaGFuZGxpbmcgZmlsZSBwYXRoIGxpbmtzIGluIHRlcm1pbmFsIG91dHB1dC5cbiAqIFNpbWlsYXIgdG8gV2ViTGlua3NBZGRvbiBidXQgZm9yIGxvY2FsIGZpbGUgcGF0aHMuXG4gKlxuICogVXNhZ2U6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBmaWxlTGlua3NBZGRvbiA9IG5ldyBGaWxlTGlua3NBZGRvbigoZXZlbnQsIGZpbGVQYXRoLCBsaW5lLCBjb2x1bW4pID0+IHtcbiAqICAgaWYgKGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuY3RybEtleSkge1xuICogICAgIC8vIE9wZW4gZmlsZSBpbiBlZGl0b3JcbiAqICAgfVxuICogfSk7XG4gKiB0ZXJtaW5hbC5sb2FkQWRkb24oZmlsZUxpbmtzQWRkb24pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBGaWxlTGlua3NBZGRvbiBpbXBsZW1lbnRzIElUZXJtaW5hbEFkZG9uIHtcbiAgcHJpdmF0ZSBfdGVybWluYWw/OiBUZXJtaW5hbDtcbiAgcHJpdmF0ZSBfbGlua1Byb3ZpZGVyPzogSURpc3Bvc2FibGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBfaGFuZGxlcjogRmlsZUxpbmtBY3RpdmF0ZUhhbmRsZXJcbiAgKSB7fVxuXG4gIGFjdGl2YXRlKHRlcm1pbmFsOiBUZXJtaW5hbCk6IHZvaWQge1xuICAgIHRoaXMuX3Rlcm1pbmFsID0gdGVybWluYWw7XG4gICAgdGhpcy5fbGlua1Byb3ZpZGVyID0gdGVybWluYWwucmVnaXN0ZXJMaW5rUHJvdmlkZXIoXG4gICAgICBuZXcgRmlsZUxpbmtQcm92aWRlcih0ZXJtaW5hbCwgdGhpcy5faGFuZGxlcilcbiAgICApO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9saW5rUHJvdmlkZXI/LmRpc3Bvc2UoKTtcbiAgfVxufVxuIl19","import { Directive, input } from '@angular/core';\nimport { InjectableComponent } from '@ng-atomic/core';\nimport { makeDI } from '@ng-atomic/common/services/ui';\nimport * as i0 from \"@angular/core\";\nexport var XtermActionId;\n(function (XtermActionId) {\n XtermActionId[\"DATA_INPUT\"] = \"xterm:data-input\";\n XtermActionId[\"RESIZED\"] = \"xterm:resized\";\n XtermActionId[\"GITHUB_LINK_CLICK\"] = \"xterm:github-link-click\";\n XtermActionId[\"FILE_LINK_CLICK\"] = \"xterm:file-link-click\";\n})(XtermActionId || (XtermActionId = {}));\nexport class XtermOrganismStore extends InjectableComponent {\n static DI = makeDI(XtermOrganismStore, () => () => ({\n data: '',\n interactive: false,\n queryResult: '',\n useInteractiveTheme: false,\n }), ['components', 'organisms', 'xterm']);\n config = XtermOrganismStore.DI.injectConfig();\n // Note: Using simple default values instead of _computed() to ensure\n // input bindings from templates work correctly with Angular signal effects\n data = input(undefined);\n interactive = input(false);\n queryResult = input('');\n /** Use interactive theme even when not interactive (for display consistency) */\n useInteractiveTheme = input(false);\n /** Total bytes written to the buffer (for accurate diff detection when buffer overflows) */\n totalWritten = input(0);\n constructor() {\n super();\n XtermOrganismStore.DI.initialize(this);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: XtermOrganismStore, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.0.5\", type: XtermOrganismStore, isStandalone: true, selector: \"organisms-xterm\", inputs: { data: { classPropertyName: \"data\", publicName: \"data\", isSignal: true, isRequired: false, transformFunction: null }, interactive: { classPropertyName: \"interactive\", publicName: \"interactive\", isSignal: true, isRequired: false, transformFunction: null }, queryResult: { classPropertyName: \"queryResult\", publicName: \"queryResult\", isSignal: true, isRequired: false, transformFunction: null }, useInteractiveTheme: { classPropertyName: \"useInteractiveTheme\", publicName: \"useInteractiveTheme\", isSignal: true, isRequired: false, transformFunction: null }, totalWritten: { classPropertyName: \"totalWritten\", publicName: \"totalWritten\", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: XtermOrganismStore, decorators: [{\n type: Directive,\n args: [{ standalone: true, selector: 'organisms-xterm' }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHRlcm0ub3JnYW5pc20uc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AeHhtYWNoaW5hL2NvbXBvbmVudHMvc3JjL2xpYi9vcmdhbmlzbXMveHRlcm0veHRlcm0ub3JnYW5pc20uc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFhLG1CQUFtQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQUV2RCxNQUFNLENBQU4sSUFBWSxhQUtYO0FBTEQsV0FBWSxhQUFhO0lBQ3ZCLGdEQUErQixDQUFBO0lBQy9CLDBDQUF5QixDQUFBO0lBQ3pCLDhEQUE2QyxDQUFBO0lBQzdDLDBEQUF5QyxDQUFBO0FBQzNDLENBQUMsRUFMVyxhQUFhLEtBQWIsYUFBYSxRQUt4QjtBQUdELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxtQkFBbUI7SUFDekQsTUFBTSxDQUFVLEVBQUUsR0FBRyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMzRCxJQUFJLEVBQUUsRUFBRTtRQUNSLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLFdBQVcsRUFBRSxFQUFFO1FBQ2YsbUJBQW1CLEVBQUUsS0FBSztLQUMzQixDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFFakMsTUFBTSxHQUFHLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN2RCxxRUFBcUU7SUFDckUsMkVBQTJFO0lBQ2xFLElBQUksR0FBRyxLQUFLLENBQXFCLFNBQVMsQ0FBQyxDQUFDO0lBQzVDLFdBQVcsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDcEMsV0FBVyxHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztJQUN6QyxnRkFBZ0Y7SUFDdkUsbUJBQW1CLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ3JELDRGQUE0RjtJQUNuRixZQUFZLEdBQUcsS0FBSyxDQUFTLENBQUMsQ0FBQyxDQUFDO0lBRXpDO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFDUixrQkFBa0IsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pDLENBQUM7dUdBdEJVLGtCQUFrQjsyRkFBbEIsa0JBQWtCOzsyRkFBbEIsa0JBQWtCO2tCQUQ5QixTQUFTO21CQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBfY29tcHV0ZWQsIEluamVjdGFibGVDb21wb25lbnQgfSBmcm9tICdAbmctYXRvbWljL2NvcmUnO1xuaW1wb3J0IHsgbWFrZURJIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vc2VydmljZXMvdWknO1xuXG5leHBvcnQgZW51bSBYdGVybUFjdGlvbklkIHtcbiAgREFUQV9JTlBVVCA9ICd4dGVybTpkYXRhLWlucHV0JyxcbiAgUkVTSVpFRCA9ICd4dGVybTpyZXNpemVkJyxcbiAgR0lUSFVCX0xJTktfQ0xJQ0sgPSAneHRlcm06Z2l0aHViLWxpbmstY2xpY2snLFxuICBGSUxFX0xJTktfQ0xJQ0sgPSAneHRlcm06ZmlsZS1saW5rLWNsaWNrJyxcbn1cblxuQERpcmVjdGl2ZSh7IHN0YW5kYWxvbmU6IHRydWUsIHNlbGVjdG9yOiAnb3JnYW5pc21zLXh0ZXJtJyB9KVxuZXhwb3J0IGNsYXNzIFh0ZXJtT3JnYW5pc21TdG9yZSBleHRlbmRzIEluamVjdGFibGVDb21wb25lbnQge1xuICBzdGF0aWMgcmVhZG9ubHkgREkgPSBtYWtlREkoWHRlcm1PcmdhbmlzbVN0b3JlLCAoKSA9PiAoKSA9PiAoe1xuICAgIGRhdGE6ICcnLFxuICAgIGludGVyYWN0aXZlOiBmYWxzZSxcbiAgICBxdWVyeVJlc3VsdDogJycsXG4gICAgdXNlSW50ZXJhY3RpdmVUaGVtZTogZmFsc2UsXG4gIH0pLCBbJ2NvbXBvbmVudHMnLCAnb3JnYW5pc21zJywgJ3h0ZXJtJ10pO1xuXG4gIHJlYWRvbmx5IGNvbmZpZyA9IFh0ZXJtT3JnYW5pc21TdG9yZS5ESS5pbmplY3RDb25maWcoKTtcbiAgLy8gTm90ZTogVXNpbmcgc2ltcGxlIGRlZmF1bHQgdmFsdWVzIGluc3RlYWQgb2YgX2NvbXB1dGVkKCkgdG8gZW5zdXJlXG4gIC8vIGlucHV0IGJpbmRpbmdzIGZyb20gdGVtcGxhdGVzIHdvcmsgY29ycmVjdGx5IHdpdGggQW5ndWxhciBzaWduYWwgZWZmZWN0c1xuICByZWFkb25seSBkYXRhID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBpbnRlcmFjdGl2ZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgcXVlcnlSZXN1bHQgPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgLyoqIFVzZSBpbnRlcmFjdGl2ZSB0aGVtZSBldmVuIHdoZW4gbm90IGludGVyYWN0aXZlIChmb3IgZGlzcGxheSBjb25zaXN0ZW5jeSkgKi9cbiAgcmVhZG9ubHkgdXNlSW50ZXJhY3RpdmVUaGVtZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgLyoqIFRvdGFsIGJ5dGVzIHdyaXR0ZW4gdG8gdGhlIGJ1ZmZlciAoZm9yIGFjY3VyYXRlIGRpZmYgZGV0ZWN0aW9uIHdoZW4gYnVmZmVyIG92ZXJmbG93cykgKi9cbiAgcmVhZG9ubHkgdG90YWxXcml0dGVuID0gaW5wdXQ8bnVtYmVyPigwKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIFh0ZXJtT3JnYW5pc21TdG9yZS5ESS5pbml0aWFsaXplKHRoaXMpO1xuICB9XG59XG4iXX0=","import { Component, ElementRef, ChangeDetectionStrategy, viewChild, output, effect, inject, signal } from '@angular/core';\nimport { Terminal } from '@xterm/xterm';\nimport { FitAddon } from '@xterm/addon-fit';\nimport { WebLinksAddon } from './web-links.addon';\nimport { NgAtomicComponent } from '@ng-atomic/core';\nimport { GitHubLinksAddon } from './github-links.addon';\nimport { FileLinksAddon } from './file-links.addon';\nimport { XtermOrganismStore, XtermActionId } from './xterm.organism.store';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./xterm.organism.store\";\n/**\n * Minimum container size required for terminal initialization.\n * Prevents issues with SR-only hidden containers (1x1 pixel) causing FitAddon problems.\n */\nconst MIN_CONTAINER_SIZE = 10;\n/** Default display-only theme (for catalog/storybook) */\nconst DISPLAY_THEME = {\n background: '#0a0a0a',\n foreground: '#66d9ef',\n cursor: '#ff79c6',\n cyan: '#8be9fd',\n brightCyan: '#50fa7b',\n green: '#50fa7b',\n brightGreen: '#50fa7b',\n magenta: '#ff79c6',\n brightMagenta: '#ff79c6',\n yellow: '#f1fa8c',\n brightYellow: '#ffb86c',\n red: '#ff5555',\n brightRed: '#ff5555'\n};\n/** Interactive session theme (matches original TerminalManager) */\nconst INTERACTIVE_THEME = {\n background: '#0a0a0a',\n foreground: '#e0e0e0',\n cursor: '#e0e0e0',\n black: '#000000',\n red: '#cd3131',\n green: '#0dbc79',\n yellow: '#e5e510',\n blue: '#2472c8',\n magenta: '#bc3fbc',\n cyan: '#11a8cd',\n white: '#e5e5e5',\n brightBlack: '#666666',\n brightRed: '#f14c4c',\n brightGreen: '#23d18b',\n brightYellow: '#f5f543',\n brightBlue: '#3b8eea',\n brightMagenta: '#d670d6',\n brightCyan: '#29b8db',\n brightWhite: '#e5e5e5',\n};\nexport class XtermOrganism extends NgAtomicComponent {\n container = viewChild.required('container');\n store = inject(XtermOrganismStore);\n hostElement = inject((ElementRef));\n terminalReady = output();\n githubLinkClick = output();\n terminal;\n fitAddon;\n imageAddon;\n githubLinksAddon;\n fileLinksAddon;\n resizeObserver;\n lastDataLength = 0;\n /** Tracks how many bytes have been processed (for totalWritten-based diff detection) */\n lastProcessedLength = 0;\n terminalInitialized = signal(false);\n /** Tracks if initialization was skipped due to container being too small */\n initSkippedDueToSize = false;\n constructor() {\n super();\n // Watch for data input changes (with totalWritten support for buffer overflow handling)\n effect(() => {\n const isInitialized = this.terminalInitialized();\n const rawData = this.store.data();\n const totalWritten = this.store.totalWritten();\n const dataIsFunction = typeof rawData === 'function';\n const data = dataIsFunction ? rawData() : rawData;\n if (!isInitialized)\n return;\n // Use totalWritten-based logic when available (handles buffer overflow correctly)\n if (totalWritten > 0) {\n this.writeDataWithTotalWritten(data ?? '', totalWritten);\n }\n else {\n // Legacy fallback for backward compatibility\n this.writeDataToTerminal(data);\n }\n });\n // Watch for interactive mode changes and update host class\n // Note: Using effect with classList because @HostBinding doesn't work with OnPush + signals\n effect(() => {\n const isInteractive = this.store.interactive();\n if (isInteractive) {\n this.hostElement.nativeElement.classList.add('interactive');\n }\n else {\n this.hostElement.nativeElement.classList.remove('interactive');\n }\n });\n // Watch for interactive mode changes and update cursor blink\n effect(() => {\n const isInitialized = this.terminalInitialized();\n const isInteractive = this.store.interactive();\n if (!isInitialized || !this.terminal)\n return;\n // Update cursor blink setting\n this.terminal.options.cursorBlink = isInteractive;\n });\n }\n writeDataToTerminal(data) {\n // Guard against undefined/null/empty data\n // Empty string is treated as \"no data yet\" (from startWith('') in streams)\n // Explicit reset should use the public clear() or reset() methods\n if (data === undefined || data === null || data === '') {\n return;\n }\n // O(1) length comparison instead of O(n) startsWith\n if (data.length >= this.lastDataLength) {\n const newPart = data.slice(this.lastDataLength);\n if (newPart) {\n this.terminal.write(newPart);\n }\n this.lastDataLength = data.length;\n }\n else {\n // Data got shorter = reset occurred\n this.terminal.reset();\n this.terminal.write(data);\n this.lastDataLength = data.length;\n }\n }\n /**\n * Write data using totalWritten for accurate diff detection.\n * This method handles buffer overflow scenarios correctly.\n * @param data The current buffer content\n * @param totalWritten Total bytes written to the buffer (cumulative)\n */\n writeDataWithTotalWritten(data, totalWritten) {\n if (!data)\n return;\n // Calculate how many new bytes arrived\n const newBytesCount = totalWritten - this.lastProcessedLength;\n if (newBytesCount <= 0) {\n // No new data or reset occurred\n if (totalWritten < this.lastProcessedLength) {\n // Reset detected\n this.terminal.reset();\n this.terminal.write(data);\n this.lastProcessedLength = totalWritten;\n }\n return;\n }\n // Extract new content from the end of buffer\n const newContent = data.slice(-newBytesCount);\n if (newContent) {\n this.terminal.write(newContent);\n }\n this.lastProcessedLength = totalWritten;\n }\n ngAfterViewInit() {\n const containerElement = this.container().nativeElement;\n // Guard against initialization in very small containers (e.g., SR-only 1x1 pixel hidden elements)\n // This prevents FitAddon issues and excessive processing in hidden query sections\n if (containerElement.offsetWidth < MIN_CONTAINER_SIZE || containerElement.offsetHeight < MIN_CONTAINER_SIZE) {\n this.initSkippedDueToSize = true;\n // Retry initialization when container reaches minimum size (e.g., after CSS/layout settles)\n this.resizeObserver = new ResizeObserver(() => {\n if (containerElement.offsetWidth >= MIN_CONTAINER_SIZE && containerElement.offsetHeight >= MIN_CONTAINER_SIZE) {\n this.resizeObserver?.disconnect();\n this.resizeObserver = undefined;\n this.initSkippedDueToSize = false;\n this.initializeTerminal(containerElement);\n }\n });\n this.resizeObserver.observe(containerElement);\n return;\n }\n this.initializeTerminal(containerElement);\n }\n initializeTerminal(containerElement) {\n const isInteractive = this.store.interactive();\n const useInteractiveTheme = this.store.useInteractiveTheme() || isInteractive;\n this.terminal = new Terminal({\n theme: useInteractiveTheme ? INTERACTIVE_THEME : DISPLAY_THEME,\n scrollback: isInteractive ? 10000 : 1000,\n fontSize: useInteractiveTheme ? 14 : 12,\n fontFamily: '\"FiraCode Nerd Font\", \"Fira Code\", \"SF Mono\", \"Cascadia Code\", \"Consolas\", \"Courier New\", monospace',\n lineHeight: 1.2,\n allowTransparency: false,\n disableStdin: !isInteractive,\n cursorBlink: isInteractive,\n cursorStyle: 'block',\n convertEol: true,\n rows: 24\n });\n this.fitAddon = new FitAddon();\n this.terminal.loadAddon(this.fitAddon);\n this.terminal.loadAddon(new WebLinksAddon());\n // ImageAddon for displaying inline images (SIXEL and iTerm2 IIP support)\n // Loaded dynamically to avoid browser compatibility issues\n this.loadImageAddon();\n this.githubLinksAddon = new GitHubLinksAddon((event, issueNumber) => {\n this.dispatch({ id: XtermActionId.GITHUB_LINK_CLICK, payload: issueNumber });\n });\n this.terminal.loadAddon(this.githubLinksAddon);\n this.fileLinksAddon = new FileLinksAddon((event, filePath, line, column) => {\n if (event.metaKey || event.ctrlKey) {\n this.dispatch({ id: XtermActionId.FILE_LINK_CLICK, payload: { filePath, line, column } });\n }\n });\n this.terminal.loadAddon(this.fileLinksAddon);\n this.terminal.open(containerElement);\n // Setup event handlers for interactive mode\n if (isInteractive) {\n this.terminal.onData((data) => {\n this.dispatch({ id: XtermActionId.DATA_INPUT, payload: data });\n });\n this.terminal.onResize(({ cols, rows }) => this.dispatch({ id: XtermActionId.RESIZED, payload: { cols, rows } }));\n }\n // Use ResizeObserver with debounce to wait for container size to stabilize\n // (CSS transitions take 300-500ms, so fixed setTimeout(100ms) is too early)\n let stableTimer = null;\n let resizeTimer = null;\n this.resizeObserver = new ResizeObserver(() => {\n try {\n if (!this.terminalInitialized()) {\n this.fitAddon.fit();\n // Debounce: wait for container to stop changing before initializing\n if (stableTimer)\n clearTimeout(stableTimer);\n stableTimer = setTimeout(() => {\n this.fitAddon.fit();\n this.markInitialized(isInteractive);\n }, 150);\n }\n else if (isInteractive) {\n // Debounce resize to wait for CSS transitions to complete (300ms)\n if (resizeTimer)\n clearTimeout(resizeTimer);\n resizeTimer = setTimeout(() => {\n this.fitAddon.fit();\n this.dispatch({ id: XtermActionId.RESIZED, payload: { cols: this.cols, rows: this.rows } });\n }, 300);\n }\n }\n catch (e) {\n console.warn('Failed to fit terminal:', e);\n }\n });\n this.resizeObserver.observe(containerElement);\n // Fallback: initialize after 500ms if ResizeObserver hasn't triggered stable state\n setTimeout(() => {\n if (!this.terminalInitialized()) {\n this.fitAddon.fit();\n this.markInitialized(isInteractive);\n }\n }, 500);\n }\n ngOnDestroy() {\n this.resizeObserver?.disconnect();\n // Remove terminal instance from window for E2E testing cleanup\n if (typeof window !== 'undefined' && window.__XTERM_INSTANCES__) {\n const instances = window.__XTERM_INSTANCES__;\n const index = instances.indexOf(this.terminal);\n if (index !== -1) {\n instances.splice(index, 1);\n }\n }\n this.terminal?.dispose();\n }\n markInitialized(isInteractive) {\n if (this.terminalInitialized())\n return;\n this.terminalInitialized.set(true);\n this.terminalReady.emit(this.terminal);\n // Expose terminal instance for E2E testing (only in development/test environments)\n if (typeof window !== 'undefined') {\n window.__XTERM_INSTANCES__ = window.__XTERM_INSTANCES__ || [];\n window.__XTERM_INSTANCES__.push(this.terminal);\n }\n // Dispatch initial RESIZED for interactive mode\n if (isInteractive) {\n this.dispatch({ id: XtermActionId.RESIZED, payload: { cols: this.cols, rows: this.rows } });\n }\n }\n async loadImageAddon() {\n try {\n const { ImageAddon } = await import('@xterm/addon-image');\n const imageAddonOptions = {\n enableSizeReports: true,\n sixelSupport: true,\n sixelScrolling: true,\n sixelPaletteLimit: 256,\n };\n this.imageAddon = new ImageAddon(imageAddonOptions);\n this.terminal.loadAddon(this.imageAddon);\n }\n catch (e) {\n // ImageAddon not available in browser environment - this is expected\n console.debug('ImageAddon not available:', e);\n }\n }\n // Public API\n write(text) {\n this.terminal?.write(text);\n }\n writeln(text) {\n this.terminal?.writeln(text);\n }\n clear() {\n this.terminal?.clear();\n }\n scrollToBottom() {\n this.terminal?.scrollToBottom();\n }\n scrollToTop() {\n this.terminal?.scrollToTop();\n }\n scrollLines(lines) {\n this.terminal?.scrollLines(lines);\n }\n fit() {\n this.fitAddon?.fit();\n // Only dispatch RESIZED after initialization to prevent sending wrong cols/rows\n // during CSS transitions (SessionTemplateV2.ngAfterViewInit calls fit() before layout stabilizes)\n if (this.terminalInitialized() && this.terminal) {\n this.dispatch({ id: XtermActionId.RESIZED, payload: { cols: this.cols, rows: this.rows } });\n }\n }\n get cols() {\n return this.terminal?.cols ?? 80;\n }\n get rows() {\n return this.terminal?.rows ?? 24;\n }\n getTerminal() {\n // Only expose terminal after fitAddon.fit() has run (terminalInitialized === true)\n return this.terminalInitialized() ? this.terminal : undefined;\n }\n /**\n * Display an inline image using iTerm2's Inline Image Protocol\n * @param base64Data Base64 encoded image data (PNG, JPEG, etc.)\n * @param options Image display options\n */\n displayImage(base64Data, options) {\n if (!this.terminal)\n return;\n const args = ['inline=1'];\n if (options?.width) {\n args.push(`width=${options.width}`);\n }\n if (options?.height) {\n args.push(`height=${options.height}`);\n }\n if (options?.preserveAspectRatio !== undefined) {\n args.push(`preserveAspectRatio=${options.preserveAspectRatio ? 1 : 0}`);\n }\n if (options?.name) {\n args.push(`name=${btoa(options.name)}`);\n }\n // iTerm2 Inline Image Protocol escape sequence\n const escapeSequence = `\\x1b]1337;File=${args.join(';')}:${base64Data}\\x07`;\n this.terminal.write(escapeSequence);\n }\n /**\n * Get the ImageAddon instance for advanced image operations\n */\n getImageAddon() {\n return this.imageAddon;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: XtermOrganism, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.2.0\", version: \"20.0.5\", type: XtermOrganism, isStandalone: true, selector: \"organisms-xterm\", outputs: { terminalReady: \"terminalReady\", githubLinkClick: \"githubLinkClick\" }, viewQueries: [{ propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, isSignal: true }], usesInheritance: true, hostDirectives: [{ directive: i1.XtermOrganismStore, inputs: [\"data\", \"data\", \"interactive\", \"interactive\", \"useInteractiveTheme\", \"useInteractiveTheme\", \"totalWritten\", \"totalWritten\"] }], ngImport: i0, template: `<div #container class=\"xterm-wrapper\"></div>`, isInline: true, styles: [\"\", \"@import\\\"https://unpkg.com/@xterm/xterm@5.5.0/css/xterm.css\\\";:host{display:block;width:100%;height:100%}:host .xterm-wrapper{width:100%;height:100%;background:#0a0a0a;position:relative;overflow:hidden}:host:not(.interactive) .xterm-wrapper ::ng-deep .xterm-cursor-layer{display:none!important}:host:not(.interactive) .xterm-wrapper ::ng-deep .xterm-cursor,:host:not(.interactive) .xterm-wrapper ::ng-deep .xterm-cursor-outline{opacity:0!important}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: XtermOrganism, decorators: [{\n type: Component,\n args: [{ selector: 'organisms-xterm', standalone: true, imports: [], template: `<div #container class=\"xterm-wrapper\"></div>`, changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [{\n directive: XtermOrganismStore,\n inputs: ['data', 'interactive', 'useInteractiveTheme', 'totalWritten'],\n }], styles: [\"@import\\\"https://unpkg.com/@xterm/xterm@5.5.0/css/xterm.css\\\";:host{display:block;width:100%;height:100%}:host .xterm-wrapper{width:100%;height:100%;background:#0a0a0a;position:relative;overflow:hidden}:host:not(.interactive) .xterm-wrapper ::ng-deep .xterm-cursor-layer{display:none!important}:host:not(.interactive) .xterm-wrapper ::ng-deep .xterm-cursor,:host:not(.interactive) .xterm-wrapper ::ng-deep .xterm-cursor-outline{opacity:0!important}\\n\"] }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHRlcm0ub3JnYW5pc20uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AeHhtYWNoaW5hL2NvbXBvbmVudHMvc3JjL2xpYi9vcmdhbmlzbXMveHRlcm0veHRlcm0ub3JnYW5pc20udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQTRCLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEosT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7OztBQU0zRTs7O0dBR0c7QUFDSCxNQUFNLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztBQUc5Qix5REFBeUQ7QUFDekQsTUFBTSxhQUFhLEdBQUc7SUFDcEIsVUFBVSxFQUFFLFNBQVM7SUFDckIsVUFBVSxFQUFFLFNBQVM7SUFDckIsTUFBTSxFQUFFLFNBQVM7SUFDakIsSUFBSSxFQUFFLFNBQVM7SUFDZixVQUFVLEVBQUUsU0FBUztJQUNyQixLQUFLLEVBQUUsU0FBUztJQUNoQixXQUFXLEVBQUUsU0FBUztJQUN0QixPQUFPLEVBQUUsU0FBUztJQUNsQixhQUFhLEVBQUUsU0FBUztJQUN4QixNQUFNLEVBQUUs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O3lCQUN2RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCB2aWV3Q2hpbGQsIG91dHB1dCwgZWZmZWN0LCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGVybWluYWwgfSBmcm9tICdAeHRlcm0veHRlcm0nO1xuaW1wb3J0IHsgRml0QWRkb24gfSBmcm9tICdAeHRlcm0vYWRkb24tZml0JztcbmltcG9ydCB7IFdlYkxpbmtzQWRkb24gfSBmcm9tICcuL3dlYi1saW5rcy5hZGRvbic7XG5pbXBvcnQgeyBOZ0F0b21pY0NvbXBvbmVudCB9IGZyb20gJ0BuZy1hdG9taWMvY29yZSc7XG5pbXBvcnQgeyBHaXRIdWJMaW5rc0FkZG9uIH0gZnJvbSAnLi9naXRodWItbGlua3MuYWRkb24nO1xuaW1wb3J0IHsgRmlsZUxpbmtzQWRkb24gfSBmcm9tICcuL2ZpbGUtbGlua3MuYWRkb24nO1xuaW1wb3J0IHsgWHRlcm1PcmdhbmlzbVN0b3JlLCBYdGVybUFjdGlvbklkIH0gZnJvbSAnLi94dGVybS5vcmdhbmlzbS5zdG9yZSc7XG5cbi8vIEltYWdlQWRkb24gdHlwZXMgKGxvYWRlZCBkeW5hbWljYWxseSB0byBhdm9pZCBicm93c2VyIGNvbXBhdGliaWxpdHkgaXNzdWVzKVxudHlwZSBJbWFnZUFkZG9uID0gYW55O1xudHlwZSBJSW1hZ2VBZGRvbk9wdGlvbnMgPSBhbnk7XG5cbi8qKlxuICogTWluaW11bSBjb250YWluZXIgc2l6ZSByZXF1aXJlZCBmb3IgdGVybWluYWwgaW5pdGlhbGl6YXRpb24uXG4gKiBQcmV2ZW50cyBpc3N1ZXMgd2l0aCBTUi1vbmx5IGhpZGRlbiBjb250YWluZXJzICgxeDEgcGl4ZWwpIGNhdXNpbmcgRml0QWRkb24gcHJvYmxlbXMuXG4gKi9cbmNvbnN0IE1JTl9DT05UQUlORVJfU0laRSA9IDEwO1xuXG5cbi8qKiBEZWZhdWx0IGRpc3BsYXktb25seSB0aGVtZSAoZm9yIGNhdGFsb2cvc3Rvcnlib29rKSAqL1xuY29uc3QgRElTUExBWV9USEVNRSA9IHtcbiAgYmFja2dyb3VuZDogJyMwYTBhMGEnLFxuICBmb3JlZ3JvdW5kOiAnIzY2ZDllZicsXG4gIGN1cnNvcjogJyNmZjc5YzYnLFxuICBjeWFuOiAnIzhiZTlmZCcsXG4gIGJyaWdodEN5YW46ICcjNTBmYTdiJyxcbiAgZ3JlZW46ICcjNTBmYTdiJyxcbiAgYnJpZ2h0R3JlZW46ICcjNTBmYTdiJyxcbiAgbWFnZW50YTogJyNmZjc5YzYnLFxuICBicmlnaHRNYWdlbnRhOiAnI2ZmNzljNicsXG4gIHllbGxvdzogJyNmMWZhOGMnLFxuICBicmlnaHRZZWxsb3c6ICcjZmZiODZjJyxcbiAgcmVkOiAnI2ZmNTU1NScsXG4gIGJyaWdodFJlZDogJyNmZjU1NTUnXG59O1xuXG4vKiogSW50ZXJhY3RpdmUgc2Vzc2lvbiB0aGVtZSAobWF0Y2hlcyBvcmlnaW5hbCBUZXJtaW5hbE1hbmFnZXIpICovXG5jb25zdCBJTlRFUkFDVElWRV9USEVNRSA9IHtcbiAgYmFja2dyb3VuZDogJyMwYTBhMGEnLFxuICBmb3JlZ3JvdW5kOiAnI2UwZTBlMCcsXG4gIGN1cnNvcjogJyNlMGUwZTAnLFxuICBibGFjazogJyMwMDAwMDAnLFxuICByZWQ6ICcjY2QzMTMxJyxcbiAgZ3JlZW46ICcjMGRiYzc5JyxcbiAgeWVsbG93OiAnI2U1ZTUxMCcsXG4gIGJsdWU6ICcjMjQ3MmM4JyxcbiAgbWFnZW50YTogJyNiYzNmYmMnLFxuICBjeWFuOiAnIzExYThjZCcsXG4gIHdoaXRlOiAnI2U1ZTVlNScsXG4gIGJyaWdodEJsYWNrOiAnIzY2NjY2NicsXG4gIGJyaWdodFJlZDogJyNmMTRjNGMnLFxuICBicmlnaHRHcmVlbjogJyMyM2QxOGInLFxuICBicmlnaHRZZWxsb3c6ICcjZjVmNTQzJyxcbiAgYnJpZ2h0Qmx1ZTogJyMzYjhlZWEnLFxuICBicmlnaHRNYWdlbnRhOiAnI2Q2NzBkNicsXG4gIGJyaWdodEN5YW46ICcjMjliOGRiJyxcbiAgYnJpZ2h0V2hpdGU6ICcjZTVlNWU1Jyxcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29yZ2FuaXNtcy14dGVybScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtdLFxuICB0ZW1wbGF0ZTogYDxkaXYgI2NvbnRhaW5lciBjbGFzcz1cInh0ZXJtLXdyYXBwZXJcIj48L2Rpdj5gLFxuICBzdHlsZVVybHM6IFsnLi94dGVybS5vcmdhbmlzbS5jc3MnLCAnLi94dGVybS5vcmdhbmlzbS5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0RGlyZWN0aXZlczogW3tcbiAgICBkaXJlY3RpdmU6IFh0ZXJtT3JnYW5pc21TdG9yZSxcbiAgICBpbnB1dHM6IFsnZGF0YScsICdpbnRlcmFjdGl2ZScsICd1c2VJbnRlcmFjdGl2ZVRoZW1lJywgJ3RvdGFsV3JpdHRlbiddLFxuICB9XSxcbn0pXG5leHBvcnQgY2xhc3MgWHRlcm1PcmdhbmlzbSBleHRlbmRzIE5nQXRvbWljQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgcmVhZG9ubHkgY29udGFpbmVyID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+PignY29udGFpbmVyJyk7XG4gIHByb3RlY3RlZCByZWFkb25seSBzdG9yZSA9IGluamVjdChYdGVybU9yZ2FuaXNtU3RvcmUpO1xuICBwcml2YXRlIHJlYWRvbmx5IGhvc3RFbGVtZW50ID0gaW5qZWN0KEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTtcblxuICByZWFkb25seSB0ZXJtaW5hbFJlYWR5ID0gb3V0cHV0PFRlcm1pbmFsPigpO1xuICByZWFkb25seSBnaXRodWJMaW5rQ2xpY2sgPSBvdXRwdXQ8bnVtYmVyPigpO1xuXG4gIHByaXZhdGUgdGVybWluYWwhOiBUZXJtaW5hbDtcbiAgcHJpdmF0ZSBmaXRBZGRvbiE6IEZpdEFkZG9uO1xuICBwcml2YXRlIGltYWdlQWRkb24hOiBJbWFnZUFkZG9uO1xuICBwcml2YXRlIGdpdGh1YkxpbmtzQWRkb24hOiBHaXRIdWJMaW5rc0FkZG9uO1xuICBwcml2YXRlIGZpbGVMaW5rc0FkZG9uITogRmlsZUxpbmtzQWRkb247XG4gIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXI/OiBSZXNpemVPYnNlcnZlcjtcbiAgcHJpdmF0ZSBsYXN0RGF0YUxlbmd0aCA9IDA7XG4gIC8qKiBUcmFja3MgaG93IG1hbnkgYnl0ZXMgaGF2ZSBiZWVuIHByb2Nlc3NlZCAoZm9yIHRvdGFsV3JpdHRlbi1iYXNlZCBkaWZmIGRldGVjdGlvbikgKi9cbiAgcHJpdmF0ZSBsYXN0UHJvY2Vzc2VkTGVuZ3RoID0gMDtcbiAgcHJpdmF0ZSByZWFkb25seSB0ZXJtaW5hbEluaXRpYWxpemVkID0gc2lnbmFsKGZhbHNlKTtcbiAgLyoqIFRyYWNrcyBpZiBpbml0aWFsaXphdGlvbiB3YXMgc2tpcHBlZCBkdWUgdG8gY29udGFpbmVyIGJlaW5nIHRvbyBzbWFsbCAqL1xuICBwcml2YXRlIGluaXRTa2lwcGVkRHVlVG9TaXplID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIC8vIFdhdGNoIGZvciBkYXRhIGlucHV0IGNoYW5nZXMgKHdpdGggdG90YWxXcml0dGVuIHN1cHBvcnQgZm9yIGJ1ZmZlciBvdmVyZmxvdyBoYW5kbGluZylcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgaXNJbml0aWFsaXplZCA9IHRoaXMudGVybWluYWxJbml0aWFsaXplZCgpO1xuICAgICAgY29uc3QgcmF3RGF0YSA9IHRoaXMuc3RvcmUuZGF0YSgpO1xuICAgICAgY29uc3QgdG90YWxXcml0dGVuID0gdGhpcy5zdG9yZS50b3RhbFdyaXR0ZW4oKTtcbiAgICAgIGNvbnN0IGRhdGFJc0Z1bmN0aW9uID0gdHlwZW9mIHJhd0RhdGEgPT09ICdmdW5jdGlvbic7XG4gICAgICBjb25zdCBkYXRhID0gZGF0YUlzRnVuY3Rpb24gPyAocmF3RGF0YSBhcyBhbnkpKCkgOiByYXdEYXRhO1xuICAgICAgaWYgKCFpc0luaXRpYWxpemVkKSByZXR1cm47XG5cbiAgICAgIC8vIFVzZSB0b3RhbFdyaXR0ZW4tYmFzZWQgbG9naWMgd2hlbiBhdmFpbGFibGUgKGhhbmRsZXMgYnVmZmVyIG92ZXJmbG93IGNvcnJlY3RseSlcbiAgICAgIGlmICh0b3RhbFdyaXR0ZW4gPiAwKSB7XG4gICAgICAgIHRoaXMud3JpdGVEYXRhV2l0aFRvdGFsV3JpdHRlbihkYXRhID8/ICcnLCB0b3RhbFdyaXR0ZW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gTGVnYWN5IGZhbGxiYWNrIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgICAgIHRoaXMud3JpdGVEYXRhVG9UZXJtaW5hbChkYXRhKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIFdhdGNoIGZvciBpbnRlcmFjdGl2ZSBtb2RlIGNoYW5nZXMgYW5kIHVwZGF0ZSBob3N0IGNsYXNzXG4gICAgLy8gTm90ZTogVXNpbmcgZWZmZWN0IHdpdGggY2xhc3NMaXN0IGJlY2F1c2UgQEhvc3RCaW5kaW5nIGRvZXNuJ3Qgd29yayB3aXRoIE9uUHVzaCArIHNpZ25hbHNcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgaXNJbnRlcmFjdGl2ZSA9IHRoaXMuc3RvcmUuaW50ZXJhY3RpdmUoKTtcbiAgICAgIGlmIChpc0ludGVyYWN0aXZlKSB7XG4gICAgICAgIHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdpbnRlcmFjdGl2ZScpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2ludGVyYWN0aXZlJyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBXYXRjaCBmb3IgaW50ZXJhY3RpdmUgbW9kZSBjaGFuZ2VzIGFuZCB1cGRhdGUgY3Vyc29yIGJsaW5rXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGlzSW5pdGlhbGl6ZWQgPSB0aGlzLnRlcm1pbmFsSW5pdGlhbGl6ZWQoKTtcbiAgICAgIGNvbnN0IGlzSW50ZXJhY3RpdmUgPSB0aGlzLnN0b3JlLmludGVyYWN0aXZlKCk7XG4gICAgICBpZiAoIWlzSW5pdGlhbGl6ZWQgfHwgIXRoaXMudGVybWluYWwpIHJldHVybjtcblxuICAgICAgLy8gVXBkYXRlIGN1cnNvciBibGluayBzZXR0aW5nXG4gICAgICB0aGlzLnRlcm1pbmFsLm9wdGlvbnMuY3Vyc29yQmxpbmsgPSBpc0ludGVyYWN0aXZlO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB3cml0ZURhdGFUb1Rlcm1pbmFsKGRhdGE6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIC8vIEd1YXJkIGFnYWluc3QgdW5kZWZpbmVkL251bGwvZW1wdHkgZGF0YVxuICAgIC8vIEVtcHR5IHN0cmluZyBpcyB0cmVhdGVkIGFzIFwibm8gZGF0YSB5ZXRcIiAoZnJvbSBzdGFydFdpdGgoJycpIGluIHN0cmVhbXMpXG4gICAgLy8gRXhwbGljaXQgcmVzZXQgc2hvdWxkIHVzZSB0aGUgcHVibGljIGNsZWFyKCkgb3IgcmVzZXQoKSBtZXRob2RzXG4gICAgaWYgKGRhdGEgPT09IHVuZGVmaW5lZCB8fCBkYXRhID09PSBudWxsIHx8IGRhdGEgPT09ICcnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIE8oMSkgbGVuZ3RoIGNvbXBhcmlzb24gaW5zdGVhZCBvZiBPKG4pIHN0YXJ0c1dpdGhcbiAgICBpZiAoZGF0YS5sZW5ndGggPj0gdGhpcy5sYXN0RGF0YUxlbmd0aCkge1xuICAgICAgY29uc3QgbmV3UGFydCA9IGRhdGEuc2xpY2UodGhpcy5sYXN0RGF0YUxlbmd0aCk7XG4gICAgICBpZiAobmV3UGFydCkge1xuICAgICAgICB0aGlzLnRlcm1pbmFsLndyaXRlKG5ld1BhcnQpO1xuICAgICAgfVxuICAgICAgdGhpcy5sYXN0RGF0YUxlbmd0aCA9IGRhdGEubGVuZ3RoO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBEYXRhIGdvdCBzaG9ydGVyID0gcmVzZXQgb2NjdXJyZWRcbiAgICAgIHRoaXMudGVybWluYWwucmVzZXQoKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGUoZGF0YSk7XG4gICAgICB0aGlzLmxhc3REYXRhTGVuZ3RoID0gZGF0YS5sZW5ndGg7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFdyaXRlIGRhdGEgdXNpbmcgdG90YWxXcml0dGVuIGZvciBhY2N1cmF0ZSBkaWZmIGRldGVjdGlvbi5cbiAgICogVGhpcyBtZXRob2QgaGFuZGxlcyBidWZmZXIgb3ZlcmZsb3cgc2NlbmFyaW9zIGNvcnJlY3RseS5cbiAgICogQHBhcmFtIGRhdGEgVGhlIGN1cnJlbnQgYnVmZmVyIGNvbnRlbnRcbiAgICogQHBhcmFtIHRvdGFsV3JpdHRlbiBUb3RhbCBieXRlcyB3cml0dGVuIHRvIHRoZSBidWZmZXIgKGN1bXVsYXRpdmUpXG4gICAqL1xuICBwcml2YXRlIHdyaXRlRGF0YVdpdGhUb3RhbFdyaXR0ZW4oZGF0YTogc3RyaW5nLCB0b3RhbFdyaXR0ZW46IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghZGF0YSkgcmV0dXJuO1xuXG4gICAgLy8gQ2FsY3VsYXRlIGhvdyBtYW55IG5ldyBieXRlcyBhcnJpdmVkXG4gICAgY29uc3QgbmV3Qnl0ZXNDb3VudCA9IHRvdGFsV3JpdHRlbiAtIHRoaXMubGFzdFByb2Nlc3NlZExlbmd0aDtcblxuICAgIGlmIChuZXdCeXRlc0NvdW50IDw9IDApIHtcbiAgICAgIC8vIE5vIG5ldyBkYXRhIG9yIHJlc2V0IG9jY3VycmVkXG4gICAgICBpZiAodG90YWxXcml0dGVuIDwgdGhpcy5sYXN0UHJvY2Vzc2VkTGVuZ3RoKSB7XG4gICAgICAgIC8vIFJlc2V0IGRldGVjdGVkXG4gICAgICAgIHRoaXMudGVybWluYWwucmVzZXQoKTtcbiAgICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZShkYXRhKTtcbiAgICAgICAgdGhpcy5sYXN0UHJvY2Vzc2VkTGVuZ3RoID0gdG90YWxXcml0dGVuO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEV4dHJhY3QgbmV3IGNvbnRlbnQgZnJvbSB0aGUgZW5kIG9mIGJ1ZmZlclxuICAgIGNvbnN0IG5ld0NvbnRlbnQgPSBkYXRhLnNsaWNlKC1uZXdCeXRlc0NvdW50KTtcbiAgICBpZiAobmV3Q29udGVudCkge1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZShuZXdDb250ZW50KTtcbiAgICB9XG4gICAgdGhpcy5sYXN0UHJvY2Vzc2VkTGVuZ3RoID0gdG90YWxXcml0dGVuO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGNvbnN0IGNvbnRhaW5lckVsZW1lbnQgPSB0aGlzLmNvbnRhaW5lcigpLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAvLyBHdWFyZCBhZ2FpbnN0IGluaXRpYWxpemF0aW9uIGluIHZlcnkgc21hbGwgY29udGFpbmVycyAoZS5nLiwgU1Itb25seSAxeDEgcGl4ZWwgaGlkZGVuIGVsZW1lbnRzKVxuICAgIC8vIFRoaXMgcHJldmVudHMgRml0QWRkb24gaXNzdWVzIGFuZCBleGNlc3NpdmUgcHJvY2Vzc2luZyBpbiBoaWRkZW4gcXVlcnkgc2VjdGlvbnNcbiAgICBpZiAoY29udGFpbmVyRWxlbWVudC5vZmZzZXRXaWR0aCA8IE1JTl9DT05UQUlORVJfU0laRSB8fCBjb250YWluZXJFbGVtZW50Lm9mZnNldEhlaWdodCA8IE1JTl9DT05UQUlORVJfU0laRSkge1xuICAgICAgdGhpcy5pbml0U2tpcHBlZER1ZVRvU2l6ZSA9IHRydWU7XG4gICAgICAvLyBSZXRyeSBpbml0aWFsaXphdGlvbiB3aGVuIGNvbnRhaW5lciByZWFjaGVzIG1pbmltdW0gc2l6ZSAoZS5nLiwgYWZ0ZXIgQ1NTL2xheW91dCBzZXR0bGVzKVxuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XG4gICAgICAgIGlmIChjb250YWluZXJFbGVtZW50Lm9mZnNldFdpZHRoID49IE1JTl9DT05UQUlORVJfU0laRSAmJiBjb250YWluZXJFbGVtZW50Lm9mZnNldEhlaWdodCA+PSBNSU5fQ09OVEFJTkVSX1NJWkUpIHtcbiAgICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB0aGlzLmluaXRTa2lwcGVkRHVlVG9TaXplID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5pbml0aWFsaXplVGVybWluYWwoY29udGFpbmVyRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKGNvbnRhaW5lckVsZW1lbnQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaW5pdGlhbGl6ZVRlcm1pbmFsKGNvbnRhaW5lckVsZW1lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplVGVybWluYWwoY29udGFpbmVyRWxlbWVudDogSFRNTERpdkVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBpc0ludGVyYWN0aXZlID0gdGhpcy5zdG9yZS5pbnRlcmFjdGl2ZSgpO1xuICAgIGNvbnN0IHVzZUludGVyYWN0aXZlVGhlbWUgPSB0aGlzLnN0b3JlLnVzZUludGVyYWN0aXZlVGhlbWUoKSB8fCBpc0ludGVyYWN0aXZlO1xuXG4gICAgdGhpcy50ZXJtaW5hbCA9IG5ldyBUZXJtaW5hbCh7XG4gICAgICB0aGVtZTogdXNlSW50ZXJhY3RpdmVUaGVtZSA/IElOVEVSQUNUSVZFX1RIRU1FIDogRElTUExBWV9USEVNRSxcbiAgICAgIHNjcm9sbGJhY2s6IGlzSW50ZXJhY3RpdmUgPyAxMDAwMCA6IDEwMDAsXG4gICAgICBmb250U2l6ZTogdXNlSW50ZXJhY3RpdmVUaGVtZSA/IDE0IDogMTIsXG4gICAgICBmb250RmFtaWx5OiAnXCJGaXJhQ29kZSBOZXJkIEZvbnRcIiwgXCJGaXJhIENvZGVcIiwgXCJTRiBNb25vXCIsIFwiQ2FzY2FkaWEgQ29kZVwiLCBcIkNvbnNvbGFzXCIsIFwiQ291cmllciBOZXdcIiwgbW9ub3NwYWNlJyxcbiAgICAgIGxpbmVIZWlnaHQ6IDEuMixcbiAgICAgIGFsbG93VHJhbnNwYXJlbmN5OiBmYWxzZSxcbiAgICAgIGRpc2FibGVTdGRpbjogIWlzSW50ZXJhY3RpdmUsXG4gICAgICBjdXJzb3JCbGluazogaXNJbnRlcmFjdGl2ZSxcbiAgICAgIGN1cnNvclN0eWxlOiAnYmxvY2snLFxuICAgICAgY29udmVydEVvbDogdHJ1ZSxcbiAgICAgIHJvd3M6IDI0XG4gICAgfSk7XG5cbiAgICB0aGlzLmZpdEFkZG9uID0gbmV3IEZpdEFkZG9uKCk7XG4gICAgdGhpcy50ZXJtaW5hbC5sb2FkQWRkb24odGhpcy5maXRBZGRvbik7XG4gICAgdGhpcy50ZXJtaW5hbC5sb2FkQWRkb24obmV3IFdlYkxpbmtzQWRkb24oKSk7XG5cbiAgICAvLyBJbWFnZUFkZG9uIGZvciBkaXNwbGF5aW5nIGlubGluZSBpbWFnZXMgKFNJWEVMIGFuZCBpVGVybTIgSUlQIHN1cHBvcnQpXG4gICAgLy8gTG9hZGVkIGR5bmFtaWNhbGx5IHRvIGF2b2lkIGJyb3dzZXIgY29tcGF0aWJpbGl0eSBpc3N1ZXNcbiAgICB0aGlzLmxvYWRJbWFnZUFkZG9uKCk7XG5cbiAgICB0aGlzLmdpdGh1YkxpbmtzQWRkb24gPSBuZXcgR2l0SHViTGlua3NBZGRvbigoZXZlbnQsIGlzc3VlTnVtYmVyKSA9PiB7XG4gICAgICB0aGlzLmRpc3BhdGNoKHsgaWQ6IFh0ZXJtQWN0aW9uSWQuR0lUSFVCX0xJTktfQ0xJQ0ssIHBheWxvYWQ6IGlzc3VlTnVtYmVyIH0pO1xuICAgIH0pO1xuICAgIHRoaXMudGVybWluYWwubG9hZEFkZG9uKHRoaXMuZ2l0aHViTGlua3NBZGRvbik7XG5cbiAgICB0aGlzLmZpbGVMaW5rc0FkZG9uID0gbmV3IEZpbGVMaW5rc0FkZG9uKChldmVudCwgZmlsZVBhdGgsIGxpbmUsIGNvbHVtbikgPT4ge1xuICAgICAgaWYgKGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuY3RybEtleSkge1xuICAgICAgICB0aGlzLmRpc3BhdGNoKHsgaWQ6IFh0ZXJtQWN0aW9uSWQuRklMRV9MSU5LX0NMSUNLLCBwYXlsb2FkOiB7IGZpbGVQYXRoLCBsaW5lLCBjb2x1bW4gfSB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnRlcm1pbmFsLmxvYWRBZGRvbih0aGlzLmZpbGVMaW5rc0FkZG9uKTtcblxuICAgIHRoaXMudGVybWluYWwub3Blbihjb250YWluZXJFbGVtZW50KTtcblxuICAgIC8vIFNldHVwIGV2ZW50IGhhbmRsZXJzIGZvciBpbnRlcmFjdGl2ZSBtb2RlXG4gICAgaWYgKGlzSW50ZXJhY3RpdmUpIHtcbiAgICAgIHRoaXMudGVybWluYWwub25EYXRhKChkYXRhKSA9PiB7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2goeyBpZDogWHRlcm1BY3Rpb25JZC5EQVRBX0lOUFVULCBwYXlsb2FkOiBkYXRhIH0pO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnRlcm1pbmFsLm9uUmVzaXplKCh7IGNvbHMsIHJvd3MgfSkgPT4gdGhpcy5kaXNwYXRjaCh7IGlkOiBYdGVybUFjdGlvbklkLlJFU0laRUQsIHBheWxvYWQ6IHsgY29scywgcm93cyB9IH0pKTtcbiAgICB9XG5cbiAgICAvLyBVc2UgUmVzaXplT2JzZXJ2ZXIgd2l0aCBkZWJvdW5jZSB0byB3YWl0IGZvciBjb250YWluZXIgc2l6ZSB0byBzdGFiaWxpemVcbiAgICAvLyAoQ1NTIHRyYW5zaXRpb25zIHRha2UgMzAwLTUwMG1zLCBzbyBmaXhlZCBzZXRUaW1lb3V0KDEwMG1zKSBpcyB0b28gZWFybHkpXG4gICAgbGV0IHN0YWJsZVRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGwgPSBudWxsO1xuICAgIGxldCByZXNpemVUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsID0gbnVsbDtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKCgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICghdGhpcy50ZXJtaW5hbEluaXRpYWxpemVkKCkpIHtcbiAgICAgICAgICB0aGlzLmZpdEFkZG9uLmZpdCgpO1xuICAgICAgICAgIC8vIERlYm91bmNlOiB3YWl0IGZvciBjb250YWluZXIgdG8gc3RvcCBjaGFuZ2luZyBiZWZvcmUgaW5pdGlhbGl6aW5nXG4gICAgICAgICAgaWYgKHN0YWJsZVRpbWVyKSBjbGVhclRpbWVvdXQoc3RhYmxlVGltZXIpO1xuICAgICAgICAgIHN0YWJsZVRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZpdEFkZG9uLmZpdCgpO1xuICAgICAgICAgICAgdGhpcy5tYXJrSW5pdGlhbGl6ZWQoaXNJbnRlcmFjdGl2ZSk7XG4gICAgICAgICAgfSwgMTUwKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0ludGVyYWN0aXZlKSB7XG4gICAgICAgICAgLy8gRGVib3VuY2UgcmVzaXplIHRvIHdhaXQgZm9yIENTUyB0cmFuc2l0aW9ucyB0byBjb21wbGV0ZSAoMzAwbXMpXG4gICAgICAgICAgaWYgKHJlc2l6ZVRpbWVyKSBjbGVhclRpbWVvdXQocmVzaXplVGltZXIpO1xuICAgICAgICAgIHJlc2l6ZVRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZpdEFkZG9uLmZpdCgpO1xuICAgICAgICAgICAgdGhpcy5kaXNwYXRjaCh7IGlkOiBYdGVybUFjdGlvbklkLlJFU0laRUQsIHBheWxvYWQ6IHsgY29sczogdGhpcy5jb2xzLCByb3dzOiB0aGlzLnJvd3MgfSB9KTtcbiAgICAgICAgICB9LCAzMDApO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignRmFpbGVkIHRvIGZpdCB0ZXJtaW5hbDonLCBlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUoY29udGFpbmVyRWxlbWVudCk7XG5cbiAgICAvLyBGYWxsYmFjazogaW5pdGlhbGl6ZSBhZnRlciA1MDBtcyBpZiBSZXNpemVPYnNlcnZlciBoYXNuJ3QgdHJpZ2dlcmVkIHN0YWJsZSBzdGF0ZVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLnRlcm1pbmFsSW5pdGlhbGl6ZWQoKSkge1xuICAgICAgICB0aGlzLmZpdEFkZG9uLmZpdCgpO1xuICAgICAgICB0aGlzLm1hcmtJbml0aWFsaXplZChpc0ludGVyYWN0aXZlKTtcbiAgICAgIH1cbiAgICB9LCA1MDApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuXG4gICAgLy8gUmVtb3ZlIHRlcm1pbmFsIGluc3RhbmNlIGZyb20gd2luZG93IGZvciBFMkUgdGVzdGluZyBjbGVhbnVwXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmICh3aW5kb3cgYXMgYW55KS5fX1hURVJNX0lOU1RBTkNFU19fKSB7XG4gICAgICBjb25zdCBpbnN0YW5jZXMgPSAod2luZG93IGFzIGFueSkuX19YVEVSTV9JTlNUQU5DRVNfXyBhcyBUZXJtaW5hbFtdO1xuICAgICAgY29uc3QgaW5kZXggPSBpbnN0YW5jZXMuaW5kZXhPZih0aGlzLnRlcm1pbmFsKTtcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgaW5zdGFuY2VzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy50ZXJtaW5hbD8uZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXJrSW5pdGlhbGl6ZWQoaXNJbnRlcmFjdGl2ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLnRlcm1pbmFsSW5pdGlhbGl6ZWQoKSkgcmV0dXJuO1xuICAgIHRoaXMudGVybWluYWxJbml0aWFsaXplZC5zZXQodHJ1ZSk7XG4gICAgdGhpcy50ZXJtaW5hbFJlYWR5LmVtaXQodGhpcy50ZXJtaW5hbCk7XG5cbiAgICAvLyBFeHBvc2UgdGVybWluYWwgaW5zdGFuY2UgZm9yIEUyRSB0ZXN0aW5nIChvbmx5IGluIGRldmVsb3BtZW50L3Rlc3QgZW52aXJvbm1lbnRzKVxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgKHdpbmRvdyBhcyBhbnkpLl9fWFRFUk1fSU5TVEFOQ0VTX18gPSAod2luZG93IGFzIGFueSkuX19YVEVSTV9JTlNUQU5DRVNfXyB8fCBbXTtcbiAgICAgICh3aW5kb3cgYXMgYW55KS5fX1hURVJNX0lOU1RBTkNFU19fLnB1c2godGhpcy50ZXJtaW5hbCk7XG4gICAgfVxuXG4gICAgLy8gRGlzcGF0Y2ggaW5pdGlhbCBSRVNJWkVEIGZvciBpbnRlcmFjdGl2ZSBtb2RlXG4gICAgaWYgKGlzSW50ZXJhY3RpdmUpIHtcbiAgICAgIHRoaXMuZGlzcGF0Y2goeyBpZDogWHRlcm1BY3Rpb25JZC5SRVNJWkVELCBwYXlsb2FkOiB7IGNvbHM6IHRoaXMuY29scywgcm93czogdGhpcy5yb3dzIH0gfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkSW1hZ2VBZGRvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBJbWFnZUFkZG9uIH0gPSBhd2FpdCBpbXBvcnQoJ0B4dGVybS9hZGRvbi1pbWFnZScpO1xuICAgICAgY29uc3QgaW1hZ2VBZGRvbk9wdGlvbnMgPSB7XG4gICAgICAgIGVuYWJsZVNpemVSZXBvcnRzOiB0cnVlLFxuICAgICAgICBzaXhlbFN1cHBvcnQ6IHRydWUsXG4gICAgICAgIHNpeGVsU2Nyb2xsaW5nOiB0cnVlLFxuICAgICAgICBzaXhlbFBhbGV0dGVMaW1pdDogMjU2LFxuICAgICAgfTtcbiAgICAgIHRoaXMuaW1hZ2VBZGRvbiA9IG5ldyBJbWFnZUFkZG9uKGltYWdlQWRkb25PcHRpb25zKTtcbiAgICAgIHRoaXMudGVybWluYWwubG9hZEFkZG9uKHRoaXMuaW1hZ2VBZGRvbik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gSW1hZ2VBZGRvbiBub3QgYXZhaWxhYmxlIGluIGJyb3dzZXIgZW52aXJvbm1lbnQgLSB0aGlzIGlzIGV4cGVjdGVkXG4gICAgICBjb25zb2xlLmRlYnVnKCdJbWFnZUFkZG9uIG5vdCBhdmFpbGFibGU6JywgZSk7XG4gICAgfVxuICB9XG5cbiAgLy8gUHVibGljIEFQSVxuICBwdWJsaWMgd3JpdGUodGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy50ZXJtaW5hbD8ud3JpdGUodGV4dCk7XG4gIH1cblxuICBwdWJsaWMgd3JpdGVsbih0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnRlcm1pbmFsPy53cml0ZWxuKHRleHQpO1xuICB9XG5cbiAgcHVibGljIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMudGVybWluYWw/LmNsZWFyKCk7XG4gIH1cblxuICBwdWJsaWMgc2Nyb2xsVG9Cb3R0b20oKTogdm9pZCB7XG4gICAgdGhpcy50ZXJtaW5hbD8uc2Nyb2xsVG9Cb3R0b20oKTtcbiAgfVxuXG4gIHB1YmxpYyBzY3JvbGxUb1RvcCgpOiB2b2lkIHtcbiAgICB0aGlzLnRlcm1pbmFsPy5zY3JvbGxUb1RvcCgpO1xuICB9XG5cbiAgcHVibGljIHNjcm9sbExpbmVzKGxpbmVzOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnRlcm1pbmFsPy5zY3JvbGxMaW5lcyhsaW5lcyk7XG4gIH1cblxuICBwdWJsaWMgZml0KCk6IHZvaWQge1xuICAgIHRoaXMuZml0QWRkb24/LmZpdCgpO1xuICAgIC8vIE9ubHkgZGlzcGF0Y2ggUkVTSVpFRCBhZnRlciBpbml0aWFsaXphdGlvbiB0byBwcmV2ZW50IHNlbmRpbmcgd3JvbmcgY29scy9yb3dzXG4gICAgLy8gZHVyaW5nIENTUyB0cmFuc2l0aW9ucyAoU2Vzc2lvblRlbXBsYXRlVjIubmdBZnRlclZpZXdJbml0IGNhbGxzIGZpdCgpIGJlZm9yZSBsYXlvdXQgc3RhYmlsaXplcylcbiAgICBpZiAodGhpcy50ZXJtaW5hbEluaXRpYWxpemVkKCkgJiYgdGhpcy50ZXJtaW5hbCkge1xuICAgICAgdGhpcy5kaXNwYXRjaCh7IGlkOiBYdGVybUFjdGlvbklkLlJFU0laRUQsIHBheWxvYWQ6IHsgY29sczogdGhpcy5jb2xzLCByb3dzOiB0aGlzLnJvd3MgfSB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtaW5hbD8uY29scyA/PyA4MDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcm93cygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnRlcm1pbmFsPy5yb3dzID8/IDI0O1xuICB9XG5cbiAgcHVibGljIGdldFRlcm1pbmFsKCk6IFRlcm1pbmFsIHwgdW5kZWZpbmVkIHtcbiAgICAvLyBPbmx5IGV4cG9zZSB0ZXJtaW5hbCBhZnRlciBmaXRBZGRvbi5maXQoKSBoYXMgcnVuICh0ZXJtaW5hbEluaXRpYWxpemVkID09PSB0cnVlKVxuICAgIHJldHVybiB0aGlzLnRlcm1pbmFsSW5pdGlhbGl6ZWQoKSA/IHRoaXMudGVybWluYWwgOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogRGlzcGxheSBhbiBpbmxpbmUgaW1hZ2UgdXNpbmcgaVRlcm0yJ3MgSW5saW5lIEltYWdlIFByb3RvY29sXG4gICAqIEBwYXJhbSBiYXNlNjREYXRhIEJhc2U2NCBlbmNvZGVkIGltYWdlIGRhdGEgKFBORywgSlBFRywgZXRjLilcbiAgICogQHBhcmFtIG9wdGlvbnMgSW1hZ2UgZGlzcGxheSBvcHRpb25zXG4gICAqL1xuICBwdWJsaWMgZGlzcGxheUltYWdlKGJhc2U2NERhdGE6IHN0cmluZywgb3B0aW9ucz86IHtcbiAgICB3aWR0aD86IHN0cmluZyB8IG51bWJlcjsgICAgLy8gZS5nLiwgJzUwJScsICdhdXRvJywgb3IgY2VsbCBjb3VudFxuICAgIGhlaWdodD86IHN0cmluZyB8IG51bWJlcjsgICAvLyBlLmcuLCAnMTAnLCAnYXV0bycsIG9yIGNlbGwgY291bnRcbiAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPzogYm9vbGVhbjtcbiAgICBuYW1lPzogc3RyaW5nO1xuICB9KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRlcm1pbmFsKSByZXR1cm47XG5cbiAgICBjb25zdCBhcmdzOiBzdHJpbmdbXSA9IFsnaW5saW5lPTEnXTtcblxuICAgIGlmIChvcHRpb25zPy53aWR0aCkge1xuICAgICAgYXJncy5wdXNoKGB3aWR0aD0ke29wdGlvbnMud2lkdGh9YCk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zPy5oZWlnaHQpIHtcbiAgICAgIGFyZ3MucHVzaChgaGVpZ2h0PSR7b3B0aW9ucy5oZWlnaHR9YCk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zPy5wcmVzZXJ2ZUFzcGVjdFJhdGlvICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGFyZ3MucHVzaChgcHJlc2VydmVBc3BlY3RSYXRpbz0ke29wdGlvbnMucHJlc2VydmVBc3BlY3RSYXRpbyA/IDEgOiAwfWApO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucz8ubmFtZSkge1xuICAgICAgYXJncy5wdXNoKGBuYW1lPSR7YnRvYShvcHRpb25zLm5hbWUpfWApO1xuICAgIH1cblxuICAgIC8vIGlUZXJtMiBJbmxpbmUgSW1hZ2UgUHJvdG9jb2wgZXNjYXBlIHNlcXVlbmNlXG4gICAgY29uc3QgZXNjYXBlU2VxdWVuY2UgPSBgXFx4MWJdMTMzNztGaWxlPSR7YXJncy5qb2luKCc7Jyl9OiR7YmFzZTY0RGF0YX1cXHgwN2A7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZShlc2NhcGVTZXF1ZW5jZSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBJbWFnZUFkZG9uIGluc3RhbmNlIGZvciBhZHZhbmNlZCBpbWFnZSBvcGVyYXRpb25zXG4gICAqL1xuICBwdWJsaWMgZ2V0SW1hZ2VBZGRvbigpOiBJbWFnZUFkZG9uIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5pbWFnZUFkZG9uO1xuICB9XG59XG4iXX0=","/**\n * Utility functions for displaying images in xterm using SIXEL format\n */\n/**\n * Generate ASCII art text using figlet\n * Note: figlet is loaded dynamically as it's not available in browser environments\n */\nexport async function generateAsciiArt(text, font = 'ANSI Shadow') {\n try {\n const figlet = await import('figlet');\n return new Promise((resolve, reject) => {\n figlet.default.text(text, { font: font }, (err, result) => {\n if (err) {\n reject(err);\n return;\n }\n resolve(result || '');\n });\n });\n }\n catch (e) {\n // figlet not available in browser - return simple text\n console.debug('figlet not available:', e);\n return text;\n }\n}\n/**\n * Convert ASCII art text to SVG with transparent background\n */\nexport function asciiArtToSvg(asciiArt, options = {}) {\n const { textColor = '#00FFFF', fontSize = 14 } = options;\n const lines = asciiArt.split('\\n');\n const maxLineLength = Math.max(...lines.map(l => l.length));\n // Calculate dimensions based on monospace font metrics (block chars need more width)\n const charWidth = fontSize * 0.65;\n const lineHeight = fontSize * 1.4;\n const padding = 40;\n const width = Math.ceil(maxLineLength * charWidth) + padding;\n const height = Math.ceil(lines.length * lineHeight) + padding;\n // Build SVG with text elements for each line\n const textElements = lines.map((line, i) => {\n // Escape special XML characters\n const escapedLine = line\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;');\n return `<text x=\"20\" y=\"${20 + (i + 1) * lineHeight}\" fill=\"${textColor}\" xml:space=\"preserve\">${escapedLine}</text>`;\n }).join('\\n ');\n return `<svg width=\"${width}\" height=\"${height}\" xmlns=\"http://www.w3.org/2000/svg\">\n <style>text { font-family: 'Courier New', Consolas, monospace; font-size: ${fontSize}px; white-space: pre; }</style>\n ${textElements}\n</svg>`;\n}\n/**\n * Convert SVG to SIXEL format for xterm display\n */\nexport async function svgToSixel(svgString, options = {}) {\n const { width = 400, height = 200, backgroundColor } = options;\n return new Promise((resolve, reject) => {\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n reject(new Error('Failed to get canvas context'));\n return;\n }\n // Fill background (transparent if not specified)\n if (backgroundColor) {\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(0, 0, width, height);\n }\n const img = new Image();\n const blob = new Blob([svgString], { type: 'image/svg+xml;charset=utf-8' });\n const url = URL.createObjectURL(blob);\n img.onload = () => {\n ctx.drawImage(img, 0, 0, width, height);\n URL.revokeObjectURL(url);\n const imageData = ctx.getImageData(0, 0, width, height);\n const sixelData = imageDataToSixel(imageData);\n resolve(sixelData);\n };\n img.onerror = (error) => {\n URL.revokeObjectURL(url);\n reject(error);\n };\n img.src = url;\n });\n}\n/**\n * Convert ImageData to SIXEL escape sequence\n */\nfunction imageDataToSixel(imageData) {\n const { width, height, data } = imageData;\n // Build color palette (quantize to 16 colors)\n const palette = buildColorPalette(data, 16);\n const colorMap = new Map();\n palette.forEach((color, index) => {\n colorMap.set(color, index);\n });\n // SIXEL header\n let sixel = '\\x1bPq';\n // Define colors in palette\n palette.forEach((color, index) => {\n const [r, g, b] = hexToRgb(color);\n const rPct = Math.round((r / 255) * 100);\n const gPct = Math.round((g / 255) * 100);\n const bPct = Math.round((b / 255) * 100);\n sixel += `#${index};2;${rPct};${gPct};${bPct}`;\n });\n // Process image in bands of 6 rows\n for (let bandY = 0; bandY < height; bandY += 6) {\n for (let colorIdx = 0; colorIdx < palette.length; colorIdx++) {\n const color = palette[colorIdx];\n let rowData = '';\n let hasPixels = false;\n rowData += `#${colorIdx}`;\n for (let x = 0; x < width; x++) {\n let sixelValue = 0;\n for (let dy = 0; dy < 6; dy++) {\n const y = bandY + dy;\n if (y >= height)\n continue;\n const pixelIndex = (y * width + x) * 4;\n const r = data[pixelIndex];\n const g = data[pixelIndex + 1];\n const b = data[pixelIndex + 2];\n const a = data[pixelIndex + 3];\n if (a < 128)\n continue;\n const pixelColor = rgbToHex(r, g, b);\n const nearestColor = findNearestColor(pixelColor, palette);\n if (nearestColor === color) {\n sixelValue |= (1 << dy);\n hasPixels = true;\n }\n }\n rowData += String.fromCharCode(63 + sixelValue);\n }\n if (hasPixels) {\n sixel += rowData;\n sixel += '$';\n }\n }\n if (bandY + 6 < height) {\n sixel += '-';\n }\n }\n sixel += '\\x1b\\\\';\n return sixel;\n}\nfunction buildColorPalette(data, maxColors) {\n const colorCounts = new Map();\n for (let i = 0; i < data.length; i += 4) {\n const r = data[i];\n const g = data[i + 1];\n const b = data[i + 2];\n const a = data[i + 3];\n if (a < 128)\n continue;\n const qr = Math.floor(r / 16) * 16;\n const qg = Math.floor(g / 16) * 16;\n const qb = Math.floor(b / 16) * 16;\n const color = rgbToHex(qr, qg, qb);\n colorCounts.set(color, (colorCounts.get(color) || 0) + 1);\n }\n return Array.from(colorCounts.entries())\n .sort((a, b) => b[1] - a[1])\n .slice(0, maxColors)\n .map(([color]) => color);\n}\nfunction rgbToHex(r, g, b) {\n return `#${r.toString(16).padStart(2, '0')}${g.toString(16).padStart(2, '0')}${b.toString(16).padStart(2, '0')}`;\n}\nfunction hexToRgb(hex) {\n const match = hex.match(/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i);\n if (!match)\n return [0, 0, 0];\n return [parseInt(match[1], 16), parseInt(match[2], 16), parseInt(match[3], 16)];\n}\nfunction findNearestColor(targetHex, palette) {\n const [tr, tg, tb] = hexToRgb(targetHex);\n let nearest = palette[0];\n let minDist = Infinity;\n for (const color of palette) {\n const [r, g, b] = hexToRgb(color);\n const dist = (tr - r) ** 2 + (tg - g) ** 2 + (tb - b) ** 2;\n if (dist < minDist) {\n minDist = dist;\n nearest = color;\n }\n }\n return nearest;\n}\n/**\n * Generate MACHINA ASCII art banner as SIXEL\n */\nexport async function getMachinaAsciiArtSixel(options = {}) {\n // Generate ASCII art for \"MACHINA\"\n const machinaArt = await generateAsciiArt('MACHINA', 'ANSI Shadow');\n // Convert to SVG with cyan color (terminal style)\n const fontSize = 14;\n const svg = asciiArtToSvg(machinaArt, {\n textColor: options.textColor || '#00FFFF',\n fontSize\n });\n // Calculate appropriate dimensions matching asciiArtToSvg calculation\n const lines = machinaArt.split('\\n');\n const maxLineLength = Math.max(...lines.map(l => l.length));\n const charWidth = fontSize * 0.65;\n const lineHeight = fontSize * 1.4;\n const padding = 40;\n const defaultWidth = Math.ceil(maxLineLength * charWidth) + padding;\n const defaultHeight = Math.ceil(lines.length * lineHeight) + padding;\n return svgToSixel(svg, {\n width: options.width || defaultWidth,\n height: options.height || defaultHeight,\n backgroundColor: options.backgroundColor || '#0a0a0a',\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AeHhtYWNoaW5hL2NvbXBvbmVudHMvc3JjL2xpYi9vcmdhbmlzbXMveHRlcm0vaW1hZ2UudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFTSDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGdCQUFnQixDQUFDLElBQVksRUFBRSxJQUFJLEdBQUcsYUFBYTtJQUN2RSxJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0QyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxJQUFXLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRTtnQkFDL0QsSUFBSSxHQUFHLEVBQUUsQ0FBQztvQkFDUixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ1osT0FBTztnQkFDVCxDQUFDO2dCQUNELE9BQU8sQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUM7WUFDeEIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1gsdURBQXVEO1FBQ3ZELE9BQU8sQ0FBQyxLQUFLLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDMUMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsUUFBZ0IsRUFDaEIsVUFBcUQsRUFBRTtJQUV2RCxNQUFNLEVBQUUsU0FBUyxHQUFHLFNBQVMsRUFBRSxRQUFRLEdB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LEVBQUUsQ0FBQztJQUNwQixNQUFNLEdBQUcsR0FBRyxhQUFhLENBQUMsVUFBVSxFQUFFO1FBQ3BDLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUyxJQUFJLFNBQVM7UUFDekMsUUFBUTtLQUNULENBQUMsQ0FBQztJQUVILHNFQUFzRTtJQUN0RSxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDNUQsTUFBTSxTQUFTLEdBQUcsUUFBUSxHQUFHLElBQUksQ0FBQztJQUNsQyxNQUFNLFVBQVUsR0FBRyxRQUFRLEdBQUcsR0FBRyxDQUFDO0lBQ2xDLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNuQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUMsR0FBRyxPQUFPLENBQUM7SUFDcEUsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxHQUFHLE9BQU8sQ0FBQztJQUVyRSxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDckIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLElBQUksWUFBWTtRQUNwQyxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sSUFBSSxhQUFhO1FBQ3ZDLGVBQWUsRUFBRSxPQUFPLENBQUMsZUFBZSxJQUFJLFNBQVM7S0FDdEQsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVXRpbGl0eSBmdW5jdGlvbnMgZm9yIGRpc3BsYXlpbmcgaW1hZ2VzIGluIHh0ZXJtIHVzaW5nIFNJWEVMIGZvcm1hdFxuICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgU3ZnVG9TaXhlbE9wdGlvbnMge1xuICB3aWR0aD86IG51bWJlcjtcbiAgaGVpZ2h0PzogbnVtYmVyO1xuICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XG4gIHRleHRDb2xvcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBBU0NJSSBhcnQgdGV4dCB1c2luZyBmaWdsZXRcbiAqIE5vdGU6IGZpZ2xldCBpcyBsb2FkZWQgZHluYW1pY2FsbHkgYXMgaXQncyBub3QgYXZhaWxhYmxlIGluIGJyb3dzZXIgZW52aXJvbm1lbnRzXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUFzY2lpQXJ0KHRleHQ6IHN0cmluZywgZm9udCA9ICdBTlNJIFNoYWRvdycpOiBQcm9taXNlPHN0cmluZz4ge1xuICB0cnkge1xuICAgIGNvbnN0IGZpZ2xldCA9IGF3YWl0IGltcG9ydCgnZmlnbGV0Jyk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGZpZ2xldC5kZWZhdWx0LnRleHQodGV4dCwgeyBmb250OiBmb250IGFzIGFueSB9LCAoZXJyLCByZXN1bHQpID0+IHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXNvbHZlKHJlc3VsdCB8fCAnJyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIGZpZ2xldCBub3QgYXZhaWxhYmxlIGluIGJyb3dzZXIgLSByZXR1cm4gc2ltcGxlIHRleHRcbiAgICBjb25zb2xlLmRlYnVnKCdmaWdsZXQgbm90IGF2YWlsYWJsZTonLCBlKTtcbiAgICByZXR1cm4gdGV4dDtcbiAgfVxufVxuXG4vKipcbiAqIENvbnZlcnQgQVNDSUkgYXJ0IHRleHQgdG8gU1ZHIHdpdGggdHJhbnNwYXJlbnQgYmFja2dyb3VuZFxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNjaWlBcnRUb1N2ZyhcbiAgYXNjaWlBcnQ6IHN0cmluZyxcbiAgb3B0aW9uczogeyB0ZXh0Q29sb3I/OiBzdHJpbmc7IGZvbnRTaXplPzogbnVtYmVyIH0gPSB7fVxuKTogc3RyaW5nIHtcbiAgY29uc3QgeyB0ZXh0Q29sb3IgPSAnIzAwRkZGRicsIGZvbnRTaXplID0gMTQgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3QgbGluZXMgPSBhc2NpaUFydC5zcGxpdCgnXFxuJyk7XG4gIGNvbnN0IG1heExpbmVMZW5ndGggPSBNYXRoLm1heCguLi5saW5lcy5tYXAobCA9PiBsLmxlbmd0aCkpO1xuXG4gIC8vIENhbGN1bGF0ZSBkaW1lbnNpb25zIGJhc2VkIG9uIG1vbm9zcGFjZSBmb250IG1ldHJpY3MgKGJsb2NrIGNoYXJzIG5lZWQgbW9yZSB3aWR0aClcbiAgY29uc3QgY2hhcldpZHRoID0gZm9udFNpemUgKiAwLjY1O1xuICBjb25zdCBsaW5lSGVpZ2h0ID0gZm9udFNpemUgKiAxLjQ7XG4gIGNvbnN0IHBhZGRpbmcgPSA0MDtcbiAgY29uc3Qgd2lkdGggPSBNYXRoLmNlaWwobWF4TGluZUxlbmd0aCAqIGNoYXJXaWR0aCkgKyBwYWRkaW5nO1xuICBjb25zdCBoZWlnaHQgPSBNYXRoLmNlaWwobGluZXMubGVuZ3RoICogbGluZUhlaWdodCkgKyBwYWRkaW5nO1xuXG4gIC8vIEJ1aWxkIFNWRyB3aXRoIHRleHQgZWxlbWVudHMgZm9yIGVhY2ggbGluZVxuICBjb25zdCB0ZXh0RWxlbWVudHMgPSBsaW5lcy5tYXAoKGxpbmUsIGkpID0+IHtcbiAgICAvLyBFc2NhcGUgc3BlY2lhbCBYTUwgY2hhcmFjdGVyc1xuICAgIGNvbnN0IGVzY2FwZWRMaW5lID0gbGluZVxuICAgICAgLnJlcGxhY2UoLyYvZywgJyZhbXA7JylcbiAgICAgIC5yZXBsYWNlKC88L2csICcmbHQ7JylcbiAgICAgIC5yZXBsYWNlKC8+L2csICcmZ3Q7JylcbiAgICAgIC5yZXBsYWNlKC9cIi9nLCAnJnF1b3Q7Jyk7XG5cbiAgICByZXR1cm4gYDx0ZXh0IHg9XCIyMFwiIHk9XCIkezIwICsgKGkgKyAxKSAqIGxpbmVIZWlnaHR9XCIgZmlsbD1cIiR7dGV4dENvbG9yfVwiIHhtbDpzcGFjZT1cInByZXNlcnZlXCI+JHtlc2NhcGVkTGluZX08L3RleHQ+YDtcbiAgfSkuam9pbignXFxuICAnKTtcblxuICByZXR1cm4gYDxzdmcgd2lkdGg9XCIke3dpZHRofVwiIGhlaWdodD1cIiR7aGVpZ2h0fVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgPHN0eWxlPnRleHQgeyBmb250LWZhbWlseTogJ0NvdXJpZXIgTmV3JywgQ29uc29sYXMsIG1vbm9zcGFjZTsgZm9udC1zaXplOiAke2ZvbnRTaXplfXB4OyB3aGl0ZS1zcGFjZTogcHJlOyB9PC9zdHlsZT5cbiAgJHt0ZXh0RWxlbWVudHN9XG48L3N2Zz5gO1xufVxuXG4vKipcbiAqIENvbnZlcnQgU1ZHIHRvIFNJWEVMIGZvcm1hdCBmb3IgeHRlcm0gZGlzcGxheVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3ZnVG9TaXhlbChcbiAgc3ZnU3RyaW5nOiBzdHJpbmcsXG4gIG9wdGlvbnM6IFN2Z1RvU2l4ZWxPcHRpb25zID0ge31cbik6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHsgd2lkdGggPSA0MDAsIGhlaWdodCA9IDIwMCwgYmFja2dyb3VuZENvbG9yIH0gPSBvcHRpb25zO1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgY2FudmFzLndpZHRoID0gd2lkdGg7XG4gICAgY2FudmFzLmhlaWdodCA9IGhlaWdodDtcbiAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcblxuICAgIGlmICghY3R4KSB7XG4gICAgICByZWplY3QobmV3IEVycm9yKCdGYWlsZWQgdG8gZ2V0IGNhbnZhcyBjb250ZXh0JykpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEZpbGwgYmFja2dyb3VuZCAodHJhbnNwYXJlbnQgaWYgbm90IHNwZWNpZmllZClcbiAgICBpZiAoYmFja2dyb3VuZENvbG9yKSB7XG4gICAgICBjdHguZmlsbFN0eWxlID0gYmFja2dyb3VuZENvbG9yO1xuICAgICAgY3R4LmZpbGxSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuICAgIH1cblxuICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpO1xuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbc3ZnU3RyaW5nXSwgeyB0eXBlOiAnaW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04JyB9KTtcbiAgICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuXG4gICAgaW1nLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgIGN0eC5kcmF3SW1hZ2UoaW1nLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcblxuICAgICAgY29uc3QgaW1hZ2VEYXRhID0gY3R4LmdldEltYWdlRGF0YSgwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgIGNvbnN0IHNpeGVsRGF0YSA9IGltYWdlRGF0YVRvU2l4ZWwoaW1hZ2VEYXRhKTtcbiAgICAgIHJlc29sdmUoc2l4ZWxEYXRhKTtcbiAgICB9O1xuXG4gICAgaW1nLm9uZXJyb3IgPSAoZXJyb3IpID0+IHtcbiAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbiAgICAgIHJlamVjdChlcnJvcik7XG4gICAgfTtcblxuICAgIGltZy5zcmMgPSB1cmw7XG4gIH0pO1xufVxuXG4vKipcbiAqIENvbnZlcnQgSW1hZ2VEYXRhIHRvIFNJWEVMIGVzY2FwZSBzZXF1ZW5jZVxuICovXG5mdW5jdGlvbiBpbWFnZURhdGFUb1NpeGVsKGltYWdlRGF0YTogSW1hZ2VEYXRhKTogc3RyaW5nIHtcbiAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0LCBkYXRhIH0gPSBpbWFnZURhdGE7XG5cbiAgLy8gQnVpbGQgY29sb3IgcGFsZXR0ZSAocXVhbnRpemUgdG8gMTYgY29sb3JzKVxuICBjb25zdCBwYWxldHRlID0gYnVpbGRDb2xvclBhbGV0dGUoZGF0YSwgMTYpO1xuICBjb25zdCBjb2xvck1hcCA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG4gIHBhbGV0dGUuZm9yRWFjaCgoY29sb3IsIGluZGV4KSA9PiB7XG4gICAgY29sb3JNYXAuc2V0KGNvbG9yLCBpbmRleCk7XG4gIH0pO1xuXG4gIC8vIFNJWEVMIGhlYWRlclxuICBsZXQgc2l4ZWwgPSAnXFx4MWJQcSc7XG5cbiAgLy8gRGVmaW5lIGNvbG9ycyBpbiBwYWxldHRlXG4gIHBhbGV0dGUuZm9yRWFjaCgoY29sb3IsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgW3IsIGcsIGJdID0gaGV4VG9SZ2IoY29sb3IpO1xuICAgIGNvbnN0IHJQY3QgPSBNYXRoLnJvdW5kKChyIC8gMjU1KSAqIDEwMCk7XG4gICAgY29uc3QgZ1BjdCA9IE1hdGgucm91bmQoKGcgLyAyNTUpICogMTAwKTtcbiAgICBjb25zdCBiUGN0ID0gTWF0aC5yb3VuZCgoYiAvIDI1NSkgKiAxMDApO1xuICAgIHNpeGVsICs9IGAjJHtpbmRleH07Mjske3JQY3R9OyR7Z1BjdH07JHtiUGN0fWA7XG4gIH0pO1xuXG4gIC8vIFByb2Nlc3MgaW1hZ2UgaW4gYmFuZHMgb2YgNiByb3dzXG4gIGZvciAobGV0IGJhbmRZID0gMDsgYmFuZFkgPCBoZWlnaHQ7IGJhbmRZICs9IDYpIHtcbiAgICBmb3IgKGxldCBjb2xvcklkeCA9IDA7IGNvbG9ySWR4IDwgcGFsZXR0ZS5sZW5ndGg7IGNvbG9ySWR4KyspIHtcbiAgICAgIGNvbnN0IGNvbG9yID0gcGFsZXR0ZVtjb2xvcklkeF07XG4gICAgICBsZXQgcm93RGF0YSA9ICcnO1xuICAgICAgbGV0IGhhc1BpeGVscyA9IGZhbHNlO1xuXG4gICAgICByb3dEYXRhICs9IGAjJHtjb2xvcklkeH1gO1xuXG4gICAgICBmb3IgKGxldCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHtcbiAgICAgICAgbGV0IHNpeGVsVmFsdWUgPSAwO1xuXG4gICAgICAgIGZvciAobGV0IGR5ID0gMDsgZHkgPCA2OyBkeSsrKSB7XG4gICAgICAgICAgY29uc3QgeSA9IGJhbmRZICsgZHk7XG4gICAgICAgICAgaWYgKHkgPj0gaGVpZ2h0KSBjb250aW51ZTtcblxuICAgICAgICAgIGNvbnN0IHBpeGVsSW5kZXggPSAoeSAqIHdpZHRoICsgeCkgKiA0O1xuICAgICAgICAgIGNvbnN0IHIgPSBkYXRhW3BpeGVsSW5kZXhdO1xuICAgICAgICAgIGNvbnN0IGcgPSBkYXRhW3BpeGVsSW5kZXggKyAxXTtcbiAgICAgICAgICBjb25zdCBiID0gZGF0YVtwaXhlbEluZGV4ICsgMl07XG4gICAgICAgICAgY29uc3QgYSA9IGRhdGFbcGl4ZWxJbmRleCArIDNdO1xuXG4gICAgICAgICAgaWYgKGEgPCAxMjgpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgY29uc3QgcGl4ZWxDb2xvciA9IHJnYlRvSGV4KHIsIGcsIGIpO1xuICAgICAgICAgIGNvbnN0IG5lYXJlc3RDb2xvciA9IGZpbmROZWFyZXN0Q29sb3IocGl4ZWxDb2xvciwgcGFsZXR0ZSk7XG5cbiAgICAgICAgICBpZiAobmVhcmVzdENvbG9yID09PSBjb2xvcikge1xuICAgICAgICAgICAgc2l4ZWxWYWx1ZSB8PSAoMSA8PCBkeSk7XG4gICAgICAgICAgICBoYXNQaXhlbHMgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJvd0RhdGEgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSg2MyArIHNpeGVsVmFsdWUpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaGFzUGl4ZWxzKSB7XG4gICAgICAgIHNpeGVsICs9IHJvd0RhdGE7XG4gICAgICAgIHNpeGVsICs9ICckJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoYmFuZFkgKyA2IDwgaGVpZ2h0KSB7XG4gICAgICBzaXhlbCArPSAnLSc7XG4gICAgfVxuICB9XG5cbiAgc2l4ZWwgKz0gJ1xceDFiXFxcXCc7XG4gIHJldHVybiBzaXhlbDtcbn1cblxuZnVuY3Rpb24gYnVpbGRDb2xvclBhbGV0dGUoZGF0YTogVWludDhDbGFtcGVkQXJyYXksIG1heENvbG9yczogbnVtYmVyKTogc3RyaW5nW10ge1xuICBjb25zdCBjb2xvckNvdW50cyA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSArPSA0KSB7XG4gICAgY29uc3QgciA9IGRhdGFbaV07XG4gICAgY29uc3QgZyA9IGRhdGFbaSArIDFdO1xuICAgIGNvbnN0IGIgPSBkYXRhW2kgKyAyXTtcbiAgICBjb25zdCBhID0gZGF0YVtpICsgM107XG5cbiAgICBpZiAoYSA8IDEyOCkgY29udGludWU7XG5cbiAgICBjb25zdCBxciA9IE1hdGguZmxvb3IociAvIDE2KSAqIDE2O1xuICAgIGNvbnN0IHFnID0gTWF0aC5mbG9vcihnIC8gMTYpICogMTY7XG4gICAgY29uc3QgcWIgPSBNYXRoLmZsb29yKGIgLyAxNikgKiAxNjtcbiAgICBjb25zdCBjb2xvciA9IHJnYlRvSGV4KHFyLCBxZywgcWIpO1xuXG4gICAgY29sb3JDb3VudHMuc2V0KGNvbG9yLCAoY29sb3JDb3VudHMuZ2V0KGNvbG9yKSB8fCAwKSArIDEpO1xuICB9XG5cbiAgcmV0dXJuIEFycmF5LmZyb20oY29sb3JDb3VudHMuZW50cmllcygpKVxuICAgIC5zb3J0KChhLCBiKSA9PiBiWzFdIC0gYVsxXSlcbiAgICAuc2xpY2UoMCwgbWF4Q29sb3JzKVxuICAgIC5tYXAoKFtjb2xvcl0pID0+IGNvbG9yKTtcbn1cblxuZnVuY3Rpb24gcmdiVG9IZXgocjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlcik6IHN0cmluZyB7XG4gIHJldHVybiBgIyR7ci50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKX0ke2cudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsICcwJyl9JHtiLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpfWA7XG59XG5cbmZ1bmN0aW9uIGhleFRvUmdiKGhleDogc3RyaW5nKTogW251bWJlciwgbnVtYmVyLCBudW1iZXJdIHtcbiAgY29uc3QgbWF0Y2ggPSBoZXgubWF0Y2goL14jKFswLTlhLWZdezJ9KShbMC05YS1mXXsyfSkoWzAtOWEtZl17Mn0pJC9pKTtcbiAgaWYgKCFtYXRjaCkgcmV0dXJuIFswLCAwLCAwXTtcbiAgcmV0dXJuIFtwYXJzZUludChtYXRjaFsxXSwgMTYpLCBwYXJzZUludChtYXRjaFsyXSwgMTYpLCBwYXJzZUludChtYXRjaFszXSwgMTYpXTtcbn1cblxuZnVuY3Rpb24gZmluZE5lYXJlc3RDb2xvcih0YXJnZXRIZXg6IHN0cmluZywgcGFsZXR0ZTogc3RyaW5nW10pOiBzdHJpbmcge1xuICBjb25zdCBbdHIsIHRnLCB0Yl0gPSBoZXhUb1JnYih0YXJnZXRIZXgpO1xuICBsZXQgbmVhcmVzdCA9IHBhbGV0dGVbMF07XG4gIGxldCBtaW5EaXN0ID0gSW5maW5pdHk7XG5cbiAgZm9yIChjb25zdCBjb2xvciBvZiBwYWxldHRlKSB7XG4gICAgY29uc3QgW3IsIGcsIGJdID0gaGV4VG9SZ2IoY29sb3IpO1xuICAgIGNvbnN0IGRpc3QgPSAodHIgLSByKSAqKiAyICsgKHRnIC0gZykgKiogMiArICh0YiAtIGIpICoqIDI7XG4gICAgaWYgKGRpc3QgPCBtaW5EaXN0KSB7XG4gICAgICBtaW5EaXN0ID0gZGlzdDtcbiAgICAgIG5lYXJlc3QgPSBjb2xvcjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmVhcmVzdDtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBNQUNISU5BIEFTQ0lJIGFydCBiYW5uZXIgYXMgU0lYRUxcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE1hY2hpbmFBc2NpaUFydFNpeGVsKFxuICBvcHRpb25zOiBTdmdUb1NpeGVsT3B0aW9ucyA9IHt9XG4pOiBQcm9taXNlPHN0cmluZz4ge1xuICAvLyBHZW5lcmF0ZSBBU0NJSSBhcnQgZm9yIFwiTUFDSElOQVwiXG4gIGNvbnN0IG1hY2hpbmFBcnQgPSBhd2FpdCBnZW5lcmF0ZUFzY2lpQXJ0KCdNQUNISU5BJywgJ0FOU0kgU2hhZG93Jyk7XG5cbiAgLy8gQ29udmVydCB0byBTVkcgd2l0aCBjeWFuIGNvbG9yICh0ZXJtaW5hbCBzdHlsZSlcbiAgY29uc3QgZm9udFNpemUgPSAxNDtcbiAgY29uc3Qgc3ZnID0gYXNjaWlBcnRUb1N2ZyhtYWNoaW5hQXJ0LCB7XG4gICAgdGV4dENvbG9yOiBvcHRpb25zLnRleHRDb2xvciB8fCAnIzAwRkZGRicsXG4gICAgZm9udFNpemVcbiAgfSk7XG5cbiAgLy8gQ2FsY3VsYXRlIGFwcHJvcHJpYXRlIGRpbWVuc2lvbnMgbWF0Y2hpbmcgYXNjaWlBcnRUb1N2ZyBjYWxjdWxhdGlvblxuICBjb25zdCBsaW5lcyA9IG1hY2hpbmFBcnQuc3BsaXQoJ1xcbicpO1xuICBjb25zdCBtYXhMaW5lTGVuZ3RoID0gTWF0aC5tYXgoLi4ubGluZXMubWFwKGwgPT4gbC5sZW5ndGgpKTtcbiAgY29uc3QgY2hhcldpZHRoID0gZm9udFNpemUgKiAwLjY1O1xuICBjb25zdCBsaW5lSGVpZ2h0ID0gZm9udFNpemUgKiAxLjQ7XG4gIGNvbnN0IHBhZGRpbmcgPSA0MDtcbiAgY29uc3QgZGVmYXVsdFdpZHRoID0gTWF0aC5jZWlsKG1heExpbmVMZW5ndGggKiBjaGFyV2lkdGgpICsgcGFkZGluZztcbiAgY29uc3QgZGVmYXVsdEhlaWdodCA9IE1hdGguY2VpbChsaW5lcy5sZW5ndGggKiBsaW5lSGVpZ2h0KSArIHBhZGRpbmc7XG5cbiAgcmV0dXJuIHN2Z1RvU2l4ZWwoc3ZnLCB7XG4gICAgd2lkdGg6IG9wdGlvbnMud2lkdGggfHwgZGVmYXVsdFdpZHRoLFxuICAgIGhlaWdodDogb3B0aW9ucy5oZWlnaHQgfHwgZGVmYXVsdEhlaWdodCxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IG9wdGlvbnMuYmFja2dyb3VuZENvbG9yIHx8ICcjMGEwYTBhJyxcbiAgfSk7XG59XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHhtYWNoaW5hLWNvbXBvbmVudHMtb3JnYW5pc21zLXh0ZXJtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQHh4bWFjaGluYS9jb21wb25lbnRzL3NyYy9saWIvb3JnYW5pc21zL3h0ZXJtL3h4bWFjaGluYS1jb21wb25lbnRzLW9yZ2FuaXNtcy14dGVybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":["i1.XtermOrganismStore"],"mappings":"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"}
1
+ {"version":3,"file":"xxmachina-components-organisms-xterm.mjs","sources":["../../../../../packages/@xxmachina/components/src/lib/organisms/xterm/web-link.provider.ts","../../../../../packages/@xxmachina/components/src/lib/organisms/xterm/web-links.addon.ts","../../../../../packages/@xxmachina/components/src/lib/organisms/xterm/github-link.provider.ts","../../../../../packages/@xxmachina/components/src/lib/organisms/xterm/github-links.addon.ts","../../../../../packages/@xxmachina/components/src/lib/organisms/xterm/file-link.provider.ts","../../../../../packages/@xxmachina/components/src/lib/organisms/xterm/file-links.addon.ts","../../../../../packages/@xxmachina/components/src/lib/organisms/xterm/xterm.organism.store.ts","../../../../../packages/@xxmachina/components/src/lib/organisms/xterm/xterm.organism.ts","../../../../../packages/@xxmachina/components/src/lib/organisms/xterm/image.utils.ts","../../../../../packages/@xxmachina/components/src/lib/organisms/xterm/xxmachina-components-organisms-xterm.ts"],"sourcesContent":["import { ILinkProvider, ILink, Terminal } from '@xterm/xterm';\n\nconst URL_REGEX = /https?:\\/\\/[^\\s<>'\")\\]]+/g;\nconst MAX_SCAN_LINES = 30;\n\n/**\n * Link provider that detects URLs spanning multiple terminal lines.\n *\n * Handles two wrapping scenarios:\n * 1. Terminal wrapping (isWrapped=true) - xterm splits long output\n * 2. Application wrapping (isWrapped=false) - e.g. Claude Code/Ink explicitly\n * breaks lines at some width. Detected by heuristic: previous line ends\n * without whitespace and current line starts without whitespace.\n */\nexport class WebLinkProvider implements ILinkProvider {\n constructor(\n private readonly _terminal: Terminal,\n private readonly _handler: (event: MouseEvent, uri: string) => void = (_, uri) => {\n window.open(uri, '_blank', 'noopener');\n }\n ) {}\n\n provideLinks(bufferLineNumber: number, callback: (links: ILink[] | undefined) => void): void {\n const buffer = this._terminal.buffer.active;\n\n // Find the start of this line group (0-indexed)\n let startY = bufferLineNumber - 1;\n while (startY > 0\n && (bufferLineNumber - 1 - startY) < MAX_SCAN_LINES\n && this._isLineContinuation(startY)\n ) {\n startY--;\n }\n\n // Collect text from all lines in the group\n const lineTexts: string[] = [];\n let y = startY;\n do {\n const line = buffer.getLine(y);\n if (!line) break;\n lineTexts.push(line.translateToString(true));\n y++;\n } while (\n y < buffer.length\n && (y - startY) < MAX_SCAN_LINES\n && this._isLineContinuation(y)\n );\n\n const fullText = lineTexts.join('');\n\n URL_REGEX.lastIndex = 0;\n let match: RegExpExecArray | null;\n const links: ILink[] = [];\n\n while ((match = URL_REGEX.exec(fullText)) !== null) {\n const startPos = this._offsetToPos(match.index, startY, lineTexts);\n const endPos = this._offsetToPos(match.index + match[0].length - 1, startY, lineTexts);\n if (!startPos || !endPos) continue;\n\n links.push({\n text: match[0],\n range: {\n start: { x: startPos.x + 1, y: startPos.y + 1 },\n end: { x: endPos.x + 1, y: endPos.y + 1 },\n },\n activate: (event, text) => this._handler(event, text),\n });\n }\n\n callback(links.length > 0 ? links : undefined);\n }\n\n /**\n * Determine if a line is a continuation of the previous line.\n * True when either:\n * - xterm marks it as wrapped (isWrapped=true), OR\n * - no whitespace at line boundary (previous line ends without space,\n * current line starts without space) suggesting mid-token line break\n */\n private _isLineContinuation(lineIdx: number): boolean {\n const buffer = this._terminal.buffer.active;\n const line = buffer.getLine(lineIdx);\n if (!line) return false;\n if (line.isWrapped) return true;\n\n if (lineIdx === 0) return false;\n const prevLine = buffer.getLine(lineIdx - 1);\n if (!prevLine) return false;\n\n const prevText = prevLine.translateToString(true);\n const currentText = line.translateToString(true);\n return (\n prevText.length > 0\n && !/\\s$/.test(prevText)\n && currentText.length > 0\n && !/^\\s/.test(currentText)\n );\n }\n\n /** Convert a character offset in the concatenated text to a buffer position. */\n private _offsetToPos(\n offset: number, startY: number, lineTexts: string[],\n ): { x: number; y: number } | null {\n let remaining = offset;\n for (let i = 0; i < lineTexts.length; i++) {\n if (remaining < lineTexts[i].length) {\n return { x: remaining, y: startY + i };\n }\n remaining -= lineTexts[i].length;\n }\n const lastIdx = lineTexts.length - 1;\n return { x: lineTexts[lastIdx].length, y: startY + lastIdx };\n }\n}\n","import { Terminal, ITerminalAddon, IDisposable } from '@xterm/xterm';\nimport { WebLinkProvider } from './web-link.provider';\n\n/**\n * Drop-in replacement for @xterm/addon-web-links that supports\n * URLs spanning wrapped terminal lines.\n */\nexport class WebLinksAddon implements ITerminalAddon {\n private _linkProvider?: IDisposable;\n\n constructor(\n private readonly _handler?: (event: MouseEvent, uri: string) => void\n ) {}\n\n activate(terminal: Terminal): void {\n this._linkProvider = terminal.registerLinkProvider(\n new WebLinkProvider(terminal, this._handler)\n );\n }\n\n dispose(): void {\n this._linkProvider?.dispose();\n }\n}\n","import { ILinkProvider, ILink, Terminal } from '@xterm/xterm';\n\nexport interface GitHubLinkActivateHandler {\n (event: MouseEvent, issueNumber: number): void;\n}\n\nexport class GitHubLinkProvider implements ILinkProvider {\n // #番号 形式を検出(負の先読みで数字以外が続く場合にマッチ)\n private readonly GITHUB_ISSUE_REGEX = /(?:^|[\\s(])#(\\d+)(?!\\d)/g;\n\n constructor(\n private readonly _terminal: Terminal,\n private readonly _handler: GitHubLinkActivateHandler\n ) {}\n\n provideLinks(bufferLineNumber: number, callback: (links: ILink[] | undefined) => void): void {\n const lineIndex = bufferLineNumber - 1;\n const line = this._terminal.buffer.active.getLine(lineIndex);\n if (!line) {\n callback(undefined);\n return;\n }\n\n const text = line.translateToString(true);\n const links: ILink[] = [];\n\n this.GITHUB_ISSUE_REGEX.lastIndex = 0;\n\n let match: RegExpExecArray | null;\n while ((match = this.GITHUB_ISSUE_REGEX.exec(text)) !== null) {\n const issueNumber = parseInt(match[1], 10);\n const fullMatch = match[0];\n const issueRef = `#${match[1]}`;\n\n // マッチ開始位置を計算(プレフィックス文字を除く)\n const stringStartIndex = match.index + (fullMatch.length - issueRef.length);\n\n const [, startX] = this._mapStrIdx(lineIndex, 0, stringStartIndex);\n const [, endX] = this._mapStrIdx(lineIndex, startX, issueRef.length);\n\n if (startX === -1 || endX === -1) continue;\n\n links.push({\n text: issueRef,\n range: {\n start: { x: startX + 1, y: bufferLineNumber },\n end: { x: endX, y: bufferLineNumber }\n },\n activate: (event) => {\n this._handler(event, issueNumber);\n }\n });\n }\n\n callback(links.length > 0 ? links : undefined);\n }\n\n private _mapStrIdx(lineIndex: number, rowIndex: number, stringIndex: number): [number, number] {\n const buf = this._terminal.buffer.active;\n const cell = buf.getNullCell();\n let start = rowIndex;\n\n while (stringIndex) {\n const line = buf.getLine(lineIndex);\n if (!line) return [-1, -1];\n\n for (let i = start; i < line.length; ++i) {\n line.getCell(i, cell);\n const chars = cell.getChars();\n const width = cell.getWidth();\n if (width) {\n stringIndex -= chars.length || 1;\n }\n if (stringIndex < 0) {\n return [lineIndex, i];\n }\n }\n lineIndex++;\n start = 0;\n }\n return [lineIndex, start];\n }\n}\n","import { Terminal, ITerminalAddon, IDisposable } from '@xterm/xterm';\nimport { GitHubLinkProvider, GitHubLinkActivateHandler } from './github-link.provider';\n\nexport class GitHubLinksAddon implements ITerminalAddon {\n private _terminal?: Terminal;\n private _linkProvider?: IDisposable;\n\n constructor(\n private readonly _handler: GitHubLinkActivateHandler\n ) {}\n\n activate(terminal: Terminal): void {\n this._terminal = terminal;\n this._linkProvider = terminal.registerLinkProvider(\n new GitHubLinkProvider(terminal, this._handler)\n );\n }\n\n dispose(): void {\n this._linkProvider?.dispose();\n }\n}\n","import { ILinkProvider, ILink, Terminal } from '@xterm/xterm';\n\nexport interface FileLinkActivateHandler {\n (event: MouseEvent, filePath: string, line?: number, column?: number): void;\n}\n\nexport class FileLinkProvider implements ILinkProvider {\n // ファイルパスを検出する正規表現\n // - 絶対パス: /path/to/file.ts, /path/to/file.ts:10:5\n // - 相対パス: ./src/file.ts, ../lib/utils.ts:20\n // - 拡張子を持つファイル名\n private readonly FILE_PATH_REGEX = /(?:^|[\\s'\"`(])((\\.\\.?\\/|\\/)?[\\w.@-]+(?:\\/[\\w.@-]+)*\\.[a-zA-Z0-9]+(?::\\d+(?::\\d+)?)?)/g;\n\n constructor(\n private readonly _terminal: Terminal,\n private readonly _handler: FileLinkActivateHandler\n ) {}\n\n provideLinks(bufferLineNumber: number, callback: (links: ILink[] | undefined) => void): void {\n // bufferLineNumber は 1-indexed、buffer.getLine() は 0-indexed を期待\n const lineIndex = bufferLineNumber - 1;\n const line = this._terminal.buffer.active.getLine(lineIndex);\n if (!line) {\n callback(undefined);\n return;\n }\n\n const text = line.translateToString(true);\n const links: ILink[] = [];\n\n // Reset regex lastIndex\n this.FILE_PATH_REGEX.lastIndex = 0;\n\n let match: RegExpExecArray | null;\n while ((match = this.FILE_PATH_REGEX.exec(text)) !== null) {\n const filePath = match[1];\n if (this._isLikelyFilePath(filePath) && !this._isUrl(filePath)) {\n // 文字列インデックスから表示位置(セル位置)を計算\n const stringStartIndex = match.index + (match[0].length - match[1].length);\n\n // WebLinksAddon と同じ方式で位置をマッピング(0-indexed lineIndexを渡す)\n const [, startX] = this._mapStrIdx(lineIndex, 0, stringStartIndex);\n const [, endX] = this._mapStrIdx(lineIndex, startX, filePath.length);\n\n if (startX === -1 || endX === -1) {\n continue;\n }\n\n links.push({\n text: filePath,\n range: {\n // IBufferCellPosition は 1-indexed\n start: { x: startX + 1, y: bufferLineNumber },\n end: { x: endX, y: bufferLineNumber }\n },\n activate: (event, linkText) => {\n const parsed = this._parseFilePath(linkText);\n this._handler(event, parsed.path, parsed.line, parsed.column);\n }\n });\n }\n }\n\n callback(links.length > 0 ? links : undefined);\n }\n\n /**\n * Map a string index back to buffer positions.\n * Returns buffer position as [lineIndex, columnIndex] 0-based,\n * or [-1, -1] in case the lookup ran into a non-existing line.\n * (Based on xterm.js WebLinkProvider implementation)\n */\n private _mapStrIdx(lineIndex: number, rowIndex: number, stringIndex: number): [number, number] {\n const buf = this._terminal.buffer.active;\n const cell = buf.getNullCell();\n let start = rowIndex;\n\n while (stringIndex) {\n const line = buf.getLine(lineIndex);\n if (!line) {\n return [-1, -1];\n }\n for (let i = start; i < line.length; ++i) {\n line.getCell(i, cell);\n const chars = cell.getChars();\n const width = cell.getWidth();\n if (width) {\n stringIndex -= chars.length || 1;\n }\n if (stringIndex < 0) {\n return [lineIndex, i];\n }\n }\n lineIndex++;\n start = 0;\n }\n return [lineIndex, start];\n }\n\n private _isLikelyFilePath(text: string): boolean {\n // 拡張子を持つか確認\n return /\\.[a-zA-Z0-9]+(?::\\d+(?::\\d+)?)?$/.test(text);\n }\n\n private _isUrl(text: string): boolean {\n // URL形式を除外\n return /^https?:\\/\\//.test(text) || /^file:\\/\\//.test(text);\n }\n\n private _parseFilePath(text: string): { path: string; line?: number; column?: number } {\n const match = text.match(/^(.+?)(?::(\\d+)(?::(\\d+))?)?$/);\n if (match) {\n return {\n path: match[1],\n line: match[2] ? parseInt(match[2], 10) : undefined,\n column: match[3] ? parseInt(match[3], 10) : undefined\n };\n }\n return { path: text };\n }\n}\n\n// Export helper functions for testing\nexport const isLikelyFilePath = (text: string): boolean => {\n return /\\.[a-zA-Z0-9]+(?::\\d+(?::\\d+)?)?$/.test(text) && !/^https?:\\/\\//.test(text);\n};\n\nexport const parseFilePath = (text: string): { path: string; line?: number; column?: number } => {\n const match = text.match(/^(.+?)(?::(\\d+)(?::(\\d+))?)?$/);\n if (match) {\n return {\n path: match[1],\n line: match[2] ? parseInt(match[2], 10) : undefined,\n column: match[3] ? parseInt(match[3], 10) : undefined\n };\n }\n return { path: text };\n};\n","import { Terminal, ITerminalAddon, IDisposable } from '@xterm/xterm';\nimport { FileLinkProvider, FileLinkActivateHandler } from './file-link.provider';\n\n/**\n * xterm.js addon for detecting and handling file path links in terminal output.\n * Similar to WebLinksAddon but for local file paths.\n *\n * Usage:\n * ```typescript\n * const fileLinksAddon = new FileLinksAddon((event, filePath, line, column) => {\n * if (event.metaKey || event.ctrlKey) {\n * // Open file in editor\n * }\n * });\n * terminal.loadAddon(fileLinksAddon);\n * ```\n */\nexport class FileLinksAddon implements ITerminalAddon {\n private _terminal?: Terminal;\n private _linkProvider?: IDisposable;\n\n constructor(\n private readonly _handler: FileLinkActivateHandler\n ) {}\n\n activate(terminal: Terminal): void {\n this._terminal = terminal;\n this._linkProvider = terminal.registerLinkProvider(\n new FileLinkProvider(terminal, this._handler)\n );\n }\n\n dispose(): void {\n this._linkProvider?.dispose();\n }\n}\n","import { Directive, input } from '@angular/core';\nimport { _computed, InjectableComponent } from '@ng-atomic/core';\nimport { makeDI } from '@ng-atomic/common/services/ui';\n\nexport enum XtermActionId {\n DATA_INPUT = 'xterm:data-input',\n RESIZED = 'xterm:resized',\n GITHUB_LINK_CLICK = 'xterm:github-link-click',\n FILE_LINK_CLICK = 'xterm:file-link-click',\n}\n\n@Directive({ standalone: true, selector: 'organisms-xterm' })\nexport class XtermOrganismStore extends InjectableComponent {\n static readonly DI = makeDI(XtermOrganismStore, () => () => ({\n data: '',\n interactive: false,\n queryResult: '',\n useInteractiveTheme: false,\n }), ['components', 'organisms', 'xterm']);\n\n readonly config = XtermOrganismStore.DI.injectConfig();\n // Note: Using simple default values instead of _computed() to ensure\n // input bindings from templates work correctly with Angular signal effects\n readonly data = input<string | undefined>(undefined);\n readonly interactive = input<boolean>(false);\n readonly queryResult = input<string>('');\n /** Use interactive theme even when not interactive (for display consistency) */\n readonly useInteractiveTheme = input<boolean>(false);\n /** Total bytes written to the buffer (for accurate diff detection when buffer overflows) */\n readonly totalWritten = input<number>(0);\n\n constructor() {\n super();\n XtermOrganismStore.DI.initialize(this);\n }\n}\n","import { Component, ElementRef, AfterViewInit, OnDestroy, ChangeDetectionStrategy, viewChild, output, effect, inject, signal } from '@angular/core';\nimport { Terminal } from '@xterm/xterm';\nimport { FitAddon } from '@xterm/addon-fit';\nimport { WebLinksAddon } from './web-links.addon';\nimport { NgAtomicComponent } from '@ng-atomic/core';\nimport { GitHubLinksAddon } from './github-links.addon';\nimport { FileLinksAddon } from './file-links.addon';\nimport { XtermOrganismStore, XtermActionId } from './xterm.organism.store';\n\n// ImageAddon types (loaded dynamically to avoid browser compatibility issues)\ntype ImageAddon = any;\ntype IImageAddonOptions = any;\n\n/**\n * Minimum container size required for terminal initialization.\n * Prevents issues with SR-only hidden containers (1x1 pixel) causing FitAddon problems.\n */\nconst MIN_CONTAINER_SIZE = 10;\n\n\n/** Default display-only theme (for catalog/storybook) */\nconst DISPLAY_THEME = {\n background: '#0a0a0a',\n foreground: '#66d9ef',\n cursor: '#ff79c6',\n cyan: '#8be9fd',\n brightCyan: '#50fa7b',\n green: '#50fa7b',\n brightGreen: '#50fa7b',\n magenta: '#ff79c6',\n brightMagenta: '#ff79c6',\n yellow: '#f1fa8c',\n brightYellow: '#ffb86c',\n red: '#ff5555',\n brightRed: '#ff5555'\n};\n\n/** Interactive session theme (matches original TerminalManager) */\nconst INTERACTIVE_THEME = {\n background: '#0a0a0a',\n foreground: '#e0e0e0',\n cursor: '#e0e0e0',\n black: '#000000',\n red: '#cd3131',\n green: '#0dbc79',\n yellow: '#e5e510',\n blue: '#2472c8',\n magenta: '#bc3fbc',\n cyan: '#11a8cd',\n white: '#e5e5e5',\n brightBlack: '#666666',\n brightRed: '#f14c4c',\n brightGreen: '#23d18b',\n brightYellow: '#f5f543',\n brightBlue: '#3b8eea',\n brightMagenta: '#d670d6',\n brightCyan: '#29b8db',\n brightWhite: '#e5e5e5',\n};\n\n@Component({\n selector: 'organisms-xterm',\n standalone: true,\n imports: [],\n template: `<div #container class=\"xterm-wrapper\"></div>`,\n styleUrls: ['./xterm.organism.css', './xterm.organism.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [{\n directive: XtermOrganismStore,\n inputs: ['data', 'interactive', 'useInteractiveTheme', 'totalWritten'],\n }],\n})\nexport class XtermOrganism extends NgAtomicComponent implements AfterViewInit, OnDestroy {\n readonly container = viewChild.required<ElementRef<HTMLDivElement>>('container');\n protected readonly store = inject(XtermOrganismStore);\n private readonly hostElement = inject(ElementRef<HTMLElement>);\n\n readonly terminalReady = output<Terminal>();\n readonly githubLinkClick = output<number>();\n\n private terminal!: Terminal;\n private fitAddon!: FitAddon;\n private imageAddon!: ImageAddon;\n private githubLinksAddon!: GitHubLinksAddon;\n private fileLinksAddon!: FileLinksAddon;\n private resizeObserver?: ResizeObserver;\n private lastDataLength = 0;\n /** Tracks how many bytes have been processed (for totalWritten-based diff detection) */\n private lastProcessedLength = 0;\n private readonly terminalInitialized = signal(false);\n /** Tracks if initialization was skipped due to container being too small */\n private initSkippedDueToSize = false;\n\n constructor() {\n super();\n\n // Watch for data input changes (with totalWritten support for buffer overflow handling)\n effect(() => {\n const isInitialized = this.terminalInitialized();\n const rawData = this.store.data();\n const totalWritten = this.store.totalWritten();\n const dataIsFunction = typeof rawData === 'function';\n const data = dataIsFunction ? (rawData as any)() : rawData;\n if (!isInitialized) return;\n\n // Use totalWritten-based logic when available (handles buffer overflow correctly)\n if (totalWritten > 0) {\n this.writeDataWithTotalWritten(data ?? '', totalWritten);\n } else {\n // Legacy fallback for backward compatibility\n this.writeDataToTerminal(data);\n }\n });\n\n // Watch for interactive mode changes and update host class\n // Note: Using effect with classList because @HostBinding doesn't work with OnPush + signals\n effect(() => {\n const isInteractive = this.store.interactive();\n if (isInteractive) {\n this.hostElement.nativeElement.classList.add('interactive');\n } else {\n this.hostElement.nativeElement.classList.remove('interactive');\n }\n });\n\n // Watch for interactive mode changes and update cursor blink\n effect(() => {\n const isInitialized = this.terminalInitialized();\n const isInteractive = this.store.interactive();\n if (!isInitialized || !this.terminal) return;\n\n // Update cursor blink setting\n this.terminal.options.cursorBlink = isInteractive;\n });\n }\n\n private writeDataToTerminal(data: string | undefined): void {\n // Guard against undefined/null/empty data\n // Empty string is treated as \"no data yet\" (from startWith('') in streams)\n // Explicit reset should use the public clear() or reset() methods\n if (data === undefined || data === null || data === '') {\n return;\n }\n // O(1) length comparison instead of O(n) startsWith\n if (data.length >= this.lastDataLength) {\n const newPart = data.slice(this.lastDataLength);\n if (newPart) {\n this.terminal.write(newPart);\n }\n this.lastDataLength = data.length;\n } else {\n // Data got shorter = reset occurred\n this.terminal.reset();\n this.terminal.write(data);\n this.lastDataLength = data.length;\n }\n }\n\n /**\n * Write data using totalWritten for accurate diff detection.\n * This method handles buffer overflow scenarios correctly.\n * When newBytesCount >= data.length, performs a full redraw with terminal.reset()\n * to prevent stale output from previous sessions remaining on screen.\n * @param data The current buffer content\n * @param totalWritten Total bytes written to the buffer (cumulative)\n */\n private writeDataWithTotalWritten(data: string, totalWritten: number): void {\n if (!data) return;\n\n const newBytesCount = totalWritten - this.lastProcessedLength;\n\n if (newBytesCount <= 0) {\n if (totalWritten < this.lastProcessedLength) {\n // Reset detected (totalWritten decreased)\n this.terminal.reset();\n this.terminal.write(data);\n this.lastProcessedLength = totalWritten;\n }\n return;\n }\n\n // Full redraw needed: first render, session switch, or buffer overflow\n // (newBytesCount >= data.length means the diff covers the entire buffer or more)\n if (newBytesCount >= data.length) {\n this.terminal.reset();\n this.terminal.write(data);\n } else {\n // Normal incremental write - extract only new content\n const newContent = data.slice(-newBytesCount);\n if (newContent) {\n this.terminal.write(newContent);\n }\n }\n this.lastProcessedLength = totalWritten;\n }\n\n ngAfterViewInit() {\n const containerElement = this.container().nativeElement;\n\n // Guard against initialization in very small containers (e.g., SR-only 1x1 pixel hidden elements)\n // This prevents FitAddon issues and excessive processing in hidden query sections\n if (containerElement.offsetWidth < MIN_CONTAINER_SIZE || containerElement.offsetHeight < MIN_CONTAINER_SIZE) {\n this.initSkippedDueToSize = true;\n // Retry initialization when container reaches minimum size (e.g., after CSS/layout settles)\n this.resizeObserver = new ResizeObserver(() => {\n if (containerElement.offsetWidth >= MIN_CONTAINER_SIZE && containerElement.offsetHeight >= MIN_CONTAINER_SIZE) {\n this.resizeObserver?.disconnect();\n this.resizeObserver = undefined;\n this.initSkippedDueToSize = false;\n this.initializeTerminal(containerElement);\n }\n });\n this.resizeObserver.observe(containerElement);\n return;\n }\n\n this.initializeTerminal(containerElement);\n }\n\n private initializeTerminal(containerElement: HTMLDivElement): void {\n const isInteractive = this.store.interactive();\n const useInteractiveTheme = this.store.useInteractiveTheme() || isInteractive;\n\n this.terminal = new Terminal({\n theme: useInteractiveTheme ? INTERACTIVE_THEME : DISPLAY_THEME,\n scrollback: isInteractive ? 10000 : 1000,\n fontSize: useInteractiveTheme ? 14 : 12,\n fontFamily: '\"FiraCode Nerd Font\", \"Fira Code\", \"SF Mono\", \"Cascadia Code\", \"Consolas\", \"Courier New\", monospace',\n lineHeight: 1.2,\n allowTransparency: false,\n disableStdin: !isInteractive,\n cursorBlink: isInteractive,\n cursorStyle: 'block',\n convertEol: true,\n rows: 24\n });\n\n this.fitAddon = new FitAddon();\n this.terminal.loadAddon(this.fitAddon);\n this.terminal.loadAddon(new WebLinksAddon());\n\n // ImageAddon for displaying inline images (SIXEL and iTerm2 IIP support)\n // Loaded dynamically to avoid browser compatibility issues\n this.loadImageAddon();\n\n this.githubLinksAddon = new GitHubLinksAddon((event, issueNumber) => {\n this.dispatch({ id: XtermActionId.GITHUB_LINK_CLICK, payload: issueNumber });\n });\n this.terminal.loadAddon(this.githubLinksAddon);\n\n this.fileLinksAddon = new FileLinksAddon((event, filePath, line, column) => {\n if (event.metaKey || event.ctrlKey) {\n this.dispatch({ id: XtermActionId.FILE_LINK_CLICK, payload: { filePath, line, column } });\n }\n });\n this.terminal.loadAddon(this.fileLinksAddon);\n\n this.terminal.open(containerElement);\n\n // Setup event handlers for interactive mode\n if (isInteractive) {\n this.terminal.onData((data) => {\n this.dispatch({ id: XtermActionId.DATA_INPUT, payload: data });\n });\n this.terminal.onResize(({ cols, rows }) => this.dispatch({ id: XtermActionId.RESIZED, payload: { cols, rows } }));\n }\n\n // Use ResizeObserver with debounce to wait for container size to stabilize\n // (CSS transitions take 300-500ms, so fixed setTimeout(100ms) is too early)\n let stableTimer: ReturnType<typeof setTimeout> | null = null;\n let resizeTimer: ReturnType<typeof setTimeout> | null = null;\n this.resizeObserver = new ResizeObserver(() => {\n try {\n if (!this.terminalInitialized()) {\n this.fitAddon.fit();\n // Debounce: wait for container to stop changing before initializing\n if (stableTimer) clearTimeout(stableTimer);\n stableTimer = setTimeout(() => {\n this.fitAddon.fit();\n this.markInitialized(isInteractive);\n }, 150);\n } else if (isInteractive) {\n // Debounce resize to wait for CSS transitions to complete (300ms)\n if (resizeTimer) clearTimeout(resizeTimer);\n resizeTimer = setTimeout(() => {\n this.fitAddon.fit();\n this.dispatch({ id: XtermActionId.RESIZED, payload: { cols: this.cols, rows: this.rows } });\n }, 300);\n }\n } catch (e) {\n console.warn('Failed to fit terminal:', e);\n }\n });\n this.resizeObserver.observe(containerElement);\n\n // Fallback: initialize after 500ms if ResizeObserver hasn't triggered stable state\n setTimeout(() => {\n if (!this.terminalInitialized()) {\n this.fitAddon.fit();\n this.markInitialized(isInteractive);\n }\n }, 500);\n }\n\n ngOnDestroy() {\n this.resizeObserver?.disconnect();\n\n // Remove terminal instance from window for E2E testing cleanup\n if (typeof window !== 'undefined' && (window as any).__XTERM_INSTANCES__) {\n const instances = (window as any).__XTERM_INSTANCES__ as Terminal[];\n const index = instances.indexOf(this.terminal);\n if (index !== -1) {\n instances.splice(index, 1);\n }\n }\n\n this.terminal?.dispose();\n }\n\n private markInitialized(isInteractive: boolean): void {\n if (this.terminalInitialized()) return;\n this.terminalInitialized.set(true);\n this.terminalReady.emit(this.terminal);\n\n // Expose terminal instance for E2E testing (only in development/test environments)\n if (typeof window !== 'undefined') {\n (window as any).__XTERM_INSTANCES__ = (window as any).__XTERM_INSTANCES__ || [];\n (window as any).__XTERM_INSTANCES__.push(this.terminal);\n }\n\n // Dispatch initial RESIZED for interactive mode\n if (isInteractive) {\n this.dispatch({ id: XtermActionId.RESIZED, payload: { cols: this.cols, rows: this.rows } });\n }\n }\n\n private async loadImageAddon(): Promise<void> {\n try {\n const { ImageAddon } = await import('@xterm/addon-image');\n const imageAddonOptions = {\n enableSizeReports: true,\n sixelSupport: true,\n sixelScrolling: true,\n sixelPaletteLimit: 256,\n };\n this.imageAddon = new ImageAddon(imageAddonOptions);\n this.terminal.loadAddon(this.imageAddon);\n } catch (e) {\n // ImageAddon not available in browser environment - this is expected\n console.debug('ImageAddon not available:', e);\n }\n }\n\n // Public API\n public write(text: string): void {\n this.terminal?.write(text);\n }\n\n public writeln(text: string): void {\n this.terminal?.writeln(text);\n }\n\n public clear(): void {\n this.terminal?.clear();\n }\n\n public scrollToBottom(): void {\n this.terminal?.scrollToBottom();\n }\n\n public scrollToTop(): void {\n this.terminal?.scrollToTop();\n }\n\n public scrollLines(lines: number): void {\n this.terminal?.scrollLines(lines);\n }\n\n public fit(): void {\n this.fitAddon?.fit();\n // Only dispatch RESIZED after initialization to prevent sending wrong cols/rows\n // during CSS transitions (SessionTemplateV2.ngAfterViewInit calls fit() before layout stabilizes)\n if (this.terminalInitialized() && this.terminal) {\n this.dispatch({ id: XtermActionId.RESIZED, payload: { cols: this.cols, rows: this.rows } });\n }\n }\n\n public get cols(): number {\n return this.terminal?.cols ?? 80;\n }\n\n public get rows(): number {\n return this.terminal?.rows ?? 24;\n }\n\n public getTerminal(): Terminal | undefined {\n // Only expose terminal after fitAddon.fit() has run (terminalInitialized === true)\n return this.terminalInitialized() ? this.terminal : undefined;\n }\n\n /**\n * Display an inline image using iTerm2's Inline Image Protocol\n * @param base64Data Base64 encoded image data (PNG, JPEG, etc.)\n * @param options Image display options\n */\n public displayImage(base64Data: string, options?: {\n width?: string | number; // e.g., '50%', 'auto', or cell count\n height?: string | number; // e.g., '10', 'auto', or cell count\n preserveAspectRatio?: boolean;\n name?: string;\n }): void {\n if (!this.terminal) return;\n\n const args: string[] = ['inline=1'];\n\n if (options?.width) {\n args.push(`width=${options.width}`);\n }\n if (options?.height) {\n args.push(`height=${options.height}`);\n }\n if (options?.preserveAspectRatio !== undefined) {\n args.push(`preserveAspectRatio=${options.preserveAspectRatio ? 1 : 0}`);\n }\n if (options?.name) {\n args.push(`name=${btoa(options.name)}`);\n }\n\n // iTerm2 Inline Image Protocol escape sequence\n const escapeSequence = `\\x1b]1337;File=${args.join(';')}:${base64Data}\\x07`;\n this.terminal.write(escapeSequence);\n }\n\n /**\n * Get the ImageAddon instance for advanced image operations\n */\n public getImageAddon(): ImageAddon | undefined {\n return this.imageAddon;\n }\n}\n","/**\n * Utility functions for displaying images in xterm using SIXEL format\n */\n\nexport interface SvgToSixelOptions {\n width?: number;\n height?: number;\n backgroundColor?: string;\n textColor?: string;\n}\n\n/**\n * Generate ASCII art text using figlet\n * Note: figlet is loaded dynamically as it's not available in browser environments\n */\nexport async function generateAsciiArt(text: string, font = 'ANSI Shadow'): Promise<string> {\n try {\n const figlet = await import('figlet');\n return new Promise((resolve, reject) => {\n figlet.default.text(text, { font: font as any }, (err, result) => {\n if (err) {\n reject(err);\n return;\n }\n resolve(result || '');\n });\n });\n } catch (e) {\n // figlet not available in browser - return simple text\n console.debug('figlet not available:', e);\n return text;\n }\n}\n\n/**\n * Convert ASCII art text to SVG with transparent background\n */\nexport function asciiArtToSvg(\n asciiArt: string,\n options: { textColor?: string; fontSize?: number } = {}\n): string {\n const { textColor = '#00FFFF', fontSize = 14 } = options;\n\n const lines = asciiArt.split('\\n');\n const maxLineLength = Math.max(...lines.map(l => l.length));\n\n // Calculate dimensions based on monospace font metrics (block chars need more width)\n const charWidth = fontSize * 0.65;\n const lineHeight = fontSize * 1.4;\n const padding = 40;\n const width = Math.ceil(maxLineLength * charWidth) + padding;\n const height = Math.ceil(lines.length * lineHeight) + padding;\n\n // Build SVG with text elements for each line\n const textElements = lines.map((line, i) => {\n // Escape special XML characters\n const escapedLine = line\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;');\n\n return `<text x=\"20\" y=\"${20 + (i + 1) * lineHeight}\" fill=\"${textColor}\" xml:space=\"preserve\">${escapedLine}</text>`;\n }).join('\\n ');\n\n return `<svg width=\"${width}\" height=\"${height}\" xmlns=\"http://www.w3.org/2000/svg\">\n <style>text { font-family: 'Courier New', Consolas, monospace; font-size: ${fontSize}px; white-space: pre; }</style>\n ${textElements}\n</svg>`;\n}\n\n/**\n * Convert SVG to SIXEL format for xterm display\n */\nexport async function svgToSixel(\n svgString: string,\n options: SvgToSixelOptions = {}\n): Promise<string> {\n const { width = 400, height = 200, backgroundColor } = options;\n\n return new Promise((resolve, reject) => {\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext('2d');\n\n if (!ctx) {\n reject(new Error('Failed to get canvas context'));\n return;\n }\n\n // Fill background (transparent if not specified)\n if (backgroundColor) {\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(0, 0, width, height);\n }\n\n const img = new Image();\n const blob = new Blob([svgString], { type: 'image/svg+xml;charset=utf-8' });\n const url = URL.createObjectURL(blob);\n\n img.onload = () => {\n ctx.drawImage(img, 0, 0, width, height);\n URL.revokeObjectURL(url);\n\n const imageData = ctx.getImageData(0, 0, width, height);\n const sixelData = imageDataToSixel(imageData);\n resolve(sixelData);\n };\n\n img.onerror = (error) => {\n URL.revokeObjectURL(url);\n reject(error);\n };\n\n img.src = url;\n });\n}\n\n/**\n * Convert ImageData to SIXEL escape sequence\n */\nfunction imageDataToSixel(imageData: ImageData): string {\n const { width, height, data } = imageData;\n\n // Build color palette (quantize to 16 colors)\n const palette = buildColorPalette(data, 16);\n const colorMap = new Map<string, number>();\n palette.forEach((color, index) => {\n colorMap.set(color, index);\n });\n\n // SIXEL header\n let sixel = '\\x1bPq';\n\n // Define colors in palette\n palette.forEach((color, index) => {\n const [r, g, b] = hexToRgb(color);\n const rPct = Math.round((r / 255) * 100);\n const gPct = Math.round((g / 255) * 100);\n const bPct = Math.round((b / 255) * 100);\n sixel += `#${index};2;${rPct};${gPct};${bPct}`;\n });\n\n // Process image in bands of 6 rows\n for (let bandY = 0; bandY < height; bandY += 6) {\n for (let colorIdx = 0; colorIdx < palette.length; colorIdx++) {\n const color = palette[colorIdx];\n let rowData = '';\n let hasPixels = false;\n\n rowData += `#${colorIdx}`;\n\n for (let x = 0; x < width; x++) {\n let sixelValue = 0;\n\n for (let dy = 0; dy < 6; dy++) {\n const y = bandY + dy;\n if (y >= height) continue;\n\n const pixelIndex = (y * width + x) * 4;\n const r = data[pixelIndex];\n const g = data[pixelIndex + 1];\n const b = data[pixelIndex + 2];\n const a = data[pixelIndex + 3];\n\n if (a < 128) continue;\n\n const pixelColor = rgbToHex(r, g, b);\n const nearestColor = findNearestColor(pixelColor, palette);\n\n if (nearestColor === color) {\n sixelValue |= (1 << dy);\n hasPixels = true;\n }\n }\n\n rowData += String.fromCharCode(63 + sixelValue);\n }\n\n if (hasPixels) {\n sixel += rowData;\n sixel += '$';\n }\n }\n\n if (bandY + 6 < height) {\n sixel += '-';\n }\n }\n\n sixel += '\\x1b\\\\';\n return sixel;\n}\n\nfunction buildColorPalette(data: Uint8ClampedArray, maxColors: number): string[] {\n const colorCounts = new Map<string, number>();\n\n for (let i = 0; i < data.length; i += 4) {\n const r = data[i];\n const g = data[i + 1];\n const b = data[i + 2];\n const a = data[i + 3];\n\n if (a < 128) continue;\n\n const qr = Math.floor(r / 16) * 16;\n const qg = Math.floor(g / 16) * 16;\n const qb = Math.floor(b / 16) * 16;\n const color = rgbToHex(qr, qg, qb);\n\n colorCounts.set(color, (colorCounts.get(color) || 0) + 1);\n }\n\n return Array.from(colorCounts.entries())\n .sort((a, b) => b[1] - a[1])\n .slice(0, maxColors)\n .map(([color]) => color);\n}\n\nfunction rgbToHex(r: number, g: number, b: number): string {\n return `#${r.toString(16).padStart(2, '0')}${g.toString(16).padStart(2, '0')}${b.toString(16).padStart(2, '0')}`;\n}\n\nfunction hexToRgb(hex: string): [number, number, number] {\n const match = hex.match(/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i);\n if (!match) return [0, 0, 0];\n return [parseInt(match[1], 16), parseInt(match[2], 16), parseInt(match[3], 16)];\n}\n\nfunction findNearestColor(targetHex: string, palette: string[]): string {\n const [tr, tg, tb] = hexToRgb(targetHex);\n let nearest = palette[0];\n let minDist = Infinity;\n\n for (const color of palette) {\n const [r, g, b] = hexToRgb(color);\n const dist = (tr - r) ** 2 + (tg - g) ** 2 + (tb - b) ** 2;\n if (dist < minDist) {\n minDist = dist;\n nearest = color;\n }\n }\n\n return nearest;\n}\n\n/**\n * Generate MACHINA ASCII art banner as SIXEL\n */\nexport async function getMachinaAsciiArtSixel(\n options: SvgToSixelOptions = {}\n): Promise<string> {\n // Generate ASCII art for \"MACHINA\"\n const machinaArt = await generateAsciiArt('MACHINA', 'ANSI Shadow');\n\n // Convert to SVG with cyan color (terminal style)\n const fontSize = 14;\n const svg = asciiArtToSvg(machinaArt, {\n textColor: options.textColor || '#00FFFF',\n fontSize\n });\n\n // Calculate appropriate dimensions matching asciiArtToSvg calculation\n const lines = machinaArt.split('\\n');\n const maxLineLength = Math.max(...lines.map(l => l.length));\n const charWidth = fontSize * 0.65;\n const lineHeight = fontSize * 1.4;\n const padding = 40;\n const defaultWidth = Math.ceil(maxLineLength * charWidth) + padding;\n const defaultHeight = Math.ceil(lines.length * lineHeight) + padding;\n\n return svgToSixel(svg, {\n width: options.width || defaultWidth,\n height: options.height || defaultHeight,\n backgroundColor: options.backgroundColor || '#0a0a0a',\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}