@bastani/pi-ai 0.9.21-alpha.1 → 0.9.21

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 (336) hide show
  1. package/CHANGELOG.md +25 -1
  2. package/NOTICE.md +1 -1
  3. package/dist/api/anthropic-messages.d.ts.map +1 -1
  4. package/dist/api/anthropic-messages.js.map +1 -1
  5. package/dist/api/anthropic-messages.lazy.d.ts.map +1 -1
  6. package/dist/api/azure-openai-responses.d.ts.map +1 -1
  7. package/dist/api/azure-openai-responses.js +2 -4
  8. package/dist/api/azure-openai-responses.js.map +1 -1
  9. package/dist/api/azure-openai-responses.lazy.d.ts.map +1 -1
  10. package/dist/api/bedrock-converse-stream.d.ts.map +1 -1
  11. package/dist/api/bedrock-converse-stream.js.map +1 -1
  12. package/dist/api/bedrock-converse-stream.lazy.d.ts.map +1 -1
  13. package/dist/api/bedrock-converse-stream.lazy.js.map +1 -1
  14. package/dist/api/cloudflare-gateway-binding.d.ts.map +1 -1
  15. package/dist/api/cloudflare-gateway-binding.js.map +1 -1
  16. package/dist/api/cloudflare-workers-ai-system-one.d.ts.map +1 -1
  17. package/dist/api/cloudflare-workers-ai-system-one.js.map +1 -1
  18. package/dist/api/cloudflare-workers-ai-system-one.lazy.d.ts.map +1 -1
  19. package/dist/api/cloudflare.d.ts.map +1 -1
  20. package/dist/api/cloudflare.js.map +1 -1
  21. package/dist/api/constrained-sampling.d.ts.map +1 -1
  22. package/dist/api/constrained-sampling.js.map +1 -1
  23. package/dist/api/github-copilot-headers.d.ts.map +1 -1
  24. package/dist/api/github-copilot-headers.js.map +1 -1
  25. package/dist/api/google-generative-ai.d.ts.map +1 -1
  26. package/dist/api/google-generative-ai.js.map +1 -1
  27. package/dist/api/google-generative-ai.lazy.d.ts.map +1 -1
  28. package/dist/api/google-shared.d.ts.map +1 -1
  29. package/dist/api/google-shared.js.map +1 -1
  30. package/dist/api/google-vertex.d.ts.map +1 -1
  31. package/dist/api/google-vertex.js.map +1 -1
  32. package/dist/api/google-vertex.lazy.d.ts.map +1 -1
  33. package/dist/api/lazy.d.ts.map +1 -1
  34. package/dist/api/lazy.js.map +1 -1
  35. package/dist/api/mistral-conversations.d.ts.map +1 -1
  36. package/dist/api/mistral-conversations.js +6 -0
  37. package/dist/api/mistral-conversations.js.map +1 -1
  38. package/dist/api/mistral-conversations.lazy.d.ts.map +1 -1
  39. package/dist/api/openai-codex-responses.d.ts.map +1 -1
  40. package/dist/api/openai-codex-responses.js.map +1 -1
  41. package/dist/api/openai-codex-responses.lazy.d.ts.map +1 -1
  42. package/dist/api/openai-completions.d.ts.map +1 -1
  43. package/dist/api/openai-completions.js +5 -6
  44. package/dist/api/openai-completions.js.map +1 -1
  45. package/dist/api/openai-completions.lazy.d.ts.map +1 -1
  46. package/dist/api/openai-prompt-cache.d.ts.map +1 -1
  47. package/dist/api/openai-prompt-cache.js.map +1 -1
  48. package/dist/api/openai-responses-shared.d.ts.map +1 -1
  49. package/dist/api/openai-responses-shared.js.map +1 -1
  50. package/dist/api/openai-responses.d.ts.map +1 -1
  51. package/dist/api/openai-responses.js +3 -4
  52. package/dist/api/openai-responses.js.map +1 -1
  53. package/dist/api/openai-responses.lazy.d.ts.map +1 -1
  54. package/dist/api/openrouter-images.d.ts.map +1 -1
  55. package/dist/api/openrouter-images.js.map +1 -1
  56. package/dist/api/openrouter-images.lazy.d.ts.map +1 -1
  57. package/dist/api/pi-messages.d.ts.map +1 -1
  58. package/dist/api/pi-messages.js.map +1 -1
  59. package/dist/api/pi-messages.lazy.d.ts.map +1 -1
  60. package/dist/api/simple-options.d.ts.map +1 -1
  61. package/dist/api/simple-options.js +1 -4
  62. package/dist/api/simple-options.js.map +1 -1
  63. package/dist/api/system-one-shared.d.ts.map +1 -1
  64. package/dist/api/system-one-shared.js.map +1 -1
  65. package/dist/api/transform-messages.d.ts.map +1 -1
  66. package/dist/api/transform-messages.js.map +1 -1
  67. package/dist/api/typesafe-system-one.d.ts.map +1 -1
  68. package/dist/api/typesafe-system-one.js.map +1 -1
  69. package/dist/api/typesafe-system-one.lazy.d.ts.map +1 -1
  70. package/dist/auth/context.d.ts.map +1 -1
  71. package/dist/auth/context.js.map +1 -1
  72. package/dist/auth/credential-store.d.ts.map +1 -1
  73. package/dist/auth/credential-store.js.map +1 -1
  74. package/dist/auth/helpers.d.ts.map +1 -1
  75. package/dist/auth/helpers.js.map +1 -1
  76. package/dist/auth/oauth/anthropic.d.ts.map +1 -1
  77. package/dist/auth/oauth/anthropic.js.map +1 -1
  78. package/dist/auth/oauth/device-code.d.ts.map +1 -1
  79. package/dist/auth/oauth/device-code.js.map +1 -1
  80. package/dist/auth/oauth/github-copilot.d.ts.map +1 -1
  81. package/dist/auth/oauth/github-copilot.js.map +1 -1
  82. package/dist/auth/oauth/kimi-coding.d.ts.map +1 -1
  83. package/dist/auth/oauth/kimi-coding.js.map +1 -1
  84. package/dist/auth/oauth/load.d.ts.map +1 -1
  85. package/dist/auth/oauth/load.js.map +1 -1
  86. package/dist/auth/oauth/meta.d.ts.map +1 -1
  87. package/dist/auth/oauth/meta.js.map +1 -1
  88. package/dist/auth/oauth/oauth-page.d.ts.map +1 -1
  89. package/dist/auth/oauth/oauth-page.js.map +1 -1
  90. package/dist/auth/oauth/openai-codex.d.ts.map +1 -1
  91. package/dist/auth/oauth/openai-codex.js.map +1 -1
  92. package/dist/auth/oauth/openrouter.d.ts.map +1 -1
  93. package/dist/auth/oauth/openrouter.js.map +1 -1
  94. package/dist/auth/oauth/pkce.d.ts.map +1 -1
  95. package/dist/auth/oauth/pkce.js.map +1 -1
  96. package/dist/auth/oauth/radius.d.ts.map +1 -1
  97. package/dist/auth/oauth/radius.js.map +1 -1
  98. package/dist/auth/oauth/xai.d.ts.map +1 -1
  99. package/dist/auth/oauth/xai.js.map +1 -1
  100. package/dist/auth/resolve.d.ts.map +1 -1
  101. package/dist/auth/resolve.js.map +1 -1
  102. package/dist/auth/types.d.ts.map +1 -1
  103. package/dist/bedrock-provider.d.ts.map +1 -1
  104. package/dist/bun-oauth.d.ts.map +1 -1
  105. package/dist/bun-oauth.js.map +1 -1
  106. package/dist/cli.d.ts.map +1 -1
  107. package/dist/cli.js.map +1 -1
  108. package/dist/compat/extension-oauth-types.d.ts.map +1 -1
  109. package/dist/compat.d.ts.map +1 -1
  110. package/dist/compat.js.map +1 -1
  111. package/dist/decision-models.d.ts.map +1 -1
  112. package/dist/decision-models.generated.d.ts.map +1 -1
  113. package/dist/decision-models.js.map +1 -1
  114. package/dist/env-api-keys.d.ts.map +1 -1
  115. package/dist/env-api-keys.js.map +1 -1
  116. package/dist/image-models.d.ts.map +1 -1
  117. package/dist/image-models.js.map +1 -1
  118. package/dist/images-api-registry.d.ts.map +1 -1
  119. package/dist/images-api-registry.js.map +1 -1
  120. package/dist/images.d.ts.map +1 -1
  121. package/dist/images.js.map +1 -1
  122. package/dist/index.d.ts.map +1 -1
  123. package/dist/legacy-api-aliases.d.ts.map +1 -1
  124. package/dist/model-catalog.d.ts.map +1 -1
  125. package/dist/model-catalog.js.map +1 -1
  126. package/dist/models-store.d.ts.map +1 -1
  127. package/dist/models-store.js.map +1 -1
  128. package/dist/models.d.ts.map +1 -1
  129. package/dist/models.generated.d.ts.map +1 -1
  130. package/dist/models.js.map +1 -1
  131. package/dist/oauth.d.ts.map +1 -1
  132. package/dist/providers/all.d.ts.map +1 -1
  133. package/dist/providers/all.js.map +1 -1
  134. package/dist/providers/amazon-bedrock.d.ts.map +1 -1
  135. package/dist/providers/amazon-bedrock.js.map +1 -1
  136. package/dist/providers/amazon-bedrock.models.d.ts.map +1 -1
  137. package/dist/providers/ant-ling.d.ts.map +1 -1
  138. package/dist/providers/ant-ling.js.map +1 -1
  139. package/dist/providers/ant-ling.models.d.ts.map +1 -1
  140. package/dist/providers/anthropic.d.ts.map +1 -1
  141. package/dist/providers/anthropic.js.map +1 -1
  142. package/dist/providers/anthropic.models.d.ts.map +1 -1
  143. package/dist/providers/azure-openai-responses.d.ts.map +1 -1
  144. package/dist/providers/azure-openai-responses.js.map +1 -1
  145. package/dist/providers/azure-openai-responses.models.d.ts.map +1 -1
  146. package/dist/providers/baseten.d.ts.map +1 -1
  147. package/dist/providers/baseten.js.map +1 -1
  148. package/dist/providers/baseten.models.d.ts.map +1 -1
  149. package/dist/providers/cerebras.d.ts.map +1 -1
  150. package/dist/providers/cerebras.js.map +1 -1
  151. package/dist/providers/cerebras.models.d.ts.map +1 -1
  152. package/dist/providers/cloudflare-ai-gateway.d.ts.map +1 -1
  153. package/dist/providers/cloudflare-ai-gateway.js.map +1 -1
  154. package/dist/providers/cloudflare-ai-gateway.models.d.ts.map +1 -1
  155. package/dist/providers/cloudflare-auth.d.ts.map +1 -1
  156. package/dist/providers/cloudflare-auth.js.map +1 -1
  157. package/dist/providers/cloudflare-stream.d.ts.map +1 -1
  158. package/dist/providers/cloudflare-stream.js.map +1 -1
  159. package/dist/providers/cloudflare-workers-ai.d.ts.map +1 -1
  160. package/dist/providers/cloudflare-workers-ai.js.map +1 -1
  161. package/dist/providers/cloudflare-workers-ai.models.d.ts.map +1 -1
  162. package/dist/providers/data/.manifest.json +1 -1
  163. package/dist/providers/data/fireworks.json +1 -1
  164. package/dist/providers/data/opencode-go.json +1 -1
  165. package/dist/providers/data/opencode.json +1 -1
  166. package/dist/providers/data/openrouter.json +1 -1
  167. package/dist/providers/data/vercel-ai-gateway.json +1 -1
  168. package/dist/providers/deepseek.d.ts.map +1 -1
  169. package/dist/providers/deepseek.js.map +1 -1
  170. package/dist/providers/deepseek.models.d.ts.map +1 -1
  171. package/dist/providers/faux.d.ts +2 -2
  172. package/dist/providers/faux.d.ts.map +1 -1
  173. package/dist/providers/faux.js.map +1 -1
  174. package/dist/providers/fireworks.d.ts.map +1 -1
  175. package/dist/providers/fireworks.js.map +1 -1
  176. package/dist/providers/fireworks.models.d.ts.map +1 -1
  177. package/dist/providers/github-copilot-env.d.ts.map +1 -1
  178. package/dist/providers/github-copilot-env.js.map +1 -1
  179. package/dist/providers/github-copilot.d.ts.map +1 -1
  180. package/dist/providers/github-copilot.js.map +1 -1
  181. package/dist/providers/github-copilot.models.d.ts.map +1 -1
  182. package/dist/providers/google-vertex.d.ts.map +1 -1
  183. package/dist/providers/google-vertex.js.map +1 -1
  184. package/dist/providers/google-vertex.models.d.ts.map +1 -1
  185. package/dist/providers/google.d.ts.map +1 -1
  186. package/dist/providers/google.js.map +1 -1
  187. package/dist/providers/google.models.d.ts.map +1 -1
  188. package/dist/providers/groq.d.ts.map +1 -1
  189. package/dist/providers/groq.js.map +1 -1
  190. package/dist/providers/groq.models.d.ts.map +1 -1
  191. package/dist/providers/huggingface.d.ts.map +1 -1
  192. package/dist/providers/huggingface.js.map +1 -1
  193. package/dist/providers/huggingface.models.d.ts.map +1 -1
  194. package/dist/providers/images/register-builtins.d.ts.map +1 -1
  195. package/dist/providers/images/register-builtins.js.map +1 -1
  196. package/dist/providers/kimi-coding.d.ts.map +1 -1
  197. package/dist/providers/kimi-coding.js.map +1 -1
  198. package/dist/providers/kimi-coding.models.d.ts.map +1 -1
  199. package/dist/providers/meta.d.ts.map +1 -1
  200. package/dist/providers/meta.js.map +1 -1
  201. package/dist/providers/meta.models.d.ts.map +1 -1
  202. package/dist/providers/minimax-cn.d.ts.map +1 -1
  203. package/dist/providers/minimax-cn.js.map +1 -1
  204. package/dist/providers/minimax-cn.models.d.ts.map +1 -1
  205. package/dist/providers/minimax.d.ts.map +1 -1
  206. package/dist/providers/minimax.js.map +1 -1
  207. package/dist/providers/minimax.models.d.ts.map +1 -1
  208. package/dist/providers/mistral.d.ts.map +1 -1
  209. package/dist/providers/mistral.js.map +1 -1
  210. package/dist/providers/mistral.models.d.ts.map +1 -1
  211. package/dist/providers/moonshotai-cn.d.ts.map +1 -1
  212. package/dist/providers/moonshotai-cn.js.map +1 -1
  213. package/dist/providers/moonshotai-cn.models.d.ts.map +1 -1
  214. package/dist/providers/moonshotai.d.ts.map +1 -1
  215. package/dist/providers/moonshotai.js.map +1 -1
  216. package/dist/providers/moonshotai.models.d.ts.map +1 -1
  217. package/dist/providers/nvidia.d.ts.map +1 -1
  218. package/dist/providers/nvidia.js.map +1 -1
  219. package/dist/providers/nvidia.models.d.ts.map +1 -1
  220. package/dist/providers/openai-codex.d.ts.map +1 -1
  221. package/dist/providers/openai-codex.js.map +1 -1
  222. package/dist/providers/openai-codex.models.d.ts.map +1 -1
  223. package/dist/providers/openai.d.ts.map +1 -1
  224. package/dist/providers/openai.js.map +1 -1
  225. package/dist/providers/openai.models.d.ts.map +1 -1
  226. package/dist/providers/opencode-go.d.ts.map +1 -1
  227. package/dist/providers/opencode-go.js.map +1 -1
  228. package/dist/providers/opencode-go.models.d.ts.map +1 -1
  229. package/dist/providers/opencode.d.ts.map +1 -1
  230. package/dist/providers/opencode.js.map +1 -1
  231. package/dist/providers/opencode.models.d.ts.map +1 -1
  232. package/dist/providers/openrouter.d.ts.map +1 -1
  233. package/dist/providers/openrouter.js.map +1 -1
  234. package/dist/providers/openrouter.models.d.ts.map +1 -1
  235. package/dist/providers/qwen-token-plan-cn.d.ts.map +1 -1
  236. package/dist/providers/qwen-token-plan-cn.js.map +1 -1
  237. package/dist/providers/qwen-token-plan-cn.models.d.ts.map +1 -1
  238. package/dist/providers/qwen-token-plan-individual.d.ts.map +1 -1
  239. package/dist/providers/qwen-token-plan-individual.js.map +1 -1
  240. package/dist/providers/qwen-token-plan-individual.models.d.ts.map +1 -1
  241. package/dist/providers/qwen-token-plan.d.ts.map +1 -1
  242. package/dist/providers/qwen-token-plan.js.map +1 -1
  243. package/dist/providers/qwen-token-plan.models.d.ts.map +1 -1
  244. package/dist/providers/radius-config.d.ts.map +1 -1
  245. package/dist/providers/radius-config.js.map +1 -1
  246. package/dist/providers/radius.d.ts.map +1 -1
  247. package/dist/providers/radius.js.map +1 -1
  248. package/dist/providers/radius.models.d.ts.map +1 -1
  249. package/dist/providers/together.d.ts.map +1 -1
  250. package/dist/providers/together.js.map +1 -1
  251. package/dist/providers/together.models.d.ts.map +1 -1
  252. package/dist/providers/typesafe.d.ts.map +1 -1
  253. package/dist/providers/typesafe.js.map +1 -1
  254. package/dist/providers/typesafe.models.d.ts.map +1 -1
  255. package/dist/providers/vercel-ai-gateway.d.ts.map +1 -1
  256. package/dist/providers/vercel-ai-gateway.js.map +1 -1
  257. package/dist/providers/vercel-ai-gateway.models.d.ts.map +1 -1
  258. package/dist/providers/xai.d.ts.map +1 -1
  259. package/dist/providers/xai.js.map +1 -1
  260. package/dist/providers/xai.models.d.ts.map +1 -1
  261. package/dist/providers/xiaomi-token-plan-ams.d.ts.map +1 -1
  262. package/dist/providers/xiaomi-token-plan-ams.js.map +1 -1
  263. package/dist/providers/xiaomi-token-plan-ams.models.d.ts.map +1 -1
  264. package/dist/providers/xiaomi-token-plan-cn.d.ts.map +1 -1
  265. package/dist/providers/xiaomi-token-plan-cn.js.map +1 -1
  266. package/dist/providers/xiaomi-token-plan-cn.models.d.ts.map +1 -1
  267. package/dist/providers/xiaomi-token-plan-sgp.d.ts.map +1 -1
  268. package/dist/providers/xiaomi-token-plan-sgp.js.map +1 -1
  269. package/dist/providers/xiaomi-token-plan-sgp.models.d.ts.map +1 -1
  270. package/dist/providers/xiaomi.d.ts.map +1 -1
  271. package/dist/providers/xiaomi.js.map +1 -1
  272. package/dist/providers/xiaomi.models.d.ts.map +1 -1
  273. package/dist/providers/zai-coding-cn.d.ts.map +1 -1
  274. package/dist/providers/zai-coding-cn.js.map +1 -1
  275. package/dist/providers/zai-coding-cn.models.d.ts.map +1 -1
  276. package/dist/providers/zai.d.ts.map +1 -1
  277. package/dist/providers/zai.js.map +1 -1
  278. package/dist/providers/zai.models.d.ts.map +1 -1
  279. package/dist/session-resources.d.ts.map +1 -1
  280. package/dist/session-resources.js.map +1 -1
  281. package/dist/types.d.ts.map +1 -1
  282. package/dist/utils/abort-signals.d.ts.map +1 -1
  283. package/dist/utils/abort-signals.js.map +1 -1
  284. package/dist/utils/abort.d.ts.map +1 -1
  285. package/dist/utils/abort.js.map +1 -1
  286. package/dist/utils/assistant-message-frame.d.ts.map +1 -1
  287. package/dist/utils/assistant-message-frame.js.map +1 -1
  288. package/dist/utils/diagnostics.d.ts.map +1 -1
  289. package/dist/utils/diagnostics.js.map +1 -1
  290. package/dist/utils/document-input.d.ts.map +1 -1
  291. package/dist/utils/document-input.js.map +1 -1
  292. package/dist/utils/error-body.d.ts.map +1 -1
  293. package/dist/utils/error-body.js.map +1 -1
  294. package/dist/utils/estimate.d.ts.map +1 -1
  295. package/dist/utils/estimate.js.map +1 -1
  296. package/dist/utils/event-stream.d.ts.map +1 -1
  297. package/dist/utils/event-stream.js.map +1 -1
  298. package/dist/utils/hash.d.ts.map +1 -1
  299. package/dist/utils/hash.js.map +1 -1
  300. package/dist/utils/headers.d.ts.map +1 -1
  301. package/dist/utils/headers.js.map +1 -1
  302. package/dist/utils/json-parse.d.ts.map +1 -1
  303. package/dist/utils/json-parse.js.map +1 -1
  304. package/dist/utils/model-operations.d.ts.map +1 -1
  305. package/dist/utils/model-operations.js.map +1 -1
  306. package/dist/utils/models-error.d.ts.map +1 -1
  307. package/dist/utils/models-error.js.map +1 -1
  308. package/dist/utils/node-http-proxy.d.ts.map +1 -1
  309. package/dist/utils/node-http-proxy.js.map +1 -1
  310. package/dist/utils/overflow.d.ts.map +1 -1
  311. package/dist/utils/overflow.js.map +1 -1
  312. package/dist/utils/pi-user-agent.d.ts.map +1 -1
  313. package/dist/utils/pi-user-agent.js.map +1 -1
  314. package/dist/utils/provider-env.d.ts.map +1 -1
  315. package/dist/utils/provider-env.js.map +1 -1
  316. package/dist/utils/provider-retry.d.ts.map +1 -1
  317. package/dist/utils/provider-retry.js.map +1 -1
  318. package/dist/utils/retry.d.ts.map +1 -1
  319. package/dist/utils/retry.js.map +1 -1
  320. package/dist/utils/sanitize-unicode.d.ts.map +1 -1
  321. package/dist/utils/sanitize-unicode.js.map +1 -1
  322. package/dist/utils/sleep.d.ts.map +1 -1
  323. package/dist/utils/sleep.js.map +1 -1
  324. package/dist/utils/stream-deadline.d.ts.map +1 -1
  325. package/dist/utils/stream-deadline.js.map +1 -1
  326. package/dist/utils/text.d.ts.map +1 -1
  327. package/dist/utils/text.js.map +1 -1
  328. package/dist/utils/transcript.d.ts.map +1 -1
  329. package/dist/utils/transcript.js.map +1 -1
  330. package/dist/utils/typebox-helpers.d.ts.map +1 -1
  331. package/dist/utils/typebox-helpers.js.map +1 -1
  332. package/dist/utils/uuid.d.ts.map +1 -1
  333. package/dist/utils/uuid.js.map +1 -1
  334. package/dist/utils/validation.d.ts.map +1 -1
  335. package/dist/utils/validation.js.map +1 -1
  336. package/package.json +5 -6
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic-messages.js","sourceRoot":"","sources":["../../src/api/anthropic-messages.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAS1C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAqB7C,OAAO,EAAE,gCAAgC,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,+BAA+B,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACvF,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EACN,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,iBAAiB,GAEjB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACN,oCAAoC,EACpC,2BAA2B,EAC3B,+BAA+B,GAC/B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACN,0BAA0B,EAC1B,qBAAqB,EACrB,gCAAgC,GAChC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC5G,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D;;;GAGG;AACH,SAAS,qBAAqB,CAAC,cAA+B,EAAE,GAAiB,EAAkB;IAClG,IAAI,cAAc,EAAE,CAAC;QACpB,OAAO,cAAc,CAAC;IACvB,CAAC;IACD,IAAI,mBAAmB,CAAC,oBAAoB,EAAE,GAAG,CAAC,KAAK,MAAM,EAAE,CAAC;QAC/D,OAAO,MAAM,CAAC;IACf,CAAC;IACD,OAAO,OAAO,CAAC;AAAA,CACf;AAED,SAAS,eAAe,CACvB,KAAkC,EAClC,cAA+B,EAC/B,GAAiB,EACqD;IACtE,MAAM,SAAS,GAAG,qBAAqB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IAC7D,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QAC1B,OAAO,EAAE,SAAS,EAAE,CAAC;IACtB,CAAC;IACD,MAAM,GAAG,GAAG,SAAS,KAAK,MAAM,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5G,OAAO;QACN,SAAS;QACT,YAAY,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE;KACxD,CAAC;AAAA,CACF;AAED,wDAAwD;AACxD,EAAE;AACF,6FAA6F;AAC7F,iGAAiG;AACjG,iGAAiG;AACjG,4FAA4F;AAC5F,+FAA+F;AAC/F,8FAA8F;AAC9F,4FAA4F;AAC5F,MAAM,iBAAiB,GAAG,SAAS,CAAC;AAEpC,gDAAgD;AAChD,mEAAmE;AACnE,mDAAmD;AACnD,MAAM,eAAe,GAAG;IACvB,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,iBAAiB;IACjB,eAAe;IACf,cAAc;IACd,WAAW;IACX,cAAc;IACd,OAAO;IACP,MAAM;IACN,YAAY;IACZ,WAAW;IACX,UAAU;IACV,WAAW;CACX,CAAC;AAEF,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAE/E,4EAA4E;AAC5E,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC;AACxF,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAE,KAAc,EAAE,EAAE,CAAC;IAC5D,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC,CAAC;QAChF,IAAI,WAAW;YAAE,OAAO,WAAW,CAAC,IAAI,CAAC;IAC1C,CAAC;IACD,OAAO,IAAI,CAAC;AAAA,CACZ,CAAC;AAEF;;;;;GAKG;AACH,SAAS,oBAAoB,CAAC,OAAuC,EAYhE;IACJ,oEAAoE;IACpE,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IAC1D,IAAI,CAAC,SAAS,EAAE,CAAC;QAChB,OAAO,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACnF,CAAC;IAED,oDAAoD;IACpD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;QACrC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC3B,OAAO;gBACN,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC;aACpC,CAAC;QACH,CAAC;QACD,OAAO;YACN,IAAI,EAAE,OAAgB;YACtB,MAAM,EAAE;gBACP,IAAI,EAAE,QAAiB;gBACvB,UAAU,EAAE,KAAK,CAAC,QAAmE;gBACrF,IAAI,EAAE,KAAK,CAAC,IAAI;aAChB;SACD,CAAC;IAAA,CACF,CAAC,CAAC;IAEH,uDAAuD;IACvD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IACtD,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,MAAM,CAAC,OAAO,CAAC;YACd,IAAI,EAAE,MAAe;YACrB,IAAI,EAAE,sBAAsB;SAC5B,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAAA,CACd;AAMD,MAAM,gCAAgC,GAAG,wCAAwC,CAAC;AAClF,MAAM,yBAAyB,GAAG,iCAAiC,CAAC;AACpE,MAAM,yBAAyB,GAAG,iCAAiC,CAAC;AACpE,MAAM,8BAA8B,GAAG,sCAAsC,CAAC;AAC9E,MAAM,mCAAmC,GAAG,2CAA2C,CAAC;AACxF,MAAM,kCAAkC,GAAG,0CAA0C,CAAC;AACtF,MAAM,cAAc,GAAG,sBAAsB,CAAC;AAE9C;;;;GAIG;AACH,MAAM,0BAA0B,GAAG,CAAC,CAAC;AAIrC,SAAS,cAAc,CAAC,KAAqD,EAA8B;IAC1G,OAAO,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC;AAAA,CAC9B;AAED,SAAS,eAAe,CAAC,KAA4D,EAAU;IAC9F,OAAO,KAAK,CAAC,SAAS,EAAE,eAAe,IAAI,KAAK,CAAC,EAAE,CAAC;AAAA,CACpD;AAED,SAAS,aAAa,CAAC,KAAc,EAA8B;IAClE,MAAM,KAAK,GAAI,KAAgD,EAAE,KAAK,CAAC;IACvE,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAAA,CACpE;AAED,SAAS,oBAAoB,CAAC,KAAY,EAAQ;IACjD,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,0BAA0B,CAAC;IAC/C,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,0BAA0B,CAAC;IAChD,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,0BAA0B,CAAC;IACnD,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,0BAA0B,CAAC;IACpD,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;AAAA,CACvG;AAED;;;;;;GAMG;AACH,SAAS,+BAA+B,CAAC,KAAkC,EAAE,OAAgB,EAAQ;IACpG,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAClC,IAAI,SAAS,EAAE,KAAK,KAAK,SAAS;QAAE,OAAO;IAC3C,MAAM,MAAM,GACX,0GAA0G;QAC1G,+DAA+D,KAAK,CAAC,QAAQ,IAAI,SAAS,CAAC,WAAW,IAAI;QAC1G,wCAAwC,CAAC;IAC1C,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/E,MAAM,IAAI,KAAK,CACd,kDAAkD,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,EAAE,iCAAiC;YAC5G,yCAAyC,MAAM,oDAAoD,CACpG,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAG,OAAkC,CAAC;IAClD,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,eAAe,EAAE,CAAC;QAChD,SAAS,CAAC,IAAI,CAAC,oBAAoB,SAAS,CAAC,eAAe,UAAU,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxG,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;QACtC,SAAS,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5G,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACnC,MAAM,IAAI,KAAK,CACd,0BAA0B,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,EAAE,KAAK;QACnG,GAAG,MAAM,mCAAmC,CAC7C,CAAC;AAAA,CACF;AAED;;;;;;GAMG;AACH,MAAM,yBAAyB,GAAa;IAC3C,IAAI,EAAE,6BAA6B;IACnC,WAAW,EAAE,yDAAyD;IACtE,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC9D,aAAa,EAAE,IAAI;CACnB,CAAC;AAEF,SAAS,+BAA+B,CAAC,KAAkC,EAAW;IACrF,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,qBAAqB,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AAAA,CAC9D;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAS,oCAAoC,CAAC,KAAkC,EAAW;IAC1F,OAAO,KAAK,CAAC,MAAM,EAAE,gCAAgC,KAAK,IAAI,CAAC;AAAA,CAC/D;AAED;;;;;GAKG;AACH,SAAS,sBAAsB,CAAC,KAAkC,EAAW;IAC5E,OAAO,KAAK,CAAC,MAAM,EAAE,sBAAsB,KAAK,IAAI,CAAC;AAAA,CACrD;AASD,SAAS,uBAAuB,CAAC,OAAgB,EAA8C;IAC9F,MAAM,eAAe,GAAI,OAAsE;QAC9F,EAAE,qBAAqB,CAAC;IACzB,OAAO,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;AAAA,CACpE;AAED,gGAAgG;AAChG,SAAS,0BAA0B,CAAC,MAAwB,EAAE,eAA+C,EAAQ;IACpH,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACzC,gCAAgC,CAAC,MAAM,EAAE;QACxC,IAAI,EAAE,iCAAiC;QACvC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,OAAO,EAAE;YACR,iBAAiB,EAAE,eAAe,CAAC,MAAM;YACzC,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnG,KAAK,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;SACjF;KACD,CAAC,CAAC;AAAA,CACH;AAeD;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAS,sBAAsB,CAC9B,MAAwB,EACxB,KAAkC,EAClC,YAAyC,EACzC,KAAc,EACP;IACP,MAAM,UAAU,GAAI,KAAgE,EAAE,KAAK,EAAE,UAAU,CAAC;IACxG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAElE,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACpC,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS;YAAE,SAAS;QAC3C,IAAI,CAAC,SAAS,CAAC,aAAa;YAAE,SAAS;QAEvC,wFAAwF;QACxF,MAAM,WAAW,GAChB,SAAS,CAAC,KAAK,KAAK,eAAe,CAAC,KAAK,CAAC;YACzC,CAAC,CAAC,KAAK,CAAC,IAAI;YACZ,CAAC,CAAC,SAAS,CAAC,KAAK,KAAK,YAAY,CAAC,EAAE;gBACpC,CAAC,CAAC,YAAY,CAAC,IAAI;gBACnB,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,qBAAqB,EAAE,IAAI,CACzC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,CAAC,KAAK,CACxF,EAAE,IAAI,CAAC;QACZ,IAAI,CAAC,WAAW;YAAE,SAAS;QAE3B,MAAM,YAAY,GAAU;YAC3B,KAAK,EAAE,SAAS,CAAC,YAAY,IAAI,CAAC;YAClC,MAAM,EAAE,SAAS,CAAC,aAAa;YAC/B,SAAS,EAAE,SAAS,CAAC,uBAAuB,IAAI,CAAC;YACjD,kFAAkF;YAClF,oFAAoF;YACpF,qFAAqF;YACrF,kFAAkF;YAClF,UAAU,EAAE,SAAS,CAAC,2BAA2B,IAAI,CAAC;YACtD,YAAY,EAAE,SAAS,CAAC,cAAc,EAAE,yBAAyB,IAAI,CAAC;YACtE,WAAW,EAAE,CAAC;YACd,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;SACpE,CAAC;QACF,aAAa,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,SAAS,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,YAAY,CAAC,CAAC;QAE9F,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;QACnD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;QACrD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;QAC3D,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;QAC7D,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;IACpD,CAAC;AAAA,CACD;AAED,SAAS,kBAAkB,CAAC,KAAkC,EAAE;IAC/D,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,KAAK,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IAChG,OAAO;QACN,+BAA+B,EAAE,KAAK,CAAC,MAAM,EAAE,+BAA+B,IAAI,IAAI;QACtF,0BAA0B,EAAE,KAAK,CAAC,MAAM,EAAE,0BAA0B,IAAI,IAAI;QAC5E,0BAA0B,EAAE,KAAK,CAAC,MAAM,EAAE,0BAA0B,IAAI,YAAY;QACpF,qBAAqB,EAAE,KAAK,CAAC,MAAM,EAAE,qBAAqB,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;QACvG,2BAA2B,EAAE,KAAK,CAAC,MAAM,EAAE,2BAA2B,IAAI,IAAI;QAC9E,mBAAmB,EAAE,KAAK,CAAC,MAAM,EAAE,mBAAmB,IAAI,IAAI;QAC9D,mBAAmB,EAAE,KAAK,CAAC,MAAM,EAAE,mBAAmB,IAAI,KAAK;QAC/D,mBAAmB,EAAE,KAAK,CAAC,MAAM,EAAE,mBAAmB,IAAI,KAAK;QAC/D,8BAA8B,EAAE,KAAK,CAAC,MAAM,EAAE,8BAA8B,IAAI,KAAK;QACrF,2BAA2B,EAAE,KAAK,CAAC,MAAM,EAAE,2BAA2B,IAAI,KAAK;KAC/E,CAAC;AAAA,CACF;AAgED,SAAS,YAAY,CAAC,GAAG,aAA8C,EAAmB;IACzF,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;QACrC,IAAI,OAAO,EAAE,CAAC;YACb,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,CAAC;IACF,CAAC;IACD,OAAO,MAAM,CAAC;AAAA,CACd;AAED,SAAS,kBAAkB,CAAC,GAAG,aAA8C,EAAmB;IAC/F,OAAO,YAAY,CAAC,EAAE,YAAY,EAAE,cAAc,EAAE,EAAE,EAAE,GAAG,aAAa,CAAC,CAAC;AAAA,CAC1E;AAED,SAAS,SAAS,CAAC,OAAoC,EAAE,IAAY,EAAW;IAC/E,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACpC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACpD,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;IAC9F,CAAC;IACD,OAAO,KAAK,CAAC;AAAA,CACb;AAED,SAAS,iBAAiB,CAAC,QAAgB,EAAE,MAA0B,EAAE,OAAoC,EAAQ;IACpH,IAAI,MAAM;QAAE,OAAO;IACnB,IACC,SAAS,CAAC,OAAO,EAAE,eAAe,CAAC;QACnC,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC;QAC/B,SAAS,CAAC,OAAO,EAAE,sBAAsB,CAAC,EACzC,CAAC;QACF,OAAO;IACR,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,EAAE,CAAC,CAAC;AAAA,CACxD;AAcD,MAAM,wBAAwB,GAAwB,IAAI,GAAG,CAAC;IAC7D,eAAe;IACf,eAAe;IACf,cAAc;IACd,qBAAqB;IACrB,qBAAqB;IACrB,oBAAoB;CACpB,CAAC,CAAC;AAEH,SAAS,aAAa,CAAC,KAAsB,EAA0B;IACtE,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,KAAK,GAAoB;QAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAC3B,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC;KACnB,CAAC;IACF,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;IACnB,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC;IAChB,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC;IACf,OAAO,KAAK,CAAC;AAAA,CACb;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,KAAsB,EAA0B;IACpF,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;QACjB,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,cAAc,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;IAC/E,IAAI,KAAK,GAAG,cAAc,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;IACxE,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IAED,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;QAC3B,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;SAAM,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAED,OAAO,IAAI,CAAC;AAAA,CACZ;AAED,SAAS,kBAAkB,CAAC,IAAY,EAAU;IACjD,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,mBAAmB,KAAK,CAAC,CAAC,EAAE,CAAC;QAChC,OAAO,YAAY,CAAC;IACrB,CAAC;IACD,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;QACzB,OAAO,mBAAmB,CAAC;IAC5B,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC;AAAA,CACnD;AAED,SAAS,WAAW,CAAC,IAAY,EAAyC;IACzE,MAAM,cAAc,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,SAAS,GAAG,cAAc,GAAG,CAAC,CAAC;IACnC,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;QAC/D,SAAS,IAAI,CAAC,CAAC;IAChB,CAAC;IAED,OAAO;QACN,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC;QACnC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;KAC3B,CAAC;AAAA,CACF;AAED,KAAK,SAAS,CAAC,CAAC,kBAAkB,CACjC,IAAgC,EAChC,MAAoB,EACc;IAClC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAChC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,MAAM,KAAK,GAAoB,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;IAClE,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC;QACrB,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;IAAA,CACrC,CAAC;IACF,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAE3D,IAAI,CAAC;QACJ,OAAO,IAAI,EAAE,CAAC;YACb,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACxC,CAAC;YAED,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,IAAI,EAAE,CAAC;gBACV,MAAM;YACP,CAAC;YAED,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAClD,IAAI,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;YACnC,OAAO,QAAQ,EAAE,CAAC;gBACjB,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC;gBACvB,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAClD,IAAI,KAAK,EAAE,CAAC;oBACX,MAAM,KAAK,CAAC;gBACb,CAAC;gBACD,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;QACF,CAAC;QAED,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QAC3B,IAAI,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QACnC,OAAO,QAAQ,EAAE,CAAC;YACjB,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC;YACvB,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAClD,IAAI,KAAK,EAAE,CAAC;gBACX,MAAM,KAAK,CAAC;YACb,CAAC;YACD,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC3C,IAAI,KAAK,EAAE,CAAC;gBACX,MAAM,KAAK,CAAC;YACb,CAAC;QACF,CAAC;QAED,MAAM,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,aAAa,EAAE,CAAC;YACnB,MAAM,aAAa,CAAC;QACrB,CAAC;IACF,CAAC;YAAS,CAAC;QACV,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC;YACJ,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;QACvB,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACV,MAAM,CAAC,WAAW,EAAE,CAAC;IACtB,CAAC;AAAA,CACD;AAED,KAAK,SAAS,CAAC,CAAC,sBAAsB,CACrC,QAAkB,EAClB,MAAoB,EACoB;IACxC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IACjF,CAAC;IAED,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,kBAAkB,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;QACnE,IAAI,GAAG,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;YACpD,SAAS;QACV,CAAC;QAED,IAAI,CAAC;YACJ,MAAM,KAAK,GAAG,mBAAmB,CAAwB,GAAG,CAAC,IAAI,CAAC,CAAC;YACnE,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBACpC,eAAe,GAAG,IAAI,CAAC;YACxB,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBAC1C,aAAa,GAAG,IAAI,CAAC;YACtB,CAAC;YACD,MAAM,KAAK,CAAC;QACb,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,IAAI,KAAK,CACd,uCAAuC,GAAG,CAAC,KAAK,KAAK,OAAO,UAAU,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAC5G,CAAC;QACH,CAAC;IACF,CAAC;IAED,IAAI,eAAe,IAAI,CAAC,aAAa,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAC/D,CAAC;AAAA,CACD;AAED,MAAM,CAAC,MAAM,MAAM,GAA2D,CAC7E,KAAkC,EAClC,OAA0B,EAC1B,OAA0B,EACI,EAAE,CAAC;IACjC,MAAM,MAAM,GAAG,IAAI,2BAA2B,EAAE,CAAC;IACjD,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,8BAA8B,CAAC,CAAC;IAC/G,MAAM,YAAY,GAAG,eAAe,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAEjE,CAAC,KAAK,IAAI,EAAE,CAAC;QACZ,MAAM,qBAAqB,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACtG,MAAM,MAAM,GAAqB;YAChC,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,EAAE;YACX,GAAG,EAAE,KAAK,CAAC,GAAU;YACrB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,KAAK,EAAE,KAAK,CAAC,EAAE;YACf,GAAG,CAAC,qBAAqB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,CAAC;YACzE,KAAK,EAAE;gBACN,KAAK,EAAE,CAAC;gBACR,MAAM,EAAE,CAAC;gBACT,SAAS,EAAE,CAAC;gBACZ,UAAU,EAAE,CAAC;gBACb,WAAW,EAAE,CAAC;gBACd,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;aACpE;YACD,UAAU,EAAE,SAAS;YACrB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACrB,CAAC;QAEF,MAAM,cAAc,GAAG,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAExF,IAAI,oBAAgE,CAAC;QAErE,IAAI,CAAC;YACJ,IAAI,MAAiB,CAAC;YACtB,IAAI,OAAgB,CAAC;YACrB,IAAI,UAAU,GAAG,KAAK,CAAC;YACvB,IAAI,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;YAExC,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;gBACrB,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;gBACxB,OAAO,GAAG,KAAK,CAAC;YACjB,CAAC;iBAAM,CAAC;gBACP,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC;gBAC/B,iBAAiB,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;gBAE5D,IAAI,qBAAyD,CAAC;gBAC9D,IAAI,KAAK,CAAC,QAAQ,KAAK,gBAAgB,EAAE,CAAC;oBACzC,MAAM,SAAS,GAAG,qBAAqB,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;oBACpE,qBAAqB,GAAG,gCAAgC,CACvD,KAAK,CAAC,OAAO,EACb,0BAA0B,CAAC;wBAC1B,QAAQ,EAAE,iBAAiB,CAAC,QAAQ;wBACpC,SAAS;wBACT,MAAM;qBACN,CAAC,CACF,CAAC;gBACH,CAAC;gBAED,MAAM,cAAc,GAAG,qBAAqB,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;gBACpF,MAAM,cAAc,GAAG,cAAc,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC;gBAElF,MAAM,OAAO,GAAG,YAAY,CAC3B,KAAK,EACL,MAAM,EACN,KAAK,CAAC,SAAS,IAAI,OAAO,EAAE,eAAe,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,IAAI,IAAI,CAAC,EAC7F,qCAAqC,CAAC,KAAK,EAAE,OAAO,CAAC,EACrD,+BAA+B,CAAC,KAAK,CAAC,EACtC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,KAAK,EACd,qBAAqB,EACrB,cAAc,EACd,kBAAkB,CAAC,KAAK,CAAC,CAAC,2BAA2B;oBACpD,kBAAkB,CAAC,KAAK,CAAC,CAAC,8BAA8B;oBACxD,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;oBAClF,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAClD,CAAC;gBACF,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;gBACxB,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;YAChC,CAAC;YACD,IAAI,MAAM,GAAG,WAAW,CAAC,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YACrE,MAAM,UAAU,GAAG,MAAM,OAAO,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC7D,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC9B,MAAM,GAAG,UAA0C,CAAC;YACrD,CAAC;YACD,+BAA+B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC/C,MAAM,cAAc,GAAG;gBACtB,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnE,GAAG,CAAC,OAAO,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3E,UAAU,EAAE,CAAC;aACb,CAAC;YACF,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAC1C,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,cAAc,CAAC,CAAC,UAAU,EAAE,EAC3F;gBACC,UAAU,EAAE,OAAO,EAAE,UAAU;gBAC/B,eAAe,EAAE,OAAO,EAAE,eAAe;gBACzC,MAAM,EAAE,cAAc,CAAC,MAAM;aAC7B,CACD,CAAC;YACF,MAAM,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAC5G,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAGhD,MAAM,MAAM,GAAG,MAAM,CAAC,OAAkB,CAAC;YAEzC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,kBAAkB,CAC3C,sBAAsB,CAAC,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC,EACvD,cAAc,CAAC,UAAU,EACzB,cAAc,CAAC,KAAK,CACpB,EAAE,CAAC;gBACH,MAAM,OAAO,EAAE,qBAAqB,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBACrD,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;oBACpC,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;oBACrC,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;oBAC1C,IAAI,aAAa,KAAK,eAAe,CAAC,KAAK,CAAC;wBAAE,MAAM,CAAC,aAAa,GAAG,aAAa,CAAC;oBACnF,MAAM,YAAY,GACjB,aAAa,KAAK,eAAe,CAAC,KAAK,CAAC;wBACvC,CAAC,CAAC,SAAS;wBACX,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,qBAAqB,EAAE,IAAI,CACzC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,KAAK,KAAK,aAAa,CACtF,EAAE,IAAI,CAAC;oBACX,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;oBACxF,uDAAuD;oBACvD,8EAA8E;oBAC9E,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC;oBAC3D,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC;oBAC7D,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,uBAAuB,IAAI,CAAC,CAAC;oBAC1E,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,2BAA2B,IAAI,CAAC,CAAC;oBAC/E,MAAM,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,yBAAyB,IAAI,CAAC,CAAC;oBAC/F,kEAAkE;oBAClE,MAAM,CAAC,KAAK,CAAC,WAAW;wBACvB,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;oBAC7F,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;oBACxC,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC;oBAChE,IAAI,WAAW,KAAK,MAAM;wBAAE,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC/D,oBAAoB,GAAG,uBAAuB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,oBAAoB,CAAC;gBACvF,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;oBACjD,IAAI,KAAK,CAAC,aAAa,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;wBACzC,MAAM,KAAK,GAAU;4BACpB,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,IAAI,IAAI,EAAE;4BACpC,KAAK,EAAE,KAAK,CAAC,KAAK;yBAClB,CAAC;wBACF,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBAC3B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;oBAC/F,CAAC;yBAAM,IAAI,KAAK,CAAC,aAAa,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;wBACpD,MAAM,KAAK,GAAU;4BACpB,IAAI,EAAE,UAAU;4BAChB,QAAQ,EAAE,KAAK,CAAC,aAAa,CAAC,QAAQ,IAAI,EAAE;4BAC5C,iBAAiB,EAAE,KAAK,CAAC,aAAa,CAAC,SAAS,IAAI,EAAE;4BACtD,KAAK,EAAE,KAAK,CAAC,KAAK;yBAClB,CAAC;wBACF,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBAC3B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;oBACnG,CAAC;yBAAM,IAAI,KAAK,CAAC,aAAa,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;wBAC7D,MAAM,KAAK,GAAU;4BACpB,IAAI,EAAE,UAAU;4BAChB,QAAQ,EAAE,sBAAsB;4BAChC,iBAAiB,EAAE,KAAK,CAAC,aAAa,CAAC,IAAI;4BAC3C,QAAQ,EAAE,IAAI;4BACd,KAAK,EAAE,KAAK,CAAC,KAAK;yBAClB,CAAC;wBACF,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBAC3B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;oBACnG,CAAC;yBAAM,IAAI,KAAK,CAAC,aAAa,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;wBACpD,MAAM,KAAK,GAAU;4BACpB,IAAI,EAAE,UAAU;4BAChB,EAAE,EAAE,KAAK,CAAC,aAAa,CAAC,EAAE;4BAC1B,IAAI,EAAE,OAAO;gCACZ,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC;gCAC5D,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI;4BAC3B,SAAS,EAAG,KAAK,CAAC,aAAa,CAAC,KAA6B,IAAI,EAAE;4BACnE,WAAW,EAAE,EAAE;4BACf,KAAK,EAAE,KAAK,CAAC,KAAK;yBAClB,CAAC;wBACF,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBAC3B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;oBACnG,CAAC;yBAAM,IAAK,KAAK,CAAC,aAAmC,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;wBAC3E,oEAAoE;wBACpE,gFAAgF;wBAChF,+EAA+E;wBAC/E,2DAA2D;wBAC3D,8EAA8E;wBAC9E,EAAE;wBACF,kEAAkE;wBAClE,MAAM,aAAa,GAAG,KAAK,CAAC,aAG3B,CAAC;wBACF,MAAM,OAAO,GAAG,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC;wBACxC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;4BACnB,IAAI,EAAE,UAAU;4BAChB,SAAS,EAAE,aAAa,CAAC,IAAI,EAAE,KAAK,IAAI,MAAM,CAAC,KAAK;4BACpD,OAAO,EAAE,OAAO,IAAI,MAAM,CAAC,KAAK;yBAChC,CAAC,CAAC;wBACH,6EAA6E;wBAC7E,0EAA0E;wBAC1E,8EAA8E;wBAC9E,0CAA0C;wBAC1C,IAAI,OAAO,IAAI,OAAO,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;4BACzC,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC;4BACvB,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,EAAE,qBAAqB,EAAE,IAAI,CAC7D,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,KAAK,KAAK,OAAO,CAChF,EAAE,IAAI,CAAC;4BACR,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;wBACnF,CAAC;oBACF,CAAC;gBACF,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;oBACjD,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;wBACvC,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC;wBAC/D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;wBAC5B,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;4BACpC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;4BAC/B,MAAM,CAAC,IAAI,CAAC;gCACX,IAAI,EAAE,YAAY;gCAClB,YAAY,EAAE,KAAK;gCACnB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI;gCACvB,OAAO,EAAE,MAAM;6BACf,CAAC,CAAC;wBACJ,CAAC;oBACF,CAAC;yBAAM,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;wBAClD,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC;wBAC/D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;wBAC5B,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;4BACxC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;4BACvC,MAAM,CAAC,IAAI,CAAC;gCACX,IAAI,EAAE,gBAAgB;gCACtB,YAAY,EAAE,KAAK;gCACnB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ;gCAC3B,OAAO,EAAE,MAAM;6BACf,CAAC,CAAC;wBACJ,CAAC;oBACF,CAAC;yBAAM,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;wBACpD,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC;wBAC/D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;wBAC5B,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;4BACxC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC;4BAC9C,KAAK,CAAC,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;4BACxD,MAAM,CAAC,IAAI,CAAC;gCACX,IAAI,EAAE,gBAAgB;gCACtB,YAAY,EAAE,KAAK;gCACnB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY;gCAC/B,OAAO,EAAE,MAAM;6BACf,CAAC,CAAC;wBACJ,CAAC;oBACF,CAAC;yBAAM,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;wBACnD,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC;wBAC/D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;wBAC5B,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;4BACxC,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC;4BACxD,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;wBAClD,CAAC;oBACF,CAAC;gBACF,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;oBAChD,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC;oBAC/D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC5B,IAAI,KAAK,EAAE,CAAC;wBACX,OAAQ,KAAa,CAAC,KAAK,CAAC;wBAC5B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;4BAC3B,MAAM,CAAC,IAAI,CAAC;gCACX,IAAI,EAAE,UAAU;gCAChB,YAAY,EAAE,KAAK;gCACnB,OAAO,EAAE,KAAK,CAAC,IAAI;gCACnB,OAAO,EAAE,MAAM;6BACf,CAAC,CAAC;wBACJ,CAAC;6BAAM,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;4BACtC,MAAM,CAAC,IAAI,CAAC;gCACX,IAAI,EAAE,cAAc;gCACpB,YAAY,EAAE,KAAK;gCACnB,OAAO,EAAE,KAAK,CAAC,QAAQ;gCACvB,OAAO,EAAE,MAAM;6BACf,CAAC,CAAC;wBACJ,CAAC;6BAAM,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;4BACtC,KAAK,CAAC,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;4BACxD,gEAAgE;4BAChE,4BAA4B;4BAC5B,OAAQ,KAAkC,CAAC,WAAW,CAAC;4BACvD,MAAM,CAAC,IAAI,CAAC;gCACX,IAAI,EAAE,cAAc;gCACpB,YAAY,EAAE,KAAK;gCACnB,QAAQ,EAAE,KAAK;gCACf,OAAO,EAAE,MAAM;6BACf,CAAC,CAAC;wBACJ,CAAC;oBACF,CAAC;gBACF,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;oBAC3C,IAAI,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;wBAC7B,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;wBAC/C,MAAM,gBAAgB,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;wBAC1F,MAAM,CAAC,UAAU,GAAG,gBAAgB,CAAC,UAAU,CAAC;wBAChD,IAAI,gBAAgB,CAAC,YAAY,EAAE,CAAC;4BACnC,MAAM,CAAC,YAAY,GAAG,gBAAgB,CAAC,YAAY,CAAC;wBACrD,CAAC;oBACF,CAAC;oBACD,kDAAkD;oBAClD,mFAAmF;oBACnF,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;wBACjB,IAAI,KAAK,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC;4BACtC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC;wBAC/C,CAAC;wBACD,IAAI,KAAK,CAAC,KAAK,CAAC,aAAa,IAAI,IAAI,EAAE,CAAC;4BACvC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC;wBACjD,CAAC;wBACD,IAAI,KAAK,CAAC,KAAK,CAAC,uBAAuB,IAAI,IAAI,EAAE,CAAC;4BACjD,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC;wBAC9D,CAAC;wBACD,IAAI,KAAK,CAAC,KAAK,CAAC,2BAA2B,IAAI,IAAI,EAAE,CAAC;4BACrD,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,2BAA2B,CAAC;wBACnE,CAAC;wBACD,uFAAuF;wBACvF,yFAAyF;wBACzF,mFAAmF;wBACnF,MAAM,cAAc,GAAI,KAAK,CAAC,KAAkE;6BAC9F,qBAAqB,EAAE,eAAe,CAAC;wBACzC,yGAAyG;wBACzG,MAAM,aAAa,GAClB,KAAK,CAAC,KACN,CAAC,cAAc,CAAC;wBACjB,IAAI,aAAa,EAAE,yBAAyB,IAAI,IAAI,EAAE,CAAC;4BACtD,MAAM,CAAC,KAAK,CAAC,YAAY,GAAG,aAAa,CAAC,yBAAyB,CAAC;wBACrE,CAAC;wBACD,IAAI,cAAc,IAAI,IAAI,EAAE,CAAC;4BAC5B,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,cAAc,CAAC;wBACzC,CAAC;oBACF,CAAC;oBACD,kEAAkE;oBAClE,MAAM,CAAC,KAAK,CAAC,WAAW;wBACvB,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;oBAC7F,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;oBACxC,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC;oBACxD,IAAI,WAAW,KAAK,MAAM;wBAAE,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC/D,6EAA6E;oBAC7E,4EAA4E;oBAC5E,qCAAqC;oBACrC,MAAM,sBAAsB,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;oBAC9D,IAAI,sBAAsB,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACjE,oBAAoB,GAAG,sBAAsB,CAAC;oBAC/C,CAAC;oBACD,sBAAsB,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;gBAC1D,CAAC;YACF,CAAC;YAED,IAAI,oBAAoB;gBAAE,0BAA0B,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;YACnF,IAAI,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACxC,CAAC;YAED,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;YACjE,CAAC;YACD,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,IAAI,MAAM,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;gBACtE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,YAAY,IAAI,2BAA2B,CAAC,CAAC;YACrE,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAC1E,MAAM,CAAC,GAAG,EAAE,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IACC,oBAAoB;gBACpB,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,iCAAiC,CAAC,EAC/F,CAAC;gBACF,0BAA0B,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;YAC1D,CAAC;YACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpC,OAAQ,KAA4B,CAAC,KAAK,CAAC;gBAC3C,oEAAoE;gBACpE,OAAQ,KAAkC,CAAC,WAAW,CAAC;YACxD,CAAC;YACD,MAAM,CAAC,UAAU,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;YACnE,MAAM,CAAC,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACrF,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACzE,MAAM,CAAC,GAAG,EAAE,CAAC;QACd,CAAC;gBAAS,CAAC;YACV,cAAc,CAAC,OAAO,EAAE,CAAC;QAC1B,CAAC;IAAA,CACD,CAAC,EAAE,CAAC;IAEL,OAAO,MAAM,CAAC;AAAA,CACd,CAAC;AAEF;;;;;GAKG;AACH,SAAS,wBAAwB,CAChC,KAAkC,EAClC,KAAuC,EACrB;IAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,MAAyB,CAAC;IAEjE,QAAQ,KAAK,EAAE,CAAC;QACf,KAAK,SAAS,CAAC;QACf,KAAK,KAAK;YACT,OAAO,KAAK,CAAC;QACd,KAAK,QAAQ;YACZ,OAAO,QAAQ,CAAC;QACjB,KAAK,MAAM;YACV,OAAO,MAAM,CAAC;QACf;YACC,OAAO,MAAM,CAAC;IAChB,CAAC;AAAA,CACD;AAED,MAAM,CAAC,MAAM,YAAY,GAA8D,CACtF,KAAkC,EAClC,OAA0B,EAC1B,OAA6B,EACC,EAAE,CAAC;IACjC,iBAAiB,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAErE,MAAM,IAAI,GAAG;QACZ,GAAG,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC;QAC7D,UAAU,EAAE,OAAO,EAAE,UAAU;KACJ,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE;YAC7B,GAAG,IAAI;YACP,eAAe,EAAE,KAAK;SACK,CAAC,CAAC;IAC/B,CAAC;IAED,0DAA0D;IAC1D,+CAA+C;IAC/C,IAAI,KAAK,CAAC,MAAM,EAAE,qBAAqB,KAAK,IAAI,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,wBAAwB,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QAClE,OAAO,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE;YAC7B,GAAG,IAAI;YACP,eAAe,EAAE,IAAI;YACrB,MAAM;SACqB,CAAC,CAAC;IAC/B,CAAC;IAED,8FAA8F;IAC9F,4FAA4F;IAC5F,MAAM,QAAQ,GAAG,0BAA0B,CAC1C,IAAI,CAAC,SAAS,EACd,KAAK,CAAC,SAAS,EACf,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,eAAe,CACvB,CAAC;IAEF,MAAM,SAAS,GAAG,uBAAuB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IAE9E,OAAO,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE;QAC7B,GAAG,IAAI;QACP,SAAS;QACT,eAAe,EAAE,IAAI;QACrB,oBAAoB,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC,CAAC;KAC3D,CAAC,CAAC;AAAA,CAC9B,CAAC;AAEF,SAAS,YAAY,CAAC,MAAc,EAAW;IAC9C,OAAO,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAAA,CACrC;AAED,SAAS,YAAY,CACpB,KAAkC,EAClC,MAA0B,EAC1B,mBAA4B,EAC5B,+BAAwC,EACxC,yBAAkC,EAClC,cAAgC,EAChC,KAA+B,EAC/B,cAAuC,EACvC,SAAkB,EAClB,oBAAoB,GAAG,KAAK,EACmB;IAC/C,wFAAwF;IACxF,MAAM,oBAAoB,GAAG,mBAAmB,IAAI,KAAK,CAAC,MAAM,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACjG,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,IAAI,+BAA+B,EAAE,CAAC;QACrC,YAAY,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,oBAAoB,EAAE,CAAC;QAC1B,YAAY,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,yBAAyB,EAAE,CAAC;QAC/B,YAAY,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,oCAAoC,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,YAAY,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,YAAY,CAAC,IAAI,CAAC,mCAAmC,EAAE,8BAA8B,CAAC,CAAC;IACxF,CAAC;IACD,IAAI,oBAAoB;QAAE,YAAY,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAChF,IAAI,cAAc,CAAC,KAAK,CAAC,KAAK,MAAM;QAAE,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACxE,MAAM,kBAAkB,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;IAEtD,yCAAyC;IACzC,IAAI,KAAK,CAAC,QAAQ,KAAK,gBAAgB,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;YAC5B,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,MAAM,IAAI,IAAI;YACzB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,uBAAuB,EAAE,IAAI;YAC7B,KAAK;YACL,cAAc,EAAE,kBAAkB,CACjC;gBACC,MAAM,EAAE,kBAAkB;gBAC1B,2CAA2C,EAAE,MAAM;gBACnD,GAAG,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5F,EACD,KAAK,CAAC,OAAO,EACb,cAAc,EACd,cAAc,CACd;SACD,CAAC,CAAC;QAEH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;IACxC,CAAC;IAED,mDAAmD;IACnD,IAAI,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;YAC5B,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,MAAM;YACjB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,uBAAuB,EAAE,IAAI;YAC7B,KAAK;YACL,cAAc,EAAE,kBAAkB,CACjC;gBACC,MAAM,EAAE,kBAAkB;gBAC1B,2CAA2C,EAAE,MAAM;gBACnD,gBAAgB,EAAE,CAAC,sBAAsB,EAAE,kBAAkB,EAAE,GAAG,kBAAkB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC/F,YAAY,EAAE,cAAc,iBAAiB,EAAE;gBAC/C,OAAO,EAAE,KAAK;aACd,EACD,KAAK,CAAC,OAAO,EACb,cAAc,CACd;SACD,CAAC,CAAC;QAEH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACvC,CAAC;IAED,gCAAgC;IAChC,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,sBAAsB,GAAoB,EAAE,CAAC;IACnD,IAAI,SAAS,IAAI,MAAM,CAAC,0BAA0B,EAAE,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,CAAC,qBAAqB,KAAK,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,oBAAoB,CAAC;QACrG,sBAAsB,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAC5C,CAAC;IACD,MAAM,cAAc,GAAG,kBAAkB,CACxC;QACC,MAAM,EAAE,kBAAkB;QAC1B,2CAA2C,EAAE,MAAM;QACnD,GAAG,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5F,EACD,sBAAsB,EACtB,KAAK,CAAC,OAAO,EACb,cAAc,CACd,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC5B,MAAM,EAAE,MAAM,IAAI,IAAI;QACtB,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,uBAAuB,EAAE,IAAI;QAC7B,KAAK;QACL,cAAc;KACd,CAAC,CAAC;IAEH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;AAAA,CACvC;AAED,SAAS,wBAAwB,CAChC,KAAkC,EAClC,OAA0B,EAC1B,OAAgB,EAChB,OAA0B,EAC2B;IACrD,IAAI,UAAqC,CAAC;IAC1C,KAAK,MAAM,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;QACzD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;YAC3D,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,gBAAgB;gBAAE,UAAU,GAAG,KAAK,CAAC;QACjE,CAAC;IACF,CAAC;IACD,IAAI,UAAU,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IACnC,IAAI,UAAU,KAAK,SAAS;QAC3B,OAAO;YACN,GAAG,IAAI,GAAG,CACT,UAAU;iBACR,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;iBAChC,MAAM,CAAC,OAAO,CAAC,CACjB;SACD,CAAC;IACH,MAAM,QAAQ,GAAG,CAAC,kCAAkC,CAAC,CAAC;IACtD,IAAI,OAAO;QAAE,QAAQ,CAAC,IAAI,CAAC,sBAAsB,EAAE,kBAAkB,CAAC,CAAC;IACvE,IAAI,qCAAqC,CAAC,KAAK,EAAE,OAAO,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAC3G,IACC,KAAK,CAAC,SAAS;QACf,OAAO,EAAE,eAAe;QACxB,CAAC,OAAO,CAAC,mBAAmB,IAAI,IAAI,CAAC;QACrC,KAAK,CAAC,MAAM,EAAE,qBAAqB,KAAK,IAAI,EAC3C,CAAC;QACF,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,+BAA+B,CAAC,KAAK,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACrF,IAAI,oCAAoC,CAAC,KAAK,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC/F,IAAI,sBAAsB,CAAC,KAAK,CAAC;QAChC,QAAQ,CAAC,IAAI,CAAC,mCAAmC,EAAE,8BAA8B,CAAC,CAAC;IACpF,IAAI,cAAc,CAAC,KAAK,CAAC,KAAK,MAAM;QAAE,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;AAAA,CAC9B;AAED,SAAS,WAAW,CACnB,KAAkC,EAClC,OAA0B,EAC1B,YAAqB,EACrB,OAA0B,EACK;IAC/B,MAAM,EAAE,YAAY,EAAE,GAAG,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IACvF,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvE,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,CAAC,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACjG,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,mBAAmB,CAAC,CAAC;IAC5F,MAAM,oBAAoB,GAAG,oBAAoB,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC;IACvG,wFAAwF;IACxF,sFAAsF;IACtF,4FAA4F;IAC5F,MAAM,YAAY,GAAG,oBAAoB,EAAE,UAAU,IAAI,EAAE,CAAC;IAC5D,MAAM,iBAAiB,GACtB,MAAM,CAAC,8BAA8B;QACrC,MAAM,CAAC,2BAA2B;QAClC,YAAY,CAAC,MAAM,GAAG,CAAC;QACvB,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,eAAe,CAChC,oBAAoB,EACpB,YAAY,EACZ,YAAY,EACZ,MAAM,CAAC,mBAAmB,EAC1B,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAC1D,iBAAiB,CACjB,CAAC;IACF,MAAM,YAAY,GAAG,OAAO,EAAE,MAAM,IAAI,MAAM,CAAC;IAC/C,MAAM,MAAM,GAAiC;QAC5C,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC;QAC7B,QAAQ,EAAE,CAAC,sBAAsB,CAAC,KAAK,CAAC;YACvC,CAAC,CAAC,2BAA2B,CAAC,SAAS,EAAE,YAAY,CAAC;YACtD,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAmB;QACxC,UAAU,EAAE,OAAO,EAAE,SAAS,IAAI,KAAK,CAAC,SAAS;QACjD,MAAM,EAAE,IAAI;KACZ,CAAC;IACF,IAAI,iBAAiB;QAAE,MAAM,CAAC,KAAK,GAAG,wBAAwB,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IACtG,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACpC,IAAI,KAAK,KAAK,SAAS;QAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;IAE9C,yDAAyD;IACzD,IAAI,YAAY,EAAE,CAAC;QAClB,MAAM,CAAC,MAAM,GAAG;YACf;gBACC,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,2DAA2D;gBACjE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACxD;SACD,CAAC;QACF,IAAI,iBAAiB,EAAE,CAAC;YACvB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBAClB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,kBAAkB,CAAC,iBAAiB,CAAC;gBAC3C,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACxD,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;SAAM,IAAI,iBAAiB,EAAE,CAAC;QAC9B,0DAA0D;QAC1D,MAAM,CAAC,MAAM,GAAG;YACf;gBACC,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,kBAAkB,CAAC,iBAAiB,CAAC;gBAC3C,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACxD;SACD,CAAC;IACH,CAAC;IAED,0FAA0F;IAC1F,IACC,OAAO,EAAE,WAAW,KAAK,SAAS;QAClC,CAAC,OAAO,EAAE,eAAe;QACzB,CAAC,sBAAsB,CAAC,KAAK,CAAC;QAC9B,MAAM,CAAC,mBAAmB,EACzB,CAAC;QACF,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAC1C,CAAC;IAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IACvF,IAAI,iBAAiB,EAAE,CAAC;QACvB,mFAAmF;QACnF,kFAAkF;QAClF,kFAAkF;QAClF,8EAA8E;QAC9E,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACpE,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACrG,MAAM,CAAC,KAAK,GAAG;YACd,GAAG,YAAY,CACd,YAAY,EACZ,YAAY,EACZ,MAAM,CAAC,+BAA+B,EACtC,MAAM,CAAC,mBAAmB,EAC1B,gBAAgB,CAChB;YACD,yBAAyB;YACzB,GAAG,YAAY,CACd,UAAU,EACV,YAAY,EACZ,MAAM,CAAC,+BAA+B,EACtC,MAAM,CAAC,mBAAmB,CAC1B,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;SACnD,CAAC;IACH,CAAC;SAAM,CAAC;QACP,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,KAAK,GAAG,YAAY,CAC1B,KAAK,EACL,YAAY,EACZ,MAAM,CAAC,+BAA+B,EACtC,MAAM,CAAC,mBAAmB,EAC1B,gBAAgB,CAChB,CAAC;QACH,CAAC;IACF,CAAC;IAED,6EAA6E;IAC7E,+EAA+E;IAC/E,IAAI,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,MAAM,CAAC,QAAQ,GAAG;YACjB,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,OAAO,EAAE,eAAe,IAAI,YAAY;YACjD,aAAa,EAAE,EAAE,wBAAwB,EAAE,YAAY,EAAE;SACW,CAAC;QACtE,MAAM,CAAC,aAAa,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC3C,CAAC;SAAM,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QAC5B,IAAI,OAAO,EAAE,eAAe,EAAE,CAAC;YAC9B,qEAAqE;YACrE,kEAAkE;YAClE,MAAM,OAAO,GAA6B,OAAO,CAAC,eAAe,IAAI,YAAY,CAAC;YAClF,IAAI,KAAK,CAAC,MAAM,EAAE,qBAAqB,KAAK,IAAI,EAAE,CAAC;gBAClD,gEAAgE;gBAChE,MAAM,CAAC,QAAQ,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;gBAChD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;oBACpB,iFAAiF;oBACjF,MAAM,CAAC,aAAa;wBACnB,OAAO,CAAC,MAAM,KAAK,OAAO;4BACzB,CAAC,CAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAExB;4BACH,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;gBAChC,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,yCAAyC;gBACzC,MAAM,CAAC,QAAQ,GAAG;oBACjB,IAAI,EAAE,SAAS;oBACf,aAAa,EAAE,OAAO,CAAC,oBAAoB,IAAI,IAAI;oBACnD,OAAO;iBACP,CAAC;YACH,CAAC;QACF,CAAC;aAAM,IAAI,OAAO,EAAE,eAAe,KAAK,KAAK,IAAI,KAAK,CAAC,gBAAgB,EAAE,GAAG,KAAK,IAAI,EAAE,CAAC;YACvF,MAAM,CAAC,QAAQ,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QACxC,CAAC;QAED,qFAAqF;QACrF,wFAAwF;QACxF,0FAA0F;QAC1F,yFAAyF;QACzF,yFAAyF;QACzF,yEAAyE;QACzE,IAAI,oCAAoC,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,MAAM,YAAY,GAAG,EAAE,aAAa,EAAE,EAAE,wBAAwB,EAAE,YAAY,EAAE,EAAE,CAAC;YACnF,+EAA+E;YAC/E,IAAI,MAAM,CAAC,QAAQ,EAAE,IAAI,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;gBACjF,kFAAkF;gBAClF,6EAA6E;gBAC7E,MAAM,CAAC,QAAQ,GAAG,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,YAAY,EAEtD,CAAC;YACH,CAAC;iBAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE,qBAAqB,KAAK,IAAI,EAAE,CAAC;gBAC7E,8EAA8E;gBAC9E,kFAAkF;gBAClF,iFAAiF;gBACjF,MAAM,CAAC,QAAQ,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,YAAY,EAEpD,CAAC;YACH,CAAC;QACF,CAAC;IACF,CAAC;IAED,IAAI,OAAO,EAAE,QAAQ,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;QACxC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAChC,MAAM,CAAC,QAAQ,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QACvC,CAAC;IACF,CAAC;IAED,IAAI,OAAO,EAAE,UAAU,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC;QACrC,MAAM,QAAQ,GAAG,SAAS,KAAK,KAAK,IAAI,CAAC,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;QACrG,IAAI,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE,wBAAwB,KAAK,KAAK,EAAE,CAAC;YAClE,uFAAuF;YACvF,8DAA8D;YAC9D,uFAAuF;YACvF,iEAAiE;YACjE,EAAE;YACF,kFAAkF;YAClF,kFAAkF;YAClF,sFAAsF;YACtF,qFAAqF;YACrF,qFAAqF;YACrF,8EAA8E;YAC9E,yDAAyD;YACzD,qDAAqD;YACrD,MAAM,cAAc,GAAG,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,SAAS,CAAC,IAAI,GAAG,CAAC;YAC9F,MAAM,IAAI,KAAK,CACd,SAAS,KAAK,CAAC,EAAE,oDAAoD,cAAc,KAAK;gBACvF,2EAA2E,CAC5E,CAAC;QACH,CAAC;QACD,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YACnC,MAAM,CAAC,WAAW,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC1C,CAAC;aAAM,CAAC;YACP,MAAM,CAAC,WAAW,GAAG,SAAS,CAAC;QAChC,CAAC;IACF,CAAC;IAED,MAAM,qBAAqB,GAAG,KAAK,CAAC,MAAM,EAAE,qBAAqB,CAAC;IAClE,IAAI,qBAAqB,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/D,MAAM,CAAC,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACzF,CAAC;IAED,OAAO,MAAM,CAAC;AAAA,CACd;AAED,2EAA2E;AAC3E,SAAS,mBAAmB,CAAC,EAAU,EAAU;IAChD,OAAO,EAAE,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAAA,CACvD;AAED,SAAS,iBAAiB,CAAC,GAAsB,EAAqB;IACrE,OAAO;QACN,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,GAAG,CAAC,UAAU;QAC3B,OAAO,EAAE,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC;QAC1C,QAAQ,EAAE,GAAG,CAAC,OAAO;KACrB,CAAC;AAAA,CACF;AAED,SAAS,eAAe,CACvB,mBAA8B,EAC9B,YAAqB,EACrB,YAAoC,EACpC,mBAAmB,GAAG,KAAK,EAC3B,eAAwB,EACxB,iBAAiB,GAAG,KAAK,EACI;IAC7B,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,MAAM,eAAe,GAAG,IAAI,GAAG,EAA2B,CAAC;IAC3D,qFAAqF;IACrF,wFAAwF;IACxF,0FAA0F;IAC1F,qFAAqF;IACrF,oFAAoF;IACpF,MAAM,qBAAqB,GAAmB,EAAE,CAAC;IACjD,MAAM,0BAA0B,GAAG,GAAS,EAAE,CAAC;QAC9C,MAAM,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,CAAC;QACtC,qBAAqB,CAAC,MAAM,GAAG,CAAC,CAAC;IAAA,CACjC,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrD,MAAM,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;QAEnC,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,oFAAoF;YACpF,qFAAqF;YACrF,MAAM,IAAI,GAAG,yBAAyB,CAAC,GAAG,CAAC,CAAC;YAC5C,MAAM,MAAM,GAAwB,EAAE,CAAC;YACvC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnF,IAAI,iBAAiB,EAAE,CAAC;gBACvB,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;oBAC3C,MAAM,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,cAAc;wBACpB,IAAI,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;qBAC9F,CAAC,CAAC;gBACJ,CAAC;gBACD,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;oBACzC,MAAM,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,eAAe;wBACrB,IAAI,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;qBAC9F,CAAC,CAAC;gBACJ,CAAC;YACF,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;gBAAE,qBAAqB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QACxF,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAChC,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACrC,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACnC,MAAM,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC;qBACxC,CAAC,CAAC;gBACJ,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,MAAM,MAAM,GAAwB,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;oBAC7D,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;wBAC1B,OAAO;4BACN,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;yBACnC,CAAC;oBACH,CAAC;oBACD,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;wBAC9B,4EAA4E;wBAC5E,8EAA8E;wBAC9E,0DAA0D;wBAC1D,oEAAoE;wBACpE,+BAA+B,CAAC,IAAI,CAAC,CAAC;wBACtC,OAAO;4BACN,IAAI,EAAE,UAAU;4BAChB,MAAM,EAAE;gCACP,IAAI,EAAE,QAAQ;gCACd,UAAU,EAAE,iBAAiB;gCAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;6BACf;4BACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBAC1C,CAAC;oBACH,CAAC;oBACD,OAAO;wBACN,IAAI,EAAE,OAAO;wBACb,MAAM,EAAE;4BACP,IAAI,EAAE,QAAQ;4BACd,UAAU,EAAE,IAAI,CAAC,QAAmE;4BACpF,IAAI,EAAE,IAAI,CAAC,IAAI;yBACf;qBACD,CAAC;gBAAA,CACF,CAAC,CAAC;gBACH,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;oBAC3C,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;wBACvB,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;oBACjC,CAAC;oBACD,OAAO,IAAI,CAAC;gBAAA,CACZ,CAAC,CAAC;gBACH,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;oBAAE,SAAS;gBAC1C,MAAM,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,cAAc;iBACvB,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACrC,0BAA0B,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAwB,EAAE,CAAC;YAEvC,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBACjC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC3B,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;wBAAE,SAAS;oBAC7C,MAAM,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC;qBACpC,CAAC,CAAC;gBACJ,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBACtC,uEAAuE;oBACvE,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;wBACpB,MAAM,CAAC,IAAI,CAAC;4BACX,IAAI,EAAE,mBAAmB;4BACzB,IAAI,EAAE,KAAK,CAAC,iBAAkB;yBAC9B,CAAC,CAAC;wBACH,SAAS;oBACV,CAAC;oBACD,MAAM,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC;oBAClD,MAAM,oBAAoB,GAAG,CAAC,CAAC,iBAAiB,IAAI,iBAAiB,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;oBACxF,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,oBAAoB;wBAAE,SAAS;oBAC1E,sEAAsE;oBACtE,sEAAsE;oBACtE,wEAAwE;oBACxE,IAAI,CAAC,oBAAoB,EAAE,CAAC;wBAC3B,MAAM,CAAC,IAAI,CACV,mBAAmB;4BAClB,CAAC,CAAC;gCACA,IAAI,EAAE,UAAU;gCAChB,QAAQ,EAAE,kBAAkB,CAAC,KAAK,CAAC,QAAQ,CAAC;gCAC5C,SAAS,EAAE,EAAE;6BACb;4BACF,CAAC,CAAC;gCACA,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,kBAAkB,CAAC,KAAK,CAAC,QAAQ,CAAC;6BACxC,CACH,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACP,MAAM,CAAC,IAAI,CAAC;4BACX,IAAI,EAAE,UAAU;4BAChB,QAAQ,EAAE,kBAAkB,CAAC,KAAK,CAAC,QAAQ,CAAC;4BAC5C,SAAS,EAAE,iBAAiB;yBAC5B,CAAC,CAAC;oBACJ,CAAC;gBACF,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBACtC,MAAM,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,UAAU;wBAChB,EAAE,EAAE,KAAK,CAAC,EAAE;wBACZ,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;wBAC9D,KAAK,EAAE,KAAK,CAAC,SAAS,IAAI,EAAE;qBAC5B,CAAC,CAAC;gBACJ,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBACtC,gFAAgF;oBAChF,4EAA4E;oBAC5E,4EAA4E;oBAC5E,gFAAgF;oBAChF,4EAA4E;oBAC5E,gFAAgF;oBAChF,8EAA8E;oBAC9E,EAAE;oBACF,sEAAsE;oBACtE,MAAM,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,UAAU;wBAChB,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE;wBAChC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE;qBACI,CAAC,CAAC;gBACpC,CAAC;YACF,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAClC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,MAAM;aACf,CAAC,CAAC;YACH,IACC,eAAe,KAAK,SAAS;gBAC7B,GAAG,CAAC,GAAG,KAAK,oBAAoB;gBAChC,GAAG,CAAC,QAAQ,KAAK,eAAe;gBAChC,iBAAiB,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAC3C,CAAC;gBACF,eAAe,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,qBAAqB,CAAC,CAAC;YAC9D,CAAC;QACF,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACtC,mFAAmF;YACnF,MAAM,WAAW,GAAwB,EAAE,CAAC;YAC5C,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,OAAO,CAAC,GAAG,mBAAmB,CAAC,MAAM,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACvF,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC,CAAsB,CAAC,CAAC,CAAC;gBACjF,CAAC,EAAE,CAAC;YACL,CAAC;YAED,6CAA6C;YAC7C,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAEV,MAAM,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,WAAW;aACpB,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED,0BAA0B,EAAE,CAAC;IAE7B,qFAAqF;IACrF,IAAI,YAAY,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC9C,IAAI,WAAW,CAAC,IAAI,KAAK,MAAM,IAAI,WAAW,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAClE,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxC,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACtE,IACC,SAAS;oBACT,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM;wBACzB,SAAS,CAAC,IAAI,KAAK,OAAO;wBAC1B,SAAS,CAAC,IAAI,KAAK,aAAa;wBAChC,SAAS,CAAC,IAAI,KAAK,eAAe;wBAClC,SAAS,CAAC,IAAI,KAAK,cAAc,CAAC,EAClC,CAAC;oBACD,SAAiB,CAAC,aAAa,GAAG,YAAY,CAAC;gBACjD,CAAC;YACF,CAAC;iBAAM,IAAI,OAAO,WAAW,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACpD,WAAW,CAAC,OAAO,GAAG;oBACrB;wBACC,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,WAAW,CAAC,OAAO;wBACzB,aAAa,EAAE,YAAY;qBAC3B;iBACM,CAAC;YACV,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;AAAA,CAC7C;AAOD,SAAS,iBAAiB,CAAC,KAAyB,EAA4B;IAC/E,OAAO,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,KAAK,CAAC;AAAA,CACzG;AAQD,SAAS,2BAA2B,CACnC,SAAqC,EACrC,YAA6B,EACS;IACtC,MAAM,QAAQ,GAAwC,EAAE,CAAC;IACzD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAChE,MAAM,gBAAgB,GAAG,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC9D,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACpC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC;QAC7F,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1C,CAAC;IACD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;IACxF,OAAO,QAAQ,CAAC;AAAA,CAChB;AAED,SAAS,qCAAqC,CAC7C,KAAkC,EAClC,OAA0B,EAChB;IACV,OAAO,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,+BAA+B,CAAC;AAAA,CAClH;AASD,SAAS,8BAA8B,CACtC,MAAwB,EACkD;IAC1E,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACnH,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;IAC9B,IACC,CAAC,QAAQ,CAAC,KAAK,CACd,CAAC,MAAM,EAAE,EAAE,CACV,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS;QACzB,MAAM,CAAC,IAAI,KAAK,QAAQ;QACxB,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC;QAClD,MAAM,CAAC,UAAU,KAAK,SAAS,CAChC;QAED,OAAO,SAAS,CAAC;IAElB,MAAM,aAAa,GAAG,IAAI,GAAG,EAAqB,CAAC;IACnD,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC/B,KAAK,MAAM,CAAC,GAAG,EAAE,cAAc,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC;YAC7E,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC5B,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;gBACzC,SAAS;YACV,CAAC;YACD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;YAClD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,cAAc,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,UAAU,CAAC,EAAE,CAAC;gBACvG,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC/B,CAAC;QACF,CAAC;IACF,CAAC;IAED,MAAM,UAAU,GAA4B,MAAM,CAAC,WAAW,CAC7D,CAAC,GAAG,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1B,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IAAA,CAC/F,CAAC,CACF,CAAC;IAEF,OAAO;QACN,UAAU;QACV,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CACtD,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CACjE;KACD,CAAC;AAAA,CACF;AAED,SAAS,YAAY,CACpB,KAAa,EACb,YAAqB,EACrB,+BAAwC,EACxC,mBAA4B,EAC5B,YAAoC,EACvB;IACb,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IAEtB,qFAAqF;IACrF,2FAA2F;IAC3F,IAAI,YAAY;QAAE,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1G,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,+BAA+B,CAAC,IAAI,EAAE,mBAAmB,EAAE,oCAAoC,CAAC,CAAC;QAChH,MAAM,UAAU,GAAG,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,oCAAoC,CAAC,CAAC;QACnG,MAAM,MAAM,GAAG,UAA8B,CAAC;QAC9C,gGAAgG;QAChG,2FAA2F;QAC3F,MAAM,cAAc,GAAG,8BAA8B,CAAC,MAAM,CAAC,CAAC;QAC9D,MAAM,iBAAiB,GAAG;YACzB,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE,cAAc,EAAE,UAAU,IAAI,MAAM,CAAC,UAAU,IAAI,EAAE;YACjE,QAAQ,EAAE,cAAc,EAAE,QAAQ,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAE;SAC3D,CAAC;QACF,MAAM,WAAW,GAChB,MAAM,KAAK,IAAI,IAAI,cAAc,KAAK,SAAS;YAC9C,CAAC,CAAC;gBACA,GAAI,UAAsC;gBAC1C,GAAG,iBAAiB;aACpB;YACF,CAAC,CAAC,iBAAiB,CAAC;QAEtB,OAAO;YACN,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI;YAC5D,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,GAAG,CAAC,+BAA+B,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3E,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,YAAY,EAAE,WAAW;YACzB,GAAG,CAAC,YAAY,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtF,CAAC;IAAA,CACF,CAAC,CAAC;AAAA,CACH;AAED,SAAS,aAAa,CACrB,MAA8C,EAC9C,WAAuC,EACa;IACpD,QAAQ,MAAM,EAAE,CAAC;QAChB,KAAK,UAAU;YACd,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;QAC/B,KAAK,YAAY;YAChB,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;QACjC,KAAK,UAAU;YACd,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;QAClC,KAAK,SAAS;YACb,OAAO;gBACN,UAAU,EAAE,OAAO;gBACnB,YAAY,EAAE,WAAW,EAAE,WAAW,IAAI,2CAA2C;aACrF,CAAC;QACH,KAAK,YAAY,EAAE,kCAAkC;YACpD,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;QAC/B,KAAK,eAAe;YACnB,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,8DAA8D;QAC9F,KAAK,WAAW,EAAE,2DAA2D;YAC5E,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,kCAAkC,EAAE,CAAC;QAClF;YACC,kEAAkE;YAClE,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,EAAE,CAAC,CAAC;IACtD,CAAC;AAAA,CACD","sourcesContent":["import Anthropic from \"@anthropic-ai/sdk\";\nimport type {\n\tBetaTool,\n\tBetaCacheControlEphemeral as CacheControlEphemeral,\n\tBetaContentBlockParam as ContentBlockParam,\n\tMessageCreateParamsStreaming,\n\tBetaMessageParam as MessageParam,\n} from \"@anthropic-ai/sdk/resources/beta/messages/messages.js\";\nimport type { RawMessageStreamEvent, RefusalStopDetails } from \"@anthropic-ai/sdk/resources/messages.js\";\nimport { calculateCost } from \"../models.ts\";\nimport type {\n\tApi,\n\tAssistantMessage,\n\tCacheRetention,\n\tImageContent,\n\tMessage,\n\tModel,\n\tProviderEnv,\n\tProviderHeaders,\n\tSimpleStreamOptions,\n\tStopReason,\n\tStreamFunction,\n\tStreamOptions,\n\tTextContent,\n\tThinkingContent,\n\tTool,\n\tToolCall,\n\tToolResultMessage,\n\tUsage,\n} from \"../types.ts\";\nimport { appendAssistantMessageDiagnostic } from \"../utils/diagnostics.ts\";\nimport { assertSupportedDocumentMimeType } from \"../utils/document-input.ts\";\nimport { AssistantMessageEventStream } from \"../utils/event-stream.ts\";\nimport { headersToRecord } from \"../utils/headers.ts\";\nimport { parseJsonWithRepair, parseStreamingJson } from \"../utils/json-parse.ts\";\nimport { getPiUserAgent } from \"../utils/pi-user-agent.ts\";\nimport { getProviderEnvValue } from \"../utils/provider-env.ts\";\nimport { retryProviderRequest } from \"../utils/provider-retry.ts\";\nimport { sanitizeSurrogates } from \"../utils/sanitize-unicode.ts\";\nimport { createStreamDeadline, withStreamDeadline } from \"../utils/stream-deadline.ts\";\nimport { getSystemMessageText, renderSystemMessageUpdate } from \"../utils/text.ts\";\nimport {\n\tgetCurrentTools,\n\tgetDeclaredTools,\n\tgetInitialSystemMessage,\n\thasToolRedefinitions,\n\tresolveTranscript,\n\ttype TranscriptContext,\n} from \"../utils/transcript.ts\";\n\nimport {\n\tANTHROPIC_STRICT_JSON_SCHEMA_PROFILE,\n\tgetJsonSchemaToolParameters,\n\tresolveJsonSchemaStrictSampling,\n} from \"./constrained-sampling.ts\";\nimport {\n\tbuildCopilotDynamicHeaders,\n\thasCopilotVisionInput,\n\tpreserveCopilotIntegrationHeader,\n} from \"./github-copilot-headers.ts\";\nimport { adjustMaxTokensForThinking, buildBaseOptions, clampMaxTokensToContext } from \"./simple-options.ts\";\nimport { transformMessages } from \"./transform-messages.ts\";\n\n/**\n * Resolve cache retention preference.\n * Defaults to \"short\" and uses PI_CACHE_RETENTION for backward compatibility.\n */\nfunction resolveCacheRetention(cacheRetention?: CacheRetention, env?: ProviderEnv): CacheRetention {\n\tif (cacheRetention) {\n\t\treturn cacheRetention;\n\t}\n\tif (getProviderEnvValue(\"PI_CACHE_RETENTION\", env) === \"long\") {\n\t\treturn \"long\";\n\t}\n\treturn \"short\";\n}\n\nfunction getCacheControl(\n\tmodel: Model<\"anthropic-messages\">,\n\tcacheRetention?: CacheRetention,\n\tenv?: ProviderEnv,\n): { retention: CacheRetention; cacheControl?: CacheControlEphemeral } {\n\tconst retention = resolveCacheRetention(cacheRetention, env);\n\tif (retention === \"none\") {\n\t\treturn { retention };\n\t}\n\tconst ttl = retention === \"long\" && getAnthropicCompat(model).supportsLongCacheRetention ? \"1h\" : undefined;\n\treturn {\n\t\tretention,\n\t\tcacheControl: { type: \"ephemeral\", ...(ttl && { ttl }) },\n\t};\n}\n\n// Stealth mode: Mimic Claude Code's tool naming exactly\n//\n// Anthropic gates newer models on the `claude-cli/<version>` user agent alone and rejects an\n// older one with `claude_code_version_too_old`. `claude-fable-5-1` requires >= 2.1.251 (bisected\n// against the live API: 2.1.250 -> 400, 2.1.251 -> 200) and Claude Opus 5.5 requires >= 2.1.280,\n// the floor the API names in its rejection. This is pinned to the highest published minimum\n// among shipped models rather than the newest release; every model this provider ships answers\n// 200 at 2.1.280. Raise it only when a model rejects this value; a caller can override it for\n// one client through the `headers` option, whose lowercase `user-agent` key is merged last.\nconst claudeCodeVersion = \"2.1.280\";\n\n// Claude Code 2.x tool names (canonical casing)\n// Source: https://cchistory.mariozechner.at/data/prompts-2.1.11.md\n// To update: https://github.com/badlogic/cchistory\nconst claudeCodeTools = [\n\t\"Read\",\n\t\"Write\",\n\t\"Edit\",\n\t\"Bash\",\n\t\"Grep\",\n\t\"Glob\",\n\t\"AskUserQuestion\",\n\t\"EnterPlanMode\",\n\t\"ExitPlanMode\",\n\t\"KillShell\",\n\t\"NotebookEdit\",\n\t\"Skill\",\n\t\"Task\",\n\t\"TaskOutput\",\n\t\"TodoWrite\",\n\t\"WebFetch\",\n\t\"WebSearch\",\n];\n\nconst ccToolLookup = new Map(claudeCodeTools.map((t) => [t.toLowerCase(), t]));\n\n// Convert tool name to CC canonical casing if it matches (case-insensitive)\nconst toClaudeCodeName = (name: string) => ccToolLookup.get(name.toLowerCase()) ?? name;\nconst fromClaudeCodeName = (name: string, tools?: Tool[]) => {\n\tif (tools && tools.length > 0) {\n\t\tconst lowerName = name.toLowerCase();\n\t\tconst matchedTool = tools.find((tool) => tool.name.toLowerCase() === lowerName);\n\t\tif (matchedTool) return matchedTool.name;\n\t}\n\treturn name;\n};\n\n/**\n * Convert tool-result content blocks to Anthropic API format.\n *\n * Tool results carry text and images only. `DocumentContent` appears exclusively in user\n * messages, which `convertMessages` serializes on its own path.\n */\nfunction convertContentBlocks(content: (TextContent | ImageContent)[]):\n\t| string\n\t| Array<\n\t\t\t| { type: \"text\"; text: string }\n\t\t\t| {\n\t\t\t\t\ttype: \"image\";\n\t\t\t\t\tsource: {\n\t\t\t\t\t\ttype: \"base64\";\n\t\t\t\t\t\tmedia_type: \"image/jpeg\" | \"image/png\" | \"image/gif\" | \"image/webp\";\n\t\t\t\t\t\tdata: string;\n\t\t\t\t\t};\n\t\t\t }\n\t > {\n\t// If only text blocks, return as concatenated string for simplicity\n\tconst hasImages = content.some((c) => c.type === \"image\");\n\tif (!hasImages) {\n\t\treturn sanitizeSurrogates(content.map((c) => (c as TextContent).text).join(\"\\n\"));\n\t}\n\n\t// If we have images, convert to content block array\n\tconst blocks = content.map((block) => {\n\t\tif (block.type === \"text\") {\n\t\t\treturn {\n\t\t\t\ttype: \"text\" as const,\n\t\t\t\ttext: sanitizeSurrogates(block.text),\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\ttype: \"image\" as const,\n\t\t\tsource: {\n\t\t\t\ttype: \"base64\" as const,\n\t\t\t\tmedia_type: block.mimeType as \"image/jpeg\" | \"image/png\" | \"image/gif\" | \"image/webp\",\n\t\t\t\tdata: block.data,\n\t\t\t},\n\t\t};\n\t});\n\n\t// If only images (no text), add placeholder text block\n\tconst hasText = blocks.some((b) => b.type === \"text\");\n\tif (!hasText) {\n\t\tblocks.unshift({\n\t\t\ttype: \"text\" as const,\n\t\t\ttext: \"(see attached image)\",\n\t\t});\n\t}\n\n\treturn blocks;\n}\n\nexport type AnthropicEffort = \"low\" | \"medium\" | \"high\" | \"xhigh\" | \"max\";\n\nexport type AnthropicThinkingDisplay = \"summarized\" | \"omitted\";\n\nconst FINE_GRAINED_TOOL_STREAMING_BETA = \"fine-grained-tool-streaming-2025-05-14\";\nconst INTERLEAVED_THINKING_BETA = \"interleaved-thinking-2025-05-14\";\nconst SERVER_SIDE_FALLBACK_BETA = \"server-side-fallback-2026-07-01\";\nconst THINKING_BINDING_CONTROLS_BETA = \"thinking-binding-controls-2026-08-01\";\nconst MID_CONVERSATION_OUTPUT_CONFIG_BETA = \"mid-conversation-output-config-2026-07-01\";\nconst MID_CONVERSATION_TOOL_CHANGES_BETA = \"mid-conversation-tool-changes-2026-07-01\";\nconst FAST_MODE_BETA = \"fast-mode-2026-02-01\";\n\n/**\n * Fast mode bills every token category at twice the standard rate for each supported model, across\n * the full context window, and prompt-caching multipliers stack on top.\n * https://platform.claude.com/docs/en/build-with-claude/fast-mode#pricing\n */\nconst FAST_MODE_PRICE_MULTIPLIER = 2;\n\ntype AnthropicSpeed = \"standard\" | \"fast\";\n\nfunction requestedSpeed(model: Pick<Model<\"anthropic-messages\">, \"fastRoute\">): AnthropicSpeed | undefined {\n\treturn model.fastRoute?.speed;\n}\n\nfunction upstreamModelId(model: Pick<Model<\"anthropic-messages\">, \"fastRoute\" | \"id\">): string {\n\treturn model.fastRoute?.upstreamModelId ?? model.id;\n}\n\nfunction reportedSpeed(usage: unknown): AnthropicSpeed | undefined {\n\tconst speed = (usage as { speed?: unknown } | null | undefined)?.speed;\n\treturn speed === \"fast\" || speed === \"standard\" ? speed : undefined;\n}\n\nfunction applyFastModePricing(usage: Usage): void {\n\tusage.cost.input *= FAST_MODE_PRICE_MULTIPLIER;\n\tusage.cost.output *= FAST_MODE_PRICE_MULTIPLIER;\n\tusage.cost.cacheRead *= FAST_MODE_PRICE_MULTIPLIER;\n\tusage.cost.cacheWrite *= FAST_MODE_PRICE_MULTIPLIER;\n\tusage.cost.total = usage.cost.input + usage.cost.output + usage.cost.cacheRead + usage.cost.cacheWrite;\n}\n\n/**\n * Reject a payload hook that rewrote a field the model's fast route owns.\n *\n * A fast variant is recorded, persisted, and billed under its own `-fast` identity, so a hook that\n * changes the upstream model or drops `speed: \"fast\"` would send a different request under that\n * identity. Refusing loudly surfaces the misconfigured hook instead of silently restoring the route.\n */\nfunction assertPayloadPreservesFastRoute(model: Model<\"anthropic-messages\">, payload: unknown): void {\n\tconst fastRoute = model.fastRoute;\n\tif (fastRoute?.speed === undefined) return;\n\tconst remedy =\n\t\t`A fast model variant must send its route's upstream model and speed, because it is recorded, persisted, ` +\n\t\t`and billed under its own identity. Select the normal model \"${model.provider}/${fastRoute.baseModelId}\" ` +\n\t\t`if the request needs different routing`;\n\tif (typeof payload !== \"object\" || payload === null || Array.isArray(payload)) {\n\t\tthrow new Error(\n\t\t\t`A request hook changed payload for fast model \"${model.provider}/${model.id}\" to a value that cannot carry ` +\n\t\t\t\t`the route's upstream model and speed. ${remedy}, or return an object that preserves those fields.`,\n\t\t);\n\t}\n\tconst record = payload as Record<string, unknown>;\n\tconst conflicts: string[] = [];\n\tif (record.model !== fastRoute.upstreamModelId) {\n\t\tconflicts.push(`model (expected \"${fastRoute.upstreamModelId}\", got ${JSON.stringify(record.model)})`);\n\t}\n\tif (record.speed !== fastRoute.speed) {\n\t\tconflicts.push(`speed (expected ${JSON.stringify(fastRoute.speed)}, got ${JSON.stringify(record.speed)})`);\n\t}\n\tif (conflicts.length === 0) return;\n\tthrow new Error(\n\t\t`A request hook changed ${conflicts.join(\" and \")} for fast model \"${model.provider}/${model.id}\". ` +\n\t\t\t`${remedy}, or stop rewriting those fields.`,\n\t);\n}\n\n/**\n * Stable deferred tool declared whenever native tool changes are in use. Anthropic adds\n * hidden prompt scaffolding as soon as any tool has `defer_loading`; declaring this\n * placeholder from the first request keeps that scaffolding in the cached prefix, so the\n * first real late tool does not invalidate the cache (measured: full miss without it).\n * It is never activated and the model cannot see it.\n */\nconst DEFERRED_TOOL_PLACEHOLDER: BetaTool = {\n\tname: \"__pi_deferred_placeholder__\",\n\tdescription: \"Reserved placeholder. Never available. Never call this.\",\n\tinput_schema: { type: \"object\", properties: {}, required: [] },\n\tdefer_loading: true,\n};\n\nfunction shouldUseServerSideFallbackBeta(model: Model<\"anthropic-messages\">): boolean {\n\treturn (model.compat?.allowedFallbackModels?.length ?? 0) > 0;\n}\n\n/**\n * Claude Fable 5.1 binds each thinking block to the conversation prefix that produced it and,\n * for Anthropic accounts created on or after 2026-08-31, rejects a replay behind a changed\n * `system` prompt, `tools` array, or earlier message with a 400 `invalid_request_error`.\n * Atomic rebuilds those inputs between turns (dynamic system prompt, tool availability changes,\n * model switches), so it opts into `prefix_mismatch_behavior: \"drop_block\"`: the API discards\n * the affected thinking blocks and answers the turn instead of failing the session.\n *\n * This covers live prefix mismatches *between* compaction boundaries. It is not what handles\n * compaction itself: Atomic's client-side `preserve_recent` tail compaction serializes the\n * protected tail into a single boundary message, so no signed thinking block survives a\n * boundary to be replayed behind it. That is Anthropic's documented keep-tail remedy applied\n * structurally rather than a case `drop_block` has to catch.\n * https://platform.claude.com/docs/en/build-with-claude/preserved-thinking\n */\nfunction shouldUseThinkingBindingControlsBeta(model: Model<\"anthropic-messages\">): boolean {\n\treturn model.compat?.enforcesPreservedThinkingBinding === true;\n}\n\n/**\n * Per-turn effort and preserved-thinking binding are independent capabilities.\n * `supportsMidConvoEffort` adds provider effort markers and requires binding controls;\n * Atomic's older `enforcesPreservedThinkingBinding` remains the broader opt-in for\n * transports that need drop recovery without supporting effort-only system messages.\n */\nfunction supportsMidConvoEffort(model: Model<\"anthropic-messages\">): boolean {\n\treturn model.compat?.supportsMidConvoEffort === true;\n}\n\n/** One entry of the `input_transformations` array the block-binding controls beta adds. */\ninterface AnthropicInputTransformation {\n\ttype?: string;\n\tpath?: string;\n\treason?: string;\n}\n\nfunction getInputTransformations(message: unknown): AnthropicInputTransformation[] | undefined {\n\tconst transformations = (message as { input_transformations?: AnthropicInputTransformation[] })\n\t\t?.input_transformations;\n\treturn Array.isArray(transformations) ? transformations : undefined;\n}\n\n/** Record thinking blocks the API dropped from this request without exposing block contents. */\nfunction recordInputTransformations(output: AssistantMessage, transformations: AnthropicInputTransformation[]): void {\n\tif (transformations.length === 0) return;\n\tappendAssistantMessageDiagnostic(output, {\n\t\ttype: \"anthropic_input_transformations\",\n\t\ttimestamp: Date.now(),\n\t\tdetails: {\n\t\t\tdroppedBlockCount: transformations.length,\n\t\t\treasons: [...new Set(transformations.map((entry) => entry.reason).filter((r): r is string => !!r))],\n\t\t\tpaths: transformations.map((entry) => entry.path).filter((p): p is string => !!p),\n\t\t},\n\t});\n}\n\n/** One entry of the per-attempt `usage.iterations` array a server-side fallback response carries. */\ninterface AnthropicUsageIteration {\n\ttype?: string;\n\tmodel?: string;\n\tinput_tokens?: number;\n\toutput_tokens?: number;\n\tcache_read_input_tokens?: number;\n\t/** The aggregate cache-write count. `cache_creation` splits the same tokens by TTL. */\n\tcache_creation_input_tokens?: number;\n\t/** \"Breakdown of cached tokens by TTL\", per `BetaMessageIterationUsage`. */\n\tcache_creation?: { ephemeral_1h_input_tokens?: number; ephemeral_5m_input_tokens?: number } | null;\n}\n\n/**\n * Bill the attempts that ran *before* the one which produced the returned message.\n *\n * \"Every attempt that produced output, including one that declined partway through its response,\n * is billed separately at the rates of the model that ran it. The `usage.iterations` array is the\n * per-attempt record of what you're billed. The top-level `usage` counts describe only the attempt\n * that produced the returned message. Tokens from different models are never summed into one\n * field.\" https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback\n *\n * Two rules follow, and both matter for not double-counting:\n *\n * - Only `type: \"message\"` entries are added. The `fallback_message` entry *is* the serving\n * attempt, and its tokens are already in the top-level usage that `calculateCost` just priced.\n * - Only entries with output are added: \"An attempt that declined before producing any output is\n * not billed: its tokens are reported on its `usage.iterations` entry but not charged.\"\n *\n * Token counts are deliberately left alone — the docs forbid summing across models and `Usage` has\n * no per-attempt shape — so this contributes to `usage.cost` only.\n */\nfunction addEarlierAttemptCosts(\n\toutput: AssistantMessage,\n\tmodel: Model<\"anthropic-messages\">,\n\tservingModel: Model<\"anthropic-messages\">,\n\tevent: unknown,\n): void {\n\tconst iterations = (event as { usage?: { iterations?: AnthropicUsageIteration[] } })?.usage?.iterations;\n\tif (!Array.isArray(iterations) || iterations.length === 0) return;\n\n\tfor (const iteration of iterations) {\n\t\tif (iteration.type !== \"message\") continue;\n\t\tif (!iteration.output_tokens) continue;\n\n\t\t// Price at the rates of the model that ran the attempt, which is not the serving model.\n\t\tconst attemptCost =\n\t\t\titeration.model === upstreamModelId(model)\n\t\t\t\t? model.cost\n\t\t\t\t: iteration.model === servingModel.id\n\t\t\t\t\t? servingModel.cost\n\t\t\t\t\t: model.compat?.allowedFallbackModels?.find(\n\t\t\t\t\t\t\t(fallback) => fallback.provider === model.provider && fallback.model === iteration.model,\n\t\t\t\t\t\t)?.cost;\n\t\tif (!attemptCost) continue;\n\n\t\tconst attemptUsage: Usage = {\n\t\t\tinput: iteration.input_tokens ?? 0,\n\t\t\toutput: iteration.output_tokens,\n\t\t\tcacheRead: iteration.cache_read_input_tokens ?? 0,\n\t\t\t// `cacheWrite` stays the aggregate: `calculateCost` derives the 5-minute share by\n\t\t\t// subtracting `cacheWrite1h` from it, so setting this to the 5-minute count instead\n\t\t\t// would under-charge and adding the two together would double-charge. Without the 1h\n\t\t\t// split, an hour-long write bills at the 5-minute rate rather than 2x base input.\n\t\t\tcacheWrite: iteration.cache_creation_input_tokens ?? 0,\n\t\t\tcacheWrite1h: iteration.cache_creation?.ephemeral_1h_input_tokens ?? 0,\n\t\t\ttotalTokens: 0,\n\t\t\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n\t\t};\n\t\tcalculateCost({ ...model, id: iteration.model ?? model.id, cost: attemptCost }, attemptUsage);\n\n\t\toutput.usage.cost.input += attemptUsage.cost.input;\n\t\toutput.usage.cost.output += attemptUsage.cost.output;\n\t\toutput.usage.cost.cacheRead += attemptUsage.cost.cacheRead;\n\t\toutput.usage.cost.cacheWrite += attemptUsage.cost.cacheWrite;\n\t\toutput.usage.cost.total += attemptUsage.cost.total;\n\t}\n}\n\nfunction getAnthropicCompat(model: Model<\"anthropic-messages\">) {\n\tconst isOpenRouter = model.provider === \"openrouter\" || model.baseUrl.includes(\"openrouter.ai\");\n\treturn {\n\t\tsupportsEagerToolInputStreaming: model.compat?.supportsEagerToolInputStreaming ?? true,\n\t\tsupportsLongCacheRetention: model.compat?.supportsLongCacheRetention ?? true,\n\t\tsendSessionAffinityHeaders: model.compat?.sendSessionAffinityHeaders ?? isOpenRouter,\n\t\tsessionAffinityFormat: model.compat?.sessionAffinityFormat ?? (isOpenRouter ? \"openrouter\" : undefined),\n\t\tsupportsCacheControlOnTools: model.compat?.supportsCacheControlOnTools ?? true,\n\t\tsupportsTemperature: model.compat?.supportsTemperature ?? true,\n\t\tallowEmptySignature: model.compat?.allowEmptySignature ?? false,\n\t\tsupportsStrictTools: model.compat?.supportsStrictTools ?? false,\n\t\tsupportsMidConvoSystemMessages: model.compat?.supportsMidConvoSystemMessages ?? false,\n\t\tsupportsMidConvoToolChanges: model.compat?.supportsMidConvoToolChanges ?? false,\n\t};\n}\n\nexport interface AnthropicOptions extends StreamOptions {\n\t/**\n\t * Enable extended thinking.\n\t * For adaptive thinking models: the model decides when/how much to think.\n\t * For older models: uses budget-based thinking with thinkingBudgetTokens.\n\t * Default: undefined (thinking is omitted unless `streamSimple()` maps\n\t * a simple reasoning level to this option, or callers set it explicitly).\n\t */\n\tthinkingEnabled?: boolean;\n\t/**\n\t * Token budget for extended thinking (older models only).\n\t * Ignored for adaptive thinking models.\n\t * Default: 1024 when `thinkingEnabled` is true and no budget is provided.\n\t */\n\tthinkingBudgetTokens?: number;\n\t/**\n\t * Effort level for adaptive thinking models.\n\t * Controls how much thinking Claude allocates:\n\t * - \"max\": Always thinks with no constraints (Opus 4.6 only)\n\t * - \"xhigh\": Highest reasoning level (Opus 4.7+, Fable 5)\n\t * - \"high\": Always thinks, deep reasoning\n\t * - \"medium\": Moderate thinking, may skip for simple queries\n\t * - \"low\": Minimal thinking, skips for simple tasks\n\t * Ignored for older models.\n\t * Default: omitted unless `streamSimple()` maps a simple reasoning\n\t * level to this option.\n\t */\n\teffort?: AnthropicEffort;\n\t/**\n\t * Controls how thinking content is returned in API responses.\n\t * - \"summarized\": Thinking blocks contain summarized thinking text.\n\t * - \"omitted\": Thinking blocks return an empty thinking field; the encrypted\n\t * signature still travels back for multi-turn continuity. Use for faster\n\t * time-to-first-text-token when your UI does not surface thinking.\n\t *\n\t * Note: Anthropic's API default for Claude Opus 4.7 and Claude Mythos Preview\n\t * is \"omitted\". We default to \"summarized\" here to keep behavior consistent\n\t * with older Claude 4 models. Set this explicitly to \"omitted\" to opt in.\n\t * Default: \"summarized\" when thinking is enabled.\n\t */\n\tthinkingDisplay?: AnthropicThinkingDisplay;\n\t/**\n\t * Whether to request the interleaved thinking beta header for non-adaptive\n\t * thinking models. Adaptive thinking models have interleaved thinking built in,\n\t * so the header is skipped for them regardless of this setting.\n\t * Default: true.\n\t */\n\tinterleavedThinking?: boolean;\n\t/**\n\t * Anthropic tool choice behavior. String values map to Anthropic's built-in\n\t * choices; `{ type: \"tool\", name }` forces a specific tool.\n\t * Default: omitted (Anthropic default behavior, currently equivalent to auto).\n\t */\n\ttoolChoice?: \"auto\" | \"any\" | \"none\" | { type: \"tool\"; name: string };\n\t/**\n\t * Pre-built Anthropic client instance. When provided, skips internal client\n\t * construction entirely. Use this to inject alternative SDK clients such as\n\t * `AnthropicVertex` that shares the same messaging API.\n\t */\n\tclient?: Anthropic;\n}\n\nfunction mergeHeaders(...headerSources: (ProviderHeaders | undefined)[]): ProviderHeaders {\n\tconst merged: ProviderHeaders = {};\n\tfor (const headers of headerSources) {\n\t\tif (headers) {\n\t\t\tObject.assign(merged, headers);\n\t\t}\n\t}\n\treturn merged;\n}\n\nfunction mergeClientHeaders(...headerSources: (ProviderHeaders | undefined)[]): ProviderHeaders {\n\treturn mergeHeaders({ \"User-Agent\": getPiUserAgent() }, ...headerSources);\n}\n\nfunction hasHeader(headers: ProviderHeaders | undefined, name: string): boolean {\n\tif (!headers) return false;\n\tconst expected = name.toLowerCase();\n\tfor (const [key, value] of Object.entries(headers)) {\n\t\tif (key.toLowerCase() === expected && value !== null && value.trim().length > 0) return true;\n\t}\n\treturn false;\n}\n\nfunction assertRequestAuth(provider: string, apiKey: string | undefined, headers: ProviderHeaders | undefined): void {\n\tif (apiKey) return;\n\tif (\n\t\thasHeader(headers, \"authorization\") ||\n\t\thasHeader(headers, \"x-api-key\") ||\n\t\thasHeader(headers, \"cf-aig-authorization\")\n\t) {\n\t\treturn;\n\t}\n\tthrow new Error(`No API key for provider: ${provider}`);\n}\n\ninterface ServerSentEvent {\n\tevent: string | null;\n\tdata: string;\n\traw: string[];\n}\n\ninterface SseDecoderState {\n\tevent: string | null;\n\tdata: string[];\n\traw: string[];\n}\n\nconst ANTHROPIC_MESSAGE_EVENTS: ReadonlySet<string> = new Set([\n\t\"message_start\",\n\t\"message_delta\",\n\t\"message_stop\",\n\t\"content_block_start\",\n\t\"content_block_delta\",\n\t\"content_block_stop\",\n]);\n\nfunction flushSseEvent(state: SseDecoderState): ServerSentEvent | null {\n\tif (!state.event && state.data.length === 0) {\n\t\treturn null;\n\t}\n\n\tconst event: ServerSentEvent = {\n\t\tevent: state.event,\n\t\tdata: state.data.join(\"\\n\"),\n\t\traw: [...state.raw],\n\t};\n\tstate.event = null;\n\tstate.data = [];\n\tstate.raw = [];\n\treturn event;\n}\n\nfunction decodeSseLine(line: string, state: SseDecoderState): ServerSentEvent | null {\n\tif (line === \"\") {\n\t\treturn flushSseEvent(state);\n\t}\n\n\tstate.raw.push(line);\n\tif (line.startsWith(\":\")) {\n\t\treturn null;\n\t}\n\n\tconst delimiterIndex = line.indexOf(\":\");\n\tconst fieldName = delimiterIndex === -1 ? line : line.slice(0, delimiterIndex);\n\tlet value = delimiterIndex === -1 ? \"\" : line.slice(delimiterIndex + 1);\n\tif (value.startsWith(\" \")) {\n\t\tvalue = value.slice(1);\n\t}\n\n\tif (fieldName === \"event\") {\n\t\tstate.event = value;\n\t} else if (fieldName === \"data\") {\n\t\tstate.data.push(value);\n\t}\n\n\treturn null;\n}\n\nfunction nextLineBreakIndex(text: string): number {\n\tconst carriageReturnIndex = text.indexOf(\"\\r\");\n\tconst newlineIndex = text.indexOf(\"\\n\");\n\tif (carriageReturnIndex === -1) {\n\t\treturn newlineIndex;\n\t}\n\tif (newlineIndex === -1) {\n\t\treturn carriageReturnIndex;\n\t}\n\treturn Math.min(carriageReturnIndex, newlineIndex);\n}\n\nfunction consumeLine(text: string): { line: string; rest: string } | null {\n\tconst lineBreakIndex = nextLineBreakIndex(text);\n\tif (lineBreakIndex === -1) {\n\t\treturn null;\n\t}\n\n\tlet nextIndex = lineBreakIndex + 1;\n\tif (text[lineBreakIndex] === \"\\r\" && text[nextIndex] === \"\\n\") {\n\t\tnextIndex += 1;\n\t}\n\n\treturn {\n\t\tline: text.slice(0, lineBreakIndex),\n\t\trest: text.slice(nextIndex),\n\t};\n}\n\nasync function* iterateSseMessages(\n\tbody: ReadableStream<Uint8Array>,\n\tsignal?: AbortSignal,\n): AsyncGenerator<ServerSentEvent> {\n\tconst reader = body.getReader();\n\tconst decoder = new TextDecoder();\n\tconst state: SseDecoderState = { event: null, data: [], raw: [] };\n\tlet buffer = \"\";\n\tconst onAbort = () => {\n\t\tvoid reader.cancel().catch(() => {});\n\t};\n\tsignal?.addEventListener(\"abort\", onAbort, { once: true });\n\n\ttry {\n\t\twhile (true) {\n\t\t\tif (signal?.aborted) {\n\t\t\t\tthrow new Error(\"Request was aborted\");\n\t\t\t}\n\n\t\t\tconst { value, done } = await reader.read();\n\t\t\tif (done) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tbuffer += decoder.decode(value, { stream: true });\n\t\t\tlet consumed = consumeLine(buffer);\n\t\t\twhile (consumed) {\n\t\t\t\tbuffer = consumed.rest;\n\t\t\t\tconst event = decodeSseLine(consumed.line, state);\n\t\t\t\tif (event) {\n\t\t\t\t\tyield event;\n\t\t\t\t}\n\t\t\t\tconsumed = consumeLine(buffer);\n\t\t\t}\n\t\t}\n\n\t\tbuffer += decoder.decode();\n\t\tlet consumed = consumeLine(buffer);\n\t\twhile (consumed) {\n\t\t\tbuffer = consumed.rest;\n\t\t\tconst event = decodeSseLine(consumed.line, state);\n\t\t\tif (event) {\n\t\t\t\tyield event;\n\t\t\t}\n\t\t\tconsumed = consumeLine(buffer);\n\t\t}\n\n\t\tif (buffer.length > 0) {\n\t\t\tconst event = decodeSseLine(buffer, state);\n\t\t\tif (event) {\n\t\t\t\tyield event;\n\t\t\t}\n\t\t}\n\n\t\tconst trailingEvent = flushSseEvent(state);\n\t\tif (trailingEvent) {\n\t\t\tyield trailingEvent;\n\t\t}\n\t} finally {\n\t\tsignal?.removeEventListener(\"abort\", onAbort);\n\t\ttry {\n\t\t\tawait reader.cancel();\n\t\t} catch {}\n\t\treader.releaseLock();\n\t}\n}\n\nasync function* iterateAnthropicEvents(\n\tresponse: Response,\n\tsignal?: AbortSignal,\n): AsyncGenerator<RawMessageStreamEvent> {\n\tif (!response.body) {\n\t\tthrow new Error(\"Attempted to iterate over an Anthropic response with no body\");\n\t}\n\n\tlet sawMessageStart = false;\n\tlet sawMessageEnd = false;\n\n\tfor await (const sse of iterateSseMessages(response.body, signal)) {\n\t\tif (sse.event === \"error\") {\n\t\t\tthrow new Error(sse.data);\n\t\t}\n\n\t\tif (!ANTHROPIC_MESSAGE_EVENTS.has(sse.event ?? \"\")) {\n\t\t\tcontinue;\n\t\t}\n\n\t\ttry {\n\t\t\tconst event = parseJsonWithRepair<RawMessageStreamEvent>(sse.data);\n\t\t\tif (event.type === \"message_start\") {\n\t\t\t\tsawMessageStart = true;\n\t\t\t} else if (event.type === \"message_stop\") {\n\t\t\t\tsawMessageEnd = true;\n\t\t\t}\n\t\t\tyield event;\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tthrow new Error(\n\t\t\t\t`Could not parse Anthropic SSE event ${sse.event}: ${message}; data=${sse.data}; raw=${sse.raw.join(\"\\\\n\")}`,\n\t\t\t);\n\t\t}\n\t}\n\n\tif (sawMessageStart && !sawMessageEnd) {\n\t\tthrow new Error(\"Anthropic stream ended before message_stop\");\n\t}\n}\n\nexport const stream: StreamFunction<\"anthropic-messages\", AnthropicOptions> = (\n\tmodel: Model<\"anthropic-messages\">,\n\tcontext: TranscriptContext,\n\toptions?: AnthropicOptions,\n): AssistantMessageEventStream => {\n\tconst stream = new AssistantMessageEventStream();\n\tconst normalizedContext = resolveTranscript(context, getAnthropicCompat(model).supportsMidConvoSystemMessages);\n\tconst currentTools = getCurrentTools(normalizedContext.messages);\n\n\t(async () => {\n\t\tconst providerThinkingLevel = supportsMidConvoEffort(model) ? (options?.effort ?? \"high\") : undefined;\n\t\tconst output: AssistantMessage = {\n\t\t\trole: \"assistant\",\n\t\t\tcontent: [],\n\t\t\tapi: model.api as Api,\n\t\t\tprovider: model.provider,\n\t\t\tmodel: model.id,\n\t\t\t...(providerThinkingLevel === undefined ? {} : { providerThinkingLevel }),\n\t\t\tusage: {\n\t\t\t\tinput: 0,\n\t\t\t\toutput: 0,\n\t\t\t\tcacheRead: 0,\n\t\t\t\tcacheWrite: 0,\n\t\t\t\ttotalTokens: 0,\n\t\t\t\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n\t\t\t},\n\t\t\tstopReason: \"pending\",\n\t\t\ttimestamp: Date.now(),\n\t\t};\n\n\t\tconst streamDeadline = createStreamDeadline(options?.streamDeadlineMs, options?.signal);\n\n\t\tlet inputTransformations: AnthropicInputTransformation[] | undefined;\n\n\t\ttry {\n\t\t\tlet client: Anthropic;\n\t\t\tlet isOAuth: boolean;\n\t\t\tlet usageModel = model;\n\t\t\tlet servedSpeed = requestedSpeed(model);\n\n\t\t\tif (options?.client) {\n\t\t\t\tclient = options.client;\n\t\t\t\tisOAuth = false;\n\t\t\t} else {\n\t\t\t\tconst apiKey = options?.apiKey;\n\t\t\t\tassertRequestAuth(model.provider, apiKey, options?.headers);\n\n\t\t\t\tlet copilotDynamicHeaders: Record<string, string> | undefined;\n\t\t\t\tif (model.provider === \"github-copilot\") {\n\t\t\t\t\tconst hasImages = hasCopilotVisionInput(normalizedContext.messages);\n\t\t\t\t\tcopilotDynamicHeaders = preserveCopilotIntegrationHeader(\n\t\t\t\t\t\tmodel.headers,\n\t\t\t\t\t\tbuildCopilotDynamicHeaders({\n\t\t\t\t\t\t\tmessages: normalizedContext.messages,\n\t\t\t\t\t\t\thasImages,\n\t\t\t\t\t\t\tapiKey,\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst cacheRetention = resolveCacheRetention(options?.cacheRetention, options?.env);\n\t\t\t\tconst cacheSessionId = cacheRetention === \"none\" ? undefined : options?.sessionId;\n\n\t\t\t\tconst created = createClient(\n\t\t\t\t\tmodel,\n\t\t\t\t\tapiKey,\n\t\t\t\t\tmodel.reasoning && options?.thinkingEnabled === true && (options.interleavedThinking ?? true),\n\t\t\t\t\tshouldUseFineGrainedToolStreamingBeta(model, context),\n\t\t\t\t\tshouldUseServerSideFallbackBeta(model),\n\t\t\t\t\toptions?.headers,\n\t\t\t\t\toptions?.fetch,\n\t\t\t\t\tcopilotDynamicHeaders,\n\t\t\t\t\tcacheSessionId,\n\t\t\t\t\tgetAnthropicCompat(model).supportsMidConvoToolChanges &&\n\t\t\t\t\t\tgetAnthropicCompat(model).supportsMidConvoSystemMessages &&\n\t\t\t\t\t\t(getInitialSystemMessage(normalizedContext.messages)?.toolsAdded?.length ?? 0) > 0 &&\n\t\t\t\t\t\t!hasToolRedefinitions(normalizedContext.messages),\n\t\t\t\t);\n\t\t\t\tclient = created.client;\n\t\t\t\tisOAuth = created.isOAuthToken;\n\t\t\t}\n\t\t\tlet params = buildParams(model, normalizedContext, isOAuth, options);\n\t\t\tconst nextParams = await options?.onPayload?.(params, model);\n\t\t\tif (nextParams !== undefined) {\n\t\t\t\tparams = nextParams as MessageCreateParamsStreaming;\n\t\t\t}\n\t\t\tassertPayloadPreservesFastRoute(model, params);\n\t\t\tconst requestOptions = {\n\t\t\t\t...(streamDeadline.signal ? { signal: streamDeadline.signal } : {}),\n\t\t\t\t...(options?.timeoutMs !== undefined ? { timeout: options.timeoutMs } : {}),\n\t\t\t\tmaxRetries: 0,\n\t\t\t};\n\t\t\tconst response = await retryProviderRequest(\n\t\t\t\t() => client.beta.messages.create({ ...params, stream: true }, requestOptions).asResponse(),\n\t\t\t\t{\n\t\t\t\t\tmaxRetries: options?.maxRetries,\n\t\t\t\t\tmaxRetryDelayMs: options?.maxRetryDelayMs,\n\t\t\t\t\tsignal: streamDeadline.signal,\n\t\t\t\t},\n\t\t\t);\n\t\t\tawait options?.onResponse?.({ status: response.status, headers: headersToRecord(response.headers) }, model);\n\t\t\tstream.push({ type: \"start\", partial: output });\n\n\t\t\ttype Block = (ThinkingContent | TextContent | (ToolCall & { partialJson: string })) & { index: number };\n\t\t\tconst blocks = output.content as Block[];\n\n\t\t\tfor await (const event of withStreamDeadline(\n\t\t\t\titerateAnthropicEvents(response, streamDeadline.signal),\n\t\t\t\tstreamDeadline.deadlineMs,\n\t\t\t\tstreamDeadline.abort,\n\t\t\t)) {\n\t\t\t\tawait options?.onProviderStreamEvent?.(event, model);\n\t\t\t\tif (event.type === \"message_start\") {\n\t\t\t\t\toutput.responseId = event.message.id;\n\t\t\t\t\tconst responseModel = event.message.model;\n\t\t\t\t\tif (responseModel !== upstreamModelId(model)) output.responseModel = responseModel;\n\t\t\t\t\tconst fallbackCost =\n\t\t\t\t\t\tresponseModel === upstreamModelId(model)\n\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t: model.compat?.allowedFallbackModels?.find(\n\t\t\t\t\t\t\t\t\t(fallback) => fallback.provider === model.provider && fallback.model === responseModel,\n\t\t\t\t\t\t\t\t)?.cost;\n\t\t\t\t\tusageModel = fallbackCost ? { ...model, id: responseModel, cost: fallbackCost } : model;\n\t\t\t\t\t// Capture initial token usage from message_start event\n\t\t\t\t\t// This ensures we have input token counts even if the stream is aborted early\n\t\t\t\t\toutput.usage.input = event.message.usage.input_tokens || 0;\n\t\t\t\t\toutput.usage.output = event.message.usage.output_tokens || 0;\n\t\t\t\t\toutput.usage.cacheRead = event.message.usage.cache_read_input_tokens || 0;\n\t\t\t\t\toutput.usage.cacheWrite = event.message.usage.cache_creation_input_tokens || 0;\n\t\t\t\t\toutput.usage.cacheWrite1h = event.message.usage.cache_creation?.ephemeral_1h_input_tokens || 0;\n\t\t\t\t\t// Anthropic doesn't provide total_tokens, compute from components\n\t\t\t\t\toutput.usage.totalTokens =\n\t\t\t\t\t\toutput.usage.input + output.usage.output + output.usage.cacheRead + output.usage.cacheWrite;\n\t\t\t\t\tcalculateCost(usageModel, output.usage);\n\t\t\t\t\tservedSpeed = reportedSpeed(event.message.usage) ?? servedSpeed;\n\t\t\t\t\tif (servedSpeed === \"fast\") applyFastModePricing(output.usage);\n\t\t\t\t\tinputTransformations = getInputTransformations(event.message) ?? inputTransformations;\n\t\t\t\t} else if (event.type === \"content_block_start\") {\n\t\t\t\t\tif (event.content_block.type === \"text\") {\n\t\t\t\t\t\tconst block: Block = {\n\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\ttext: event.content_block.text ?? \"\",\n\t\t\t\t\t\t\tindex: event.index,\n\t\t\t\t\t\t};\n\t\t\t\t\t\toutput.content.push(block);\n\t\t\t\t\t\tstream.push({ type: \"text_start\", contentIndex: output.content.length - 1, partial: output });\n\t\t\t\t\t} else if (event.content_block.type === \"thinking\") {\n\t\t\t\t\t\tconst block: Block = {\n\t\t\t\t\t\t\ttype: \"thinking\",\n\t\t\t\t\t\t\tthinking: event.content_block.thinking ?? \"\",\n\t\t\t\t\t\t\tthinkingSignature: event.content_block.signature ?? \"\",\n\t\t\t\t\t\t\tindex: event.index,\n\t\t\t\t\t\t};\n\t\t\t\t\t\toutput.content.push(block);\n\t\t\t\t\t\tstream.push({ type: \"thinking_start\", contentIndex: output.content.length - 1, partial: output });\n\t\t\t\t\t} else if (event.content_block.type === \"redacted_thinking\") {\n\t\t\t\t\t\tconst block: Block = {\n\t\t\t\t\t\t\ttype: \"thinking\",\n\t\t\t\t\t\t\tthinking: \"[Reasoning redacted]\",\n\t\t\t\t\t\t\tthinkingSignature: event.content_block.data,\n\t\t\t\t\t\t\tredacted: true,\n\t\t\t\t\t\t\tindex: event.index,\n\t\t\t\t\t\t};\n\t\t\t\t\t\toutput.content.push(block);\n\t\t\t\t\t\tstream.push({ type: \"thinking_start\", contentIndex: output.content.length - 1, partial: output });\n\t\t\t\t\t} else if (event.content_block.type === \"tool_use\") {\n\t\t\t\t\t\tconst block: Block = {\n\t\t\t\t\t\t\ttype: \"toolCall\",\n\t\t\t\t\t\t\tid: event.content_block.id,\n\t\t\t\t\t\t\tname: isOAuth\n\t\t\t\t\t\t\t\t? fromClaudeCodeName(event.content_block.name, currentTools)\n\t\t\t\t\t\t\t\t: event.content_block.name,\n\t\t\t\t\t\t\targuments: (event.content_block.input as Record<string, any>) ?? {},\n\t\t\t\t\t\t\tpartialJson: \"\",\n\t\t\t\t\t\t\tindex: event.index,\n\t\t\t\t\t\t};\n\t\t\t\t\t\toutput.content.push(block);\n\t\t\t\t\t\tstream.push({ type: \"toolcall_start\", contentIndex: output.content.length - 1, partial: output });\n\t\t\t\t\t} else if ((event.content_block as { type?: string }).type === \"fallback\") {\n\t\t\t\t\t\t// Server-side fallback boundary: \"the `fallback` block (an ordinary\n\t\t\t\t\t\t// `content_block_start` and `content_block_stop` pair with no deltas) marks the\n\t\t\t\t\t\t// boundary\", and clients must \"Keep it exactly where it appeared. The API uses\n\t\t\t\t\t\t// its position to validate the thinking blocks around it\".\n\t\t\t\t\t\t// https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback\n\t\t\t\t\t\t//\n\t\t\t\t\t\t// The SDK types lag this block, so read it through a narrow cast.\n\t\t\t\t\t\tconst fallbackBlock = event.content_block as unknown as {\n\t\t\t\t\t\t\tfrom?: { model?: string };\n\t\t\t\t\t\t\tto?: { model?: string };\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst toModel = fallbackBlock.to?.model;\n\t\t\t\t\t\toutput.content.push({\n\t\t\t\t\t\t\ttype: \"fallback\",\n\t\t\t\t\t\t\tfromModel: fallbackBlock.from?.model ?? output.model,\n\t\t\t\t\t\t\ttoModel: toModel ?? output.model,\n\t\t\t\t\t\t});\n\t\t\t\t\t\t// `message_start` named the requested model, so on a mid-output fallback the\n\t\t\t\t\t\t// serving model is only knowable here. Re-derive pricing the same way the\n\t\t\t\t\t\t// `message_start` branch does, so the returned message is costed at the rates\n\t\t\t\t\t\t// of the model that actually produced it.\n\t\t\t\t\t\tif (toModel && toModel !== output.model) {\n\t\t\t\t\t\t\toutput.model = toModel;\n\t\t\t\t\t\t\tconst fallbackCost = model.compat?.allowedFallbackModels?.find(\n\t\t\t\t\t\t\t\t(fallback) => fallback.provider === model.provider && fallback.model === toModel,\n\t\t\t\t\t\t\t)?.cost;\n\t\t\t\t\t\t\tusageModel = fallbackCost ? { ...model, id: toModel, cost: fallbackCost } : model;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (event.type === \"content_block_delta\") {\n\t\t\t\t\tif (event.delta.type === \"text_delta\") {\n\t\t\t\t\t\tconst index = blocks.findIndex((b) => b.index === event.index);\n\t\t\t\t\t\tconst block = blocks[index];\n\t\t\t\t\t\tif (block && block.type === \"text\") {\n\t\t\t\t\t\t\tblock.text += event.delta.text;\n\t\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\t\ttype: \"text_delta\",\n\t\t\t\t\t\t\t\tcontentIndex: index,\n\t\t\t\t\t\t\t\tdelta: event.delta.text,\n\t\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (event.delta.type === \"thinking_delta\") {\n\t\t\t\t\t\tconst index = blocks.findIndex((b) => b.index === event.index);\n\t\t\t\t\t\tconst block = blocks[index];\n\t\t\t\t\t\tif (block && block.type === \"thinking\") {\n\t\t\t\t\t\t\tblock.thinking += event.delta.thinking;\n\t\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\t\ttype: \"thinking_delta\",\n\t\t\t\t\t\t\t\tcontentIndex: index,\n\t\t\t\t\t\t\t\tdelta: event.delta.thinking,\n\t\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (event.delta.type === \"input_json_delta\") {\n\t\t\t\t\t\tconst index = blocks.findIndex((b) => b.index === event.index);\n\t\t\t\t\t\tconst block = blocks[index];\n\t\t\t\t\t\tif (block && block.type === \"toolCall\") {\n\t\t\t\t\t\t\tblock.partialJson += event.delta.partial_json;\n\t\t\t\t\t\t\tblock.arguments = parseStreamingJson(block.partialJson);\n\t\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\t\ttype: \"toolcall_delta\",\n\t\t\t\t\t\t\t\tcontentIndex: index,\n\t\t\t\t\t\t\t\tdelta: event.delta.partial_json,\n\t\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (event.delta.type === \"signature_delta\") {\n\t\t\t\t\t\tconst index = blocks.findIndex((b) => b.index === event.index);\n\t\t\t\t\t\tconst block = blocks[index];\n\t\t\t\t\t\tif (block && block.type === \"thinking\") {\n\t\t\t\t\t\t\tblock.thinkingSignature = block.thinkingSignature || \"\";\n\t\t\t\t\t\t\tblock.thinkingSignature += event.delta.signature;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (event.type === \"content_block_stop\") {\n\t\t\t\t\tconst index = blocks.findIndex((b) => b.index === event.index);\n\t\t\t\t\tconst block = blocks[index];\n\t\t\t\t\tif (block) {\n\t\t\t\t\t\tdelete (block as any).index;\n\t\t\t\t\t\tif (block.type === \"text\") {\n\t\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\t\ttype: \"text_end\",\n\t\t\t\t\t\t\t\tcontentIndex: index,\n\t\t\t\t\t\t\t\tcontent: block.text,\n\t\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else if (block.type === \"thinking\") {\n\t\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\t\ttype: \"thinking_end\",\n\t\t\t\t\t\t\t\tcontentIndex: index,\n\t\t\t\t\t\t\t\tcontent: block.thinking,\n\t\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else if (block.type === \"toolCall\") {\n\t\t\t\t\t\t\tblock.arguments = parseStreamingJson(block.partialJson);\n\t\t\t\t\t\t\t// Finalize in-place and strip the scratch buffer so replay only\n\t\t\t\t\t\t\t// carries parsed arguments.\n\t\t\t\t\t\t\tdelete (block as { partialJson?: string }).partialJson;\n\t\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\t\ttype: \"toolcall_end\",\n\t\t\t\t\t\t\t\tcontentIndex: index,\n\t\t\t\t\t\t\t\ttoolCall: block,\n\t\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (event.type === \"message_delta\") {\n\t\t\t\t\tif (event.delta.stop_reason) {\n\t\t\t\t\t\toutput.rawStopReason = event.delta.stop_reason;\n\t\t\t\t\t\tconst stopReasonResult = mapStopReason(event.delta.stop_reason, event.delta.stop_details);\n\t\t\t\t\t\toutput.stopReason = stopReasonResult.stopReason;\n\t\t\t\t\t\tif (stopReasonResult.errorMessage) {\n\t\t\t\t\t\t\toutput.errorMessage = stopReasonResult.errorMessage;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// Only update usage fields if present (not null).\n\t\t\t\t\t// Preserves input_tokens from message_start when proxies omit it in message_delta.\n\t\t\t\t\tif (event.usage) {\n\t\t\t\t\t\tif (event.usage.input_tokens != null) {\n\t\t\t\t\t\t\toutput.usage.input = event.usage.input_tokens;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (event.usage.output_tokens != null) {\n\t\t\t\t\t\t\toutput.usage.output = event.usage.output_tokens;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (event.usage.cache_read_input_tokens != null) {\n\t\t\t\t\t\t\toutput.usage.cacheRead = event.usage.cache_read_input_tokens;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (event.usage.cache_creation_input_tokens != null) {\n\t\t\t\t\t\t\toutput.usage.cacheWrite = event.usage.cache_creation_input_tokens;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Anthropic reports reasoning tokens in `output_tokens_details.thinking_tokens` on the\n\t\t\t\t\t\t// final message_delta usage (a subset of output_tokens). SDK 0.91.1 omits the field from\n\t\t\t\t\t\t// its Usage type, so read it through a narrow cast. Verified against the live API.\n\t\t\t\t\t\tconst thinkingTokens = (event.usage as { output_tokens_details?: { thinking_tokens?: number } })\n\t\t\t\t\t\t\t.output_tokens_details?.thinking_tokens;\n\t\t\t\t\t\t// Vercel AI Gateway includes the TTL breakdown in deltas, though the SDK only types it on message_start.\n\t\t\t\t\t\tconst cacheCreation = (\n\t\t\t\t\t\t\tevent.usage as typeof event.usage & { cache_creation?: { ephemeral_1h_input_tokens?: number } }\n\t\t\t\t\t\t).cache_creation;\n\t\t\t\t\t\tif (cacheCreation?.ephemeral_1h_input_tokens != null) {\n\t\t\t\t\t\t\toutput.usage.cacheWrite1h = cacheCreation.ephemeral_1h_input_tokens;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (thinkingTokens != null) {\n\t\t\t\t\t\t\toutput.usage.reasoning = thinkingTokens;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// Anthropic doesn't provide total_tokens, compute from components\n\t\t\t\t\toutput.usage.totalTokens =\n\t\t\t\t\t\toutput.usage.input + output.usage.output + output.usage.cacheRead + output.usage.cacheWrite;\n\t\t\t\t\tcalculateCost(usageModel, output.usage);\n\t\t\t\t\tservedSpeed = reportedSpeed(event.usage) ?? servedSpeed;\n\t\t\t\t\tif (servedSpeed === \"fast\") applyFastModePricing(output.usage);\n\t\t\t\t\t// A non-empty final fallback report supersedes the request-start report with\n\t\t\t\t\t// the serving model's transformations. An empty report must not erase drops\n\t\t\t\t\t// already reported at message_start.\n\t\t\t\t\tconst servingTransformations = getInputTransformations(event);\n\t\t\t\t\tif (servingTransformations && servingTransformations.length > 0) {\n\t\t\t\t\t\tinputTransformations = servingTransformations;\n\t\t\t\t\t}\n\t\t\t\t\taddEarlierAttemptCosts(output, model, usageModel, event);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (inputTransformations) recordInputTransformations(output, inputTransformations);\n\t\t\tif (options?.signal?.aborted) {\n\t\t\t\tthrow new Error(\"Request was aborted\");\n\t\t\t}\n\n\t\t\tif (output.stopReason === \"pending\") {\n\t\t\t\tthrow new Error(\"Anthropic stream ended without a stop reason\");\n\t\t\t}\n\t\t\tif (output.stopReason === \"aborted\" || output.stopReason === \"error\") {\n\t\t\t\tthrow new Error(output.errorMessage || \"An unknown error occurred\");\n\t\t\t}\n\n\t\t\tstream.push({ type: \"done\", reason: output.stopReason, message: output });\n\t\t\tstream.end();\n\t\t} catch (error) {\n\t\t\tif (\n\t\t\t\tinputTransformations &&\n\t\t\t\t!output.diagnostics?.some((diagnostic) => diagnostic.type === \"anthropic_input_transformations\")\n\t\t\t) {\n\t\t\t\trecordInputTransformations(output, inputTransformations);\n\t\t\t}\n\t\t\tfor (const block of output.content) {\n\t\t\t\tdelete (block as { index?: number }).index;\n\t\t\t\t// partialJson is only a streaming scratch buffer; never persist it.\n\t\t\t\tdelete (block as { partialJson?: string }).partialJson;\n\t\t\t}\n\t\t\toutput.stopReason = options?.signal?.aborted ? \"aborted\" : \"error\";\n\t\t\toutput.errorMessage = error instanceof Error ? error.message : JSON.stringify(error);\n\t\t\tstream.push({ type: \"error\", reason: output.stopReason, error: output });\n\t\t\tstream.end();\n\t\t} finally {\n\t\t\tstreamDeadline.cleanup();\n\t\t}\n\t})();\n\n\treturn stream;\n};\n\n/**\n * Map ThinkingLevel to Anthropic effort levels for adaptive thinking.\n * Note: effort \"max\" is available on all adaptive-thinking Claude models, while native\n * \"xhigh\" is available on Opus 4.7, Opus 4.8, Opus 5, Sonnet 5, Fable 5, and Fable 5.1 —\n * the models the generator merges an `xhigh` mapping onto.\n */\nfunction mapThinkingLevelToEffort(\n\tmodel: Model<\"anthropic-messages\">,\n\tlevel: SimpleStreamOptions[\"reasoning\"],\n): AnthropicEffort {\n\tconst mapped = level ? model.thinkingLevelMap?.[level] : undefined;\n\tif (typeof mapped === \"string\") return mapped as AnthropicEffort;\n\n\tswitch (level) {\n\t\tcase \"minimal\":\n\t\tcase \"low\":\n\t\t\treturn \"low\";\n\t\tcase \"medium\":\n\t\t\treturn \"medium\";\n\t\tcase \"high\":\n\t\t\treturn \"high\";\n\t\tdefault:\n\t\t\treturn \"high\";\n\t}\n}\n\nexport const streamSimple: StreamFunction<\"anthropic-messages\", SimpleStreamOptions> = (\n\tmodel: Model<\"anthropic-messages\">,\n\tcontext: TranscriptContext,\n\toptions?: SimpleStreamOptions,\n): AssistantMessageEventStream => {\n\tassertRequestAuth(model.provider, options?.apiKey, options?.headers);\n\n\tconst base = {\n\t\t...buildBaseOptions(model, context, options, options?.apiKey),\n\t\ttoolChoice: options?.toolChoice,\n\t} satisfies AnthropicOptions;\n\tif (!options?.reasoning) {\n\t\treturn stream(model, context, {\n\t\t\t...base,\n\t\t\tthinkingEnabled: false,\n\t\t} satisfies AnthropicOptions);\n\t}\n\n\t// For models with adaptive thinking: use an effort level.\n\t// For older models: use budget-based thinking.\n\tif (model.compat?.forceAdaptiveThinking === true) {\n\t\tconst effort = mapThinkingLevelToEffort(model, options.reasoning);\n\t\treturn stream(model, context, {\n\t\t\t...base,\n\t\t\tthinkingEnabled: true,\n\t\t\teffort,\n\t\t} satisfies AnthropicOptions);\n\t}\n\n\t// Undefined means the caller did not request an output cap; let the helper use the model cap.\n\t// Do not coerce to 0 here, or the thinking budget would become the entire max_tokens value.\n\tconst adjusted = adjustMaxTokensForThinking(\n\t\tbase.maxTokens,\n\t\tmodel.maxTokens,\n\t\toptions.reasoning,\n\t\toptions.thinkingBudgets,\n\t);\n\n\tconst maxTokens = clampMaxTokensToContext(model, context, adjusted.maxTokens);\n\n\treturn stream(model, context, {\n\t\t...base,\n\t\tmaxTokens,\n\t\tthinkingEnabled: true,\n\t\tthinkingBudgetTokens: Math.min(adjusted.thinkingBudget, Math.max(0, maxTokens - 1024)),\n\t} satisfies AnthropicOptions);\n};\n\nfunction isOAuthToken(apiKey: string): boolean {\n\treturn apiKey.includes(\"sk-ant-oat\");\n}\n\nfunction createClient(\n\tmodel: Model<\"anthropic-messages\">,\n\tapiKey: string | undefined,\n\tinterleavedThinking: boolean,\n\tuseFineGrainedToolStreamingBeta: boolean,\n\tuseServerSideFallbackBeta: boolean,\n\toptionsHeaders?: ProviderHeaders,\n\tfetch?: typeof globalThis.fetch,\n\tdynamicHeaders?: Record<string, string>,\n\tsessionId?: string,\n\tuseNativeToolChanges = false,\n): { client: Anthropic; isOAuthToken: boolean } {\n\t// Adaptive thinking models have interleaved thinking built in, so skip the beta header.\n\tconst needsInterleavedBeta = interleavedThinking && model.compat?.forceAdaptiveThinking !== true;\n\tconst betaFeatures: string[] = [];\n\tif (useFineGrainedToolStreamingBeta) {\n\t\tbetaFeatures.push(FINE_GRAINED_TOOL_STREAMING_BETA);\n\t}\n\tif (needsInterleavedBeta) {\n\t\tbetaFeatures.push(INTERLEAVED_THINKING_BETA);\n\t}\n\tif (useServerSideFallbackBeta) {\n\t\tbetaFeatures.push(SERVER_SIDE_FALLBACK_BETA);\n\t}\n\tif (shouldUseThinkingBindingControlsBeta(model)) {\n\t\tbetaFeatures.push(THINKING_BINDING_CONTROLS_BETA);\n\t}\n\tif (supportsMidConvoEffort(model)) {\n\t\tbetaFeatures.push(MID_CONVERSATION_OUTPUT_CONFIG_BETA, THINKING_BINDING_CONTROLS_BETA);\n\t}\n\tif (useNativeToolChanges) betaFeatures.push(MID_CONVERSATION_TOOL_CHANGES_BETA);\n\tif (requestedSpeed(model) === \"fast\") betaFeatures.push(FAST_MODE_BETA);\n\tconst uniqueBetaFeatures = [...new Set(betaFeatures)];\n\n\t// Copilot: Bearer auth, selective betas.\n\tif (model.provider === \"github-copilot\") {\n\t\tconst client = new Anthropic({\n\t\t\tapiKey: null,\n\t\t\tauthToken: apiKey ?? null,\n\t\t\tbaseURL: model.baseUrl,\n\t\t\tdangerouslyAllowBrowser: true,\n\t\t\tfetch,\n\t\t\tdefaultHeaders: mergeClientHeaders(\n\t\t\t\t{\n\t\t\t\t\taccept: \"application/json\",\n\t\t\t\t\t\"anthropic-dangerous-direct-browser-access\": \"true\",\n\t\t\t\t\t...(uniqueBetaFeatures.length > 0 ? { \"anthropic-beta\": uniqueBetaFeatures.join(\",\") } : {}),\n\t\t\t\t},\n\t\t\t\tmodel.headers,\n\t\t\t\tdynamicHeaders,\n\t\t\t\toptionsHeaders,\n\t\t\t),\n\t\t});\n\n\t\treturn { client, isOAuthToken: false };\n\t}\n\n\t// OAuth: Bearer auth, Claude Code identity headers\n\tif (apiKey && isOAuthToken(apiKey)) {\n\t\tconst client = new Anthropic({\n\t\t\tapiKey: null,\n\t\t\tauthToken: apiKey,\n\t\t\tbaseURL: model.baseUrl,\n\t\t\tdangerouslyAllowBrowser: true,\n\t\t\tfetch,\n\t\t\tdefaultHeaders: mergeClientHeaders(\n\t\t\t\t{\n\t\t\t\t\taccept: \"application/json\",\n\t\t\t\t\t\"anthropic-dangerous-direct-browser-access\": \"true\",\n\t\t\t\t\t\"anthropic-beta\": [\"claude-code-20250219\", \"oauth-2025-04-20\", ...uniqueBetaFeatures].join(\",\"),\n\t\t\t\t\t\"user-agent\": `claude-cli/${claudeCodeVersion}`,\n\t\t\t\t\t\"x-app\": \"cli\",\n\t\t\t\t},\n\t\t\t\tmodel.headers,\n\t\t\t\toptionsHeaders,\n\t\t\t),\n\t\t});\n\n\t\treturn { client, isOAuthToken: true };\n\t}\n\n\t// API key or header-owned auth.\n\tconst compat = getAnthropicCompat(model);\n\tconst sessionAffinityHeaders: ProviderHeaders = {};\n\tif (sessionId && compat.sendSessionAffinityHeaders) {\n\t\tconst header = compat.sessionAffinityFormat === \"openrouter\" ? \"x-session-id\" : \"x-session-affinity\";\n\t\tsessionAffinityHeaders[header] = sessionId;\n\t}\n\tconst defaultHeaders = mergeClientHeaders(\n\t\t{\n\t\t\taccept: \"application/json\",\n\t\t\t\"anthropic-dangerous-direct-browser-access\": \"true\",\n\t\t\t...(uniqueBetaFeatures.length > 0 ? { \"anthropic-beta\": uniqueBetaFeatures.join(\",\") } : {}),\n\t\t},\n\t\tsessionAffinityHeaders,\n\t\tmodel.headers,\n\t\toptionsHeaders,\n\t);\n\tconst client = new Anthropic({\n\t\tapiKey: apiKey ?? null,\n\t\tauthToken: null,\n\t\tbaseURL: model.baseUrl,\n\t\tdangerouslyAllowBrowser: true,\n\t\tfetch,\n\t\tdefaultHeaders,\n\t});\n\n\treturn { client, isOAuthToken: false };\n}\n\nfunction getNativeToolChangeBetas(\n\tmodel: Model<\"anthropic-messages\">,\n\tcontext: TranscriptContext,\n\tisOAuth: boolean,\n\toptions?: AnthropicOptions,\n): NonNullable<MessageCreateParamsStreaming[\"betas\"]> {\n\tlet configured: string | null | undefined;\n\tfor (const headers of [model.headers, options?.headers]) {\n\t\tfor (const [name, value] of Object.entries(headers ?? {})) {\n\t\t\tif (name.toLowerCase() === \"anthropic-beta\") configured = value;\n\t\t}\n\t}\n\tif (configured === null) return [];\n\tif (configured !== undefined)\n\t\treturn [\n\t\t\t...new Set(\n\t\t\t\tconfigured\n\t\t\t\t\t.split(\",\")\n\t\t\t\t\t.map((feature) => feature.trim())\n\t\t\t\t\t.filter(Boolean),\n\t\t\t),\n\t\t];\n\tconst features = [MID_CONVERSATION_TOOL_CHANGES_BETA];\n\tif (isOAuth) features.push(\"claude-code-20250219\", \"oauth-2025-04-20\");\n\tif (shouldUseFineGrainedToolStreamingBeta(model, context)) features.push(FINE_GRAINED_TOOL_STREAMING_BETA);\n\tif (\n\t\tmodel.reasoning &&\n\t\toptions?.thinkingEnabled &&\n\t\t(options.interleavedThinking ?? true) &&\n\t\tmodel.compat?.forceAdaptiveThinking !== true\n\t) {\n\t\tfeatures.push(INTERLEAVED_THINKING_BETA);\n\t}\n\tif (shouldUseServerSideFallbackBeta(model)) features.push(SERVER_SIDE_FALLBACK_BETA);\n\tif (shouldUseThinkingBindingControlsBeta(model)) features.push(THINKING_BINDING_CONTROLS_BETA);\n\tif (supportsMidConvoEffort(model))\n\t\tfeatures.push(MID_CONVERSATION_OUTPUT_CONFIG_BETA, THINKING_BINDING_CONTROLS_BETA);\n\tif (requestedSpeed(model) === \"fast\") features.push(FAST_MODE_BETA);\n\treturn [...new Set(features)];\n}\n\nfunction buildParams(\n\tmodel: Model<\"anthropic-messages\">,\n\tcontext: TranscriptContext,\n\tisOAuthToken: boolean,\n\toptions?: AnthropicOptions,\n): MessageCreateParamsStreaming {\n\tconst { cacheControl } = getCacheControl(model, options?.cacheRetention, options?.env);\n\tconst compat = getAnthropicCompat(model);\n\tconst initialSystemMessage = getInitialSystemMessage(context.messages);\n\tconst initialSystemText = initialSystemMessage ? getSystemMessageText(initialSystemMessage) : \"\";\n\tconst transformedMessages = transformMessages(context.messages, model, normalizeToolCallId);\n\tconst conversationMessages = initialSystemMessage ? transformedMessages.slice(1) : transformedMessages;\n\t// Native tool changes reference tools by name, so a redefined name cannot be expressed,\n\t// and Anthropic rejects a tool list where every tool is deferred, so there must be an\n\t// initial active tool to anchor the deferred ones. Otherwise the current tool list is sent.\n\tconst initialTools = initialSystemMessage?.toolsAdded ?? [];\n\tconst nativeToolChanges =\n\t\tcompat.supportsMidConvoSystemMessages &&\n\t\tcompat.supportsMidConvoToolChanges &&\n\t\tinitialTools.length > 0 &&\n\t\t!hasToolRedefinitions(context.messages);\n\tconst converted = convertMessages(\n\t\tconversationMessages,\n\t\tisOAuthToken,\n\t\tcacheControl,\n\t\tcompat.allowEmptySignature,\n\t\tsupportsMidConvoEffort(model) ? model.provider : undefined,\n\t\tnativeToolChanges,\n\t);\n\tconst activeEffort = options?.effort ?? \"high\";\n\tconst params: MessageCreateParamsStreaming = {\n\t\tmodel: upstreamModelId(model),\n\t\tmessages: (supportsMidConvoEffort(model)\n\t\t\t? insertThinkingLevelMessages(converted, activeEffort)\n\t\t\t: converted.messages) as MessageParam[],\n\t\tmax_tokens: options?.maxTokens ?? model.maxTokens,\n\t\tstream: true,\n\t};\n\tif (nativeToolChanges) params.betas = getNativeToolChangeBetas(model, context, isOAuthToken, options);\n\tconst speed = requestedSpeed(model);\n\tif (speed !== undefined) params.speed = speed;\n\n\t// For OAuth tokens, we MUST include Claude Code identity\n\tif (isOAuthToken) {\n\t\tparams.system = [\n\t\t\t{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: \"You are Claude Code, Anthropic's official CLI for Claude.\",\n\t\t\t\t...(cacheControl ? { cache_control: cacheControl } : {}),\n\t\t\t},\n\t\t];\n\t\tif (initialSystemText) {\n\t\t\tparams.system.push({\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: sanitizeSurrogates(initialSystemText),\n\t\t\t\t...(cacheControl ? { cache_control: cacheControl } : {}),\n\t\t\t});\n\t\t}\n\t} else if (initialSystemText) {\n\t\t// Add cache control to system prompt for non-OAuth tokens\n\t\tparams.system = [\n\t\t\t{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: sanitizeSurrogates(initialSystemText),\n\t\t\t\t...(cacheControl ? { cache_control: cacheControl } : {}),\n\t\t\t},\n\t\t];\n\t}\n\n\t// Temperature is incompatible with extended thinking and unsupported on Claude Opus 4.7+.\n\tif (\n\t\toptions?.temperature !== undefined &&\n\t\t!options?.thinkingEnabled &&\n\t\t!supportsMidConvoEffort(model) &&\n\t\tcompat.supportsTemperature\n\t) {\n\t\tparams.temperature = options.temperature;\n\t}\n\n\tconst toolCacheControl = compat.supportsCacheControlOnTools ? cacheControl : undefined;\n\tif (nativeToolChanges) {\n\t\t// Initial tools stay active with the cache breakpoint on the last one. Every later\n\t\t// declaration is deferred and only surfaced by its `tool_addition` block; removed\n\t\t// tools stay declared and are withdrawn by `tool_removal`. The request-level list\n\t\t// therefore only grows, keeping the cached prefix intact across tool changes.\n\t\tconst initialNames = new Set(initialTools.map((tool) => tool.name));\n\t\tconst laterTools = getDeclaredTools(context.messages).filter((tool) => !initialNames.has(tool.name));\n\t\tparams.tools = [\n\t\t\t...convertTools(\n\t\t\t\tinitialTools,\n\t\t\t\tisOAuthToken,\n\t\t\t\tcompat.supportsEagerToolInputStreaming,\n\t\t\t\tcompat.supportsStrictTools,\n\t\t\t\ttoolCacheControl,\n\t\t\t),\n\t\t\tDEFERRED_TOOL_PLACEHOLDER,\n\t\t\t...convertTools(\n\t\t\t\tlaterTools,\n\t\t\t\tisOAuthToken,\n\t\t\t\tcompat.supportsEagerToolInputStreaming,\n\t\t\t\tcompat.supportsStrictTools,\n\t\t\t).map((tool) => ({ ...tool, defer_loading: true })),\n\t\t];\n\t} else {\n\t\tconst tools = getCurrentTools(context.messages);\n\t\tif (tools.length > 0) {\n\t\t\tparams.tools = convertTools(\n\t\t\t\ttools,\n\t\t\t\tisOAuthToken,\n\t\t\t\tcompat.supportsEagerToolInputStreaming,\n\t\t\t\tcompat.supportsStrictTools,\n\t\t\t\ttoolCacheControl,\n\t\t\t);\n\t\t}\n\t}\n\n\t// Managed effort models always use adaptive thinking. Their per-turn markers\n\t// carry the actual effort; the top-level high value deliberately stays stable.\n\tif (supportsMidConvoEffort(model)) {\n\t\tparams.thinking = {\n\t\t\ttype: \"adaptive\",\n\t\t\tdisplay: options?.thinkingDisplay ?? \"summarized\",\n\t\t\tblock_binding: { prefix_mismatch_behavior: \"drop_block\" },\n\t\t} as unknown as NonNullable<MessageCreateParamsStreaming[\"thinking\"]>;\n\t\tparams.output_config = { effort: \"high\" };\n\t} else if (model.reasoning) {\n\t\tif (options?.thinkingEnabled) {\n\t\t\t// Default to \"summarized\" so Opus 4.7 and Mythos Preview behave like\n\t\t\t// older Claude 4 models (whose API default is also \"summarized\").\n\t\t\tconst display: AnthropicThinkingDisplay = options.thinkingDisplay ?? \"summarized\";\n\t\t\tif (model.compat?.forceAdaptiveThinking === true) {\n\t\t\t\t// Adaptive thinking: Claude decides when and how much to think.\n\t\t\t\tparams.thinking = { type: \"adaptive\", display };\n\t\t\t\tif (options.effort) {\n\t\t\t\t\t// The Anthropic SDK types can lag newly supported effort values such as \"xhigh\".\n\t\t\t\t\tparams.output_config =\n\t\t\t\t\t\toptions.effort === \"xhigh\"\n\t\t\t\t\t\t\t? ({ effort: options.effort } as unknown as NonNullable<\n\t\t\t\t\t\t\t\t\tMessageCreateParamsStreaming[\"output_config\"]\n\t\t\t\t\t\t\t\t>)\n\t\t\t\t\t\t\t: { effort: options.effort };\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Budget-based thinking for older models\n\t\t\t\tparams.thinking = {\n\t\t\t\t\ttype: \"enabled\",\n\t\t\t\t\tbudget_tokens: options.thinkingBudgetTokens || 1024,\n\t\t\t\t\tdisplay,\n\t\t\t\t};\n\t\t\t}\n\t\t} else if (options?.thinkingEnabled === false && model.thinkingLevelMap?.off !== null) {\n\t\t\tparams.thinking = { type: \"disabled\" };\n\t\t}\n\n\t\t// `block_binding` must accompany the beta header on *every* request for a model that\n\t\t// enforces the conversation check, not only on reasoning turns. The header alone leaves\n\t\t// `prefix_mismatch_behavior` at its `\"error\"` default, which is the 400 this opts out of.\n\t\t// `streamSimple` sets `thinkingEnabled: false` whenever no reasoning level is requested,\n\t\t// and Claude Fable 5.1 denies thinking-off (`thinkingLevelMap.off === null`), so without\n\t\t// this the no-reasoning path would send the header with no field at all.\n\t\tif (shouldUseThinkingBindingControlsBeta(model)) {\n\t\t\tconst blockBinding = { block_binding: { prefix_mismatch_behavior: \"drop_block\" } };\n\t\t\t// The Anthropic SDK types lag the `thinking-binding-controls-2026-08-01` beta.\n\t\t\tif (params.thinking?.type === \"adaptive\" || params.thinking?.type === \"enabled\") {\n\t\t\t\t// Accepted alongside both thinking types. It only changes what happens to a block\n\t\t\t\t// replayed behind a changed prefix; the model check always drops regardless.\n\t\t\t\tparams.thinking = { ...params.thinking, ...blockBinding } as unknown as NonNullable<\n\t\t\t\t\tMessageCreateParamsStreaming[\"thinking\"]\n\t\t\t\t>;\n\t\t\t} else if (!params.thinking && model.compat?.forceAdaptiveThinking === true) {\n\t\t\t\t// Adaptive thinking is always on for these models, so omitting `thinking` and\n\t\t\t\t// sending `{type: \"adaptive\"}` are equivalent. `display` stays absent to keep the\n\t\t\t\t// API's `\"omitted\"` default, which is exactly what omitting `thinking` produced.\n\t\t\t\tparams.thinking = { type: \"adaptive\", ...blockBinding } as unknown as NonNullable<\n\t\t\t\t\tMessageCreateParamsStreaming[\"thinking\"]\n\t\t\t\t>;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (options?.metadata) {\n\t\tconst userId = options.metadata.user_id;\n\t\tif (typeof userId === \"string\") {\n\t\t\tparams.metadata = { user_id: userId };\n\t\t}\n\t}\n\n\tif (options?.toolChoice) {\n\t\tconst requested = options.toolChoice;\n\t\tconst isForced = requested === \"any\" || (typeof requested !== \"string\" && requested.type === \"tool\");\n\t\tif (isForced && model.compat?.supportsForcedToolChoice === false) {\n\t\t\t// \"The exceptions are Claude Fable 5.1 and Claude Mythos 5.1, which reject forced tool\n\t\t\t// use on every request with a 400 error. On those models, use\n\t\t\t// `tool_choice: {\"type\": \"auto\"}` with strict tool use or structured outputs instead.\"\n\t\t\t// https://platform.claude.com/docs/en/build-with-claude/thinking\n\t\t\t//\n\t\t\t// Reject the request rather than rewriting it. Silently substituting `auto` would\n\t\t\t// discard an explicit caller instruction and make `AnthropicOptions.toolChoice`'s\n\t\t\t// declared shape a lie; the caller asked the model to call a tool, and quietly asking\n\t\t\t// it to decide instead is a different request. Failing here matches how this package\n\t\t\t// handles other explicitly requested capabilities a model cannot honor, and surfaces\n\t\t\t// the remedy before a round trip that would 400 anyway. Callers that want the\n\t\t\t// substitution can make it themselves, and can branch on\n\t\t\t// `model.compat.supportsForcedToolChoice` to decide.\n\t\t\tconst requestedLabel = typeof requested === \"string\" ? requested : `tool \"${requested.name}\"`;\n\t\t\tthrow new Error(\n\t\t\t\t`Model ${model.id} does not support forced tool choice (requested: ${requestedLabel}). ` +\n\t\t\t\t\t`Use toolChoice \"auto\" with strict tool use or structured outputs instead.`,\n\t\t\t);\n\t\t}\n\t\tif (typeof requested === \"string\") {\n\t\t\tparams.tool_choice = { type: requested };\n\t\t} else {\n\t\t\tparams.tool_choice = requested;\n\t\t}\n\t}\n\n\tconst allowedFallbackModels = model.compat?.allowedFallbackModels;\n\tif (allowedFallbackModels && allowedFallbackModels.length > 0) {\n\t\tparams.fallbacks = allowedFallbackModels.map((fallback) => ({ model: fallback.model }));\n\t}\n\n\treturn params;\n}\n\n// Normalize tool call IDs to match Anthropic's required pattern and length\nfunction normalizeToolCallId(id: string): string {\n\treturn id.replace(/[^a-zA-Z0-9_-]/g, \"_\").slice(0, 64);\n}\n\nfunction convertToolResult(msg: ToolResultMessage): ContentBlockParam {\n\treturn {\n\t\ttype: \"tool_result\",\n\t\ttool_use_id: msg.toolCallId,\n\t\tcontent: convertContentBlocks(msg.content),\n\t\tis_error: msg.isError,\n\t};\n}\n\nfunction convertMessages(\n\ttransformedMessages: Message[],\n\tisOAuthToken: boolean,\n\tcacheControl?: CacheControlEphemeral,\n\tallowEmptySignature = false,\n\tmanagedProvider?: string,\n\tnativeToolChanges = false,\n): ConvertedAnthropicMessages {\n\tconst params: MessageParam[] = [];\n\tconst assistantLevels = new Map<number, AnthropicEffort>();\n\t// Later system messages are held back and emitted directly before the next assistant\n\t// message (or at the end of the transcript). Anthropic requires `tool_result` blocks to\n\t// immediately follow their `tool_use`, so a system message between them is rejected; this\n\t// also mirrors where the managed-effort system messages are inserted. As a result an\n\t// update placed before a user message in the transcript lands after it on the wire.\n\tconst pendingSystemMessages: MessageParam[] = [];\n\tconst flushPendingSystemMessages = (): void => {\n\t\tparams.push(...pendingSystemMessages);\n\t\tpendingSystemMessages.length = 0;\n\t};\n\n\tfor (let i = 0; i < transformedMessages.length; i++) {\n\t\tconst msg = transformedMessages[i];\n\n\t\tif (msg.role === \"system\") {\n\t\t\t// Later system messages only reach this point when the model accepts them natively;\n\t\t\t// otherwise the transcript was collapsed into the leading message before conversion.\n\t\t\tconst text = renderSystemMessageUpdate(msg);\n\t\t\tconst blocks: ContentBlockParam[] = [];\n\t\t\tif (text.length > 0) blocks.push({ type: \"text\", text: sanitizeSurrogates(text) });\n\t\t\tif (nativeToolChanges) {\n\t\t\t\tfor (const tool of msg.toolsRemoved ?? []) {\n\t\t\t\t\tblocks.push({\n\t\t\t\t\t\ttype: \"tool_removal\",\n\t\t\t\t\t\ttool: { type: \"tool_reference\", name: isOAuthToken ? toClaudeCodeName(tool.name) : tool.name },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tfor (const tool of msg.toolsAdded ?? []) {\n\t\t\t\t\tblocks.push({\n\t\t\t\t\t\ttype: \"tool_addition\",\n\t\t\t\t\t\ttool: { type: \"tool_reference\", name: isOAuthToken ? toClaudeCodeName(tool.name) : tool.name },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (blocks.length > 0) pendingSystemMessages.push({ role: \"system\", content: blocks });\n\t\t} else if (msg.role === \"user\") {\n\t\t\tif (typeof msg.content === \"string\") {\n\t\t\t\tif (msg.content.trim().length > 0) {\n\t\t\t\t\tparams.push({\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: sanitizeSurrogates(msg.content),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst blocks: ContentBlockParam[] = msg.content.map((item) => {\n\t\t\t\t\tif (item.type === \"text\") {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\ttext: sanitizeSurrogates(item.text),\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tif (item.type === \"document\") {\n\t\t\t\t\t\t// `BetaBase64PDFSource`. PDFs ride Claude's vision path, so no beta header.\n\t\t\t\t\t\t// The media type is a fixed literal in that SDK type, so it is hardcoded here\n\t\t\t\t\t\t// and the block's own field is verified rather than read.\n\t\t\t\t\t\t// https://platform.claude.com/docs/en/build-with-claude/pdf-support\n\t\t\t\t\t\tassertSupportedDocumentMimeType(item);\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: \"document\",\n\t\t\t\t\t\t\tsource: {\n\t\t\t\t\t\t\t\ttype: \"base64\",\n\t\t\t\t\t\t\t\tmedia_type: \"application/pdf\",\n\t\t\t\t\t\t\t\tdata: item.data,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t...(item.name ? { title: item.name } : {}),\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: \"image\",\n\t\t\t\t\t\tsource: {\n\t\t\t\t\t\t\ttype: \"base64\",\n\t\t\t\t\t\t\tmedia_type: item.mimeType as \"image/jpeg\" | \"image/png\" | \"image/gif\" | \"image/webp\",\n\t\t\t\t\t\t\tdata: item.data,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t\tconst filteredBlocks = blocks.filter((b) => {\n\t\t\t\t\tif (b.type === \"text\") {\n\t\t\t\t\t\treturn b.text.trim().length > 0;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t});\n\t\t\t\tif (filteredBlocks.length === 0) continue;\n\t\t\t\tparams.push({\n\t\t\t\t\trole: \"user\",\n\t\t\t\t\tcontent: filteredBlocks,\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (msg.role === \"assistant\") {\n\t\t\tflushPendingSystemMessages();\n\t\t\tconst blocks: ContentBlockParam[] = [];\n\n\t\t\tfor (const block of msg.content) {\n\t\t\t\tif (block.type === \"text\") {\n\t\t\t\t\tif (block.text.trim().length === 0) continue;\n\t\t\t\t\tblocks.push({\n\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\ttext: sanitizeSurrogates(block.text),\n\t\t\t\t\t});\n\t\t\t\t} else if (block.type === \"thinking\") {\n\t\t\t\t\t// Redacted thinking: pass the opaque payload back as redacted_thinking\n\t\t\t\t\tif (block.redacted) {\n\t\t\t\t\t\tblocks.push({\n\t\t\t\t\t\t\ttype: \"redacted_thinking\",\n\t\t\t\t\t\t\tdata: block.thinkingSignature!,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tconst thinkingSignature = block.thinkingSignature;\n\t\t\t\t\tconst hasThinkingSignature = !!thinkingSignature && thinkingSignature.trim().length > 0;\n\t\t\t\t\tif (block.thinking.trim().length === 0 && !hasThinkingSignature) continue;\n\t\t\t\t\t// If thinking signature is missing/empty (e.g., from aborted stream),\n\t\t\t\t\t// convert to plain text for Anthropic. Some compatible providers emit\n\t\t\t\t\t// and accept empty signatures, so let marked models preserve the block.\n\t\t\t\t\tif (!hasThinkingSignature) {\n\t\t\t\t\t\tblocks.push(\n\t\t\t\t\t\t\tallowEmptySignature\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\ttype: \"thinking\",\n\t\t\t\t\t\t\t\t\t\tthinking: sanitizeSurrogates(block.thinking),\n\t\t\t\t\t\t\t\t\t\tsignature: \"\",\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\t\t\t\ttext: sanitizeSurrogates(block.thinking),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tblocks.push({\n\t\t\t\t\t\t\ttype: \"thinking\",\n\t\t\t\t\t\t\tthinking: sanitizeSurrogates(block.thinking),\n\t\t\t\t\t\t\tsignature: thinkingSignature,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else if (block.type === \"toolCall\") {\n\t\t\t\t\tblocks.push({\n\t\t\t\t\t\ttype: \"tool_use\",\n\t\t\t\t\t\tid: block.id,\n\t\t\t\t\t\tname: isOAuthToken ? toClaudeCodeName(block.name) : block.name,\n\t\t\t\t\t\tinput: block.arguments ?? {},\n\t\t\t\t\t});\n\t\t\t\t} else if (block.type === \"fallback\") {\n\t\t\t\t\t// The server-side fallback boundary must go back on the wire at the position it\n\t\t\t\t\t// arrived: \"Keep it exactly where it appeared. The API uses its position to\n\t\t\t\t\t// validate the thinking blocks around it, so a request that echoes thinking\n\t\t\t\t\t// blocks from both sides of the boundary is rejected if the block is omitted or\n\t\t\t\t\t// moved.\" `transformMessages` drops the pre-boundary thinking; without this\n\t\t\t\t\t// branch the marker would be dropped too, which is the failure that rule names.\n\t\t\t\t\t// https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback\n\t\t\t\t\t//\n\t\t\t\t\t// The SDK types lag this block, matching the cast on the stream side.\n\t\t\t\t\tblocks.push({\n\t\t\t\t\t\ttype: \"fallback\",\n\t\t\t\t\t\tfrom: { model: block.fromModel },\n\t\t\t\t\t\tto: { model: block.toModel },\n\t\t\t\t\t} as unknown as ContentBlockParam);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (blocks.length === 0) continue;\n\t\t\tconst messageIndex = params.length;\n\t\t\tparams.push({\n\t\t\t\trole: \"assistant\",\n\t\t\t\tcontent: blocks,\n\t\t\t});\n\t\t\tif (\n\t\t\t\tmanagedProvider !== undefined &&\n\t\t\t\tmsg.api === \"anthropic-messages\" &&\n\t\t\t\tmsg.provider === managedProvider &&\n\t\t\t\tisAnthropicEffort(msg.providerThinkingLevel)\n\t\t\t) {\n\t\t\t\tassistantLevels.set(messageIndex, msg.providerThinkingLevel);\n\t\t\t}\n\t\t} else if (msg.role === \"toolResult\") {\n\t\t\t// Collect all consecutive toolResult messages, needed for z.ai Anthropic endpoint.\n\t\t\tconst toolResults: ContentBlockParam[] = [];\n\t\t\tlet j = i;\n\t\t\twhile (j < transformedMessages.length && transformedMessages[j].role === \"toolResult\") {\n\t\t\t\ttoolResults.push(convertToolResult(transformedMessages[j] as ToolResultMessage));\n\t\t\t\tj++;\n\t\t\t}\n\n\t\t\t// Skip the messages we've already processed.\n\t\t\ti = j - 1;\n\n\t\t\tparams.push({\n\t\t\t\trole: \"user\",\n\t\t\t\tcontent: toolResults,\n\t\t\t});\n\t\t}\n\t}\n\n\tflushPendingSystemMessages();\n\n\t// Add cache_control to the last user or system message to cache conversation history\n\tif (cacheControl && params.length > 0) {\n\t\tconst lastMessage = params[params.length - 1];\n\t\tif (lastMessage.role === \"user\" || lastMessage.role === \"system\") {\n\t\t\tif (Array.isArray(lastMessage.content)) {\n\t\t\t\tconst lastBlock = lastMessage.content[lastMessage.content.length - 1];\n\t\t\t\tif (\n\t\t\t\t\tlastBlock &&\n\t\t\t\t\t(lastBlock.type === \"text\" ||\n\t\t\t\t\t\tlastBlock.type === \"image\" ||\n\t\t\t\t\t\tlastBlock.type === \"tool_result\" ||\n\t\t\t\t\t\tlastBlock.type === \"tool_addition\" ||\n\t\t\t\t\t\tlastBlock.type === \"tool_removal\")\n\t\t\t\t) {\n\t\t\t\t\t(lastBlock as any).cache_control = cacheControl;\n\t\t\t\t}\n\t\t\t} else if (typeof lastMessage.content === \"string\") {\n\t\t\t\tlastMessage.content = [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\ttext: lastMessage.content,\n\t\t\t\t\t\tcache_control: cacheControl,\n\t\t\t\t\t},\n\t\t\t\t] as any;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { messages: params, assistantLevels };\n}\n\ninterface ConvertedAnthropicMessages {\n\tmessages: MessageParam[];\n\tassistantLevels: Map<number, AnthropicEffort>;\n}\n\nfunction isAnthropicEffort(value: string | undefined): value is AnthropicEffort {\n\treturn value === \"low\" || value === \"medium\" || value === \"high\" || value === \"xhigh\" || value === \"max\";\n}\n\ninterface EffortMessage {\n\trole: \"system\";\n\tcontent: [];\n\toutput_config: { effort: AnthropicEffort };\n}\n\nfunction insertThinkingLevelMessages(\n\tconverted: ConvertedAnthropicMessages,\n\tactiveEffort: AnthropicEffort,\n): Array<MessageParam | EffortMessage> {\n\tconst messages: Array<MessageParam | EffortMessage> = [];\n\tfor (let index = 0; index < converted.messages.length; index++) {\n\t\tconst historicalEffort = converted.assistantLevels.get(index);\n\t\tif (historicalEffort !== undefined) {\n\t\t\tmessages.push({ role: \"system\", content: [], output_config: { effort: historicalEffort } });\n\t\t}\n\t\tmessages.push(converted.messages[index]);\n\t}\n\tmessages.push({ role: \"system\", content: [], output_config: { effort: activeEffort } });\n\treturn messages;\n}\n\nfunction shouldUseFineGrainedToolStreamingBeta(\n\tmodel: Model<\"anthropic-messages\">,\n\tcontext: TranscriptContext,\n): boolean {\n\treturn getCurrentTools(context.messages).length > 0 && !getAnthropicCompat(model).supportsEagerToolInputStreaming;\n}\n\ntype ToolSchemaObject = {\n\ttype?: string | string[];\n\tproperties?: Record<string, unknown>;\n\trequired?: string[];\n\tanyOf?: ToolSchemaObject[];\n};\n\nfunction projectObjectUnionForAnthropic(\n\tschema: ToolSchemaObject,\n): { properties: Record<string, unknown>; required: string[] } | undefined {\n\tif (schema.properties !== undefined || !Array.isArray(schema.anyOf) || schema.anyOf.length === 0) return undefined;\n\tconst branches = schema.anyOf;\n\tif (\n\t\t!branches.every(\n\t\t\t(branch) =>\n\t\t\t\t(branch.type === undefined ||\n\t\t\t\t\tbranch.type === \"object\" ||\n\t\t\t\t\t(Array.isArray(branch.type) &&\n\t\t\t\t\t\tbranch.type.length > 0 &&\n\t\t\t\t\t\tbranch.type.every((type) => type === \"object\"))) &&\n\t\t\t\tbranch.properties !== undefined,\n\t\t)\n\t)\n\t\treturn undefined;\n\n\tconst variantsByKey = new Map<string, unknown[]>();\n\tfor (const branch of branches) {\n\t\tfor (const [key, propertySchema] of Object.entries(branch.properties ?? {})) {\n\t\t\tconst variants = variantsByKey.get(key);\n\t\t\tif (variants === undefined) {\n\t\t\t\tvariantsByKey.set(key, [propertySchema]);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst serialized = JSON.stringify(propertySchema);\n\t\t\tif (!variants.some((variant) => variant === propertySchema || JSON.stringify(variant) === serialized)) {\n\t\t\t\tvariants.push(propertySchema);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst properties: Record<string, unknown> = Object.fromEntries(\n\t\t[...variantsByKey].flatMap(([key, variants]) => {\n\t\t\tconst first = variants[0];\n\t\t\treturn first === undefined ? [] : [[key, variants.length === 1 ? first : { anyOf: variants }]];\n\t\t}),\n\t);\n\n\treturn {\n\t\tproperties,\n\t\trequired: (branches[0]?.required ?? []).filter((key) =>\n\t\t\tbranches.every((branch) => (branch.required ?? []).includes(key)),\n\t\t),\n\t};\n}\n\nfunction convertTools(\n\ttools: Tool[],\n\tisOAuthToken: boolean,\n\tsupportsEagerToolInputStreaming: boolean,\n\tsupportsStrictTools: boolean,\n\tcacheControl?: CacheControlEphemeral,\n): BetaTool[] {\n\tif (!tools) return [];\n\n\t// OAuth canonicalization can make distinct transcript names collide. Keep the latest\n\t// declaration, as the pre-transcript tool serializer did, without sending duplicate names.\n\tif (isOAuthToken) tools = [...new Map(tools.map((tool) => [toClaudeCodeName(tool.name), tool])).values()];\n\treturn tools.map((tool, index) => {\n\t\tconst strict = resolveJsonSchemaStrictSampling(tool, supportsStrictTools, ANTHROPIC_STRICT_JSON_SCHEMA_PROFILE);\n\t\tconst parameters = getJsonSchemaToolParameters(tool, strict, ANTHROPIC_STRICT_JSON_SCHEMA_PROFILE);\n\t\tconst schema = parameters as ToolSchemaObject;\n\t\t// Anthropic rejects top-level combinators, so project object-union fields for advertising only.\n\t\t// Local runtime validation still enforces the complete authored union without mutating it.\n\t\tconst projectedUnion = projectObjectUnionForAnthropic(schema);\n\t\tconst legacyInputSchema = {\n\t\t\ttype: \"object\" as const,\n\t\t\tproperties: projectedUnion?.properties ?? schema.properties ?? {},\n\t\t\trequired: projectedUnion?.required ?? schema.required ?? [],\n\t\t};\n\t\tconst inputSchema =\n\t\t\tstrict === true && projectedUnion === undefined\n\t\t\t\t? {\n\t\t\t\t\t\t...(parameters as Record<string, unknown>),\n\t\t\t\t\t\t...legacyInputSchema,\n\t\t\t\t\t}\n\t\t\t\t: legacyInputSchema;\n\n\t\treturn {\n\t\t\tname: isOAuthToken ? toClaudeCodeName(tool.name) : tool.name,\n\t\t\tdescription: tool.description,\n\t\t\t...(supportsEagerToolInputStreaming ? { eager_input_streaming: true } : {}),\n\t\t\t...(strict === true ? { strict: true } : {}),\n\t\t\tinput_schema: inputSchema,\n\t\t\t...(cacheControl && index === tools.length - 1 ? { cache_control: cacheControl } : {}),\n\t\t};\n\t});\n}\n\nfunction mapStopReason(\n\treason: Anthropic.Messages.StopReason | string,\n\tstopDetails?: RefusalStopDetails | null,\n): { stopReason: StopReason; errorMessage?: string } {\n\tswitch (reason) {\n\t\tcase \"end_turn\":\n\t\t\treturn { stopReason: \"stop\" };\n\t\tcase \"max_tokens\":\n\t\t\treturn { stopReason: \"length\" };\n\t\tcase \"tool_use\":\n\t\t\treturn { stopReason: \"toolUse\" };\n\t\tcase \"refusal\":\n\t\t\treturn {\n\t\t\t\tstopReason: \"error\",\n\t\t\t\terrorMessage: stopDetails?.explanation || `The model refused to complete the request`,\n\t\t\t};\n\t\tcase \"pause_turn\": // Stop is good enough -> resubmit\n\t\t\treturn { stopReason: \"stop\" };\n\t\tcase \"stop_sequence\":\n\t\t\treturn { stopReason: \"stop\" }; // We don't supply stop sequences, so this should never happen\n\t\tcase \"sensitive\": // Content flagged by safety filters (not yet in SDK types)\n\t\t\treturn { stopReason: \"error\", errorMessage: \"Provider stopped with: sensitive\" };\n\t\tdefault:\n\t\t\t// Handle unknown stop reasons gracefully (API may add new values)\n\t\t\tthrow new Error(`Unhandled stop reason: ${reason}`);\n\t}\n}\n"]}
1
+ {"version":3,"file":"anthropic-messages.js","sourceRoot":"","sources":["../../src/api/anthropic-messages.ts"],"names":[],"mappings":"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","sourcesContent":["import Anthropic from \"@anthropic-ai/sdk\";\nimport type {\n\tBetaTool,\n\tBetaCacheControlEphemeral as CacheControlEphemeral,\n\tBetaContentBlockParam as ContentBlockParam,\n\tMessageCreateParamsStreaming,\n\tBetaMessageParam as MessageParam,\n} from \"@anthropic-ai/sdk/resources/beta/messages/messages.js\";\nimport type { RawMessageStreamEvent, RefusalStopDetails } from \"@anthropic-ai/sdk/resources/messages.js\";\nimport { calculateCost } from \"../models.ts\";\nimport type {\n\tApi,\n\tAssistantMessage,\n\tCacheRetention,\n\tImageContent,\n\tMessage,\n\tModel,\n\tProviderEnv,\n\tProviderHeaders,\n\tSimpleStreamOptions,\n\tStopReason,\n\tStreamFunction,\n\tStreamOptions,\n\tTextContent,\n\tThinkingContent,\n\tTool,\n\tToolCall,\n\tToolResultMessage,\n\tUsage,\n} from \"../types.ts\";\nimport { appendAssistantMessageDiagnostic } from \"../utils/diagnostics.ts\";\nimport { assertSupportedDocumentMimeType } from \"../utils/document-input.ts\";\nimport { AssistantMessageEventStream } from \"../utils/event-stream.ts\";\nimport { headersToRecord } from \"../utils/headers.ts\";\nimport { parseJsonWithRepair, parseStreamingJson } from \"../utils/json-parse.ts\";\nimport { getPiUserAgent } from \"../utils/pi-user-agent.ts\";\nimport { getProviderEnvValue } from \"../utils/provider-env.ts\";\nimport { retryProviderRequest } from \"../utils/provider-retry.ts\";\nimport { sanitizeSurrogates } from \"../utils/sanitize-unicode.ts\";\nimport { createStreamDeadline, withStreamDeadline } from \"../utils/stream-deadline.ts\";\nimport { getSystemMessageText, renderSystemMessageUpdate } from \"../utils/text.ts\";\nimport {\n\tgetCurrentTools,\n\tgetDeclaredTools,\n\tgetInitialSystemMessage,\n\thasToolRedefinitions,\n\tresolveTranscript,\n\ttype TranscriptContext,\n} from \"../utils/transcript.ts\";\n\nimport {\n\tANTHROPIC_STRICT_JSON_SCHEMA_PROFILE,\n\tgetJsonSchemaToolParameters,\n\tresolveJsonSchemaStrictSampling,\n} from \"./constrained-sampling.ts\";\nimport {\n\tbuildCopilotDynamicHeaders,\n\thasCopilotVisionInput,\n\tpreserveCopilotIntegrationHeader,\n} from \"./github-copilot-headers.ts\";\nimport { adjustMaxTokensForThinking, buildBaseOptions, clampMaxTokensToContext } from \"./simple-options.ts\";\nimport { transformMessages } from \"./transform-messages.ts\";\n\n/**\n * Resolve cache retention preference.\n * Defaults to \"short\" and uses PI_CACHE_RETENTION for backward compatibility.\n */\nfunction resolveCacheRetention(cacheRetention?: CacheRetention, env?: ProviderEnv): CacheRetention {\n\tif (cacheRetention) {\n\t\treturn cacheRetention;\n\t}\n\tif (getProviderEnvValue(\"PI_CACHE_RETENTION\", env) === \"long\") {\n\t\treturn \"long\";\n\t}\n\treturn \"short\";\n}\n\nfunction getCacheControl(\n\tmodel: Model<\"anthropic-messages\">,\n\tcacheRetention?: CacheRetention,\n\tenv?: ProviderEnv,\n): { retention: CacheRetention; cacheControl?: CacheControlEphemeral } {\n\tconst retention = resolveCacheRetention(cacheRetention, env);\n\tif (retention === \"none\") {\n\t\treturn { retention };\n\t}\n\tconst ttl = retention === \"long\" && getAnthropicCompat(model).supportsLongCacheRetention ? \"1h\" : undefined;\n\treturn {\n\t\tretention,\n\t\tcacheControl: { type: \"ephemeral\", ...(ttl && { ttl }) },\n\t};\n}\n\n// Stealth mode: Mimic Claude Code's tool naming exactly\n//\n// Anthropic gates newer models on the `claude-cli/<version>` user agent alone and rejects an\n// older one with `claude_code_version_too_old`. `claude-fable-5-1` requires >= 2.1.251 (bisected\n// against the live API: 2.1.250 -> 400, 2.1.251 -> 200) and Claude Opus 5.5 requires >= 2.1.280,\n// the floor the API names in its rejection. This is pinned to the highest published minimum\n// among shipped models rather than the newest release; every model this provider ships answers\n// 200 at 2.1.280. Raise it only when a model rejects this value; a caller can override it for\n// one client through the `headers` option, whose lowercase `user-agent` key is merged last.\nconst claudeCodeVersion = \"2.1.280\";\n\n// Claude Code 2.x tool names (canonical casing)\n// Source: https://cchistory.mariozechner.at/data/prompts-2.1.11.md\n// To update: https://github.com/badlogic/cchistory\nconst claudeCodeTools = [\n\t\"Read\",\n\t\"Write\",\n\t\"Edit\",\n\t\"Bash\",\n\t\"Grep\",\n\t\"Glob\",\n\t\"AskUserQuestion\",\n\t\"EnterPlanMode\",\n\t\"ExitPlanMode\",\n\t\"KillShell\",\n\t\"NotebookEdit\",\n\t\"Skill\",\n\t\"Task\",\n\t\"TaskOutput\",\n\t\"TodoWrite\",\n\t\"WebFetch\",\n\t\"WebSearch\",\n];\n\nconst ccToolLookup = new Map(claudeCodeTools.map((t) => [t.toLowerCase(), t]));\n\n// Convert tool name to CC canonical casing if it matches (case-insensitive)\nconst toClaudeCodeName = (name: string) => ccToolLookup.get(name.toLowerCase()) ?? name;\nconst fromClaudeCodeName = (name: string, tools?: Tool[]) => {\n\tif (tools && tools.length > 0) {\n\t\tconst lowerName = name.toLowerCase();\n\t\tconst matchedTool = tools.find((tool) => tool.name.toLowerCase() === lowerName);\n\t\tif (matchedTool) return matchedTool.name;\n\t}\n\treturn name;\n};\n\n/**\n * Convert tool-result content blocks to Anthropic API format.\n *\n * Tool results carry text and images only. `DocumentContent` appears exclusively in user\n * messages, which `convertMessages` serializes on its own path.\n */\nfunction convertContentBlocks(content: (TextContent | ImageContent)[]):\n\t| string\n\t| Array<\n\t\t\t| { type: \"text\"; text: string }\n\t\t\t| {\n\t\t\t\t\ttype: \"image\";\n\t\t\t\t\tsource: {\n\t\t\t\t\t\ttype: \"base64\";\n\t\t\t\t\t\tmedia_type: \"image/jpeg\" | \"image/png\" | \"image/gif\" | \"image/webp\";\n\t\t\t\t\t\tdata: string;\n\t\t\t\t\t};\n\t\t\t }\n\t > {\n\t// If only text blocks, return as concatenated string for simplicity\n\tconst hasImages = content.some((c) => c.type === \"image\");\n\tif (!hasImages) {\n\t\treturn sanitizeSurrogates(content.map((c) => (c as TextContent).text).join(\"\\n\"));\n\t}\n\n\t// If we have images, convert to content block array\n\tconst blocks = content.map((block) => {\n\t\tif (block.type === \"text\") {\n\t\t\treturn {\n\t\t\t\ttype: \"text\" as const,\n\t\t\t\ttext: sanitizeSurrogates(block.text),\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\ttype: \"image\" as const,\n\t\t\tsource: {\n\t\t\t\ttype: \"base64\" as const,\n\t\t\t\tmedia_type: block.mimeType as \"image/jpeg\" | \"image/png\" | \"image/gif\" | \"image/webp\",\n\t\t\t\tdata: block.data,\n\t\t\t},\n\t\t};\n\t});\n\n\t// If only images (no text), add placeholder text block\n\tconst hasText = blocks.some((b) => b.type === \"text\");\n\tif (!hasText) {\n\t\tblocks.unshift({\n\t\t\ttype: \"text\" as const,\n\t\t\ttext: \"(see attached image)\",\n\t\t});\n\t}\n\n\treturn blocks;\n}\n\nexport type AnthropicEffort = \"low\" | \"medium\" | \"high\" | \"xhigh\" | \"max\";\n\nexport type AnthropicThinkingDisplay = \"summarized\" | \"omitted\";\n\nconst FINE_GRAINED_TOOL_STREAMING_BETA = \"fine-grained-tool-streaming-2025-05-14\";\nconst INTERLEAVED_THINKING_BETA = \"interleaved-thinking-2025-05-14\";\nconst SERVER_SIDE_FALLBACK_BETA = \"server-side-fallback-2026-07-01\";\nconst THINKING_BINDING_CONTROLS_BETA = \"thinking-binding-controls-2026-08-01\";\nconst MID_CONVERSATION_OUTPUT_CONFIG_BETA = \"mid-conversation-output-config-2026-07-01\";\nconst MID_CONVERSATION_TOOL_CHANGES_BETA = \"mid-conversation-tool-changes-2026-07-01\";\nconst FAST_MODE_BETA = \"fast-mode-2026-02-01\";\n\n/**\n * Fast mode bills every token category at twice the standard rate for each supported model, across\n * the full context window, and prompt-caching multipliers stack on top.\n * https://platform.claude.com/docs/en/build-with-claude/fast-mode#pricing\n */\nconst FAST_MODE_PRICE_MULTIPLIER = 2;\n\ntype AnthropicSpeed = \"standard\" | \"fast\";\n\nfunction requestedSpeed(model: Pick<Model<\"anthropic-messages\">, \"fastRoute\">): AnthropicSpeed | undefined {\n\treturn model.fastRoute?.speed;\n}\n\nfunction upstreamModelId(model: Pick<Model<\"anthropic-messages\">, \"fastRoute\" | \"id\">): string {\n\treturn model.fastRoute?.upstreamModelId ?? model.id;\n}\n\nfunction reportedSpeed(usage: unknown): AnthropicSpeed | undefined {\n\tconst speed = (usage as { speed?: unknown } | null | undefined)?.speed;\n\treturn speed === \"fast\" || speed === \"standard\" ? speed : undefined;\n}\n\nfunction applyFastModePricing(usage: Usage): void {\n\tusage.cost.input *= FAST_MODE_PRICE_MULTIPLIER;\n\tusage.cost.output *= FAST_MODE_PRICE_MULTIPLIER;\n\tusage.cost.cacheRead *= FAST_MODE_PRICE_MULTIPLIER;\n\tusage.cost.cacheWrite *= FAST_MODE_PRICE_MULTIPLIER;\n\tusage.cost.total = usage.cost.input + usage.cost.output + usage.cost.cacheRead + usage.cost.cacheWrite;\n}\n\n/**\n * Reject a payload hook that rewrote a field the model's fast route owns.\n *\n * A fast variant is recorded, persisted, and billed under its own `-fast` identity, so a hook that\n * changes the upstream model or drops `speed: \"fast\"` would send a different request under that\n * identity. Refusing loudly surfaces the misconfigured hook instead of silently restoring the route.\n */\nfunction assertPayloadPreservesFastRoute(model: Model<\"anthropic-messages\">, payload: unknown): void {\n\tconst fastRoute = model.fastRoute;\n\tif (fastRoute?.speed === undefined) return;\n\tconst remedy =\n\t\t`A fast model variant must send its route's upstream model and speed, because it is recorded, persisted, ` +\n\t\t`and billed under its own identity. Select the normal model \"${model.provider}/${fastRoute.baseModelId}\" ` +\n\t\t`if the request needs different routing`;\n\tif (typeof payload !== \"object\" || payload === null || Array.isArray(payload)) {\n\t\tthrow new Error(\n\t\t\t`A request hook changed payload for fast model \"${model.provider}/${model.id}\" to a value that cannot carry ` +\n\t\t\t\t`the route's upstream model and speed. ${remedy}, or return an object that preserves those fields.`,\n\t\t);\n\t}\n\tconst record = payload as Record<string, unknown>;\n\tconst conflicts: string[] = [];\n\tif (record.model !== fastRoute.upstreamModelId) {\n\t\tconflicts.push(`model (expected \"${fastRoute.upstreamModelId}\", got ${JSON.stringify(record.model)})`);\n\t}\n\tif (record.speed !== fastRoute.speed) {\n\t\tconflicts.push(`speed (expected ${JSON.stringify(fastRoute.speed)}, got ${JSON.stringify(record.speed)})`);\n\t}\n\tif (conflicts.length === 0) return;\n\tthrow new Error(\n\t\t`A request hook changed ${conflicts.join(\" and \")} for fast model \"${model.provider}/${model.id}\". ` +\n\t\t\t`${remedy}, or stop rewriting those fields.`,\n\t);\n}\n\n/**\n * Stable deferred tool declared whenever native tool changes are in use. Anthropic adds\n * hidden prompt scaffolding as soon as any tool has `defer_loading`; declaring this\n * placeholder from the first request keeps that scaffolding in the cached prefix, so the\n * first real late tool does not invalidate the cache (measured: full miss without it).\n * It is never activated and the model cannot see it.\n */\nconst DEFERRED_TOOL_PLACEHOLDER: BetaTool = {\n\tname: \"__pi_deferred_placeholder__\",\n\tdescription: \"Reserved placeholder. Never available. Never call this.\",\n\tinput_schema: { type: \"object\", properties: {}, required: [] },\n\tdefer_loading: true,\n};\n\nfunction shouldUseServerSideFallbackBeta(model: Model<\"anthropic-messages\">): boolean {\n\treturn (model.compat?.allowedFallbackModels?.length ?? 0) > 0;\n}\n\n/**\n * Claude Fable 5.1 binds each thinking block to the conversation prefix that produced it and,\n * for Anthropic accounts created on or after 2026-08-31, rejects a replay behind a changed\n * `system` prompt, `tools` array, or earlier message with a 400 `invalid_request_error`.\n * Atomic rebuilds those inputs between turns (dynamic system prompt, tool availability changes,\n * model switches), so it opts into `prefix_mismatch_behavior: \"drop_block\"`: the API discards\n * the affected thinking blocks and answers the turn instead of failing the session.\n *\n * This covers live prefix mismatches *between* compaction boundaries. It is not what handles\n * compaction itself: Atomic's client-side `preserve_recent` tail compaction serializes the\n * protected tail into a single boundary message, so no signed thinking block survives a\n * boundary to be replayed behind it. That is Anthropic's documented keep-tail remedy applied\n * structurally rather than a case `drop_block` has to catch.\n * https://platform.claude.com/docs/en/build-with-claude/preserved-thinking\n */\nfunction shouldUseThinkingBindingControlsBeta(model: Model<\"anthropic-messages\">): boolean {\n\treturn model.compat?.enforcesPreservedThinkingBinding === true;\n}\n\n/**\n * Per-turn effort and preserved-thinking binding are independent capabilities.\n * `supportsMidConvoEffort` adds provider effort markers and requires binding controls;\n * Atomic's older `enforcesPreservedThinkingBinding` remains the broader opt-in for\n * transports that need drop recovery without supporting effort-only system messages.\n */\nfunction supportsMidConvoEffort(model: Model<\"anthropic-messages\">): boolean {\n\treturn model.compat?.supportsMidConvoEffort === true;\n}\n\n/** One entry of the `input_transformations` array the block-binding controls beta adds. */\ninterface AnthropicInputTransformation {\n\ttype?: string;\n\tpath?: string;\n\treason?: string;\n}\n\nfunction getInputTransformations(message: unknown): AnthropicInputTransformation[] | undefined {\n\tconst transformations = (message as { input_transformations?: AnthropicInputTransformation[] })\n\t\t?.input_transformations;\n\treturn Array.isArray(transformations) ? transformations : undefined;\n}\n\n/** Record thinking blocks the API dropped from this request without exposing block contents. */\nfunction recordInputTransformations(output: AssistantMessage, transformations: AnthropicInputTransformation[]): void {\n\tif (transformations.length === 0) return;\n\tappendAssistantMessageDiagnostic(output, {\n\t\ttype: \"anthropic_input_transformations\",\n\t\ttimestamp: Date.now(),\n\t\tdetails: {\n\t\t\tdroppedBlockCount: transformations.length,\n\t\t\treasons: [...new Set(transformations.map((entry) => entry.reason).filter((r): r is string => !!r))],\n\t\t\tpaths: transformations.map((entry) => entry.path).filter((p): p is string => !!p),\n\t\t},\n\t});\n}\n\n/** One entry of the per-attempt `usage.iterations` array a server-side fallback response carries. */\ninterface AnthropicUsageIteration {\n\ttype?: string;\n\tmodel?: string;\n\tinput_tokens?: number;\n\toutput_tokens?: number;\n\tcache_read_input_tokens?: number;\n\t/** The aggregate cache-write count. `cache_creation` splits the same tokens by TTL. */\n\tcache_creation_input_tokens?: number;\n\t/** \"Breakdown of cached tokens by TTL\", per `BetaMessageIterationUsage`. */\n\tcache_creation?: { ephemeral_1h_input_tokens?: number; ephemeral_5m_input_tokens?: number } | null;\n}\n\n/**\n * Bill the attempts that ran *before* the one which produced the returned message.\n *\n * \"Every attempt that produced output, including one that declined partway through its response,\n * is billed separately at the rates of the model that ran it. The `usage.iterations` array is the\n * per-attempt record of what you're billed. The top-level `usage` counts describe only the attempt\n * that produced the returned message. Tokens from different models are never summed into one\n * field.\" https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback\n *\n * Two rules follow, and both matter for not double-counting:\n *\n * - Only `type: \"message\"` entries are added. The `fallback_message` entry *is* the serving\n * attempt, and its tokens are already in the top-level usage that `calculateCost` just priced.\n * - Only entries with output are added: \"An attempt that declined before producing any output is\n * not billed: its tokens are reported on its `usage.iterations` entry but not charged.\"\n *\n * Token counts are deliberately left alone — the docs forbid summing across models and `Usage` has\n * no per-attempt shape — so this contributes to `usage.cost` only.\n */\nfunction addEarlierAttemptCosts(\n\toutput: AssistantMessage,\n\tmodel: Model<\"anthropic-messages\">,\n\tservingModel: Model<\"anthropic-messages\">,\n\tevent: unknown,\n): void {\n\tconst iterations = (event as { usage?: { iterations?: AnthropicUsageIteration[] } })?.usage?.iterations;\n\tif (!Array.isArray(iterations) || iterations.length === 0) return;\n\n\tfor (const iteration of iterations) {\n\t\tif (iteration.type !== \"message\") continue;\n\t\tif (!iteration.output_tokens) continue;\n\n\t\t// Price at the rates of the model that ran the attempt, which is not the serving model.\n\t\tconst attemptCost =\n\t\t\titeration.model === upstreamModelId(model)\n\t\t\t\t? model.cost\n\t\t\t\t: iteration.model === servingModel.id\n\t\t\t\t\t? servingModel.cost\n\t\t\t\t\t: model.compat?.allowedFallbackModels?.find(\n\t\t\t\t\t\t\t(fallback) => fallback.provider === model.provider && fallback.model === iteration.model,\n\t\t\t\t\t\t)?.cost;\n\t\tif (!attemptCost) continue;\n\n\t\tconst attemptUsage: Usage = {\n\t\t\tinput: iteration.input_tokens ?? 0,\n\t\t\toutput: iteration.output_tokens,\n\t\t\tcacheRead: iteration.cache_read_input_tokens ?? 0,\n\t\t\t// `cacheWrite` stays the aggregate: `calculateCost` derives the 5-minute share by\n\t\t\t// subtracting `cacheWrite1h` from it, so setting this to the 5-minute count instead\n\t\t\t// would under-charge and adding the two together would double-charge. Without the 1h\n\t\t\t// split, an hour-long write bills at the 5-minute rate rather than 2x base input.\n\t\t\tcacheWrite: iteration.cache_creation_input_tokens ?? 0,\n\t\t\tcacheWrite1h: iteration.cache_creation?.ephemeral_1h_input_tokens ?? 0,\n\t\t\ttotalTokens: 0,\n\t\t\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n\t\t};\n\t\tcalculateCost({ ...model, id: iteration.model ?? model.id, cost: attemptCost }, attemptUsage);\n\n\t\toutput.usage.cost.input += attemptUsage.cost.input;\n\t\toutput.usage.cost.output += attemptUsage.cost.output;\n\t\toutput.usage.cost.cacheRead += attemptUsage.cost.cacheRead;\n\t\toutput.usage.cost.cacheWrite += attemptUsage.cost.cacheWrite;\n\t\toutput.usage.cost.total += attemptUsage.cost.total;\n\t}\n}\n\nfunction getAnthropicCompat(model: Model<\"anthropic-messages\">) {\n\tconst isOpenRouter = model.provider === \"openrouter\" || model.baseUrl.includes(\"openrouter.ai\");\n\treturn {\n\t\tsupportsEagerToolInputStreaming: model.compat?.supportsEagerToolInputStreaming ?? true,\n\t\tsupportsLongCacheRetention: model.compat?.supportsLongCacheRetention ?? true,\n\t\tsendSessionAffinityHeaders: model.compat?.sendSessionAffinityHeaders ?? isOpenRouter,\n\t\tsessionAffinityFormat: model.compat?.sessionAffinityFormat ?? (isOpenRouter ? \"openrouter\" : undefined),\n\t\tsupportsCacheControlOnTools: model.compat?.supportsCacheControlOnTools ?? true,\n\t\tsupportsTemperature: model.compat?.supportsTemperature ?? true,\n\t\tallowEmptySignature: model.compat?.allowEmptySignature ?? false,\n\t\tsupportsStrictTools: model.compat?.supportsStrictTools ?? false,\n\t\tsupportsMidConvoSystemMessages: model.compat?.supportsMidConvoSystemMessages ?? false,\n\t\tsupportsMidConvoToolChanges: model.compat?.supportsMidConvoToolChanges ?? false,\n\t};\n}\n\nexport interface AnthropicOptions extends StreamOptions {\n\t/**\n\t * Enable extended thinking.\n\t * For adaptive thinking models: the model decides when/how much to think.\n\t * For older models: uses budget-based thinking with thinkingBudgetTokens.\n\t * Default: undefined (thinking is omitted unless `streamSimple()` maps\n\t * a simple reasoning level to this option, or callers set it explicitly).\n\t */\n\tthinkingEnabled?: boolean;\n\t/**\n\t * Token budget for extended thinking (older models only).\n\t * Ignored for adaptive thinking models.\n\t * Default: 1024 when `thinkingEnabled` is true and no budget is provided.\n\t */\n\tthinkingBudgetTokens?: number;\n\t/**\n\t * Effort level for adaptive thinking models.\n\t * Controls how much thinking Claude allocates:\n\t * - \"max\": Always thinks with no constraints (Opus 4.6 only)\n\t * - \"xhigh\": Highest reasoning level (Opus 4.7+, Fable 5)\n\t * - \"high\": Always thinks, deep reasoning\n\t * - \"medium\": Moderate thinking, may skip for simple queries\n\t * - \"low\": Minimal thinking, skips for simple tasks\n\t * Ignored for older models.\n\t * Default: omitted unless `streamSimple()` maps a simple reasoning\n\t * level to this option.\n\t */\n\teffort?: AnthropicEffort;\n\t/**\n\t * Controls how thinking content is returned in API responses.\n\t * - \"summarized\": Thinking blocks contain summarized thinking text.\n\t * - \"omitted\": Thinking blocks return an empty thinking field; the encrypted\n\t * signature still travels back for multi-turn continuity. Use for faster\n\t * time-to-first-text-token when your UI does not surface thinking.\n\t *\n\t * Note: Anthropic's API default for Claude Opus 4.7 and Claude Mythos Preview\n\t * is \"omitted\". We default to \"summarized\" here to keep behavior consistent\n\t * with older Claude 4 models. Set this explicitly to \"omitted\" to opt in.\n\t * Default: \"summarized\" when thinking is enabled.\n\t */\n\tthinkingDisplay?: AnthropicThinkingDisplay;\n\t/**\n\t * Whether to request the interleaved thinking beta header for non-adaptive\n\t * thinking models. Adaptive thinking models have interleaved thinking built in,\n\t * so the header is skipped for them regardless of this setting.\n\t * Default: true.\n\t */\n\tinterleavedThinking?: boolean;\n\t/**\n\t * Anthropic tool choice behavior. String values map to Anthropic's built-in\n\t * choices; `{ type: \"tool\", name }` forces a specific tool.\n\t * Default: omitted (Anthropic default behavior, currently equivalent to auto).\n\t */\n\ttoolChoice?: \"auto\" | \"any\" | \"none\" | { type: \"tool\"; name: string };\n\t/**\n\t * Pre-built Anthropic client instance. When provided, skips internal client\n\t * construction entirely. Use this to inject alternative SDK clients such as\n\t * `AnthropicVertex` that shares the same messaging API.\n\t */\n\tclient?: Anthropic;\n}\n\nfunction mergeHeaders(...headerSources: (ProviderHeaders | undefined)[]): ProviderHeaders {\n\tconst merged: ProviderHeaders = {};\n\tfor (const headers of headerSources) {\n\t\tif (headers) {\n\t\t\tObject.assign(merged, headers);\n\t\t}\n\t}\n\treturn merged;\n}\n\nfunction mergeClientHeaders(...headerSources: (ProviderHeaders | undefined)[]): ProviderHeaders {\n\treturn mergeHeaders({ \"User-Agent\": getPiUserAgent() }, ...headerSources);\n}\n\nfunction hasHeader(headers: ProviderHeaders | undefined, name: string): boolean {\n\tif (!headers) return false;\n\tconst expected = name.toLowerCase();\n\tfor (const [key, value] of Object.entries(headers)) {\n\t\tif (key.toLowerCase() === expected && value !== null && value.trim().length > 0) return true;\n\t}\n\treturn false;\n}\n\nfunction assertRequestAuth(provider: string, apiKey: string | undefined, headers: ProviderHeaders | undefined): void {\n\tif (apiKey) return;\n\tif (\n\t\thasHeader(headers, \"authorization\") ||\n\t\thasHeader(headers, \"x-api-key\") ||\n\t\thasHeader(headers, \"cf-aig-authorization\")\n\t) {\n\t\treturn;\n\t}\n\tthrow new Error(`No API key for provider: ${provider}`);\n}\n\ninterface ServerSentEvent {\n\tevent: string | null;\n\tdata: string;\n\traw: string[];\n}\n\ninterface SseDecoderState {\n\tevent: string | null;\n\tdata: string[];\n\traw: string[];\n}\n\nconst ANTHROPIC_MESSAGE_EVENTS: ReadonlySet<string> = new Set([\n\t\"message_start\",\n\t\"message_delta\",\n\t\"message_stop\",\n\t\"content_block_start\",\n\t\"content_block_delta\",\n\t\"content_block_stop\",\n]);\n\nfunction flushSseEvent(state: SseDecoderState): ServerSentEvent | null {\n\tif (!state.event && state.data.length === 0) {\n\t\treturn null;\n\t}\n\n\tconst event: ServerSentEvent = {\n\t\tevent: state.event,\n\t\tdata: state.data.join(\"\\n\"),\n\t\traw: [...state.raw],\n\t};\n\tstate.event = null;\n\tstate.data = [];\n\tstate.raw = [];\n\treturn event;\n}\n\nfunction decodeSseLine(line: string, state: SseDecoderState): ServerSentEvent | null {\n\tif (line === \"\") {\n\t\treturn flushSseEvent(state);\n\t}\n\n\tstate.raw.push(line);\n\tif (line.startsWith(\":\")) {\n\t\treturn null;\n\t}\n\n\tconst delimiterIndex = line.indexOf(\":\");\n\tconst fieldName = delimiterIndex === -1 ? line : line.slice(0, delimiterIndex);\n\tlet value = delimiterIndex === -1 ? \"\" : line.slice(delimiterIndex + 1);\n\tif (value.startsWith(\" \")) {\n\t\tvalue = value.slice(1);\n\t}\n\n\tif (fieldName === \"event\") {\n\t\tstate.event = value;\n\t} else if (fieldName === \"data\") {\n\t\tstate.data.push(value);\n\t}\n\n\treturn null;\n}\n\nfunction nextLineBreakIndex(text: string): number {\n\tconst carriageReturnIndex = text.indexOf(\"\\r\");\n\tconst newlineIndex = text.indexOf(\"\\n\");\n\tif (carriageReturnIndex === -1) {\n\t\treturn newlineIndex;\n\t}\n\tif (newlineIndex === -1) {\n\t\treturn carriageReturnIndex;\n\t}\n\treturn Math.min(carriageReturnIndex, newlineIndex);\n}\n\nfunction consumeLine(text: string): { line: string; rest: string } | null {\n\tconst lineBreakIndex = nextLineBreakIndex(text);\n\tif (lineBreakIndex === -1) {\n\t\treturn null;\n\t}\n\n\tlet nextIndex = lineBreakIndex + 1;\n\tif (text[lineBreakIndex] === \"\\r\" && text[nextIndex] === \"\\n\") {\n\t\tnextIndex += 1;\n\t}\n\n\treturn {\n\t\tline: text.slice(0, lineBreakIndex),\n\t\trest: text.slice(nextIndex),\n\t};\n}\n\nasync function* iterateSseMessages(\n\tbody: ReadableStream<Uint8Array>,\n\tsignal?: AbortSignal,\n): AsyncGenerator<ServerSentEvent> {\n\tconst reader = body.getReader();\n\tconst decoder = new TextDecoder();\n\tconst state: SseDecoderState = { event: null, data: [], raw: [] };\n\tlet buffer = \"\";\n\tconst onAbort = () => {\n\t\tvoid reader.cancel().catch(() => {});\n\t};\n\tsignal?.addEventListener(\"abort\", onAbort, { once: true });\n\n\ttry {\n\t\twhile (true) {\n\t\t\tif (signal?.aborted) {\n\t\t\t\tthrow new Error(\"Request was aborted\");\n\t\t\t}\n\n\t\t\tconst { value, done } = await reader.read();\n\t\t\tif (done) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tbuffer += decoder.decode(value, { stream: true });\n\t\t\tlet consumed = consumeLine(buffer);\n\t\t\twhile (consumed) {\n\t\t\t\tbuffer = consumed.rest;\n\t\t\t\tconst event = decodeSseLine(consumed.line, state);\n\t\t\t\tif (event) {\n\t\t\t\t\tyield event;\n\t\t\t\t}\n\t\t\t\tconsumed = consumeLine(buffer);\n\t\t\t}\n\t\t}\n\n\t\tbuffer += decoder.decode();\n\t\tlet consumed = consumeLine(buffer);\n\t\twhile (consumed) {\n\t\t\tbuffer = consumed.rest;\n\t\t\tconst event = decodeSseLine(consumed.line, state);\n\t\t\tif (event) {\n\t\t\t\tyield event;\n\t\t\t}\n\t\t\tconsumed = consumeLine(buffer);\n\t\t}\n\n\t\tif (buffer.length > 0) {\n\t\t\tconst event = decodeSseLine(buffer, state);\n\t\t\tif (event) {\n\t\t\t\tyield event;\n\t\t\t}\n\t\t}\n\n\t\tconst trailingEvent = flushSseEvent(state);\n\t\tif (trailingEvent) {\n\t\t\tyield trailingEvent;\n\t\t}\n\t} finally {\n\t\tsignal?.removeEventListener(\"abort\", onAbort);\n\t\ttry {\n\t\t\tawait reader.cancel();\n\t\t} catch {}\n\t\treader.releaseLock();\n\t}\n}\n\nasync function* iterateAnthropicEvents(\n\tresponse: Response,\n\tsignal?: AbortSignal,\n): AsyncGenerator<RawMessageStreamEvent> {\n\tif (!response.body) {\n\t\tthrow new Error(\"Attempted to iterate over an Anthropic response with no body\");\n\t}\n\n\tlet sawMessageStart = false;\n\tlet sawMessageEnd = false;\n\n\tfor await (const sse of iterateSseMessages(response.body, signal)) {\n\t\tif (sse.event === \"error\") {\n\t\t\tthrow new Error(sse.data);\n\t\t}\n\n\t\tif (!ANTHROPIC_MESSAGE_EVENTS.has(sse.event ?? \"\")) {\n\t\t\tcontinue;\n\t\t}\n\n\t\ttry {\n\t\t\tconst event = parseJsonWithRepair<RawMessageStreamEvent>(sse.data);\n\t\t\tif (event.type === \"message_start\") {\n\t\t\t\tsawMessageStart = true;\n\t\t\t} else if (event.type === \"message_stop\") {\n\t\t\t\tsawMessageEnd = true;\n\t\t\t}\n\t\t\tyield event;\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tthrow new Error(\n\t\t\t\t`Could not parse Anthropic SSE event ${sse.event}: ${message}; data=${sse.data}; raw=${sse.raw.join(\"\\\\n\")}`,\n\t\t\t);\n\t\t}\n\t}\n\n\tif (sawMessageStart && !sawMessageEnd) {\n\t\tthrow new Error(\"Anthropic stream ended before message_stop\");\n\t}\n}\n\nexport const stream: StreamFunction<\"anthropic-messages\", AnthropicOptions> = (\n\tmodel: Model<\"anthropic-messages\">,\n\tcontext: TranscriptContext,\n\toptions?: AnthropicOptions,\n): AssistantMessageEventStream => {\n\tconst stream = new AssistantMessageEventStream();\n\tconst normalizedContext = resolveTranscript(context, getAnthropicCompat(model).supportsMidConvoSystemMessages);\n\tconst currentTools = getCurrentTools(normalizedContext.messages);\n\n\t(async () => {\n\t\tconst providerThinkingLevel = supportsMidConvoEffort(model) ? (options?.effort ?? \"high\") : undefined;\n\t\tconst output: AssistantMessage = {\n\t\t\trole: \"assistant\",\n\t\t\tcontent: [],\n\t\t\tapi: model.api as Api,\n\t\t\tprovider: model.provider,\n\t\t\tmodel: model.id,\n\t\t\t...(providerThinkingLevel === undefined ? {} : { providerThinkingLevel }),\n\t\t\tusage: {\n\t\t\t\tinput: 0,\n\t\t\t\toutput: 0,\n\t\t\t\tcacheRead: 0,\n\t\t\t\tcacheWrite: 0,\n\t\t\t\ttotalTokens: 0,\n\t\t\t\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n\t\t\t},\n\t\t\tstopReason: \"pending\",\n\t\t\ttimestamp: Date.now(),\n\t\t};\n\n\t\tconst streamDeadline = createStreamDeadline(options?.streamDeadlineMs, options?.signal);\n\n\t\tlet inputTransformations: AnthropicInputTransformation[] | undefined;\n\n\t\ttry {\n\t\t\tlet client: Anthropic;\n\t\t\tlet isOAuth: boolean;\n\t\t\tlet usageModel = model;\n\t\t\tlet servedSpeed = requestedSpeed(model);\n\n\t\t\tif (options?.client) {\n\t\t\t\tclient = options.client;\n\t\t\t\tisOAuth = false;\n\t\t\t} else {\n\t\t\t\tconst apiKey = options?.apiKey;\n\t\t\t\tassertRequestAuth(model.provider, apiKey, options?.headers);\n\n\t\t\t\tlet copilotDynamicHeaders: Record<string, string> | undefined;\n\t\t\t\tif (model.provider === \"github-copilot\") {\n\t\t\t\t\tconst hasImages = hasCopilotVisionInput(normalizedContext.messages);\n\t\t\t\t\tcopilotDynamicHeaders = preserveCopilotIntegrationHeader(\n\t\t\t\t\t\tmodel.headers,\n\t\t\t\t\t\tbuildCopilotDynamicHeaders({\n\t\t\t\t\t\t\tmessages: normalizedContext.messages,\n\t\t\t\t\t\t\thasImages,\n\t\t\t\t\t\t\tapiKey,\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst cacheRetention = resolveCacheRetention(options?.cacheRetention, options?.env);\n\t\t\t\tconst cacheSessionId = cacheRetention === \"none\" ? undefined : options?.sessionId;\n\n\t\t\t\tconst created = createClient(\n\t\t\t\t\tmodel,\n\t\t\t\t\tapiKey,\n\t\t\t\t\tmodel.reasoning && options?.thinkingEnabled === true && (options.interleavedThinking ?? true),\n\t\t\t\t\tshouldUseFineGrainedToolStreamingBeta(model, context),\n\t\t\t\t\tshouldUseServerSideFallbackBeta(model),\n\t\t\t\t\toptions?.headers,\n\t\t\t\t\toptions?.fetch,\n\t\t\t\t\tcopilotDynamicHeaders,\n\t\t\t\t\tcacheSessionId,\n\t\t\t\t\tgetAnthropicCompat(model).supportsMidConvoToolChanges &&\n\t\t\t\t\t\tgetAnthropicCompat(model).supportsMidConvoSystemMessages &&\n\t\t\t\t\t\t(getInitialSystemMessage(normalizedContext.messages)?.toolsAdded?.length ?? 0) > 0 &&\n\t\t\t\t\t\t!hasToolRedefinitions(normalizedContext.messages),\n\t\t\t\t);\n\t\t\t\tclient = created.client;\n\t\t\t\tisOAuth = created.isOAuthToken;\n\t\t\t}\n\t\t\tlet params = buildParams(model, normalizedContext, isOAuth, options);\n\t\t\tconst nextParams = await options?.onPayload?.(params, model);\n\t\t\tif (nextParams !== undefined) {\n\t\t\t\tparams = nextParams as MessageCreateParamsStreaming;\n\t\t\t}\n\t\t\tassertPayloadPreservesFastRoute(model, params);\n\t\t\tconst requestOptions = {\n\t\t\t\t...(streamDeadline.signal ? { signal: streamDeadline.signal } : {}),\n\t\t\t\t...(options?.timeoutMs !== undefined ? { timeout: options.timeoutMs } : {}),\n\t\t\t\tmaxRetries: 0,\n\t\t\t};\n\t\t\tconst response = await retryProviderRequest(\n\t\t\t\t() => client.beta.messages.create({ ...params, stream: true }, requestOptions).asResponse(),\n\t\t\t\t{\n\t\t\t\t\tmaxRetries: options?.maxRetries,\n\t\t\t\t\tmaxRetryDelayMs: options?.maxRetryDelayMs,\n\t\t\t\t\tsignal: streamDeadline.signal,\n\t\t\t\t},\n\t\t\t);\n\t\t\tawait options?.onResponse?.({ status: response.status, headers: headersToRecord(response.headers) }, model);\n\t\t\tstream.push({ type: \"start\", partial: output });\n\n\t\t\ttype Block = (ThinkingContent | TextContent | (ToolCall & { partialJson: string })) & { index: number };\n\t\t\tconst blocks = output.content as Block[];\n\n\t\t\tfor await (const event of withStreamDeadline(\n\t\t\t\titerateAnthropicEvents(response, streamDeadline.signal),\n\t\t\t\tstreamDeadline.deadlineMs,\n\t\t\t\tstreamDeadline.abort,\n\t\t\t)) {\n\t\t\t\tawait options?.onProviderStreamEvent?.(event, model);\n\t\t\t\tif (event.type === \"message_start\") {\n\t\t\t\t\toutput.responseId = event.message.id;\n\t\t\t\t\tconst responseModel = event.message.model;\n\t\t\t\t\tif (responseModel !== upstreamModelId(model)) output.responseModel = responseModel;\n\t\t\t\t\tconst fallbackCost =\n\t\t\t\t\t\tresponseModel === upstreamModelId(model)\n\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t: model.compat?.allowedFallbackModels?.find(\n\t\t\t\t\t\t\t\t\t(fallback) => fallback.provider === model.provider && fallback.model === responseModel,\n\t\t\t\t\t\t\t\t)?.cost;\n\t\t\t\t\tusageModel = fallbackCost ? { ...model, id: responseModel, cost: fallbackCost } : model;\n\t\t\t\t\t// Capture initial token usage from message_start event\n\t\t\t\t\t// This ensures we have input token counts even if the stream is aborted early\n\t\t\t\t\toutput.usage.input = event.message.usage.input_tokens || 0;\n\t\t\t\t\toutput.usage.output = event.message.usage.output_tokens || 0;\n\t\t\t\t\toutput.usage.cacheRead = event.message.usage.cache_read_input_tokens || 0;\n\t\t\t\t\toutput.usage.cacheWrite = event.message.usage.cache_creation_input_tokens || 0;\n\t\t\t\t\toutput.usage.cacheWrite1h = event.message.usage.cache_creation?.ephemeral_1h_input_tokens || 0;\n\t\t\t\t\t// Anthropic doesn't provide total_tokens, compute from components\n\t\t\t\t\toutput.usage.totalTokens =\n\t\t\t\t\t\toutput.usage.input + output.usage.output + output.usage.cacheRead + output.usage.cacheWrite;\n\t\t\t\t\tcalculateCost(usageModel, output.usage);\n\t\t\t\t\tservedSpeed = reportedSpeed(event.message.usage) ?? servedSpeed;\n\t\t\t\t\tif (servedSpeed === \"fast\") applyFastModePricing(output.usage);\n\t\t\t\t\tinputTransformations = getInputTransformations(event.message) ?? inputTransformations;\n\t\t\t\t} else if (event.type === \"content_block_start\") {\n\t\t\t\t\tif (event.content_block.type === \"text\") {\n\t\t\t\t\t\tconst block: Block = {\n\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\ttext: event.content_block.text ?? \"\",\n\t\t\t\t\t\t\tindex: event.index,\n\t\t\t\t\t\t};\n\t\t\t\t\t\toutput.content.push(block);\n\t\t\t\t\t\tstream.push({ type: \"text_start\", contentIndex: output.content.length - 1, partial: output });\n\t\t\t\t\t} else if (event.content_block.type === \"thinking\") {\n\t\t\t\t\t\tconst block: Block = {\n\t\t\t\t\t\t\ttype: \"thinking\",\n\t\t\t\t\t\t\tthinking: event.content_block.thinking ?? \"\",\n\t\t\t\t\t\t\tthinkingSignature: event.content_block.signature ?? \"\",\n\t\t\t\t\t\t\tindex: event.index,\n\t\t\t\t\t\t};\n\t\t\t\t\t\toutput.content.push(block);\n\t\t\t\t\t\tstream.push({ type: \"thinking_start\", contentIndex: output.content.length - 1, partial: output });\n\t\t\t\t\t} else if (event.content_block.type === \"redacted_thinking\") {\n\t\t\t\t\t\tconst block: Block = {\n\t\t\t\t\t\t\ttype: \"thinking\",\n\t\t\t\t\t\t\tthinking: \"[Reasoning redacted]\",\n\t\t\t\t\t\t\tthinkingSignature: event.content_block.data,\n\t\t\t\t\t\t\tredacted: true,\n\t\t\t\t\t\t\tindex: event.index,\n\t\t\t\t\t\t};\n\t\t\t\t\t\toutput.content.push(block);\n\t\t\t\t\t\tstream.push({ type: \"thinking_start\", contentIndex: output.content.length - 1, partial: output });\n\t\t\t\t\t} else if (event.content_block.type === \"tool_use\") {\n\t\t\t\t\t\tconst block: Block = {\n\t\t\t\t\t\t\ttype: \"toolCall\",\n\t\t\t\t\t\t\tid: event.content_block.id,\n\t\t\t\t\t\t\tname: isOAuth\n\t\t\t\t\t\t\t\t? fromClaudeCodeName(event.content_block.name, currentTools)\n\t\t\t\t\t\t\t\t: event.content_block.name,\n\t\t\t\t\t\t\targuments: (event.content_block.input as Record<string, any>) ?? {},\n\t\t\t\t\t\t\tpartialJson: \"\",\n\t\t\t\t\t\t\tindex: event.index,\n\t\t\t\t\t\t};\n\t\t\t\t\t\toutput.content.push(block);\n\t\t\t\t\t\tstream.push({ type: \"toolcall_start\", contentIndex: output.content.length - 1, partial: output });\n\t\t\t\t\t} else if ((event.content_block as { type?: string }).type === \"fallback\") {\n\t\t\t\t\t\t// Server-side fallback boundary: \"the `fallback` block (an ordinary\n\t\t\t\t\t\t// `content_block_start` and `content_block_stop` pair with no deltas) marks the\n\t\t\t\t\t\t// boundary\", and clients must \"Keep it exactly where it appeared. The API uses\n\t\t\t\t\t\t// its position to validate the thinking blocks around it\".\n\t\t\t\t\t\t// https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback\n\t\t\t\t\t\t//\n\t\t\t\t\t\t// The SDK types lag this block, so read it through a narrow cast.\n\t\t\t\t\t\tconst fallbackBlock = event.content_block as unknown as {\n\t\t\t\t\t\t\tfrom?: { model?: string };\n\t\t\t\t\t\t\tto?: { model?: string };\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst toModel = fallbackBlock.to?.model;\n\t\t\t\t\t\toutput.content.push({\n\t\t\t\t\t\t\ttype: \"fallback\",\n\t\t\t\t\t\t\tfromModel: fallbackBlock.from?.model ?? output.model,\n\t\t\t\t\t\t\ttoModel: toModel ?? output.model,\n\t\t\t\t\t\t});\n\t\t\t\t\t\t// `message_start` named the requested model, so on a mid-output fallback the\n\t\t\t\t\t\t// serving model is only knowable here. Re-derive pricing the same way the\n\t\t\t\t\t\t// `message_start` branch does, so the returned message is costed at the rates\n\t\t\t\t\t\t// of the model that actually produced it.\n\t\t\t\t\t\tif (toModel && toModel !== output.model) {\n\t\t\t\t\t\t\toutput.model = toModel;\n\t\t\t\t\t\t\tconst fallbackCost = model.compat?.allowedFallbackModels?.find(\n\t\t\t\t\t\t\t\t(fallback) => fallback.provider === model.provider && fallback.model === toModel,\n\t\t\t\t\t\t\t)?.cost;\n\t\t\t\t\t\t\tusageModel = fallbackCost ? { ...model, id: toModel, cost: fallbackCost } : model;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (event.type === \"content_block_delta\") {\n\t\t\t\t\tif (event.delta.type === \"text_delta\") {\n\t\t\t\t\t\tconst index = blocks.findIndex((b) => b.index === event.index);\n\t\t\t\t\t\tconst block = blocks[index];\n\t\t\t\t\t\tif (block && block.type === \"text\") {\n\t\t\t\t\t\t\tblock.text += event.delta.text;\n\t\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\t\ttype: \"text_delta\",\n\t\t\t\t\t\t\t\tcontentIndex: index,\n\t\t\t\t\t\t\t\tdelta: event.delta.text,\n\t\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (event.delta.type === \"thinking_delta\") {\n\t\t\t\t\t\tconst index = blocks.findIndex((b) => b.index === event.index);\n\t\t\t\t\t\tconst block = blocks[index];\n\t\t\t\t\t\tif (block && block.type === \"thinking\") {\n\t\t\t\t\t\t\tblock.thinking += event.delta.thinking;\n\t\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\t\ttype: \"thinking_delta\",\n\t\t\t\t\t\t\t\tcontentIndex: index,\n\t\t\t\t\t\t\t\tdelta: event.delta.thinking,\n\t\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (event.delta.type === \"input_json_delta\") {\n\t\t\t\t\t\tconst index = blocks.findIndex((b) => b.index === event.index);\n\t\t\t\t\t\tconst block = blocks[index];\n\t\t\t\t\t\tif (block && block.type === \"toolCall\") {\n\t\t\t\t\t\t\tblock.partialJson += event.delta.partial_json;\n\t\t\t\t\t\t\tblock.arguments = parseStreamingJson(block.partialJson);\n\t\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\t\ttype: \"toolcall_delta\",\n\t\t\t\t\t\t\t\tcontentIndex: index,\n\t\t\t\t\t\t\t\tdelta: event.delta.partial_json,\n\t\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (event.delta.type === \"signature_delta\") {\n\t\t\t\t\t\tconst index = blocks.findIndex((b) => b.index === event.index);\n\t\t\t\t\t\tconst block = blocks[index];\n\t\t\t\t\t\tif (block && block.type === \"thinking\") {\n\t\t\t\t\t\t\tblock.thinkingSignature = block.thinkingSignature || \"\";\n\t\t\t\t\t\t\tblock.thinkingSignature += event.delta.signature;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (event.type === \"content_block_stop\") {\n\t\t\t\t\tconst index = blocks.findIndex((b) => b.index === event.index);\n\t\t\t\t\tconst block = blocks[index];\n\t\t\t\t\tif (block) {\n\t\t\t\t\t\tdelete (block as any).index;\n\t\t\t\t\t\tif (block.type === \"text\") {\n\t\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\t\ttype: \"text_end\",\n\t\t\t\t\t\t\t\tcontentIndex: index,\n\t\t\t\t\t\t\t\tcontent: block.text,\n\t\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else if (block.type === \"thinking\") {\n\t\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\t\ttype: \"thinking_end\",\n\t\t\t\t\t\t\t\tcontentIndex: index,\n\t\t\t\t\t\t\t\tcontent: block.thinking,\n\t\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else if (block.type === \"toolCall\") {\n\t\t\t\t\t\t\tblock.arguments = parseStreamingJson(block.partialJson);\n\t\t\t\t\t\t\t// Finalize in-place and strip the scratch buffer so replay only\n\t\t\t\t\t\t\t// carries parsed arguments.\n\t\t\t\t\t\t\tdelete (block as { partialJson?: string }).partialJson;\n\t\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\t\ttype: \"toolcall_end\",\n\t\t\t\t\t\t\t\tcontentIndex: index,\n\t\t\t\t\t\t\t\ttoolCall: block,\n\t\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (event.type === \"message_delta\") {\n\t\t\t\t\tif (event.delta.stop_reason) {\n\t\t\t\t\t\toutput.rawStopReason = event.delta.stop_reason;\n\t\t\t\t\t\tconst stopReasonResult = mapStopReason(event.delta.stop_reason, event.delta.stop_details);\n\t\t\t\t\t\toutput.stopReason = stopReasonResult.stopReason;\n\t\t\t\t\t\tif (stopReasonResult.errorMessage) {\n\t\t\t\t\t\t\toutput.errorMessage = stopReasonResult.errorMessage;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// Only update usage fields if present (not null).\n\t\t\t\t\t// Preserves input_tokens from message_start when proxies omit it in message_delta.\n\t\t\t\t\tif (event.usage) {\n\t\t\t\t\t\tif (event.usage.input_tokens != null) {\n\t\t\t\t\t\t\toutput.usage.input = event.usage.input_tokens;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (event.usage.output_tokens != null) {\n\t\t\t\t\t\t\toutput.usage.output = event.usage.output_tokens;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (event.usage.cache_read_input_tokens != null) {\n\t\t\t\t\t\t\toutput.usage.cacheRead = event.usage.cache_read_input_tokens;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (event.usage.cache_creation_input_tokens != null) {\n\t\t\t\t\t\t\toutput.usage.cacheWrite = event.usage.cache_creation_input_tokens;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Anthropic reports reasoning tokens in `output_tokens_details.thinking_tokens` on the\n\t\t\t\t\t\t// final message_delta usage (a subset of output_tokens). SDK 0.91.1 omits the field from\n\t\t\t\t\t\t// its Usage type, so read it through a narrow cast. Verified against the live API.\n\t\t\t\t\t\tconst thinkingTokens = (event.usage as { output_tokens_details?: { thinking_tokens?: number } })\n\t\t\t\t\t\t\t.output_tokens_details?.thinking_tokens;\n\t\t\t\t\t\t// Vercel AI Gateway includes the TTL breakdown in deltas, though the SDK only types it on message_start.\n\t\t\t\t\t\tconst cacheCreation = (\n\t\t\t\t\t\t\tevent.usage as typeof event.usage & { cache_creation?: { ephemeral_1h_input_tokens?: number } }\n\t\t\t\t\t\t).cache_creation;\n\t\t\t\t\t\tif (cacheCreation?.ephemeral_1h_input_tokens != null) {\n\t\t\t\t\t\t\toutput.usage.cacheWrite1h = cacheCreation.ephemeral_1h_input_tokens;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (thinkingTokens != null) {\n\t\t\t\t\t\t\toutput.usage.reasoning = thinkingTokens;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// Anthropic doesn't provide total_tokens, compute from components\n\t\t\t\t\toutput.usage.totalTokens =\n\t\t\t\t\t\toutput.usage.input + output.usage.output + output.usage.cacheRead + output.usage.cacheWrite;\n\t\t\t\t\tcalculateCost(usageModel, output.usage);\n\t\t\t\t\tservedSpeed = reportedSpeed(event.usage) ?? servedSpeed;\n\t\t\t\t\tif (servedSpeed === \"fast\") applyFastModePricing(output.usage);\n\t\t\t\t\t// A non-empty final fallback report supersedes the request-start report with\n\t\t\t\t\t// the serving model's transformations. An empty report must not erase drops\n\t\t\t\t\t// already reported at message_start.\n\t\t\t\t\tconst servingTransformations = getInputTransformations(event);\n\t\t\t\t\tif (servingTransformations && servingTransformations.length > 0) {\n\t\t\t\t\t\tinputTransformations = servingTransformations;\n\t\t\t\t\t}\n\t\t\t\t\taddEarlierAttemptCosts(output, model, usageModel, event);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (inputTransformations) recordInputTransformations(output, inputTransformations);\n\t\t\tif (options?.signal?.aborted) {\n\t\t\t\tthrow new Error(\"Request was aborted\");\n\t\t\t}\n\n\t\t\tif (output.stopReason === \"pending\") {\n\t\t\t\tthrow new Error(\"Anthropic stream ended without a stop reason\");\n\t\t\t}\n\t\t\tif (output.stopReason === \"aborted\" || output.stopReason === \"error\") {\n\t\t\t\tthrow new Error(output.errorMessage || \"An unknown error occurred\");\n\t\t\t}\n\n\t\t\tstream.push({ type: \"done\", reason: output.stopReason, message: output });\n\t\t\tstream.end();\n\t\t} catch (error) {\n\t\t\tif (\n\t\t\t\tinputTransformations &&\n\t\t\t\t!output.diagnostics?.some((diagnostic) => diagnostic.type === \"anthropic_input_transformations\")\n\t\t\t) {\n\t\t\t\trecordInputTransformations(output, inputTransformations);\n\t\t\t}\n\t\t\tfor (const block of output.content) {\n\t\t\t\tdelete (block as { index?: number }).index;\n\t\t\t\t// partialJson is only a streaming scratch buffer; never persist it.\n\t\t\t\tdelete (block as { partialJson?: string }).partialJson;\n\t\t\t}\n\t\t\toutput.stopReason = options?.signal?.aborted ? \"aborted\" : \"error\";\n\t\t\toutput.errorMessage = error instanceof Error ? error.message : JSON.stringify(error);\n\t\t\tstream.push({ type: \"error\", reason: output.stopReason, error: output });\n\t\t\tstream.end();\n\t\t} finally {\n\t\t\tstreamDeadline.cleanup();\n\t\t}\n\t})();\n\n\treturn stream;\n};\n\n/**\n * Map ThinkingLevel to Anthropic effort levels for adaptive thinking.\n * Note: effort \"max\" is available on all adaptive-thinking Claude models, while native\n * \"xhigh\" is available on Opus 4.7, Opus 4.8, Opus 5, Sonnet 5, Fable 5, and Fable 5.1 —\n * the models the generator merges an `xhigh` mapping onto.\n */\nfunction mapThinkingLevelToEffort(\n\tmodel: Model<\"anthropic-messages\">,\n\tlevel: SimpleStreamOptions[\"reasoning\"],\n): AnthropicEffort {\n\tconst mapped = level ? model.thinkingLevelMap?.[level] : undefined;\n\tif (typeof mapped === \"string\") return mapped as AnthropicEffort;\n\n\tswitch (level) {\n\t\tcase \"minimal\":\n\t\tcase \"low\":\n\t\t\treturn \"low\";\n\t\tcase \"medium\":\n\t\t\treturn \"medium\";\n\t\tcase \"high\":\n\t\t\treturn \"high\";\n\t\tdefault:\n\t\t\treturn \"high\";\n\t}\n}\n\nexport const streamSimple: StreamFunction<\"anthropic-messages\", SimpleStreamOptions> = (\n\tmodel: Model<\"anthropic-messages\">,\n\tcontext: TranscriptContext,\n\toptions?: SimpleStreamOptions,\n): AssistantMessageEventStream => {\n\tassertRequestAuth(model.provider, options?.apiKey, options?.headers);\n\n\tconst base = {\n\t\t...buildBaseOptions(model, context, options, options?.apiKey),\n\t\ttoolChoice: options?.toolChoice,\n\t} satisfies AnthropicOptions;\n\tif (!options?.reasoning) {\n\t\treturn stream(model, context, {\n\t\t\t...base,\n\t\t\tthinkingEnabled: false,\n\t\t} satisfies AnthropicOptions);\n\t}\n\n\t// For models with adaptive thinking: use an effort level.\n\t// For older models: use budget-based thinking.\n\tif (model.compat?.forceAdaptiveThinking === true) {\n\t\tconst effort = mapThinkingLevelToEffort(model, options.reasoning);\n\t\treturn stream(model, context, {\n\t\t\t...base,\n\t\t\tthinkingEnabled: true,\n\t\t\teffort,\n\t\t} satisfies AnthropicOptions);\n\t}\n\n\t// Undefined means the caller did not request an output cap; let the helper use the model cap.\n\t// Do not coerce to 0 here, or the thinking budget would become the entire max_tokens value.\n\tconst adjusted = adjustMaxTokensForThinking(\n\t\tbase.maxTokens,\n\t\tmodel.maxTokens,\n\t\toptions.reasoning,\n\t\toptions.thinkingBudgets,\n\t);\n\n\tconst maxTokens = clampMaxTokensToContext(model, context, adjusted.maxTokens);\n\n\treturn stream(model, context, {\n\t\t...base,\n\t\tmaxTokens,\n\t\tthinkingEnabled: true,\n\t\tthinkingBudgetTokens: Math.min(adjusted.thinkingBudget, Math.max(0, maxTokens - 1024)),\n\t} satisfies AnthropicOptions);\n};\n\nfunction isOAuthToken(apiKey: string): boolean {\n\treturn apiKey.includes(\"sk-ant-oat\");\n}\n\nfunction createClient(\n\tmodel: Model<\"anthropic-messages\">,\n\tapiKey: string | undefined,\n\tinterleavedThinking: boolean,\n\tuseFineGrainedToolStreamingBeta: boolean,\n\tuseServerSideFallbackBeta: boolean,\n\toptionsHeaders?: ProviderHeaders,\n\tfetch?: typeof globalThis.fetch,\n\tdynamicHeaders?: Record<string, string>,\n\tsessionId?: string,\n\tuseNativeToolChanges = false,\n): { client: Anthropic; isOAuthToken: boolean } {\n\t// Adaptive thinking models have interleaved thinking built in, so skip the beta header.\n\tconst needsInterleavedBeta = interleavedThinking && model.compat?.forceAdaptiveThinking !== true;\n\tconst betaFeatures: string[] = [];\n\tif (useFineGrainedToolStreamingBeta) {\n\t\tbetaFeatures.push(FINE_GRAINED_TOOL_STREAMING_BETA);\n\t}\n\tif (needsInterleavedBeta) {\n\t\tbetaFeatures.push(INTERLEAVED_THINKING_BETA);\n\t}\n\tif (useServerSideFallbackBeta) {\n\t\tbetaFeatures.push(SERVER_SIDE_FALLBACK_BETA);\n\t}\n\tif (shouldUseThinkingBindingControlsBeta(model)) {\n\t\tbetaFeatures.push(THINKING_BINDING_CONTROLS_BETA);\n\t}\n\tif (supportsMidConvoEffort(model)) {\n\t\tbetaFeatures.push(MID_CONVERSATION_OUTPUT_CONFIG_BETA, THINKING_BINDING_CONTROLS_BETA);\n\t}\n\tif (useNativeToolChanges) betaFeatures.push(MID_CONVERSATION_TOOL_CHANGES_BETA);\n\tif (requestedSpeed(model) === \"fast\") betaFeatures.push(FAST_MODE_BETA);\n\tconst uniqueBetaFeatures = [...new Set(betaFeatures)];\n\n\t// Copilot: Bearer auth, selective betas.\n\tif (model.provider === \"github-copilot\") {\n\t\tconst client = new Anthropic({\n\t\t\tapiKey: null,\n\t\t\tauthToken: apiKey ?? null,\n\t\t\tbaseURL: model.baseUrl,\n\t\t\tdangerouslyAllowBrowser: true,\n\t\t\tfetch,\n\t\t\tdefaultHeaders: mergeClientHeaders(\n\t\t\t\t{\n\t\t\t\t\taccept: \"application/json\",\n\t\t\t\t\t\"anthropic-dangerous-direct-browser-access\": \"true\",\n\t\t\t\t\t...(uniqueBetaFeatures.length > 0 ? { \"anthropic-beta\": uniqueBetaFeatures.join(\",\") } : {}),\n\t\t\t\t},\n\t\t\t\tmodel.headers,\n\t\t\t\tdynamicHeaders,\n\t\t\t\toptionsHeaders,\n\t\t\t),\n\t\t});\n\n\t\treturn { client, isOAuthToken: false };\n\t}\n\n\t// OAuth: Bearer auth, Claude Code identity headers\n\tif (apiKey && isOAuthToken(apiKey)) {\n\t\tconst client = new Anthropic({\n\t\t\tapiKey: null,\n\t\t\tauthToken: apiKey,\n\t\t\tbaseURL: model.baseUrl,\n\t\t\tdangerouslyAllowBrowser: true,\n\t\t\tfetch,\n\t\t\tdefaultHeaders: mergeClientHeaders(\n\t\t\t\t{\n\t\t\t\t\taccept: \"application/json\",\n\t\t\t\t\t\"anthropic-dangerous-direct-browser-access\": \"true\",\n\t\t\t\t\t\"anthropic-beta\": [\"claude-code-20250219\", \"oauth-2025-04-20\", ...uniqueBetaFeatures].join(\",\"),\n\t\t\t\t\t\"user-agent\": `claude-cli/${claudeCodeVersion}`,\n\t\t\t\t\t\"x-app\": \"cli\",\n\t\t\t\t},\n\t\t\t\tmodel.headers,\n\t\t\t\toptionsHeaders,\n\t\t\t),\n\t\t});\n\n\t\treturn { client, isOAuthToken: true };\n\t}\n\n\t// API key or header-owned auth.\n\tconst compat = getAnthropicCompat(model);\n\tconst sessionAffinityHeaders: ProviderHeaders = {};\n\tif (sessionId && compat.sendSessionAffinityHeaders) {\n\t\tconst header = compat.sessionAffinityFormat === \"openrouter\" ? \"x-session-id\" : \"x-session-affinity\";\n\t\tsessionAffinityHeaders[header] = sessionId;\n\t}\n\tconst defaultHeaders = mergeClientHeaders(\n\t\t{\n\t\t\taccept: \"application/json\",\n\t\t\t\"anthropic-dangerous-direct-browser-access\": \"true\",\n\t\t\t...(uniqueBetaFeatures.length > 0 ? { \"anthropic-beta\": uniqueBetaFeatures.join(\",\") } : {}),\n\t\t},\n\t\tsessionAffinityHeaders,\n\t\tmodel.headers,\n\t\toptionsHeaders,\n\t);\n\tconst client = new Anthropic({\n\t\tapiKey: apiKey ?? null,\n\t\tauthToken: null,\n\t\tbaseURL: model.baseUrl,\n\t\tdangerouslyAllowBrowser: true,\n\t\tfetch,\n\t\tdefaultHeaders,\n\t});\n\n\treturn { client, isOAuthToken: false };\n}\n\nfunction getNativeToolChangeBetas(\n\tmodel: Model<\"anthropic-messages\">,\n\tcontext: TranscriptContext,\n\tisOAuth: boolean,\n\toptions?: AnthropicOptions,\n): NonNullable<MessageCreateParamsStreaming[\"betas\"]> {\n\tlet configured: string | null | undefined;\n\tfor (const headers of [model.headers, options?.headers]) {\n\t\tfor (const [name, value] of Object.entries(headers ?? {})) {\n\t\t\tif (name.toLowerCase() === \"anthropic-beta\") configured = value;\n\t\t}\n\t}\n\tif (configured === null) return [];\n\tif (configured !== undefined)\n\t\treturn [\n\t\t\t...new Set(\n\t\t\t\tconfigured\n\t\t\t\t\t.split(\",\")\n\t\t\t\t\t.map((feature) => feature.trim())\n\t\t\t\t\t.filter(Boolean),\n\t\t\t),\n\t\t];\n\tconst features = [MID_CONVERSATION_TOOL_CHANGES_BETA];\n\tif (isOAuth) features.push(\"claude-code-20250219\", \"oauth-2025-04-20\");\n\tif (shouldUseFineGrainedToolStreamingBeta(model, context)) features.push(FINE_GRAINED_TOOL_STREAMING_BETA);\n\tif (\n\t\tmodel.reasoning &&\n\t\toptions?.thinkingEnabled &&\n\t\t(options.interleavedThinking ?? true) &&\n\t\tmodel.compat?.forceAdaptiveThinking !== true\n\t) {\n\t\tfeatures.push(INTERLEAVED_THINKING_BETA);\n\t}\n\tif (shouldUseServerSideFallbackBeta(model)) features.push(SERVER_SIDE_FALLBACK_BETA);\n\tif (shouldUseThinkingBindingControlsBeta(model)) features.push(THINKING_BINDING_CONTROLS_BETA);\n\tif (supportsMidConvoEffort(model))\n\t\tfeatures.push(MID_CONVERSATION_OUTPUT_CONFIG_BETA, THINKING_BINDING_CONTROLS_BETA);\n\tif (requestedSpeed(model) === \"fast\") features.push(FAST_MODE_BETA);\n\treturn [...new Set(features)];\n}\n\nfunction buildParams(\n\tmodel: Model<\"anthropic-messages\">,\n\tcontext: TranscriptContext,\n\tisOAuthToken: boolean,\n\toptions?: AnthropicOptions,\n): MessageCreateParamsStreaming {\n\tconst { cacheControl } = getCacheControl(model, options?.cacheRetention, options?.env);\n\tconst compat = getAnthropicCompat(model);\n\tconst initialSystemMessage = getInitialSystemMessage(context.messages);\n\tconst initialSystemText = initialSystemMessage ? getSystemMessageText(initialSystemMessage) : \"\";\n\tconst transformedMessages = transformMessages(context.messages, model, normalizeToolCallId);\n\tconst conversationMessages = initialSystemMessage ? transformedMessages.slice(1) : transformedMessages;\n\t// Native tool changes reference tools by name, so a redefined name cannot be expressed,\n\t// and Anthropic rejects a tool list where every tool is deferred, so there must be an\n\t// initial active tool to anchor the deferred ones. Otherwise the current tool list is sent.\n\tconst initialTools = initialSystemMessage?.toolsAdded ?? [];\n\tconst nativeToolChanges =\n\t\tcompat.supportsMidConvoSystemMessages &&\n\t\tcompat.supportsMidConvoToolChanges &&\n\t\tinitialTools.length > 0 &&\n\t\t!hasToolRedefinitions(context.messages);\n\tconst converted = convertMessages(\n\t\tconversationMessages,\n\t\tisOAuthToken,\n\t\tcacheControl,\n\t\tcompat.allowEmptySignature,\n\t\tsupportsMidConvoEffort(model) ? model.provider : undefined,\n\t\tnativeToolChanges,\n\t);\n\tconst activeEffort = options?.effort ?? \"high\";\n\tconst params: MessageCreateParamsStreaming = {\n\t\tmodel: upstreamModelId(model),\n\t\tmessages: (supportsMidConvoEffort(model)\n\t\t\t? insertThinkingLevelMessages(converted, activeEffort)\n\t\t\t: converted.messages) as MessageParam[],\n\t\tmax_tokens: options?.maxTokens ?? model.maxTokens,\n\t\tstream: true,\n\t};\n\tif (nativeToolChanges) params.betas = getNativeToolChangeBetas(model, context, isOAuthToken, options);\n\tconst speed = requestedSpeed(model);\n\tif (speed !== undefined) params.speed = speed;\n\n\t// For OAuth tokens, we MUST include Claude Code identity\n\tif (isOAuthToken) {\n\t\tparams.system = [\n\t\t\t{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: \"You are Claude Code, Anthropic's official CLI for Claude.\",\n\t\t\t\t...(cacheControl ? { cache_control: cacheControl } : {}),\n\t\t\t},\n\t\t];\n\t\tif (initialSystemText) {\n\t\t\tparams.system.push({\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: sanitizeSurrogates(initialSystemText),\n\t\t\t\t...(cacheControl ? { cache_control: cacheControl } : {}),\n\t\t\t});\n\t\t}\n\t} else if (initialSystemText) {\n\t\t// Add cache control to system prompt for non-OAuth tokens\n\t\tparams.system = [\n\t\t\t{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: sanitizeSurrogates(initialSystemText),\n\t\t\t\t...(cacheControl ? { cache_control: cacheControl } : {}),\n\t\t\t},\n\t\t];\n\t}\n\n\t// Temperature is incompatible with extended thinking and unsupported on Claude Opus 4.7+.\n\tif (\n\t\toptions?.temperature !== undefined &&\n\t\t!options?.thinkingEnabled &&\n\t\t!supportsMidConvoEffort(model) &&\n\t\tcompat.supportsTemperature\n\t) {\n\t\tparams.temperature = options.temperature;\n\t}\n\n\tconst toolCacheControl = compat.supportsCacheControlOnTools ? cacheControl : undefined;\n\tif (nativeToolChanges) {\n\t\t// Initial tools stay active with the cache breakpoint on the last one. Every later\n\t\t// declaration is deferred and only surfaced by its `tool_addition` block; removed\n\t\t// tools stay declared and are withdrawn by `tool_removal`. The request-level list\n\t\t// therefore only grows, keeping the cached prefix intact across tool changes.\n\t\tconst initialNames = new Set(initialTools.map((tool) => tool.name));\n\t\tconst laterTools = getDeclaredTools(context.messages).filter((tool) => !initialNames.has(tool.name));\n\t\tparams.tools = [\n\t\t\t...convertTools(\n\t\t\t\tinitialTools,\n\t\t\t\tisOAuthToken,\n\t\t\t\tcompat.supportsEagerToolInputStreaming,\n\t\t\t\tcompat.supportsStrictTools,\n\t\t\t\ttoolCacheControl,\n\t\t\t),\n\t\t\tDEFERRED_TOOL_PLACEHOLDER,\n\t\t\t...convertTools(\n\t\t\t\tlaterTools,\n\t\t\t\tisOAuthToken,\n\t\t\t\tcompat.supportsEagerToolInputStreaming,\n\t\t\t\tcompat.supportsStrictTools,\n\t\t\t).map((tool) => ({ ...tool, defer_loading: true })),\n\t\t];\n\t} else {\n\t\tconst tools = getCurrentTools(context.messages);\n\t\tif (tools.length > 0) {\n\t\t\tparams.tools = convertTools(\n\t\t\t\ttools,\n\t\t\t\tisOAuthToken,\n\t\t\t\tcompat.supportsEagerToolInputStreaming,\n\t\t\t\tcompat.supportsStrictTools,\n\t\t\t\ttoolCacheControl,\n\t\t\t);\n\t\t}\n\t}\n\n\t// Managed effort models always use adaptive thinking. Their per-turn markers\n\t// carry the actual effort; the top-level high value deliberately stays stable.\n\tif (supportsMidConvoEffort(model)) {\n\t\tparams.thinking = {\n\t\t\ttype: \"adaptive\",\n\t\t\tdisplay: options?.thinkingDisplay ?? \"summarized\",\n\t\t\tblock_binding: { prefix_mismatch_behavior: \"drop_block\" },\n\t\t} as unknown as NonNullable<MessageCreateParamsStreaming[\"thinking\"]>;\n\t\tparams.output_config = { effort: \"high\" };\n\t} else if (model.reasoning) {\n\t\tif (options?.thinkingEnabled) {\n\t\t\t// Default to \"summarized\" so Opus 4.7 and Mythos Preview behave like\n\t\t\t// older Claude 4 models (whose API default is also \"summarized\").\n\t\t\tconst display: AnthropicThinkingDisplay = options.thinkingDisplay ?? \"summarized\";\n\t\t\tif (model.compat?.forceAdaptiveThinking === true) {\n\t\t\t\t// Adaptive thinking: Claude decides when and how much to think.\n\t\t\t\tparams.thinking = { type: \"adaptive\", display };\n\t\t\t\tif (options.effort) {\n\t\t\t\t\t// The Anthropic SDK types can lag newly supported effort values such as \"xhigh\".\n\t\t\t\t\tparams.output_config =\n\t\t\t\t\t\toptions.effort === \"xhigh\"\n\t\t\t\t\t\t\t? ({ effort: options.effort } as unknown as NonNullable<\n\t\t\t\t\t\t\t\t\tMessageCreateParamsStreaming[\"output_config\"]\n\t\t\t\t\t\t\t\t>)\n\t\t\t\t\t\t\t: { effort: options.effort };\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Budget-based thinking for older models\n\t\t\t\tparams.thinking = {\n\t\t\t\t\ttype: \"enabled\",\n\t\t\t\t\tbudget_tokens: options.thinkingBudgetTokens || 1024,\n\t\t\t\t\tdisplay,\n\t\t\t\t};\n\t\t\t}\n\t\t} else if (options?.thinkingEnabled === false && model.thinkingLevelMap?.off !== null) {\n\t\t\tparams.thinking = { type: \"disabled\" };\n\t\t}\n\n\t\t// `block_binding` must accompany the beta header on *every* request for a model that\n\t\t// enforces the conversation check, not only on reasoning turns. The header alone leaves\n\t\t// `prefix_mismatch_behavior` at its `\"error\"` default, which is the 400 this opts out of.\n\t\t// `streamSimple` sets `thinkingEnabled: false` whenever no reasoning level is requested,\n\t\t// and Claude Fable 5.1 denies thinking-off (`thinkingLevelMap.off === null`), so without\n\t\t// this the no-reasoning path would send the header with no field at all.\n\t\tif (shouldUseThinkingBindingControlsBeta(model)) {\n\t\t\tconst blockBinding = { block_binding: { prefix_mismatch_behavior: \"drop_block\" } };\n\t\t\t// The Anthropic SDK types lag the `thinking-binding-controls-2026-08-01` beta.\n\t\t\tif (params.thinking?.type === \"adaptive\" || params.thinking?.type === \"enabled\") {\n\t\t\t\t// Accepted alongside both thinking types. It only changes what happens to a block\n\t\t\t\t// replayed behind a changed prefix; the model check always drops regardless.\n\t\t\t\tparams.thinking = { ...params.thinking, ...blockBinding } as unknown as NonNullable<\n\t\t\t\t\tMessageCreateParamsStreaming[\"thinking\"]\n\t\t\t\t>;\n\t\t\t} else if (!params.thinking && model.compat?.forceAdaptiveThinking === true) {\n\t\t\t\t// Adaptive thinking is always on for these models, so omitting `thinking` and\n\t\t\t\t// sending `{type: \"adaptive\"}` are equivalent. `display` stays absent to keep the\n\t\t\t\t// API's `\"omitted\"` default, which is exactly what omitting `thinking` produced.\n\t\t\t\tparams.thinking = { type: \"adaptive\", ...blockBinding } as unknown as NonNullable<\n\t\t\t\t\tMessageCreateParamsStreaming[\"thinking\"]\n\t\t\t\t>;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (options?.metadata) {\n\t\tconst userId = options.metadata.user_id;\n\t\tif (typeof userId === \"string\") {\n\t\t\tparams.metadata = { user_id: userId };\n\t\t}\n\t}\n\n\tif (options?.toolChoice) {\n\t\tconst requested = options.toolChoice;\n\t\tconst isForced = requested === \"any\" || (typeof requested !== \"string\" && requested.type === \"tool\");\n\t\tif (isForced && model.compat?.supportsForcedToolChoice === false) {\n\t\t\t// \"The exceptions are Claude Fable 5.1 and Claude Mythos 5.1, which reject forced tool\n\t\t\t// use on every request with a 400 error. On those models, use\n\t\t\t// `tool_choice: {\"type\": \"auto\"}` with strict tool use or structured outputs instead.\"\n\t\t\t// https://platform.claude.com/docs/en/build-with-claude/thinking\n\t\t\t//\n\t\t\t// Reject the request rather than rewriting it. Silently substituting `auto` would\n\t\t\t// discard an explicit caller instruction and make `AnthropicOptions.toolChoice`'s\n\t\t\t// declared shape a lie; the caller asked the model to call a tool, and quietly asking\n\t\t\t// it to decide instead is a different request. Failing here matches how this package\n\t\t\t// handles other explicitly requested capabilities a model cannot honor, and surfaces\n\t\t\t// the remedy before a round trip that would 400 anyway. Callers that want the\n\t\t\t// substitution can make it themselves, and can branch on\n\t\t\t// `model.compat.supportsForcedToolChoice` to decide.\n\t\t\tconst requestedLabel = typeof requested === \"string\" ? requested : `tool \"${requested.name}\"`;\n\t\t\tthrow new Error(\n\t\t\t\t`Model ${model.id} does not support forced tool choice (requested: ${requestedLabel}). ` +\n\t\t\t\t\t`Use toolChoice \"auto\" with strict tool use or structured outputs instead.`,\n\t\t\t);\n\t\t}\n\t\tif (typeof requested === \"string\") {\n\t\t\tparams.tool_choice = { type: requested };\n\t\t} else {\n\t\t\tparams.tool_choice = requested;\n\t\t}\n\t}\n\n\tconst allowedFallbackModels = model.compat?.allowedFallbackModels;\n\tif (allowedFallbackModels && allowedFallbackModels.length > 0) {\n\t\tparams.fallbacks = allowedFallbackModels.map((fallback) => ({ model: fallback.model }));\n\t}\n\n\treturn params;\n}\n\n// Normalize tool call IDs to match Anthropic's required pattern and length\nfunction normalizeToolCallId(id: string): string {\n\treturn id.replace(/[^a-zA-Z0-9_-]/g, \"_\").slice(0, 64);\n}\n\nfunction convertToolResult(msg: ToolResultMessage): ContentBlockParam {\n\treturn {\n\t\ttype: \"tool_result\",\n\t\ttool_use_id: msg.toolCallId,\n\t\tcontent: convertContentBlocks(msg.content),\n\t\tis_error: msg.isError,\n\t};\n}\n\nfunction convertMessages(\n\ttransformedMessages: Message[],\n\tisOAuthToken: boolean,\n\tcacheControl?: CacheControlEphemeral,\n\tallowEmptySignature = false,\n\tmanagedProvider?: string,\n\tnativeToolChanges = false,\n): ConvertedAnthropicMessages {\n\tconst params: MessageParam[] = [];\n\tconst assistantLevels = new Map<number, AnthropicEffort>();\n\t// Later system messages are held back and emitted directly before the next assistant\n\t// message (or at the end of the transcript). Anthropic requires `tool_result` blocks to\n\t// immediately follow their `tool_use`, so a system message between them is rejected; this\n\t// also mirrors where the managed-effort system messages are inserted. As a result an\n\t// update placed before a user message in the transcript lands after it on the wire.\n\tconst pendingSystemMessages: MessageParam[] = [];\n\tconst flushPendingSystemMessages = (): void => {\n\t\tparams.push(...pendingSystemMessages);\n\t\tpendingSystemMessages.length = 0;\n\t};\n\n\tfor (let i = 0; i < transformedMessages.length; i++) {\n\t\tconst msg = transformedMessages[i];\n\n\t\tif (msg.role === \"system\") {\n\t\t\t// Later system messages only reach this point when the model accepts them natively;\n\t\t\t// otherwise the transcript was collapsed into the leading message before conversion.\n\t\t\tconst text = renderSystemMessageUpdate(msg);\n\t\t\tconst blocks: ContentBlockParam[] = [];\n\t\t\tif (text.length > 0) blocks.push({ type: \"text\", text: sanitizeSurrogates(text) });\n\t\t\tif (nativeToolChanges) {\n\t\t\t\tfor (const tool of msg.toolsRemoved ?? []) {\n\t\t\t\t\tblocks.push({\n\t\t\t\t\t\ttype: \"tool_removal\",\n\t\t\t\t\t\ttool: { type: \"tool_reference\", name: isOAuthToken ? toClaudeCodeName(tool.name) : tool.name },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tfor (const tool of msg.toolsAdded ?? []) {\n\t\t\t\t\tblocks.push({\n\t\t\t\t\t\ttype: \"tool_addition\",\n\t\t\t\t\t\ttool: { type: \"tool_reference\", name: isOAuthToken ? toClaudeCodeName(tool.name) : tool.name },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (blocks.length > 0) pendingSystemMessages.push({ role: \"system\", content: blocks });\n\t\t} else if (msg.role === \"user\") {\n\t\t\tif (typeof msg.content === \"string\") {\n\t\t\t\tif (msg.content.trim().length > 0) {\n\t\t\t\t\tparams.push({\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: sanitizeSurrogates(msg.content),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst blocks: ContentBlockParam[] = msg.content.map((item) => {\n\t\t\t\t\tif (item.type === \"text\") {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\ttext: sanitizeSurrogates(item.text),\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tif (item.type === \"document\") {\n\t\t\t\t\t\t// `BetaBase64PDFSource`. PDFs ride Claude's vision path, so no beta header.\n\t\t\t\t\t\t// The media type is a fixed literal in that SDK type, so it is hardcoded here\n\t\t\t\t\t\t// and the block's own field is verified rather than read.\n\t\t\t\t\t\t// https://platform.claude.com/docs/en/build-with-claude/pdf-support\n\t\t\t\t\t\tassertSupportedDocumentMimeType(item);\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: \"document\",\n\t\t\t\t\t\t\tsource: {\n\t\t\t\t\t\t\t\ttype: \"base64\",\n\t\t\t\t\t\t\t\tmedia_type: \"application/pdf\",\n\t\t\t\t\t\t\t\tdata: item.data,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t...(item.name ? { title: item.name } : {}),\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: \"image\",\n\t\t\t\t\t\tsource: {\n\t\t\t\t\t\t\ttype: \"base64\",\n\t\t\t\t\t\t\tmedia_type: item.mimeType as \"image/jpeg\" | \"image/png\" | \"image/gif\" | \"image/webp\",\n\t\t\t\t\t\t\tdata: item.data,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t\tconst filteredBlocks = blocks.filter((b) => {\n\t\t\t\t\tif (b.type === \"text\") {\n\t\t\t\t\t\treturn b.text.trim().length > 0;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t});\n\t\t\t\tif (filteredBlocks.length === 0) continue;\n\t\t\t\tparams.push({\n\t\t\t\t\trole: \"user\",\n\t\t\t\t\tcontent: filteredBlocks,\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (msg.role === \"assistant\") {\n\t\t\tflushPendingSystemMessages();\n\t\t\tconst blocks: ContentBlockParam[] = [];\n\n\t\t\tfor (const block of msg.content) {\n\t\t\t\tif (block.type === \"text\") {\n\t\t\t\t\tif (block.text.trim().length === 0) continue;\n\t\t\t\t\tblocks.push({\n\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\ttext: sanitizeSurrogates(block.text),\n\t\t\t\t\t});\n\t\t\t\t} else if (block.type === \"thinking\") {\n\t\t\t\t\t// Redacted thinking: pass the opaque payload back as redacted_thinking\n\t\t\t\t\tif (block.redacted) {\n\t\t\t\t\t\tblocks.push({\n\t\t\t\t\t\t\ttype: \"redacted_thinking\",\n\t\t\t\t\t\t\tdata: block.thinkingSignature!,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tconst thinkingSignature = block.thinkingSignature;\n\t\t\t\t\tconst hasThinkingSignature = !!thinkingSignature && thinkingSignature.trim().length > 0;\n\t\t\t\t\tif (block.thinking.trim().length === 0 && !hasThinkingSignature) continue;\n\t\t\t\t\t// If thinking signature is missing/empty (e.g., from aborted stream),\n\t\t\t\t\t// convert to plain text for Anthropic. Some compatible providers emit\n\t\t\t\t\t// and accept empty signatures, so let marked models preserve the block.\n\t\t\t\t\tif (!hasThinkingSignature) {\n\t\t\t\t\t\tblocks.push(\n\t\t\t\t\t\t\tallowEmptySignature\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\ttype: \"thinking\",\n\t\t\t\t\t\t\t\t\t\tthinking: sanitizeSurrogates(block.thinking),\n\t\t\t\t\t\t\t\t\t\tsignature: \"\",\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\t\t\t\ttext: sanitizeSurrogates(block.thinking),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tblocks.push({\n\t\t\t\t\t\t\ttype: \"thinking\",\n\t\t\t\t\t\t\tthinking: sanitizeSurrogates(block.thinking),\n\t\t\t\t\t\t\tsignature: thinkingSignature,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else if (block.type === \"toolCall\") {\n\t\t\t\t\tblocks.push({\n\t\t\t\t\t\ttype: \"tool_use\",\n\t\t\t\t\t\tid: block.id,\n\t\t\t\t\t\tname: isOAuthToken ? toClaudeCodeName(block.name) : block.name,\n\t\t\t\t\t\tinput: block.arguments ?? {},\n\t\t\t\t\t});\n\t\t\t\t} else if (block.type === \"fallback\") {\n\t\t\t\t\t// The server-side fallback boundary must go back on the wire at the position it\n\t\t\t\t\t// arrived: \"Keep it exactly where it appeared. The API uses its position to\n\t\t\t\t\t// validate the thinking blocks around it, so a request that echoes thinking\n\t\t\t\t\t// blocks from both sides of the boundary is rejected if the block is omitted or\n\t\t\t\t\t// moved.\" `transformMessages` drops the pre-boundary thinking; without this\n\t\t\t\t\t// branch the marker would be dropped too, which is the failure that rule names.\n\t\t\t\t\t// https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback\n\t\t\t\t\t//\n\t\t\t\t\t// The SDK types lag this block, matching the cast on the stream side.\n\t\t\t\t\tblocks.push({\n\t\t\t\t\t\ttype: \"fallback\",\n\t\t\t\t\t\tfrom: { model: block.fromModel },\n\t\t\t\t\t\tto: { model: block.toModel },\n\t\t\t\t\t} as unknown as ContentBlockParam);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (blocks.length === 0) continue;\n\t\t\tconst messageIndex = params.length;\n\t\t\tparams.push({\n\t\t\t\trole: \"assistant\",\n\t\t\t\tcontent: blocks,\n\t\t\t});\n\t\t\tif (\n\t\t\t\tmanagedProvider !== undefined &&\n\t\t\t\tmsg.api === \"anthropic-messages\" &&\n\t\t\t\tmsg.provider === managedProvider &&\n\t\t\t\tisAnthropicEffort(msg.providerThinkingLevel)\n\t\t\t) {\n\t\t\t\tassistantLevels.set(messageIndex, msg.providerThinkingLevel);\n\t\t\t}\n\t\t} else if (msg.role === \"toolResult\") {\n\t\t\t// Collect all consecutive toolResult messages, needed for z.ai Anthropic endpoint.\n\t\t\tconst toolResults: ContentBlockParam[] = [];\n\t\t\tlet j = i;\n\t\t\twhile (j < transformedMessages.length && transformedMessages[j].role === \"toolResult\") {\n\t\t\t\ttoolResults.push(convertToolResult(transformedMessages[j] as ToolResultMessage));\n\t\t\t\tj++;\n\t\t\t}\n\n\t\t\t// Skip the messages we've already processed.\n\t\t\ti = j - 1;\n\n\t\t\tparams.push({\n\t\t\t\trole: \"user\",\n\t\t\t\tcontent: toolResults,\n\t\t\t});\n\t\t}\n\t}\n\n\tflushPendingSystemMessages();\n\n\t// Add cache_control to the last user or system message to cache conversation history\n\tif (cacheControl && params.length > 0) {\n\t\tconst lastMessage = params[params.length - 1];\n\t\tif (lastMessage.role === \"user\" || lastMessage.role === \"system\") {\n\t\t\tif (Array.isArray(lastMessage.content)) {\n\t\t\t\tconst lastBlock = lastMessage.content[lastMessage.content.length - 1];\n\t\t\t\tif (\n\t\t\t\t\tlastBlock &&\n\t\t\t\t\t(lastBlock.type === \"text\" ||\n\t\t\t\t\t\tlastBlock.type === \"image\" ||\n\t\t\t\t\t\tlastBlock.type === \"tool_result\" ||\n\t\t\t\t\t\tlastBlock.type === \"tool_addition\" ||\n\t\t\t\t\t\tlastBlock.type === \"tool_removal\")\n\t\t\t\t) {\n\t\t\t\t\t(lastBlock as any).cache_control = cacheControl;\n\t\t\t\t}\n\t\t\t} else if (typeof lastMessage.content === \"string\") {\n\t\t\t\tlastMessage.content = [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\ttext: lastMessage.content,\n\t\t\t\t\t\tcache_control: cacheControl,\n\t\t\t\t\t},\n\t\t\t\t] as any;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { messages: params, assistantLevels };\n}\n\ninterface ConvertedAnthropicMessages {\n\tmessages: MessageParam[];\n\tassistantLevels: Map<number, AnthropicEffort>;\n}\n\nfunction isAnthropicEffort(value: string | undefined): value is AnthropicEffort {\n\treturn value === \"low\" || value === \"medium\" || value === \"high\" || value === \"xhigh\" || value === \"max\";\n}\n\ninterface EffortMessage {\n\trole: \"system\";\n\tcontent: [];\n\toutput_config: { effort: AnthropicEffort };\n}\n\nfunction insertThinkingLevelMessages(\n\tconverted: ConvertedAnthropicMessages,\n\tactiveEffort: AnthropicEffort,\n): Array<MessageParam | EffortMessage> {\n\tconst messages: Array<MessageParam | EffortMessage> = [];\n\tfor (let index = 0; index < converted.messages.length; index++) {\n\t\tconst historicalEffort = converted.assistantLevels.get(index);\n\t\tif (historicalEffort !== undefined) {\n\t\t\tmessages.push({ role: \"system\", content: [], output_config: { effort: historicalEffort } });\n\t\t}\n\t\tmessages.push(converted.messages[index]);\n\t}\n\tmessages.push({ role: \"system\", content: [], output_config: { effort: activeEffort } });\n\treturn messages;\n}\n\nfunction shouldUseFineGrainedToolStreamingBeta(\n\tmodel: Model<\"anthropic-messages\">,\n\tcontext: TranscriptContext,\n): boolean {\n\treturn getCurrentTools(context.messages).length > 0 && !getAnthropicCompat(model).supportsEagerToolInputStreaming;\n}\n\ntype ToolSchemaObject = {\n\ttype?: string | string[];\n\tproperties?: Record<string, unknown>;\n\trequired?: string[];\n\tanyOf?: ToolSchemaObject[];\n};\n\nfunction projectObjectUnionForAnthropic(\n\tschema: ToolSchemaObject,\n): { properties: Record<string, unknown>; required: string[] } | undefined {\n\tif (schema.properties !== undefined || !Array.isArray(schema.anyOf) || schema.anyOf.length === 0) return undefined;\n\tconst branches = schema.anyOf;\n\tif (\n\t\t!branches.every(\n\t\t\t(branch) =>\n\t\t\t\t(branch.type === undefined ||\n\t\t\t\t\tbranch.type === \"object\" ||\n\t\t\t\t\t(Array.isArray(branch.type) &&\n\t\t\t\t\t\tbranch.type.length > 0 &&\n\t\t\t\t\t\tbranch.type.every((type) => type === \"object\"))) &&\n\t\t\t\tbranch.properties !== undefined,\n\t\t)\n\t)\n\t\treturn undefined;\n\n\tconst variantsByKey = new Map<string, unknown[]>();\n\tfor (const branch of branches) {\n\t\tfor (const [key, propertySchema] of Object.entries(branch.properties ?? {})) {\n\t\t\tconst variants = variantsByKey.get(key);\n\t\t\tif (variants === undefined) {\n\t\t\t\tvariantsByKey.set(key, [propertySchema]);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst serialized = JSON.stringify(propertySchema);\n\t\t\tif (!variants.some((variant) => variant === propertySchema || JSON.stringify(variant) === serialized)) {\n\t\t\t\tvariants.push(propertySchema);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst properties: Record<string, unknown> = Object.fromEntries(\n\t\t[...variantsByKey].flatMap(([key, variants]) => {\n\t\t\tconst first = variants[0];\n\t\t\treturn first === undefined ? [] : [[key, variants.length === 1 ? first : { anyOf: variants }]];\n\t\t}),\n\t);\n\n\treturn {\n\t\tproperties,\n\t\trequired: (branches[0]?.required ?? []).filter((key) =>\n\t\t\tbranches.every((branch) => (branch.required ?? []).includes(key)),\n\t\t),\n\t};\n}\n\nfunction convertTools(\n\ttools: Tool[],\n\tisOAuthToken: boolean,\n\tsupportsEagerToolInputStreaming: boolean,\n\tsupportsStrictTools: boolean,\n\tcacheControl?: CacheControlEphemeral,\n): BetaTool[] {\n\tif (!tools) return [];\n\n\t// OAuth canonicalization can make distinct transcript names collide. Keep the latest\n\t// declaration, as the pre-transcript tool serializer did, without sending duplicate names.\n\tif (isOAuthToken) tools = [...new Map(tools.map((tool) => [toClaudeCodeName(tool.name), tool])).values()];\n\treturn tools.map((tool, index) => {\n\t\tconst strict = resolveJsonSchemaStrictSampling(tool, supportsStrictTools, ANTHROPIC_STRICT_JSON_SCHEMA_PROFILE);\n\t\tconst parameters = getJsonSchemaToolParameters(tool, strict, ANTHROPIC_STRICT_JSON_SCHEMA_PROFILE);\n\t\tconst schema = parameters as ToolSchemaObject;\n\t\t// Anthropic rejects top-level combinators, so project object-union fields for advertising only.\n\t\t// Local runtime validation still enforces the complete authored union without mutating it.\n\t\tconst projectedUnion = projectObjectUnionForAnthropic(schema);\n\t\tconst legacyInputSchema = {\n\t\t\ttype: \"object\" as const,\n\t\t\tproperties: projectedUnion?.properties ?? schema.properties ?? {},\n\t\t\trequired: projectedUnion?.required ?? schema.required ?? [],\n\t\t};\n\t\tconst inputSchema =\n\t\t\tstrict === true && projectedUnion === undefined\n\t\t\t\t? {\n\t\t\t\t\t\t...(parameters as Record<string, unknown>),\n\t\t\t\t\t\t...legacyInputSchema,\n\t\t\t\t\t}\n\t\t\t\t: legacyInputSchema;\n\n\t\treturn {\n\t\t\tname: isOAuthToken ? toClaudeCodeName(tool.name) : tool.name,\n\t\t\tdescription: tool.description,\n\t\t\t...(supportsEagerToolInputStreaming ? { eager_input_streaming: true } : {}),\n\t\t\t...(strict === true ? { strict: true } : {}),\n\t\t\tinput_schema: inputSchema,\n\t\t\t...(cacheControl && index === tools.length - 1 ? { cache_control: cacheControl } : {}),\n\t\t};\n\t});\n}\n\nfunction mapStopReason(\n\treason: Anthropic.Messages.StopReason | string,\n\tstopDetails?: RefusalStopDetails | null,\n): { stopReason: StopReason; errorMessage?: string } {\n\tswitch (reason) {\n\t\tcase \"end_turn\":\n\t\t\treturn { stopReason: \"stop\" };\n\t\tcase \"max_tokens\":\n\t\t\treturn { stopReason: \"length\" };\n\t\tcase \"tool_use\":\n\t\t\treturn { stopReason: \"toolUse\" };\n\t\tcase \"refusal\":\n\t\t\treturn {\n\t\t\t\tstopReason: \"error\",\n\t\t\t\terrorMessage: stopDetails?.explanation || `The model refused to complete the request`,\n\t\t\t};\n\t\tcase \"pause_turn\": // Stop is good enough -> resubmit\n\t\t\treturn { stopReason: \"stop\" };\n\t\tcase \"stop_sequence\":\n\t\t\treturn { stopReason: \"stop\" }; // We don't supply stop sequences, so this should never happen\n\t\tcase \"sensitive\": // Content flagged by safety filters (not yet in SDK types)\n\t\t\treturn { stopReason: \"error\", errorMessage: \"Provider stopped with: sensitive\" };\n\t\tdefault:\n\t\t\t// Handle unknown stop reasons gracefully (API may add new values)\n\t\t\tthrow new Error(`Unhandled stop reason: ${reason}`);\n\t}\n}\n"]}