@5ss/ai-tools 2.11.1

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 (342) hide show
  1. package/CHANGELOG.md +112 -0
  2. package/LICENSE +21 -0
  3. package/README.md +221 -0
  4. package/dist/ai-sdk/index.d.ts +15 -0
  5. package/dist/ai-sdk/index.d.ts.map +1 -0
  6. package/dist/ai-sdk/index.js +24 -0
  7. package/dist/ai-sdk/index.js.map +1 -0
  8. package/dist/artifact-D064mHfK.js +44 -0
  9. package/dist/artifact-D064mHfK.js.map +1 -0
  10. package/dist/artifacts-O8g-40Pw.js +404 -0
  11. package/dist/artifacts-O8g-40Pw.js.map +1 -0
  12. package/dist/aws-json-CecFqzqX.js +23 -0
  13. package/dist/aws-json-CecFqzqX.js.map +1 -0
  14. package/dist/aws-service-msttbPrz.js +58 -0
  15. package/dist/aws-service-msttbPrz.js.map +1 -0
  16. package/dist/batch-BMM5dXqL.d.ts +22 -0
  17. package/dist/batch-BMM5dXqL.d.ts.map +1 -0
  18. package/dist/batch-Co1ujeAW.js +67 -0
  19. package/dist/batch-Co1ujeAW.js.map +1 -0
  20. package/dist/bedrock-agentcore-browser-a_qOs-NR.js +182 -0
  21. package/dist/bedrock-agentcore-browser-a_qOs-NR.js.map +1 -0
  22. package/dist/bedrock-agentcore-code-interpreter-MWK-8RhA.js +357 -0
  23. package/dist/bedrock-agentcore-code-interpreter-MWK-8RhA.js.map +1 -0
  24. package/dist/bytes-BxpimpQx.js +45 -0
  25. package/dist/bytes-BxpimpQx.js.map +1 -0
  26. package/dist/client-CCKGsTeI.js +743 -0
  27. package/dist/client-CCKGsTeI.js.map +1 -0
  28. package/dist/cloudflare/index.d.ts +37 -0
  29. package/dist/cloudflare/index.d.ts.map +1 -0
  30. package/dist/cloudflare/index.js +41 -0
  31. package/dist/cloudflare/index.js.map +1 -0
  32. package/dist/cloudflare-browser-B6Yolpin.js +428 -0
  33. package/dist/cloudflare-browser-B6Yolpin.js.map +1 -0
  34. package/dist/cloudflare-email-Dy0KHeDf.js +197 -0
  35. package/dist/cloudflare-email-Dy0KHeDf.js.map +1 -0
  36. package/dist/cloudflare-sandbox-Dp_uNaqW.js +982 -0
  37. package/dist/cloudflare-sandbox-Dp_uNaqW.js.map +1 -0
  38. package/dist/content-type-CORxaxcv.js +49 -0
  39. package/dist/content-type-CORxaxcv.js.map +1 -0
  40. package/dist/core/index.d.ts +4 -0
  41. package/dist/core/index.js +204 -0
  42. package/dist/core/index.js.map +1 -0
  43. package/dist/define-CvpJ_pNP.js +115 -0
  44. package/dist/define-CvpJ_pNP.js.map +1 -0
  45. package/dist/errors-DoSpNHvs.js +20 -0
  46. package/dist/errors-DoSpNHvs.js.map +1 -0
  47. package/dist/errors-aKhko9T1.d.ts +18 -0
  48. package/dist/errors-aKhko9T1.d.ts.map +1 -0
  49. package/dist/eventbridge-scheduler-Bh6GqZY2.js +349 -0
  50. package/dist/eventbridge-scheduler-Bh6GqZY2.js.map +1 -0
  51. package/dist/framework-context-DVIIY8ZO.js +24 -0
  52. package/dist/framework-context-DVIIY8ZO.js.map +1 -0
  53. package/dist/gotenberg-NuJjxyln.js +291 -0
  54. package/dist/gotenberg-NuJjxyln.js.map +1 -0
  55. package/dist/http/index.d.ts +47 -0
  56. package/dist/http/index.d.ts.map +1 -0
  57. package/dist/http/index.js +3 -0
  58. package/dist/http-service-DDNCO1s4.js +254 -0
  59. package/dist/http-service-DDNCO1s4.js.map +1 -0
  60. package/dist/http-service-T7E5UjP8.d.ts +80 -0
  61. package/dist/http-service-T7E5UjP8.d.ts.map +1 -0
  62. package/dist/imessage-BSAFOI8Z.js +154 -0
  63. package/dist/imessage-BSAFOI8Z.js.map +1 -0
  64. package/dist/index-BU4gmYO8.d.ts +254 -0
  65. package/dist/index-BU4gmYO8.d.ts.map +1 -0
  66. package/dist/index-CCivzmxO.d.ts +188 -0
  67. package/dist/index-CCivzmxO.d.ts.map +1 -0
  68. package/dist/index-CLmTrcu5.d.ts +22 -0
  69. package/dist/index-CLmTrcu5.d.ts.map +1 -0
  70. package/dist/index-CZX5OeOF.d.ts +235 -0
  71. package/dist/index-CZX5OeOF.d.ts.map +1 -0
  72. package/dist/index-CdFmEfZO.d.ts +359 -0
  73. package/dist/index-CdFmEfZO.d.ts.map +1 -0
  74. package/dist/index-Cuh6eMWc.d.ts +285 -0
  75. package/dist/index-Cuh6eMWc.d.ts.map +1 -0
  76. package/dist/index-DuOGj7vc.d.ts +107 -0
  77. package/dist/index-DuOGj7vc.d.ts.map +1 -0
  78. package/dist/index-ccZ1XOHw.d.ts +69 -0
  79. package/dist/index-ccZ1XOHw.d.ts.map +1 -0
  80. package/dist/index-n8JTpNf1.d.ts +247 -0
  81. package/dist/index-n8JTpNf1.d.ts.map +1 -0
  82. package/dist/index-pwW1OsOx.d.ts +134 -0
  83. package/dist/index-pwW1OsOx.d.ts.map +1 -0
  84. package/dist/index-zK1ZwS4m.d.ts +347 -0
  85. package/dist/index-zK1ZwS4m.d.ts.map +1 -0
  86. package/dist/limits-hjrO8zUG.js +80 -0
  87. package/dist/limits-hjrO8zUG.js.map +1 -0
  88. package/dist/mastra/index.d.ts +14 -0
  89. package/dist/mastra/index.d.ts.map +1 -0
  90. package/dist/mastra/index.js +26 -0
  91. package/dist/mastra/index.js.map +1 -0
  92. package/dist/mastra-vector-Dhc6XZ8l.js +234 -0
  93. package/dist/mastra-vector-Dhc6XZ8l.js.map +1 -0
  94. package/dist/mcp/index.d.ts +80 -0
  95. package/dist/mcp/index.d.ts.map +1 -0
  96. package/dist/mcp/index.js +97 -0
  97. package/dist/mcp/index.js.map +1 -0
  98. package/dist/modules/artifacts/index.d.ts +337 -0
  99. package/dist/modules/artifacts/index.d.ts.map +1 -0
  100. package/dist/modules/artifacts/index.js +348 -0
  101. package/dist/modules/artifacts/index.js.map +1 -0
  102. package/dist/modules/browser/index.d.ts +516 -0
  103. package/dist/modules/browser/index.d.ts.map +1 -0
  104. package/dist/modules/browser/index.js +475 -0
  105. package/dist/modules/browser/index.js.map +1 -0
  106. package/dist/modules/calendar/index.d.ts +93 -0
  107. package/dist/modules/calendar/index.d.ts.map +1 -0
  108. package/dist/modules/calendar/index.js +131 -0
  109. package/dist/modules/calendar/index.js.map +1 -0
  110. package/dist/modules/code-sandbox/index.d.ts +317 -0
  111. package/dist/modules/code-sandbox/index.d.ts.map +1 -0
  112. package/dist/modules/code-sandbox/index.js +537 -0
  113. package/dist/modules/code-sandbox/index.js.map +1 -0
  114. package/dist/modules/content-type/index.d.ts +22 -0
  115. package/dist/modules/content-type/index.d.ts.map +1 -0
  116. package/dist/modules/content-type/index.js +66 -0
  117. package/dist/modules/content-type/index.js.map +1 -0
  118. package/dist/modules/crypto/index.d.ts +115 -0
  119. package/dist/modules/crypto/index.d.ts.map +1 -0
  120. package/dist/modules/crypto/index.js +139 -0
  121. package/dist/modules/crypto/index.js.map +1 -0
  122. package/dist/modules/document/index.d.ts +575 -0
  123. package/dist/modules/document/index.d.ts.map +1 -0
  124. package/dist/modules/document/index.js +444 -0
  125. package/dist/modules/document/index.js.map +1 -0
  126. package/dist/modules/document-extract/index.d.ts +438 -0
  127. package/dist/modules/document-extract/index.d.ts.map +1 -0
  128. package/dist/modules/document-extract/index.js +127 -0
  129. package/dist/modules/document-extract/index.js.map +1 -0
  130. package/dist/modules/document-render/index.d.ts +336 -0
  131. package/dist/modules/document-render/index.d.ts.map +1 -0
  132. package/dist/modules/document-render/index.js +155 -0
  133. package/dist/modules/document-render/index.js.map +1 -0
  134. package/dist/modules/email/index.d.ts +311 -0
  135. package/dist/modules/email/index.d.ts.map +1 -0
  136. package/dist/modules/email/index.js +167 -0
  137. package/dist/modules/email/index.js.map +1 -0
  138. package/dist/modules/email-message/index.d.ts +95 -0
  139. package/dist/modules/email-message/index.d.ts.map +1 -0
  140. package/dist/modules/email-message/index.js +264 -0
  141. package/dist/modules/email-message/index.js.map +1 -0
  142. package/dist/modules/file-convert/index.d.ts +273 -0
  143. package/dist/modules/file-convert/index.d.ts.map +1 -0
  144. package/dist/modules/file-convert/index.js +103 -0
  145. package/dist/modules/file-convert/index.js.map +1 -0
  146. package/dist/modules/files/index.d.ts +452 -0
  147. package/dist/modules/files/index.d.ts.map +1 -0
  148. package/dist/modules/files/index.js +733 -0
  149. package/dist/modules/files/index.js.map +1 -0
  150. package/dist/modules/image/index.d.ts +342 -0
  151. package/dist/modules/image/index.d.ts.map +1 -0
  152. package/dist/modules/image/index.js +281 -0
  153. package/dist/modules/image/index.js.map +1 -0
  154. package/dist/modules/messaging/index.d.ts +608 -0
  155. package/dist/modules/messaging/index.d.ts.map +1 -0
  156. package/dist/modules/messaging/index.js +1067 -0
  157. package/dist/modules/messaging/index.js.map +1 -0
  158. package/dist/modules/pdf/index.d.ts +287 -0
  159. package/dist/modules/pdf/index.d.ts.map +1 -0
  160. package/dist/modules/pdf/index.js +259 -0
  161. package/dist/modules/pdf/index.js.map +1 -0
  162. package/dist/modules/presentation/index.d.ts +247 -0
  163. package/dist/modules/presentation/index.d.ts.map +1 -0
  164. package/dist/modules/presentation/index.js +12657 -0
  165. package/dist/modules/presentation/index.js.map +1 -0
  166. package/dist/modules/queue/index.d.ts +129 -0
  167. package/dist/modules/queue/index.d.ts.map +1 -0
  168. package/dist/modules/queue/index.js +131 -0
  169. package/dist/modules/queue/index.js.map +1 -0
  170. package/dist/modules/rag/index.d.ts +250 -0
  171. package/dist/modules/rag/index.d.ts.map +1 -0
  172. package/dist/modules/rag/index.js +366 -0
  173. package/dist/modules/rag/index.js.map +1 -0
  174. package/dist/modules/scheduler/index.d.ts +216 -0
  175. package/dist/modules/scheduler/index.d.ts.map +1 -0
  176. package/dist/modules/scheduler/index.js +153 -0
  177. package/dist/modules/scheduler/index.js.map +1 -0
  178. package/dist/modules/skills/index.d.ts +205 -0
  179. package/dist/modules/skills/index.d.ts.map +1 -0
  180. package/dist/modules/skills/index.js +203 -0
  181. package/dist/modules/skills/index.js.map +1 -0
  182. package/dist/modules/tasks/index.d.ts +287 -0
  183. package/dist/modules/tasks/index.d.ts.map +1 -0
  184. package/dist/modules/tasks/index.js +207 -0
  185. package/dist/modules/tasks/index.js.map +1 -0
  186. package/dist/modules/vector-store/index.d.ts +3 -0
  187. package/dist/modules/vector-store/index.js +3 -0
  188. package/dist/modules/web-fetch/index.d.ts +99 -0
  189. package/dist/modules/web-fetch/index.d.ts.map +1 -0
  190. package/dist/modules/web-fetch/index.js +242 -0
  191. package/dist/modules/web-fetch/index.js.map +1 -0
  192. package/dist/object-artifact-store-CMTzCm_G.d.ts +7 -0
  193. package/dist/object-artifact-store-CMTzCm_G.d.ts.map +1 -0
  194. package/dist/object-artifact-store-wZ2j9cto.js +28 -0
  195. package/dist/object-artifact-store-wZ2j9cto.js.map +1 -0
  196. package/dist/pinecone-umY4t6OF.js +190 -0
  197. package/dist/pinecone-umY4t6OF.js.map +1 -0
  198. package/dist/provider-CgDAlg6K.js +34 -0
  199. package/dist/provider-CgDAlg6K.js.map +1 -0
  200. package/dist/qdrant-DMp4NhKR.js +253 -0
  201. package/dist/qdrant-DMp4NhKR.js.map +1 -0
  202. package/dist/resend-BAC38_dA.js +155 -0
  203. package/dist/resend-BAC38_dA.js.map +1 -0
  204. package/dist/s3-CsOaPWMP.js +955 -0
  205. package/dist/s3-CsOaPWMP.js.map +1 -0
  206. package/dist/schemas-ChOAhdo9.js +192 -0
  207. package/dist/schemas-ChOAhdo9.js.map +1 -0
  208. package/dist/slack-Di5BBNpt.js +1455 -0
  209. package/dist/slack-Di5BBNpt.js.map +1 -0
  210. package/dist/sqs-DCwS1i2N.js +225 -0
  211. package/dist/sqs-DCwS1i2N.js.map +1 -0
  212. package/dist/supabase-vector-Dpp9mmJR.js +218 -0
  213. package/dist/supabase-vector-Dpp9mmJR.js.map +1 -0
  214. package/dist/tanstack/index.d.ts +15 -0
  215. package/dist/tanstack/index.d.ts.map +1 -0
  216. package/dist/tanstack/index.js +28 -0
  217. package/dist/tanstack/index.js.map +1 -0
  218. package/dist/teams-DYAHNb39.js +835 -0
  219. package/dist/teams-DYAHNb39.js.map +1 -0
  220. package/dist/telegram-DDXWzkfL.js +734 -0
  221. package/dist/telegram-DDXWzkfL.js.map +1 -0
  222. package/dist/textract-CPLiB22H.js +554 -0
  223. package/dist/textract-CPLiB22H.js.map +1 -0
  224. package/dist/transport-B4vn-XiQ.js +157 -0
  225. package/dist/transport-B4vn-XiQ.js.map +1 -0
  226. package/dist/transport-i96ACAI_.d.ts +46 -0
  227. package/dist/transport-i96ACAI_.d.ts.map +1 -0
  228. package/dist/types-Ccb0DXY9.d.ts +150 -0
  229. package/dist/types-Ccb0DXY9.d.ts.map +1 -0
  230. package/dist/unique-EwBH1JPB.js +19 -0
  231. package/dist/unique-EwBH1JPB.js.map +1 -0
  232. package/dist/vector-store-C3nEO80e.js +193 -0
  233. package/dist/vector-store-C3nEO80e.js.map +1 -0
  234. package/dist/vendors/amazon-sp-api/index.d.ts +526 -0
  235. package/dist/vendors/amazon-sp-api/index.d.ts.map +1 -0
  236. package/dist/vendors/amazon-sp-api/index.js +975 -0
  237. package/dist/vendors/amazon-sp-api/index.js.map +1 -0
  238. package/dist/vendors/bedrock-agentcore-browser/index.d.ts +2 -0
  239. package/dist/vendors/bedrock-agentcore-browser/index.js +2 -0
  240. package/dist/vendors/bedrock-agentcore-code-interpreter/index.d.ts +228 -0
  241. package/dist/vendors/bedrock-agentcore-code-interpreter/index.d.ts.map +1 -0
  242. package/dist/vendors/bedrock-agentcore-code-interpreter/index.js +2 -0
  243. package/dist/vendors/cloudflare-browser/index.d.ts +2 -0
  244. package/dist/vendors/cloudflare-browser/index.js +2 -0
  245. package/dist/vendors/cloudflare-email/index.d.ts +260 -0
  246. package/dist/vendors/cloudflare-email/index.d.ts.map +1 -0
  247. package/dist/vendors/cloudflare-email/index.js +3 -0
  248. package/dist/vendors/cloudflare-sandbox/index.d.ts +565 -0
  249. package/dist/vendors/cloudflare-sandbox/index.d.ts.map +1 -0
  250. package/dist/vendors/cloudflare-sandbox/index.js +2 -0
  251. package/dist/vendors/eventbridge-scheduler/index.d.ts +2 -0
  252. package/dist/vendors/eventbridge-scheduler/index.js +2 -0
  253. package/dist/vendors/gotenberg/index.d.ts +306 -0
  254. package/dist/vendors/gotenberg/index.d.ts.map +1 -0
  255. package/dist/vendors/gotenberg/index.js +2 -0
  256. package/dist/vendors/imessage/index.d.ts +420 -0
  257. package/dist/vendors/imessage/index.d.ts.map +1 -0
  258. package/dist/vendors/imessage/index.js +4 -0
  259. package/dist/vendors/katana/index.d.ts +1570 -0
  260. package/dist/vendors/katana/index.d.ts.map +1 -0
  261. package/dist/vendors/katana/index.js +1639 -0
  262. package/dist/vendors/katana/index.js.map +1 -0
  263. package/dist/vendors/mastra-vector/index.d.ts +120 -0
  264. package/dist/vendors/mastra-vector/index.d.ts.map +1 -0
  265. package/dist/vendors/mastra-vector/index.js +3 -0
  266. package/dist/vendors/pinecone/index.d.ts +75 -0
  267. package/dist/vendors/pinecone/index.d.ts.map +1 -0
  268. package/dist/vendors/pinecone/index.js +3 -0
  269. package/dist/vendors/qdrant/index.d.ts +75 -0
  270. package/dist/vendors/qdrant/index.d.ts.map +1 -0
  271. package/dist/vendors/qdrant/index.js +3 -0
  272. package/dist/vendors/resend/index.d.ts +3 -0
  273. package/dist/vendors/resend/index.js +3 -0
  274. package/dist/vendors/s3/index.d.ts +2 -0
  275. package/dist/vendors/s3/index.js +2 -0
  276. package/dist/vendors/slack/index.d.ts +576 -0
  277. package/dist/vendors/slack/index.d.ts.map +1 -0
  278. package/dist/vendors/slack/index.js +3 -0
  279. package/dist/vendors/sqs/index.d.ts +2 -0
  280. package/dist/vendors/sqs/index.js +2 -0
  281. package/dist/vendors/supabase-vector/index.d.ts +89 -0
  282. package/dist/vendors/supabase-vector/index.d.ts.map +1 -0
  283. package/dist/vendors/supabase-vector/index.js +3 -0
  284. package/dist/vendors/teams/index.d.ts +303 -0
  285. package/dist/vendors/teams/index.d.ts.map +1 -0
  286. package/dist/vendors/teams/index.js +3 -0
  287. package/dist/vendors/telegram/index.d.ts +319 -0
  288. package/dist/vendors/telegram/index.d.ts.map +1 -0
  289. package/dist/vendors/telegram/index.js +3 -0
  290. package/dist/vendors/textract/index.d.ts +2 -0
  291. package/dist/vendors/textract/index.js +2 -0
  292. package/dist/vendors/woocommerce/index.d.ts +1700 -0
  293. package/dist/vendors/woocommerce/index.d.ts.map +1 -0
  294. package/dist/vendors/woocommerce/index.js +1427 -0
  295. package/dist/vendors/woocommerce/index.js.map +1 -0
  296. package/dist/with-auth-CpKqTrGK.js +240 -0
  297. package/dist/with-auth-CpKqTrGK.js.map +1 -0
  298. package/logos/LUCIDE-ATTRIBUTION.txt +4 -0
  299. package/logos/README.md +89 -0
  300. package/logos/amazon.svg +6 -0
  301. package/logos/artifacts.svg +9 -0
  302. package/logos/browser.svg +9 -0
  303. package/logos/calendar.svg +15 -0
  304. package/logos/cloudflare-browser.svg +5 -0
  305. package/logos/cloudflare-email.svg +5 -0
  306. package/logos/cloudflare.svg +4 -0
  307. package/logos/code-sandbox.svg +8 -0
  308. package/logos/content-type.svg +10 -0
  309. package/logos/crypto.svg +7 -0
  310. package/logos/document-extract.svg +12 -0
  311. package/logos/document-render.svg +8 -0
  312. package/logos/document.svg +10 -0
  313. package/logos/email-message.svg +8 -0
  314. package/logos/email.svg +7 -0
  315. package/logos/file-convert.svg +9 -0
  316. package/logos/files.svg +6 -0
  317. package/logos/gotenberg.svg +340 -0
  318. package/logos/image.svg +8 -0
  319. package/logos/imessage.svg +7 -0
  320. package/logos/katana.svg +13 -0
  321. package/logos/mastra.svg +7 -0
  322. package/logos/messaging.svg +7 -0
  323. package/logos/pack-logos.json +48 -0
  324. package/logos/pdf.svg +10 -0
  325. package/logos/pinecone.svg +25 -0
  326. package/logos/presentation.svg +8 -0
  327. package/logos/qdrant.svg +4 -0
  328. package/logos/queue.svg +11 -0
  329. package/logos/rag.svg +18 -0
  330. package/logos/resend.svg +5 -0
  331. package/logos/scheduler.svg +7 -0
  332. package/logos/skills.svg +10 -0
  333. package/logos/slack.svg +14 -0
  334. package/logos/supabase.svg +4 -0
  335. package/logos/tasks.svg +10 -0
  336. package/logos/teams.svg +6 -0
  337. package/logos/telegram.svg +10 -0
  338. package/logos/textract.svg +5 -0
  339. package/logos/vector-store.svg +8 -0
  340. package/logos/web-fetch.svg +8 -0
  341. package/logos/woocommerce.svg +4 -0
  342. package/package.json +373 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["imageTypeFromPath","unzipSync$1","xml2js","strFromU8$1","js2xml","#storage","#load","#write","#putArtifact"],"sources":["../../../src/modules/presentation/contracts.ts","../../../node_modules/@office-open/xml/dist/utils.mjs","../../../node_modules/@office-open/xml/dist/index.mjs","../../../node_modules/@office-open/core/dist/patch-BmRfghOo.mjs","../../../node_modules/@office-open/core/dist/converters-C_Y2QX1w.mjs","../../../node_modules/fflate/esm/index.mjs","../../../node_modules/@office-open/core/dist/util-Tq9PSjK0.mjs","../../../node_modules/@office-open/core/dist/smartart-B7ukZ-Tw.mjs","../../../node_modules/@office-open/core/dist/chart-DIGJna_6.mjs","../../../node_modules/@office-open/core/dist/descriptor-BjNkn5jo.mjs","../../../node_modules/@office-open/core/dist/drawingml-sj1J3lb0.mjs","../../../node_modules/@office-open/core/dist/theme-CiNzdl-9.mjs","../../../node_modules/@office-open/core/dist/index.mjs","../../../node_modules/@office-open/pptx/dist/view-properties-u0DngwjR.mjs","../../../node_modules/@office-open/pptx/dist/parse.mjs","../../../src/modules/presentation/formats/presentation.ts","../../../src/modules/presentation/client.ts","../../../src/modules/presentation/module.ts"],"sourcesContent":["/**\n * Presentation contracts for reading, building, and editing PPTX artifacts.\n * Auth: nested object storage for ArtifactRef IO.\n */\n\nimport { z } from 'zod'\n\nimport { artifactRefSchema } from '../../shared/artifact'\nimport {\n\tMAX_REPLACEMENTS,\n\tdocumentAuthSchema,\n\tdocumentBuildOutputSchema,\n\tdocumentTableSchema\n} from '../document/contracts'\n\nexport const MAX_SLIDES = 50\n\nexport const presentationAuthSchema = documentAuthSchema\nexport const presentationBuildOutputSchema = documentBuildOutputSchema\n\nexport const presentationSourceSchema = z\n\t.object({\n\t\tartifact: artifactRefSchema.optional().describe('Object-store PPTX artifact to read (store must be object)'),\n\t\tbody_base64: z.string().min(1).optional().describe('Inline PPTX bytes as base64 (small files only)'),\n\t\tfilename: z.string().min(1).optional().describe('PPTX filename'),\n\t\tmedia_type: z.string().min(1).optional().describe('PPTX MIME type')\n\t})\n\t.superRefine((value, context) => {\n\t\tif ((value.artifact === undefined) === (value.body_base64 === undefined)) {\n\t\t\tcontext.addIssue({\n\t\t\t\tcode: 'custom',\n\t\t\t\tmessage: 'Provide exactly one of artifact or body_base64'\n\t\t\t})\n\t\t}\n\t})\n\nexport const presentationSlideSchema = z.object({\n\ttitle: z.string().max(500).optional().describe('Slide title'),\n\tbullets: z.array(z.string().max(2_000)).max(40).optional().describe('Bullet lines'),\n\tnotes: z.string().max(5_000).optional().describe('Speaker notes')\n})\n\nexport const presentationReplacementSchema = z.object({\n\tfind: z.string().min(1).max(20_000).describe('Exact existing text to find'),\n\treplace: z.string().max(20_000).describe('Replacement text')\n})\n\nexport const presentationReadInputSchema = z.object({\n\tsource: presentationSourceSchema.describe(\n\t\t'PPTX presentation to read. For an ArtifactRef, pass { artifact: <ArtifactRef> }; do not pass the reference directly.'\n\t)\n})\n\nexport const presentationReadOutputSchema = z.object({\n\tformat: z.literal('pptx'),\n\ttext: z.string().optional().describe('Extracted plain text'),\n\tslides: z.array(presentationSlideSchema).describe('Structured presentation slides'),\n\ttables: z.array(documentTableSchema).optional().describe('Tables extracted from slides'),\n\tfilename: z.string().optional(),\n\tmedia_type: z.string().optional(),\n\tbyte_length: z.int().nonnegative()\n})\n\nexport const presentationBuildInputSchema = z.object({\n\ttitle: z.string().max(500).optional().describe('Presentation title metadata'),\n\tslides: z.array(presentationSlideSchema).min(1).max(MAX_SLIDES).describe('Slides to create'),\n\toutput_key: z.string().min(1).describe('Object key for the .pptx artifact'),\n\tfilename: z.string().min(1).optional().describe('Display filename (defaults to deck.pptx)')\n})\n\nexport const presentationEditInputSchema = z.object({\n\tsource: presentationSourceSchema.describe(\n\t\t'Existing PPTX presentation. For an ArtifactRef, pass { artifact: <ArtifactRef> }; do not pass the reference directly.'\n\t),\n\treplacements: z\n\t\t.array(presentationReplacementSchema)\n\t\t.min(1)\n\t\t.max(MAX_REPLACEMENTS)\n\t\t.describe('Layout-preserving global text replacements'),\n\toutput_key: z.string().min(1).describe('Object key for the written .pptx artifact'),\n\tfilename: z.string().min(1).optional().describe('Display filename')\n})\n\nexport type PresentationAuth = z.infer<typeof presentationAuthSchema>\nexport type PresentationSlide = z.infer<typeof presentationSlideSchema>\nexport type PresentationReplacement = z.infer<typeof presentationReplacementSchema>\nexport type PresentationReadInput = z.infer<typeof presentationReadInputSchema>\nexport type PresentationReadOutput = z.infer<typeof presentationReadOutputSchema>\nexport type PresentationBuildInput = z.infer<typeof presentationBuildInputSchema>\nexport type PresentationEditInput = z.infer<typeof presentationEditInputSchema>\n","//#region src/utils.ts\n/**\n* User-defined type guard narrowing an array to {@link NonEmptyArray}.\n* Prefer this over a bare `arr.length > 0` check, which TypeScript does\n* not reliably narrow into a non-empty tuple at the read site.\n*/\nconst isNonEmpty = (arr) => arr.length > 0;\n/**\n* Find the first direct child element with the given name.\n*/\nfunction findChild(parent, name) {\n\treturn parent?.elements?.find((e) => e.name === name);\n}\n/**\n* Get all direct child elements matching the given name.\n*/\nfunction children(parent, name) {\n\treturn parent?.elements?.filter((e) => e.name === name) ?? [];\n}\n/**\n* Get all direct child elements.\n*/\nfunction allChildren(parent) {\n\treturn parent?.elements ?? [];\n}\n/**\n* Get text content of the first child element with the given name.\n*/\nfunction childText(parent, name) {\n\treturn textOf(findChild(parent, name));\n}\n/**\n* Get text content of an element.\n* Handles cases where text may be directly on .text or in a child element.\n*/\nfunction textOf(element) {\n\tif (!element) return \"\";\n\tif (element.text !== void 0 && typeof element.text === \"string\") return element.text;\n\tif (element.elements && element.elements.length > 0) {\n\t\tlet text = \"\";\n\t\tfor (const e of element.elements) if (typeof e.text === \"string\") text += e.text;\n\t\treturn text;\n\t}\n\treturn \"\";\n}\n/**\n* Collect text from all direct text nodes within an element.\n*/\nfunction collectText(element) {\n\tif (!element) return \"\";\n\tconst parts = [];\n\tcollectTextRecursive(element, parts);\n\treturn parts.join(\"\");\n}\nfunction collectTextRecursive(element, parts) {\n\tif (!element) return;\n\tif (element.text !== void 0 && typeof element.text === \"string\") parts.push(element.text);\n\tif (element.elements) for (const child of element.elements) collectTextRecursive(child, parts);\n}\n/**\n* Get an attribute value as a string.\n*/\nfunction attr(element, name) {\n\tconst v = element?.attributes?.[name];\n\treturn v !== void 0 ? String(v) : void 0;\n}\n/**\n* Get an attribute value as a number.\n*/\nfunction attrNum(element, name) {\n\tconst v = element?.attributes?.[name];\n\tif (v === void 0) return void 0;\n\tconst n = Number(v);\n\treturn isNaN(n) ? void 0 : n;\n}\n/**\n* Get a measurement attribute as a number or a verbatim measure/percent string.\n*\n* Counterpart to {@link attrNum} for XSD attribute unions of a decimal number\n* and UniversalMeasure/Percentage (ST_TwipsMeasure, ST_MeasurementOrPercent,\n* CT_TblWidth/@w, CT_Height/@val): a plain numeric token yields a number, while\n* UniversalMeasure (\"5mm\") and Percentage (\"50%\") stay verbatim so they\n* round-trip with the stringify-side value helpers in @office-open/core.\n*\n* For CT_TblWidth with type=\"pct\", the fiftieths token (\"5000\" = 100%) is a\n* plain numeric token and is returned as the number 5000; the stringify side\n* emits it verbatim (never \"5000%\", which is a different XSD branch).\n*/\nfunction attrMeasure(element, name) {\n\tconst v = element?.attributes?.[name];\n\tif (v === void 0) return void 0;\n\tconst raw = String(v);\n\tconst n = Number(raw);\n\treturn Number.isNaN(n) ? raw : n;\n}\n/**\n* Get an attribute value as a boolean.\n*/\nfunction attrBool(element, name) {\n\tconst v = element?.attributes?.[name];\n\tif (v === void 0) return void 0;\n\tif (typeof v === \"boolean\") return v;\n\tconst lower = String(v).toLowerCase();\n\tif (lower === \"true\" || lower === \"1\") return true;\n\tif (lower === \"false\" || lower === \"0\") return false;\n}\n/**\n* Get a hex color attribute, handling nativeTypeValue coercion.\n* nativeTypeAttributes converts \"000000\" → 0 (number); this recovers\n* the original 6-digit hex string by zero-padding numeric values.\n*/\nfunction colorAttr(element, name) {\n\tconst raw = element?.attributes?.[name];\n\tif (raw === void 0 || raw === \"\") return void 0;\n\tif (typeof raw === \"boolean\") return void 0;\n\tif (typeof raw === \"number\") return String(raw).padStart(6, \"0\");\n\tif (raw === \"auto\") return \"auto\";\n\tif (/^[0-9A-Fa-f]{6}$/.test(raw)) return raw;\n\treturn raw;\n}\n/**\n* Check if an element has a specific child element.\n*/\nfunction hasChild(parent, name) {\n\treturn parent?.elements?.some((e) => e.name === name) ?? false;\n}\n/**\n* Find deep descendant elements matching the given name.\n*/\nfunction findDeep(parent, name) {\n\tconst result = [];\n\tcollectDeep(parent, name, result);\n\treturn result;\n}\nfunction collectDeep(parent, name, result) {\n\tif (!parent) return;\n\tfor (const child of parent.elements ?? []) {\n\t\tif (child.name === name) result.push(child);\n\t\tcollectDeep(child, name, result);\n\t}\n}\n/**\n* Find the first descendant element with the given name (depth-first pre-order).\n* Short-circuits at the first match — prefer this over `findDeep(parent, name)[0]`\n* to avoid traversing the whole subtree and allocating the full results array.\n*/\nfunction findFirst(parent, name) {\n\tif (!parent) return void 0;\n\tfor (const child of parent.elements ?? []) {\n\t\tif (child.name === name) return child;\n\t\tconst found = findFirst(child, name);\n\t\tif (found) return found;\n\t}\n}\n/**\n* Get the number of direct child elements.\n*/\nfunction childCount(parent) {\n\treturn parent?.elements?.length ?? 0;\n}\n//#endregion\nexport { allChildren, attr, attrBool, attrMeasure, attrNum, childCount, childText, children, collectText, colorAttr, findChild, findDeep, findFirst, hasChild, isNonEmpty, textOf };\n\n//# sourceMappingURL=utils.mjs.map","import { allChildren, attr, attrBool, attrMeasure, attrNum, childCount, childText, children, collectText, colorAttr, findChild, findDeep, findFirst, hasChild, isNonEmpty, textOf } from \"./utils.mjs\";\n//#region src/escape.ts\n/** Escape text content for XML. Fast path returns original string when no special chars. */\nfunction escapeXml(str) {\n\tfor (let i = 0; i < str.length; i++) {\n\t\tconst c = str.charCodeAt(i);\n\t\tif (c === 38 || c === 34 || c === 39 || c === 60 || c === 62) {\n\t\t\tlet s = \"\";\n\t\t\tlet last = 0;\n\t\t\tfor (let j = i; j < str.length; j++) {\n\t\t\t\tconst cj = str.charCodeAt(j);\n\t\t\t\tif (cj === 38) {\n\t\t\t\t\ts += str.slice(last, j) + \"&amp;\";\n\t\t\t\t\tlast = j + 1;\n\t\t\t\t} else if (cj === 34) {\n\t\t\t\t\ts += str.slice(last, j) + \"&quot;\";\n\t\t\t\t\tlast = j + 1;\n\t\t\t\t} else if (cj === 39) {\n\t\t\t\t\ts += str.slice(last, j) + \"&apos;\";\n\t\t\t\t\tlast = j + 1;\n\t\t\t\t} else if (cj === 60) {\n\t\t\t\t\ts += str.slice(last, j) + \"&lt;\";\n\t\t\t\t\tlast = j + 1;\n\t\t\t\t} else if (cj === 62) {\n\t\t\t\t\ts += str.slice(last, j) + \"&gt;\";\n\t\t\t\t\tlast = j + 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn s + str.slice(last);\n\t\t}\n\t}\n\treturn str;\n}\n/**\n* Build an XML attribute string fragment from a record.\n* `undefined` values are automatically skipped.\n* String values are escaped via `escapeXml`.\n*\n* @example\n* attrs({ id: 1, name: \"foo\", hidden: undefined })\n* // => ' id=\"1\" name=\"foo\"'\n*/\nfunction attrs(record) {\n\tconst parts = [];\n\tfor (const [key, v] of Object.entries(record)) if (v !== void 0) parts.push(` ${key}=\"${typeof v === \"string\" ? escapeXml(v) : v}\"`);\n\treturn parts.join(\"\");\n}\n/**\n* Build an XML attribute string without escaping.\n*\n* Same as `attrs()` but skips `typeof` checks and `escapeXml` — use only when\n* all values are known-safe (numbers, booleans, or strings free of `& \" ' < >`).\n* Avoids per-call array and `Object.keys()` allocation in hot loops.\n*\n* @example\n* attrsRaw({ r: \"A1\", s: 5 })\n* // => ' r=\"A1\" s=\"5\"'\n*/\nfunction attrsRaw(record) {\n\tlet s = \"\";\n\tfor (const key in record) {\n\t\tconst v = record[key];\n\t\tif (v !== void 0) s += ` ${key}=\"${v}\"`;\n\t}\n\treturn s;\n}\n/**\n* Build a self-closing XML element: `<tag attrStr/>`.\n* `attrStr` is a pre-serialized attribute string (from `attrs()`) or undefined.\n*/\nfunction selfCloseElement(tag, attrStr) {\n\treturn attrStr ? `<${tag}${attrStr}/>` : `<${tag}/>`;\n}\n/**\n* Build a complete XML element string from name, optional attributes, and string children.\n*\n* Replaces `new BuilderElement({...})` + `.toXml()` / `.serialize()` with a\n* single function call returning a string — zero object allocation.\n*\n* @param name Element tag name (e.g. `\"a:srgbClr\"`)\n* @param attrRecord Optional flat attribute map; `undefined` values are skipped\n* @param children Optional pre-serialized child XML strings\n*\n* @example\n* ```ts\n* element(\"a:solidFill\", undefined, [element(\"a:srgbClr\", { val: \"FF0000\" })])\n* // => '<a:solidFill><a:srgbClr val=\"FF0000\"/></a:solidFill>'\n* ```\n*/\nfunction element(name, attrRecord, children) {\n\tconst attrStr = attrRecord ? attrs(attrRecord) : void 0;\n\tif (!children || children.length === 0) return selfCloseElement(name, attrStr);\n\tconst body = children.join(\"\");\n\treturn body.length === 0 ? selfCloseElement(name, attrStr) : `<${name}${attrStr ?? \"\"}>${body}</${name}>`;\n}\n//#endregion\n//#region src/serialize.ts\nconst DEFAULT_INDENT = \" \";\n/**\n* Serialize a Record-based XML object tree to an XML string.\n* @deprecated Use `stringify` (Element → string) instead. This object-tree path\n* will be removed once the Descriptor migration is complete.\n*/\nfunction xml(input, options) {\n\tconst opts = normalizeOptions$1(options);\n\tconst parts = [];\n\tif (opts.declaration) {\n\t\tconst declOpts = opts.declaration === true ? {} : opts.declaration;\n\t\tconst enc = declOpts.encoding || \"UTF-8\";\n\t\tconst sa = declOpts.standalone;\n\t\tconst declParts = [`<?xml version=\"1.0\" encoding=\"${enc}\"`];\n\t\tif (sa) declParts.push(` standalone=\"${sa}\"`);\n\t\tdeclParts.push(\"?>\");\n\t\tparts.push(declParts.join(\"\"));\n\t\tif (opts.indent) parts.push(\"\\n\");\n\t}\n\tconst items = Array.isArray(input) ? input : [input];\n\tfor (let i = 0; i < items.length; i++) {\n\t\tconst item = items[i];\n\t\tif (!item) continue;\n\t\tconst key = Object.keys(item)[0];\n\t\tif (!key) continue;\n\t\tparts.push(formatElement(key, item[key], opts.indent, 0));\n\t\tif (opts.indent && i < items.length - 1) parts.push(\"\\n\");\n\t}\n\treturn parts.join(\"\");\n}\nfunction normalizeOptions$1(options) {\n\tconst opts = typeof options === \"object\" && !Array.isArray(options) ? options : { indent: options };\n\tlet indent = \"\";\n\tif (opts.indent) indent = opts.indent === true ? DEFAULT_INDENT : String(opts.indent);\n\treturn {\n\t\tindent,\n\t\tdeclaration: opts.declaration\n\t};\n}\n/**\n* Single-pass XML formatter: directly converts a Record-based XML object to string,\n* eliminating the intermediate ResolvedElement tree.\n*/\nfunction formatElement(name, values, indent, depth) {\n\tconst attrParts = [];\n\tconst textParts = [];\n\tconst elemParts = [];\n\tlet emptyArray = false;\n\tif (values == null) {\n\t\tconst attrStr = attrParts.length ? \" \" + attrParts.join(\" \") : \"\";\n\t\treturn `${indent ? indent.repeat(depth) : \"\"}<${name}${attrStr}/>`;\n\t}\n\tif (typeof values === \"object\") {\n\t\tconst obj = values;\n\t\tif (obj._attr) {\n\t\t\tconst attr = obj._attr;\n\t\t\tfor (const key of Object.keys(attr)) attrParts.push(`${key}=\"${escapeXml(String(attr[key]))}\"`);\n\t\t}\n\t\tif (obj._attributes) {\n\t\t\tconst attr = obj._attributes;\n\t\t\tfor (const key of Object.keys(attr)) attrParts.push(`${key}=\"${escapeXml(String(attr[key]))}\"`);\n\t\t}\n\t\tif (obj._cdata) {\n\t\t\tconst escaped = String(obj._cdata).replace(/\\]\\]>/g, \"]]]]><![CDATA[>\");\n\t\t\ttextParts.push(`<![CDATA[${escaped}]]>`);\n\t\t}\n\t\tif (Array.isArray(values)) {\n\t\t\tif (values.length === 0) emptyArray = true;\n\t\t\telse for (const value of values) if (value && typeof value === \"object\" && \"_attr\" in value) {\n\t\t\t\tconst attr = value._attr;\n\t\t\t\tfor (const key of Object.keys(attr)) attrParts.push(`${key}=\"${escapeXml(String(attr[key]))}\"`);\n\t\t\t} else if (value && typeof value === \"object\" && \"_attributes\" in value) {\n\t\t\t\tconst attr = value._attributes;\n\t\t\t\tfor (const key of Object.keys(attr)) attrParts.push(`${key}=\"${escapeXml(String(attr[key]))}\"`);\n\t\t\t} else if (value && typeof value === \"object\") {\n\t\t\t\tconst childKey = Object.keys(value)[0];\n\t\t\t\tif (childKey) elemParts.push(formatElement(childKey, value[childKey], indent, depth + 1));\n\t\t\t} else if (value != null) textParts.push(escapeXml(String(value)));\n\t\t}\n\t} else textParts.push(escapeXml(String(values)));\n\tconst ind = indent ? indent.repeat(depth) : \"\";\n\tconst attrStr = attrParts.length ? \" \" + attrParts.join(\" \") : \"\";\n\tif (textParts.length + elemParts.length === 0) return emptyArray ? `${ind}<${name}${attrStr}></${name}>` : `${ind}<${name}${attrStr}/>`;\n\tif (elemParts.length === 0 && textParts.length === 1) return indent ? `${ind}<${name}${attrStr}>${textParts[0]}</${name}>` : `<${name}${attrStr}>${textParts[0]}</${name}>`;\n\tconst parts = [];\n\tparts.push(`${ind}<${name}${attrStr}>`);\n\tif (indent) parts.push(\"\\n\");\n\tconst childIndent = indent ? indent.repeat(depth + 1) : \"\";\n\tfor (const t of textParts) {\n\t\tparts.push(`${childIndent}${t}`);\n\t\tif (indent) parts.push(\"\\n\");\n\t}\n\tfor (const e of elemParts) {\n\t\tparts.push(e);\n\t\tif (indent) parts.push(\"\\n\");\n\t}\n\tparts.push(`${ind}</${name}>`);\n\treturn parts.join(\"\");\n}\n//#endregion\n//#region src/parse.ts\nconst ENTITY_MAP = {\n\t\"&amp;\": \"&\",\n\t\"&lt;\": \"<\",\n\t\"&gt;\": \">\",\n\t\"&quot;\": \"\\\"\",\n\t\"&apos;\": \"'\"\n};\nconst ENTITY_PATTERN = /&(?:amp|lt|gt|quot|apos|#x[0-9a-fA-F]+|#[0-9]+);/g;\nfunction unescapeXml(str) {\n\treturn str.replace(ENTITY_PATTERN, (match) => {\n\t\tif (ENTITY_MAP[match] !== void 0) return ENTITY_MAP[match];\n\t\tconst body = match.slice(2, -1);\n\t\tconst code = body[0] === \"x\" || body[0] === \"X\" ? parseInt(body.slice(1), 16) : parseInt(body, 10);\n\t\treturn Number.isFinite(code) && code >= 0 ? String.fromCodePoint(code) : match;\n\t});\n}\nfunction nativeTypeValue(value) {\n\tif (value === \"\") return value;\n\tconst n = Number(value);\n\tif (!isNaN(n) && String(n) === value) return n;\n\tconst lower = value.toLowerCase();\n\tif (lower === \"true\") return true;\n\tif (lower === \"false\") return false;\n\treturn value;\n}\nfunction parse(xmlString, options) {\n\tconst captureSpaces = options?.captureSpacesBetweenElements ?? false;\n\tconst trim = options?.trim ?? false;\n\tconst ignoreDeclaration = options?.ignoreDeclaration ?? false;\n\tconst ignoreText = options?.ignoreText ?? false;\n\tconst ignoreComment = options?.ignoreComment ?? false;\n\tconst ignoreCdata = options?.ignoreCdata ?? false;\n\tconst ignoreDoctype = options?.ignoreDoctype ?? false;\n\tconst nativeTypeAttributes = options?.nativeTypeAttributes ?? false;\n\tconst result = {};\n\tconst stack = [result];\n\tlet i = 0;\n\tconst len = xmlString.length;\n\twhile (i < len) {\n\t\tif (xmlString.charCodeAt(i) !== 60) {\n\t\t\tconst start = i;\n\t\t\twhile (i < len && xmlString.charCodeAt(i) !== 60) i++;\n\t\t\tlet text = unescapeXml(xmlString.slice(start, i));\n\t\t\tif (trim) text = text.trim();\n\t\t\tif (ignoreText) continue;\n\t\t\tif (text.length > 0) {\n\t\t\t\tif (captureSpaces || text.trim().length > 0 || isPreserveContext(stack)) addField(peek(stack), \"text\", text);\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\ti++;\n\t\tif (xmlString.charCodeAt(i) === 63) {\n\t\t\tconst end = xmlString.indexOf(\"?>\", i + 1);\n\t\t\tif (end === -1) break;\n\t\t\tconst body = xmlString.slice(i + 1, end);\n\t\t\ti = end + 2;\n\t\t\tconst xmlMatch = body.match(/^xml\\s+(.*)$/s);\n\t\t\tif (xmlMatch) {\n\t\t\t\tif (!ignoreDeclaration) {\n\t\t\t\t\tif (!result.declaration) result.declaration = {};\n\t\t\t\t\tconst attrs = parseAttributes(xmlMatch[1] ?? \"\");\n\t\t\t\t\tif (nativeTypeAttributes) for (const key in attrs) attrs[key] = nativeTypeValue(attrs[key]);\n\t\t\t\t\tresult.declaration.attributes = attrs;\n\t\t\t\t}\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tif (xmlString.charCodeAt(i) === 33 && xmlString.slice(i, i + 3) === \"!--\") {\n\t\t\tconst end = xmlString.indexOf(\"-->\", i + 3);\n\t\t\tif (end === -1) break;\n\t\t\tconst comment = xmlString.slice(i + 3, end);\n\t\t\ti = end + 3;\n\t\t\tif (!ignoreComment) if (trim) addField(peek(stack), \"comment\", comment.trim());\n\t\t\telse addField(peek(stack), \"comment\", comment);\n\t\t\tcontinue;\n\t\t}\n\t\tif (xmlString.charCodeAt(i) === 33 && xmlString.slice(i, i + 8) === \"![CDATA[\") {\n\t\t\tconst end = xmlString.indexOf(\"]]>\", i + 8);\n\t\t\tif (end === -1) break;\n\t\t\tconst cdata = xmlString.slice(i + 8, end);\n\t\t\ti = end + 3;\n\t\t\tif (!ignoreCdata) if (trim) addField(peek(stack), \"cdata\", cdata.trim());\n\t\t\telse addField(peek(stack), \"cdata\", cdata);\n\t\t\tcontinue;\n\t\t}\n\t\tif (xmlString.charCodeAt(i) === 33 && xmlString.slice(i, i + 9) === \"!DOCTYPE\") {\n\t\t\tconst end = xmlString.indexOf(\">\", i + 9);\n\t\t\tif (end === -1) break;\n\t\t\tconst doctype = xmlString.slice(i + 9, end).trim();\n\t\t\ti = end + 1;\n\t\t\tif (!ignoreDoctype) addField(peek(stack), \"doctype\", doctype);\n\t\t\tcontinue;\n\t\t}\n\t\tif (xmlString.charCodeAt(i) === 47) {\n\t\t\tconst end = xmlString.indexOf(\">\", i + 1);\n\t\t\tif (end === -1) break;\n\t\t\ti = end + 1;\n\t\t\tstack.pop();\n\t\t\tcontinue;\n\t\t}\n\t\tconst tagNameEnd = findTagNameEnd(xmlString, i);\n\t\tconst tagName = xmlString.slice(i, tagNameEnd);\n\t\tlet pos = tagNameEnd;\n\t\tconst attributes = parseAttributesFromXml(xmlString, pos);\n\t\tpos = attributes.pos;\n\t\tif (nativeTypeAttributes) for (const key in attributes.attrs) attributes.attrs[key] = nativeTypeValue(attributes.attrs[key]);\n\t\tconst isSelfClosing = xmlString.charCodeAt(pos) === 47;\n\t\tif (isSelfClosing) pos += 2;\n\t\telse pos++;\n\t\tconst element = {\n\t\t\ttype: \"element\",\n\t\t\tname: tagName\n\t\t};\n\t\tif (Object.keys(attributes.attrs).length > 0) element.attributes = attributes.attrs;\n\t\tconst parent = peek(stack);\n\t\tif (!parent.elements) parent.elements = [];\n\t\tparent.elements.push(element);\n\t\tif (!isSelfClosing) stack.push(element);\n\t\ti = pos;\n\t}\n\tif (result.elements) {\n\t\tconst temp = result.elements;\n\t\tdelete result.elements;\n\t\tresult.elements = temp;\n\t\tdelete result.text;\n\t}\n\treturn result;\n}\nfunction findTagNameEnd(str, start) {\n\tlet i = start;\n\tconst len = str.length;\n\twhile (i < len) {\n\t\tconst ch = str.charCodeAt(i);\n\t\tif (ch === 32 || ch === 9 || ch === 10 || ch === 13 || ch === 47 || ch === 62) return i;\n\t\ti++;\n\t}\n\treturn i;\n}\nfunction parseAttributesFromXml(str, start) {\n\tconst attrs = {};\n\tlet i = start;\n\tconst len = str.length;\n\twhile (i < len) {\n\t\twhile (i < len && isWhitespace(str.charCodeAt(i))) i++;\n\t\tif (i >= len || str.charCodeAt(i) === 62 || str.charCodeAt(i) === 47) break;\n\t\tconst nameStart = i;\n\t\twhile (i < len && str.charCodeAt(i) !== 61) {\n\t\t\tif (str.charCodeAt(i) === 62 || str.charCodeAt(i) === 47) break;\n\t\t\ti++;\n\t\t}\n\t\tconst name = str.slice(nameStart, i);\n\t\tif (str.charCodeAt(i) !== 61) break;\n\t\ti++;\n\t\twhile (i < len && isWhitespace(str.charCodeAt(i))) i++;\n\t\tconst quote = str.charCodeAt(i);\n\t\tif (quote !== 34 && quote !== 39) break;\n\t\ti++;\n\t\tconst valueStart = i;\n\t\twhile (i < len && str.charCodeAt(i) !== quote) i++;\n\t\tattrs[name] = unescapeXml(str.slice(valueStart, i));\n\t\ti++;\n\t}\n\treturn {\n\t\tattrs,\n\t\tpos: i\n\t};\n}\nfunction parseAttributes(str) {\n\tconst result = {};\n\tlet i = 0;\n\tconst len = str.length;\n\twhile (i < len) {\n\t\twhile (i < len && isWhitespace(str.charCodeAt(i))) i++;\n\t\tif (i >= len) break;\n\t\tconst nameStart = i;\n\t\twhile (i < len && str.charCodeAt(i) !== 61) {\n\t\t\tif (isWhitespace(str.charCodeAt(i))) break;\n\t\t\ti++;\n\t\t}\n\t\tconst name = str.slice(nameStart, i);\n\t\twhile (i < len && isWhitespace(str.charCodeAt(i))) i++;\n\t\tif (i >= len || str.charCodeAt(i) !== 61) break;\n\t\ti++;\n\t\twhile (i < len && isWhitespace(str.charCodeAt(i))) i++;\n\t\tconst quote = str.charCodeAt(i);\n\t\tif (quote !== 34 && quote !== 39) break;\n\t\ti++;\n\t\tconst valueStart = i;\n\t\twhile (i < len && str.charCodeAt(i) !== quote) i++;\n\t\tresult[name] = unescapeXml(str.slice(valueStart, i));\n\t\ti++;\n\t}\n\treturn result;\n}\n/**\n* Top of the parse stack. The stack is guaranteed non-empty — the result root\n* is pushed at init and push/pop stay balanced across well-formed input — so\n* this is a compile-time narrow (one non-null assertion) rather than a runtime\n* check: it must not add a throw path that changes how `parse` surfaces\n* malformed documents. Centralising the access keeps that single `!` off the\n* read sites, matching the \"wrap indexed access behind a helper\" pattern.\n*/\nfunction peek(stack) {\n\treturn stack[stack.length - 1];\n}\nfunction addField(parent, type, value) {\n\tif (!parent.elements) parent.elements = [];\n\tif (type === \"text\" || type === \"cdata\") {\n\t\tconst last = parent.elements[parent.elements.length - 1];\n\t\tif (last && last.type === type) {\n\t\t\tconst key = type;\n\t\t\tlast[key] = last[key] + value;\n\t\t\treturn;\n\t\t}\n\t}\n\tconst element = { type };\n\telement[type] = value;\n\tparent.elements.push(element);\n}\n/** True when the nearest ancestor with an explicit xml:space sets \"preserve\". */\nfunction isPreserveContext(stack) {\n\tfor (let i = stack.length - 1; i >= 0; i--) {\n\t\tconst node = stack[i];\n\t\tif (!node) continue;\n\t\tconst space = node.attributes?.[\"xml:space\"];\n\t\tif (space !== void 0) return space === \"preserve\";\n\t}\n\treturn false;\n}\nfunction isWhitespace(ch) {\n\treturn ch === 32 || ch === 9 || ch === 10 || ch === 13;\n}\n//#endregion\n//#region src/stringify.ts\nfunction stringify(js, options) {\n\tconst opts = normalizeOptions(options);\n\tconst parts = [];\n\tif (js.declaration && !opts.ignoreDeclaration) parts.push(writeDeclaration(js.declaration));\n\tif (js.elements?.length) parts.push(writeElements(js.elements, opts, 0, !parts.length));\n\treturn parts.join(\"\");\n}\n/** @deprecated Use `stringify` instead. xml-js compatible alias. */\nfunction json2xml(json, options) {\n\treturn stringify(json, options);\n}\nfunction normalizeOptions(options) {\n\tif (!options) return {\n\t\tspaces: \"\",\n\t\tignoreDeclaration: false,\n\t\tignoreText: false,\n\t\tignoreComment: false,\n\t\tignoreCdata: false,\n\t\tignoreDoctype: false,\n\t\tfullTagEmptyElement: false,\n\t\tindentText: false,\n\t\tindentCdata: false\n\t};\n\tlet spaces = \"\";\n\tif (options.spaces != null) spaces = typeof options.spaces === \"number\" ? \" \".repeat(options.spaces) : options.spaces;\n\treturn {\n\t\tspaces,\n\t\tignoreDeclaration: options.ignoreDeclaration ?? false,\n\t\tignoreText: options.ignoreText ?? false,\n\t\tignoreComment: options.ignoreComment ?? false,\n\t\tignoreCdata: options.ignoreCdata ?? false,\n\t\tignoreDoctype: options.ignoreDoctype ?? false,\n\t\tfullTagEmptyElement: options.fullTagEmptyElement ?? false,\n\t\tindentText: options.indentText ?? false,\n\t\tindentCdata: options.indentCdata ?? false,\n\t\tattributeValueFn: options.attributeValueFn\n\t};\n}\nfunction writeIndentation(spaces, depth, firstLine) {\n\treturn (!firstLine && spaces ? \"\\n\" : \"\") + spaces.repeat(depth);\n}\nfunction writeDeclaration(declaration) {\n\tconst attrs = declaration.attributes;\n\tif (!attrs) return \"<?xml version=\\\"1.0\\\"?>\";\n\tconst parts = [`<?xml version=\"1.0\"`];\n\tif (attrs.encoding) parts.push(` encoding=\"${attrs.encoding}\"`);\n\tif (attrs.standalone) parts.push(` standalone=\"${attrs.standalone}\"`);\n\treturn parts.join(\"\") + \"?>\";\n}\nfunction writeAttributes(attributes, elementName, element, attributeValueFn) {\n\tconst parts = [];\n\tfor (const key of Object.keys(attributes)) {\n\t\tconst value = attributes[key];\n\t\tif (value === null || value === void 0) continue;\n\t\tconst raw = String(value);\n\t\tconst attr = attributeValueFn ? attributeValueFn(raw, key, elementName, element) : escapeXml(raw);\n\t\tparts.push(` ${key}=\"${attr}\"`);\n\t}\n\treturn parts.join(\"\");\n}\nfunction writeElement(element, opts, depth) {\n\tif (!element.name) return \"\";\n\tconst name = element.name;\n\tconst attrStr = element.attributes ? writeAttributes(element.attributes, name, element, opts.attributeValueFn) : \"\";\n\tif (!((element.elements?.length ?? 0) > 0 || element.attributes?.[\"xml:space\"] === \"preserve\" || opts.fullTagEmptyElement)) return `<${name}${attrStr}/>`;\n\tconst parts = [];\n\tparts.push(`<${name}${attrStr}>`);\n\tconst hasChildElements = element.elements?.some((e) => e.type === \"element\") ?? false;\n\tif (element.elements?.length) parts.push(writeElements(element.elements, opts, depth + 1, false));\n\tif (opts.spaces && hasChildElements) parts.push(\"\\n\" + opts.spaces.repeat(depth));\n\tparts.push(`</${name}>`);\n\treturn parts.join(\"\");\n}\nfunction writeElements(elements, opts, depth, firstLine) {\n\tconst parts = [];\n\tfor (let i = 0; i < elements.length; i++) {\n\t\tconst element = elements[i];\n\t\tif (!element) continue;\n\t\tconst isFirst = firstLine && i === 0;\n\t\tswitch (element.type) {\n\t\t\tcase \"element\":\n\t\t\t\tparts.push(writeIndentation(opts.spaces, depth, isFirst));\n\t\t\t\tparts.push(writeElement(element, opts, depth));\n\t\t\t\tbreak;\n\t\t\tcase \"text\":\n\t\t\t\tif (opts.ignoreText) continue;\n\t\t\t\tif (opts.indentText) parts.push(writeIndentation(opts.spaces, depth, isFirst));\n\t\t\t\tparts.push(writeText(element.text));\n\t\t\t\tbreak;\n\t\t\tcase \"cdata\":\n\t\t\t\tif (opts.ignoreCdata) continue;\n\t\t\t\tif (opts.indentCdata) parts.push(writeIndentation(opts.spaces, depth, isFirst));\n\t\t\t\tparts.push(writeCdata(element.cdata));\n\t\t\t\tbreak;\n\t\t\tcase \"comment\":\n\t\t\t\tif (opts.ignoreComment) continue;\n\t\t\t\tparts.push(writeIndentation(opts.spaces, depth, isFirst));\n\t\t\t\tparts.push(writeComment(element.comment));\n\t\t\t\tbreak;\n\t\t\tcase \"doctype\":\n\t\t\t\tif (opts.ignoreDoctype) continue;\n\t\t\t\tparts.push(writeIndentation(opts.spaces, depth, isFirst));\n\t\t\t\tparts.push(writeDoctype(element.doctype));\n\t\t\t\tbreak;\n\t\t\tdefault: break;\n\t\t}\n\t}\n\treturn parts.join(\"\");\n}\nfunction writeText(text) {\n\tif (text == null) return \"\";\n\tconst str = String(text);\n\tfor (let i = 0; i < str.length; i++) {\n\t\tconst c = str.charCodeAt(i);\n\t\tif (c === 38 || c === 60 || c === 62) {\n\t\t\tlet s = \"\";\n\t\t\tlet last = 0;\n\t\t\tfor (let j = i; j < str.length; j++) {\n\t\t\t\tconst cj = str.charCodeAt(j);\n\t\t\t\tif (cj === 38) {\n\t\t\t\t\ts += str.slice(last, j) + \"&amp;\";\n\t\t\t\t\tlast = j + 1;\n\t\t\t\t} else if (cj === 60) {\n\t\t\t\t\ts += str.slice(last, j) + \"&lt;\";\n\t\t\t\t\tlast = j + 1;\n\t\t\t\t} else if (cj === 62) {\n\t\t\t\t\ts += str.slice(last, j) + \"&gt;\";\n\t\t\t\t\tlast = j + 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn s + str.slice(last);\n\t\t}\n\t}\n\treturn str;\n}\nfunction writeCdata(cdata) {\n\tif (cdata == null) return \"\";\n\treturn `<![CDATA[${cdata.replace(/\\]\\]>/g, \"]]]]><![CDATA[>\")}]]>`;\n}\nfunction writeComment(comment) {\n\tif (comment == null) return \"\";\n\treturn `<!--${comment}-->`;\n}\nfunction writeDoctype(doctype) {\n\tif (doctype == null) return \"\";\n\treturn `<!DOCTYPE ${doctype}>`;\n}\n//#endregion\n//#region src/convert.ts\n/**\n* Convert XmlObject (node-xml format) directly to Element (xml-js format).\n* Eliminates the redundant xml() → xml2js() bridge path.\n*/\nfunction toElement(xmlObject) {\n\tconst tagName = Object.keys(xmlObject)[0];\n\tif (!tagName) return {\n\t\ttype: \"element\",\n\t\tname: \"\"\n\t};\n\tconst value = xmlObject[tagName];\n\tconst element = {\n\t\ttype: \"element\",\n\t\tname: tagName\n\t};\n\tif (value == null) return element;\n\tif (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n\t\telement.elements = [{\n\t\t\ttype: \"text\",\n\t\t\ttext: String(value)\n\t\t}];\n\t\treturn element;\n\t}\n\tif (Array.isArray(value)) {\n\t\tconst children = [];\n\t\tfor (const item of value) if (item && typeof item === \"object\" && \"_attr\" in item) element.attributes = item._attr;\n\t\telse if (item && typeof item === \"object\") if (Object.keys(item)[0] === \"_cdata\") children.push({\n\t\t\ttype: \"cdata\",\n\t\t\tcdata: String(item._cdata)\n\t\t});\n\t\telse children.push(toElement(item));\n\t\telse if (item != null) children.push({\n\t\t\ttype: \"text\",\n\t\t\ttext: String(item)\n\t\t});\n\t\tif (children.length > 0) element.elements = children;\n\t\treturn element;\n\t}\n\tif (typeof value === \"object\" && value !== null) {\n\t\tconst obj = value;\n\t\tif (obj._attr) element.attributes = obj._attr;\n\t\tif (obj._cdata) element.elements = [{\n\t\t\ttype: \"cdata\",\n\t\t\tcdata: String(obj._cdata)\n\t\t}];\n\t}\n\treturn element;\n}\n//#endregion\n//#region src/json.ts\n/** Convert XML string to JSON string — xml-js compatible export */\nfunction xml2json(xml, options) {\n\treturn JSON.stringify(parse(xml, options));\n}\n//#endregion\nexport { allChildren, attr, attrBool, attrMeasure, attrNum, attrs, attrsRaw, childCount, childText, children, collectText, colorAttr, element, escapeXml, findChild, findDeep, findFirst, hasChild, isNonEmpty, stringify as js2xml, stringify, json2xml, nativeTypeValue, parse, parse as xml2js, parseAttributes, selfCloseElement, textOf, toElement, unescapeXml, xml, xml2json };\n\n//# sourceMappingURL=index.mjs.map","import { escapeXml, textOf, xml2js } from \"@office-open/xml\";\n//#region src/opc/core.ts\nconst FIELD_MAP = [\n\t{\n\t\tname: \"dc:title\",\n\t\tkey: \"title\"\n\t},\n\t{\n\t\tname: \"dc:subject\",\n\t\tkey: \"subject\"\n\t},\n\t{\n\t\tname: \"dc:creator\",\n\t\tkey: \"creator\"\n\t},\n\t{\n\t\tname: \"dc:description\",\n\t\tkey: \"description\"\n\t},\n\t{\n\t\tname: \"cp:keywords\",\n\t\tkey: \"keywords\"\n\t},\n\t{\n\t\tname: \"cp:lastModifiedBy\",\n\t\tkey: \"lastModifiedBy\"\n\t},\n\t{\n\t\tname: \"cp:lastPrinted\",\n\t\tkey: \"lastPrinted\"\n\t},\n\t{\n\t\tname: \"dcterms:created\",\n\t\tkey: \"created\"\n\t},\n\t{\n\t\tname: \"dcterms:modified\",\n\t\tkey: \"modified\"\n\t}\n];\n/**\n* Parse core properties from an already-parsed XML element.\n* Shared by docx/pptx/xlsx to extract Dublin Core metadata into the unified\n* {@link CorePropertiesOptions} shape.\n*/\nfunction parseCorePropsElement(el) {\n\tif (!el) return {};\n\tconst props = {};\n\tfor (const field of FIELD_MAP) {\n\t\tconst child = el.elements?.find((e) => e.name === field.name);\n\t\tconst value = textOf(child) || void 0;\n\t\tif (value) props[field.key] = value;\n\t}\n\tconst revEl = el.elements?.find((e) => e.name === \"cp:revision\");\n\tif (revEl) {\n\t\tconst rev = textOf(revEl);\n\t\tif (rev) {\n\t\t\tconst n = Number(rev);\n\t\t\tif (!Number.isNaN(n)) props.revision = n;\n\t\t}\n\t}\n\treturn props;\n}\n/**\n* Build a cp:coreProperties XML string directly (fast path).\n*\n* Shared by pptx and xlsx to bypass the toXml() → xml() pipeline.\n* created/modified default to now when not supplied; all other fields emit\n* only when present.\n*/\nfunction buildCorePropertiesXmlString(opts) {\n\tconst p = [\"<cp:coreProperties xmlns:cp=\\\"http://schemas.openxmlformats.org/package/2006/metadata/core-properties\\\" xmlns:dc=\\\"http://purl.org/dc/elements/1.1/\\\" xmlns:dcmitype=\\\"http://purl.org/dcmitype/\\\" xmlns:dcterms=\\\"http://purl.org/dc/terms/\\\" xmlns:xsi=\\\"http://www.w3.org/2001/XMLSchema-instance\\\">\"];\n\tif (opts.title) p.push(`<dc:title>${escapeXml(opts.title)}</dc:title>`);\n\tif (opts.subject) p.push(`<dc:subject>${escapeXml(opts.subject)}</dc:subject>`);\n\tif (opts.creator) p.push(`<dc:creator>${escapeXml(opts.creator)}</dc:creator>`);\n\tif (opts.keywords) p.push(`<cp:keywords>${escapeXml(opts.keywords)}</cp:keywords>`);\n\tif (opts.description) p.push(`<dc:description>${escapeXml(opts.description)}</dc:description>`);\n\tif (opts.lastPrinted) p.push(`<cp:lastPrinted>${escapeXml(opts.lastPrinted)}</cp:lastPrinted>`);\n\tp.push(`<cp:lastModifiedBy>${escapeXml(opts.lastModifiedBy || opts.creator || \"Unknown\")}</cp:lastModifiedBy>`);\n\tif (opts.revision !== void 0) p.push(`<cp:revision>${opts.revision}</cp:revision>`);\n\tconst now = (/* @__PURE__ */ new Date()).toISOString();\n\tp.push(`<dcterms:created xsi:type=\"dcterms:W3CDTF\">${opts.created ?? now}</dcterms:created>`);\n\tp.push(`<dcterms:modified xsi:type=\"dcterms:W3CDTF\">${opts.modified ?? now}</dcterms:modified>`);\n\tp.push(\"</cp:coreProperties>\");\n\treturn p.join(\"\");\n}\n//#endregion\n//#region src/patch/xml-namespace.ts\nconst DOCX_NS = {\n\tparagraph: \"w:p\",\n\trun: \"w:r\",\n\ttext: \"w:t\",\n\trunProperties: \"w:rPr\"\n};\nconst PPTX_NS = {\n\tparagraph: \"a:p\",\n\trun: \"a:r\",\n\ttext: \"a:t\",\n\trunProperties: \"a:rPr\"\n};\n//#endregion\n//#region src/patch/xml-patch-utils.ts\n/**\n* XML utility functions for patch operations.\n*/\nconst toJson = (xmlData) => {\n\treturn xml2js(xmlData, {\n\t\tcaptureSpacesBetweenElements: true,\n\t\tcompact: false\n\t});\n};\n/**\n* Creates the inner content of a text element (`w:t` / `a:t`).\n*\n* Returns `[{ type: \"text\", text }]` for non-empty text, `[]` for empty.\n* The `xml:space` attribute is handled separately by `patchSpaceAttribute`.\n*/\nconst createTextElementContents = (text) => text === \"\" ? [] : [{\n\ttext,\n\ttype: \"text\"\n}];\nconst patchSpaceAttribute = (element) => ({\n\t...element,\n\tattributes: { \"xml:space\": \"preserve\" }\n});\nconst getFirstLevelElements = (relationships, id) => relationships.elements?.find((e) => e.name === id)?.elements ?? [];\n/**\n* Next sequential numeric id: the largest `attr` value among direct children\n* named `childName`, plus one. `seed` is the floor — e.g. PPTX `<p:sldId>`\n* values start at 255, so the first appended id is at least 256.\n*\n* Unifies the per-package `maxCommentId` / `maxSldId` / `maxSheetId` helpers.\n*/\nconst nextNumericId = (parent, childName, attr, seed = 0) => {\n\tlet maxId = seed;\n\tfor (const child of parent?.elements ?? []) {\n\t\tif (child.name !== childName) continue;\n\t\tconst id = Number(child.attributes?.[attr]);\n\t\tif (Number.isFinite(id)) maxId = Math.max(maxId, id);\n\t}\n\treturn maxId + 1;\n};\n//#endregion\n//#region src/patch/paragraph-split-inject.ts\nvar TokenNotFoundError = class extends Error {\n\tconstructor(token) {\n\t\tsuper(`Token ${token} not found`);\n\t\tthis.name = \"TokenNotFoundError\";\n\t}\n};\nfunction createSplitInject(ns, createTextElementContents, options) {\n\tconst preserveSpace = options?.preserveSpace ?? true;\n\tconst findRunElementIndexWithToken = (paragraphElement, token) => {\n\t\tfor (const [i, element] of (paragraphElement.elements ?? []).entries()) if (element.type === \"element\" && element.name === ns.run) {\n\t\t\tconst textElement = (element.elements ?? []).filter((e) => e.type === \"element\" && e.name === ns.text);\n\t\t\tfor (const text of textElement) {\n\t\t\t\tconst firstChild = text.elements?.[0];\n\t\t\t\tif (!firstChild) continue;\n\t\t\t\tif (firstChild.text.includes(token)) return i;\n\t\t\t}\n\t\t}\n\t\tthrow new TokenNotFoundError(token);\n\t};\n\tconst splitRunElement = (runElement, token) => {\n\t\tlet splitIndex = -1;\n\t\tconst splitElements = runElement.elements?.map((e, i) => {\n\t\t\tif (splitIndex !== -1) return e;\n\t\t\tif (e.type === \"element\" && e.name === ns.text) {\n\t\t\t\tconst splitText = (e.elements?.[0]?.text ?? \"\").split(token);\n\t\t\t\tconst newElements = splitText.map((t) => ({\n\t\t\t\t\t...e,\n\t\t\t\t\t...preserveSpace ? patchSpaceAttribute(e) : {},\n\t\t\t\t\telements: createTextElementContents(t)\n\t\t\t\t}));\n\t\t\t\tif (splitText.length > 1) splitIndex = i;\n\t\t\t\treturn newElements;\n\t\t\t} else return e;\n\t\t}).flat() ?? [];\n\t\treturn {\n\t\t\tleft: {\n\t\t\t\t...runElement,\n\t\t\t\telements: splitElements.slice(0, splitIndex + 1)\n\t\t\t},\n\t\t\tright: {\n\t\t\t\t...runElement,\n\t\t\t\telements: splitElements.slice(splitIndex + 1)\n\t\t\t}\n\t\t};\n\t};\n\treturn {\n\t\tfindRunElementIndexWithToken,\n\t\tsplitRunElement\n\t};\n}\n//#endregion\n//#region src/patch/paragraph-token-replacer.ts\nconst ReplaceMode = {\n\tSTART: 0,\n\tMIDDLE: 1,\n\tEND: 2\n};\nfunction createTokenReplacer(createTextElementContents, options) {\n\tconst preserveSpace = options?.preserveSpace ?? true;\n\tconst patchTextElement = (element, text) => {\n\t\telement.elements = createTextElementContents(text);\n\t\treturn element;\n\t};\n\treturn ({ paragraphElement, renderedParagraph, originalText, replacementText }) => {\n\t\tconst startIndex = renderedParagraph.text.indexOf(originalText);\n\t\tconst endIndex = startIndex + originalText.length - 1;\n\t\tlet replaceMode = ReplaceMode.START;\n\t\tfor (const run of renderedParagraph.runs) {\n\t\t\tconst runChildren = paragraphElement.elements?.[run.index]?.elements;\n\t\t\tif (!runChildren) continue;\n\t\t\tfor (const { text, index, start, end } of run.parts) {\n\t\t\t\tconst partElement = runChildren[index];\n\t\t\t\tif (!partElement) continue;\n\t\t\t\tswitch (replaceMode) {\n\t\t\t\t\tcase ReplaceMode.START:\n\t\t\t\t\t\tif (startIndex >= start && startIndex <= end) {\n\t\t\t\t\t\t\tconst offsetStartIndex = startIndex - start;\n\t\t\t\t\t\t\tconst offsetEndIndex = Math.min(endIndex, end) - start;\n\t\t\t\t\t\t\tconst partToReplace = text.substring(offsetStartIndex, offsetEndIndex + 1);\n\t\t\t\t\t\t\tif (partToReplace === \"\") continue;\n\t\t\t\t\t\t\tpatchTextElement(partElement, text.replace(partToReplace, replacementText));\n\t\t\t\t\t\t\treplaceMode = ReplaceMode.MIDDLE;\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase ReplaceMode.MIDDLE:\n\t\t\t\t\t\tif (endIndex <= end) {\n\t\t\t\t\t\t\tpatchTextElement(partElement, text.substring(endIndex - start + 1));\n\t\t\t\t\t\t\trunChildren[index] = preserveSpace ? patchSpaceAttribute(partElement) : partElement;\n\t\t\t\t\t\t\treplaceMode = ReplaceMode.END;\n\t\t\t\t\t\t} else patchTextElement(partElement, \"\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn paragraphElement;\n\t};\n}\n//#endregion\n//#region src/patch/run-renderer.ts\nfunction createRunRenderer(ns) {\n\tconst renderParagraphNode = (node) => {\n\t\tif (node.element.name !== ns.paragraph) throw new Error(`Invalid node type: ${node.element.name}`);\n\t\tif (!node.element.elements) return {\n\t\t\tindex: -1,\n\t\t\tpathToParagraph: [],\n\t\t\truns: [],\n\t\t\ttext: \"\"\n\t\t};\n\t\tlet currentRunStringLength = 0;\n\t\tconst runs = [];\n\t\tfor (const [i, element] of node.element.elements.entries()) if (element.name === ns.run) {\n\t\t\tconst renderedRunNode = renderRunNode(element, i, currentRunStringLength);\n\t\t\tcurrentRunStringLength += renderedRunNode.text.length;\n\t\t\truns.push(renderedRunNode);\n\t\t}\n\t\tconst text = runs.reduce((acc, curr) => acc + curr.text, \"\");\n\t\treturn {\n\t\t\tindex: node.index,\n\t\t\tpathToParagraph: buildNodePath(node),\n\t\t\truns,\n\t\t\ttext\n\t\t};\n\t};\n\tconst renderRunNode = (node, index, currentRunStringIndex) => {\n\t\tif (!node.elements) return {\n\t\t\tend: currentRunStringIndex,\n\t\t\tindex: -1,\n\t\t\tparts: [],\n\t\t\tstart: currentRunStringIndex,\n\t\t\ttext: \"\"\n\t\t};\n\t\tlet currentTextStringIndex = currentRunStringIndex;\n\t\tconst parts = [];\n\t\tfor (const [i, element] of node.elements.entries()) {\n\t\t\tif (element.name !== ns.text) continue;\n\t\t\tconst textChildren = element.elements;\n\t\t\tif (!textChildren || textChildren.length === 0) continue;\n\t\t\tconst firstChild = textChildren[0];\n\t\t\tif (!firstChild) continue;\n\t\t\tconst text = firstChild.text ?? \"\";\n\t\t\tconst textStr = String(text);\n\t\t\tconst partStart = currentTextStringIndex;\n\t\t\tcurrentTextStringIndex += textStr.length;\n\t\t\tparts.push({\n\t\t\t\tend: currentTextStringIndex - 1,\n\t\t\t\tindex: i,\n\t\t\t\tstart: partStart,\n\t\t\t\ttext: textStr\n\t\t\t});\n\t\t}\n\t\tconst text = parts.reduce((acc, curr) => acc + curr.text, \"\");\n\t\treturn {\n\t\t\tend: currentTextStringIndex - 1,\n\t\t\tindex,\n\t\t\tparts,\n\t\t\tstart: currentRunStringIndex,\n\t\t\ttext\n\t\t};\n\t};\n\treturn renderParagraphNode;\n}\nconst buildNodePath = (node) => {\n\tconst path = [];\n\tlet current = node;\n\twhile (current) {\n\t\tpath.push(current.index);\n\t\tcurrent = current.parent;\n\t}\n\tpath.reverse();\n\treturn path;\n};\n//#endregion\n//#region src/patch/xml-traverser.ts\nfunction createTraverser(ns) {\n\tconst renderParagraphNode = createRunRenderer(ns);\n\tconst traverse = (node) => {\n\t\tconst renderedParagraphs = [];\n\t\tconst queue = [];\n\t\tconst rootChildren = node.elements;\n\t\tif (rootChildren) {\n\t\t\tconst root = {\n\t\t\t\telement: node,\n\t\t\t\tindex: 0,\n\t\t\t\tparent: void 0\n\t\t\t};\n\t\t\tfor (const [i, child] of rootChildren.entries()) queue.push({\n\t\t\t\telement: child,\n\t\t\t\tindex: i,\n\t\t\t\tparent: root\n\t\t\t});\n\t\t}\n\t\tlet qi = 0;\n\t\twhile (qi < queue.length) {\n\t\t\tconst current = queue[qi++];\n\t\t\tif (!current) break;\n\t\t\tif (current.element.name === ns.paragraph) renderedParagraphs.push(renderParagraphNode(current));\n\t\t\tconst children = current.element.elements;\n\t\t\tif (children) for (const [i, child] of children.entries()) queue.push({\n\t\t\t\telement: child,\n\t\t\t\tindex: i,\n\t\t\t\tparent: current\n\t\t\t});\n\t\t}\n\t\treturn renderedParagraphs;\n\t};\n\tconst findLocationOfText = (node, text) => traverse(node).filter((p) => p.text.includes(text));\n\treturn {\n\t\ttraverse,\n\t\tfindLocationOfText\n\t};\n}\n//#endregion\n//#region src/patch/xml-replacer.ts\nconst SPLIT_TOKEN = \"ɵ\";\nfunction createReplacer(config) {\n\tconst { ns, formatChild } = config;\n\tconst { findLocationOfText } = createTraverser(ns);\n\tconst replaceTokenInParagraphElement = createTokenReplacer(createTextElementContents, { preserveSpace: config.preserveSpace });\n\tconst { findRunElementIndexWithToken, splitRunElement } = createSplitInject(ns, createTextElementContents, { preserveSpace: config.preserveSpace });\n\tconst replacer = ({ json, patch, patchText, context, keepOriginalStyles = true }) => {\n\t\tconst renderedParagraphs = findLocationOfText(json, patchText);\n\t\tif (renderedParagraphs.length === 0) return {\n\t\t\tdidFindOccurrence: false,\n\t\t\telement: json\n\t\t};\n\t\tfor (const renderedParagraph of renderedParagraphs) {\n\t\t\tconst textJson = patch.children.flatMap((c) => formatChild(c, context));\n\t\t\tswitch (patch.type) {\n\t\t\t\tcase \"document\": {\n\t\t\t\t\tconst parentElement = goToParentElementFromPath(json, renderedParagraph.pathToParagraph);\n\t\t\t\t\tconst elementIndex = getLastElementIndexFromPath(renderedParagraph.pathToParagraph);\n\t\t\t\t\tparentElement.elements.splice(elementIndex, 1, ...textJson);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst paragraphElement = goToElementFromPath(json, renderedParagraph.pathToParagraph);\n\t\t\t\t\treplaceTokenInParagraphElement({\n\t\t\t\t\t\toriginalText: patchText,\n\t\t\t\t\t\tparagraphElement,\n\t\t\t\t\t\trenderedParagraph,\n\t\t\t\t\t\treplacementText: SPLIT_TOKEN\n\t\t\t\t\t});\n\t\t\t\t\tconst index = findRunElementIndexWithToken(paragraphElement, SPLIT_TOKEN);\n\t\t\t\t\tconst runElementToBeReplaced = paragraphElement.elements[index];\n\t\t\t\t\tif (!runElementToBeReplaced) break;\n\t\t\t\t\tconst { left, right } = splitRunElement(runElementToBeReplaced, SPLIT_TOKEN);\n\t\t\t\t\tlet newRunElements = textJson;\n\t\t\t\t\tlet patchedRightElement = right;\n\t\t\t\t\tif (keepOriginalStyles) {\n\t\t\t\t\t\tconst runElementNonTextualElements = runElementToBeReplaced.elements.filter((e) => e.type === \"element\" && e.name === ns.runProperties);\n\t\t\t\t\t\tnewRunElements = textJson.map((e) => {\n\t\t\t\t\t\t\tif (e.type !== \"element\" || e.name !== ns.run || e.elements?.some((c) => c.type === \"element\" && c.name === ns.runProperties)) return e;\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...e,\n\t\t\t\t\t\t\t\telements: [...runElementNonTextualElements, ...e.elements ?? []]\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t});\n\t\t\t\t\t\tpatchedRightElement = {\n\t\t\t\t\t\t\t...right,\n\t\t\t\t\t\t\telements: [...runElementNonTextualElements, ...right.elements]\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tparagraphElement.elements.splice(index, 1, left, ...newRunElements, patchedRightElement);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tdidFindOccurrence: true,\n\t\t\telement: json\n\t\t};\n\t};\n\treturn replacer;\n}\nconst goToElementFromPath = (json, path) => {\n\tlet element = json;\n\tfor (let i = 1; i < path.length; i++) {\n\t\tconst index = path[i];\n\t\tif (index === void 0) break;\n\t\tconst next = element.elements[index];\n\t\tif (!next) break;\n\t\telement = next;\n\t}\n\treturn element;\n};\nconst goToParentElementFromPath = (json, path) => goToElementFromPath(json, path.slice(0, -1));\nconst getLastElementIndexFromPath = (path) => path[path.length - 1];\n//#endregion\n//#region src/patch/content-types-manager.ts\n/**\n* The `<Types>` child array, initialized in place when absent (so a `<Default>`\n* or `<Override>` can always be appended). Returns `undefined` if `element` has\n* no `<Types>` child (malformed `[Content_Types].xml`).\n*/\nconst typesChildren = (element) => {\n\tconst types = element.elements?.find((e) => e.name === \"Types\");\n\tif (!types) return void 0;\n\treturn types.elements ?? (types.elements = []);\n};\nconst appendContentType = (element, contentType, extension) => {\n\tconst els = typesChildren(element);\n\tif (!els) return;\n\tif (els.some((el) => el.type === \"element\" && el.name === \"Default\" && String(el?.attributes?.Extension ?? \"\").toLowerCase() === extension.toLowerCase())) return;\n\tels.push({\n\t\tattributes: {\n\t\t\tContentType: contentType,\n\t\t\tExtension: extension\n\t\t},\n\t\tname: \"Default\",\n\t\ttype: \"element\"\n\t});\n};\n/**\n* Append an `<Override>` element to a `[Content_Types].xml` root, deduped by\n* `PartName`. Sibling to {@link appendContentType} (which handles `<Default>`):\n* unifies the per-package Override-dedup blocks in docx/pptx/xlsx patchers.\n*/\nconst appendOverride = (element, partName, contentType) => {\n\tconst els = typesChildren(element);\n\tif (!els) return;\n\tif (els.some((el) => el.type === \"element\" && el.name === \"Override\" && String(el?.attributes?.PartName ?? \"\").toLowerCase() === partName.toLowerCase())) return;\n\tels.push({\n\t\tattributes: {\n\t\t\tPartName: partName,\n\t\t\tContentType: contentType\n\t\t},\n\t\tname: \"Override\",\n\t\ttype: \"element\"\n\t});\n};\n//#endregion\n//#region src/patch/relationship-manager.ts\nconst getIdFromRelationshipId = (relationshipId) => {\n\tconst output = parseInt(relationshipId.substring(3), 10);\n\treturn isNaN(output) ? 0 : output;\n};\nconst getNextRelationshipIndex = (relationships) => {\n\treturn getFirstLevelElements(relationships, \"Relationships\").map((e) => getIdFromRelationshipId(e.attributes?.Id?.toString() ?? \"\")).reduce((acc, curr) => Math.max(acc, curr), 0) + 1;\n};\nconst appendRelationship = (relationships, id, type, target, targetMode) => {\n\tconst relationshipElements = getFirstLevelElements(relationships, \"Relationships\");\n\trelationshipElements.push({\n\t\tattributes: {\n\t\t\tId: `rId${id}`,\n\t\t\tTarget: target,\n\t\t\tTargetMode: targetMode,\n\t\t\tType: type\n\t\t},\n\t\tname: \"Relationship\",\n\t\ttype: \"element\"\n\t});\n\treturn relationshipElements;\n};\n//#endregion\n//#region src/patch/core-properties-override.ts\nfunction applyCorePropertiesOverride(corePropsDoc, overrides) {\n\treturn buildCorePropertiesXmlString({\n\t\t...parseCorePropsElement(corePropsDoc.elements?.find((e) => e.name === \"cp:coreProperties\") ?? corePropsDoc),\n\t\t...overrides\n\t});\n}\n//#endregion\nexport { DOCX_NS as _, appendOverride as a, parseCorePropsElement as b, createRunRenderer as c, createSplitInject as d, createTextElementContents as f, toJson as g, patchSpaceAttribute as h, appendContentType as i, createTokenReplacer as l, nextNumericId as m, appendRelationship as n, createReplacer as o, getFirstLevelElements as p, getNextRelationshipIndex as r, createTraverser as s, applyCorePropertiesOverride as t, TokenNotFoundError as u, PPTX_NS as v, buildCorePropertiesXmlString as y };\n\n//# sourceMappingURL=patch-BmRfghOo.mjs.map","import { sha1 } from \"@noble/hashes/legacy.js\";\nimport { bytesToHex } from \"@noble/hashes/utils.js\";\n//#region \\0polyfill-node.global.js\nvar _polyfill_node_global_default = typeof _polyfill_node_global_default !== \"undefined\" ? _polyfill_node_global_default : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {};\n//#endregion\n//#region \\0polyfill-node.buffer.js\nvar lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== \"undefined\" ? Uint8Array : Array;\nvar inited = false;\nfunction init() {\n\tinited = true;\n\tvar code = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\tfor (var i = 0, len = code.length; i < len; ++i) {\n\t\tlookup[i] = code[i];\n\t\trevLookup[code.charCodeAt(i)] = i;\n\t}\n\trevLookup[\"-\".charCodeAt(0)] = 62;\n\trevLookup[\"_\".charCodeAt(0)] = 63;\n}\nfunction toByteArray(b64) {\n\tif (!inited) init();\n\tvar i, j, l, tmp, placeHolders, arr;\n\tvar len = b64.length;\n\tif (len % 4 > 0) throw new Error(\"Invalid string. Length must be a multiple of 4\");\n\tplaceHolders = b64[len - 2] === \"=\" ? 2 : b64[len - 1] === \"=\" ? 1 : 0;\n\tarr = new Arr(len * 3 / 4 - placeHolders);\n\tl = placeHolders > 0 ? len - 4 : len;\n\tvar L = 0;\n\tfor (i = 0, j = 0; i < l; i += 4, j += 3) {\n\t\ttmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)];\n\t\tarr[L++] = tmp >> 16 & 255;\n\t\tarr[L++] = tmp >> 8 & 255;\n\t\tarr[L++] = tmp & 255;\n\t}\n\tif (placeHolders === 2) {\n\t\ttmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;\n\t\tarr[L++] = tmp & 255;\n\t} else if (placeHolders === 1) {\n\t\ttmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2;\n\t\tarr[L++] = tmp >> 8 & 255;\n\t\tarr[L++] = tmp & 255;\n\t}\n\treturn arr;\n}\nfunction tripletToBase64(num) {\n\treturn lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63];\n}\nfunction encodeChunk(uint8, start, end) {\n\tvar tmp;\n\tvar output = [];\n\tfor (var i = start; i < end; i += 3) {\n\t\ttmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + uint8[i + 2];\n\t\toutput.push(tripletToBase64(tmp));\n\t}\n\treturn output.join(\"\");\n}\nfunction fromByteArray(uint8) {\n\tif (!inited) init();\n\tvar tmp;\n\tvar len = uint8.length;\n\tvar extraBytes = len % 3;\n\tvar output = \"\";\n\tvar parts = [];\n\tvar maxChunkLength = 16383;\n\tfor (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength));\n\tif (extraBytes === 1) {\n\t\ttmp = uint8[len - 1];\n\t\toutput += lookup[tmp >> 2];\n\t\toutput += lookup[tmp << 4 & 63];\n\t\toutput += \"==\";\n\t} else if (extraBytes === 2) {\n\t\ttmp = (uint8[len - 2] << 8) + uint8[len - 1];\n\t\toutput += lookup[tmp >> 10];\n\t\toutput += lookup[tmp >> 4 & 63];\n\t\toutput += lookup[tmp << 2 & 63];\n\t\toutput += \"=\";\n\t}\n\tparts.push(output);\n\treturn parts.join(\"\");\n}\nfunction read(buffer, offset, isLE, mLen, nBytes) {\n\tvar e, m;\n\tvar eLen = nBytes * 8 - mLen - 1;\n\tvar eMax = (1 << eLen) - 1;\n\tvar eBias = eMax >> 1;\n\tvar nBits = -7;\n\tvar i = isLE ? nBytes - 1 : 0;\n\tvar d = isLE ? -1 : 1;\n\tvar s = buffer[offset + i];\n\ti += d;\n\te = s & (1 << -nBits) - 1;\n\ts >>= -nBits;\n\tnBits += eLen;\n\tfor (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8);\n\tm = e & (1 << -nBits) - 1;\n\te >>= -nBits;\n\tnBits += mLen;\n\tfor (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8);\n\tif (e === 0) e = 1 - eBias;\n\telse if (e === eMax) return m ? NaN : (s ? -1 : 1) * Infinity;\n\telse {\n\t\tm = m + Math.pow(2, mLen);\n\t\te = e - eBias;\n\t}\n\treturn (s ? -1 : 1) * m * Math.pow(2, e - mLen);\n}\nfunction write(buffer, value, offset, isLE, mLen, nBytes) {\n\tvar e, m, c;\n\tvar eLen = nBytes * 8 - mLen - 1;\n\tvar eMax = (1 << eLen) - 1;\n\tvar eBias = eMax >> 1;\n\tvar rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;\n\tvar i = isLE ? 0 : nBytes - 1;\n\tvar d = isLE ? 1 : -1;\n\tvar s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n\tvalue = Math.abs(value);\n\tif (isNaN(value) || value === Infinity) {\n\t\tm = isNaN(value) ? 1 : 0;\n\t\te = eMax;\n\t} else {\n\t\te = Math.floor(Math.log(value) / Math.LN2);\n\t\tif (value * (c = Math.pow(2, -e)) < 1) {\n\t\t\te--;\n\t\t\tc *= 2;\n\t\t}\n\t\tif (e + eBias >= 1) value += rt / c;\n\t\telse value += rt * Math.pow(2, 1 - eBias);\n\t\tif (value * c >= 2) {\n\t\t\te++;\n\t\t\tc /= 2;\n\t\t}\n\t\tif (e + eBias >= eMax) {\n\t\t\tm = 0;\n\t\t\te = eMax;\n\t\t} else if (e + eBias >= 1) {\n\t\t\tm = (value * c - 1) * Math.pow(2, mLen);\n\t\t\te = e + eBias;\n\t\t} else {\n\t\t\tm = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n\t\t\te = 0;\n\t\t}\n\t}\n\tfor (; mLen >= 8; buffer[offset + i] = m & 255, i += d, m /= 256, mLen -= 8);\n\te = e << mLen | m;\n\teLen += mLen;\n\tfor (; eLen > 0; buffer[offset + i] = e & 255, i += d, e /= 256, eLen -= 8);\n\tbuffer[offset + i - d] |= s * 128;\n}\nvar toString = {}.toString;\nvar isArray = Array.isArray || function(arr) {\n\treturn toString.call(arr) == \"[object Array]\";\n};\n/*!\n* The buffer module from node.js, for the browser.\n*\n* @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n* @license MIT\n*/\n/**\n* If `Buffer.TYPED_ARRAY_SUPPORT`:\n* === true Use Uint8Array implementation (fastest)\n* === false Use Object implementation (most compatible, even IE6)\n*\n* Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n* Opera 11.6+, iOS 4.2+.\n*\n* Due to various browser bugs, sometimes the Object implementation will be used even\n* when the browser supports typed arrays.\n*\n* Note:\n*\n* - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n* See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n*\n* - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n*\n* - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n* incorrect length in some situations.\n\n* We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n* get the Object implementation, which is slower but behaves correctly.\n*/\nBuffer.TYPED_ARRAY_SUPPORT = _polyfill_node_global_default.TYPED_ARRAY_SUPPORT !== void 0 ? _polyfill_node_global_default.TYPED_ARRAY_SUPPORT : true;\nkMaxLength();\nfunction kMaxLength() {\n\treturn Buffer.TYPED_ARRAY_SUPPORT ? 2147483647 : 1073741823;\n}\nfunction createBuffer(that, length) {\n\tif (kMaxLength() < length) throw new RangeError(\"Invalid typed array length\");\n\tif (Buffer.TYPED_ARRAY_SUPPORT) {\n\t\tthat = new Uint8Array(length);\n\t\tthat.__proto__ = Buffer.prototype;\n\t} else {\n\t\tif (that === null) that = new Buffer(length);\n\t\tthat.length = length;\n\t}\n\treturn that;\n}\n/**\n* The Buffer constructor returns instances of `Uint8Array` that have their\n* prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n* `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n* and the `Uint8Array` methods. Square bracket notation works as expected -- it\n* returns a single octet.\n*\n* The `Uint8Array` prototype remains unmodified.\n*/\nfunction Buffer(arg, encodingOrOffset, length) {\n\tif (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) return new Buffer(arg, encodingOrOffset, length);\n\tif (typeof arg === \"number\") {\n\t\tif (typeof encodingOrOffset === \"string\") throw new Error(\"If encoding is specified then the first argument must be a string\");\n\t\treturn allocUnsafe(this, arg);\n\t}\n\treturn from(this, arg, encodingOrOffset, length);\n}\nBuffer.poolSize = 8192;\nBuffer._augment = function(arr) {\n\tarr.__proto__ = Buffer.prototype;\n\treturn arr;\n};\nfunction from(that, value, encodingOrOffset, length) {\n\tif (typeof value === \"number\") throw new TypeError(\"\\\"value\\\" argument must not be a number\");\n\tif (typeof ArrayBuffer !== \"undefined\" && value instanceof ArrayBuffer) return fromArrayBuffer(that, value, encodingOrOffset, length);\n\tif (typeof value === \"string\") return fromString(that, value, encodingOrOffset);\n\treturn fromObject(that, value);\n}\n/**\n* Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n* if value is a number.\n* Buffer.from(str[, encoding])\n* Buffer.from(array)\n* Buffer.from(buffer)\n* Buffer.from(arrayBuffer[, byteOffset[, length]])\n**/\nBuffer.from = function(value, encodingOrOffset, length) {\n\treturn from(null, value, encodingOrOffset, length);\n};\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n\tBuffer.prototype.__proto__ = Uint8Array.prototype;\n\tBuffer.__proto__ = Uint8Array;\n\tif (typeof Symbol !== \"undefined\" && Symbol.species && Buffer[Symbol.species] === Buffer);\n}\nfunction assertSize(size) {\n\tif (typeof size !== \"number\") throw new TypeError(\"\\\"size\\\" argument must be a number\");\n\telse if (size < 0) throw new RangeError(\"\\\"size\\\" argument must not be negative\");\n}\nfunction alloc(that, size, fill, encoding) {\n\tassertSize(size);\n\tif (size <= 0) return createBuffer(that, size);\n\tif (fill !== void 0) return typeof encoding === \"string\" ? createBuffer(that, size).fill(fill, encoding) : createBuffer(that, size).fill(fill);\n\treturn createBuffer(that, size);\n}\n/**\n* Creates a new filled Buffer instance.\n* alloc(size[, fill[, encoding]])\n**/\nBuffer.alloc = function(size, fill, encoding) {\n\treturn alloc(null, size, fill, encoding);\n};\nfunction allocUnsafe(that, size) {\n\tassertSize(size);\n\tthat = createBuffer(that, size < 0 ? 0 : checked(size) | 0);\n\tif (!Buffer.TYPED_ARRAY_SUPPORT) for (var i = 0; i < size; ++i) that[i] = 0;\n\treturn that;\n}\n/**\n* Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n* */\nBuffer.allocUnsafe = function(size) {\n\treturn allocUnsafe(null, size);\n};\n/**\n* Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n*/\nBuffer.allocUnsafeSlow = function(size) {\n\treturn allocUnsafe(null, size);\n};\nfunction fromString(that, string, encoding) {\n\tif (typeof encoding !== \"string\" || encoding === \"\") encoding = \"utf8\";\n\tif (!Buffer.isEncoding(encoding)) throw new TypeError(\"\\\"encoding\\\" must be a valid string encoding\");\n\tvar length = byteLength(string, encoding) | 0;\n\tthat = createBuffer(that, length);\n\tvar actual = that.write(string, encoding);\n\tif (actual !== length) that = that.slice(0, actual);\n\treturn that;\n}\nfunction fromArrayLike(that, array) {\n\tvar length = array.length < 0 ? 0 : checked(array.length) | 0;\n\tthat = createBuffer(that, length);\n\tfor (var i = 0; i < length; i += 1) that[i] = array[i] & 255;\n\treturn that;\n}\nfunction fromArrayBuffer(that, array, byteOffset, length) {\n\tarray.byteLength;\n\tif (byteOffset < 0 || array.byteLength < byteOffset) throw new RangeError(\"'offset' is out of bounds\");\n\tif (array.byteLength < byteOffset + (length || 0)) throw new RangeError(\"'length' is out of bounds\");\n\tif (byteOffset === void 0 && length === void 0) array = new Uint8Array(array);\n\telse if (length === void 0) array = new Uint8Array(array, byteOffset);\n\telse array = new Uint8Array(array, byteOffset, length);\n\tif (Buffer.TYPED_ARRAY_SUPPORT) {\n\t\tthat = array;\n\t\tthat.__proto__ = Buffer.prototype;\n\t} else that = fromArrayLike(that, array);\n\treturn that;\n}\nfunction fromObject(that, obj) {\n\tif (internalIsBuffer(obj)) {\n\t\tvar len = checked(obj.length) | 0;\n\t\tthat = createBuffer(that, len);\n\t\tif (that.length === 0) return that;\n\t\tobj.copy(that, 0, 0, len);\n\t\treturn that;\n\t}\n\tif (obj) {\n\t\tif (typeof ArrayBuffer !== \"undefined\" && obj.buffer instanceof ArrayBuffer || \"length\" in obj) {\n\t\t\tif (typeof obj.length !== \"number\" || isnan(obj.length)) return createBuffer(that, 0);\n\t\t\treturn fromArrayLike(that, obj);\n\t\t}\n\t\tif (obj.type === \"Buffer\" && isArray(obj.data)) return fromArrayLike(that, obj.data);\n\t}\n\tthrow new TypeError(\"First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.\");\n}\nfunction checked(length) {\n\tif (length >= kMaxLength()) throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\" + kMaxLength().toString(16) + \" bytes\");\n\treturn length | 0;\n}\nBuffer.isBuffer = isBuffer;\nfunction internalIsBuffer(b) {\n\treturn !!(b != null && b._isBuffer);\n}\nBuffer.compare = function compare(a, b) {\n\tif (!internalIsBuffer(a) || !internalIsBuffer(b)) throw new TypeError(\"Arguments must be Buffers\");\n\tif (a === b) return 0;\n\tvar x = a.length;\n\tvar y = b.length;\n\tfor (var i = 0, len = Math.min(x, y); i < len; ++i) if (a[i] !== b[i]) {\n\t\tx = a[i];\n\t\ty = b[i];\n\t\tbreak;\n\t}\n\tif (x < y) return -1;\n\tif (y < x) return 1;\n\treturn 0;\n};\nBuffer.isEncoding = function isEncoding(encoding) {\n\tswitch (String(encoding).toLowerCase()) {\n\t\tcase \"hex\":\n\t\tcase \"utf8\":\n\t\tcase \"utf-8\":\n\t\tcase \"ascii\":\n\t\tcase \"latin1\":\n\t\tcase \"binary\":\n\t\tcase \"base64\":\n\t\tcase \"ucs2\":\n\t\tcase \"ucs-2\":\n\t\tcase \"utf16le\":\n\t\tcase \"utf-16le\": return true;\n\t\tdefault: return false;\n\t}\n};\nBuffer.concat = function concat(list, length) {\n\tif (!isArray(list)) throw new TypeError(\"\\\"list\\\" argument must be an Array of Buffers\");\n\tif (list.length === 0) return Buffer.alloc(0);\n\tvar i;\n\tif (length === void 0) {\n\t\tlength = 0;\n\t\tfor (i = 0; i < list.length; ++i) length += list[i].length;\n\t}\n\tvar buffer = Buffer.allocUnsafe(length);\n\tvar pos = 0;\n\tfor (i = 0; i < list.length; ++i) {\n\t\tvar buf = list[i];\n\t\tif (!internalIsBuffer(buf)) throw new TypeError(\"\\\"list\\\" argument must be an Array of Buffers\");\n\t\tbuf.copy(buffer, pos);\n\t\tpos += buf.length;\n\t}\n\treturn buffer;\n};\nfunction byteLength(string, encoding) {\n\tif (internalIsBuffer(string)) return string.length;\n\tif (typeof ArrayBuffer !== \"undefined\" && typeof ArrayBuffer.isView === \"function\" && (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) return string.byteLength;\n\tif (typeof string !== \"string\") string = \"\" + string;\n\tvar len = string.length;\n\tif (len === 0) return 0;\n\tvar loweredCase = false;\n\tfor (;;) switch (encoding) {\n\t\tcase \"ascii\":\n\t\tcase \"latin1\":\n\t\tcase \"binary\": return len;\n\t\tcase \"utf8\":\n\t\tcase \"utf-8\":\n\t\tcase void 0: return utf8ToBytes(string).length;\n\t\tcase \"ucs2\":\n\t\tcase \"ucs-2\":\n\t\tcase \"utf16le\":\n\t\tcase \"utf-16le\": return len * 2;\n\t\tcase \"hex\": return len >>> 1;\n\t\tcase \"base64\": return base64ToBytes(string).length;\n\t\tdefault:\n\t\t\tif (loweredCase) return utf8ToBytes(string).length;\n\t\t\tencoding = (\"\" + encoding).toLowerCase();\n\t\t\tloweredCase = true;\n\t}\n}\nBuffer.byteLength = byteLength;\nfunction slowToString(encoding, start, end) {\n\tvar loweredCase = false;\n\tif (start === void 0 || start < 0) start = 0;\n\tif (start > this.length) return \"\";\n\tif (end === void 0 || end > this.length) end = this.length;\n\tif (end <= 0) return \"\";\n\tend >>>= 0;\n\tstart >>>= 0;\n\tif (end <= start) return \"\";\n\tif (!encoding) encoding = \"utf8\";\n\twhile (true) switch (encoding) {\n\t\tcase \"hex\": return hexSlice(this, start, end);\n\t\tcase \"utf8\":\n\t\tcase \"utf-8\": return utf8Slice(this, start, end);\n\t\tcase \"ascii\": return asciiSlice(this, start, end);\n\t\tcase \"latin1\":\n\t\tcase \"binary\": return latin1Slice(this, start, end);\n\t\tcase \"base64\": return base64Slice(this, start, end);\n\t\tcase \"ucs2\":\n\t\tcase \"ucs-2\":\n\t\tcase \"utf16le\":\n\t\tcase \"utf-16le\": return utf16leSlice(this, start, end);\n\t\tdefault:\n\t\t\tif (loweredCase) throw new TypeError(\"Unknown encoding: \" + encoding);\n\t\t\tencoding = (encoding + \"\").toLowerCase();\n\t\t\tloweredCase = true;\n\t}\n}\nBuffer.prototype._isBuffer = true;\nfunction swap(b, n, m) {\n\tvar i = b[n];\n\tb[n] = b[m];\n\tb[m] = i;\n}\nBuffer.prototype.swap16 = function swap16() {\n\tvar len = this.length;\n\tif (len % 2 !== 0) throw new RangeError(\"Buffer size must be a multiple of 16-bits\");\n\tfor (var i = 0; i < len; i += 2) swap(this, i, i + 1);\n\treturn this;\n};\nBuffer.prototype.swap32 = function swap32() {\n\tvar len = this.length;\n\tif (len % 4 !== 0) throw new RangeError(\"Buffer size must be a multiple of 32-bits\");\n\tfor (var i = 0; i < len; i += 4) {\n\t\tswap(this, i, i + 3);\n\t\tswap(this, i + 1, i + 2);\n\t}\n\treturn this;\n};\nBuffer.prototype.swap64 = function swap64() {\n\tvar len = this.length;\n\tif (len % 8 !== 0) throw new RangeError(\"Buffer size must be a multiple of 64-bits\");\n\tfor (var i = 0; i < len; i += 8) {\n\t\tswap(this, i, i + 7);\n\t\tswap(this, i + 1, i + 6);\n\t\tswap(this, i + 2, i + 5);\n\t\tswap(this, i + 3, i + 4);\n\t}\n\treturn this;\n};\nBuffer.prototype.toString = function toString() {\n\tvar length = this.length | 0;\n\tif (length === 0) return \"\";\n\tif (arguments.length === 0) return utf8Slice(this, 0, length);\n\treturn slowToString.apply(this, arguments);\n};\nBuffer.prototype.equals = function equals(b) {\n\tif (!internalIsBuffer(b)) throw new TypeError(\"Argument must be a Buffer\");\n\tif (this === b) return true;\n\treturn Buffer.compare(this, b) === 0;\n};\nBuffer.prototype.inspect = function inspect() {\n\tvar str = \"\";\n\tvar max = 50;\n\tif (this.length > 0) {\n\t\tstr = this.toString(\"hex\", 0, max).match(/.{2}/g).join(\" \");\n\t\tif (this.length > max) str += \" ... \";\n\t}\n\treturn \"<Buffer \" + str + \">\";\n};\nBuffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {\n\tif (!internalIsBuffer(target)) throw new TypeError(\"Argument must be a Buffer\");\n\tif (start === void 0) start = 0;\n\tif (end === void 0) end = target ? target.length : 0;\n\tif (thisStart === void 0) thisStart = 0;\n\tif (thisEnd === void 0) thisEnd = this.length;\n\tif (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) throw new RangeError(\"out of range index\");\n\tif (thisStart >= thisEnd && start >= end) return 0;\n\tif (thisStart >= thisEnd) return -1;\n\tif (start >= end) return 1;\n\tstart >>>= 0;\n\tend >>>= 0;\n\tthisStart >>>= 0;\n\tthisEnd >>>= 0;\n\tif (this === target) return 0;\n\tvar x = thisEnd - thisStart;\n\tvar y = end - start;\n\tvar len = Math.min(x, y);\n\tvar thisCopy = this.slice(thisStart, thisEnd);\n\tvar targetCopy = target.slice(start, end);\n\tfor (var i = 0; i < len; ++i) if (thisCopy[i] !== targetCopy[i]) {\n\t\tx = thisCopy[i];\n\t\ty = targetCopy[i];\n\t\tbreak;\n\t}\n\tif (x < y) return -1;\n\tif (y < x) return 1;\n\treturn 0;\n};\nfunction bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {\n\tif (buffer.length === 0) return -1;\n\tif (typeof byteOffset === \"string\") {\n\t\tencoding = byteOffset;\n\t\tbyteOffset = 0;\n\t} else if (byteOffset > 2147483647) byteOffset = 2147483647;\n\telse if (byteOffset < -2147483648) byteOffset = -2147483648;\n\tbyteOffset = +byteOffset;\n\tif (isNaN(byteOffset)) byteOffset = dir ? 0 : buffer.length - 1;\n\tif (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n\tif (byteOffset >= buffer.length) if (dir) return -1;\n\telse byteOffset = buffer.length - 1;\n\telse if (byteOffset < 0) if (dir) byteOffset = 0;\n\telse return -1;\n\tif (typeof val === \"string\") val = Buffer.from(val, encoding);\n\tif (internalIsBuffer(val)) {\n\t\tif (val.length === 0) return -1;\n\t\treturn arrayIndexOf(buffer, val, byteOffset, encoding, dir);\n\t} else if (typeof val === \"number\") {\n\t\tval = val & 255;\n\t\tif (Buffer.TYPED_ARRAY_SUPPORT && typeof Uint8Array.prototype.indexOf === \"function\") if (dir) return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);\n\t\telse return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);\n\t\treturn arrayIndexOf(buffer, [val], byteOffset, encoding, dir);\n\t}\n\tthrow new TypeError(\"val must be string, number or Buffer\");\n}\nfunction arrayIndexOf(arr, val, byteOffset, encoding, dir) {\n\tvar indexSize = 1;\n\tvar arrLength = arr.length;\n\tvar valLength = val.length;\n\tif (encoding !== void 0) {\n\t\tencoding = String(encoding).toLowerCase();\n\t\tif (encoding === \"ucs2\" || encoding === \"ucs-2\" || encoding === \"utf16le\" || encoding === \"utf-16le\") {\n\t\t\tif (arr.length < 2 || val.length < 2) return -1;\n\t\t\tindexSize = 2;\n\t\t\tarrLength /= 2;\n\t\t\tvalLength /= 2;\n\t\t\tbyteOffset /= 2;\n\t\t}\n\t}\n\tfunction read(buf, i) {\n\t\tif (indexSize === 1) return buf[i];\n\t\telse return buf.readUInt16BE(i * indexSize);\n\t}\n\tvar i;\n\tif (dir) {\n\t\tvar foundIndex = -1;\n\t\tfor (i = byteOffset; i < arrLength; i++) if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n\t\t\tif (foundIndex === -1) foundIndex = i;\n\t\t\tif (i - foundIndex + 1 === valLength) return foundIndex * indexSize;\n\t\t} else {\n\t\t\tif (foundIndex !== -1) i -= i - foundIndex;\n\t\t\tfoundIndex = -1;\n\t\t}\n\t} else {\n\t\tif (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n\t\tfor (i = byteOffset; i >= 0; i--) {\n\t\t\tvar found = true;\n\t\t\tfor (var j = 0; j < valLength; j++) if (read(arr, i + j) !== read(val, j)) {\n\t\t\t\tfound = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (found) return i;\n\t\t}\n\t}\n\treturn -1;\n}\nBuffer.prototype.includes = function includes(val, byteOffset, encoding) {\n\treturn this.indexOf(val, byteOffset, encoding) !== -1;\n};\nBuffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {\n\treturn bidirectionalIndexOf(this, val, byteOffset, encoding, true);\n};\nBuffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {\n\treturn bidirectionalIndexOf(this, val, byteOffset, encoding, false);\n};\nfunction hexWrite(buf, string, offset, length) {\n\toffset = Number(offset) || 0;\n\tvar remaining = buf.length - offset;\n\tif (!length) length = remaining;\n\telse {\n\t\tlength = Number(length);\n\t\tif (length > remaining) length = remaining;\n\t}\n\tvar strLen = string.length;\n\tif (strLen % 2 !== 0) throw new TypeError(\"Invalid hex string\");\n\tif (length > strLen / 2) length = strLen / 2;\n\tfor (var i = 0; i < length; ++i) {\n\t\tvar parsed = parseInt(string.substr(i * 2, 2), 16);\n\t\tif (isNaN(parsed)) return i;\n\t\tbuf[offset + i] = parsed;\n\t}\n\treturn i;\n}\nfunction utf8Write(buf, string, offset, length) {\n\treturn blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);\n}\nfunction asciiWrite(buf, string, offset, length) {\n\treturn blitBuffer(asciiToBytes(string), buf, offset, length);\n}\nfunction latin1Write(buf, string, offset, length) {\n\treturn asciiWrite(buf, string, offset, length);\n}\nfunction base64Write(buf, string, offset, length) {\n\treturn blitBuffer(base64ToBytes(string), buf, offset, length);\n}\nfunction ucs2Write(buf, string, offset, length) {\n\treturn blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);\n}\nBuffer.prototype.write = function write(string, offset, length, encoding) {\n\tif (offset === void 0) {\n\t\tencoding = \"utf8\";\n\t\tlength = this.length;\n\t\toffset = 0;\n\t} else if (length === void 0 && typeof offset === \"string\") {\n\t\tencoding = offset;\n\t\tlength = this.length;\n\t\toffset = 0;\n\t} else if (isFinite(offset)) {\n\t\toffset = offset | 0;\n\t\tif (isFinite(length)) {\n\t\t\tlength = length | 0;\n\t\t\tif (encoding === void 0) encoding = \"utf8\";\n\t\t} else {\n\t\t\tencoding = length;\n\t\t\tlength = void 0;\n\t\t}\n\t} else throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");\n\tvar remaining = this.length - offset;\n\tif (length === void 0 || length > remaining) length = remaining;\n\tif (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) throw new RangeError(\"Attempt to write outside buffer bounds\");\n\tif (!encoding) encoding = \"utf8\";\n\tvar loweredCase = false;\n\tfor (;;) switch (encoding) {\n\t\tcase \"hex\": return hexWrite(this, string, offset, length);\n\t\tcase \"utf8\":\n\t\tcase \"utf-8\": return utf8Write(this, string, offset, length);\n\t\tcase \"ascii\": return asciiWrite(this, string, offset, length);\n\t\tcase \"latin1\":\n\t\tcase \"binary\": return latin1Write(this, string, offset, length);\n\t\tcase \"base64\": return base64Write(this, string, offset, length);\n\t\tcase \"ucs2\":\n\t\tcase \"ucs-2\":\n\t\tcase \"utf16le\":\n\t\tcase \"utf-16le\": return ucs2Write(this, string, offset, length);\n\t\tdefault:\n\t\t\tif (loweredCase) throw new TypeError(\"Unknown encoding: \" + encoding);\n\t\t\tencoding = (\"\" + encoding).toLowerCase();\n\t\t\tloweredCase = true;\n\t}\n};\nBuffer.prototype.toJSON = function toJSON() {\n\treturn {\n\t\ttype: \"Buffer\",\n\t\tdata: Array.prototype.slice.call(this._arr || this, 0)\n\t};\n};\nfunction base64Slice(buf, start, end) {\n\tif (start === 0 && end === buf.length) return fromByteArray(buf);\n\telse return fromByteArray(buf.slice(start, end));\n}\nfunction utf8Slice(buf, start, end) {\n\tend = Math.min(buf.length, end);\n\tvar res = [];\n\tvar i = start;\n\twhile (i < end) {\n\t\tvar firstByte = buf[i];\n\t\tvar codePoint = null;\n\t\tvar bytesPerSequence = firstByte > 239 ? 4 : firstByte > 223 ? 3 : firstByte > 191 ? 2 : 1;\n\t\tif (i + bytesPerSequence <= end) {\n\t\t\tvar secondByte, thirdByte, fourthByte, tempCodePoint;\n\t\t\tswitch (bytesPerSequence) {\n\t\t\t\tcase 1:\n\t\t\t\t\tif (firstByte < 128) codePoint = firstByte;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tsecondByte = buf[i + 1];\n\t\t\t\t\tif ((secondByte & 192) === 128) {\n\t\t\t\t\t\ttempCodePoint = (firstByte & 31) << 6 | secondByte & 63;\n\t\t\t\t\t\tif (tempCodePoint > 127) codePoint = tempCodePoint;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tsecondByte = buf[i + 1];\n\t\t\t\t\tthirdByte = buf[i + 2];\n\t\t\t\t\tif ((secondByte & 192) === 128 && (thirdByte & 192) === 128) {\n\t\t\t\t\t\ttempCodePoint = (firstByte & 15) << 12 | (secondByte & 63) << 6 | thirdByte & 63;\n\t\t\t\t\t\tif (tempCodePoint > 2047 && (tempCodePoint < 55296 || tempCodePoint > 57343)) codePoint = tempCodePoint;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 4:\n\t\t\t\t\tsecondByte = buf[i + 1];\n\t\t\t\t\tthirdByte = buf[i + 2];\n\t\t\t\t\tfourthByte = buf[i + 3];\n\t\t\t\t\tif ((secondByte & 192) === 128 && (thirdByte & 192) === 128 && (fourthByte & 192) === 128) {\n\t\t\t\t\t\ttempCodePoint = (firstByte & 15) << 18 | (secondByte & 63) << 12 | (thirdByte & 63) << 6 | fourthByte & 63;\n\t\t\t\t\t\tif (tempCodePoint > 65535 && tempCodePoint < 1114112) codePoint = tempCodePoint;\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (codePoint === null) {\n\t\t\tcodePoint = 65533;\n\t\t\tbytesPerSequence = 1;\n\t\t} else if (codePoint > 65535) {\n\t\t\tcodePoint -= 65536;\n\t\t\tres.push(codePoint >>> 10 & 1023 | 55296);\n\t\t\tcodePoint = 56320 | codePoint & 1023;\n\t\t}\n\t\tres.push(codePoint);\n\t\ti += bytesPerSequence;\n\t}\n\treturn decodeCodePointsArray(res);\n}\nvar MAX_ARGUMENTS_LENGTH = 4096;\nfunction decodeCodePointsArray(codePoints) {\n\tvar len = codePoints.length;\n\tif (len <= MAX_ARGUMENTS_LENGTH) return String.fromCharCode.apply(String, codePoints);\n\tvar res = \"\";\n\tvar i = 0;\n\twhile (i < len) res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));\n\treturn res;\n}\nfunction asciiSlice(buf, start, end) {\n\tvar ret = \"\";\n\tend = Math.min(buf.length, end);\n\tfor (var i = start; i < end; ++i) ret += String.fromCharCode(buf[i] & 127);\n\treturn ret;\n}\nfunction latin1Slice(buf, start, end) {\n\tvar ret = \"\";\n\tend = Math.min(buf.length, end);\n\tfor (var i = start; i < end; ++i) ret += String.fromCharCode(buf[i]);\n\treturn ret;\n}\nfunction hexSlice(buf, start, end) {\n\tvar len = buf.length;\n\tif (!start || start < 0) start = 0;\n\tif (!end || end < 0 || end > len) end = len;\n\tvar out = \"\";\n\tfor (var i = start; i < end; ++i) out += toHex(buf[i]);\n\treturn out;\n}\nfunction utf16leSlice(buf, start, end) {\n\tvar bytes = buf.slice(start, end);\n\tvar res = \"\";\n\tfor (var i = 0; i < bytes.length; i += 2) res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n\treturn res;\n}\nBuffer.prototype.slice = function slice(start, end) {\n\tvar len = this.length;\n\tstart = ~~start;\n\tend = end === void 0 ? len : ~~end;\n\tif (start < 0) {\n\t\tstart += len;\n\t\tif (start < 0) start = 0;\n\t} else if (start > len) start = len;\n\tif (end < 0) {\n\t\tend += len;\n\t\tif (end < 0) end = 0;\n\t} else if (end > len) end = len;\n\tif (end < start) end = start;\n\tvar newBuf;\n\tif (Buffer.TYPED_ARRAY_SUPPORT) {\n\t\tnewBuf = this.subarray(start, end);\n\t\tnewBuf.__proto__ = Buffer.prototype;\n\t} else {\n\t\tvar sliceLen = end - start;\n\t\tnewBuf = new Buffer(sliceLen, void 0);\n\t\tfor (var i = 0; i < sliceLen; ++i) newBuf[i] = this[i + start];\n\t}\n\treturn newBuf;\n};\nfunction checkOffset(offset, ext, length) {\n\tif (offset % 1 !== 0 || offset < 0) throw new RangeError(\"offset is not uint\");\n\tif (offset + ext > length) throw new RangeError(\"Trying to access beyond buffer length\");\n}\nBuffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) {\n\toffset = offset | 0;\n\tbyteLength = byteLength | 0;\n\tif (!noAssert) checkOffset(offset, byteLength, this.length);\n\tvar val = this[offset];\n\tvar mul = 1;\n\tvar i = 0;\n\twhile (++i < byteLength && (mul *= 256)) val += this[offset + i] * mul;\n\treturn val;\n};\nBuffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) {\n\toffset = offset | 0;\n\tbyteLength = byteLength | 0;\n\tif (!noAssert) checkOffset(offset, byteLength, this.length);\n\tvar val = this[offset + --byteLength];\n\tvar mul = 1;\n\twhile (byteLength > 0 && (mul *= 256)) val += this[offset + --byteLength] * mul;\n\treturn val;\n};\nBuffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {\n\tif (!noAssert) checkOffset(offset, 1, this.length);\n\treturn this[offset];\n};\nBuffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {\n\tif (!noAssert) checkOffset(offset, 2, this.length);\n\treturn this[offset] | this[offset + 1] << 8;\n};\nBuffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {\n\tif (!noAssert) checkOffset(offset, 2, this.length);\n\treturn this[offset] << 8 | this[offset + 1];\n};\nBuffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {\n\tif (!noAssert) checkOffset(offset, 4, this.length);\n\treturn (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 16777216;\n};\nBuffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {\n\tif (!noAssert) checkOffset(offset, 4, this.length);\n\treturn this[offset] * 16777216 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);\n};\nBuffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) {\n\toffset = offset | 0;\n\tbyteLength = byteLength | 0;\n\tif (!noAssert) checkOffset(offset, byteLength, this.length);\n\tvar val = this[offset];\n\tvar mul = 1;\n\tvar i = 0;\n\twhile (++i < byteLength && (mul *= 256)) val += this[offset + i] * mul;\n\tmul *= 128;\n\tif (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\treturn val;\n};\nBuffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) {\n\toffset = offset | 0;\n\tbyteLength = byteLength | 0;\n\tif (!noAssert) checkOffset(offset, byteLength, this.length);\n\tvar i = byteLength;\n\tvar mul = 1;\n\tvar val = this[offset + --i];\n\twhile (i > 0 && (mul *= 256)) val += this[offset + --i] * mul;\n\tmul *= 128;\n\tif (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\treturn val;\n};\nBuffer.prototype.readInt8 = function readInt8(offset, noAssert) {\n\tif (!noAssert) checkOffset(offset, 1, this.length);\n\tif (!(this[offset] & 128)) return this[offset];\n\treturn (255 - this[offset] + 1) * -1;\n};\nBuffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {\n\tif (!noAssert) checkOffset(offset, 2, this.length);\n\tvar val = this[offset] | this[offset + 1] << 8;\n\treturn val & 32768 ? val | 4294901760 : val;\n};\nBuffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {\n\tif (!noAssert) checkOffset(offset, 2, this.length);\n\tvar val = this[offset + 1] | this[offset] << 8;\n\treturn val & 32768 ? val | 4294901760 : val;\n};\nBuffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {\n\tif (!noAssert) checkOffset(offset, 4, this.length);\n\treturn this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;\n};\nBuffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {\n\tif (!noAssert) checkOffset(offset, 4, this.length);\n\treturn this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];\n};\nBuffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {\n\tif (!noAssert) checkOffset(offset, 4, this.length);\n\treturn read(this, offset, true, 23, 4);\n};\nBuffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {\n\tif (!noAssert) checkOffset(offset, 4, this.length);\n\treturn read(this, offset, false, 23, 4);\n};\nBuffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {\n\tif (!noAssert) checkOffset(offset, 8, this.length);\n\treturn read(this, offset, true, 52, 8);\n};\nBuffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {\n\tif (!noAssert) checkOffset(offset, 8, this.length);\n\treturn read(this, offset, false, 52, 8);\n};\nfunction checkInt(buf, value, offset, ext, max, min) {\n\tif (!internalIsBuffer(buf)) throw new TypeError(\"\\\"buffer\\\" argument must be a Buffer instance\");\n\tif (value > max || value < min) throw new RangeError(\"\\\"value\\\" argument is out of bounds\");\n\tif (offset + ext > buf.length) throw new RangeError(\"Index out of range\");\n}\nBuffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {\n\tvalue = +value;\n\toffset = offset | 0;\n\tbyteLength = byteLength | 0;\n\tif (!noAssert) {\n\t\tvar maxBytes = Math.pow(2, 8 * byteLength) - 1;\n\t\tcheckInt(this, value, offset, byteLength, maxBytes, 0);\n\t}\n\tvar mul = 1;\n\tvar i = 0;\n\tthis[offset] = value & 255;\n\twhile (++i < byteLength && (mul *= 256)) this[offset + i] = value / mul & 255;\n\treturn offset + byteLength;\n};\nBuffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) {\n\tvalue = +value;\n\toffset = offset | 0;\n\tbyteLength = byteLength | 0;\n\tif (!noAssert) {\n\t\tvar maxBytes = Math.pow(2, 8 * byteLength) - 1;\n\t\tcheckInt(this, value, offset, byteLength, maxBytes, 0);\n\t}\n\tvar i = byteLength - 1;\n\tvar mul = 1;\n\tthis[offset + i] = value & 255;\n\twhile (--i >= 0 && (mul *= 256)) this[offset + i] = value / mul & 255;\n\treturn offset + byteLength;\n};\nBuffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {\n\tvalue = +value;\n\toffset = offset | 0;\n\tif (!noAssert) checkInt(this, value, offset, 1, 255, 0);\n\tif (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n\tthis[offset] = value & 255;\n\treturn offset + 1;\n};\nfunction objectWriteUInt16(buf, value, offset, littleEndian) {\n\tif (value < 0) value = 65535 + value + 1;\n\tfor (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) buf[offset + i] = (value & 255 << 8 * (littleEndian ? i : 1 - i)) >>> (littleEndian ? i : 1 - i) * 8;\n}\nBuffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {\n\tvalue = +value;\n\toffset = offset | 0;\n\tif (!noAssert) checkInt(this, value, offset, 2, 65535, 0);\n\tif (Buffer.TYPED_ARRAY_SUPPORT) {\n\t\tthis[offset] = value & 255;\n\t\tthis[offset + 1] = value >>> 8;\n\t} else objectWriteUInt16(this, value, offset, true);\n\treturn offset + 2;\n};\nBuffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {\n\tvalue = +value;\n\toffset = offset | 0;\n\tif (!noAssert) checkInt(this, value, offset, 2, 65535, 0);\n\tif (Buffer.TYPED_ARRAY_SUPPORT) {\n\t\tthis[offset] = value >>> 8;\n\t\tthis[offset + 1] = value & 255;\n\t} else objectWriteUInt16(this, value, offset, false);\n\treturn offset + 2;\n};\nfunction objectWriteUInt32(buf, value, offset, littleEndian) {\n\tif (value < 0) value = 4294967295 + value + 1;\n\tfor (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) buf[offset + i] = value >>> (littleEndian ? i : 3 - i) * 8 & 255;\n}\nBuffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {\n\tvalue = +value;\n\toffset = offset | 0;\n\tif (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);\n\tif (Buffer.TYPED_ARRAY_SUPPORT) {\n\t\tthis[offset + 3] = value >>> 24;\n\t\tthis[offset + 2] = value >>> 16;\n\t\tthis[offset + 1] = value >>> 8;\n\t\tthis[offset] = value & 255;\n\t} else objectWriteUInt32(this, value, offset, true);\n\treturn offset + 4;\n};\nBuffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {\n\tvalue = +value;\n\toffset = offset | 0;\n\tif (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);\n\tif (Buffer.TYPED_ARRAY_SUPPORT) {\n\t\tthis[offset] = value >>> 24;\n\t\tthis[offset + 1] = value >>> 16;\n\t\tthis[offset + 2] = value >>> 8;\n\t\tthis[offset + 3] = value & 255;\n\t} else objectWriteUInt32(this, value, offset, false);\n\treturn offset + 4;\n};\nBuffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {\n\tvalue = +value;\n\toffset = offset | 0;\n\tif (!noAssert) {\n\t\tvar limit = Math.pow(2, 8 * byteLength - 1);\n\t\tcheckInt(this, value, offset, byteLength, limit - 1, -limit);\n\t}\n\tvar i = 0;\n\tvar mul = 1;\n\tvar sub = 0;\n\tthis[offset] = value & 255;\n\twhile (++i < byteLength && (mul *= 256)) {\n\t\tif (value < 0 && sub === 0 && this[offset + i - 1] !== 0) sub = 1;\n\t\tthis[offset + i] = (value / mul >> 0) - sub & 255;\n\t}\n\treturn offset + byteLength;\n};\nBuffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {\n\tvalue = +value;\n\toffset = offset | 0;\n\tif (!noAssert) {\n\t\tvar limit = Math.pow(2, 8 * byteLength - 1);\n\t\tcheckInt(this, value, offset, byteLength, limit - 1, -limit);\n\t}\n\tvar i = byteLength - 1;\n\tvar mul = 1;\n\tvar sub = 0;\n\tthis[offset + i] = value & 255;\n\twhile (--i >= 0 && (mul *= 256)) {\n\t\tif (value < 0 && sub === 0 && this[offset + i + 1] !== 0) sub = 1;\n\t\tthis[offset + i] = (value / mul >> 0) - sub & 255;\n\t}\n\treturn offset + byteLength;\n};\nBuffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {\n\tvalue = +value;\n\toffset = offset | 0;\n\tif (!noAssert) checkInt(this, value, offset, 1, 127, -128);\n\tif (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n\tif (value < 0) value = 255 + value + 1;\n\tthis[offset] = value & 255;\n\treturn offset + 1;\n};\nBuffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {\n\tvalue = +value;\n\toffset = offset | 0;\n\tif (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);\n\tif (Buffer.TYPED_ARRAY_SUPPORT) {\n\t\tthis[offset] = value & 255;\n\t\tthis[offset + 1] = value >>> 8;\n\t} else objectWriteUInt16(this, value, offset, true);\n\treturn offset + 2;\n};\nBuffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {\n\tvalue = +value;\n\toffset = offset | 0;\n\tif (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);\n\tif (Buffer.TYPED_ARRAY_SUPPORT) {\n\t\tthis[offset] = value >>> 8;\n\t\tthis[offset + 1] = value & 255;\n\t} else objectWriteUInt16(this, value, offset, false);\n\treturn offset + 2;\n};\nBuffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {\n\tvalue = +value;\n\toffset = offset | 0;\n\tif (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);\n\tif (Buffer.TYPED_ARRAY_SUPPORT) {\n\t\tthis[offset] = value & 255;\n\t\tthis[offset + 1] = value >>> 8;\n\t\tthis[offset + 2] = value >>> 16;\n\t\tthis[offset + 3] = value >>> 24;\n\t} else objectWriteUInt32(this, value, offset, true);\n\treturn offset + 4;\n};\nBuffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {\n\tvalue = +value;\n\toffset = offset | 0;\n\tif (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);\n\tif (value < 0) value = 4294967295 + value + 1;\n\tif (Buffer.TYPED_ARRAY_SUPPORT) {\n\t\tthis[offset] = value >>> 24;\n\t\tthis[offset + 1] = value >>> 16;\n\t\tthis[offset + 2] = value >>> 8;\n\t\tthis[offset + 3] = value & 255;\n\t} else objectWriteUInt32(this, value, offset, false);\n\treturn offset + 4;\n};\nfunction checkIEEE754(buf, value, offset, ext, max, min) {\n\tif (offset + ext > buf.length) throw new RangeError(\"Index out of range\");\n\tif (offset < 0) throw new RangeError(\"Index out of range\");\n}\nfunction writeFloat(buf, value, offset, littleEndian, noAssert) {\n\tif (!noAssert) checkIEEE754(buf, value, offset, 4);\n\twrite(buf, value, offset, littleEndian, 23, 4);\n\treturn offset + 4;\n}\nBuffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {\n\treturn writeFloat(this, value, offset, true, noAssert);\n};\nBuffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {\n\treturn writeFloat(this, value, offset, false, noAssert);\n};\nfunction writeDouble(buf, value, offset, littleEndian, noAssert) {\n\tif (!noAssert) checkIEEE754(buf, value, offset, 8);\n\twrite(buf, value, offset, littleEndian, 52, 8);\n\treturn offset + 8;\n}\nBuffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {\n\treturn writeDouble(this, value, offset, true, noAssert);\n};\nBuffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {\n\treturn writeDouble(this, value, offset, false, noAssert);\n};\nBuffer.prototype.copy = function copy(target, targetStart, start, end) {\n\tif (!start) start = 0;\n\tif (!end && end !== 0) end = this.length;\n\tif (targetStart >= target.length) targetStart = target.length;\n\tif (!targetStart) targetStart = 0;\n\tif (end > 0 && end < start) end = start;\n\tif (end === start) return 0;\n\tif (target.length === 0 || this.length === 0) return 0;\n\tif (targetStart < 0) throw new RangeError(\"targetStart out of bounds\");\n\tif (start < 0 || start >= this.length) throw new RangeError(\"sourceStart out of bounds\");\n\tif (end < 0) throw new RangeError(\"sourceEnd out of bounds\");\n\tif (end > this.length) end = this.length;\n\tif (target.length - targetStart < end - start) end = target.length - targetStart + start;\n\tvar len = end - start;\n\tvar i;\n\tif (this === target && start < targetStart && targetStart < end) for (i = len - 1; i >= 0; --i) target[i + targetStart] = this[i + start];\n\telse if (len < 1e3 || !Buffer.TYPED_ARRAY_SUPPORT) for (i = 0; i < len; ++i) target[i + targetStart] = this[i + start];\n\telse Uint8Array.prototype.set.call(target, this.subarray(start, start + len), targetStart);\n\treturn len;\n};\nBuffer.prototype.fill = function fill(val, start, end, encoding) {\n\tif (typeof val === \"string\") {\n\t\tif (typeof start === \"string\") {\n\t\t\tencoding = start;\n\t\t\tstart = 0;\n\t\t\tend = this.length;\n\t\t} else if (typeof end === \"string\") {\n\t\t\tencoding = end;\n\t\t\tend = this.length;\n\t\t}\n\t\tif (val.length === 1) {\n\t\t\tvar code = val.charCodeAt(0);\n\t\t\tif (code < 256) val = code;\n\t\t}\n\t\tif (encoding !== void 0 && typeof encoding !== \"string\") throw new TypeError(\"encoding must be a string\");\n\t\tif (typeof encoding === \"string\" && !Buffer.isEncoding(encoding)) throw new TypeError(\"Unknown encoding: \" + encoding);\n\t} else if (typeof val === \"number\") val = val & 255;\n\tif (start < 0 || this.length < start || this.length < end) throw new RangeError(\"Out of range index\");\n\tif (end <= start) return this;\n\tstart = start >>> 0;\n\tend = end === void 0 ? this.length : end >>> 0;\n\tif (!val) val = 0;\n\tvar i;\n\tif (typeof val === \"number\") for (i = start; i < end; ++i) this[i] = val;\n\telse {\n\t\tvar bytes = internalIsBuffer(val) ? val : utf8ToBytes(new Buffer(val, encoding).toString());\n\t\tvar len = bytes.length;\n\t\tfor (i = 0; i < end - start; ++i) this[i + start] = bytes[i % len];\n\t}\n\treturn this;\n};\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g;\nfunction base64clean(str) {\n\tstr = stringtrim(str).replace(INVALID_BASE64_RE, \"\");\n\tif (str.length < 2) return \"\";\n\twhile (str.length % 4 !== 0) str = str + \"=\";\n\treturn str;\n}\nfunction stringtrim(str) {\n\tif (str.trim) return str.trim();\n\treturn str.replace(/^\\s+|\\s+$/g, \"\");\n}\nfunction toHex(n) {\n\tif (n < 16) return \"0\" + n.toString(16);\n\treturn n.toString(16);\n}\nfunction utf8ToBytes(string, units) {\n\tunits = units || Infinity;\n\tvar codePoint;\n\tvar length = string.length;\n\tvar leadSurrogate = null;\n\tvar bytes = [];\n\tfor (var i = 0; i < length; ++i) {\n\t\tcodePoint = string.charCodeAt(i);\n\t\tif (codePoint > 55295 && codePoint < 57344) {\n\t\t\tif (!leadSurrogate) {\n\t\t\t\tif (codePoint > 56319) {\n\t\t\t\t\tif ((units -= 3) > -1) bytes.push(239, 191, 189);\n\t\t\t\t\tcontinue;\n\t\t\t\t} else if (i + 1 === length) {\n\t\t\t\t\tif ((units -= 3) > -1) bytes.push(239, 191, 189);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tleadSurrogate = codePoint;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (codePoint < 56320) {\n\t\t\t\tif ((units -= 3) > -1) bytes.push(239, 191, 189);\n\t\t\t\tleadSurrogate = codePoint;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tcodePoint = (leadSurrogate - 55296 << 10 | codePoint - 56320) + 65536;\n\t\t} else if (leadSurrogate) {\n\t\t\tif ((units -= 3) > -1) bytes.push(239, 191, 189);\n\t\t}\n\t\tleadSurrogate = null;\n\t\tif (codePoint < 128) {\n\t\t\tif ((units -= 1) < 0) break;\n\t\t\tbytes.push(codePoint);\n\t\t} else if (codePoint < 2048) {\n\t\t\tif ((units -= 2) < 0) break;\n\t\t\tbytes.push(codePoint >> 6 | 192, codePoint & 63 | 128);\n\t\t} else if (codePoint < 65536) {\n\t\t\tif ((units -= 3) < 0) break;\n\t\t\tbytes.push(codePoint >> 12 | 224, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n\t\t} else if (codePoint < 1114112) {\n\t\t\tif ((units -= 4) < 0) break;\n\t\t\tbytes.push(codePoint >> 18 | 240, codePoint >> 12 & 63 | 128, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n\t\t} else throw new Error(\"Invalid code point\");\n\t}\n\treturn bytes;\n}\nfunction asciiToBytes(str) {\n\tvar byteArray = [];\n\tfor (var i = 0; i < str.length; ++i) byteArray.push(str.charCodeAt(i) & 255);\n\treturn byteArray;\n}\nfunction utf16leToBytes(str, units) {\n\tvar c, hi, lo;\n\tvar byteArray = [];\n\tfor (var i = 0; i < str.length; ++i) {\n\t\tif ((units -= 2) < 0) break;\n\t\tc = str.charCodeAt(i);\n\t\thi = c >> 8;\n\t\tlo = c % 256;\n\t\tbyteArray.push(lo);\n\t\tbyteArray.push(hi);\n\t}\n\treturn byteArray;\n}\nfunction base64ToBytes(str) {\n\treturn toByteArray(base64clean(str));\n}\nfunction blitBuffer(src, dst, offset, length) {\n\tfor (var i = 0; i < length; ++i) {\n\t\tif (i + offset >= dst.length || i >= src.length) break;\n\t\tdst[i + offset] = src[i];\n\t}\n\treturn i;\n}\nfunction isnan(val) {\n\treturn val !== val;\n}\nfunction isBuffer(obj) {\n\treturn obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj));\n}\nfunction isFastBuffer(obj) {\n\treturn !!obj.constructor && typeof obj.constructor.isBuffer === \"function\" && obj.constructor.isBuffer(obj);\n}\nfunction isSlowBuffer(obj) {\n\treturn typeof obj.readFloatLE === \"function\" && typeof obj.slice === \"function\" && isFastBuffer(obj.slice(0, 0));\n}\n//#endregion\n//#region src/util/base64.ts\n/**\n* Shared base64 encode/decode helpers.\n*\n* Both prefer the native `Uint8Array` base64 methods (Node 22+, modern\n* browsers): they avoid the intermediate binary string that `btoa`/`atob`\n* materialize and cannot stack-overflow on large buffers. Node `Buffer` is the\n* secondary path; a manual loop covers older runtimes.\n*\n* @module\n*/\n/**\n* Decode a base64 string into a `Uint8Array`.\n*\n* Prefers native `Uint8Array.fromBase64` (no intermediate binary string), then\n* Node `Buffer` (zero-copy), then `atob`.\n*/\nfunction decodeBase64(input) {\n\tconst fromBase64 = Uint8Array.fromBase64;\n\tif (typeof fromBase64 === \"function\") return fromBase64.call(Uint8Array, input);\n\tif (typeof Buffer !== \"undefined\") return Buffer.from(input, \"base64\");\n\treturn Uint8Array.from(atob(input), (c) => c.codePointAt(0));\n}\n/**\n* Encode a `Uint8Array` into a base64 string.\n*\n* Prefers native `Uint8Array.prototype.toBase64` (no intermediate binary\n* string), then Node `Buffer` (zero-copy), then a `btoa` fallback.\n*\n* The fallback builds the binary string in a loop rather than\n* `String.fromCharCode(...bytes)` — the spread form places every byte on the\n* call stack and overflows for large buffers (V8 caps function arguments near\n* ~65k).\n*/\nfunction encodeBase64(bytes) {\n\tconst toBase64 = Uint8Array.prototype.toBase64;\n\tif (typeof toBase64 === \"function\") return toBase64.call(bytes);\n\tif (typeof Buffer !== \"undefined\") return Buffer.from(bytes).toString(\"base64\");\n\tlet binary = \"\";\n\tfor (const byte of bytes) binary += String.fromCharCode(byte);\n\treturn btoa(binary);\n}\n//#endregion\n//#region src/util/data-type.ts\n/**\n* Binary input normalization.\n*\n* Accepts the full range of binary inputs (Buffer/Uint8Array/ArrayBuffer/\n* DataView/number[]/string/base64 data URL/…) and normalizes to `Uint8Array`.\n* Centralized here so every entry point (packer, patch, descriptor helpers)\n* shares one definition instead of re-declaring per module.\n*\n* @module\n*/\nconst DATA_URL_RE = /^data:([\\w.+-]+\\/[\\w.+-]+)?;base64,/;\n/** Test whether a string is a base64 data URL (`data:[mime];base64,...`). */\nfunction isBase64DataURL(input) {\n\treturn DATA_URL_RE.test(input);\n}\n/** Normalize any supported binary input to a `Uint8Array`. */\nfunction toUint8Array(data, options) {\n\tif (data instanceof Uint8Array) return data;\n\tif (data instanceof ArrayBuffer) return new Uint8Array(data);\n\tif (data instanceof DataView) return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n\tif (typeof data === \"string\") {\n\t\tconst match = data.match(DATA_URL_RE);\n\t\tif (match) return decodeBase64(data.slice(match[0].length));\n\t\tif (options?.encoding === \"base64\") return decodeBase64(data);\n\t\treturn new TextEncoder().encode(data);\n\t}\n\tif (Array.isArray(data)) return new Uint8Array(data);\n\tif (data instanceof Blob) throw new TypeError(\"Blob input requires async processing\");\n\tif (data instanceof ReadableStream) throw new TypeError(\"ReadableStream input requires async processing\");\n\tthrow new TypeError(`Unsupported data type: ${typeof data}`);\n}\n//#endregion\n//#region src/util/generators.ts\n/**\n* Unique ID generation utilities.\n*\n* @module\n*/\n/**\n* Creates a unique numeric ID generator with sequential numbering.\n*/\nconst uniqueNumericIdCreator = (initial = 0) => {\n\tlet currentCount = initial;\n\treturn () => ++currentCount;\n};\nconst URL_ALPHABET = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\n/**\n* Generates a unique lowercase alphanumeric ID using crypto.getRandomValues.\n*/\nconst uniqueId = () => {\n\tconst bytes = new Uint8Array(21);\n\tcrypto.getRandomValues(bytes);\n\tlet id = \"\";\n\tfor (const byte of bytes) id += URL_ALPHABET[byte & 63];\n\treturn id.toLowerCase();\n};\n/**\n* Generates a SHA-1 hash of the provided data.\n*/\nconst hashedId = (data) => {\n\treturn bytesToHex(sha1(data instanceof ArrayBuffer ? new Uint8Array(data) : typeof data === \"string\" ? new TextEncoder().encode(data) : data));\n};\n/**\n* Generates a UUID v4-style unique identifier using crypto.randomUUID.\n*/\nconst uniqueUuid = () => crypto.randomUUID();\n//#endregion\n//#region src/util/mappings.ts\n/**\n* Bidirectional mappings between user-friendly values and XSD abbreviated values.\n*\n* When XSD uses full English words (e.g. \"center\", \"start\"), values are used directly — no mapping needed.\n* When XSD uses abbreviations (e.g. \"ctr\", \"l\", \"rnd\"), this module maps them to full words.\n*\n* Usage in generation (Options → XML): xsdAlign.to(\"center\") → \"ctr\"\n* Usage in parsing (XML → Options): xsdAlign.from(\"ctr\") → \"center\"\n*/\n/** Invert a Record<K, V> into Record<V, K>. */\nfunction invertMap(map) {\n\tconst result = {};\n\tfor (const key of Object.keys(map)) result[map[key]] = key;\n\treturn result;\n}\n/** Create a bidirectional mapping helper from a single forward map. */\nfunction bidi(forward) {\n\tconst reverse = invertMap(forward);\n\treturn {\n\t\t/** User-friendly value → XSD value */\n\t\tto: (key) => forward[key] ?? key,\n\t\t/** XSD value → user-friendly value */\n\t\tfrom: (xsd) => reverse[xsd] ?? xsd,\n\t\t/** The forward map (user → XSD) */\n\t\tforward,\n\t\t/** The reverse map (XSD → user) */\n\t\treverse\n\t};\n}\nconst xsdRectAlignment = bidi({\n\ttopLeft: \"tl\",\n\ttop: \"t\",\n\ttopRight: \"tr\",\n\tleft: \"l\",\n\tcenter: \"ctr\",\n\tright: \"r\",\n\tbottomLeft: \"bl\",\n\tbottom: \"b\",\n\tbottomRight: \"br\"\n});\nconst xsdTextAlign = bidi({\n\tleft: \"l\",\n\tcenter: \"ctr\",\n\tright: \"r\",\n\tjustify: \"just\"\n});\nconst xsdTextAnchor = bidi({\n\ttop: \"t\",\n\tcenter: \"ctr\",\n\tbottom: \"b\",\n\tjustify: \"just\",\n\tdistribute: \"dist\"\n});\nconst xsdLineCap = bidi({\n\tround: \"rnd\",\n\tsquare: \"sq\",\n\tflat: \"flat\"\n});\nconst xsdCompoundLine = bidi({\n\tsingle: \"sng\",\n\tdouble: \"dbl\",\n\tthickThin: \"thickThin\",\n\tthinThick: \"thinThick\",\n\ttriple: \"tri\"\n});\nconst xsdPenAlignment = bidi({\n\tcenter: \"ctr\",\n\tinside: \"in\"\n});\nconst xsdLineEndSize = bidi({\n\tsmall: \"sm\",\n\tmedium: \"med\",\n\tlarge: \"lg\"\n});\nconst xsdBlendMode = bidi({\n\tover: \"over\",\n\tmultiply: \"mult\",\n\tscreen: \"screen\",\n\tdarken: \"darken\",\n\tlighten: \"lighten\"\n});\nconst xsdPathFillMode = bidi({\n\tnone: \"none\",\n\tnormal: \"norm\",\n\tlighten: \"lighten\",\n\tlightenLess: \"lightenLess\",\n\tdarken: \"darken\",\n\tdarkenLess: \"darkenLess\"\n});\nconst xsdEffectContainer = bidi({\n\tsibling: \"sib\",\n\ttree: \"tree\"\n});\nconst xsdPresetShadow = bidi({\n\tshadow1: \"shdw1\",\n\tshadow2: \"shdw2\",\n\tshadow3: \"shdw3\",\n\tshadow4: \"shdw4\",\n\tshadow5: \"shdw5\",\n\tshadow6: \"shdw6\",\n\tshadow7: \"shdw7\",\n\tshadow8: \"shdw8\",\n\tshadow9: \"shdw9\",\n\tshadow10: \"shdw10\",\n\tshadow11: \"shdw11\",\n\tshadow12: \"shdw12\",\n\tshadow13: \"shdw13\",\n\tshadow14: \"shdw14\",\n\tshadow15: \"shdw15\",\n\tshadow16: \"shdw16\",\n\tshadow17: \"shdw17\",\n\tshadow18: \"shdw18\",\n\tshadow19: \"shdw19\",\n\tshadow20: \"shdw20\"\n});\nconst xsdMaterialType = bidi({\n\tlegacyMatte: \"legacyMatte\",\n\tlegacyPlastic: \"legacyPlastic\",\n\tlegacyMetal: \"legacyMetal\",\n\tlegacyWireframe: \"legacyWireframe\",\n\tmatte: \"matte\",\n\tplastic: \"plastic\",\n\tmetal: \"metal\",\n\twarmMatte: \"warmMatte\",\n\ttranslucentPowder: \"translucentPowder\",\n\tpowder: \"powder\",\n\tdarkEdge: \"dkEdge\",\n\tsoftEdge: \"softEdge\",\n\tclear: \"clear\",\n\tflat: \"flat\",\n\tsoftMetal: \"softmetal\"\n});\nconst xsdPattern = bidi({\n\tpercent5: \"pct5\",\n\tpercent10: \"pct10\",\n\tpercent20: \"pct20\",\n\tpercent25: \"pct25\",\n\tpercent30: \"pct30\",\n\tpercent40: \"pct40\",\n\tpercent50: \"pct50\",\n\tpercent60: \"pct60\",\n\tpercent70: \"pct70\",\n\tpercent75: \"pct75\",\n\tpercent80: \"pct80\",\n\tpercent90: \"pct90\",\n\thorizontal: \"horz\",\n\tvertical: \"vert\",\n\tlightHorizontal: \"ltHorz\",\n\tlightVertical: \"ltVert\",\n\tdarkHorizontal: \"dkHorz\",\n\tdarkVertical: \"dkVert\",\n\tnarrowHorizontal: \"narHorz\",\n\tnarrowVertical: \"narVert\",\n\tdashedHorizontal: \"dashHorz\",\n\tdashedVertical: \"dashVert\",\n\tcross: \"cross\",\n\tdownDiagonal: \"dnDiag\",\n\tupDiagonal: \"upDiag\",\n\tlightDownDiagonal: \"ltDnDiag\",\n\tlightUpDiagonal: \"ltUpDiag\",\n\tdarkDownDiagonal: \"dkDnDiag\",\n\tdarkUpDiagonal: \"dkUpDiag\",\n\twideDownDiagonal: \"wdDnDiag\",\n\twideUpDiagonal: \"wdUpDiag\",\n\tdashedDownDiagonal: \"dashDnDiag\",\n\tdashedUpDiagonal: \"dashUpDiag\",\n\tdiagonalCross: \"diagCross\",\n\tsmallChecker: \"smCheck\",\n\tlargeChecker: \"lgCheck\",\n\tsmallGrid: \"smGrid\",\n\tlargeGrid: \"lgGrid\",\n\tdotGrid: \"dotGrid\",\n\tsmallConfetti: \"smConfetti\",\n\tlargeConfetti: \"lgConfetti\",\n\thorizontalBrick: \"horzBrick\",\n\tdiagonalBrick: \"diagBrick\",\n\tsolidDiamond: \"solidDmnd\",\n\topenDiamond: \"openDmnd\",\n\tdottedDiamond: \"dotDmnd\",\n\tplaid: \"plaid\",\n\tsphere: \"sphere\",\n\tweave: \"weave\",\n\tdivot: \"divot\",\n\tshingle: \"shingle\",\n\twave: \"wave\",\n\ttrellis: \"trellis\",\n\tzigZag: \"zigZag\"\n});\nconst xsdVerticalMergeRev = bidi({\n\tcontinue: \"cont\",\n\trestart: \"rest\"\n});\nconst xsdUnderlineStyle = bidi({\n\tsingle: \"sng\",\n\tdouble: \"dbl\",\n\tnone: \"none\"\n});\nconst xsdStrikeStyle = bidi({\n\tsingleStrike: \"sngStrike\",\n\tdoubleStrike: \"dblStrike\",\n\tnoStrike: \"noStrike\"\n});\nconst xsdTextCaps = bidi({\n\tnone: \"none\",\n\tall: \"all\",\n\tsmall: \"small\"\n});\n//#endregion\n//#region src/util/converters.ts\n/**\n* OOXML unit conversion utilities.\n*\n* @module\n*/\n/**\n* Converts millimeters to TWIP (twentieths of a point).\n*/\nconst convertMillimetersToTwip = (millimeters) => Math.floor(millimeters / 25.4 * 72 * 20);\n/**\n* Converts inches to TWIP (twentieths of a point).\n*/\nconst convertInchesToTwip = (inches) => Math.floor(inches * 72 * 20);\n/**\n* Converts pixels to EMU (96 DPI).\n*/\nconst convertPixelsToEmu = (pixels) => Math.round(pixels * 9525);\n/**\n* Converts EMU to pixels (96 DPI).\n*\n* Returns a possibly fractional (sub-pixel) value. The integer rounding that\n* lived here before permanently discarded sub-pixel precision, which made an\n* EMU → pixel → EMU round-trip lossy (e.g. 5521960 EMU → 580 px → 5524500 EMU).\n* Keeping the fraction lets convertPixelsToEmu restore the exact original EMU.\n* Callers needing an integer pixel for display should Math.round the result.\n*/\nconst convertEmuToPixels = (emus) => emus / 9525;\n/**\n* Converts inches to EMU.\n*/\nconst convertInchesToEmu = (inches) => Math.round(inches * 914400);\n/**\n* Converts EMU to inches.\n*/\nconst convertEmuToInches = (emus) => emus / 914400;\n/**\n* Converts points to EMU.\n*/\nconst convertPointsToEmu = (points) => Math.round(points * 12700);\n/**\n* Converts EMU to points.\n*/\nconst convertEmuToPoints = (emus) => emus / 12700;\n/**\n* Parse a UniversalMeasure string into its numeric value and unit.\n*\n* @param measure - A universal measure string like \"2.54cm\", \"-10mm\", \"1in\"\n* @returns The parsed value and unit\n* @throws Error if the format is invalid\n*\n* @example\n* ```typescript\n* parseUniversalMeasure(\"2.54cm\"); // { value: 2.54, unit: \"cm\" }\n* parseUniversalMeasure(\"-10mm\"); // { value: -10, unit: \"mm\" }\n* ```\n*/\nconst parseUniversalMeasure = (measure) => {\n\tconst match = measure.match(/^(-?[0-9]+(?:\\.[0-9]+)?)(mm|cm|in|pt|pc|pi|px)$/);\n\tif (!match) throw new Error(`Invalid universal measure: '${measure}'`);\n\tconst [, value, unit] = match;\n\tif (value === void 0 || unit === void 0) throw new Error(`Invalid universal measure: '${measure}'`);\n\treturn {\n\t\tvalue: parseFloat(value),\n\t\tunit\n\t};\n};\n/**\n* Converts a UniversalMeasure string to TWIP (twentieths of a point).\n*\n* Supports units: mm, cm, in, pt, pc (picas, 1pc = 12pt), pi (alias for pc).\n*\n* @param measure - A universal measure string like \"2.54cm\", \"1in\", \"12pt\"\n* @returns The value in TWIP\n*\n* @example\n* ```typescript\n* convertUniversalMeasureToTwip(\"1in\"); // 1440\n* convertUniversalMeasureToTwip(\"2.54cm\"); // ~1440 (1 inch)\n* convertUniversalMeasureToTwip(\"72pt\"); // 1440 (1 inch = 72pt = 1440 twips)\n* ```\n*/\nconst convertUniversalMeasureToTwip = (measure) => {\n\tconst { value, unit } = parseUniversalMeasure(measure);\n\tswitch (unit) {\n\t\tcase \"mm\": return convertMillimetersToTwip(value);\n\t\tcase \"cm\": return convertMillimetersToTwip(value * 10);\n\t\tcase \"in\": return convertInchesToTwip(value);\n\t\tcase \"pt\": return Math.floor(value * 20);\n\t\tcase \"pc\":\n\t\tcase \"pi\": return Math.floor(value * 12 * 20);\n\t\tcase \"px\": return Math.round(value * 15);\n\t}\n};\n/**\n* Converts a measurement value (number or UniversalMeasure) to TWIP.\n*\n* If the value is already a number, it is returned as-is (assumed to be in twips).\n* If the value is a UniversalMeasure string, it is converted to twips.\n*\n* Useful for accepting both `number` and `UniversalMeasure` inputs where\n* the XSD type is a union (e.g., ST_TwipsMeasure, ST_SignedTwipsMeasure).\n*\n* @param val - A numeric twip value or a universal measure string\n* @returns The value in TWIP\n*\n* @example\n* ```typescript\n* convertToTwip(1440); // 1440 (already twips)\n* convertToTwip(\"1in\"); // 1440\n* convertToTwip(\"2.54cm\"); // ~1440\n* ```\n*/\nconst convertToTwip = (val) => typeof val === \"string\" ? convertUniversalMeasureToTwip(val) : val;\n/**\n* Converts a UniversalMeasure string to EMU (English Metric Units).\n*\n* Supports units: mm, cm, in, pt, pc (picas, 1pc = 12pt), pi (alias for pc).\n*\n* @param measure - A universal measure string like \"2.54cm\", \"1in\", \"12pt\"\n* @returns The value in EMU\n*\n* @example\n* ```typescript\n* convertUniversalMeasureToEmu(\"1in\"); // 914400\n* convertUniversalMeasureToEmu(\"2.54cm\"); // 914400\n* convertUniversalMeasureToEmu(\"12pt\"); // 152400\n* ```\n*/\nconst convertUniversalMeasureToEmu = (measure) => {\n\tconst { value, unit } = parseUniversalMeasure(measure);\n\tswitch (unit) {\n\t\tcase \"mm\": return Math.round(value * 36e3);\n\t\tcase \"cm\": return Math.round(value * 36e4);\n\t\tcase \"in\": return convertInchesToEmu(value);\n\t\tcase \"pt\": return convertPointsToEmu(value);\n\t\tcase \"pc\":\n\t\tcase \"pi\": return convertPointsToEmu(value * 12);\n\t\tcase \"px\": return convertPixelsToEmu(value);\n\t}\n};\n/**\n* Converts a measurement value (number or UniversalMeasure) to EMU.\n*\n* Numbers are returned as-is (assumed EMU). Strings are parsed as\n* UniversalMeasure via {@link convertUniversalMeasureToEmu} — including the\n* project-only `px` unit (96 DPI). The result is always an EMU number written to\n* XML, so px never appears verbatim in the document.\n*\n* Useful for DrawingML fields where the XSD type is a union (e.g., ST_Coordinate).\n*\n* @param val - A numeric EMU value, or a UniversalMeasure string (incl. `${n}px`)\n* @returns The value in EMU\n*\n* @example\n* ```typescript\n* convertToEmu(914400); // 914400 (already EMU)\n* convertToEmu(\"1in\"); // 914400\n* convertToEmu(\"2.54cm\"); // 914400\n* convertToEmu(\"200px\"); // 1905000 (200 * 9525)\n* ```\n*/\nconst convertToEmu = (val) => typeof val === \"string\" ? convertUniversalMeasureToEmu(val) : val;\n/**\n* Converts a UniversalMeasure string to points (1pt = 1/72 inch).\n*\n* Supports units: mm, cm, in, pt, pc (picas, 1pc = 12pt), pi (alias for pc),\n* px (96 DPI).\n*/\nconst convertUniversalMeasureToPt = (measure) => {\n\tconst { value, unit } = parseUniversalMeasure(measure);\n\tswitch (unit) {\n\t\tcase \"mm\": return value / 25.4 * 72;\n\t\tcase \"cm\": return value * 10 / 25.4 * 72;\n\t\tcase \"in\": return value * 72;\n\t\tcase \"pt\": return value;\n\t\tcase \"pc\":\n\t\tcase \"pi\": return value * 12;\n\t\tcase \"px\": return value / 96 * 72;\n\t}\n};\n/**\n* Converts a measurement value (number or UniversalMeasure) to points.\n*\n* Numbers are returned as-is (assumed to be in points). Strings are parsed as\n* UniversalMeasure. Useful for SpreadsheetML fields where a number is points.\n*/\nconst convertToPt = (val) => typeof val === \"string\" ? convertUniversalMeasureToPt(val) : val;\n/**\n* Converts a UniversalMeasure string to inches.\n*\n* Supports units: mm, cm, in, pt, pc, pi, px (96 DPI).\n*/\nconst convertUniversalMeasureToInch = (measure) => {\n\tconst { value, unit } = parseUniversalMeasure(measure);\n\tswitch (unit) {\n\t\tcase \"mm\": return value / 25.4;\n\t\tcase \"cm\": return value * 10 / 25.4;\n\t\tcase \"in\": return value;\n\t\tcase \"pt\": return value / 72;\n\t\tcase \"pc\":\n\t\tcase \"pi\": return value * 12 / 72;\n\t\tcase \"px\": return value / 96;\n\t}\n};\n/**\n* Converts a measurement value (number or UniversalMeasure) to inches.\n*\n* Numbers are returned as-is (assumed to be in inches). Useful for SpreadsheetML\n* page-margin fields where a number is inches.\n*/\nconst convertToInch = (val) => typeof val === \"string\" ? convertUniversalMeasureToInch(val) : val;\n//#endregion\nexport { xsdStrikeStyle as A, isBase64DataURL as B, xsdLineEndSize as C, xsdPenAlignment as D, xsdPattern as E, xsdVerticalMergeRev as F, decodeBase64 as H, hashedId as I, uniqueId as L, xsdTextAnchor as M, xsdTextCaps as N, xsdPresetShadow as O, xsdUnderlineStyle as P, uniqueNumericIdCreator as R, xsdLineCap as S, xsdPathFillMode as T, encodeBase64 as U, toUint8Array as V, Buffer as W, parseUniversalMeasure as _, convertInchesToTwip as a, xsdCompoundLine as b, convertPointsToEmu as c, convertToPt as d, convertToTwip as f, convertUniversalMeasureToTwip as g, convertUniversalMeasureToPt as h, convertInchesToEmu as i, xsdTextAlign as j, xsdRectAlignment as k, convertToEmu as l, convertUniversalMeasureToInch as m, convertEmuToPixels as n, convertMillimetersToTwip as o, convertUniversalMeasureToEmu as p, convertEmuToPoints as r, convertPixelsToEmu as s, convertEmuToInches as t, convertToInch as u, invertMap as v, xsdMaterialType as w, xsdEffectContainer as x, xsdBlendMode as y, uniqueUuid as z };\n\n//# sourceMappingURL=converters-C_Y2QX1w.mjs.map","import { createRequire } from 'module';\nvar require = createRequire('/');\n// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Some of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar _a;\n// Mediocre shim\nvar Worker;\nvar isMarkedAsUntransferable;\nvar workerAdd = \";var __w=require('worker_threads');__w.parentPort.on('message',function(m){onmessage({data:m})}),postMessage=function(m,t){__w.parentPort.postMessage(m,t)},close=process.exit;self=global\";\ntry {\n (_a = require('worker_threads'), Worker = _a.Worker, isMarkedAsUntransferable = _a.isMarkedAsUntransferable);\n}\ncatch (e) {\n}\nvar wk = Worker ? function (c, _, msg, transfer, cb) {\n var done = false;\n var w = new Worker(c + workerAdd, { eval: true })\n .on('error', function (e) { return cb(e, null); })\n .on('message', function (m) { return cb(null, m); })\n .on('exit', function (c) {\n if (c && !done)\n cb(new Error('exited with code ' + c), null);\n });\n if (isMarkedAsUntransferable)\n transfer = transfer.filter(function (t) { return !isMarkedAsUntransferable(t); });\n w.postMessage(msg, transfer);\n w.terminate = function () {\n done = true;\n return Worker.prototype.terminate.call(w);\n };\n return w;\n} : function (_, __, ___, ____, cb) {\n setImmediate(function () { return cb(new Error('async operations unsupported - update to Node 12+ (or Node 10-11 with the --experimental-worker CLI flag)'), null); });\n var NOP = function () { };\n return {\n terminate: NOP,\n postMessage: NOP\n };\n};\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n var b = new u16(31);\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n }\n // numbers here are at max 18 bits\n var r = new i32(b[30]);\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = ((j - b[i]) << 5) | i;\n }\n }\n return { b: b, r: r };\n};\nvar _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);\n x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);\n x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);\n rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n var s = cd.length;\n // index\n var i = 0;\n // u16 \"map\": index -> # of codes with bit length = index\n var l = new u16(mb);\n // length of cd must be 288 (total # of codes)\n for (; i < s; ++i) {\n if (cd[i])\n ++l[cd[i] - 1];\n }\n // u16 \"map\": index -> minimum code for bit length = index\n var le = new u16(mb);\n for (i = 1; i < mb; ++i) {\n le[i] = (le[i - 1] + l[i - 1]) << 1;\n }\n var co;\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb);\n // bits to remove for reverser\n var rvb = 15 - mb;\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = (i << 4) | cd[i];\n // free bits\n var r_1 = mb - cd[i];\n // start value\n var v = le[cd[i] - 1]++ << r_1;\n // m is end value\n for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >> rvb] = sv;\n }\n }\n }\n }\n else {\n co = new u16(s);\n for (i = 0; i < s; ++i) {\n if (cd[i]) {\n co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);\n }\n }\n }\n return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n var m = a[0];\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m)\n m = a[i];\n }\n return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p + 7) / 8) | 0; };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n // can't use .constructor in case user-supplied\n return new u8(v.subarray(s, e));\n};\n/**\n * Codes for errors generated within this library\n */\nexport var FlateErrorCode = {\n UnexpectedEOF: 0,\n InvalidBlockType: 1,\n InvalidLengthLiteral: 2,\n InvalidDistance: 3,\n StreamFinished: 4,\n NoStreamHandler: 5,\n InvalidHeader: 6,\n NoCallback: 7,\n InvalidUTF8: 8,\n ExtraFieldTooLong: 9,\n InvalidDate: 10,\n FilenameTooLong: 11,\n StreamFinishing: 12,\n InvalidZipData: 13,\n UnknownCompressionMethod: 14\n};\n// error codes\nvar ec = [\n 'unexpected EOF',\n 'invalid block type',\n 'invalid length/literal',\n 'invalid distance',\n 'stream finished',\n 'no stream handler',\n , // determined by compression function\n 'no callback',\n 'invalid UTF-8 data',\n 'extra field too long',\n 'date not in range 1980-2099',\n 'filename too long',\n 'stream finishing',\n 'invalid zip data'\n // determined by unknown compression method\n];\n;\nvar err = function (ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, st, buf, dict) {\n // source length dict length\n var sl = dat.length, dl = dict ? dict.length : 0;\n if (!sl || st.f && !st.l)\n return buf || new u8(0);\n var noBuf = !buf;\n // have to estimate size\n var resize = noBuf || st.i != 2;\n // no state\n var noSt = st.i;\n // Assumes roughly 33% compression ratio average\n if (noBuf)\n buf = new u8(sl * 3);\n // ensure buffer can fit at least l elements\n var cbuf = function (l) {\n var bl = buf.length;\n // need to increase size to fit\n if (l > bl) {\n // Double or set to necessary, whichever is greater\n var nbuf = new u8(Math.max(bl * 2, l));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n // last chunk bitpos bytes\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n // total bits\n var tbts = sl * 8;\n do {\n if (!lm) {\n // BFINAL - this is only 1 when last chunk is next\n final = bits(dat, pos, 1);\n // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n // go to end of byte boundary\n var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n if (t > sl) {\n if (noSt)\n err(0);\n break;\n }\n // ensure size\n if (resize)\n cbuf(bt + l);\n // Copy over uncompressed data\n buf.set(dat.subarray(s, t), bt);\n // Get new bitpos, update byte count\n st.b = bt += l, st.p = pos = t * 8, st.f = final;\n continue;\n }\n else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n // literal lengths\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n // length+distance tree\n var ldt = new u8(tl);\n // code length tree\n var clt = new u8(19);\n for (var i = 0; i < hcLen; ++i) {\n // use index map to get real code\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n pos += hcLen * 3;\n // code lengths bits\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n // code lengths map\n var clm = hMap(clt, clb, 1);\n for (var i = 0; i < tl;) {\n var r = clm[bits(dat, pos, clbmsk)];\n // bits read\n pos += r & 15;\n // symbol\n var s = r >> 4;\n // code length to copy\n if (s < 16) {\n ldt[i++] = s;\n }\n else {\n // copy count\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i++] = c;\n }\n }\n // length tree distance tree\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n // max length bits\n lbt = max(lt);\n // max dist bits\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n }\n else\n err(1);\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n }\n // Make sure the buffer can hold this + the largest possible addition\n // Maximum chunk size (practically, theoretically infinite) is 2^17\n if (resize)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var lpos = pos;\n for (;; lpos = pos) {\n // bits read, code\n var c = lm[bits16(dat, pos) & lms], sym = c >> 4;\n pos += c & 15;\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (!c)\n err(2);\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lpos = pos, lm = null;\n break;\n }\n else {\n var add = sym - 254;\n // no extra bits needed if less\n if (sym > 264) {\n // index\n var i = sym - 257, b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n }\n // dist\n var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;\n if (!d)\n err(3);\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n }\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (resize)\n cbuf(bt + 131072);\n var end = bt + add;\n if (bt < dt) {\n var shift = dl - dt, dend = Math.min(dt, end);\n if (shift + bt < 0)\n err(3);\n for (; bt < dend; ++bt)\n buf[bt] = dict[shift + bt];\n }\n for (; bt < end; ++bt)\n buf[bt] = buf[bt - dt];\n }\n }\n st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n // don't reallocate for streams or user buffers\n return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n d[o + 2] |= v >> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n // Need extra info to make a tree\n var t = [];\n for (var i = 0; i < d.length; ++i) {\n if (d[i])\n t.push({ s: i, f: d[i] });\n }\n var s = t.length;\n var t2 = t.slice();\n if (!s)\n return { t: et, l: 0 };\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return { t: v, l: 1 };\n }\n t.sort(function (a, b) { return a.f - b.f; });\n // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n t.push({ s: -1, f: 25001 });\n var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n }\n var maxSym = t2[0].s;\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym)\n maxSym = t2[i].s;\n }\n // code lengths\n var tr = new u16(maxSym + 1);\n // max bits in tree\n var mbt = ln(t[i1 - 1], tr, 0);\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0, dt = 0;\n // left cost\n var lft = mbt - mb, cst = 1 << lft;\n t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n if (tr[i2_1] > mb) {\n dt += cst - (1 << (mbt - tr[i2_1]));\n tr[i2_1] = mb;\n }\n else\n break;\n }\n dt >>= lft;\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb)\n dt -= 1 << (mb - tr[i2_2]++ - 1);\n else\n ++i;\n }\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n mbt = mb;\n }\n return { t: new u8(tr), l: mbt };\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n return n.s == -1\n ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n var s = c.length;\n // Note that the semicolon was intentional\n while (s && !c[--s])\n ;\n var cl = new u16(++s);\n // ind num streak\n var cli = 0, cln = c[0], cls = 1;\n var w = function (v) { cl[cli++] = v; };\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s)\n ++cls;\n else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138)\n w(32754);\n if (cls > 2) {\n w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n cls = 0;\n }\n }\n else if (cls > 3) {\n w(cln), --cls;\n for (; cls > 6; cls -= 6)\n w(8304);\n if (cls > 2)\n w(((cls - 3) << 5) | 8208), cls = 0;\n }\n while (cls--)\n w(cln);\n cls = 1;\n cln = c[i];\n }\n }\n return { c: cl.subarray(0, cli), n: s };\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n var l = 0;\n for (var i = 0; i < cl.length; ++i)\n l += cf[i] * cl[i];\n return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n for (var i = 0; i < s; ++i)\n out[o + i + 4] = dat[i];\n return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;\n var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;\n var _c = lc(dlt), lclt = _c.c, nlc = _c.n;\n var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;\n var lcfreq = new u16(19);\n for (var i = 0; i < lclt.length; ++i)\n ++lcfreq[lclt[i] & 31];\n for (var i = 0; i < lcdt.length; ++i)\n ++lcfreq[lcdt[i] & 31];\n var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;\n var nlcc = 19;\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n ;\n var flen = (bl + 5) << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];\n if (bs >= 0 && flen <= ftlen && flen <= dtlen)\n return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n for (var i = 0; i < nlcc; ++i)\n wbits(out, p + 3 * i, lct[clim[i]]);\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15)\n wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12;\n }\n }\n }\n else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n for (var i = 0; i < li; ++i) {\n var sym = syms[i];\n if (sym > 255) {\n var len = (sym >> 18) & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7)\n wbits(out, p, (sym >> 23) & 31), p += fleb[len];\n var dst = sym & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3)\n wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst];\n }\n else {\n wbits16(out, p, lm[sym]), p += ll[sym];\n }\n }\n wbits16(out, p, lm[256]);\n return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, st) {\n var s = st.z || dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n // writing to this writes to the output buffer\n var w = o.subarray(pre, o.length - post);\n var lst = st.l;\n var pos = (st.r || 0) & 7;\n if (lvl) {\n if (pos)\n w[0] = st.r >> 3;\n var opt = deo[lvl - 1];\n var n = opt >> 13, c = opt & 8191;\n var msk_1 = (1 << plvl) - 1;\n // prev 2-byte val map curr 2-byte val map\n var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n var syms = new i32(25000);\n // length/literal freq distance freq\n var lf = new u16(288), df = new u16(32);\n // l/lcnt exbits index l/lind waitdx blkpos\n var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;\n for (; i + 2 < s; ++i) {\n // hash value\n var hv = hsh(i);\n // index mod 32768 previous index mod\n var imod = i & 32767, pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod;\n // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n for (var j = 0; j < 286; ++j)\n lf[j] = 0;\n for (var j = 0; j < 30; ++j)\n df[j] = 0;\n }\n // len dist chain\n var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i);\n // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n var ml = Math.min(258, rem);\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n ;\n if (nl > l) {\n l = nl, d = dif;\n // break out early when we reach \"nice\" (we are satisfied enough)\n if (nl > maxn)\n break;\n // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n for (var j = 0; j < mmd; ++j) {\n var ti = i - dif + j & 32767;\n var pti = prev[ti];\n var cd = ti - pti & 32767;\n if (cd > md)\n md = cd, pimod = ti;\n }\n }\n }\n // check the previous match\n imod = pimod, pimod = prev[imod];\n dif += imod - pimod & 32767;\n }\n }\n // d will be nonzero only when a match was found\n if (d) {\n // store both dist and len data in one int32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n var lin = revfl[l] & 31, din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n }\n else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n for (i = Math.max(i, wi); i < s; ++i) {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n if (!lst) {\n st.r = (pos & 7) | w[(pos / 8) | 0] << 3;\n // shft(pos) now 1 less if pos & 7 != 0\n pos -= 7;\n st.h = head, st.p = prev, st.i = i, st.w = wi;\n }\n }\n else {\n for (var i = st.w || 0; i < s + lst; i += 65535) {\n // end\n var e = i + 65535;\n if (e >= s) {\n // write final block\n w[(pos / 8) | 0] = lst;\n e = s;\n }\n pos = wfblk(w, pos + 1, dat.subarray(i, e));\n }\n st.i = s;\n }\n return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n var t = new Int32Array(256);\n for (var i = 0; i < 256; ++i) {\n var c = i, k = 9;\n while (--k)\n c = ((c & 1) && -306674912) ^ (c >>> 1);\n t[i] = c;\n }\n return t;\n})();\n// CRC32\nvar crc = function () {\n var c = -1;\n return {\n p: function (d) {\n // closures have awful performance\n var cr = c;\n for (var i = 0; i < d.length; ++i)\n cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n c = cr;\n },\n d: function () { return ~c; }\n };\n};\n// Adler32\nvar adler = function () {\n var a = 1, b = 0;\n return {\n p: function (d) {\n // closures have awful performance\n var n = a, m = b;\n var l = d.length | 0;\n for (var i = 0; i != l;) {\n var e = Math.min(i + 2655, l);\n for (; i < e; ++i)\n m += n += d[i];\n n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);\n }\n a = n, b = m;\n },\n d: function () {\n a %= 65521, b %= 65521;\n return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8);\n }\n };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n if (!st) {\n st = { l: 1 };\n if (opt.dictionary) {\n var dict = opt.dictionary.subarray(-32768);\n var newDat = new u8(dict.length + dat.length);\n newDat.set(dict);\n newDat.set(dat, dict.length);\n dat = newDat;\n st.w = dict.length;\n }\n }\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? (st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20) : (12 + opt.mem), pre, post, st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n var o = {};\n for (var k in a)\n o[k] = a[k];\n for (var k in b)\n o[k] = b[k];\n return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\\s+/g, '').split(',');\n for (var i = 0; i < dt.length; ++i) {\n var v = dt[i], k = ks[i];\n if (typeof v == 'function') {\n fnStr += ';' + k + '=';\n var st_1 = v.toString();\n if (v.prototype) {\n // for global objects\n if (st_1.indexOf('[native code]') != -1) {\n var spInd = st_1.indexOf(' ', 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n }\n else {\n fnStr += st_1;\n for (var t in v.prototype)\n fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n }\n }\n else\n fnStr += st_1;\n }\n else\n td[k] = v;\n }\n return fnStr;\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n var tl = [];\n for (var k in v) {\n if (v[k].buffer) {\n tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n }\n return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n if (!ch[id]) {\n var fnStr = '', td_1 = {}, m = fns.length - 1;\n for (var i = 0; i < m; ++i)\n fnStr = wcln(fns[i], fnStr, td_1);\n ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };\n }\n var td = mrg({}, ch[id].e);\n return wk(ch[id].c + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; };\nvar bDflt = function () { return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zls]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get opts\nvar gopt = function (o) { return o && {\n out: o.size && new u8(o.size),\n dictionary: o.dictionary\n}; };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function (err, dat) {\n w.terminate();\n cb(err, dat);\n });\n w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n return function (ev) {\n if (ev.data[0]) {\n strm.push(ev.data[0], ev.data[1]);\n postMessage([ev.data[0].length]);\n }\n else\n strm.flush(ev.data[1]);\n };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id, flush, ext) {\n var t;\n var w = wrkr(fns, init, id, function (err, dat) {\n if (err)\n w.terminate(), strm.ondata.call(strm, err);\n else if (!Array.isArray(dat))\n ext(dat);\n else if (dat.length == 1) {\n strm.queuedSize -= dat[0];\n if (strm.ondrain)\n strm.ondrain(dat[0]);\n }\n else {\n if (dat[1])\n w.terminate();\n strm.ondata.call(strm, err, dat[0], dat[1]);\n }\n });\n w.postMessage(opts);\n strm.queuedSize = 0;\n strm.push = function (d, f) {\n if (!strm.ondata)\n err(5);\n if (t)\n strm.ondata(err(4, 0, 1), null, !!f);\n strm.queuedSize += d.length;\n // can fail for cross-realm Uint8Array, but ok - only a small performance penalty\n w.postMessage([d, t = f], d.buffer instanceof ArrayBuffer ? [d.buffer] : []);\n };\n strm.terminate = function () { w.terminate(); };\n if (flush) {\n strm.flush = function (sync) { w.postMessage([0, sync]); };\n }\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\n// read 8 bytes\nvar b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };\n// write bytes\nvar wbytes = function (d, b, v) {\n for (; v; ++b)\n d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n var fn = o.filename;\n c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n if (o.mtime != 0)\n wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n if (fn) {\n c[3] = 8;\n for (var i = 0; i <= fn.length; ++i)\n c[i + 10] = fn.charCodeAt(i);\n }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n err(6, 'invalid gzip data');\n var flg = d[3];\n var st = 10;\n if (flg & 4)\n st += (d[10] | d[11] << 8) + 2;\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n ;\n return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n var l = d.length;\n return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + (o.filename ? o.filename.length + 1 : 0); };\n// zlib header\nvar zlh = function (c, o) {\n var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32);\n c[1] |= 31 - ((c[0] << 8) | c[1]) % 31;\n if (o.dictionary) {\n var h = adler();\n h.p(o.dictionary);\n wbytes(c, 2, h.d());\n }\n};\n// zlib start\nvar zls = function (d, dict) {\n if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n err(6, 'invalid zlib data');\n if ((d[1] >> 5 & 1) == +!dict)\n err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary');\n return (d[1] >> 3 & 4) + 2;\n};\nfunction StrmOpt(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n return opts;\n}\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n function Deflate(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n this.o = opts || {};\n this.s = { l: 0, i: 32768, w: 32768, z: 32768 };\n // Buffer length must always be 0 mod 32768 for index calculations to be correct when modifying head and prev\n // 98304 = 32768 (lookback) + 65536 (common chunk size)\n this.b = new u8(98304);\n if (this.o.dictionary) {\n var dict = this.o.dictionary.subarray(-32768);\n this.b.set(dict, 32768 - dict.length);\n this.s.i = 32768 - dict.length;\n }\n }\n Deflate.prototype.p = function (c, f) {\n this.ondata(dopt(c, this.o, 0, 0, this.s), f);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Deflate.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n var endLen = chunk.length + this.s.z;\n if (endLen > this.b.length) {\n if (endLen > 2 * this.b.length - 32768) {\n var newBuf = new u8(endLen & -32768);\n newBuf.set(this.b.subarray(0, this.s.z));\n this.b = newBuf;\n }\n var split = this.b.length - this.s.z;\n this.b.set(chunk.subarray(0, split), this.s.z);\n this.s.z = this.b.length;\n this.p(this.b, false);\n this.b.set(this.b.subarray(-32768));\n this.b.set(chunk.subarray(split), 32768);\n this.s.z = chunk.length - split + 32768;\n this.s.i = 32766, this.s.w = 32768;\n }\n else {\n this.b.set(chunk, this.s.z);\n this.s.z += chunk.length;\n }\n this.s.l = final & 1;\n if (this.s.z > this.s.w + 8191 || final) {\n this.p(this.b, final || false);\n this.s.w = this.s.i, this.s.i -= 2;\n }\n if (final) {\n // cleanup unneeded buffers/state to reduce memory usage\n this.s = this.o = {};\n this.b = et;\n }\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * deflated output for small inputs.\n * @param sync Whether to flush to a byte boundary. A sync flush takes 4-5\n * extra bytes, but guarantees all pushed data is immediately\n * decompressible. A separate DEFLATE stream may be concatenated\n * with the current output after a sync flush.\n */\n Deflate.prototype.flush = function (sync) {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n this.p(this.b, false);\n this.s.w = this.s.i, this.s.i -= 2;\n // could technically skip writing the type-0 block for (this.s.r & 7) == 0,\n // but the deterministic trailer (00 00 FF FF) is useful in some situations\n if (sync) {\n var c = new u8(6);\n c[0] = this.s.r >> 3;\n // write empty, non-final type-0 block\n var ep = wfblk(c, this.s.r, et);\n this.s.r = 0;\n this.ondata(c.subarray(0, ep >> 3), false);\n }\n };\n return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n function AsyncDeflate(opts, cb) {\n astrmify([\n bDflt,\n function () { return [astrm, Deflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Deflate(ev.data);\n onmessage = astrm(strm);\n }, 6, 1);\n }\n return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n return dopt(data, opts || {}, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n function Inflate(opts, cb) {\n // no StrmOpt here to avoid adding to workerizer\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);\n this.s = { i: 0, b: dict ? dict.length : 0 };\n this.o = new u8(32768);\n this.p = new u8(0);\n if (dict)\n this.o.set(dict);\n }\n Inflate.prototype.e = function (c) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n if (!this.p.length)\n this.p = c;\n else if (c.length) {\n var n = new u8(this.p.length + c.length);\n n.set(this.p), n.set(c, this.p.length), this.p = n;\n }\n };\n Inflate.prototype.c = function (final) {\n this.s.i = +(this.d = final || false);\n var bts = this.s.b;\n var dt = inflt(this.p, this.s, this.o);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;\n };\n /**\n * Pushes a chunk to be inflated\n * @param chunk The chunk to push\n * @param final Whether this is the final chunk\n */\n Inflate.prototype.push = function (chunk, final) {\n this.e(chunk), this.c(final);\n };\n return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n function AsyncInflate(opts, cb) {\n astrmify([\n bInflt,\n function () { return [astrm, Inflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Inflate(ev.data);\n onmessage = astrm(strm);\n }, 7, 0);\n }\n return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt\n ], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);\n}\nexport function inflateSync(data, opts) {\n return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n function Gzip(opts, cb) {\n this.c = crc();\n this.l = 0;\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gzip.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n this.l += chunk.length;\n Deflate.prototype.push.call(this, chunk, final);\n };\n Gzip.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, this.s);\n if (this.v)\n gzh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * GZIPped output for small inputs.\n * @param sync Whether to flush to a byte boundary. A sync flush takes 4-5\n * extra bytes, but guarantees all pushed data is immediately\n * decompressible.\n */\n Gzip.prototype.flush = function (sync) {\n Deflate.prototype.flush.call(this, sync);\n };\n return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n function AsyncGzip(opts, cb) {\n astrmify([\n bDflt,\n gze,\n function () { return [astrm, Deflate, Gzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gzip(ev.data);\n onmessage = astrm(strm);\n }, 8, 1);\n }\n return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n gze,\n function () { return [gzipSync]; }\n ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n if (!opts)\n opts = {};\n var c = crc(), l = data.length;\n c.p(data);\n var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming single or multi-member GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n function Gunzip(opts, cb) {\n this.v = 1;\n this.r = 0;\n Inflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GUNZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gunzip.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n this.r += chunk.length;\n if (this.v) {\n var p = this.p.subarray(this.v - 1);\n var s = p.length > 3 ? gzs(p) : 4;\n if (s > p.length) {\n if (!final)\n return;\n }\n else if (this.v > 1 && this.onmember) {\n this.onmember(this.r - p.length);\n }\n this.p = p.subarray(s), this.v = 0;\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, 0);\n // process concatenated GZIP\n if (this.s.f && !this.s.l) {\n this.v = shft(this.s.p) + 9;\n this.s = { i: 0 };\n this.o = new u8(0);\n this.push(new u8(0), final);\n }\n else if (final) {\n Inflate.prototype.c.call(this, final);\n }\n };\n return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming single or multi-member GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n function AsyncGunzip(opts, cb) {\n var _this = this;\n astrmify([\n bInflt,\n guze,\n function () { return [astrm, Inflate, Gunzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gunzip(ev.data);\n strm.onmember = function (offset) { return postMessage(offset); };\n onmessage = astrm(strm);\n }, 9, 0, function (offset) { return _this.onmember && _this.onmember(offset); });\n }\n return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n guze,\n function () { return [gunzipSync]; }\n ], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);\n}\nexport function gunzipSync(data, opts) {\n var st = gzs(data);\n if (st + 8 > data.length)\n err(6, 'invalid gzip data');\n return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n function Zlib(opts, cb) {\n this.c = adler();\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be zlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Zlib.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n Deflate.prototype.push.call(this, chunk, final);\n };\n Zlib.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s);\n if (this.v)\n zlh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 4, this.c.d());\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * zlibbed output for small inputs.\n * @param sync Whether to flush to a byte boundary. A sync flush takes 4-5\n * extra bytes, but guarantees all pushed data is immediately\n * decompressible.\n */\n Zlib.prototype.flush = function (sync) {\n Deflate.prototype.flush.call(this, sync);\n };\n return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n function AsyncZlib(opts, cb) {\n astrmify([\n bDflt,\n zle,\n function () { return [astrm, Deflate, Zlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Zlib(ev.data);\n onmessage = astrm(strm);\n }, 10, 1);\n }\n return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n zle,\n function () { return [zlibSync]; }\n ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n if (!opts)\n opts = {};\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n function Unzlib(opts, cb) {\n Inflate.call(this, opts, cb);\n this.v = opts && opts.dictionary ? 2 : 1;\n }\n /**\n * Pushes a chunk to be unzlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzlib.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n if (this.p.length < 6 && !final)\n return;\n this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;\n }\n if (final) {\n if (this.p.length < 4)\n err(6, 'invalid zlib data');\n this.p = this.p.subarray(0, -4);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n function AsyncUnzlib(opts, cb) {\n astrmify([\n bInflt,\n zule,\n function () { return [astrm, Inflate, Unzlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Unzlib(ev.data);\n onmessage = astrm(strm);\n }, 11, 0);\n }\n return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n zule,\n function () { return [unzlibSync]; }\n ], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);\n}\nexport function unzlibSync(data, opts) {\n return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n function Decompress(opts, cb) {\n this.o = StrmOpt.call(this, opts, cb) || {};\n this.G = Gunzip;\n this.I = Inflate;\n this.Z = Unzlib;\n }\n // init substream\n // overriden by AsyncDecompress\n Decompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (dat, final) {\n _this.ondata(dat, final);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Decompress.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (!this.s) {\n if (this.p && this.p.length) {\n var n = new u8(this.p.length + chunk.length);\n n.set(this.p), n.set(chunk, this.p.length);\n }\n else\n this.p = chunk;\n if (this.p.length > 2) {\n this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n ? new this.G(this.o)\n : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n ? new this.I(this.o)\n : new this.Z(this.o);\n this.i();\n this.s.push(this.p, final);\n this.p = null;\n }\n }\n else\n this.s.push(chunk, final);\n };\n return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n function AsyncDecompress(opts, cb) {\n Decompress.call(this, opts, cb);\n this.queuedSize = 0;\n this.G = AsyncGunzip;\n this.I = AsyncInflate;\n this.Z = AsyncUnzlib;\n }\n AsyncDecompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (err, dat, final) {\n _this.ondata(err, dat, final);\n };\n this.s.ondrain = function (size) {\n _this.queuedSize -= size;\n if (_this.ondrain)\n _this.ondrain(size);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncDecompress.prototype.push = function (chunk, final) {\n this.queuedSize += chunk.length;\n Decompress.prototype.push.call(this, chunk, final);\n };\n return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzip(data, opts, cb)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflate(data, opts, cb)\n : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, opts) {\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzipSync(data, opts)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflateSync(data, opts)\n : unzlibSync(data, opts);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n for (var k in d) {\n var val = d[k], n = p + k, op = o;\n if (Array.isArray(val))\n op = mrg(o, val[1]), val = val[0];\n if (ArrayBuffer.isView(val))\n t[n] = [val, op];\n else {\n t[n += '/'] = [new u8(0), op];\n fltn(val, n, t, o);\n }\n }\n};\n// text encoder\nvar te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();\n// text decoder\nvar td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();\n// text decoder stream\nvar tds = 0;\ntry {\n td.decode(et, { stream: true });\n tds = 1;\n}\ncatch (e) { }\n// decode UTF8\nvar dutf8 = function (d) {\n for (var r = '', i = 0;;) {\n var c = d[i++];\n var eb = (c > 127) + (c > 223) + (c > 239);\n if (i + eb > d.length)\n return { s: r, r: slc(d, i - 1) };\n if (!eb)\n r += String.fromCharCode(c);\n else if (eb == 3) {\n c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,\n r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n }\n else if (eb & 1)\n r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));\n else\n r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));\n }\n};\n/**\n * Streaming UTF-8 decoding\n */\nvar DecodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is decoded\n */\n function DecodeUTF8(cb) {\n this.ondata = cb;\n if (tds)\n this.t = new TextDecoder();\n else\n this.p = et;\n }\n /**\n * Pushes a chunk to be decoded from UTF-8 binary\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n DecodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n final = !!final;\n if (this.t) {\n this.ondata(this.t.decode(chunk, { stream: true }), final);\n if (final) {\n if (this.t.decode().length)\n err(8);\n this.t = null;\n }\n return;\n }\n if (!this.p)\n err(4);\n var dat = new u8(this.p.length + chunk.length);\n dat.set(this.p);\n dat.set(chunk, this.p.length);\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (final) {\n if (r.length)\n err(8);\n this.p = null;\n }\n else\n this.p = r;\n this.ondata(s, final);\n };\n return DecodeUTF8;\n}());\nexport { DecodeUTF8 };\n/**\n * Streaming UTF-8 encoding\n */\nvar EncodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is encoded\n */\n function EncodeUTF8(cb) {\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be encoded to UTF-8\n * @param chunk The string data to push\n * @param final Whether this is the last chunk\n */\n EncodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n this.ondata(strToU8(chunk), this.d = final || false);\n };\n return EncodeUTF8;\n}());\nexport { EncodeUTF8 };\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n if (latin1) {\n var ar_1 = new u8(str.length);\n for (var i = 0; i < str.length; ++i)\n ar_1[i] = str.charCodeAt(i);\n return ar_1;\n }\n if (te)\n return te.encode(str);\n var l = str.length;\n var ar = new u8(str.length + (str.length >> 1));\n var ai = 0;\n var w = function (v) { ar[ai++] = v; };\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + ((l - i) << 1));\n n.set(ar);\n ar = n;\n }\n var c = str.charCodeAt(i);\n if (c < 128 || latin1)\n w(c);\n else if (c < 2048)\n w(192 | (c >> 6)), w(128 | (c & 63));\n else if (c > 55295 && c < 57344)\n c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n else\n w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n }\n return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n if (latin1) {\n var r = '';\n for (var i = 0; i < dat.length; i += 16384)\n r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n return r;\n }\n else if (td) {\n return td.decode(dat);\n }\n else {\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (r.length)\n err(8);\n return s;\n }\n}\n;\n// deflate bit flag\nvar dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n var fnl = b2(d, b + 28), efl = b2(d, b + 30), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl;\n var _a = z64hs(d, es, efl, z, b4(d, b + 20), b4(d, b + 24), b4(d, b + 42)), sc = _a[0], su = _a[1], off = _a[2];\n return [b2(d, b + 10), sc, su, fn, es + efl + b2(d, b + 32), off];\n};\n// read zip64 header sizes\nvar z64hs = function (d, b, l, z, sc, su, off) {\n var nsc = sc == 4294967295, nsu = su == 4294967295, noff = off == 4294967295, e = b + l;\n var nf = nsc + nsu + noff;\n if (z && nf) {\n for (; b + 4 < e; b += 4 + b2(d, b + 2)) {\n if (b2(d, b) == 1) {\n return [\n nsc ? b8(d, b + 4 + 8 * nsu) : sc,\n nsu ? b8(d, b + 4) : su,\n noff ? b8(d, b + 4 + 8 * (nsu + nsc)) : off,\n 1\n ];\n }\n }\n // z == 2 for unknown whether or not zip64\n if (z < 2)\n err(13);\n }\n return [sc, su, off, 0];\n};\n// extra field length\nvar exfl = function (ex) {\n var le = 0;\n if (ex) {\n for (var k in ex) {\n var l = ex[k].length;\n if (l > 65535)\n err(9);\n le += l + 4;\n }\n }\n return le;\n};\n// write zip header\nvar wzh = function (d, b, f, fn, u, c, ce, co) {\n var fl = fn.length, ex = f.extra, col = co && co.length;\n var exl = exfl(ex);\n wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n if (ce != null)\n d[b++] = 20, d[b++] = f.os;\n d[b] = 20, b += 2; // spec compliance? what's that?\n d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;\n d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n if (y < 0 || y > 119)\n err(10);\n wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >> 1)), b += 4;\n if (c != -1) {\n wbytes(d, b, f.crc);\n wbytes(d, b + 4, c < 0 ? -c - 2 : c);\n wbytes(d, b + 8, f.size);\n }\n wbytes(d, b + 12, fl);\n wbytes(d, b + 14, exl), b += 16;\n if (ce != null) {\n wbytes(d, b, col);\n wbytes(d, b + 6, f.attrs);\n wbytes(d, b + 10, ce), b += 14;\n }\n d.set(fn, b);\n b += fl;\n if (exl) {\n for (var k in ex) {\n var exf = ex[k], l = exf.length;\n wbytes(d, b, +k);\n wbytes(d, b + 2, l);\n d.set(exf, b + 4), b += 4 + l;\n }\n }\n if (col)\n d.set(co, b), b += col;\n return b;\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n wbytes(o, b, 0x6054B50); // skip disk\n wbytes(o, b + 8, c);\n wbytes(o, b + 10, c);\n wbytes(o, b + 12, d);\n wbytes(o, b + 16, e);\n};\n/**\n * A pass-through stream to keep data uncompressed in a ZIP archive.\n */\nvar ZipPassThrough = /*#__PURE__*/ (function () {\n /**\n * Creates a pass-through stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n */\n function ZipPassThrough(filename) {\n this.filename = filename;\n this.c = crc();\n this.size = 0;\n this.compression = 0;\n }\n /**\n * Processes a chunk and pushes to the output stream. You can override this\n * method in a subclass for custom behavior, but by default this passes\n * the data through. You must call this.ondata(err, chunk, final) at some\n * point in this method.\n * @param chunk The chunk to process\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.process = function (chunk, final) {\n this.ondata(null, chunk, final);\n };\n /**\n * Pushes a chunk to be added. If you are subclassing this with a custom\n * compression algorithm, note that you must push data from the source\n * file only, pre-compression.\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n this.c.p(chunk);\n this.size += chunk.length;\n if (final)\n this.crc = this.c.d();\n // we shouldn't really do this cast, but properly handling ArrayBufferLike\n // makes the API unergonomic with Buffer\n this.process(chunk, final || false);\n };\n return ZipPassThrough;\n}());\nexport { ZipPassThrough };\n// I don't extend because TypeScript extension adds 1kB of runtime bloat\n/**\n * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate\n * for better performance\n */\nvar ZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function ZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new Deflate(opts, function (dat, final) {\n _this.ondata(null, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n }\n ZipDeflate.prototype.process = function (chunk, final) {\n try {\n this.d.push(chunk, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return ZipDeflate;\n}());\nexport { ZipDeflate };\n/**\n * Asynchronous streaming DEFLATE compression for ZIP archives\n */\nvar AsyncZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function AsyncZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new AsyncDeflate(opts, function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n this.terminate = this.d.terminate;\n }\n AsyncZipDeflate.prototype.process = function (chunk, final) {\n this.d.push(chunk, final);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return AsyncZipDeflate;\n}());\nexport { AsyncZipDeflate };\n// TODO: Better tree shaking\n/**\n * A zippable archive to which files can incrementally be added\n */\nvar Zip = /*#__PURE__*/ (function () {\n /**\n * Creates an empty ZIP archive to which files can be added\n * @param cb The callback to call whenever data for the generated ZIP archive\n * is available\n */\n function Zip(cb) {\n this.ondata = cb;\n this.u = [];\n this.d = 1;\n }\n /**\n * Adds a file to the ZIP archive\n * @param file The file stream to add\n */\n Zip.prototype.add = function (file) {\n var _this = this;\n if (!this.ondata)\n err(5);\n // finishing or finished\n if (this.d & 2)\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);\n else {\n var f = strToU8(file.filename), fl_1 = f.length;\n var com = file.comment, o = com && strToU8(com);\n var u = fl_1 != file.filename.length || (o && (com.length != o.length));\n var hl_1 = fl_1 + exfl(file.extra) + 30;\n if (fl_1 > 65535)\n this.ondata(err(11, 0, 1), null, false);\n var header = new u8(hl_1);\n wzh(header, 0, file, f, u, -1);\n var chks_1 = [header];\n var pAll_1 = function () {\n for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {\n var chk = chks_2[_i];\n _this.ondata(null, chk, false);\n }\n chks_1 = [];\n };\n var tr_1 = this.d;\n this.d = 0;\n var ind_1 = this.u.length;\n var uf_1 = mrg(file, {\n f: f,\n u: u,\n o: o,\n t: function () {\n if (file.terminate)\n file.terminate();\n },\n r: function () {\n pAll_1();\n if (tr_1) {\n var nxt = _this.u[ind_1 + 1];\n if (nxt)\n nxt.r();\n else\n _this.d = 1;\n }\n tr_1 = 1;\n }\n });\n var cl_1 = 0;\n file.ondata = function (err, dat, final) {\n if (err) {\n _this.ondata(err, dat, final);\n _this.terminate();\n }\n else {\n cl_1 += dat.length;\n chks_1.push(dat);\n if (final) {\n var dd = new u8(16);\n wbytes(dd, 0, 0x8074B50);\n wbytes(dd, 4, file.crc);\n wbytes(dd, 8, cl_1);\n wbytes(dd, 12, file.size);\n chks_1.push(dd);\n uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;\n if (tr_1)\n uf_1.r();\n tr_1 = 1;\n }\n else if (tr_1)\n pAll_1();\n }\n };\n this.u.push(uf_1);\n }\n };\n /**\n * Ends the process of adding files and prepares to emit the final chunks.\n * This *must* be called after adding all desired files for the resulting\n * ZIP file to work properly.\n */\n Zip.prototype.end = function () {\n var _this = this;\n if (this.d & 2) {\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);\n return;\n }\n if (this.d)\n this.e();\n else\n this.u.push({\n r: function () {\n if (!(_this.d & 1))\n return;\n _this.u.splice(-1, 1);\n _this.e();\n },\n t: function () { }\n });\n this.d = 3;\n };\n Zip.prototype.e = function () {\n var bt = 0, l = 0, tl = 0;\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n }\n var out = new u8(tl + 22);\n for (var _b = 0, _c = this.u; _b < _c.length; _b++) {\n var f = _c[_b];\n wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);\n bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n }\n wzf(out, bt, this.u.length, tl, l);\n this.ondata(null, out, true);\n this.d = 2;\n };\n /**\n * A method to terminate any internal workers used by the stream. Subsequent\n * calls to add() will fail.\n */\n Zip.prototype.terminate = function () {\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n f.t();\n }\n this.d = 2;\n };\n return Zip;\n}());\nexport { Zip };\nexport function zip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var r = {};\n fltn(data, '', r, opts);\n var k = Object.keys(r);\n var lft = k.length, o = 0, tot = 0;\n var slft = lft, files = new Array(lft);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var cbf = function () {\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n tot = 0;\n for (var i = 0; i < slft; ++i) {\n var f = files[i];\n try {\n var l = f.c.length;\n wzh(out, tot, f, f.f, f.u, l);\n var badd = 30 + f.f.length + exfl(f.extra);\n var loc = tot + badd;\n out.set(f.c, loc);\n wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;\n }\n catch (e) {\n return cbd(e, null);\n }\n }\n wzf(out, o, files.length, cdl, oe);\n cbd(null, out);\n };\n if (!lft)\n cbf();\n var _loop_1 = function (i) {\n var fn = k[i];\n var _a = r[fn], file = _a[0], p = _a[1];\n var c = crc(), size = file.length;\n c.p(file);\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n var compression = p.level == 0 ? 0 : 8;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n var l = d.length;\n files[i] = mrg(p, {\n size: size,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n compression: compression\n });\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n if (!--lft)\n cbf();\n }\n };\n if (s > 65535)\n cbl(err(11, 0, 1), null);\n if (!compression)\n cbl(null, file);\n else if (size < 160000) {\n try {\n cbl(null, deflateSync(file, p));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(deflate(file, p, cbl));\n };\n // Cannot use lft because it can decrease\n for (var i = 0; i < slft; ++i) {\n _loop_1(i);\n }\n return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n if (!opts)\n opts = {};\n var r = {};\n var files = [];\n fltn(data, '', r, opts);\n var o = 0;\n var tot = 0;\n for (var fn in r) {\n var _a = r[fn], file = _a[0], p = _a[1];\n var compression = p.level == 0 ? 0 : 8;\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n if (s > 65535)\n err(11);\n var d = compression ? deflateSync(file, p) : file, l = d.length;\n var c = crc();\n c.p(file);\n files.push(mrg(p, {\n size: file.length,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n o: o,\n compression: compression\n }));\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n }\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n for (var i = 0; i < files.length; ++i) {\n var f = files[i];\n wzh(out, f.o, f, f.f, f.u, f.c.length);\n var badd = 30 + f.f.length + exfl(f.extra);\n out.set(f.c, f.o + badd);\n wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n }\n wzf(out, o, files.length, cdl, oe);\n return out;\n}\n/**\n * Streaming pass-through decompression for ZIP archives\n */\nvar UnzipPassThrough = /*#__PURE__*/ (function () {\n function UnzipPassThrough() {\n }\n UnzipPassThrough.prototype.push = function (chunk, final) {\n // same as ZipPassThrough: cast to retain Buffer ergonomics\n this.ondata(null, chunk, final);\n };\n UnzipPassThrough.compression = 0;\n return UnzipPassThrough;\n}());\nexport { UnzipPassThrough };\n/**\n * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for\n * better performance.\n */\nvar UnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function UnzipInflate() {\n var _this = this;\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n UnzipInflate.prototype.push = function (chunk, final) {\n try {\n this.i.push(chunk, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n UnzipInflate.compression = 8;\n return UnzipInflate;\n}());\nexport { UnzipInflate };\n/**\n * Asynchronous streaming DEFLATE decompression for ZIP archives\n */\nvar AsyncUnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function AsyncUnzipInflate(_, sz) {\n var _this = this;\n if (sz < 320000) {\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n else {\n this.i = new AsyncInflate(function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.terminate = this.i.terminate;\n }\n }\n AsyncUnzipInflate.prototype.push = function (chunk, final) {\n if (this.i.terminate)\n chunk = slc(chunk, 0);\n this.i.push(chunk, final);\n };\n AsyncUnzipInflate.compression = 8;\n return AsyncUnzipInflate;\n}());\nexport { AsyncUnzipInflate };\n/**\n * A ZIP archive decompression stream that emits files as they are discovered\n */\nvar Unzip = /*#__PURE__*/ (function () {\n /**\n * Creates a ZIP decompression stream\n * @param cb The callback to call whenever a file in the ZIP archive is found\n */\n function Unzip(cb) {\n this.onfile = cb;\n this.k = [];\n this.o = {\n 0: UnzipPassThrough\n };\n this.p = et;\n }\n /**\n * Pushes a chunk to be unzipped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzip.prototype.push = function (chunk, final) {\n var _this = this;\n if (!this.onfile)\n err(5);\n if (!this.p)\n err(4);\n if (this.c > 0) {\n var len = Math.min(this.c, chunk.length);\n var toAdd = chunk.subarray(0, len);\n this.c -= len;\n if (this.d)\n this.d.push(toAdd, !this.c);\n else\n this.k[0].push(toAdd);\n chunk = chunk.subarray(len);\n if (chunk.length)\n return this.push(chunk, final);\n }\n else {\n var f = 0, i = 0, is = void 0, buf = void 0;\n if (!this.p.length)\n buf = chunk;\n else if (!chunk.length)\n buf = this.p;\n else {\n buf = new u8(this.p.length + chunk.length);\n buf.set(this.p), buf.set(chunk, this.p.length);\n }\n var l = buf.length, oc = this.c, add = oc && this.d;\n var _loop_2 = function () {\n var sig = b4(buf, i);\n if (sig == 0x4034B50) {\n f = 1, is = i;\n this_1.d = null;\n this_1.c = 0;\n var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n if (l > i + 30 + fnl + es) {\n var chks_3 = [];\n this_1.k.unshift(chks_3);\n f = 2;\n var lsc = b4(buf, i + 18), lsu = b4(buf, i + 22);\n var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n var _a = z64hs(buf, i, es, 2, lsc, lsu, 0), sc_1 = _a[0], su_1 = _a[1], z64 = _a[3];\n if (dd)\n sc_1 = -1 - z64;\n i += es;\n this_1.c = sc_1;\n var d_1;\n var file_1 = {\n name: fn_1,\n compression: cmp_1,\n start: function () {\n if (!file_1.ondata)\n err(5);\n if (!sc_1)\n file_1.ondata(null, et, true);\n else {\n var ctr = _this.o[cmp_1];\n if (!ctr)\n file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);\n d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };\n for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {\n var dat = chks_4[_i];\n d_1.push(dat, false);\n }\n if (_this.k[0] == chks_3 && _this.c)\n _this.d = d_1;\n else\n d_1.push(et, true);\n }\n },\n terminate: function () {\n if (d_1 && d_1.terminate)\n d_1.terminate();\n }\n };\n if (sc_1 >= 0)\n file_1.size = sc_1, file_1.originalSize = su_1;\n this_1.onfile(file_1);\n }\n return \"break\";\n }\n else if (oc) {\n if (sig == 0x8074B50) {\n is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n return \"break\";\n }\n else if (sig == 0x2014B50) {\n is = i -= 4, f = 3, this_1.c = 0;\n return \"break\";\n }\n }\n };\n var this_1 = this;\n for (; i < l - 4; ++i) {\n var state_1 = _loop_2();\n if (state_1 === \"break\")\n break;\n }\n this.p = et;\n if (oc < 0) {\n var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);\n if (add)\n add.push(dat, !!f);\n else\n this.k[+(f == 2)].push(dat);\n }\n if (f & 2)\n return this.push(buf.subarray(i), final);\n this.p = buf.subarray(i);\n }\n if (final) {\n if (this.c)\n err(13);\n this.p = null;\n }\n };\n /**\n * Registers a decoder with the stream, allowing for files compressed with\n * the compression type provided to be expanded correctly\n * @param decoder The decoder constructor\n */\n Unzip.prototype.register = function (decoder) {\n this.o[decoder.compression] = decoder;\n };\n return Unzip;\n}());\nexport { Unzip };\nvar mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };\nexport function unzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var files = {};\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) {\n cbd(err(13, 0, 1), null);\n return tAll;\n }\n }\n ;\n var lft = b2(data, e + 8);\n if (lft) {\n var c = lft;\n var o = b4(data, e + 16);\n var z = b4(data, e - 20) == 0x7064B50;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = lft = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n var _loop_3 = function (i) {\n var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n if (d)\n files[fn] = d;\n if (!--lft)\n cbd(null, files);\n }\n };\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_1\n })) {\n if (!c_1)\n cbl(null, slc(data, b, b + sc));\n else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n // Synchronously decompress under 512KB, or barely-compressed data\n if (su < 524288 || sc > 0.8 * su) {\n try {\n cbl(null, inflateSync(infl, { out: new u8(su) }));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(inflate(infl, { size: su }, cbl));\n }\n else\n cbl(err(14, 'unknown compression type ' + c_1, 1), null);\n }\n else\n cbl(null, null);\n };\n for (var i = 0; i < c; ++i) {\n _loop_3(i);\n }\n }\n else\n cbd(null, {});\n return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @param opts The ZIP extraction options\n * @returns The decompressed files\n */\nexport function unzipSync(data, opts) {\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558)\n err(13);\n }\n ;\n var c = b2(data, e + 8);\n if (!c)\n return {};\n var o = b4(data, e + 16);\n var z = b4(data, e - 20) == 0x7064B50;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n for (var i = 0; i < c; ++i) {\n var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_2\n })) {\n if (!c_2)\n files[fn] = slc(data, b, b + sc);\n else if (c_2 == 8)\n files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });\n else\n err(14, 'unknown compression type ' + c_2);\n }\n }\n return files;\n}\n","import { U as encodeBase64, W as Buffer } from \"./converters-C_Y2QX1w.mjs\";\nimport { AsyncZipDeflate, Zip, ZipPassThrough, strFromU8, strFromU8 as strFromU8$1, unzipSync as unzipSync$1, zip, zipSync } from \"fflate\";\nimport { sha512 } from \"@noble/hashes/sha2.js\";\n//#region src/opc/output.ts\n/**\n* Output type definitions for OOXML document export.\n*\n* @module\n*/\nconst OoxmlMimeType = {\n\tDOCX: \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n\tPPTX: \"application/vnd.openxmlformats-officedocument.presentationml.presentation\",\n\tXLSX: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n};\nconst convertOutput = (data, type, mimeType = OoxmlMimeType.DOCX) => {\n\tswitch (type) {\n\t\tcase \"nodebuffer\": return Buffer.from(data.buffer, data.byteOffset, data.byteLength);\n\t\tcase \"blob\": return new Blob([data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength)], { type: mimeType });\n\t\tcase \"arraybuffer\": return data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);\n\t\tcase \"uint8array\": return data;\n\t\tcase \"base64\": return encodeBase64(data);\n\t\tcase \"string\":\n\t\tcase \"text\":\n\t\tcase \"binarystring\": return strFromU8(data, true);\n\t\tcase \"array\": return [...data];\n\t\tdefault: return data;\n\t}\n};\n//#endregion\n//#region src/opc/zip-native.ts\nconst CRC_TABLE = new Int32Array(256);\nfor (let i = 0; i < 256; i++) {\n\tlet c = i;\n\tfor (let k = 0; k < 8; k++) c = c & 1 ? c >>> 1 ^ -306674912 : c >>> 1;\n\tCRC_TABLE[i] = c;\n}\nfunction computeCrc32(data) {\n\tlet crc = -1;\n\tfor (const byte of data) crc = CRC_TABLE[(crc ^ byte) & 255] ^ crc >>> 8;\n\treturn ~crc;\n}\n// Upstream used top-level `await import(\"node:zlib\")` for optional native compression.\n// That breaks Bun → CJS lambda bundlers (\"await can only be used inside an async function\").\n// Leave natives unset; fflate paths below always work (same fallback as when zlib is unavailable).\nlet _nativeDeflate;\nlet _nativeDeflateAsync;\nlet _nativeInflate;\nlet _nativeCrc32;\nconst hasNativeDeflate = () => _nativeDeflate !== void 0;\nconst hasNativeInflate = () => _nativeInflate !== void 0;\nfunction wU16(b, o, v) {\n\tb[o] = v & 255;\n\tb[o + 1] = v >> 8 & 255;\n}\nfunction wU32(b, o, v) {\n\tb[o] = v & 255;\n\tb[o + 1] = v >> 8 & 255;\n\tb[o + 2] = v >> 16 & 255;\n\tb[o + 3] = v >> 24 & 255;\n}\nfunction resolveEntryData(raw, defaultLevel) {\n\tif (Array.isArray(raw)) return {\n\t\tdata: raw[0],\n\t\tlevel: raw[1].level ?? defaultLevel\n\t};\n\treturn {\n\t\tdata: raw,\n\t\tlevel: defaultLevel\n\t};\n}\nfunction compressOne(data, level, deflate) {\n\tif (level === 0) return {\n\t\tcompressed: data,\n\t\tmethod: 0\n\t};\n\tconst compressed = deflate(data, level);\n\tif (compressed.length >= data.length) return {\n\t\tcompressed: data,\n\t\tmethod: 0\n\t};\n\treturn {\n\t\tcompressed,\n\t\tmethod: 8\n\t};\n}\nasync function compressOneAsync(data, level, deflate) {\n\tif (level === 0) return {\n\t\tcompressed: data,\n\t\tmethod: 0\n\t};\n\tconst compressed = await deflate(data, level);\n\tif (compressed.length >= data.length) return {\n\t\tcompressed: data,\n\t\tmethod: 0\n\t};\n\treturn {\n\t\tcompressed,\n\t\tmethod: 8\n\t};\n}\nfunction writeZipBuffer(entries) {\n\tlet totalSize = 0;\n\tfor (const e of entries) totalSize += 30 + e.filename.length + e.data.length;\n\tconst cdOffset = totalSize;\n\tlet cdSize = 0;\n\tfor (const e of entries) cdSize += 46 + e.filename.length;\n\ttotalSize += cdSize + 22;\n\tconst buf = new Uint8Array(totalSize);\n\tlet offset = 0;\n\tfor (const e of entries) {\n\t\te.localOffset = offset;\n\t\twU32(buf, offset, 67324752);\n\t\twU16(buf, offset + 4, 20);\n\t\twU16(buf, offset + 6, 0);\n\t\twU16(buf, offset + 8, e.method);\n\t\twU16(buf, offset + 10, 0);\n\t\twU16(buf, offset + 12, 0);\n\t\twU32(buf, offset + 14, e.crc);\n\t\twU32(buf, offset + 18, e.data.length);\n\t\twU32(buf, offset + 22, e.uncompressedSize);\n\t\twU16(buf, offset + 26, e.filename.length);\n\t\twU16(buf, offset + 28, 0);\n\t\toffset += 30;\n\t\tbuf.set(e.filename, offset);\n\t\toffset += e.filename.length;\n\t\tbuf.set(e.data, offset);\n\t\toffset += e.data.length;\n\t}\n\tfor (const e of entries) {\n\t\twU32(buf, offset, 33639248);\n\t\twU16(buf, offset + 4, 20);\n\t\twU16(buf, offset + 6, 20);\n\t\twU16(buf, offset + 8, 0);\n\t\twU16(buf, offset + 10, e.method);\n\t\twU16(buf, offset + 12, 0);\n\t\twU16(buf, offset + 14, 0);\n\t\twU32(buf, offset + 16, e.crc);\n\t\twU32(buf, offset + 20, e.data.length);\n\t\twU32(buf, offset + 24, e.uncompressedSize);\n\t\twU16(buf, offset + 28, e.filename.length);\n\t\twU16(buf, offset + 30, 0);\n\t\twU16(buf, offset + 32, 0);\n\t\twU16(buf, offset + 34, 0);\n\t\twU16(buf, offset + 36, 0);\n\t\twU32(buf, offset + 38, 0);\n\t\twU32(buf, offset + 42, e.localOffset);\n\t\toffset += 46;\n\t\tbuf.set(e.filename, offset);\n\t\toffset += e.filename.length;\n\t}\n\twU32(buf, offset, 101010256);\n\twU16(buf, offset + 4, 0);\n\twU16(buf, offset + 6, 0);\n\twU16(buf, offset + 8, entries.length);\n\twU16(buf, offset + 10, entries.length);\n\twU32(buf, offset + 12, cdSize);\n\twU32(buf, offset + 16, cdOffset);\n\twU16(buf, offset + 20, 0);\n\treturn buf;\n}\nconst textEncoder = new TextEncoder();\nconst textDecoder = new TextDecoder();\nfunction nativeZip(files, level = 6) {\n\tif (!_nativeDeflate) throw new Error(\"Native deflate not available\");\n\tconst crc = _nativeCrc32 ?? computeCrc32;\n\tconst entries = [];\n\tfor (const key of Object.keys(files)) {\n\t\tconst raw = files[key];\n\t\tif (raw === void 0) continue;\n\t\tconst { data, level: entryLevel } = resolveEntryData(raw, level);\n\t\tconst c = crc(data);\n\t\tconst { compressed, method } = compressOne(data, entryLevel, _nativeDeflate);\n\t\tentries.push({\n\t\t\tfilename: textEncoder.encode(key),\n\t\t\tdata: compressed,\n\t\t\tuncompressedSize: data.length,\n\t\t\tcrc: c,\n\t\t\tmethod,\n\t\t\tlocalOffset: 0\n\t\t});\n\t}\n\treturn writeZipBuffer(entries);\n}\nasync function nativeZipAsync(files, level = 6) {\n\tif (!_nativeDeflateAsync) throw new Error(\"Native async deflate not available\");\n\tconst crc = _nativeCrc32 ?? computeCrc32;\n\tconst entries = [];\n\tfor (const key of Object.keys(files)) {\n\t\tconst raw = files[key];\n\t\tif (raw === void 0) continue;\n\t\tconst { data, level: entryLevel } = resolveEntryData(raw, level);\n\t\tconst c = crc(data);\n\t\tconst { compressed, method } = await compressOneAsync(data, entryLevel, _nativeDeflateAsync);\n\t\tentries.push({\n\t\t\tfilename: textEncoder.encode(key),\n\t\t\tdata: compressed,\n\t\t\tuncompressedSize: data.length,\n\t\t\tcrc: c,\n\t\t\tmethod,\n\t\t\tlocalOffset: 0\n\t\t});\n\t}\n\treturn writeZipBuffer(entries);\n}\nfunction rU16(b, o) {\n\treturn b[o] | b[o + 1] << 8;\n}\nfunction rU32(b, o) {\n\treturn (b[o] | b[o + 1] << 8 | b[o + 2] << 16 | b[o + 3] << 24) >>> 0;\n}\nconst EOCD_MAGIC = 101010256;\nconst CD_MAGIC = 33639248;\n/** Locate the End-of-Central-Directory record (within a 64 KB comment window). */\nfunction findEocd(b) {\n\tconst min = Math.max(0, b.length - 65557);\n\tfor (let i = b.length - 22; i >= min; i--) if (rU32(b, i) === EOCD_MAGIC) return i;\n\tthrow new Error(\"ZIP EOCD record not found\");\n}\n/** Walk the central directory and resolve each entry's payload offset. */\nfunction readCentralDirectory(buf) {\n\tconst eocd = findEocd(buf);\n\tconst count = rU16(buf, eocd + 10);\n\tconst cdOffset = rU32(buf, eocd + 16);\n\tconst entries = [];\n\tlet p = cdOffset;\n\tfor (let i = 0; i < count; i++) {\n\t\tif (rU32(buf, p) !== CD_MAGIC) throw new Error(`ZIP central directory corrupt at offset ${p}`);\n\t\tconst method = rU16(buf, p + 10);\n\t\tconst crc = rU32(buf, p + 16);\n\t\tconst compSize = rU32(buf, p + 20);\n\t\tconst nameLen = rU16(buf, p + 28);\n\t\tconst extraLen = rU16(buf, p + 30);\n\t\tconst cmtLen = rU16(buf, p + 32);\n\t\tconst localOff = rU32(buf, p + 42);\n\t\tconst name = textDecoder.decode(buf.subarray(p + 46, p + 46 + nameLen));\n\t\tconst lNameLen = rU16(buf, localOff + 26);\n\t\tconst lExtraLen = rU16(buf, localOff + 28);\n\t\tentries.push({\n\t\t\tname,\n\t\t\tmethod,\n\t\t\tcompSize,\n\t\t\tcrc,\n\t\t\tdataStart: localOff + 30 + lNameLen + lExtraLen\n\t\t});\n\t\tp += 46 + nameLen + extraLen + cmtLen;\n\t}\n\treturn entries;\n}\n/**\n* Decompress a ZIP archive via `node:zlib` `inflateRawSync`, mirroring fflate's\n* `unzipSync` signature and CRC-32 integrity check. Node/Bun only — callers\n* gate on {@link hasNativeInflate} and fall back to fflate `unzipSync` elsewhere.\n* Measured ~2x faster than fflate on large OOXML packages.\n*/\nfunction nativeUnzip(buf) {\n\tif (!_nativeInflate) throw new Error(\"Native inflate not available\");\n\tconst inflate = _nativeInflate;\n\tconst crc = _nativeCrc32 ?? computeCrc32;\n\tconst out = {};\n\tfor (const e of readCentralDirectory(buf)) {\n\t\tconst raw = buf.subarray(e.dataStart, e.dataStart + e.compSize);\n\t\tconst dec = e.method === 0 ? raw.slice() : inflate(raw);\n\t\tif (crc(dec) >>> 0 !== e.crc) throw new Error(`ZIP CRC-32 mismatch: ${e.name}`);\n\t\tout[e.name] = dec;\n\t}\n\treturn out;\n}\n//#endregion\n//#region src/opc/packer.ts\n/**\n* Shared packer utilities for OOXML document generation.\n*\n* @module\n*/\n/** Default DEFLATE level for XML entries (SuperFast, matching MS Office). */\nconst ZIP_DEFLATE_LEVEL = 1;\n/** Level for already-compressed media — STORE (no compression). */\nconst ZIP_STORED_LEVEL = 0;\n/**\n* Media formats already compressed internally (DEFLATE for PNG, DCT for JPEG,\n* LZW for GIF). Re-compressing via zip DEFLATE wastes CPU and often inflates\n* the data, so MS Office STORE-s these (CompressionOption.NotCompressed → zip\n* method 0). Everything else (EMF/WMF/BMP/TIFF/SVG/…) is compressible → DEFLATE.\n*/\nconst PRECOMPRESSED_MEDIA_EXT = new Set([\n\t\"jpg\",\n\t\"jpeg\",\n\t\"png\",\n\t\"gif\"\n]);\n/**\n* Resolve the ZIP level for a media entry by file-name extension, matching MS\n* Office: already-compressed raster formats → STORE (0), everything else →\n* DEFLATE (`mediaLevel`, default Normal). A `compression.media` override\n* therefore applies only to compressible formats, never forcing DEFLATE onto\n* pre-compressed assets.\n*/\nconst levelForMediaName = (fileName, mediaLevel) => {\n\tconst dot = fileName.lastIndexOf(\".\");\n\tconst ext = dot < 0 ? \"\" : fileName.slice(dot + 1).toLowerCase();\n\treturn PRECOMPRESSED_MEDIA_EXT.has(ext) ? 0 : mediaLevel;\n};\n/**\n* Asynchronously compress files and convert to the requested output format.\n*\n* Uses fflate Web Workers for non-blocking DEFLATE compression.\n* XML entries use DEFLATE level 1 (SuperFast) by default. Media entries are\n* split by type, matching MS Office: already-compressed formats (PNG/JPEG/GIF)\n* are STOREd, everything else uses the `media` level (default Normal).\n* Set `{ media: ZIP_STORED_LEVEL }` to STORE all compressible media too.\n*/\nconst zipAndConvert = async (files, type, mimeType, level = 1) => {\n\treturn convertOutput(hasNativeDeflate() ? await nativeZipAsync(files, level) : await new Promise((resolve, reject) => {\n\t\tzip(files, {\n\t\t\tlevel,\n\t\t\tconsume: true\n\t\t}, (err, data) => {\n\t\t\tif (err) reject(err);\n\t\t\telse resolve(data);\n\t\t});\n\t}), type, mimeType);\n};\n/**\n* Synchronously compress files and convert to the requested output format.\n*\n* Uses synchronous DEFLATE compression for maximum throughput.\n* Blocks the event loop — prefer {@link zipAndConvert} in server contexts.\n*/\nconst zipSyncAndConvert = (files, type, mimeType, level = 1) => {\n\treturn convertOutput(hasNativeDeflate() ? nativeZip(files, level) : zipSync(files, { level }), type, mimeType);\n};\n/**\n* Create a `ReadableStream<Uint8Array>` from compressed file entries.\n*\n* Uses fflate's `AsyncZipDeflate` for non-blocking DEFLATE compression.\n* `STORED` entries (media) pass through synchronously.\n* Works in both Node.js and browsers (Web Streams API).\n*/\nconst createZipStream = (files, defaultLevel = 1) => {\n\treturn new ReadableStream({ start(controller) {\n\t\ttry {\n\t\t\tconst zip = new Zip((err, chunk, _final) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tcontroller.error(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t\tif (_final) controller.close();\n\t\t\t});\n\t\t\tfor (const [name, data] of Object.entries(files)) {\n\t\t\t\tconst raw = Array.isArray(data) ? data[0] : data;\n\t\t\t\tconst level = Array.isArray(data) ? data[1].level ?? defaultLevel : defaultLevel;\n\t\t\t\tconst entry = level === 0 ? new ZipPassThrough(name) : new AsyncZipDeflate(name, { level });\n\t\t\t\tzip.add(entry);\n\t\t\t\tentry.push(raw, true);\n\t\t\t}\n\t\t\tzip.end();\n\t\t} catch (err) {\n\t\t\tcontroller.error(err instanceof Error ? err : new Error(String(err)));\n\t\t}\n\t} });\n};\n/**\n* Create a Packer object with all output format methods.\n*\n* Centralises the ZIP → convert pipeline and the streaming implementation\n* so that each OOXML package only needs to provide a `compile` function and\n* a MIME type.\n*/\nconst createPacker = (options) => {\n\tconst { compile, mimeType } = options;\n\tconst pack = async (file, opts) => {\n\t\tconst type = opts?.type ?? \"nodebuffer\";\n\t\treturn zipAndConvert(compile(file, opts?.overrides ?? [], opts?.compression?.media ?? 6), type, mimeType, opts?.compression?.xml ?? 1);\n\t};\n\tconst toBytes = (file, opts) => pack(file, {\n\t\t...opts,\n\t\ttype: \"uint8array\"\n\t});\n\tconst toString = (file, opts) => pack(file, {\n\t\t...opts,\n\t\ttype: \"string\"\n\t});\n\tconst toBuffer = (file, opts) => pack(file, {\n\t\t...opts,\n\t\ttype: \"nodebuffer\"\n\t});\n\tconst toBase64 = (file, opts) => pack(file, {\n\t\t...opts,\n\t\ttype: \"base64\"\n\t});\n\tconst toBlob = (file, opts) => pack(file, {\n\t\t...opts,\n\t\ttype: \"blob\"\n\t});\n\tconst toArrayBuffer = (file, opts) => pack(file, {\n\t\t...opts,\n\t\ttype: \"arraybuffer\"\n\t});\n\tconst packSync = (file, opts) => {\n\t\tconst type = opts?.type ?? \"nodebuffer\";\n\t\treturn zipSyncAndConvert(compile(file, opts?.overrides ?? [], opts?.compression?.media ?? 6), type, mimeType, opts?.compression?.xml ?? 1);\n\t};\n\tconst toBytesSync = (file, opts) => packSync(file, {\n\t\t...opts,\n\t\ttype: \"uint8array\"\n\t});\n\tconst toStringSync = (file, opts) => packSync(file, {\n\t\t...opts,\n\t\ttype: \"string\"\n\t});\n\tconst toBufferSync = (file, opts) => packSync(file, {\n\t\t...opts,\n\t\ttype: \"nodebuffer\"\n\t});\n\tconst toBase64Sync = (file, opts) => packSync(file, {\n\t\t...opts,\n\t\ttype: \"base64\"\n\t});\n\tconst toBlobSync = (file, opts) => packSync(file, {\n\t\t...opts,\n\t\ttype: \"blob\"\n\t});\n\tconst toArrayBufferSync = (file, opts) => packSync(file, {\n\t\t...opts,\n\t\ttype: \"arraybuffer\"\n\t});\n\tconst toStream = (file, opts) => {\n\t\tconst mediaLevel = opts?.compression?.media ?? 6;\n\t\tlet files;\n\t\ttry {\n\t\t\tfiles = compile(file, opts?.overrides ?? [], mediaLevel);\n\t\t} catch (err) {\n\t\t\treturn new ReadableStream({ start(controller) {\n\t\t\t\tcontroller.error(err instanceof Error ? err : new Error(String(err)));\n\t\t\t} });\n\t\t}\n\t\treturn createZipStream(files, opts?.compression?.xml ?? 1);\n\t};\n\treturn {\n\t\tcompile,\n\t\tpack,\n\t\tpackSync,\n\t\ttoBytes,\n\t\ttoBytesSync,\n\t\ttoString,\n\t\ttoStringSync,\n\t\ttoBuffer,\n\t\ttoBufferSync,\n\t\ttoBase64,\n\t\ttoBase64Sync,\n\t\ttoBlob,\n\t\ttoBlobSync,\n\t\ttoArrayBuffer,\n\t\ttoArrayBufferSync,\n\t\ttoStream\n\t};\n};\n//#endregion\n//#region src/util/compile.ts\n/**\n* Shared compiler utilities for OOXML document generation.\n*\n* @module\n*/\n/** Reusable TextEncoder instance (stateless, safe to share). */\nconst encoder = new TextEncoder();\n/**\n* Convert a mapping of XML files + overrides + media into a Zippable structure.\n*\n* Centralises the mapping→Zippable conversion shared by all three compilers.\n*/\nfunction compileMapping(mapping, overrides, media, mediaLevel = 0) {\n\tconst files = {};\n\tfor (const entry of Object.values(mapping)) files[entry.path] = encoder.encode(entry.data);\n\tif (overrides) for (const o of overrides) files[o.path] = typeof o.data === \"string\" ? encoder.encode(o.data) : o.data;\n\tif (media) for (const m of media) files[m.path] = [m.data, { level: levelForMediaName(m.path, mediaLevel) }];\n\treturn files;\n}\n//#endregion\n//#region src/util/crypto.ts\n/**\n* Password hashing utilities for OOXML document protection.\n*\n* Implements ECMA-376 Agile Encryption password derivation.\n* Passwords are encoded as UTF-16LE per the OOXML specification.\n*\n* Uses @noble/hashes for SHA-512 — audited, cross-platform,\n* and comparable in speed to node:crypto for this workload.\n*\n* @module\n*/\nfunction utf16leEncode(str) {\n\tconst bytes = new Uint8Array(str.length * 2);\n\tfor (let i = 0; i < str.length; i++) {\n\t\tconst code = str.charCodeAt(i);\n\t\tbytes[i * 2] = code & 255;\n\t\tbytes[i * 2 + 1] = code >> 8 & 255;\n\t}\n\treturn bytes;\n}\nfunction randomBytes(length) {\n\tconst bytes = new Uint8Array(length);\n\tif (typeof crypto !== \"undefined\" && crypto.getRandomValues) crypto.getRandomValues(bytes);\n\telse for (let i = 0; i < length; i++) bytes[i] = Math.floor(Math.random() * 256);\n\treturn bytes;\n}\n/**\n* Computes the ECMA-376 Agile Encryption hash for a password.\n*\n* Algorithm: SHA-512(salt + UTF-16LE(password)), then iterate\n* SHA-512(hash + i.toUint32LE()) spinCount times.\n*/\nfunction hashPasswordAgile(password, salt, spinCount) {\n\tconst pwBytes = utf16leEncode(password);\n\tconst initial = new Uint8Array(salt.length + pwBytes.length);\n\tinitial.set(salt, 0);\n\tinitial.set(pwBytes, salt.length);\n\tlet h = sha512(initial);\n\tfor (let i = 0; i < spinCount; i++) {\n\t\tconst buf = new Uint8Array(h.length + 4);\n\t\tbuf.set(h, 0);\n\t\tbuf[h.length] = i & 255;\n\t\tbuf[h.length + 1] = i >> 8 & 255;\n\t\tbuf[h.length + 2] = i >> 16 & 255;\n\t\tbuf[h.length + 3] = i >> 24 & 255;\n\t\th = sha512(buf);\n\t}\n\treturn encodeBase64(new Uint8Array(h));\n}\n/**\n* Derives a password hash for OOXML document protection.\n*\n* Returns base64-encoded hashValue, saltValue, spinCount, and algorithmName\n* suitable for direct use in document protection options.\n*/\nfunction derivePasswordHash(password, spinCount = 1e5) {\n\tconst salt = randomBytes(16);\n\treturn {\n\t\thashValue: hashPasswordAgile(password, salt, spinCount),\n\t\tsaltValue: encodeBase64(salt),\n\t\tspinCount,\n\t\talgorithmName: \"SHA-512\"\n\t};\n}\n//#endregion\n//#region src/util/placeholder.ts\nconst formatId = (offset, index, style) => style === \"rId\" ? `rId${offset + index}` : `${offset + index}`;\n/** Single-pass regex replacement for `{key}` placeholders using a Map lookup. */\nconst PLACEHOLDER_RE = /\\{([^{}]+)\\}/g;\nfunction replacePlaceholders(xml, map) {\n\tconst parts = [];\n\tlet last = 0;\n\tfor (const m of xml.matchAll(PLACEHOLDER_RE)) {\n\t\tconst key = m[1];\n\t\tif (key === void 0) continue;\n\t\tconst replacement = map.get(key);\n\t\tif (replacement !== void 0) {\n\t\t\tparts.push(xml.substring(last, m.index), replacement);\n\t\t\tlast = m.index + m[0].length;\n\t\t}\n\t}\n\tif (last === 0) return xml;\n\tparts.push(xml.substring(last));\n\treturn parts.join(\"\");\n}\nfunction hasPlaceholders(xml) {\n\treturn xml.includes(\"{\");\n}\nfunction collectPlaceholderKeys(xml, prefix) {\n\tconst keys = /* @__PURE__ */ new Set();\n\tconst search = `{${prefix}`;\n\tlet pos = 0;\n\twhile ((pos = xml.indexOf(search, pos)) !== -1) {\n\t\tconst keyStart = pos + search.length;\n\t\tconst keyEnd = xml.indexOf(\"}\", keyStart);\n\t\tif (keyEnd === -1) break;\n\t\tconst key = xml.substring(keyStart, keyEnd);\n\t\tif (key.length > 0) keys.add(key);\n\t\tpos = keyEnd + 1;\n\t}\n\treturn [...keys];\n}\nfunction replaceImagePlaceholders(xml, mediaData, offset, idFormat = \"rId\") {\n\tif (mediaData.length === 0) return xml;\n\tconst map = /* @__PURE__ */ new Map();\n\tfor (const [i, item] of mediaData.entries()) map.set(item.fileName, formatId(offset, i, idFormat));\n\treturn replacePlaceholders(xml, map);\n}\nfunction getReferencedMedia(xml, mediaArray) {\n\treturn mediaArray.filter((image) => xml.includes(`{${image.fileName}}`));\n}\n/**\n* Combined find + replace for image placeholders in a single pass.\n*\n* Scans XML for `{fileName}` placeholders, replaces them with formatted IDs,\n* and returns the list of referenced media items for relationship registration.\n* More efficient than calling getReferencedMedia() + replaceImagePlaceholders() separately.\n*/\nfunction findAndReplaceImagePlaceholders(xml, mediaArray, offset, idFormat = \"rId\") {\n\tif (mediaArray.length === 0 || !hasPlaceholders(xml)) return {\n\t\txml,\n\t\treferenced: []\n\t};\n\tconst itemMap = /* @__PURE__ */ new Map();\n\tfor (const item of mediaArray) itemMap.set(item.fileName, item);\n\tconst referenced = [];\n\tconst replaceMap = /* @__PURE__ */ new Map();\n\tconst parts = [];\n\tlet last = 0;\n\tfor (const m of xml.matchAll(PLACEHOLDER_RE)) {\n\t\tconst key = m[1];\n\t\tif (key === void 0) continue;\n\t\tconst item = itemMap.get(key);\n\t\tif (item !== void 0) {\n\t\t\tif (!replaceMap.has(key)) {\n\t\t\t\treplaceMap.set(key, formatId(offset, referenced.length, idFormat));\n\t\t\t\treferenced.push(item);\n\t\t\t}\n\t\t\tparts.push(xml.substring(last, m.index), replaceMap.get(key));\n\t\t\tlast = m.index + m[0].length;\n\t\t}\n\t}\n\tif (last === 0) return {\n\t\txml,\n\t\treferenced: []\n\t};\n\tparts.push(xml.substring(last));\n\treturn {\n\t\txml: parts.join(\"\"),\n\t\treferenced\n\t};\n}\n/**\n* Replace all placeholder types in a single pass.\n*\n* Combines image, chart, smartart, and arbitrary key-value replacements\n* into one regex scan of the XML string. Used by compilers to avoid\n* multiple full-string passes on large documents.\n*/\nfunction replaceAllPlaceholders(xml, entries) {\n\tif (entries.length === 0 || !hasPlaceholders(xml)) return xml;\n\tconst map = /* @__PURE__ */ new Map();\n\tfor (const { prefix, key, value } of entries) map.set(prefix ? `${prefix}${key}` : key, value);\n\treturn replacePlaceholders(xml, map);\n}\nfunction replaceChartPlaceholders(xml, chartKeys, offset, idFormat = \"rId\") {\n\tif (chartKeys.length === 0) return xml;\n\tconst map = /* @__PURE__ */ new Map();\n\tfor (let i = 0; i < chartKeys.length; i++) map.set(`chart:${chartKeys[i]}`, formatId(offset, i, idFormat));\n\treturn replacePlaceholders(xml, map);\n}\nfunction replaceSmartArtPlaceholders(xml, keys, dataOffset, idFormat = \"rId\") {\n\tif (keys.length === 0) return xml;\n\tconst count = keys.length;\n\tconst loOffset = dataOffset + count;\n\tconst qsOffset = loOffset + count;\n\tconst csOffset = qsOffset + count;\n\tconst map = /* @__PURE__ */ new Map();\n\tfor (let i = 0; i < count; i++) {\n\t\tmap.set(`smartart:${keys[i]}`, formatId(dataOffset, i, idFormat));\n\t\tmap.set(`smartart-lo:${keys[i]}`, formatId(loOffset, i, idFormat));\n\t\tmap.set(`smartart-qs:${keys[i]}`, formatId(qsOffset, i, idFormat));\n\t\tmap.set(`smartart-cs:${keys[i]}`, formatId(csOffset, i, idFormat));\n\t}\n\treturn replacePlaceholders(xml, map);\n}\nfunction addSmartArtRelationships(keys, addRel, baseOffset, globalStartIndex, options) {\n\tconst { pathPrefix, styleRelType } = options;\n\tconst count = keys.length;\n\tconst loOffset = baseOffset + count;\n\tconst qsOffset = loOffset + count;\n\tconst csOffset = qsOffset + count;\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tconst gi = globalStartIndex + i;\n\t\taddRel(baseOffset + i, \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/diagramData\", `${pathPrefix}diagrams/data${gi + 1}.xml`);\n\t\taddRel(loOffset + i, \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/diagramLayout\", `${pathPrefix}diagrams/layout${gi + 1}.xml`);\n\t\taddRel(qsOffset + i, styleRelType, `${pathPrefix}diagrams/quickStyle${gi + 1}.xml`);\n\t\taddRel(csOffset + i, \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/diagramColors\", `${pathPrefix}diagrams/colors${gi + 1}.xml`);\n\t\taddRel(csOffset + count + i, \"http://schemas.microsoft.com/office/2007/relationships/diagramDrawing\", `${pathPrefix}diagrams/drawing${gi + 1}.xml`);\n\t}\n}\n/** Replace `{reference-instance}` placeholders with numId values. */\nfunction replaceNumberingPlaceholders(xml, concreteNumberings) {\n\tif (concreteNumberings.length === 0) return xml;\n\tconst map = /* @__PURE__ */ new Map();\n\tfor (const { reference, instance, numId } of concreteNumberings) map.set(`${reference}-${instance}`, numId.toString());\n\treturn replacePlaceholders(xml, map);\n}\n/** Replace `{media:fileName}` placeholders with relationship IDs. */\nfunction replaceMediaPlaceholders(xml, mediaData, offset) {\n\tif (mediaData.length === 0) return xml;\n\tconst map = /* @__PURE__ */ new Map();\n\tfor (const [i, item] of mediaData.entries()) map.set(`media:${item.fileName}`, formatId(offset, i, \"rId\"));\n\treturn replacePlaceholders(xml, map);\n}\n/** Replace `{video:fileName}` placeholders with relationship IDs. */\nfunction replaceVideoPlaceholders(xml, mediaData, offset) {\n\tif (mediaData.length === 0) return xml;\n\tconst map = /* @__PURE__ */ new Map();\n\tfor (const [i, item] of mediaData.entries()) map.set(`video:${item.fileName}`, formatId(offset, i, \"rId\"));\n\treturn replacePlaceholders(xml, map);\n}\n/** Collect media items referenced by `{media:...}` placeholders in XML. */\nfunction getMediaRefs(xml, mediaArray) {\n\treturn collectPrefixedRefs(xml, \"media:\", mediaArray);\n}\n/** Collect media items referenced by `{video:...}` placeholders in XML. */\nfunction getVideoRefs(xml, mediaArray) {\n\treturn collectPrefixedRefs(xml, \"video:\", mediaArray);\n}\nfunction collectPrefixedRefs(xml, prefix, mediaArray) {\n\tconst keys = /* @__PURE__ */ new Set();\n\tconst search = `{${prefix}`;\n\tlet pos = 0;\n\twhile ((pos = xml.indexOf(search, pos)) !== -1) {\n\t\tconst keyStart = pos + search.length;\n\t\tconst keyEnd = xml.indexOf(\"}\", keyStart);\n\t\tif (keyEnd === -1) break;\n\t\tkeys.add(xml.substring(keyStart, keyEnd));\n\t\tpos = keyEnd + 1;\n\t}\n\treturn mediaArray.filter((m) => keys.has(m.fileName));\n}\n/** Replace `{hlink:key}` placeholders with relationship IDs. */\nfunction replaceHyperlinkPlaceholders(xml, hyperlinks, offset) {\n\tif (hyperlinks.length === 0) return xml;\n\tconst map = /* @__PURE__ */ new Map();\n\tfor (const [i, h] of hyperlinks.entries()) map.set(`hlink:${h.key}`, formatId(offset, i, \"rId\"));\n\treturn replacePlaceholders(xml, map);\n}\n//#endregion\n//#region src/util/values.ts\n/**\n* Validates and converts a number to an integer (decimal number).\n*\n* Reference: ST_DecimalNumber in OOXML specification\n*\n* @param val - The number to validate and convert\n* @returns The floored integer value\n* @throws Error if the value is NaN\n*\n* @example\n* ```typescript\n* const num = decimalNumber(10.7); // Returns 10\n* const negative = decimalNumber(-5.3); // Returns -5\n* ```\n*/\nconst decimalNumber = (val) => {\n\tif (!Number.isFinite(val)) throw new Error(`Invalid value '${val}' specified. Must be a finite number.`);\n\treturn Math.floor(val);\n};\n/**\n* Validates and converts a number to a positive integer (unsigned decimal number).\n*\n* Reference: ST_UnsignedDecimalNumber in OOXML specification\n*\n* @param val - The number to validate and convert\n* @returns The floored positive integer value\n* @throws Error if the value is NaN or negative\n*\n* @example\n* ```typescript\n* const num = unsignedDecimalNumber(10.7); // Returns 10\n* const invalid = unsignedDecimalNumber(-5); // Throws Error\n* ```\n*/\nconst unsignedDecimalNumber = (val) => {\n\tconst value = decimalNumber(val);\n\tif (value < 0) throw new Error(`Invalid value '${val}' specified. Must be a positive integer.`);\n\treturn value;\n};\n/**\n* Validates and normalizes a hexadecimal binary value.\n*\n* The xsd:hexBinary type represents binary data as a sequence of binary octets\n* using hexadecimal encoding, where each binary octet is a two-character\n* hexadecimal number. Both lowercase and uppercase letters A-F are permitted.\n*\n* @param val - The hexadecimal string to validate\n* @param length - The expected length in bytes (not characters)\n* @returns The validated hexadecimal string\n* @throws Error if the value is not a valid hex string of the expected length\n*\n* @example\n* ```typescript\n* hexBinary(\"0FB8\", 2); // Valid: 2 bytes = 4 characters\n* hexBinary(\"ABC\", 2); // Invalid: wrong length\n* ```\n*/\nconst hexBinary = (val, length) => {\n\tconst expectedLength = length * 2;\n\tif (val.length !== expectedLength || isNaN(Number(`0x${val}`))) throw new Error(`Invalid hex value '${val}'. Expected ${expectedLength} digit hex value`);\n\treturn val;\n};\n/**\n* Validates a long hexadecimal number (4 bytes / 8 characters).\n*\n* Reference: ST_LongHexNumber in OOXML specification\n*\n* @param val - The hexadecimal string to validate\n* @returns The validated hexadecimal string\n* @throws Error if the value is not a valid 8-character hex string\n*\n* @example\n* ```typescript\n* const hex = longHexNumber(\"ABCD1234\"); // Valid\n* ```\n*/\nconst longHexNumber = (val) => hexBinary(val, 4);\n/**\n* Validates a short hexadecimal number (2 bytes / 4 characters).\n*\n* Reference: ST_ShortHexNumber in OOXML specification\n*\n* @param val - The hexadecimal string to validate\n* @returns The validated hexadecimal string\n* @throws Error if the value is not a valid 4-character hex string\n*\n* @example\n* ```typescript\n* const hex = shortHexNumber(\"AB12\"); // Valid\n* ```\n*/\nconst shortHexNumber = (val) => hexBinary(val, 2);\n/**\n* Validates a single-byte hexadecimal number (1 byte / 2 characters).\n*\n* Reference: ST_UcharHexNumber in OOXML specification\n*\n* @param val - The hexadecimal string to validate\n* @returns The validated hexadecimal string\n* @throws Error if the value is not a valid 2-character hex string\n*\n* @example\n* ```typescript\n* const hex = uCharHexNumber(\"FF\"); // Valid\n* ```\n*/\nconst uCharHexNumber = (val) => hexBinary(val, 1);\n/**\n* Normalizes a universal measure value by parsing and reformatting.\n*\n* Ensures the numeric portion is properly formatted while preserving the unit.\n*\n* Reference: ST_UniversalMeasure in OOXML specification\n*\n* @param val - The universal measure string to normalize\n* @returns The normalized universal measure\n*\n* @example\n* ```typescript\n* const measure = universalMeasureValue(\"10.500mm\"); // Returns \"10.5mm\"\n* ```\n*/\nconst universalMeasureValue = (val) => {\n\tconst unit = val.slice(-2);\n\tconst amount = val.substring(0, val.length - 2);\n\treturn `${Number(amount)}${unit}`;\n};\n/**\n* Validates and normalizes a positive universal measure value.\n*\n* Reference: ST_PositiveUniversalMeasure in OOXML specification\n*\n* @param val - The positive universal measure string to validate\n* @returns The normalized positive universal measure\n* @throws Error if the value is negative\n*\n* @example\n* ```typescript\n* const measure = positiveUniversalMeasureValue(\"10.5mm\"); // Valid\n* const invalid = positiveUniversalMeasureValue(\"-5mm\"); // Throws Error\n* ```\n*/\nconst positiveUniversalMeasureValue = (val) => {\n\tconst value = universalMeasureValue(val);\n\tif (parseFloat(value) < 0) throw new Error(`Invalid value '${value}' specified. Expected a positive number.`);\n\treturn value;\n};\n/**\n* Validates and normalizes a hexadecimal color value.\n*\n* Accepts either \"auto\" or a 6-character RGB hex value (with or without # prefix).\n* The # prefix is commonly used but technically invalid in OOXML, so it is stripped\n* for strict compliance.\n*\n* Reference: ST_HexColor in OOXML specification\n*\n* @param val - The color value to validate (\"auto\" or hex color)\n* @returns The normalized color value\n* @throws Error if the hex color is invalid\n*\n* @example\n* ```typescript\n* const color1 = hexColorValue(\"auto\"); // Returns \"auto\"\n* const color2 = hexColorValue(\"FF0000\"); // Returns \"FF0000\"\n* const color3 = hexColorValue(\"#00FF00\"); // Returns \"00FF00\" (# stripped)\n* ```\n*/\nconst hexColorValue = (val) => {\n\tif (val === \"auto\") return val;\n\treturn hexBinary(val.charAt(0) === \"#\" ? val.substring(1) : val, 3);\n};\n/**\n* Validates a signed TWIP measurement value.\n*\n* Accepts either a universal measure string or a numeric TWIP value.\n*\n* Reference: ST_SignedTwipsMeasure in OOXML specification\n*\n* @param val - The measurement value (universal measure or number)\n* @returns The normalized measurement value\n*\n* @example\n* ```typescript\n* const measure1 = signedTwipsMeasureValue(\"10mm\");\n* const measure2 = signedTwipsMeasureValue(1440); // 1 inch in TWIP\n* ```\n*/\nconst signedTwipsMeasureValue = (val) => typeof val === \"string\" ? universalMeasureValue(val) : decimalNumber(val);\n/**\n* Validates a half-point (HPS) measurement value.\n*\n* Accepts either a positive universal measure string or a positive number.\n* HPS (half-points) are commonly used for font sizes.\n*\n* Reference: ST_HpsMeasure in OOXML specification\n*\n* @param val - The measurement value (positive universal measure or number)\n* @returns The normalized measurement value\n*\n* @example\n* ```typescript\n* const fontSize1 = hpsMeasureValue(\"12pt\");\n* const fontSize2 = hpsMeasureValue(24); // 12pt in half-points\n* ```\n*/\nconst hpsMeasureValue = (val) => typeof val === \"string\" ? positiveUniversalMeasureValue(val) : unsignedDecimalNumber(val);\n/**\n* Validates a signed half-point (HPS) measurement value.\n*\n* Accepts either a universal measure string or a numeric value.\n*\n* Reference: ST_SignedHpsMeasure in OOXML specification\n*\n* @param val - The measurement value (universal measure or number)\n* @returns The normalized measurement value\n*\n* @example\n* ```typescript\n* const spacing1 = signedHpsMeasureValue(\"6pt\");\n* const spacing2 = signedHpsMeasureValue(-12); // Negative spacing\n* ```\n*/\nconst signedHpsMeasureValue = (val) => typeof val === \"string\" ? universalMeasureValue(val) : decimalNumber(val);\n/**\n* Validates a positive TWIP measurement value.\n*\n* Accepts either a positive universal measure string or a positive number.\n*\n* Reference: ST_TwipsMeasure in OOXML specification\n*\n* @param val - The measurement value (positive universal measure or number)\n* @returns The normalized measurement value\n*\n* @example\n* ```typescript\n* const width1 = twipsMeasureValue(\"25.4mm\");\n* const width2 = twipsMeasureValue(1440); // 1 inch in TWIP\n* ```\n*/\nconst twipsMeasureValue = (val) => typeof val === \"string\" ? positiveUniversalMeasureValue(val) : unsignedDecimalNumber(val);\n/**\n* Normalizes a percentage value by parsing and reformatting.\n*\n* Reference: ST_Percentage in OOXML specification\n*\n* @param val - The percentage string to normalize\n* @returns The normalized percentage\n*\n* @example\n* ```typescript\n* const percent = percentageValue(\"50.000%\"); // Returns \"50%\"\n* ```\n*/\nconst percentageValue = (val) => {\n\tconst percent = val.substring(0, val.length - 1);\n\treturn `${Number(percent)}%`;\n};\n/**\n* Validates a measurement value that can be expressed as a number, percentage, or universal measure.\n*\n* Reference: ST_MeasurementOrPercent in OOXML specification\n*\n* @param val - The measurement value (number, percentage, or universal measure)\n* @returns The normalized measurement value\n*\n* @example\n* ```typescript\n* const measure1 = measurementOrPercentValue(100); // Unqualified number\n* const measure2 = measurementOrPercentValue(\"50%\"); // Percentage\n* const measure3 = measurementOrPercentValue(\"10mm\"); // Universal measure\n* ```\n*/\nconst measurementOrPercentValue = (val) => {\n\tif (typeof val === \"number\") return decimalNumber(val);\n\tif (val.slice(-1) === \"%\") return percentageValue(val);\n\treturn universalMeasureValue(val);\n};\n/**\n* Validates an eighth-point measurement value.\n*\n* Eighth-points are used for fine-grained measurements in text formatting.\n*\n* Reference: ST_EighthPointMeasure in OOXML specification\n*\n* @param val - The measurement value in eighth-points\n* @returns The validated positive integer value\n*\n* @example\n* ```typescript\n* const measure = eighthPointMeasureValue(16); // 2 points\n* ```\n*/\nconst eighthPointMeasureValue = unsignedDecimalNumber;\n/**\n* Validates a point measurement value.\n*\n* Reference: ST_PointMeasure in OOXML specification\n*\n* @param val - The measurement value in points\n* @returns The validated positive integer value\n*\n* @example\n* ```typescript\n* const fontSize = pointMeasureValue(12); // 12pt\n* ```\n*/\nconst pointMeasureValue = unsignedDecimalNumber;\n/**\n* Converts a JavaScript Date object to an ISO 8601 date-time string.\n*\n* The format is CCYY-MM-DDThh:mm:ss.sssZ where T is a literal and Z indicates UTC.\n* This matches the xsd:dateTime format required by OOXML.\n*\n* Reference: ST_DateTime in OOXML specification\n*\n* @param val - The Date object to convert\n* @returns An ISO 8601 formatted date-time string\n*\n* @example\n* ```typescript\n* const now = new Date();\n* const timestamp = dateTimeValue(now); // Returns \"2024-01-15T10:30:00.000Z\"\n* ```\n*/\nconst dateTimeValue = (val) => val.toISOString();\n/**\n* Theme color values used throughout OOXML for referencing document theme colors.\n*\n* Reference: ST_ThemeColor in OOXML specification\n*\n* @publicApi\n*/\nconst ThemeColor = {\n\tDARK1: \"dark1\",\n\tLIGHT1: \"light1\",\n\tDARK2: \"dark2\",\n\tLIGHT2: \"light2\",\n\tACCENT1: \"accent1\",\n\tACCENT2: \"accent2\",\n\tACCENT3: \"accent3\",\n\tACCENT4: \"accent4\",\n\tACCENT5: \"accent5\",\n\tACCENT6: \"accent6\",\n\tHYPERLINK: \"hyperlink\",\n\tFOLLOWED_HYPERLINK: \"followedHyperlink\",\n\tNONE: \"none\",\n\tBACKGROUND1: \"background1\",\n\tTEXT1: \"text1\",\n\tBACKGROUND2: \"background2\",\n\tTEXT2: \"text2\"\n};\n/**\n* Theme font values used for referencing document theme fonts.\n*\n* Reference: ST_Theme in OOXML specification\n*\n* @publicApi\n*/\nconst ThemeFont = {\n\tMAJOR_EAST_ASIA: \"majorEastAsia\",\n\tMAJOR_BIDI: \"majorBidi\",\n\tMAJOR_ASCII: \"majorAscii\",\n\tMAJOR_H_ANSI: \"majorHAnsi\",\n\tMINOR_EAST_ASIA: \"minorEastAsia\",\n\tMINOR_BIDI: \"minorBidi\",\n\tMINOR_ASCII: \"minorAscii\",\n\tMINOR_H_ANSI: \"minorHAnsi\"\n};\n//#endregion\nexport { convertOutput as $, replaceChartPlaceholders as A, compileMapping as B, findAndReplaceImagePlaceholders as C, getVideoRefs as D, getReferencedMedia as E, replaceSmartArtPlaceholders as F, levelForMediaName as G, ZIP_STORED_LEVEL as H, replaceVideoPlaceholders as I, zipAndConvert as J, strFromU8$1 as K, derivePasswordHash as L, replaceImagePlaceholders as M, replaceMediaPlaceholders as N, hasPlaceholders as O, replaceNumberingPlaceholders as P, OoxmlMimeType as Q, hashPasswordAgile as R, collectPlaceholderKeys as S, getMediaRefs as T, createPacker as U, ZIP_DEFLATE_LEVEL as V, createZipStream as W, hasNativeInflate as X, zipSyncAndConvert as Y, nativeUnzip as Z, twipsMeasureValue as _, eighthPointMeasureValue as a, unsignedDecimalNumber as b, hpsMeasureValue as c, percentageValue as d, pointMeasureValue as f, signedTwipsMeasureValue as g, signedHpsMeasureValue as h, decimalNumber as i, replaceHyperlinkPlaceholders as j, replaceAllPlaceholders as k, longHexNumber as l, shortHexNumber as m, ThemeFont as n, hexBinary as o, positiveUniversalMeasureValue as p, unzipSync$1 as q, dateTimeValue as r, hexColorValue as s, ThemeColor as t, measurementOrPercentValue as u, uCharHexNumber as v, formatId as w, addSmartArtRelationships as x, universalMeasureValue as y, randomBytes as z };\n\n//# sourceMappingURL=util-Tq9PSjK0.mjs.map","import { escapeXml } from \"@office-open/xml\";\n//#region src/smartart/categories.ts\n/** Layout ID → OOXML category type */\nconst LAYOUT_CATEGORIES = {\n\tdefault: \"list\",\n\tlist1: \"list\",\n\tlist2: \"list\",\n\tvList2: \"list\",\n\thList1: \"list\",\n\tpList1: \"list\",\n\tprocess1: \"process\",\n\tprocess2: \"process\",\n\tprocess3: \"process\",\n\tprocess4: \"process\",\n\tchevron1: \"process\",\n\tchevron2: \"process\",\n\tarrow1: \"process\",\n\tarrow2: \"process\",\n\tcycle1: \"cycle\",\n\tcycle2: \"cycle\",\n\tcycle3: \"cycle\",\n\tcycle4: \"cycle\",\n\tcycle5: \"cycle\",\n\thierarchy1: \"hier\",\n\thierarchy2: \"hier\",\n\thierarchy3: \"hier\",\n\thierarchy4: \"hier\",\n\torgChart1: \"hier\",\n\tpyramid1: \"pyramid\",\n\tpyramid2: \"pyramid\",\n\tpyramid3: \"pyramid\",\n\tmatrix1: \"matrix\",\n\tmatrix2: \"matrix\",\n\tmatrix3: \"matrix\",\n\tradial1: \"rel\",\n\tradial2: \"rel\",\n\tradial3: \"rel\",\n\tvenn1: \"rel\",\n\tfunnel1: \"rel\",\n\tbalance1: \"rel\",\n\tgear1: \"rel\",\n\tconstOrg1: \"rel\",\n\toppId1: \"rel\"\n};\n/** Style ID → OOXML category type */\nconst STYLE_CATEGORIES = {\n\tsimple1: \"simple\",\n\tsimple2: \"simple\",\n\tsimple3: \"simple\",\n\tsimple4: \"simple\",\n\tsimple5: \"simple\",\n\tmoderate1: \"moderate\",\n\tmoderate2: \"moderate\",\n\tmoderate3: \"moderate\",\n\tmoderate4: \"moderate\",\n\tpolished1: \"polished\",\n\tpolished2: \"polished\",\n\tpolished3: \"polished\",\n\tpolished4: \"polished\",\n\tprofessional1: \"professional\",\n\tprofessional2: \"professional\",\n\tprofessional3: \"professional\",\n\tprofessional4: \"professional\",\n\tcartoon1: \"cartoon\",\n\tcartoon2: \"cartoon\",\n\tcartoon3: \"cartoon\",\n\tcartoon4: \"cartoon\",\n\tpowdery1: \"powdery\",\n\tpowdery2: \"powdery\",\n\tpowdery3: \"powdery\",\n\tpowdery4: \"powdery\",\n\tburnt1: \"burnt\",\n\tburnt2: \"burnt\",\n\tburnt3: \"burnt\",\n\tburnt4: \"burnt\"\n};\n/** Color ID → OOXML category type */\nconst COLOR_CATEGORIES = {\n\taccent1_2: \"accent1\",\n\taccent2_2: \"accent2\",\n\taccent3_2: \"accent3\",\n\taccent4_2: \"accent4\",\n\taccent5_2: \"accent5\",\n\taccent6_2: \"accent6\",\n\tcolorful1: \"colorful\",\n\tcolorful2: \"colorful\",\n\tcolorful3: \"colorful\",\n\tcolorful4: \"colorful\",\n\tdark1: \"dark\",\n\tdark2: \"dark\",\n\tprimary1: \"primary\",\n\tprimary2: \"primary\",\n\tgray1: \"gray\",\n\tgray2: \"gray\"\n};\n//#endregion\n//#region src/smartart/built-in-definitions.ts\n/**\n* Returns layout XML. Full XML for \"default\", minimal stub for others.\n* Stub has no layoutNode so PowerPoint falls back to built-in definitions\n* based on the uniqueId / loTypeId in the data model.\n*/\nfunction getLayoutXml(layoutId) {\n\tif (layoutId === \"default\") return \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"yes\\\"?><dgm:layoutDef xmlns:dgm=\\\"http://schemas.openxmlformats.org/drawingml/2006/diagram\\\" xmlns:a=\\\"http://schemas.openxmlformats.org/drawingml/2006/main\\\" uniqueId=\\\"urn:microsoft.com/office/officeart/2005/8/layout/default\\\"><dgm:title val=\\\"\\\"/><dgm:desc val=\\\"\\\"/><dgm:catLst><dgm:cat type=\\\"list\\\" pri=\\\"400\\\"/></dgm:catLst><dgm:sampData><dgm:dataModel><dgm:ptLst><dgm:pt modelId=\\\"0\\\" type=\\\"doc\\\"/><dgm:pt modelId=\\\"1\\\"><dgm:prSet phldr=\\\"1\\\"/></dgm:pt><dgm:pt modelId=\\\"2\\\"><dgm:prSet phldr=\\\"1\\\"/></dgm:pt><dgm:pt modelId=\\\"3\\\"><dgm:prSet phldr=\\\"1\\\"/></dgm:pt><dgm:pt modelId=\\\"4\\\"><dgm:prSet phldr=\\\"1\\\"/></dgm:pt><dgm:pt modelId=\\\"5\\\"><dgm:prSet phldr=\\\"1\\\"/></dgm:pt></dgm:ptLst><dgm:cxnLst><dgm:cxn modelId=\\\"6\\\" srcId=\\\"0\\\" destId=\\\"1\\\" srcOrd=\\\"0\\\" destOrd=\\\"0\\\"/><dgm:cxn modelId=\\\"7\\\" srcId=\\\"0\\\" destId=\\\"2\\\" srcOrd=\\\"1\\\" destOrd=\\\"0\\\"/><dgm:cxn modelId=\\\"8\\\" srcId=\\\"0\\\" destId=\\\"3\\\" srcOrd=\\\"2\\\" destOrd=\\\"0\\\"/><dgm:cxn modelId=\\\"9\\\" srcId=\\\"0\\\" destId=\\\"4\\\" srcOrd=\\\"3\\\" destOrd=\\\"0\\\"/><dgm:cxn modelId=\\\"10\\\" srcId=\\\"0\\\" destId=\\\"5\\\" srcOrd=\\\"4\\\" destOrd=\\\"0\\\"/></dgm:cxnLst><dgm:bg/><dgm:whole/></dgm:dataModel></dgm:sampData><dgm:styleData><dgm:dataModel><dgm:ptLst><dgm:pt modelId=\\\"0\\\" type=\\\"doc\\\"/><dgm:pt modelId=\\\"1\\\"/><dgm:pt modelId=\\\"2\\\"/></dgm:ptLst><dgm:cxnLst><dgm:cxn modelId=\\\"3\\\" srcId=\\\"0\\\" destId=\\\"1\\\" srcOrd=\\\"0\\\" destOrd=\\\"0\\\"/><dgm:cxn modelId=\\\"4\\\" srcId=\\\"0\\\" destId=\\\"2\\\" srcOrd=\\\"1\\\" destOrd=\\\"0\\\"/></dgm:cxnLst><dgm:bg/><dgm:whole/></dgm:dataModel></dgm:styleData><dgm:clrData><dgm:dataModel><dgm:ptLst><dgm:pt modelId=\\\"0\\\" type=\\\"doc\\\"/><dgm:pt modelId=\\\"1\\\"/><dgm:pt modelId=\\\"2\\\"/><dgm:pt modelId=\\\"3\\\"/><dgm:pt modelId=\\\"4\\\"/><dgm:pt modelId=\\\"5\\\"/><dgm:pt modelId=\\\"6\\\"/></dgm:ptLst><dgm:cxnLst><dgm:cxn modelId=\\\"7\\\" srcId=\\\"0\\\" destId=\\\"1\\\" srcOrd=\\\"0\\\" destOrd=\\\"0\\\"/><dgm:cxn modelId=\\\"8\\\" srcId=\\\"0\\\" destId=\\\"2\\\" srcOrd=\\\"1\\\" destOrd=\\\"0\\\"/><dgm:cxn modelId=\\\"9\\\" srcId=\\\"0\\\" destId=\\\"3\\\" srcOrd=\\\"2\\\" destOrd=\\\"0\\\"/><dgm:cxn modelId=\\\"10\\\" srcId=\\\"0\\\" destId=\\\"4\\\" srcOrd=\\\"3\\\" destOrd=\\\"0\\\"/><dgm:cxn modelId=\\\"11\\\" srcId=\\\"0\\\" destId=\\\"5\\\" srcOrd=\\\"4\\\" destOrd=\\\"0\\\"/><dgm:cxn modelId=\\\"12\\\" srcId=\\\"0\\\" destId=\\\"6\\\" srcOrd=\\\"5\\\" destOrd=\\\"0\\\"/></dgm:cxnLst><dgm:bg/><dgm:whole/></dgm:dataModel></dgm:clrData><dgm:layoutNode name=\\\"diagram\\\" chOrder=\\\"b\\\"><dgm:varLst><dgm:dir/><dgm:resizeHandles val=\\\"exact\\\"/></dgm:varLst><dgm:choose name=\\\"Name0\\\"><dgm:if name=\\\"Name1\\\" func=\\\"var\\\" arg=\\\"dir\\\" op=\\\"equ\\\" val=\\\"norm\\\"><dgm:alg type=\\\"snake\\\"><dgm:param type=\\\"grDir\\\" val=\\\"tL\\\"/><dgm:param type=\\\"flowDir\\\" val=\\\"row\\\"/><dgm:param type=\\\"contDir\\\" val=\\\"sameDir\\\"/><dgm:param type=\\\"off\\\" val=\\\"ctr\\\"/></dgm:alg></dgm:if><dgm:else name=\\\"Name2\\\"><dgm:alg type=\\\"snake\\\"><dgm:param type=\\\"grDir\\\" val=\\\"tR\\\"/><dgm:param type=\\\"flowDir\\\" val=\\\"row\\\"/><dgm:param type=\\\"contDir\\\" val=\\\"sameDir\\\"/><dgm:param type=\\\"off\\\" val=\\\"ctr\\\"/></dgm:alg></dgm:else></dgm:choose><dgm:shape blipPhldr=\\\"false\\\" xmlns:r=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\\\" r:blip=\\\"\\\"><dgm:adjLst/></dgm:shape><dgm:presOf/><dgm:constrLst><dgm:constr type=\\\"w\\\" for=\\\"ch\\\" forName=\\\"node\\\" refType=\\\"w\\\" refPtType=\\\"all\\\"/><dgm:constr type=\\\"h\\\" for=\\\"ch\\\" forName=\\\"node\\\" refType=\\\"w\\\" refFor=\\\"ch\\\" refForName=\\\"node\\\" fact=\\\"0.6\\\"/><dgm:constr type=\\\"w\\\" for=\\\"ch\\\" forName=\\\"sibTrans\\\" refType=\\\"w\\\" refFor=\\\"ch\\\" refForName=\\\"node\\\" fact=\\\"0.1\\\"/><dgm:constr type=\\\"sp\\\" refType=\\\"w\\\" refFor=\\\"ch\\\" refForName=\\\"sibTrans\\\"/><dgm:constr type=\\\"primFontSz\\\" for=\\\"ch\\\" forName=\\\"node\\\" op=\\\"equ\\\" val=\\\"65\\\"/></dgm:constrLst><dgm:ruleLst/><dgm:forEach name=\\\"Name3\\\" axis=\\\"ch\\\" ptType=\\\"node\\\" st=\\\"1\\\"><dgm:layoutNode name=\\\"node\\\"><dgm:varLst><dgm:bulletEnabled val=\\\"1\\\"/></dgm:varLst><dgm:alg type=\\\"tx\\\"/><dgm:shape type=\\\"rect\\\" xmlns:r=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\\\" r:blip=\\\"\\\"><dgm:adjLst/></dgm:shape><dgm:presOf axis=\\\"desOrSelf\\\" ptType=\\\"node\\\"/><dgm:constrLst><dgm:constr type=\\\"lMarg\\\" refType=\\\"primFontSz\\\" fact=\\\"0.3\\\"/><dgm:constr type=\\\"rMarg\\\" refType=\\\"primFontSz\\\" fact=\\\"0.3\\\"/><dgm:constr type=\\\"tMarg\\\" refType=\\\"primFontSz\\\" fact=\\\"0.3\\\"/><dgm:constr type=\\\"bMarg\\\" refType=\\\"primFontSz\\\" fact=\\\"0.3\\\"/></dgm:constrLst><dgm:ruleLst><dgm:rule type=\\\"primFontSz\\\" val=\\\"5\\\" fact=\\\"NaN\\\" max=\\\"NaN\\\"/></dgm:ruleLst></dgm:layoutNode><dgm:forEach name=\\\"Name4\\\" axis=\\\"followSib\\\" ptType=\\\"sibTrans\\\" cnt=\\\"1\\\"><dgm:layoutNode name=\\\"sibTrans\\\"><dgm:alg type=\\\"sp\\\"/><dgm:shape xmlns:r=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\\\" r:blip=\\\"\\\"><dgm:adjLst/></dgm:shape><dgm:presOf/><dgm:constrLst/><dgm:ruleLst/></dgm:layoutNode></dgm:forEach></dgm:layoutNode></dgm:layoutDef>\";\n\tconst cat = LAYOUT_CATEGORIES[layoutId] ?? \"list\";\n\treturn \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"yes\\\"?><dgm:layoutDef xmlns:dgm=\\\"http://schemas.openxmlformats.org/drawingml/2006/diagram\\\" xmlns:a=\\\"http://schemas.openxmlformats.org/drawingml/2006/main\\\" uniqueId=\\\"urn:microsoft.com/office/officeart/2005/8/layout/\" + layoutId + \"\\\"><dgm:title val=\\\"\\\"/><dgm:desc val=\\\"\\\"/><dgm:catLst><dgm:cat type=\\\"\" + cat + \"\\\" pri=\\\"400\\\"/></dgm:catLst><dgm:sampData><dgm:dataModel><dgm:ptLst><dgm:pt modelId=\\\"0\\\" type=\\\"doc\\\"/><dgm:pt modelId=\\\"1\\\"><dgm:prSet phldr=\\\"1\\\"/></dgm:pt><dgm:pt modelId=\\\"2\\\"><dgm:prSet phldr=\\\"1\\\"/></dgm:pt></dgm:ptLst><dgm:cxnLst><dgm:cxn modelId=\\\"3\\\" srcId=\\\"0\\\" destId=\\\"1\\\" srcOrd=\\\"0\\\" destOrd=\\\"0\\\"/><dgm:cxn modelId=\\\"4\\\" srcId=\\\"0\\\" destId=\\\"2\\\" srcOrd=\\\"1\\\" destOrd=\\\"0\\\"/></dgm:cxnLst><dgm:bg/><dgm:whole/></dgm:dataModel></dgm:sampData></dgm:layoutDef>\";\n}\n/**\n* Returns style XML with basic style definitions (fillClrLst, linClrLst, etc.)\n* that allow PowerPoint to correctly render SmartArt colors and effects.\n*/\nfunction getStyleXml(styleId) {\n\tconst cat = STYLE_CATEGORIES[styleId] ?? \"simple\";\n\treturn \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"yes\\\"?><dgm:styleDef xmlns:dgm=\\\"http://schemas.openxmlformats.org/drawingml/2006/diagram\\\" xmlns:a=\\\"http://schemas.openxmlformats.org/drawingml/2006/main\\\" uniqueId=\\\"urn:microsoft.com/office/officeart/2005/8/quickstyle/\" + styleId + \"\\\"><dgm:title val=\\\"\\\"/><dgm:desc val=\\\"\\\"/><dgm:catLst><dgm:cat type=\\\"\" + cat + \"\\\" pri=\\\"10100\\\"/></dgm:catLst><dgm:scene3d><a:camera prst=\\\"orthographicFront\\\"/><a:lightRig rig=\\\"threePt\\\" dir=\\\"t\\\"/></dgm:scene3d><dgm:fillClrLst><a:solidFill><a:schemeClr val=\\\"accent1\\\"/></a:solidFill><a:solidFill><a:schemeClr val=\\\"accent2\\\"/></a:solidFill><a:solidFill><a:schemeClr val=\\\"accent3\\\"/></a:solidFill><a:solidFill><a:schemeClr val=\\\"accent4\\\"/></a:solidFill><a:solidFill><a:schemeClr val=\\\"accent5\\\"/></a:solidFill><a:solidFill><a:schemeClr val=\\\"accent6\\\"/></a:solidFill></dgm:fillClrLst><dgm:linClrLst><a:solidFill><a:schemeClr val=\\\"tx1\\\"/></a:solidFill></dgm:linClrLst><dgm:effectClrLst><a:solidFill><a:schemeClr val=\\\"tx1\\\"/></a:solidFill></dgm:effectClrLst><dgm:fontClrLst><a:solidFill><a:schemeClr val=\\\"tx1\\\"/></a:solidFill><a:solidFill><a:schemeClr val=\\\"tx1\\\"/></a:solidFill><a:solidFill><a:schemeClr val=\\\"tx1\\\"/></a:solidFill></dgm:fontClrLst></dgm:styleDef>\";\n}\n/**\n* Returns color XML with basic color definitions (fillLst, linLst, etc.)\n* that allow PowerPoint to correctly render SmartArt with the specified color scheme.\n*/\nfunction getColorXml(colorId) {\n\tconst cat = COLOR_CATEGORIES[colorId] ?? \"accent1\";\n\tconst accentMatch = colorId.match(/^(accent\\d)/);\n\tconst accentVal = accentMatch ? accentMatch[1] : \"accent1\";\n\tlet colorContent;\n\tif (colorId.startsWith(\"accent\")) colorContent = `<dgm:fillLst><a:solidFill><a:schemeClr val=\"${accentVal}\"/></a:solidFill></dgm:fillLst><dgm:linLst><a:solidFill><a:schemeClr val=\"tx1\"><a:tint val=\"75000\"/></a:schemeClr></a:solidFill></dgm:linLst><dgm:effectLst><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill></dgm:effectLst><dgm:txFillLst><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill></dgm:txFillLst><dgm:txLinLst><a:solidFill><a:schemeClr val=\"tx1\"><a:tint val=\"75000\"/></a:schemeClr></a:solidFill></dgm:txLinLst><dgm:txEffectLst><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill></dgm:txEffectLst>`;\n\telse if (colorId.startsWith(\"colorful\")) colorContent = \"<dgm:fillLst><a:solidFill><a:schemeClr val=\\\"accent1\\\"/></a:solidFill><a:solidFill><a:schemeClr val=\\\"accent2\\\"/></a:solidFill><a:solidFill><a:schemeClr val=\\\"accent3\\\"/></a:solidFill><a:solidFill><a:schemeClr val=\\\"accent4\\\"/></a:solidFill><a:solidFill><a:schemeClr val=\\\"accent5\\\"/></a:solidFill></dgm:fillLst><dgm:linLst><a:solidFill><a:schemeClr val=\\\"lt1\\\"/></a:solidFill></dgm:linLst><dgm:effectLst><a:solidFill><a:schemeClr val=\\\"lt1\\\"/></a:solidFill></dgm:effectLst><dgm:txFillLst><a:solidFill><a:schemeClr val=\\\"tx1\\\"/></a:solidFill></dgm:txFillLst><dgm:txLinLst/><dgm:txEffectLst/>\";\n\telse if (colorId.startsWith(\"dark\")) colorContent = \"<dgm:fillLst><a:solidFill><a:schemeClr val=\\\"dk1\\\"/></a:solidFill><a:solidFill><a:schemeClr val=\\\"dk2\\\"/></a:solidFill></dgm:fillLst><dgm:linLst><a:solidFill><a:schemeClr val=\\\"lt1\\\"/></a:solidFill></dgm:linLst><dgm:effectLst><a:solidFill><a:schemeClr val=\\\"lt1\\\"/></a:solidFill></dgm:effectLst><dgm:txFillLst><a:solidFill><a:schemeClr val=\\\"lt1\\\"/></a:solidFill></dgm:txFillLst><dgm:txLinLst/><dgm:txEffectLst/>\";\n\telse colorContent = \"<dgm:fillLst><a:solidFill><a:schemeClr val=\\\"accent1\\\"/></a:solidFill></dgm:fillLst><dgm:linLst><a:solidFill><a:schemeClr val=\\\"tx1\\\"/></a:solidFill></dgm:linLst><dgm:effectLst><a:solidFill><a:schemeClr val=\\\"tx1\\\"/></a:solidFill></dgm:effectLst><dgm:txFillLst><a:solidFill><a:schemeClr val=\\\"tx1\\\"/></a:solidFill></dgm:txFillLst><dgm:txLinLst/><dgm:txEffectLst/>\";\n\treturn \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"yes\\\"?><dgm:colorsDef xmlns:dgm=\\\"http://schemas.openxmlformats.org/drawingml/2006/diagram\\\" xmlns:a=\\\"http://schemas.openxmlformats.org/drawingml/2006/main\\\" uniqueId=\\\"urn:microsoft.com/office/officeart/2005/8/colors/\" + colorId + \"\\\"><dgm:title val=\\\"\\\"/><dgm:desc val=\\\"\\\"/><dgm:catLst><dgm:cat type=\\\"\" + cat + \"\\\" pri=\\\"11200\\\"/></dgm:catLst>\" + colorContent + \"</dgm:colorsDef>\";\n}\n/** Minimal drawing cache for SmartArt (Office apps auto-regenerate this on open) */\nconst DEFAULT_DRAWING_XML = \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"yes\\\"?><dsp:drawing xmlns:dgm=\\\"http://schemas.openxmlformats.org/drawingml/2006/diagram\\\" xmlns:dsp=\\\"http://schemas.microsoft.com/office/drawing/2008/diagram\\\" xmlns:a=\\\"http://schemas.openxmlformats.org/drawingml/2006/main\\\"><dsp:spTree><dsp:nvGrpSpPr><dsp:cNvPr id=\\\"0\\\" name=\\\"\\\"/><dsp:cNvGrpSpPr/></dsp:nvGrpSpPr><dsp:grpSpPr/></dsp:spTree></dsp:drawing>\";\n//#endregion\n//#region src/smartart/data-model/connection.ts\n/**\n* dgm:cxn — SmartArt data model connection (edge) XML stringifier.\n*/\nfunction stringifyConnection(opts) {\n\tconst attrs = [\n\t\t`modelId=\"${escapeXml(String(opts.modelId))}\"`,\n\t\t`srcId=\"${escapeXml(String(opts.srcId))}\"`,\n\t\t`destId=\"${escapeXml(String(opts.destId))}\"`,\n\t\t`srcOrd=\"${opts.srcOrd ?? 0}\"`,\n\t\t`destOrd=\"${opts.destOrd ?? 0}\"`\n\t];\n\tif (opts.type) attrs.push(`type=\"${escapeXml(opts.type)}\"`);\n\tif (opts.parTransId) attrs.push(`parTransId=\"${escapeXml(opts.parTransId)}\"`);\n\tif (opts.sibTransId) attrs.push(`sibTransId=\"${escapeXml(opts.sibTransId)}\"`);\n\tif (opts.presId) attrs.push(`presId=\"${escapeXml(opts.presId)}\"`);\n\treturn `<dgm:cxn ${attrs.join(\" \")}/>`;\n}\n//#endregion\n//#region src/smartart/data-model/data-model.ts\n/**\n* CT_DataModel XML stringifier — assembles complete SmartArt data model XML.\n*\n* @module\n*/\n/**\n* Build the complete dgm:dataModel XML from pre-serialized point and connection strings.\n*/\nfunction stringifyDataModel(points, connections) {\n\treturn [\n\t\t\"<dgm:dataModel xmlns:a=\\\"http://schemas.openxmlformats.org/drawingml/2006/main\\\" xmlns:dgm=\\\"http://schemas.openxmlformats.org/drawingml/2006/diagram\\\">\",\n\t\t`<dgm:ptLst>${points.join(\"\")}</dgm:ptLst>`,\n\t\t`<dgm:cxnLst>${connections.join(\"\")}</dgm:cxnLst>`,\n\t\t\"<dgm:bg/>\",\n\t\t\"<dgm:whole/>\",\n\t\t\"</dgm:dataModel>\"\n\t].join(\"\");\n}\n//#endregion\n//#region src/smartart/data-model/point.ts\n/**\n* dgm:pt — SmartArt data model point (node) XML stringifier.\n*/\nfunction stringifyPoint(modelId, text, type = \"node\", propertySet) {\n\tconst parts = [];\n\tparts.push(`<dgm:pt modelId=\"${escapeXml(String(modelId))}\" type=\"${escapeXml(type)}\">`);\n\tif (propertySet) parts.push(stringifyPropertySet(propertySet));\n\tparts.push(stringifyPointText(text));\n\tparts.push(\"</dgm:pt>\");\n\treturn parts.join(\"\");\n}\n/**\n* dgm:pt — transition point (parTrans or sibTrans) XML stringifier.\n*/\nfunction stringifyTransPoint(modelId, type, cxnId) {\n\treturn `<dgm:pt modelId=\"${escapeXml(modelId)}\" type=\"${escapeXml(type)}\" cxnId=\"${escapeXml(cxnId)}\"><dgm:spPr/></dgm:pt>`;\n}\nfunction stringifyPropertySet(opts) {\n\tconst attr = [];\n\tif (opts.presentationAssociationId !== void 0) attr.push(`presAssocID=\"${escapeXml(opts.presentationAssociationId)}\"`);\n\tif (opts.presentationName !== void 0) attr.push(`presName=\"${escapeXml(opts.presentationName)}\"`);\n\tif (opts.presentationStyleLabel !== void 0) attr.push(`presStyleLbl=\"${escapeXml(opts.presentationStyleLabel)}\"`);\n\tif (opts.presentationStyleIndex !== void 0) attr.push(`presStyleIdx=\"${opts.presentationStyleIndex}\"`);\n\tif (opts.presentationStyleCount !== void 0) attr.push(`presStyleCnt=\"${opts.presentationStyleCount}\"`);\n\tif (opts.placeholderText !== void 0) attr.push(`phldrT=\"${escapeXml(opts.placeholderText)}\"`);\n\tif (opts.placeholder !== void 0) attr.push(`phldr=\"${opts.placeholder ? 1 : 0}\"`);\n\tif (opts.customAngle !== void 0) attr.push(`custAng=\"${opts.customAngle}\"`);\n\tif (opts.customFlipVertical !== void 0) attr.push(`custFlipVert=\"${opts.customFlipVertical ? 1 : 0}\"`);\n\tif (opts.customFlipHorizontal !== void 0) attr.push(`custFlipHor=\"${opts.customFlipHorizontal ? 1 : 0}\"`);\n\tif (opts.customSizeX !== void 0) attr.push(`custSzX=\"${opts.customSizeX}\"`);\n\tif (opts.customSizeY !== void 0) attr.push(`custSzY=\"${opts.customSizeY}\"`);\n\tif (opts.customScaleX !== void 0) attr.push(`custScaleX=\"${opts.customScaleX}\"`);\n\tif (opts.customScaleY !== void 0) attr.push(`custScaleY=\"${opts.customScaleY}\"`);\n\tif (opts.customText !== void 0) attr.push(`custT=\"${opts.customText ? 1 : 0}\"`);\n\tif (opts.customLinearFactorX !== void 0) attr.push(`custLinFactX=\"${opts.customLinearFactorX}\"`);\n\tif (opts.customLinearFactorY !== void 0) attr.push(`custLinFactY=\"${opts.customLinearFactorY}\"`);\n\tif (opts.customLinearFactorNeighborX !== void 0) attr.push(`custLinFactNeighborX=\"${opts.customLinearFactorNeighborX}\"`);\n\tif (opts.customLinearFactorNeighborY !== void 0) attr.push(`custLinFactNeighborY=\"${opts.customLinearFactorNeighborY}\"`);\n\tif (opts.customRadialScaleRadius !== void 0) attr.push(`custRadScaleRad=\"${opts.customRadialScaleRadius}\"`);\n\tif (opts.customRadialScaleIncrement !== void 0) attr.push(`custRadScaleInc=\"${opts.customRadialScaleIncrement}\"`);\n\tif (opts.coherent3DOffset !== void 0) attr.push(`coherent3DOff=\"${opts.coherent3DOffset ? 1 : 0}\"`);\n\tif (opts.hideGeometry !== void 0) attr.push(`hideGeom=\"${opts.hideGeometry ? 1 : 0}\"`);\n\tif (opts.hideLastTransition !== void 0) attr.push(`hideLastTrans=\"${opts.hideLastTransition ? 1 : 0}\"`);\n\tif (opts.lockTextEntry !== void 0) attr.push(`lkTxEntry=\"${opts.lockTextEntry ? 1 : 0}\"`);\n\tif (opts.moveWith !== void 0) attr.push(`moveWith=\"${escapeXml(opts.moveWith)}\"`);\n\tif (opts.useDefault !== void 0) attr.push(`useDef=\"${opts.useDefault ? 1 : 0}\"`);\n\tif (opts.zOrderOffset !== void 0) attr.push(`zOrderOff=\"${opts.zOrderOffset}\"`);\n\tif (opts.layoutTypeId !== void 0) attr.push(`loTypeId=\"${escapeXml(opts.layoutTypeId)}\"`);\n\tif (opts.layoutCategoryId !== void 0) attr.push(`loCatId=\"${escapeXml(opts.layoutCategoryId)}\"`);\n\tif (opts.quickStyleTypeId !== void 0) attr.push(`qsTypeId=\"${escapeXml(opts.quickStyleTypeId)}\"`);\n\tif (opts.quickStyleCategoryId !== void 0) attr.push(`qsCatId=\"${escapeXml(opts.quickStyleCategoryId)}\"`);\n\tif (opts.colorStyleTypeId !== void 0) attr.push(`csTypeId=\"${escapeXml(opts.colorStyleTypeId)}\"`);\n\tif (opts.colorStyleCategoryId !== void 0) attr.push(`csCatId=\"${escapeXml(opts.colorStyleCategoryId)}\"`);\n\tif (attr.length === 0) return \"\";\n\treturn `<dgm:prSet ${attr.join(\" \")}/>`;\n}\nfunction stringifyPointText(text) {\n\treturn `<dgm:t><a:bodyPr/><a:lstStyle/><a:p>${text ? `<a:r><a:t>${escapeXml(text)}</a:t></a:r>` : \"\"}</a:p></dgm:t>`;\n}\n//#endregion\n//#region src/smartart/smartart-collection.ts\n/**\n* Manages SmartArt parts in a document.\n*/\nvar SmartArtCollection = class {\n\tmap;\n\tconstructor() {\n\t\tthis.map = /* @__PURE__ */ new Map();\n\t}\n\taddSmartArt(key, data) {\n\t\tthis.map.set(key, data);\n\t}\n\tget array() {\n\t\treturn [...this.map.values()];\n\t}\n};\n//#endregion\n//#region src/smartart/tree-to-model.ts\nfunction stringifyDocPoint(layout, style, color) {\n\tconst loTypeId = `urn:microsoft.com/office/officeart/2005/8/layout/${layout}`;\n\tconst loCatId = LAYOUT_CATEGORIES[layout] ?? \"list\";\n\tconst qsTypeId = `urn:microsoft.com/office/officeart/2005/8/quickstyle/${style}`;\n\tconst qsCatId = STYLE_CATEGORIES[style] ?? \"simple\";\n\tconst csTypeId = `urn:microsoft.com/office/officeart/2005/8/colors/${color}`;\n\tconst csCatId = COLOR_CATEGORIES[color] ?? \"accent1\";\n\treturn [\n\t\t\"<dgm:pt modelId=\\\"0\\\" type=\\\"doc\\\">\",\n\t\t`<dgm:prSet loTypeId=\"${escapeXml(loTypeId)}\" loCatId=\"${escapeXml(loCatId)}\" qsTypeId=\"${escapeXml(qsTypeId)}\" qsCatId=\"${escapeXml(qsCatId)}\" csTypeId=\"${escapeXml(csTypeId)}\" csCatId=\"${escapeXml(csCatId)}\" phldr=\"0\"/>`,\n\t\t\"<dgm:spPr/>\",\n\t\t\"<dgm:t><a:bodyPr/><a:lstStyle/><a:p/></dgm:t>\",\n\t\t\"</dgm:pt>\"\n\t].join(\"\");\n}\nfunction uuid() {\n\treturn `{${crypto.randomUUID().toUpperCase()}}`;\n}\n/**\n* Creates SmartArt data model XML from tree nodes with layout/style/color settings.\n* Returns the XML string body (no XML declaration).\n*/\nconst createDataModel = (nodes, layout = \"default\", style = \"simple1\", color = \"accent1_2\") => {\n\tconst pointStrs = [];\n\tconst connectionStrs = [];\n\tpointStrs.push(stringifyDocPoint(layout, style, color));\n\tfor (const [i, node] of nodes.entries()) {\n\t\tconst walk = (node, parentUuid, srcOrd) => {\n\t\t\tconst nodeUuid = uuid();\n\t\t\tconst parTransUuid = uuid();\n\t\t\tconst sibTransUuid = uuid();\n\t\t\tconst cxnUuid = uuid();\n\t\t\tpointStrs.push(stringifyTransPoint(parTransUuid, \"parTrans\", cxnUuid));\n\t\t\tpointStrs.push(stringifyTransPoint(sibTransUuid, \"sibTrans\", cxnUuid));\n\t\t\tpointStrs.push(stringifyPoint(nodeUuid, node.text));\n\t\t\tconnectionStrs.push(stringifyConnection({\n\t\t\t\tmodelId: parTransUuid,\n\t\t\t\tsrcId: parentUuid,\n\t\t\t\tdestId: nodeUuid,\n\t\t\t\tsrcOrd,\n\t\t\t\tdestOrd: 0,\n\t\t\t\tparTransId: parTransUuid,\n\t\t\t\tsibTransId: sibTransUuid\n\t\t\t}));\n\t\t\tif (node.children) for (const [j, child] of node.children.entries()) walk(child, nodeUuid, j);\n\t\t};\n\t\twalk(node, \"0\", i);\n\t}\n\treturn stringifyDataModel(pointStrs, connectionStrs);\n};\n//#endregion\nexport { stringifyDataModel as a, getColorXml as c, COLOR_CATEGORIES as d, LAYOUT_CATEGORIES as f, stringifyTransPoint as i, getLayoutXml as l, SmartArtCollection as n, stringifyConnection as o, STYLE_CATEGORIES as p, stringifyPoint as r, DEFAULT_DRAWING_XML as s, createDataModel as t, getStyleXml as u };\n\n//# sourceMappingURL=smartart-B7ukZ-Tw.mjs.map","import { attr, children, escapeXml, findChild, textOf } from \"@office-open/xml\";\n//#region src/chart/chart-collection.ts\nvar ChartCollection = class {\n\tmap;\n\tconstructor() {\n\t\tthis.map = /* @__PURE__ */ new Map();\n\t}\n\taddChart(key, chartData) {\n\t\tthis.map.set(key, chartData);\n\t}\n\tget array() {\n\t\treturn [...this.map.values()];\n\t}\n};\n//#endregion\n//#region src/chart/chart-descriptors.ts\n/**\n* Chart descriptors — CustomDescriptor for c:chartSpace serialization.\n*\n* @module\n*/\nconst CHART_TYPE_TAGS = {\n\tcolumn: \"c:barChart\",\n\tbar: \"c:barChart\",\n\tline: \"c:lineChart\",\n\tpie: \"c:pieChart\",\n\tarea: \"c:areaChart\",\n\tscatter: \"c:scatterChart\",\n\tbubble: \"c:bubbleChart\",\n\tdoughnut: \"c:doughnutChart\",\n\tradar: \"c:radarChart\",\n\tstock: \"c:stockChart\",\n\tsurface: \"c:surfaceChart\"\n};\nconst CHART_TYPE_TAGS_3D = {\n\tcolumn: \"c:bar3DChart\",\n\tbar: \"c:bar3DChart\",\n\tline: \"c:line3DChart\",\n\tpie: \"c:pie3DChart\",\n\tarea: \"c:area3DChart\"\n};\nconst NO_AXES_TYPES = new Set([\"pie\", \"doughnut\"]);\nconst TAG_TO_CHART_TYPE = {\n\t\"c:barChart\": { type: \"column\" },\n\t\"c:bar3DChart\": {\n\t\ttype: \"column\",\n\t\tthreeD: true\n\t},\n\t\"c:lineChart\": { type: \"line\" },\n\t\"c:line3DChart\": {\n\t\ttype: \"line\",\n\t\tthreeD: true\n\t},\n\t\"c:pieChart\": { type: \"pie\" },\n\t\"c:pie3DChart\": {\n\t\ttype: \"pie\",\n\t\tthreeD: true\n\t},\n\t\"c:areaChart\": { type: \"area\" },\n\t\"c:area3DChart\": {\n\t\ttype: \"area\",\n\t\tthreeD: true\n\t},\n\t\"c:scatterChart\": { type: \"scatter\" },\n\t\"c:bubbleChart\": { type: \"bubble\" },\n\t\"c:doughnutChart\": { type: \"doughnut\" },\n\t\"c:radarChart\": { type: \"radar\" },\n\t\"c:stockChart\": { type: \"stock\" },\n\t\"c:surfaceChart\": { type: \"surface\" },\n\t\"c:surface3DChart\": {\n\t\ttype: \"surface\",\n\t\tthreeD: true\n\t}\n};\nfunction attrVal(name, value) {\n\treturn `${name}=\"${escapeXml(String(value))}\"`;\n}\nfunction emptyEl(tag) {\n\treturn `<${tag}/>`;\n}\nfunction valEl(tag, value) {\n\treturn `<${tag} ${attrVal(\"val\", value)}/>`;\n}\nfunction boolVal(value) {\n\treturn value === false ? ` val=\"0\"` : \"\";\n}\nfunction stringifyNumLit(value) {\n\treturn `<c:numLit><c:formatCode>General</c:formatCode><c:ptCount val=\"1\"/><c:pt idx=\"0\"><c:v>${value}</c:v></c:pt></c:numLit>`;\n}\nfunction stringifyTrendline(opts) {\n\tconst parts = [];\n\tif (opts.name !== void 0) parts.push(`<c:name>${escapeXml(opts.name)}</c:name>`);\n\tparts.push(valEl(\"c:trendlineType\", opts.type ?? \"linear\"));\n\tif (opts.order !== void 0) parts.push(valEl(\"c:order\", opts.order));\n\tif (opts.period !== void 0) parts.push(valEl(\"c:period\", opts.period));\n\tif (opts.forward !== void 0) parts.push(valEl(\"c:forward\", opts.forward));\n\tif (opts.backward !== void 0) parts.push(valEl(\"c:backward\", opts.backward));\n\tif (opts.intercept !== void 0) parts.push(valEl(\"c:intercept\", opts.intercept));\n\tif (opts.dispRSqr !== void 0) parts.push(`<c:dispRSqr${boolVal(opts.dispRSqr)}/>`);\n\tif (opts.dispEq !== void 0) parts.push(`<c:dispEq${boolVal(opts.dispEq)}/>`);\n\tconst labelFmt = opts.label?.numberFormat;\n\tif (labelFmt !== void 0) parts.push(`<c:trendlineLbl><c:numFmt formatCode=\"${escapeXml(labelFmt)}\" sourceLinked=\"0\"/></c:trendlineLbl>`);\n\treturn `<c:trendline>${parts.join(\"\")}</c:trendline>`;\n}\nfunction stringifyErrBars(opts) {\n\tconst parts = [];\n\tif (opts.direction !== void 0) parts.push(valEl(\"c:errDir\", opts.direction));\n\tparts.push(valEl(\"c:errBarType\", opts.barType ?? \"both\"));\n\tparts.push(valEl(\"c:errValType\", opts.valueType ?? \"fixedVal\"));\n\tif (opts.noEndCap !== void 0) parts.push(`<c:noEndCap${boolVal(opts.noEndCap)}/>`);\n\tif (opts.plusValue !== void 0) parts.push(`<c:plus>${stringifyNumLit(opts.plusValue)}</c:plus>`);\n\tif (opts.minusValue !== void 0) parts.push(`<c:minus>${stringifyNumLit(opts.minusValue)}</c:minus>`);\n\tif (opts.value !== void 0) parts.push(valEl(\"c:val\", opts.value));\n\treturn `<c:errBars>${parts.join(\"\")}</c:errBars>`;\n}\nfunction stringifyDataLabel(opts) {\n\tif (opts.delete) return `<c:dLbl><c:idx val=\"${opts.index}\"/><c:delete val=\"1\"/></c:dLbl>`;\n\tconst inner = [];\n\tif (opts.numberFormat !== void 0) inner.push(`<c:numFmt formatCode=\"${escapeXml(opts.numberFormat)}\" sourceLinked=\"0\"/>`);\n\tif (opts.position !== void 0) inner.push(valEl(\"c:dLblPos\", opts.position));\n\treturn `<c:dLbl><c:idx val=\"${opts.index}\"/>${inner.join(\"\")}</c:dLbl>`;\n}\nfunction stringifyDataLabels(opts) {\n\tconst parts = [];\n\tif (opts.labels) for (const lbl of opts.labels) parts.push(stringifyDataLabel(lbl));\n\tif (opts.position !== void 0) parts.push(valEl(\"c:dLblPos\", opts.position));\n\tif (opts.showLegendKey !== void 0) parts.push(`<c:showLegendKey${boolVal(opts.showLegendKey)}/>`);\n\tif (opts.showVal !== void 0) parts.push(`<c:showVal${boolVal(opts.showVal)}/>`);\n\tif (opts.showCatName !== void 0) parts.push(`<c:showCatName${boolVal(opts.showCatName)}/>`);\n\tif (opts.showSerName !== void 0) parts.push(`<c:showSerName${boolVal(opts.showSerName)}/>`);\n\tif (opts.showPercent !== void 0) parts.push(`<c:showPercent${boolVal(opts.showPercent)}/>`);\n\tif (opts.showBubbleSize !== void 0) parts.push(`<c:showBubbleSize${boolVal(opts.showBubbleSize)}/>`);\n\tif (opts.separator !== void 0) parts.push(`<c:separator>${escapeXml(opts.separator)}</c:separator>`);\n\tif (opts.showLeaderLines !== void 0) parts.push(`<c:showLeaderLines${boolVal(opts.showLeaderLines)}/>`);\n\tif (opts.leaderLines) parts.push(emptyEl(\"c:leaderLines\"));\n\treturn `<c:dLbls>${parts.join(\"\")}</c:dLbls>`;\n}\nfunction stringifyView3D(opts) {\n\tconst parts = [];\n\tif (opts.rotX !== void 0) parts.push(valEl(\"c:rotX\", opts.rotX));\n\tif (opts.hPercent !== void 0) parts.push(valEl(\"c:hPercent\", opts.hPercent));\n\tif (opts.rotY !== void 0) parts.push(valEl(\"c:rotY\", opts.rotY));\n\tif (opts.depthPercent !== void 0) parts.push(valEl(\"c:depthPercent\", opts.depthPercent));\n\tif (opts.rAngAx !== void 0) parts.push(`<c:rAngAx${boolVal(opts.rAngAx)}/>`);\n\tif (opts.perspective !== void 0) parts.push(valEl(\"c:perspective\", opts.perspective));\n\treturn `<c:view3D>${parts.join(\"\")}</c:view3D>`;\n}\nfunction stringifyStrRef(values) {\n\tconst pts = values.map((v, i) => `<c:pt idx=\"${i}\"><c:v>${escapeXml(v)}</c:v></c:pt>`).join(\"\");\n\treturn `<c:strRef><c:f/><c:strCache><c:ptCount ${attrVal(\"val\", values.length)}/>${pts}</c:strCache></c:strRef>`;\n}\nfunction stringifyNumRef(values) {\n\tconst pts = values.map((v, i) => `<c:pt idx=\"${i}\"><c:v>${v}</c:v></c:pt>`).join(\"\");\n\treturn `<c:numRef><c:f/><c:numCache><c:formatCode>General</c:formatCode><c:ptCount ${attrVal(\"val\", values.length)}/>${pts}</c:numCache></c:numRef>`;\n}\nfunction chartTypeHeader(opts) {\n\tconst tag = opts.threeD ? CHART_TYPE_TAGS_3D[opts.type] : CHART_TYPE_TAGS[opts.type];\n\tif (!tag) throw new Error(`Unsupported chart type: ${opts.type}`);\n\tconst headerParts = [];\n\tswitch (opts.type) {\n\t\tcase \"column\":\n\t\tcase \"bar\":\n\t\t\theaderParts.push(valEl(\"c:barDir\", opts.type === \"column\" ? \"col\" : \"bar\"));\n\t\t\theaderParts.push(valEl(\"c:grouping\", \"clustered\"));\n\t\t\tbreak;\n\t\tcase \"line\":\n\t\tcase \"area\":\n\t\t\theaderParts.push(valEl(\"c:grouping\", \"standard\"));\n\t\t\tbreak;\n\t\tcase \"scatter\":\n\t\t\theaderParts.push(valEl(\"c:scatterStyle\", \"line\"));\n\t\t\tbreak;\n\t\tcase \"radar\":\n\t\t\theaderParts.push(valEl(\"c:radarStyle\", \"standard\"));\n\t\t\tbreak;\n\t\tcase \"pie\":\n\t\tcase \"doughnut\":\n\t\tcase \"bubble\":\n\t\t\theaderParts.push(valEl(\"c:varyColors\", 1));\n\t\t\tbreak;\n\t}\n\treturn `<${tag}>${headerParts.join(\"\")}`;\n}\nfunction chartTypeFooter(opts) {\n\tconst tag = opts.threeD ? CHART_TYPE_TAGS_3D[opts.type] : CHART_TYPE_TAGS[opts.type];\n\tif (NO_AXES_TYPES.has(opts.type)) return `</${tag}>`;\n\tconst axIds = [valEl(\"c:axId\", 10), valEl(\"c:axId\", 20)];\n\tif (opts.threeD || opts.type === \"surface\") axIds.push(valEl(\"c:axId\", 30));\n\treturn `${axIds.join(\"\")}</${tag}>`;\n}\nfunction stringifySeries(index, series, categories, chartType) {\n\tconst parts = [];\n\tparts.push(valEl(\"c:idx\", index));\n\tparts.push(valEl(\"c:order\", index));\n\tparts.push(`<c:tx>${stringifyStrRef([series.name])}</c:tx>`);\n\tparts.push(emptyEl(\"c:spPr\"));\n\tconst s = series;\n\tif (s.dataLabels) parts.push(stringifyDataLabels(s.dataLabels));\n\tif (s.trendlines) for (const tl of s.trendlines) parts.push(stringifyTrendline(tl));\n\tif (s.errorBars) parts.push(stringifyErrBars(s.errorBars));\n\tif (chartType === \"bubble\") {\n\t\tconst bs = series;\n\t\tparts.push(`<c:xVal>${stringifyNumRef(bs.xValues)}</c:xVal>`);\n\t\tparts.push(`<c:yVal>${stringifyNumRef(bs.yValues)}</c:yVal>`);\n\t\tparts.push(`<c:bubbleSize>${stringifyNumRef(bs.bubbleSize)}</c:bubbleSize>`);\n\t} else if (chartType === \"scatter\") {\n\t\tparts.push(`<c:xVal>${stringifyStrRef(categories)}</c:xVal>`);\n\t\tparts.push(`<c:yVal>${stringifyNumRef(s.values)}</c:yVal>`);\n\t} else {\n\t\tparts.push(`<c:cat>${stringifyStrRef(categories)}</c:cat>`);\n\t\tparts.push(`<c:val>${stringifyNumRef(s.values)}</c:val>`);\n\t}\n\treturn `<c:ser>${parts.join(\"\")}</c:ser>`;\n}\nfunction stringifyTitle(title) {\n\treturn `<c:title><c:tx><c:rich><a:bodyPr/><a:lstStyle/><a:p><a:r><a:t>${escapeXml(title)}</a:t></a:r></a:p></c:rich></c:tx><c:overlay val=\"0\"/></c:title>`;\n}\nfunction stringifyLegend() {\n\treturn `<c:legend><c:legendPos val=\"b\"/><c:layout/><c:overlay val=\"0\"/><c:spPr><a:noFill/><a:ln><a:noFill/></a:ln><a:effectLst/></c:spPr><c:txPr><a:bodyPr rot=\"0\" spcFirstLastPara=\"1\" vertOverflow=\"ellipsis\" vert=\"horz\" wrap=\"square\" anchor=\"ctr\" anchorCtr=\"1\"/><a:lstStyle/><a:p><a:pPr><a:defRPr/></a:pPr><a:endParaRPr lang=\"en-US\"/></a:p></c:txPr></c:legend>`;\n}\nfunction noFillSpPr() {\n\treturn `<c:spPr><a:noFill/><a:ln><a:noFill/></a:ln><a:effectLst/></c:spPr>`;\n}\nfunction chartTxPr() {\n\treturn `<c:txPr><a:bodyPr/><a:lstStyle/><a:p><a:pPr><a:defRPr/></a:pPr><a:endParaRPr lang=\"en-US\"/></a:p></c:txPr>`;\n}\nfunction stringifyAxes(chartType, threeD) {\n\tif (NO_AXES_TYPES.has(chartType)) return \"\";\n\tconst parts = [];\n\tif (chartType === \"scatter\" || chartType === \"bubble\") {\n\t\tparts.push(valAxXml(10, 20));\n\t\tparts.push(valAxXml(20, 10));\n\t} else if (chartType === \"stock\" || chartType === \"surface\") {\n\t\tparts.push(catAxXml(10, 20));\n\t\tparts.push(valAxXml(20, 10));\n\t\tif (chartType === \"surface\") parts.push(serAxXml(30, 10));\n\t} else {\n\t\tparts.push(catAxXml(10, 20));\n\t\tparts.push(valAxXml(20, 10));\n\t\tif (threeD) parts.push(catAxXml(30, 10));\n\t}\n\treturn parts.join(\"\");\n}\nfunction catAxXml(axId, crossAx) {\n\treturn `<c:catAx><c:axId ${attrVal(\"val\", axId)}/><c:scaling><c:orientation val=\"minMax\"/></c:scaling><c:delete val=\"0\"/><c:axPos val=\"b\"/><c:crossAx ${attrVal(\"val\", crossAx)}/><c:crosses val=\"autoZero\"/><c:auto val=\"1\"/><c:lblOffset val=\"100\"/><c:noMultiLvlLbl val=\"0\"/></c:catAx>`;\n}\nfunction valAxXml(axId, crossAx) {\n\treturn `<c:valAx><c:axId ${attrVal(\"val\", axId)}/><c:scaling><c:orientation val=\"minMax\"/></c:scaling><c:delete val=\"0\"/><c:axPos val=\"l\"/><c:numFmt formatCode=\"General\" sourceLinked=\"1\"/><c:spPr/><c:crossAx ${attrVal(\"val\", crossAx)}/><c:crosses val=\"autoZero\"/></c:valAx>`;\n}\nfunction serAxXml(axId, crossAx) {\n\treturn `<c:serAx><c:axId ${attrVal(\"val\", axId)}/><c:scaling><c:orientation val=\"minMax\"/></c:scaling><c:delete val=\"0\"/><c:axPos val=\"b\"/><c:numFmt formatCode=\"General\" sourceLinked=\"1\"/><c:spPr/><c:crossAx ${attrVal(\"val\", crossAx)}/><c:crosses val=\"autoZero\"/><c:tickLblSkip val=\"1\"/></c:serAx>`;\n}\nfunction readStrCache(el) {\n\tconst strRef = findChild(el, \"c:strRef\");\n\tif (!strRef) return [];\n\tconst strCache = findChild(strRef, \"c:strCache\");\n\tif (!strCache?.elements) return [];\n\tconst result = [];\n\tfor (const pt of strCache.elements) if (pt.name === \"c:pt\" && pt.elements) {\n\t\tconst v = pt.elements.find((c) => c.name === \"c:v\");\n\t\tif (v?.text !== void 0) result.push(String(v.text));\n\t}\n\treturn result;\n}\nfunction readNumCache(el) {\n\tconst numRef = findChild(el, \"c:numRef\");\n\tif (!numRef) return [];\n\tconst numCache = findChild(numRef, \"c:numCache\");\n\tif (!numCache?.elements) return [];\n\tconst result = [];\n\tfor (const pt of numCache.elements) if (pt.name === \"c:pt\" && pt.elements) {\n\t\tconst v = pt.elements.find((c) => c.name === \"c:v\");\n\t\tif (v?.text !== void 0) result.push(Number(v.text));\n\t}\n\treturn result;\n}\nfunction readSeriesName(serEl) {\n\tconst tx = findChild(serEl, \"c:tx\");\n\tif (!tx) return \"\";\n\treturn readStrCache(tx)[0] ?? \"\";\n}\nfunction readTitleText(titleEl) {\n\tconst tx = findChild(titleEl, \"c:tx\");\n\tif (!tx?.elements) return void 0;\n\tfor (const child of tx.elements) if (child.name === \"c:rich\" && child.elements) {\n\t\tfor (const sub of child.elements) if (sub.name === \"a:p\" && sub.elements) {\n\t\t\tfor (const r of sub.elements) if (r.name === \"a:r\" && r.elements) {\n\t\t\t\tfor (const t of r.elements) if (t.name === \"a:t\" && t.text !== void 0) return String(t.text);\n\t\t\t}\n\t\t}\n\t}\n}\nfunction readBoolAttr(el, childName) {\n\tconst child = findChild(el, childName);\n\tif (!child) return void 0;\n\tconst v = attr(child, \"val\");\n\tif (v === void 0) return true;\n\treturn v !== \"0\" && v !== \"false\";\n}\nfunction readValNum(el, childName) {\n\tconst child = findChild(el, childName);\n\tif (!child) return void 0;\n\tconst v = attr(child, \"val\");\n\treturn v !== void 0 ? Number(v) : void 0;\n}\nfunction readValStr(el, childName) {\n\tconst child = findChild(el, childName);\n\tif (!child) return void 0;\n\treturn attr(child, \"val\") ?? void 0;\n}\nfunction readNumLit(el, childName) {\n\tconst child = findChild(el, childName);\n\tif (!child) return void 0;\n\tconst numLit = findChild(child, \"c:numLit\");\n\tif (!numLit?.elements) return void 0;\n\tfor (const pt of numLit.elements) if (pt.name === \"c:pt\" && pt.elements) {\n\t\tconst v = pt.elements.find((c) => c.name === \"c:v\");\n\t\tif (v) {\n\t\t\tconst text = textOf(v);\n\t\t\tif (text) return Number(text);\n\t\t}\n\t}\n}\nfunction readTrendlines(serEl) {\n\tconst tlEls = children(serEl, \"c:trendline\");\n\tif (tlEls.length === 0) return void 0;\n\treturn tlEls.map((tl) => {\n\t\tconst opts = {};\n\t\tconst type = readValStr(tl, \"c:trendlineType\");\n\t\tif (type) opts.type = type;\n\t\tconst order = readValNum(tl, \"c:order\");\n\t\tif (order !== void 0) opts.order = order;\n\t\tconst period = readValNum(tl, \"c:period\");\n\t\tif (period !== void 0) opts.period = period;\n\t\tconst forward = readValNum(tl, \"c:forward\");\n\t\tif (forward !== void 0) opts.forward = forward;\n\t\tconst backward = readValNum(tl, \"c:backward\");\n\t\tif (backward !== void 0) opts.backward = backward;\n\t\tconst intercept = readValNum(tl, \"c:intercept\");\n\t\tif (intercept !== void 0) opts.intercept = intercept;\n\t\tconst dispRSqr = readBoolAttr(tl, \"c:dispRSqr\");\n\t\tif (dispRSqr !== void 0) opts.dispRSqr = dispRSqr;\n\t\tconst dispEq = readBoolAttr(tl, \"c:dispEq\");\n\t\tif (dispEq !== void 0) opts.dispEq = dispEq;\n\t\tconst nameText = textOf(findChild(tl, \"c:name\"));\n\t\tif (nameText) opts.name = nameText;\n\t\tconst labelFmt = attr(findChild(findChild(tl, \"c:trendlineLbl\"), \"c:numFmt\"), \"formatCode\");\n\t\tif (labelFmt) opts.label = { numberFormat: labelFmt };\n\t\treturn opts;\n\t});\n}\nfunction readErrBars(serEl) {\n\tconst ebEl = findChild(serEl, \"c:errBars\");\n\tif (!ebEl) return void 0;\n\tconst opts = {};\n\tconst direction = readValStr(ebEl, \"c:errDir\");\n\tif (direction) opts.direction = direction;\n\tconst barType = readValStr(ebEl, \"c:errBarType\");\n\tif (barType) opts.barType = barType;\n\tconst valueType = readValStr(ebEl, \"c:errValType\");\n\tif (valueType) opts.valueType = valueType;\n\tconst noEndCap = readBoolAttr(ebEl, \"c:noEndCap\");\n\tif (noEndCap !== void 0) opts.noEndCap = noEndCap;\n\tconst plusValue = readNumLit(ebEl, \"c:plus\");\n\tif (plusValue !== void 0) opts.plusValue = plusValue;\n\tconst minusValue = readNumLit(ebEl, \"c:minus\");\n\tif (minusValue !== void 0) opts.minusValue = minusValue;\n\tconst value = readValNum(ebEl, \"c:val\");\n\tif (value !== void 0) opts.value = value;\n\treturn opts;\n}\nfunction readDataLabels(serEl) {\n\tconst dlEl = findChild(serEl, \"c:dLbls\");\n\tif (!dlEl) return void 0;\n\tconst opts = {};\n\tconst position = readValStr(dlEl, \"c:dLblPos\");\n\tif (position) opts.position = position;\n\tconst showLegendKey = readBoolAttr(dlEl, \"c:showLegendKey\");\n\tif (showLegendKey !== void 0) opts.showLegendKey = showLegendKey;\n\tconst showVal = readBoolAttr(dlEl, \"c:showVal\");\n\tif (showVal !== void 0) opts.showVal = showVal;\n\tconst showCatName = readBoolAttr(dlEl, \"c:showCatName\");\n\tif (showCatName !== void 0) opts.showCatName = showCatName;\n\tconst showSerName = readBoolAttr(dlEl, \"c:showSerName\");\n\tif (showSerName !== void 0) opts.showSerName = showSerName;\n\tconst showPercent = readBoolAttr(dlEl, \"c:showPercent\");\n\tif (showPercent !== void 0) opts.showPercent = showPercent;\n\tconst showBubbleSize = readBoolAttr(dlEl, \"c:showBubbleSize\");\n\tif (showBubbleSize !== void 0) opts.showBubbleSize = showBubbleSize;\n\tconst showLeaderLines = readBoolAttr(dlEl, \"c:showLeaderLines\");\n\tif (showLeaderLines !== void 0) opts.showLeaderLines = showLeaderLines;\n\tconst sepText = textOf(findChild(dlEl, \"c:separator\"));\n\tif (sepText) opts.separator = sepText;\n\tconst lblEls = children(dlEl, \"c:dLbl\");\n\tif (lblEls.length > 0) opts.labels = lblEls.map((el) => {\n\t\tconst result = { index: readValNum(el, \"c:idx\") ?? 0 };\n\t\tif (findChild(el, \"c:delete\")) result.delete = true;\n\t\tconst numFmt = attr(findChild(el, \"c:numFmt\"), \"formatCode\");\n\t\tif (numFmt) result.numberFormat = numFmt;\n\t\tconst pos = readValStr(el, \"c:dLblPos\");\n\t\tif (pos) result.position = pos;\n\t\treturn result;\n\t});\n\tif (findChild(dlEl, \"c:leaderLines\")) opts.leaderLines = true;\n\treturn opts;\n}\nfunction readView3D(chartEl) {\n\tconst v3d = findChild(chartEl, \"c:view3D\");\n\tif (!v3d) return void 0;\n\tconst opts = {};\n\tconst rotX = readValNum(v3d, \"c:rotX\");\n\tif (rotX !== void 0) opts.rotX = rotX;\n\tconst hPercent = readValNum(v3d, \"c:hPercent\");\n\tif (hPercent !== void 0) opts.hPercent = hPercent;\n\tconst rotY = readValNum(v3d, \"c:rotY\");\n\tif (rotY !== void 0) opts.rotY = rotY;\n\tconst depthPercent = readValNum(v3d, \"c:depthPercent\");\n\tif (depthPercent !== void 0) opts.depthPercent = depthPercent;\n\tconst rAngAx = readBoolAttr(v3d, \"c:rAngAx\");\n\tif (rAngAx !== void 0) opts.rAngAx = rAngAx;\n\tconst perspective = readValNum(v3d, \"c:perspective\");\n\tif (perspective !== void 0) opts.perspective = perspective;\n\treturn opts;\n}\nconst chartSpaceDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\tconst parts = [];\n\t\tparts.push(`<c:chartSpace xmlns:c=\"http://schemas.openxmlformats.org/drawingml/2006/chart\" xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\">`);\n\t\tparts.push(valEl(\"c:date1904\", 0));\n\t\tparts.push(valEl(\"c:lang\", \"en-US\"));\n\t\tparts.push(valEl(\"c:roundedCorners\", 0));\n\t\tif (opts.style !== void 0) parts.push(valEl(\"c:style\", opts.style));\n\t\tparts.push(\"<c:chart>\");\n\t\tif (opts.title) parts.push(stringifyTitle(opts.title));\n\t\tparts.push(valEl(\"c:autoTitleDeleted\", 0));\n\t\tif (opts.view3D) parts.push(stringifyView3D(opts.view3D));\n\t\tparts.push(\"<c:plotArea><c:layout/>\");\n\t\tparts.push(chartTypeHeader(opts));\n\t\tconst categories = opts.categories ?? [];\n\t\tfor (const [i, series] of opts.series.entries()) parts.push(stringifySeries(i, series, categories, opts.type));\n\t\tparts.push(chartTypeFooter(opts));\n\t\tparts.push(stringifyAxes(opts.type, opts.threeD));\n\t\tparts.push(\"</c:plotArea>\");\n\t\tif (opts.showLegend !== false) parts.push(stringifyLegend());\n\t\tparts.push(\"</c:chart>\");\n\t\tparts.push(noFillSpPr());\n\t\tparts.push(chartTxPr());\n\t\tparts.push(\"</c:chartSpace>\");\n\t\treturn parts.join(\"\");\n\t},\n\tparse(el, _ctx) {\n\t\tconst result = {};\n\t\tconst styleEl = findChild(el, \"c:style\");\n\t\tif (styleEl?.attributes?.[\"val\"] !== void 0) result.style = Number(styleEl.attributes[\"val\"]);\n\t\tconst chart = findChild(el, \"c:chart\");\n\t\tif (!chart) return result;\n\t\tconst titleEl = findChild(chart, \"c:title\");\n\t\tif (titleEl) {\n\t\t\tconst title = readTitleText(titleEl);\n\t\t\tif (title !== void 0) result.title = title;\n\t\t}\n\t\tconst view3D = readView3D(chart);\n\t\tif (view3D) result.view3D = view3D;\n\t\tconst plotArea = findChild(chart, \"c:plotArea\");\n\t\tif (plotArea?.elements) {\n\t\t\tlet detectedType;\n\t\t\tlet threeD = false;\n\t\t\tlet chartTypeEl;\n\t\t\tfor (const child of plotArea.elements) {\n\t\t\t\tif (!child.name) continue;\n\t\t\t\tconst mapping = TAG_TO_CHART_TYPE[child.name];\n\t\t\t\tif (mapping) {\n\t\t\t\t\tdetectedType = mapping.type;\n\t\t\t\t\tthreeD = mapping.threeD ?? false;\n\t\t\t\t\tchartTypeEl = child;\n\t\t\t\t\tif (child.name === \"c:barChart\" || child.name === \"c:bar3DChart\") {\n\t\t\t\t\t\tconst barDir = findChild(child, \"c:barDir\");\n\t\t\t\t\t\tconst barDirVal = barDir ? attr(barDir, \"val\") : void 0;\n\t\t\t\t\t\tif (barDirVal === \"bar\") detectedType = \"bar\";\n\t\t\t\t\t\telse if (barDirVal === \"col\") detectedType = \"column\";\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (detectedType) {\n\t\t\t\tresult.type = detectedType;\n\t\t\t\tif (threeD) result.threeD = true;\n\t\t\t}\n\t\t\tconst seriesEls = chartTypeEl ? children(chartTypeEl, \"c:ser\") : [];\n\t\t\tif (seriesEls.length > 0) if (detectedType === \"bubble\") {\n\t\t\t\tconst bubbleSeries = [];\n\t\t\t\tfor (const serEl of seriesEls) {\n\t\t\t\t\tconst name = readSeriesName(serEl);\n\t\t\t\t\tconst xVal = findChild(serEl, \"c:xVal\");\n\t\t\t\t\tconst yVal = findChild(serEl, \"c:yVal\");\n\t\t\t\t\tconst bubbleSize = findChild(serEl, \"c:bubbleSize\");\n\t\t\t\t\tbubbleSeries.push({\n\t\t\t\t\t\tname,\n\t\t\t\t\t\txValues: xVal ? readNumCache(xVal) : [],\n\t\t\t\t\t\tyValues: yVal ? readNumCache(yVal) : [],\n\t\t\t\t\t\tbubbleSize: bubbleSize ? readNumCache(bubbleSize) : []\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tresult.series = bubbleSeries;\n\t\t\t} else {\n\t\t\t\tconst chartSeries = [];\n\t\t\t\tlet categories;\n\t\t\t\tfor (const serEl of seriesEls) {\n\t\t\t\t\tconst name = readSeriesName(serEl);\n\t\t\t\t\tif (!categories) {\n\t\t\t\t\t\tconst catEl = findChild(serEl, \"c:cat\") ?? findChild(serEl, \"c:xVal\");\n\t\t\t\t\t\tif (catEl) categories = readStrCache(catEl);\n\t\t\t\t\t}\n\t\t\t\t\tconst valEl = findChild(serEl, \"c:val\") ?? findChild(serEl, \"c:yVal\");\n\t\t\t\t\tconst ser = {\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tvalues: valEl ? readNumCache(valEl) : []\n\t\t\t\t\t};\n\t\t\t\t\tconst trendlines = readTrendlines(serEl);\n\t\t\t\t\tif (trendlines) ser.trendlines = trendlines;\n\t\t\t\t\tconst errorBars = readErrBars(serEl);\n\t\t\t\t\tif (errorBars) ser.errorBars = errorBars;\n\t\t\t\t\tconst dataLabels = readDataLabels(serEl);\n\t\t\t\t\tif (dataLabels) ser.dataLabels = dataLabels;\n\t\t\t\t\tchartSeries.push(ser);\n\t\t\t\t}\n\t\t\t\tresult.series = chartSeries;\n\t\t\t\tif (categories?.length) result.categories = categories;\n\t\t\t}\n\t\t}\n\t\tif (!findChild(chart, \"c:legend\")) result.showLegend = false;\n\t\treturn result;\n\t}\n};\n//#endregion\n//#region src/chart/types.ts\nconst TrendlineType = {\n\tEXP: \"exp\",\n\tLINEAR: \"linear\",\n\tLOG: \"log\",\n\tMOVING_AVG: \"movingAvg\",\n\tPOLY: \"poly\",\n\tPOWER: \"power\"\n};\nconst ErrorBarDirection = {\n\tBOTH: \"both\",\n\tX: \"x\",\n\tY: \"y\"\n};\nconst ErrorBarType = {\n\tBOTH: \"both\",\n\tMINUS: \"minus\",\n\tPLUS: \"plus\"\n};\nconst ErrorValueType = {\n\tCUST: \"cust\",\n\tFIXED: \"fixedVal\",\n\tPERCENTAGE: \"percentage\",\n\tSTD_DEV: \"stdDev\",\n\tSTD_ERR: \"stdErr\"\n};\nconst DataLabelPosition = {\n\tBEST_FIT: \"bestFit\",\n\tB: \"b\",\n\tCTRL: \"ctr\",\n\tIN_BASE: \"inBase\",\n\tIN_END: \"inEnd\",\n\tL: \"l\",\n\tOUT_END: \"outEnd\",\n\tR: \"r\",\n\tT: \"t\"\n};\nconst TimeUnit = {\n\tDAYS: \"days\",\n\tMONTHS: \"months\",\n\tYEARS: \"years\"\n};\n//#endregion\nexport { TimeUnit as a, ChartCollection as c, ErrorValueType as i, ErrorBarDirection as n, TrendlineType as o, ErrorBarType as r, chartSpaceDesc as s, DataLabelPosition as t };\n\n//# sourceMappingURL=chart-DIGJna_6.mjs.map","import { parse } from \"@office-open/xml\";\n//#region src/descriptor/runtime.ts\n/**\n* Serialize an Options object to an XML string using its descriptor.\n* Returns `undefined` when an optional element should be omitted.\n*/\nfunction stringify$1(desc, value, ctx) {\n\treturn desc.stringify(value, ctx);\n}\n/** Parse an XML Element into an Options object using its descriptor. */\nfunction parse$1(desc, el, ctx) {\n\treturn desc.parse(el, ctx);\n}\n//#endregion\n//#region src/descriptor/field-consistency.ts\n/**\n* Field-consistency helpers for descriptor round-trip auditing.\n*\n* Pairs with {@link DescriptorFieldSpec}: {@link diffTagSets} flags the static\n* asymmetries between the interface / write / parse field sets (F1/F2/F3/F5),\n* and {@link roundTripFields} runs an actual stringify→parse cycle and reports\n* which fields were lost, gained, or mutated (F4).\n*\n* @module\n*/\n/** Diff the interface / write / parse field sets declared on a spec. */\nfunction diffTagSets(spec) {\n\tconst interfaceSet = new Set(spec.interfaceFields);\n\tconst writeSet = new Set(spec.writeFields);\n\tconst parseSet = new Set(spec.parseFields);\n\treturn {\n\t\tf1WriteLoss: spec.interfaceFields.filter((f) => !writeSet.has(f)),\n\t\tf2WriteOnly: spec.writeFields.filter((f) => !interfaceSet.has(f)),\n\t\tf3ParseLoss: spec.writeFields.filter((f) => !parseSet.has(f)),\n\t\tf5ParseOnly: spec.parseFields.filter((f) => !writeSet.has(f))\n\t};\n}\n/**\n* Run a stringify→parse cycle over a sample and diff the result field set.\n* Returns the F4 round-trip drift. The caller supplies the descriptor's own\n* stringify/parse (a `CustomDescriptor` pair or a function pair).\n*/\nfunction roundTripFields(stringifyFn, parseFn, sample, writeCtx, readCtx) {\n\tconst xml = stringifyFn(sample, writeCtx);\n\tif (xml === void 0) throw new Error(\"roundTripFields: stringify returned undefined for the sample\");\n\tconst root = parse(xml).elements?.find((e) => e.type === \"element\");\n\tif (!root) throw new Error(\"roundTripFields: stringify produced no root element\");\n\treturn diffObjects(sample, parseFn(root, readCtx));\n}\n/**\n* Verify the child element order of a stringified container against an XSD\n* sequence — the F6 check. Namespace prefixes are normalized, so `expected`\n* entries may be qualified (`w:pStyle`) or local (`pStyle`); both match a\n* `<w:pStyle>` child. Elements absent from `expected` are flagged \"unexpected\";\n* a child whose expected position precedes the previous child's is\n* \"out-of-order\".\n*/\nfunction checkOrder(xml, expected) {\n\tconst root = parse(xml).elements?.find((e) => e.type === \"element\");\n\tif (!root) return [];\n\tconst expectedLocal = expected.map(localName);\n\tconst violations = [];\n\tlet lastIdx = -1;\n\t(root.elements ?? []).filter((e) => e.type === \"element\").forEach((child, i) => {\n\t\tconst tag = localName(child.name);\n\t\tconst idx = expectedLocal.indexOf(tag);\n\t\tif (idx === -1) {\n\t\t\tviolations.push({\n\t\t\t\tindex: i,\n\t\t\t\ttag,\n\t\t\t\treason: \"unexpected\"\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tif (idx < lastIdx) violations.push({\n\t\t\tindex: i,\n\t\t\ttag,\n\t\t\treason: \"out-of-order\"\n\t\t});\n\t\tlastIdx = idx;\n\t});\n\treturn violations;\n}\nfunction localName(name) {\n\tif (name === void 0) return \"\";\n\tconst colon = name.lastIndexOf(\":\");\n\treturn colon === -1 ? name : name.slice(colon + 1);\n}\nfunction diffObjects(sample, result) {\n\tconst sampleKeys = enumerableKeys(sample);\n\tconst resultKeys = enumerableKeys(result);\n\treturn {\n\t\tlost: sampleKeys.filter((k) => !(k in result)),\n\t\tgained: resultKeys.filter((k) => !(k in sample)),\n\t\tmutated: sampleKeys.filter((k) => k in result && !deepEqual(fieldValue(sample, k), fieldValue(result, k)))\n\t};\n}\nfunction enumerableKeys(value) {\n\treturn Object.keys(value).filter((k) => fieldValue(value, k) !== void 0);\n}\nfunction fieldValue(value, key) {\n\treturn value[key];\n}\n/** Structural deep equality (objects, arrays, primitives); no special-case classes. */\nfunction deepEqual(a, b) {\n\tif (a === b) return true;\n\tif (typeof a !== typeof b) return false;\n\tif (a === null || b === null) return a === b;\n\tif (typeof a !== \"object\") return a === b;\n\tconst aArr = Array.isArray(a);\n\tconst bArr = Array.isArray(b);\n\tif (aArr || bArr) {\n\t\tif (!aArr || !bArr) return false;\n\t\tconst aa = a;\n\t\tconst bb = b;\n\t\tif (aa.length !== bb.length) return false;\n\t\treturn aa.every((v, i) => deepEqual(v, bb[i]));\n\t}\n\tconst ao = a;\n\tconst bo = b;\n\tconst keys = new Set([...Object.keys(ao), ...Object.keys(bo)]);\n\tfor (const k of keys) if (!deepEqual(ao[k], bo[k])) return false;\n\treturn true;\n}\n//#endregion\n//#region src/descriptor/field-spec.ts\n/**\n* Curated high-value targets — each maps to a known historical drift.\n* `settings` is intentionally absent: its round-trip is rawXml-based (byte\n* passthrough), so field-level diff would mislabel every field as F2.\n*/\nconst FIELD_SPECS = [{\n\tid: \"core-properties\",\n\toptionsInterface: \"CorePropertiesOptions\",\n\tinterfaceFields: [\n\t\t\"title\",\n\t\t\"subject\",\n\t\t\"creator\",\n\t\t\"keywords\",\n\t\t\"description\",\n\t\t\"lastModifiedBy\",\n\t\t\"revision\",\n\t\t\"lastPrinted\",\n\t\t\"created\",\n\t\t\"modified\"\n\t],\n\twriteFields: [\n\t\t\"title\",\n\t\t\"subject\",\n\t\t\"creator\",\n\t\t\"keywords\",\n\t\t\"description\",\n\t\t\"lastModifiedBy\",\n\t\t\"revision\",\n\t\t\"lastPrinted\",\n\t\t\"created\",\n\t\t\"modified\"\n\t],\n\tparseFields: [\n\t\t\"title\",\n\t\t\"subject\",\n\t\t\"creator\",\n\t\t\"keywords\",\n\t\t\"description\",\n\t\t\"lastModifiedBy\",\n\t\t\"revision\",\n\t\t\"lastPrinted\",\n\t\t\"created\",\n\t\t\"modified\"\n\t],\n\tsampleOptions: {\n\t\ttitle: \"T\",\n\t\tsubject: \"S\",\n\t\tcreator: \"C\",\n\t\tkeywords: \"k1,k2\",\n\t\tdescription: \"D\",\n\t\tlastModifiedBy: \"LMB\",\n\t\trevision: 3,\n\t\tlastPrinted: \"2024-01-02T03:04:05Z\",\n\t\tcreated: \"2018-05-11T07:02:00Z\",\n\t\tmodified: \"2026-04-10T02:02:36Z\"\n\t},\n\tnotes: \"created/modified round-tripped verbatim from dcterms:created/modified.\"\n}, {\n\tid: \"paragraph-properties\",\n\toptionsInterface: \"ParagraphPropertiesOptions\",\n\tinterfaceFields: [\n\t\t\"heading\",\n\t\t\"style\",\n\t\t\"bullet\",\n\t\t\"run\",\n\t\t\"border\",\n\t\t\"shading\",\n\t\t\"numbering\",\n\t\t\"alignment\",\n\t\t\"bidirectional\",\n\t\t\"pageBreakBefore\",\n\t\t\"tabStops\",\n\t\t\"widowControl\",\n\t\t\"contextualSpacing\",\n\t\t\"indent\",\n\t\t\"spacing\",\n\t\t\"keepNext\",\n\t\t\"keepLines\",\n\t\t\"frame\",\n\t\t\"suppressLineNumbers\",\n\t\t\"wordWrap\",\n\t\t\"overflowPunctuation\",\n\t\t\"autoSpaceEastAsianText\",\n\t\t\"suppressOverlap\",\n\t\t\"suppressAutoHyphens\",\n\t\t\"adjustRightInd\",\n\t\t\"snapToGrid\",\n\t\t\"mirrorIndents\",\n\t\t\"kinsoku\",\n\t\t\"topLinePunct\",\n\t\t\"autoSpaceDE\",\n\t\t\"textAlignment\",\n\t\t\"textboxTightWrap\",\n\t\t\"textDirection\",\n\t\t\"outlineLevel\",\n\t\t\"divId\",\n\t\t\"cnfStyle\",\n\t\t\"revision\"\n\t],\n\twriteFields: [\n\t\t\"heading\",\n\t\t\"style\",\n\t\t\"bullet\",\n\t\t\"run\",\n\t\t\"border\",\n\t\t\"shading\",\n\t\t\"numbering\",\n\t\t\"alignment\",\n\t\t\"bidirectional\",\n\t\t\"pageBreakBefore\",\n\t\t\"tabStops\",\n\t\t\"widowControl\",\n\t\t\"contextualSpacing\",\n\t\t\"indent\",\n\t\t\"spacing\",\n\t\t\"keepNext\",\n\t\t\"keepLines\",\n\t\t\"frame\",\n\t\t\"suppressLineNumbers\",\n\t\t\"wordWrap\",\n\t\t\"overflowPunctuation\",\n\t\t\"autoSpaceEastAsianText\",\n\t\t\"suppressOverlap\",\n\t\t\"suppressAutoHyphens\",\n\t\t\"adjustRightInd\",\n\t\t\"snapToGrid\",\n\t\t\"mirrorIndents\",\n\t\t\"kinsoku\",\n\t\t\"topLinePunct\",\n\t\t\"autoSpaceDE\",\n\t\t\"textAlignment\",\n\t\t\"textboxTightWrap\",\n\t\t\"textDirection\",\n\t\t\"outlineLevel\",\n\t\t\"divId\",\n\t\t\"cnfStyle\",\n\t\t\"revision\"\n\t],\n\tparseFields: [\n\t\t\"heading\",\n\t\t\"style\",\n\t\t\"bullet\",\n\t\t\"run\",\n\t\t\"border\",\n\t\t\"shading\",\n\t\t\"numbering\",\n\t\t\"alignment\",\n\t\t\"bidirectional\",\n\t\t\"pageBreakBefore\",\n\t\t\"tabStops\",\n\t\t\"widowControl\",\n\t\t\"contextualSpacing\",\n\t\t\"indent\",\n\t\t\"spacing\",\n\t\t\"keepNext\",\n\t\t\"keepLines\",\n\t\t\"frame\",\n\t\t\"suppressLineNumbers\",\n\t\t\"wordWrap\",\n\t\t\"overflowPunctuation\",\n\t\t\"autoSpaceEastAsianText\",\n\t\t\"suppressOverlap\",\n\t\t\"suppressAutoHyphens\",\n\t\t\"adjustRightInd\",\n\t\t\"snapToGrid\",\n\t\t\"mirrorIndents\",\n\t\t\"kinsoku\",\n\t\t\"topLinePunct\",\n\t\t\"autoSpaceDE\",\n\t\t\"textAlignment\",\n\t\t\"outlineLevel\",\n\t\t\"revision\"\n\t],\n\torder: [\n\t\t\"pStyle\",\n\t\t\"keepNext\",\n\t\t\"keepLines\",\n\t\t\"pageBreakBefore\",\n\t\t\"framePr\",\n\t\t\"widowControl\",\n\t\t\"numPr\",\n\t\t\"suppressLineNumbers\",\n\t\t\"pBdr\",\n\t\t\"shd\",\n\t\t\"tabs\",\n\t\t\"suppressAutoHyphens\",\n\t\t\"kinsoku\",\n\t\t\"wordWrap\",\n\t\t\"overflowPunct\",\n\t\t\"topLinePunct\",\n\t\t\"autoSpaceDE\",\n\t\t\"autoSpaceDN\",\n\t\t\"bidi\",\n\t\t\"adjustRightInd\",\n\t\t\"snapToGrid\",\n\t\t\"spacing\",\n\t\t\"ind\",\n\t\t\"contextualSpacing\",\n\t\t\"mirrorIndents\",\n\t\t\"suppressOverlap\",\n\t\t\"jc\",\n\t\t\"textDirection\",\n\t\t\"textAlignment\",\n\t\t\"textboxTightWrap\",\n\t\t\"outlineLvl\",\n\t\t\"divId\",\n\t\t\"cnfStyle\",\n\t\t\"rPr\",\n\t\t\"pPrChange\"\n\t],\n\tsampleOptions: {\n\t\theading: \"Heading1\",\n\t\talignment: \"center\",\n\t\tspacing: {\n\t\t\tbefore: 240,\n\t\t\tafter: 120,\n\t\t\tline: 278,\n\t\t\tlineRule: \"auto\"\n\t\t},\n\t\tindent: {\n\t\t\tleft: 720,\n\t\t\tfirstLine: 360\n\t\t},\n\t\tkeepNext: true,\n\t\tkeepLines: true,\n\t\twidowControl: true,\n\t\tcontextualSpacing: true,\n\t\tborder: { bottom: {\n\t\t\tstyle: \"single\",\n\t\t\tcolor: \"FF0000\",\n\t\t\tsize: 6,\n\t\t\tspace: 1\n\t\t} },\n\t\tshading: {\n\t\t\tfill: \"FFFF00\",\n\t\t\ttype: \"clear\"\n\t\t},\n\t\ttabStops: [{\n\t\t\tposition: 720,\n\t\t\ttype: \"left\"\n\t\t}],\n\t\tnumbering: {\n\t\t\treference: \"list_1\",\n\t\t\tlevel: 0\n\t\t},\n\t\toutlineLevel: 1,\n\t\ttextAlignment: \"center\"\n\t},\n\texcludeFields: [\n\t\t\"thematicBreak\",\n\t\t\"rightTabStop\",\n\t\t\"leftTabStop\",\n\t\t\"includeIfEmpty\"\n\t],\n\tnotes: \"F3 parse-loss: textDirection, textboxTightWrap, divId, cnfStyle written but never parsed. Input-side sugar excluded from the field sets: thematicBreak (→pBdr/border), rightTabStop/leftTabStop (→tabs/tabStops), includeIfEmpty (control flag) — these map field→XML but XML→a different field, breaking the 1:1 round-trip assumption.\"\n}];\nfunction findFieldSpec(id) {\n\treturn FIELD_SPECS.find((s) => s.id === id);\n}\n//#endregion\nexport { roundTripFields as a, diffTagSets as i, findFieldSpec as n, parse$1 as o, checkOrder as r, stringify$1 as s, FIELD_SPECS as t };\n\n//# sourceMappingURL=descriptor-BjNkn5jo.mjs.map","import { C as xsdLineEndSize, D as xsdPenAlignment, E as xsdPattern, L as uniqueId, O as xsdPresetShadow, S as xsdLineCap, T as xsdPathFillMode, V as toUint8Array, b as xsdCompoundLine, k as xsdRectAlignment, l as convertToEmu, w as xsdMaterialType, x as xsdEffectContainer, y as xsdBlendMode } from \"./converters-C_Y2QX1w.mjs\";\nimport { o as parse$1, s as stringify$1 } from \"./descriptor-BjNkn5jo.mjs\";\nimport { attr, attrMeasure, attrNum, element, escapeXml, findChild, stringify } from \"@office-open/xml\";\n//#region src/drawingml/color/color-transform.ts\n/**\n* Creates color transform child elements as XML strings.\n*\n* These elements modify the parent color according to OOXML color transform rules.\n* Multiple transforms can be applied in sequence.\n*\n* @example\n* ```typescript\n* // Lighten accent1 by 40%\n* createColorTransforms({ tint: 40000 });\n* // Semi-transparent red with 50% alpha\n* createColorTransforms({ alpha: 50000 });\n* ```\n*/\nconst createColorTransforms = (options) => {\n\tconst t = [];\n\tif (options.tint !== void 0) t.push(`<a:tint val=\"${options.tint}\"/>`);\n\tif (options.shade !== void 0) t.push(`<a:shade val=\"${options.shade}\"/>`);\n\tif (options.comp) t.push(`<a:comp/>`);\n\tif (options.inv) t.push(`<a:inv/>`);\n\tif (options.gray) t.push(`<a:gray/>`);\n\tif (options.alpha !== void 0) t.push(`<a:alpha val=\"${options.alpha}\"/>`);\n\tif (options.alphaOff !== void 0) t.push(`<a:alphaOff val=\"${options.alphaOff}\"/>`);\n\tif (options.alphaMod !== void 0) t.push(`<a:alphaMod val=\"${options.alphaMod}\"/>`);\n\tif (options.hue !== void 0) t.push(`<a:hue val=\"${options.hue}\"/>`);\n\tif (options.hueOff !== void 0) t.push(`<a:hueOff val=\"${options.hueOff}\"/>`);\n\tif (options.hueMod !== void 0) t.push(`<a:hueMod val=\"${options.hueMod}\"/>`);\n\tif (options.sat !== void 0) t.push(`<a:sat val=\"${options.sat}\"/>`);\n\tif (options.satOff !== void 0) t.push(`<a:satOff val=\"${options.satOff}\"/>`);\n\tif (options.satMod !== void 0) t.push(`<a:satMod val=\"${options.satMod}\"/>`);\n\tif (options.lum !== void 0) t.push(`<a:lum val=\"${options.lum}\"/>`);\n\tif (options.lumOff !== void 0) t.push(`<a:lumOff val=\"${options.lumOff}\"/>`);\n\tif (options.lumMod !== void 0) t.push(`<a:lumMod val=\"${options.lumMod}\"/>`);\n\tif (options.red !== void 0) t.push(`<a:red val=\"${options.red}\"/>`);\n\tif (options.redOff !== void 0) t.push(`<a:redOff val=\"${options.redOff}\"/>`);\n\tif (options.redMod !== void 0) t.push(`<a:redMod val=\"${options.redMod}\"/>`);\n\tif (options.green !== void 0) t.push(`<a:green val=\"${options.green}\"/>`);\n\tif (options.greenOff !== void 0) t.push(`<a:greenOff val=\"${options.greenOff}\"/>`);\n\tif (options.greenMod !== void 0) t.push(`<a:greenMod val=\"${options.greenMod}\"/>`);\n\tif (options.blue !== void 0) t.push(`<a:blue val=\"${options.blue}\"/>`);\n\tif (options.blueOff !== void 0) t.push(`<a:blueOff val=\"${options.blueOff}\"/>`);\n\tif (options.blueMod !== void 0) t.push(`<a:blueMod val=\"${options.blueMod}\"/>`);\n\tif (options.gamma) t.push(`<a:gamma/>`);\n\tif (options.invGamma) t.push(`<a:invGamma/>`);\n\treturn t;\n};\n//#endregion\n//#region src/drawingml/color/hsl-color.ts\n/**\n* HSL color element for DrawingML.\n*\n* This module provides HSL (Hue, Saturation, Luminance) color support.\n*\n* Reference: ISO/IEC 29500-4, dml-main.xsd, CT_HslColor\n*\n* @module\n*/\n/**\n* Creates an HSL color element as an XML string.\n*\n* Specifies a color using Hue, Saturation, and Luminance values.\n*\n* ## XSD Schema\n* ```xml\n* <xsd:complexType name=\"CT_HslColor\">\n* <xsd:sequence>\n* <xsd:group ref=\"EG_ColorTransform\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n* </xsd:sequence>\n* <xsd:attribute name=\"hue\" type=\"ST_PositiveFixedAngle\" use=\"required\"/>\n* <xsd:attribute name=\"sat\" type=\"ST_Percentage\" use=\"required\"/>\n* <xsd:attribute name=\"lum\" type=\"ST_Percentage\" use=\"required\"/>\n* </xsd:complexType>\n* ```\n*/\nconst createHslColor = (options) => {\n\tconst transforms = options.transforms ? createColorTransforms(options.transforms) : [];\n\treturn element(\"a:hslClr\", {\n\t\thue: options.hue,\n\t\tsat: options.saturation,\n\t\tlum: options.luminance\n\t}, transforms);\n};\n//#endregion\n//#region src/drawingml/color/preset-color.ts\n/**\n* Preset color element for DrawingML.\n*\n* This module provides named preset colors (CSS named colors).\n*\n* Reference: ISO/IEC 29500-4, dml-main.xsd, CT_PresetColor / ST_PresetColorVal\n*\n* @module\n*/\n/**\n* Preset color values (CSS named colors).\n*\n* ## XSD Schema\n* ```xml\n* <xsd:simpleType name=\"ST_PresetColorVal\">\n* <xsd:restriction base=\"xsd:token\">\n* <xsd:enumeration value=\"aliceBlue\"/>\n* ...\n* <xsd:enumeration value=\"yellowGreen\"/>\n* </xsd:restriction>\n* </xsd:simpleType>\n* ```\n*/\nconst PresetColor = {\n\tALICE_BLUE: \"aliceBlue\",\n\tANTIQUE_WHITE: \"antiqueWhite\",\n\tAQUA: \"aqua\",\n\tAQUAMARINE: \"aquamarine\",\n\tAZURE: \"azure\",\n\tBEIGE: \"beige\",\n\tBISQUE: \"bisque\",\n\tBLACK: \"black\",\n\tBLANCHED_ALMOND: \"blanchedAlmond\",\n\tBLUE: \"blue\",\n\tBLUE_VIOLET: \"blueViolet\",\n\tBROWN: \"brown\",\n\tBURLY_WOOD: \"burlyWood\",\n\tCADET_BLUE: \"cadetBlue\",\n\tCHARTREUSE: \"chartreuse\",\n\tCHOCOLATE: \"chocolate\",\n\tCORAL: \"coral\",\n\tCORNFLOWER_BLUE: \"cornflowerBlue\",\n\tCORNSILK: \"cornsilk\",\n\tCRIMSON: \"crimson\",\n\tCYAN: \"cyan\",\n\tDARK_BLUE: \"darkBlue\",\n\tDARK_CYAN: \"darkCyan\",\n\tDARK_GOLDENROD: \"darkGoldenrod\",\n\tDARK_GRAY: \"darkGray\",\n\tDARK_GREY: \"darkGrey\",\n\tDARK_GREEN: \"darkGreen\",\n\tDARK_KHAKI: \"darkKhaki\",\n\tDARK_MAGENTA: \"darkMagenta\",\n\tDARK_OLIVE_GREEN: \"darkOliveGreen\",\n\tDARK_ORANGE: \"darkOrange\",\n\tDARK_ORCHID: \"darkOrchid\",\n\tDARK_RED: \"darkRed\",\n\tDARK_SALMON: \"darkSalmon\",\n\tDARK_SEA_GREEN: \"darkSeaGreen\",\n\tDARK_SLATE_BLUE: \"darkSlateBlue\",\n\tDARK_SLATE_GRAY: \"darkSlateGray\",\n\tDARK_SLATE_GREY: \"darkSlateGrey\",\n\tDARK_TURQUOISE: \"darkTurquoise\",\n\tDARK_VIOLET: \"darkViolet\",\n\tDEEP_PINK: \"deepPink\",\n\tDEEP_SKY_BLUE: \"deepSkyBlue\",\n\tDIM_GRAY: \"dimGray\",\n\tDIM_GREY: \"dimGrey\",\n\tDODGER_BLUE: \"dodgerBlue\",\n\tFIREBRICK: \"firebrick\",\n\tFLORAL_WHITE: \"floralWhite\",\n\tFOREST_GREEN: \"forestGreen\",\n\tFUCHSIA: \"fuchsia\",\n\tGAINSBORO: \"gainsboro\",\n\tGHOST_WHITE: \"ghostWhite\",\n\tGOLD: \"gold\",\n\tGOLDENROD: \"goldenrod\",\n\tGRAY: \"gray\",\n\tGREY: \"grey\",\n\tGREEN: \"green\",\n\tGREEN_YELLOW: \"greenYellow\",\n\tHONEYDEW: \"honeydew\",\n\tHOT_PINK: \"hotPink\",\n\tINDIAN_RED: \"indianRed\",\n\tINDIGO: \"indigo\",\n\tIVORY: \"ivory\",\n\tKHAKI: \"khaki\",\n\tLAVENDER: \"lavender\",\n\tLAVENDER_BLUSH: \"lavenderBlush\",\n\tLAWN_GREEN: \"lawnGreen\",\n\tLEMON_CHIFFON: \"lemonChiffon\",\n\tLIGHT_BLUE: \"lightBlue\",\n\tLIGHT_CORAL: \"lightCoral\",\n\tLIGHT_CYAN: \"lightCyan\",\n\tLIGHT_GOLDENROD_YELLOW: \"lightGoldenrodYellow\",\n\tLIGHT_GRAY: \"lightGray\",\n\tLIGHT_GREY: \"lightGrey\",\n\tLIGHT_GREEN: \"lightGreen\",\n\tLIGHT_PINK: \"lightPink\",\n\tLIGHT_SALMON: \"lightSalmon\",\n\tLIGHT_SEA_GREEN: \"lightSeaGreen\",\n\tLIGHT_SKY_BLUE: \"lightSkyBlue\",\n\tLIGHT_SLATE_GRAY: \"lightSlateGray\",\n\tLIGHT_SLATE_GREY: \"lightSlateGrey\",\n\tLIGHT_STEEL_BLUE: \"lightSteelBlue\",\n\tLIGHT_YELLOW: \"lightYellow\",\n\tLIME: \"lime\",\n\tLIME_GREEN: \"limeGreen\",\n\tLINEN: \"linen\",\n\tMAGENTA: \"magenta\",\n\tMAROON: \"maroon\",\n\tMEDIUM_AQUAMARINE: \"mediumAquamarine\",\n\tMEDIUM_BLUE: \"mediumBlue\",\n\tMEDIUM_ORCHID: \"mediumOrchid\",\n\tMEDIUM_PURPLE: \"mediumPurple\",\n\tMEDIUM_SEA_GREEN: \"mediumSeaGreen\",\n\tMEDIUM_SLATE_BLUE: \"mediumSlateBlue\",\n\tMEDIUM_SPRING_GREEN: \"mediumSpringGreen\",\n\tMEDIUM_TURQUOISE: \"mediumTurquoise\",\n\tMEDIUM_VIOLET_RED: \"mediumVioletRed\",\n\tMIDNIGHT_BLUE: \"midnightBlue\",\n\tMINT_CREAM: \"mintCream\",\n\tMISTY_ROSE: \"mistyRose\",\n\tMOCCASIN: \"moccasin\",\n\tNAVAJO_WHITE: \"navajoWhite\",\n\tNAVY: \"navy\",\n\tOLD_LACE: \"oldLace\",\n\tOLIVE: \"olive\",\n\tOLIVE_DRAB: \"oliveDrab\",\n\tORANGE: \"orange\",\n\tORANGE_RED: \"orangeRed\",\n\tORCHID: \"orchid\",\n\tPALE_GOLDENROD: \"paleGoldenrod\",\n\tPALE_GREEN: \"paleGreen\",\n\tPALE_TURQUOISE: \"paleTurquoise\",\n\tPALE_VIOLET_RED: \"paleVioletRed\",\n\tPAPAYA_WHIP: \"papayaWhip\",\n\tPEACH_PUFF: \"peachPuff\",\n\tPERU: \"peru\",\n\tPINK: \"pink\",\n\tPLUM: \"plum\",\n\tPOWDER_BLUE: \"powderBlue\",\n\tPURPLE: \"purple\",\n\tRED: \"red\",\n\tROSY_BROWN: \"rosyBrown\",\n\tROYAL_BLUE: \"royalBlue\",\n\tSADDLE_BROWN: \"saddleBrown\",\n\tSALMON: \"salmon\",\n\tSANDY_BROWN: \"sandyBrown\",\n\tSEA_GREEN: \"seaGreen\",\n\tSEA_SHELL: \"seaShell\",\n\tSIENNA: \"sienna\",\n\tSILVER: \"silver\",\n\tSKY_BLUE: \"skyBlue\",\n\tSLATE_BLUE: \"slateBlue\",\n\tSLATE_GRAY: \"slateGray\",\n\tSLATE_GREY: \"slateGrey\",\n\tSNOW: \"snow\",\n\tSPRING_GREEN: \"springGreen\",\n\tSTEEL_BLUE: \"steelBlue\",\n\tTAN: \"tan\",\n\tTEAL: \"teal\",\n\tTHISTLE: \"thistle\",\n\tTOMATO: \"tomato\",\n\tTURQUOISE: \"turquoise\",\n\tVIOLET: \"violet\",\n\tWHEAT: \"wheat\",\n\tWHITE: \"white\",\n\tWHITE_SMOKE: \"whiteSmoke\",\n\tYELLOW: \"yellow\",\n\tYELLOW_GREEN: \"yellowGreen\"\n};\n/**\n* Creates a preset color element as an XML string.\n*\n* Specifies a color using a named preset (CSS named color).\n*\n* ## XSD Schema\n* ```xml\n* <xsd:complexType name=\"CT_PresetColor\">\n* <xsd:sequence>\n* <xsd:group ref=\"EG_ColorTransform\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n* </xsd:sequence>\n* <xsd:attribute name=\"val\" type=\"ST_PresetColorVal\" use=\"required\"/>\n* </xsd:complexType>\n* ```\n*/\nconst createPresetColor = (options) => {\n\tconst transforms = options.transforms ? createColorTransforms(options.transforms) : [];\n\treturn element(\"a:prstClr\", { val: options.value }, transforms);\n};\n//#endregion\n//#region src/drawingml/color/rgb-color.ts\n/**\n* RGB color element for DrawingML shapes.\n*\n* This module provides RGB color support for solid fills.\n*\n* Reference: ISO/IEC 29500-4, dml-main.xsd, CT_SRgbColor\n*\n* @module\n*/\n/**\n* Creates an sRGB color element as an XML string.\n*\n* Specifies a color using RGB hex values.\n*\n* ## XSD Schema\n* ```xml\n* <xsd:complexType name=\"CT_SRgbColor\">\n* <xsd:sequence>\n* <xsd:group ref=\"EG_ColorTransform\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n* </xsd:sequence>\n* <xsd:attribute name=\"val\" type=\"s:ST_HexColorRGB\" use=\"required\"/>\n* </xsd:complexType>\n* ```\n*\n* @example\n* ```typescript\n* const redColor = createRgbColor({ value: \"FF0000\" });\n* // With alpha transform\n* const semiRed = createRgbColor({ value: \"FF0000\", transforms: { alpha: 50000 } });\n* ```\n*/\nconst createRgbColor = (options) => {\n\tconst transforms = options.transforms ? createColorTransforms(options.transforms) : [];\n\treturn element(\"a:srgbClr\", { val: options.value }, transforms);\n};\n//#endregion\n//#region src/drawingml/color/sc-rgb-color.ts\n/**\n* ScRGB color element for DrawingML shapes.\n*\n* This module provides scRGB color support using percentage-based RGB values.\n*\n* Reference: ISO/IEC 29500-4, dml-main.xsd, CT_ScRgbColor\n*\n* @module\n*/\n/**\n* Creates an scRGB color element as an XML string.\n*\n* Specifies a color using percentage-based RGB values.\n*\n* ## XSD Schema\n* ```xml\n* <xsd:complexType name=\"CT_ScRgbColor\">\n* <xsd:sequence>\n* <xsd:group ref=\"EG_ColorTransform\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n* </xsd:sequence>\n* <xsd:attribute name=\"r\" type=\"ST_Percentage\" use=\"required\"/>\n* <xsd:attribute name=\"g\" type=\"ST_Percentage\" use=\"required\"/>\n* <xsd:attribute name=\"b\" type=\"ST_Percentage\" use=\"required\"/>\n* </xsd:complexType>\n* ```\n*\n* @example\n* ```typescript\n* const redColor = createScRgbColor({ r: \"100%\", g: \"0%\", b: \"0%\" });\n* // With alpha transform\n* const semiRed = createScRgbColor({ r: \"100%\", g: \"0%\", b: \"0%\", transforms: { alpha: 50000 } });\n* ```\n*/\nconst createScRgbColor = (options) => {\n\tconst transforms = options.transforms ? createColorTransforms(options.transforms) : [];\n\treturn element(\"a:scrgbClr\", {\n\t\tr: options.r,\n\t\tg: options.g,\n\t\tb: options.b\n\t}, transforms);\n};\n//#endregion\n//#region src/drawingml/color/scheme-color.ts\n/**\n* Scheme color element for DrawingML shapes.\n*\n* This module provides scheme-based color support for solid fills,\n* allowing colors to be defined using theme color schemes.\n*\n* Reference: ISO/IEC 29500-4, dml-main.xsd, CT_SchemeColor / ST_SchemeColorVal\n*\n* @module\n*/\n/**\n* Scheme color values for theme-based colors.\n*\n* These values reference colors defined in the document's color scheme/theme.\n*/\nconst SchemeColor = {\n\t/** Background color 1 */\n\tBG1: \"bg1\",\n\t/** Text color 1 */\n\tTX1: \"tx1\",\n\t/** Background color 2 */\n\tBG2: \"bg2\",\n\t/** Text color 2 */\n\tTX2: \"tx2\",\n\t/** Accent color 1 */\n\tACCENT1: \"accent1\",\n\t/** Accent color 2 */\n\tACCENT2: \"accent2\",\n\t/** Accent color 3 */\n\tACCENT3: \"accent3\",\n\t/** Accent color 4 */\n\tACCENT4: \"accent4\",\n\t/** Accent color 5 */\n\tACCENT5: \"accent5\",\n\t/** Accent color 6 */\n\tACCENT6: \"accent6\",\n\t/** Hyperlink color */\n\tHLINK: \"hlink\",\n\t/** Followed hyperlink color */\n\tFOLHLINK: \"folHlink\",\n\t/** Dark color 1 */\n\tDK1: \"dk1\",\n\t/** Light color 1 */\n\tLT1: \"lt1\",\n\t/** Dark color 2 */\n\tDK2: \"dk2\",\n\t/** Light color 2 */\n\tLT2: \"lt2\",\n\t/** Placeholder color */\n\tPHCLR: \"phClr\"\n};\n/**\n* Creates a scheme color element as an XML string.\n*\n* Specifies a color using a theme color scheme reference.\n*\n* ## XSD Schema\n* ```xml\n* <xsd:complexType name=\"CT_SchemeColor\">\n* <xsd:sequence>\n* <xsd:group ref=\"EG_ColorTransform\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n* </xsd:sequence>\n* <xsd:attribute name=\"val\" type=\"ST_SchemeColorVal\" use=\"required\"/>\n* </xsd:complexType>\n* ```\n*\n* @example\n* ```typescript\n* const accentColor = createSchemeColor({ value: SchemeColor.ACCENT1 });\n* // With tint transform\n* const lightAccent = createSchemeColor({\n* value: SchemeColor.ACCENT1,\n* transforms: { tint: 40000 },\n* });\n* ```\n*/\nconst createSchemeColor = (options) => {\n\tconst transforms = options.transforms ? createColorTransforms(options.transforms) : [];\n\treturn element(\"a:schemeClr\", { val: options.value }, transforms);\n};\n//#endregion\n//#region src/drawingml/color/system-color.ts\n/**\n* System color element for DrawingML.\n*\n* This module provides system color support, referencing OS-level UI colors.\n*\n* Reference: ISO/IEC 29500-4, dml-main.xsd, CT_SystemColor / ST_SystemColorVal\n*\n* @module\n*/\n/**\n* System color values referencing OS UI colors.\n*\n* ## XSD Schema\n* ```xml\n* <xsd:simpleType name=\"ST_SystemColorVal\">\n* <xsd:restriction base=\"xsd:token\">\n* <xsd:enumeration value=\"scrollBar\"/>\n* <xsd:enumeration value=\"background\"/>\n* ...\n* <xsd:enumeration value=\"menuBar\"/>\n* </xsd:restriction>\n* </xsd:simpleType>\n* ```\n*/\nconst SystemColor = {\n\tSCROLL_BAR: \"scrollBar\",\n\tBACKGROUND: \"background\",\n\tACTIVE_CAPTION: \"activeCaption\",\n\tINACTIVE_CAPTION: \"inactiveCaption\",\n\tMENU: \"menu\",\n\tWINDOW: \"window\",\n\tWINDOW_FRAME: \"windowFrame\",\n\tMENU_TEXT: \"menuText\",\n\tWINDOW_TEXT: \"windowText\",\n\tCAPTION_TEXT: \"captionText\",\n\tACTIVE_BORDER: \"activeBorder\",\n\tINACTIVE_BORDER: \"inactiveBorder\",\n\tAPP_WORKSPACE: \"appWorkspace\",\n\tHIGHLIGHT: \"highlight\",\n\tHIGHLIGHT_TEXT: \"highlightText\",\n\tBTN_FACE: \"btnFace\",\n\tBTN_SHADOW: \"btnShadow\",\n\tGRAY_TEXT: \"grayText\",\n\tBTN_TEXT: \"btnText\",\n\tINACTIVE_CAPTION_TEXT: \"inactiveCaptionText\",\n\tBTN_HIGHLIGHT: \"btnHighlight\",\n\tTHREE_D_DK_SHADOW: \"3dDkShadow\",\n\tTHREE_D_LIGHT: \"3dLight\",\n\tINFO_TEXT: \"infoText\",\n\tINFO_BK: \"infoBk\",\n\tHOT_LIGHT: \"hotLight\",\n\tGRADIENT_ACTIVE_CAPTION: \"gradientActiveCaption\",\n\tGRADIENT_INACTIVE_CAPTION: \"gradientInactiveCaption\",\n\tMENU_HIGHLIGHT: \"menuHighlight\",\n\tMENU_BAR: \"menuBar\"\n};\n/**\n* Creates a system color element as an XML string.\n*\n* References a system-defined UI color (e.g., window background, button face).\n*\n* ## XSD Schema\n* ```xml\n* <xsd:complexType name=\"CT_SystemColor\">\n* <xsd:sequence>\n* <xsd:group ref=\"EG_ColorTransform\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n* </xsd:sequence>\n* <xsd:attribute name=\"val\" type=\"ST_SystemColorVal\" use=\"required\"/>\n* <xsd:attribute name=\"lastClr\" type=\"s:ST_HexColorRGB\" use=\"optional\"/>\n* </xsd:complexType>\n* ```\n*/\nconst createSystemColor = (options) => {\n\tconst transforms = options.transforms ? createColorTransforms(options.transforms) : [];\n\treturn element(\"a:sysClr\", {\n\t\tval: options.value,\n\t\tlastClr: options.lastClr\n\t}, transforms);\n};\n//#endregion\n//#region src/drawingml/color/solid-fill.ts\n/**\n* Solid fill element for DrawingML shapes.\n*\n* This module provides solid fill support for outlines and shapes,\n* supporting RGB, scheme, HSL, system, and preset colors.\n*\n* Reference: ISO/IEC 29500-4, dml-main.xsd, CT_SolidColorFillProperties\n*\n* @module\n*/\n/**\n* Creates the color child element for a solid fill based on the color type.\n*/\nconst SYSTEM_COLOR_VALUES$1 = new Set(Object.values(SystemColor));\nconst PRESET_COLOR_VALUES$1 = new Set(Object.values(PresetColor));\nconst SCHEME_COLOR_VALUES$1 = new Set(Object.values(SchemeColor));\nconst createColorElement = (color) => {\n\tif (\"hue\" in color && \"saturation\" in color && \"luminance\" in color) return createHslColor(color);\n\tif (\"r\" in color && \"g\" in color && \"b\" in color) return createScRgbColor(color);\n\tconst colorValue = color.value;\n\tif (SYSTEM_COLOR_VALUES$1.has(colorValue)) return createSystemColor(color);\n\tif (PRESET_COLOR_VALUES$1.has(colorValue)) return createPresetColor(color);\n\tif (SCHEME_COLOR_VALUES$1.has(colorValue)) return createSchemeColor(color);\n\treturn createRgbColor(color);\n};\n/**\n* Creates a solid fill element as an XML string.\n*\n* Specifies a solid color fill using any supported color type.\n*\n* ## XSD Schema\n* ```xml\n* <xsd:complexType name=\"CT_SolidColorFillProperties\">\n* <xsd:sequence>\n* <xsd:group ref=\"EG_ColorChoice\" minOccurs=\"0\"/>\n* <xsd:group ref=\"EG_EffectProperties\" minOccurs=\"0\"/>\n* </xsd:sequence>\n* </xsd:complexType>\n* ```\n*\n* @example\n* ```typescript\n* // RGB solid fill\n* const fill = createSolidFill({ value: \"FF0000\" });\n* // Scheme solid fill with tint\n* const schemeFill = createSolidFill({\n* value: SchemeColor.ACCENT1, transforms: { tint: 40000 },\n* });\n* // HSL solid fill\n* const hslFill = createSolidFill({ hue: 120000, saturation: 100000, luminance: 50000 });\n* ```\n*/\nconst createSolidFill = (options) => element(\"a:solidFill\", void 0, [createColorElement(options)]);\n//#endregion\n//#region src/drawingml/blip/blip-effects.ts\n/**\n* Blip image adjustment effects for DrawingML.\n*\n* These effects are applied directly to the image data within the `<a:blip>` element,\n* corresponding to Word's \"Picture Format > Adjust\" features (brightness, contrast,\n* grayscale, tint, duotone, etc.).\n*\n* Reference: ISO/IEC 29500-4, dml-main.xsd, CT_Blip children\n*\n* @module\n*/\n/**\n* Creates blip effect elements from BlipEffectsOptions.\n*\n* @returns Array of XML strings representing blip effects\n*/\nconst createBlipEffects = (options) => {\n\tconst children = [];\n\tif (options.grayscale) children.push(`<a:grayscl/>`);\n\tif (options.luminance) {\n\t\tconst attrs = {};\n\t\tif (options.luminance.bright !== void 0) attrs.bright = `${options.luminance.bright}`;\n\t\tif (options.luminance.contrast !== void 0) attrs.contrast = `${options.luminance.contrast}`;\n\t\tchildren.push(element(\"a:lum\", attrs));\n\t}\n\tif (options.hsl) {\n\t\tconst attrs = {};\n\t\tif (options.hsl.hue !== void 0) attrs.hue = String(options.hsl.hue);\n\t\tif (options.hsl.saturation !== void 0) attrs.sat = `${options.hsl.saturation}`;\n\t\tif (options.hsl.luminance !== void 0) attrs.lum = `${options.hsl.luminance}`;\n\t\tchildren.push(element(\"a:hsl\", attrs));\n\t}\n\tif (options.tint) {\n\t\tconst attrs = {};\n\t\tif (options.tint.hue !== void 0) attrs.hue = String(options.tint.hue);\n\t\tif (options.tint.amount !== void 0) attrs.amt = `${options.tint.amount}`;\n\t\tchildren.push(element(\"a:tint\", attrs));\n\t}\n\tif (options.duotone) children.push(element(\"a:duotone\", void 0, [createColorElement(options.duotone.color1), createColorElement(options.duotone.color2)]));\n\tif (options.biLevel) children.push(`<a:biLevel thresh=\"${options.biLevel.threshold}\"/>`);\n\tif (options.alphaCeiling) children.push(`<a:alphaCeiling/>`);\n\tif (options.alphaFloor) children.push(`<a:alphaFloor/>`);\n\tif (options.alphaInverse !== void 0) if (typeof options.alphaInverse === \"boolean\") children.push(`<a:alphaInv/>`);\n\telse children.push(element(\"a:alphaInv\", void 0, [createColorElement(options.alphaInverse)]));\n\tif (options.alphaModFix) {\n\t\tconst amt = options.alphaModFix.amount ?? 100;\n\t\tchildren.push(`<a:alphaModFix amt=\"${amt}\"/>`);\n\t}\n\tif (options.alphaRepl) children.push(`<a:alphaRepl a=\"${options.alphaRepl.amount}\"/>`);\n\tif (options.alphaBiLevel) children.push(`<a:alphaBiLevel thresh=\"${options.alphaBiLevel.threshold}\"/>`);\n\tif (options.colorChange) {\n\t\tconst attrs = {};\n\t\tif (options.colorChange.useAlpha === false) attrs.useA = \"0\";\n\t\tchildren.push(element(\"a:clrChange\", attrs, [element(\"a:clrFrom\", void 0, [createColorElement(options.colorChange.from)]), element(\"a:clrTo\", void 0, [createColorElement(options.colorChange.to)])]));\n\t}\n\tif (options.colorRepl) children.push(element(\"a:clrRepl\", void 0, [createColorElement(options.colorRepl.color)]));\n\tif (options.blur) {\n\t\tconst attrs = {};\n\t\tif (options.blur.radius !== void 0) attrs.rad = options.blur.radius;\n\t\tif (options.blur.grow === false) attrs.grow = 0;\n\t\tchildren.push(element(\"a:blur\", attrs));\n\t}\n\treturn children;\n};\n//#endregion\n//#region src/drawingml/blip/source-rectangle.ts\n/**\n* Source rectangle module for blip fills.\n*\n* This module defines the portion of an image to use when filling a shape.\n*\n* Reference: ISO/IEC 29500-4, dml-main.xsd, CT_RelativeRect\n*\n* @module\n*/\n/**\n* Creates a source rectangle element for blip fill cropping.\n*\n* This element specifies a portion of the blip (image) to use as the fill.\n* When no options are provided, the entire blip is used.\n*\n* Reference: ISO/IEC 29500-4, dml-main.xsd, CT_RelativeRect\n*\n* ## XSD Schema\n* ```xml\n* <xsd:complexType name=\"CT_RelativeRect\">\n* <xsd:attribute name=\"l\" type=\"ST_Percentage\" use=\"optional\" default=\"0\"/>\n* <xsd:attribute name=\"t\" type=\"ST_Percentage\" use=\"optional\" default=\"0\"/>\n* <xsd:attribute name=\"r\" type=\"ST_Percentage\" use=\"optional\" default=\"0\"/>\n* <xsd:attribute name=\"b\" type=\"ST_Percentage\" use=\"optional\" default=\"0\"/>\n* </xsd:complexType>\n* ```\n*\n* @example\n* ```typescript\n* // Crop 10% from left and right\n* createSourceRectangle({ left: 10000, right: 10000 });\n* ```\n*/\nconst createSourceRectangle = (options) => {\n\tif (!options) return element(\"a:srcRect\");\n\tconst attrs = {};\n\tif (options.left !== void 0) attrs.l = options.left;\n\tif (options.top !== void 0) attrs.t = options.top;\n\tif (options.right !== void 0) attrs.r = options.right;\n\tif (options.bottom !== void 0) attrs.b = options.bottom;\n\treturn element(\"a:srcRect\", attrs);\n};\n//#endregion\n//#region src/drawingml/blip/tile.ts\n/**\n* Tile fill module for blip fills.\n*\n* This module defines how images are tiled (repeated) to fill shapes.\n*\n* Reference: ISO/IEC 29500-4, dml-main.xsd, CT_TileInfoProperties\n*\n* @module\n*/\n/**\n* Tile alignment within the shape.\n*\n* Specifies the anchor position of the first tile relative to the shape.\n*/\nconst TileAlignment = {\n\t/** Top-left corner */\n\tTOP_LEFT: \"topLeft\",\n\t/** Top center */\n\tTOP: \"top\",\n\t/** Top-right corner */\n\tTOP_RIGHT: \"topRight\",\n\t/** Middle-left */\n\tLEFT: \"left\",\n\t/** Center */\n\tCENTER: \"center\",\n\t/** Middle-right */\n\tRIGHT: \"right\",\n\t/** Bottom-left corner */\n\tBOTTOM_LEFT: \"bottomLeft\",\n\t/** Bottom center */\n\tBOTTOM: \"bottom\",\n\t/** Bottom-right corner */\n\tBOTTOM_RIGHT: \"bottomRight\"\n};\n/**\n* Creates a tile fill mode element for blip fills.\n*\n* When a blip fill uses tile mode, the image is repeated (tiled) to fill\n* the shape instead of being stretched. This element controls the tiling\n* parameters such as offset, scale, flip, and alignment.\n*\n* Reference: ISO/IEC 29500-4, dml-main.xsd, CT_TileInfoProperties\n*\n* ## XSD Schema\n* ```xml\n* <xsd:complexType name=\"CT_TileInfoProperties\">\n* <xsd:attribute name=\"tx\" type=\"ST_Coordinate\" use=\"optional\"/>\n* <xsd:attribute name=\"ty\" type=\"ST_Coordinate\" use=\"optional\"/>\n* <xsd:attribute name=\"sx\" type=\"ST_Percentage\" use=\"optional\"/>\n* <xsd:attribute name=\"sy\" type=\"ST_Percentage\" use=\"optional\"/>\n* <xsd:attribute name=\"flip\" type=\"ST_TileFlipMode\" default=\"none\"/>\n* <xsd:attribute name=\"algn\" type=\"ST_RectAlignment\" use=\"optional\"/>\n* </xsd:complexType>\n* ```\n*\n* @example\n* ```typescript\n* // Tile with 50% scale\n* createTileInfo({ sx: 50, sy: 50 });\n* // Tile with flip and alignment\n* createTileInfo({ flip: \"XY\", align: \"CENTER\" });\n* ```\n*/\nconst createTileInfo = (options) => {\n\tif (!options) return `<a:tile/>`;\n\tconst attrs = {};\n\tif (options.tx !== void 0) attrs.tx = options.tx;\n\tif (options.ty !== void 0) attrs.ty = options.ty;\n\tif (options.sx !== void 0) attrs.sx = options.sx;\n\tif (options.sy !== void 0) attrs.sy = options.sy;\n\tif (options.flip !== void 0) attrs.flip = options.flip;\n\tif (options.align !== void 0) attrs.algn = xsdRectAlignment.to(options.align);\n\treturn element(\"a:tile\", attrs);\n};\n//#endregion\n//#region src/drawingml/fill/gradient-fill.ts\n/**\n* Gradient fill element for DrawingML shapes.\n*\n* This module provides gradient fill support with linear and path shading.\n*\n* Reference: ISO/IEC 29500-4, dml-main.xsd, CT_GradientFillProperties\n*\n* @module\n*/\n/**\n* Path shade type for radial gradients.\n*/\nconst PathShadeType = {\n\t/** Follow shape path */\n\tSHAPE: \"shape\",\n\t/** Circular gradient */\n\tCIRCLE: \"circle\",\n\t/** Rectangular gradient */\n\tRECT: \"rect\"\n};\n/**\n* Tile flip mode for gradient fill.\n*\n* ## XSD Schema\n* ```xml\n* <xsd:simpleType name=\"ST_TileFlipMode\">\n* <xsd:restriction base=\"xsd:string\">\n* <xsd:enumeration value=\"none\"/>\n* <xsd:enumeration value=\"x\"/>\n* <xsd:enumeration value=\"y\"/>\n* <xsd:enumeration value=\"xy\"/>\n* </xsd:restriction>\n* </xsd:simpleType>\n* ```\n*/\nconst TileFlipMode = {\n\t/** No flip */\n\tNONE: \"none\",\n\t/** Flip horizontally */\n\tX: \"x\",\n\t/** Flip vertically */\n\tY: \"y\",\n\t/** Flip both horizontally and vertically */\n\tXY: \"xy\"\n};\n/**\n* Creates a gradient stop element (a:gs).\n*\n* @example\n* ```typescript\n* createGradientStop({ position: 0, color: { value: \"FF0000\" } });\n* createGradientStop({ position: 100000, color: { value: \"0000FF\" } });\n* ```\n*/\nconst createGradientStop = (stop) => element(\"a:gs\", { pos: stop.position }, [createColorElement(stop.color)]);\n/**\n* Creates a relative rect element.\n*/\nconst createRelativeRect = (name, rect) => element(name, {\n\tl: rect?.left,\n\tt: rect?.top,\n\tr: rect?.right,\n\tb: rect?.bottom\n});\n/**\n* Creates the shade element (a:lin or a:path).\n*/\nconst createShadeElement = (shade) => {\n\tif (\"angle\" in shade) return element(\"a:lin\", {\n\t\tang: shade.angle,\n\t\tscaled: shade.scaled\n\t});\n\tconst pathShade = shade;\n\tconst children = [];\n\tif (pathShade.fillToRectangle) children.push(createRelativeRect(\"a:fillToRect\", pathShade.fillToRectangle));\n\treturn element(\"a:path\", { path: pathShade.path }, children);\n};\n/**\n* Creates a gradient fill element.\n*\n* ## XSD Schema\n* ```xml\n* <xsd:complexType name=\"CT_GradientFillProperties\">\n* <xsd:sequence>\n* <xsd:element name=\"gsLst\" type=\"CT_GradientStopList\" minOccurs=\"0\"/>\n* <xsd:group ref=\"EG_ShadeProperties\" minOccurs=\"0\"/>\n* </xsd:sequence>\n* <xsd:attribute name=\"rotWithShape\" type=\"xsd:boolean\" use=\"optional\"/>\n* </xsd:complexType>\n* ```\n*\n* @example\n* ```typescript\n* // Linear gradient from red to blue\n* createGradientFill({\n* stops: [\n* { position: 0, color: { value: \"FF0000\" } },\n* { position: 100000, color: { value: \"0000FF\" } },\n* ],\n* shade: { angle: 5400000 },\n* });\n* ```\n*/\nconst createGradientFill = (options) => {\n\tconst children = [];\n\tconst stopElements = options.stops.map(createGradientStop);\n\tchildren.push(element(\"a:gsLst\", void 0, stopElements));\n\tif (options.shade) children.push(createShadeElement(options.shade));\n\tif (options.tileRectangle) children.push(createRelativeRect(\"a:tileRect\", options.tileRectangle));\n\treturn element(\"a:gradFill\", {\n\t\tflip: options.flip,\n\t\trotWithShape: options.rotateWithShape\n\t}, children);\n};\n//#endregion\n//#region src/drawingml/fill/pattern-fill.ts\n/**\n* Pattern fill element for DrawingML shapes.\n*\n* This module provides pattern fill support with preset patterns and\n* optional foreground/background colors.\n*\n* Reference: ISO/IEC 29500-4, dml-main.xsd, CT_PatternFillProperties\n*\n* @module\n*/\n/**\n* Preset pattern values for pattern fill.\n*\n* ## XSD Schema\n* ```xml\n* <xsd:simpleType name=\"ST_PresetPatternVal\">\n* <xsd:restriction base=\"xsd:token\">\n* <xsd:enumeration value=\"pct5\"/> ... <xsd:enumeration value=\"zigZag\"/>\n* </xsd:restriction>\n* </xsd:simpleType>\n* ```\n*\n* @publicApi\n*/\nconst PresetPattern = {\n\t/** 5% pattern */\n\tPCT5: \"percent5\",\n\t/** 10% pattern */\n\tPCT10: \"percent10\",\n\t/** 20% pattern */\n\tPCT20: \"percent20\",\n\t/** 25% pattern */\n\tPCT25: \"percent25\",\n\t/** 30% pattern */\n\tPCT30: \"percent30\",\n\t/** 40% pattern */\n\tPCT40: \"percent40\",\n\t/** 50% pattern */\n\tPCT50: \"percent50\",\n\t/** 60% pattern */\n\tPCT60: \"percent60\",\n\t/** 70% pattern */\n\tPCT70: \"percent70\",\n\t/** 75% pattern */\n\tPCT75: \"percent75\",\n\t/** 80% pattern */\n\tPCT80: \"percent80\",\n\t/** 90% pattern */\n\tPCT90: \"percent90\",\n\t/** Horizontal lines */\n\tHORZ: \"horizontal\",\n\t/** Vertical lines */\n\tVERT: \"vertical\",\n\t/** Light horizontal lines */\n\tLT_HORZ: \"lightHorizontal\",\n\t/** Light vertical lines */\n\tLT_VERT: \"lightVertical\",\n\t/** Dark horizontal lines */\n\tDK_HORZ: \"darkHorizontal\",\n\t/** Dark vertical lines */\n\tDK_VERT: \"darkVertical\",\n\t/** Narrow horizontal lines */\n\tNAR_HORZ: \"narrowHorizontal\",\n\t/** Narrow vertical lines */\n\tNAR_VERT: \"narrowVertical\",\n\t/** Dashed horizontal lines */\n\tDASH_HORZ: \"dashedHorizontal\",\n\t/** Dashed vertical lines */\n\tDASH_VERT: \"dashedVertical\",\n\t/** Cross pattern (+) */\n\tCROSS: \"cross\",\n\t/** Downward diagonal lines (\\) */\n\tDN_DIAG: \"downDiagonal\",\n\t/** Upward diagonal lines (/) */\n\tUP_DIAG: \"upDiagonal\",\n\t/** Light downward diagonal lines */\n\tLT_DN_DIAG: \"lightDownDiagonal\",\n\t/** Light upward diagonal lines */\n\tLT_UP_DIAG: \"lightUpDiagonal\",\n\t/** Dark downward diagonal lines */\n\tDK_DN_DIAG: \"darkDownDiagonal\",\n\t/** Dark upward diagonal lines */\n\tDK_UP_DIAG: \"darkUpDiagonal\",\n\t/** Wide downward diagonal lines */\n\tWD_DN_DIAG: \"wideDownDiagonal\",\n\t/** Wide upward diagonal lines */\n\tWD_UP_DIAG: \"wideUpDiagonal\",\n\t/** Dashed downward diagonal lines */\n\tDASH_DN_DIAG: \"dashedDownDiagonal\",\n\t/** Dashed upward diagonal lines */\n\tDASH_UP_DIAG: \"dashedUpDiagonal\",\n\t/** Diagonal cross pattern (X) */\n\tDIAG_CROSS: \"diagonalCross\",\n\t/** Small checkerboard */\n\tSM_CHECK: \"smallChecker\",\n\t/** Large checkerboard */\n\tLG_CHECK: \"largeChecker\",\n\t/** Small grid */\n\tSM_GRID: \"smallGrid\",\n\t/** Large grid */\n\tLG_GRID: \"largeGrid\",\n\t/** Dot grid */\n\tDOT_GRID: \"dotGrid\",\n\t/** Small confetti */\n\tSM_CONFETTI: \"smallConfetti\",\n\t/** Large confetti */\n\tLG_CONFETTI: \"largeConfetti\",\n\t/** Horizontal brick pattern */\n\tHORZ_BRICK: \"horizontalBrick\",\n\t/** Diagonal brick pattern */\n\tDIAG_BRICK: \"diagonalBrick\",\n\t/** Solid diamond */\n\tSOLID_DMND: \"solidDiamond\",\n\t/** Open diamond */\n\tOPEN_DMND: \"openDiamond\",\n\t/** Dotted diamond */\n\tDOT_DMND: \"dottedDiamond\",\n\t/** Plaid pattern */\n\tPLAID: \"plaid\",\n\t/** Sphere pattern */\n\tSPHERE: \"sphere\",\n\t/** Weave pattern */\n\tWEAVE: \"weave\",\n\t/** Divot pattern */\n\tDIVOT: \"divot\",\n\t/** Shingle pattern */\n\tSHINGLE: \"shingle\",\n\t/** Wave pattern */\n\tWAVE: \"wave\",\n\t/** Trellis pattern */\n\tTRELLIS: \"trellis\",\n\t/** Zigzag pattern */\n\tZIG_ZAG: \"zigZag\"\n};\n/**\n* Creates a pattern fill element (a:pattFill).\n*\n* Specifies a pattern fill using preset patterns with optional\n* foreground and background colors.\n*\n* ## XSD Schema\n* ```xml\n* <xsd:complexType name=\"CT_PatternFillProperties\">\n* <xsd:sequence>\n* <xsd:element name=\"fgClr\" type=\"CT_Color\" minOccurs=\"0\"/>\n* <xsd:element name=\"bgClr\" type=\"CT_Color\" minOccurs=\"0\"/>\n* </xsd:sequence>\n* <xsd:attribute name=\"prst\" type=\"ST_PresetPatternVal\" use=\"optional\"/>\n* </xsd:complexType>\n* ```\n*\n* @example\n* ```typescript\n* // Simple crosshatch pattern\n* createPatternFill({ pattern: PresetPattern.CROSS });\n* // Pattern with foreground color\n* createPatternFill({\n* pattern: PresetPattern.DIAG_CROSS,\n* foregroundColor: { value: \"FF0000\" },\n* });\n* // Pattern with foreground and background colors\n* createPatternFill({\n* pattern: PresetPattern.HORZ,\n* foregroundColor: { value: \"0000FF\" },\n* backgroundColor: { value: \"FFFF00\" },\n* });\n* ```\n*/\nconst createPatternFill = (options) => {\n\tconst children = [];\n\tif (options.foregroundColor) children.push(element(\"a:fgClr\", void 0, [createColorElement(options.foregroundColor)]));\n\tif (options.backgroundColor) children.push(element(\"a:bgClr\", void 0, [createColorElement(options.backgroundColor)]));\n\treturn element(\"a:pattFill\", { prst: xsdPattern.to(options.pattern) }, children);\n};\n//#endregion\n//#region src/drawingml/fill/fill-options.ts\nfunction normalizeColor(color) {\n\treturn typeof color === \"string\" ? { value: color.replace(\"#\", \"\") } : color;\n}\n/**\n* Extracts media data from a blip fill option, if present.\n* Returns undefined for non-blip fills.\n*\n* The returned data should be registered with the document's media store\n* during serialization so the packer can resolve the `{fileName}` placeholder.\n*\n* @param fill - Fill options to inspect\n* @param nameAllocator - Optional sequential name provider (e.g. a format\n* package's media counter). When omitted, falls back to a random id so the\n* function stays usable from contexts without a shared counter.\n*/\nconst extractBlipFillMedia = (fill, nameAllocator) => {\n\tif (typeof fill === \"string\" || fill.type !== \"blip\") return void 0;\n\treturn {\n\t\tdata: toUint8Array(fill.data),\n\t\tfileName: nameAllocator ? nameAllocator(fill.imageType) : `${uniqueId()}.${fill.imageType}`,\n\t\ttype: fill.imageType\n\t};\n};\n/**\n* Builds a DrawingML fill XML string from a FillOptions config.\n*/\nconst buildFill = (options, embedPlaceholder) => {\n\tif (typeof options === \"string\") return createSolidFill({ value: options.replace(\"#\", \"\") });\n\tswitch (options.type) {\n\t\tcase \"solid\": return createSolidFill(normalizeColor(options.color));\n\t\tcase \"none\": return \"<a:noFill/>\";\n\t\tcase \"gradient\":\n\t\t\tif (\"options\" in options) return createGradientFill(options.options);\n\t\t\treturn createGradientFill({\n\t\t\t\tstops: options.stops.map((stop) => ({\n\t\t\t\t\tposition: stop.position * 1e3,\n\t\t\t\t\tcolor: normalizeColor(stop.color)\n\t\t\t\t})),\n\t\t\t\t...!options.path && options.angle !== void 0 && { shade: {\n\t\t\t\t\tangle: options.angle * 6e4,\n\t\t\t\t\tscaled: options.scaled ?? true\n\t\t\t\t} },\n\t\t\t\t...options.path && { shade: { path: options.path } }\n\t\t\t});\n\t\tcase \"blip\": {\n\t\t\tconst fileName = `${uniqueId()}.${options.imageType}`;\n\t\t\tconst embed = embedPlaceholder ?? `{${fileName}}`;\n\t\t\tconst blipChildren = [];\n\t\t\tif (options.blipEffects) blipChildren.push(...createBlipEffects(options.blipEffects));\n\t\t\tconst children = [element(\"a:blip\", {\n\t\t\t\tcstate: \"none\",\n\t\t\t\t\"r:embed\": embed\n\t\t\t}, blipChildren.length > 0 ? blipChildren : void 0), createSourceRectangle(options.sourceRectangle)];\n\t\t\tif (options.tile) children.push(createTileInfo(options.tile));\n\t\t\telse children.push(\"<a:stretch><a:fillRect/></a:stretch>\");\n\t\t\tconst attrs = {};\n\t\t\tif (options.dpi !== void 0) attrs.dpi = options.dpi;\n\t\t\tif (options.rotWithShape !== void 0) attrs.rotWithShape = options.rotWithShape ? 1 : 0;\n\t\t\treturn element(\"a:blipFill\", attrs, children);\n\t\t}\n\t\tcase \"pattern\": return createPatternFill({\n\t\t\tpattern: options.pattern,\n\t\t\t...options.foregroundColor && { foregroundColor: normalizeColor(options.foregroundColor) },\n\t\t\t...options.backgroundColor && { backgroundColor: normalizeColor(options.backgroundColor) }\n\t\t});\n\t\tcase \"group\": return \"<a:grpFill/>\";\n\t}\n};\n//#endregion\n//#region src/drawingml/fill/no-fill.ts\n/**\n* No fill element for DrawingML shapes.\n*\n* This module provides the no-fill option for outline and shape fills.\n*\n* @module\n*/\n/**\n* Creates a no-fill element.\n*\n* Specifies that the outline or shape should have no fill applied.\n*\n* ## XSD Schema\n* ```xml\n* <xsd:element name=\"noFill\" type=\"CT_Empty\"/>\n* ```\n*\n* @example\n* ```typescript\n* const noFill = createNoFill();\n* ```\n*/\nconst createNoFill = () => element(\"a:noFill\");\n//#endregion\n//#region src/drawingml/fill/group-fill.ts\n/**\n* Group fill element for DrawingML shapes.\n*\n* This module provides group fill support which inherits the fill\n* from the parent group shape.\n*\n* Reference: ISO/IEC 29500-4, dml-main.xsd, CT_GroupFillProperties\n*\n* @module\n*/\n/**\n* Creates a group fill element (a:grpFill).\n*\n* This element specifies that the shape should inherit its fill\n* from the parent group shape. This is useful when shapes are\n* grouped together and should share the same fill.\n*\n* ## XSD Schema\n* ```xml\n* <xsd:complexType name=\"CT_GroupFillProperties\"/>\n* ```\n*\n* @example\n* ```typescript\n* // Shape inherits fill from parent group\n* createGroupFill();\n* ```\n*/\nconst createGroupFill = () => element(\"a:grpFill\");\n//#endregion\n//#region src/drawingml/outline/custom-dash.ts\n/**\n* Custom dash pattern for DrawingML outlines.\n*\n* This module provides support for custom dash patterns defined by\n* a list of dash stops, each specifying dash and space lengths as\n* percentages relative to line width.\n*\n* Reference: ISO/IEC 29500-4, dml-main.xsd, CT_DashStopList, CT_DashStop\n*\n* @module\n*/\n/**\n* Creates a custom dash element (a:custDash) for outlines.\n*\n* The custom dash element specifies a repeating pattern of dash and space\n* segments. Each segment is defined by a `DashStop` with dash (`d`) and\n* space (`sp`) lengths as positive percentages of the line width.\n*\n* ## XSD Schema\n* ```xml\n* <xsd:complexType name=\"CT_DashStopList\">\n* <xsd:sequence>\n* <xsd:element name=\"ds\" type=\"CT_DashStop\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n* </xsd:sequence>\n* </xsd:complexType>\n* ```\n*\n* @example\n* ```typescript\n* // Simple dash pattern\n* createCustomDash([\n* { d: \"500%\", sp: \"200%\" },\n* ]);\n*\n* // Complex alternating pattern\n* createCustomDash([\n* { d: \"500%\", sp: \"200%\" },\n* { d: \"100%\", sp: \"200%\" },\n* ]);\n* ```\n*/\nconst createCustomDash = (stops) => {\n\tconst children = [];\n\tfor (const stop of stops) children.push(`<a:ds d=\"${stop.d}\" sp=\"${stop.sp}\"/>`);\n\treturn element(\"a:custDash\", void 0, children);\n};\n//#endregion\n//#region src/drawingml/outline/line-end.ts\n/**\n* Line end (arrow) properties for DrawingML outlines.\n*\n* This module provides support for line end markers (arrows) on shape outlines.\n*\n* Reference: ISO/IEC 29500-4, dml-main.xsd, CT_LineEndProperties\n*\n* @module\n*/\n/**\n* Line end types (arrow head styles).\n*\n* ## XSD Schema\n* ```xml\n* <xsd:simpleType name=\"ST_LineEndType\">\n* <xsd:restriction base=\"xsd:token\">\n* <xsd:enumeration value=\"none\"/>\n* <xsd:enumeration value=\"triangle\"/>\n* <xsd:enumeration value=\"stealth\"/>\n* <xsd:enumeration value=\"diamond\"/>\n* <xsd:enumeration value=\"oval\"/>\n* <xsd:enumeration value=\"arrow\"/>\n* </xsd:restriction>\n* </xsd:simpleType>\n* ```\n*\n* @publicApi\n*/\nconst LineEndType = {\n\t/** No line end */\n\tNONE: \"none\",\n\t/** Triangle arrow */\n\tTRIANGLE: \"triangle\",\n\t/** Stealth arrow (filled triangle) */\n\tSTEALTH: \"stealth\",\n\t/** Diamond shape */\n\tDIAMOND: \"diamond\",\n\t/** Oval shape */\n\tOVAL: \"oval\",\n\t/** Simple arrow */\n\tARROW: \"arrow\"\n};\n/**\n* Line end width options.\n*\n* ## XSD Schema\n* ```xml\n* <xsd:simpleType name=\"ST_LineEndWidth\">\n* <xsd:restriction base=\"xsd:token\">\n* <xsd:enumeration value=\"sm\"/>\n* <xsd:enumeration value=\"med\"/>\n* <xsd:enumeration value=\"lg\"/>\n* </xsd:restriction>\n* </xsd:simpleType>\n* ```\n*\n* @publicApi\n*/\nconst LineEndWidth = {\n\t/** Small width */\n\tSMALL: \"small\",\n\t/** Medium width */\n\tMEDIUM: \"medium\",\n\t/** Large width */\n\tLARGE: \"large\"\n};\n/**\n* Line end length options.\n*\n* ## XSD Schema\n* ```xml\n* <xsd:simpleType name=\"ST_LineEndLength\">\n* <xsd:restriction base=\"xsd:token\">\n* <xsd:enumeration value=\"sm\"/>\n* <xsd:enumeration value=\"med\"/>\n* <xsd:enumeration value=\"lg\"/>\n* </xsd:restriction>\n* </xsd:simpleType>\n* ```\n*\n* @publicApi\n*/\nconst LineEndLength = {\n\t/** Small length */\n\tSMALL: \"small\",\n\t/** MEDIUM length */\n\tMEDIUM: \"medium\",\n\t/** Large length */\n\tLARGE: \"large\"\n};\n/**\n* Creates a line end element (a:headEnd or a:tailEnd).\n*\n* @example\n* ```typescript\n* // Stealth arrow at start, medium size\n* createLineEnd(\"a:headEnd\", { type: \"STEALTH\", width: \"MEDIUM\", length: \"MEDIUM\" });\n* // Triangle arrow at end\n* createLineEnd(\"a:tailEnd\", { type: \"TRIANGLE\" });\n* ```\n*/\nconst createLineEnd = (name, options) => element(name, {\n\ttype: options.type,\n\tw: options.width ? xsdLineEndSize.to(options.width) : void 0,\n\tlen: options.length ? xsdLineEndSize.to(options.length) : void 0\n});\n//#endregion\n//#region src/drawingml/outline/outline.ts\n/**\n* Line cap styles for outline endpoints.\n*\n* Defines how the ends of a line are rendered.\n*/\nconst LineCap = {\n\t/** Round cap style */\n\tROUND: \"round\",\n\t/** Square cap style */\n\tSQUARE: \"square\",\n\t/** Flat cap style */\n\tFLAT: \"flat\"\n};\n/**\n* Compound line types for outlines.\n*\n* Defines the structure of compound lines (single, double, etc.).\n*/\nconst CompoundLine = {\n\t/** Single line */\n\tSINGLE: \"single\",\n\t/** Double line */\n\tDOUBLE: \"double\",\n\t/** Thick-thin double line */\n\tTHICK_THIN: \"thickThin\",\n\t/** Thin-thick double line */\n\tTHIN_THICK: \"thinThick\",\n\t/** Triple line */\n\tTRI: \"triple\"\n};\n/**\n* Pen alignment options for outline positioning.\n*\n* Defines how the outline is aligned relative to the shape edge.\n*/\nconst PenAlignment = {\n\t/** Center alignment */\n\tCENTER: \"center\",\n\t/** Inset alignment */\n\tINSET: \"inside\"\n};\n/**\n* Preset dash styles for outlines.\n*\n* ## XSD Schema\n* ```xml\n* <xsd:simpleType name=\"ST_PresetLineDashVal\">\n* <xsd:restriction base=\"xsd:token\">\n* <xsd:enumeration value=\"solid\"/>\n* <xsd:enumeration value=\"dot\"/>\n* <xsd:enumeration value=\"dash\"/>\n* <xsd:enumeration value=\"lgDash\"/>\n* <xsd:enumeration value=\"dashDot\"/>\n* <xsd:enumeration value=\"lgDashDot\"/>\n* <xsd:enumeration value=\"lgDashDotDot\"/>\n* <xsd:enumeration value=\"sysDash\"/>\n* <xsd:enumeration value=\"sysDot\"/>\n* <xsd:enumeration value=\"sysDashDot\"/>\n* <xsd:enumeration value=\"sysDashDotDot\"/>\n* </xsd:restriction>\n* </xsd:simpleType>\n* ```\n*/\nconst PresetDash = {\n\tSOLID: \"solid\",\n\tDOT: \"dot\",\n\tDASH: \"dash\",\n\tLG_DASH: \"lgDash\",\n\tDASH_DOT: \"dashDot\",\n\tLG_DASH_DOT: \"lgDashDot\",\n\tLG_DASH_DOT_DOT: \"lgDashDotDot\",\n\tSYS_DASH: \"sysDash\",\n\tSYS_DOT: \"sysDot\",\n\tSYS_DASH_DOT: \"sysDashDot\",\n\tSYS_DASH_DOT_DOT: \"sysDashDotDot\"\n};\n/**\n* Line join styles.\n*/\nconst LineJoin = {\n\tROUND: \"round\",\n\tBEVEL: \"bevel\",\n\tMITER: \"miter\"\n};\n/**\n* Creates the fill child element for an outline.\n*\n* Returns null when no fill type is specified (OOXML allows outline without fill).\n*/\nconst createOutlineFill = (options) => {\n\tif (options.type === \"noFill\") return createNoFill();\n\tif (options.type === \"solidFill\" && options.color) return createSolidFill(options.color);\n\tif (options.type === \"gradFill\" && options.gradientFill) return createGradientFill(options.gradientFill);\n\tif (options.type === \"pattFill\" && options.patternFill) return createPatternFill(options.patternFill);\n\treturn null;\n};\n/**\n* Creates an outline element for DrawingML shapes.\n*\n* The outline element specifies the line properties for the shape border,\n* including width, cap style, compound line type, alignment, dash, join, and fill.\n*\n* ## XSD Schema\n* ```xml\n* <xsd:complexType name=\"CT_LineProperties\">\n* <xsd:sequence>\n* <xsd:group ref=\"EG_FillProperties\" minOccurs=\"0\"/>\n* <xsd:group ref=\"EG_LineDashProperties\" minOccurs=\"0\"/>\n* <xsd:group ref=\"EG_LineJoinProperties\" minOccurs=\"0\"/>\n* </xsd:sequence>\n* <xsd:attribute name=\"w\" use=\"optional\" type=\"a:ST_LineWidth\"/>\n* <xsd:attribute name=\"cap\" use=\"optional\" type=\"ST_LineCap\"/>\n* <xsd:attribute name=\"cmpd\" use=\"optional\" type=\"ST_CompoundLine\"/>\n* <xsd:attribute name=\"algn\" use=\"optional\" type=\"ST_PenAlignment\"/>\n* </xsd:complexType>\n* ```\n*\n* @example\n* ```typescript\n* // Outline with RGB color and dash\n* const outline = createOutline({\n* width: 9525,\n* type: \"solidFill\",\n* color: { value: \"FF0000\" },\n* dash: \"DASH\",\n* });\n* ```\n*/\nconst createOutline = (options) => {\n\tconst children = [];\n\tconst fill = createOutlineFill(options);\n\tif (fill) children.push(fill);\n\tif (options.customDash !== void 0) children.push(createCustomDash(options.customDash));\n\telse if (options.dash !== void 0) children.push(`<a:prstDash val=\"${options.dash}\"/>`);\n\tif (options.join !== void 0) if (options.join === \"miter\" && options.miterLimit !== void 0) children.push(`<a:miter lim=\"${options.miterLimit}\"/>`);\n\telse children.push(`<a:${options.join}/>`);\n\tif (options.headEnd) children.push(createLineEnd(\"a:headEnd\", options.headEnd));\n\tif (options.tailEnd) children.push(createLineEnd(\"a:tailEnd\", options.tailEnd));\n\treturn element(\"a:ln\", {\n\t\talgn: options.align ? xsdPenAlignment.to(options.align) : void 0,\n\t\tcap: options.cap ? xsdLineCap.to(options.cap) : void 0,\n\t\tcmpd: options.compoundLine ? xsdCompoundLine.to(options.compoundLine) : void 0,\n\t\tw: options.width !== void 0 ? convertToEmu(options.width) : void 0\n\t}, children);\n};\n//#endregion\n//#region src/drawingml/effects/fill-overlay.ts\n/**\n* Fill overlay effect for DrawingML shapes.\n*\n* Reference: ISO/IEC 29500-4, dml-main.xsd, CT_FillOverlayEffect\n*\n* @module\n*/\n/**\n* Blend modes for fill overlay effect.\n*\n* ## XSD Schema\n* ```xml\n* <xsd:simpleType name=\"ST_BlendMode\">\n* <xsd:restriction base=\"xsd:token\">\n* <xsd:enumeration value=\"over\"/>\n* <xsd:enumeration value=\"mult\"/>\n* <xsd:enumeration value=\"screen\"/>\n* <xsd:enumeration value=\"darken\"/>\n* <xsd:enumeration value=\"lighten\"/>\n* </xsd:restriction>\n* </xsd:simpleType>\n* ```\n*/\nconst BlendMode = {\n\t/** Over blend mode */\n\tOVER: \"over\",\n\t/** Multiply blend mode */\n\tMULTIPLY: \"multiply\",\n\t/** Screen blend mode */\n\tSCREEN: \"screen\",\n\t/** Darken blend mode */\n\tDARKEN: \"darken\",\n\t/** Lighten blend mode */\n\tLIGHTEN: \"lighten\"\n};\n/**\n* Creates a fill overlay effect element.\n*\n* ## XSD Schema\n* ```xml\n* <xsd:complexType name=\"CT_FillOverlayEffect\">\n* <xsd:sequence>\n* <xsd:group ref=\"EG_FillProperties\" minOccurs=\"1\" maxOccurs=\"1\"/>\n* </xsd:sequence>\n* <xsd:attribute name=\"blend\" type=\"ST_BlendMode\" use=\"required\"/>\n* </xsd:complexType>\n* ```\n*\n* @example\n* ```typescript\n* // Solid fill overlay\n* const fillOverlay = createFillOverlayEffect({\n* blend: BlendMode.MULTIPLY,\n* solidFill: { value: \"FF0000\" },\n* });\n*\n* // Gradient fill overlay\n* const fillOverlay = createFillOverlayEffect({\n* blend: BlendMode.SCREEN,\n* gradientFill: { type: \"linear\", stops: [...] },\n* });\n* ```\n*/\nconst createFillOverlayEffect = (options) => {\n\tlet fillElement;\n\tif (options.noFill) fillElement = createNoFill();\n\telse if (options.solidFill) fillElement = createSolidFill(options.solidFill);\n\telse if (options.gradientFill) fillElement = createGradientFill(options.gradientFill);\n\telse if (options.patternFill) fillElement = createPatternFill(options.patternFill);\n\telse if (options.groupFill) fillElement = createGroupFill();\n\telse fillElement = createSolidFill({ value: \"000000\" });\n\treturn element(\"a:fillOverlay\", { blend: xsdBlendMode.to(options.blend) }, [fillElement]);\n};\n//#endregion\n//#region src/drawingml/effects/glow.ts\n/**\n* Glow effect for DrawingML shapes.\n*\n* Reference: ISO/IEC 29500-4, dml-main.xsd, CT_GlowEffect\n*\n* @module\n*/\n/**\n* Creates a glow effect element.\n*\n* ## XSD Schema\n* ```xml\n* <xsd:complexType name=\"CT_GlowEffect\">\n* <xsd:sequence>\n* <xsd:group ref=\"EG_ColorChoice\" minOccurs=\"1\" maxOccurs=\"1\"/>\n* </xsd:sequence>\n* <xsd:attribute name=\"rad\" type=\"ST_PositiveCoordinate\" use=\"optional\" default=\"0\"/>\n* </xsd:complexType>\n* ```\n*/\nconst createGlowEffect = (options) => {\n\tconst colorChild = createColorElement(options.color);\n\tif (options.radius === void 0) return element(\"a:glow\", void 0, [colorChild]);\n\treturn element(\"a:glow\", { rad: options.radius }, [colorChild]);\n};\n//#endregion\n//#region src/drawingml/effects/inner-shadow.ts\n/**\n* Inner shadow effect for DrawingML shapes.\n*\n* Reference: ISO/IEC 29500-4, dml-main.xsd, CT_InnerShadowEffect\n*\n* @module\n*/\n/**\n* Creates an inner shadow effect element.\n*\n* ## XSD Schema\n* ```xml\n* <xsd:complexType name=\"CT_InnerShadowEffect\">\n* <xsd:sequence>\n* <xsd:group ref=\"EG_ColorChoice\" minOccurs=\"1\" maxOccurs=\"1\"/>\n* </xsd:sequence>\n* <xsd:attribute name=\"blurRad\" type=\"ST_PositiveCoordinate\" default=\"0\"/>\n* <xsd:attribute name=\"dist\" type=\"ST_PositiveCoordinate\" default=\"0\"/>\n* <xsd:attribute name=\"dir\" type=\"ST_PositiveFixedAngle\" default=\"0\"/>\n* </xsd:complexType>\n* ```\n*/\nconst createInnerShadowEffect = (options) => {\n\tconst colorChild = createColorElement(options.color);\n\tconst attrs = {};\n\tif (options.blurRadius !== void 0) attrs.blurRad = options.blurRadius;\n\tif (options.distance !== void 0) attrs.dist = options.distance;\n\tif (options.direction !== void 0) attrs.dir = options.direction;\n\treturn element(\"a:innerShdw\", Object.keys(attrs).length > 0 ? attrs : void 0, [colorChild]);\n};\n//#endregion\n//#region src/drawingml/effects/outer-shadow.ts\n/**\n* Outer shadow effect for DrawingML shapes.\n*\n* Reference: ISO/IEC 29500-4, dml-main.xsd, CT_OuterShadowEffect\n*\n* @module\n*/\n/**\n* Rectangle alignment for shadow positioning.\n*/\nconst RectAlignment = {\n\tTOP_LEFT: \"topLeft\",\n\tTOP: \"top\",\n\tTOP_RIGHT: \"topRight\",\n\tLEFT: \"left\",\n\tCENTER: \"center\",\n\tRIGHT: \"right\",\n\tBOTTOM_LEFT: \"bottomLeft\",\n\tBOTTOM: \"bottom\",\n\tBOTTOM_RIGHT: \"bottomRight\"\n};\n/**\n* Creates an outer shadow effect element.\n*\n* ## XSD Schema\n* ```xml\n* <xsd:complexType name=\"CT_OuterShadowEffect\">\n* <xsd:sequence>\n* <xsd:group ref=\"EG_ColorChoice\" minOccurs=\"1\" maxOccurs=\"1\"/>\n* </xsd:sequence>\n* <xsd:attribute name=\"blurRad\" type=\"ST_PositiveCoordinate\" default=\"0\"/>\n* <xsd:attribute name=\"dist\" type=\"ST_PositiveCoordinate\" default=\"0\"/>\n* <xsd:attribute name=\"dir\" type=\"ST_PositiveFixedAngle\" default=\"0\"/>\n* <xsd:attribute name=\"sx\" type=\"ST_Percentage\" default=\"100%\"/>\n* <xsd:attribute name=\"sy\" type=\"ST_Percentage\" default=\"100%\"/>\n* <xsd:attribute name=\"kx\" type=\"ST_FixedAngle\" default=\"0\"/>\n* <xsd:attribute name=\"ky\" type=\"ST_FixedAngle\" default=\"0\"/>\n* <xsd:attribute name=\"algn\" type=\"ST_RectAlignment\" default=\"b\"/>\n* <xsd:attribute name=\"rotWithShape\" type=\"xsd:boolean\" default=\"true\"/>\n* </xsd:complexType>\n* ```\n*/\nconst createOuterShadowEffect = (options) => {\n\tconst attrs = {};\n\tif (options.blurRadius !== void 0) attrs.blurRad = options.blurRadius;\n\tif (options.distance !== void 0) attrs.dist = options.distance;\n\tif (options.direction !== void 0) attrs.dir = options.direction;\n\tif (options.scaleX !== void 0) attrs.sx = options.scaleX;\n\tif (options.scaleY !== void 0) attrs.sy = options.scaleY;\n\tif (options.skewX !== void 0) attrs.kx = options.skewX;\n\tif (options.skewY !== void 0) attrs.ky = options.skewY;\n\tif (options.alignment !== void 0) attrs.algn = xsdRectAlignment.to(options.alignment);\n\tif (options.rotWithShape === false) attrs.rotWithShape = 0;\n\treturn element(\"a:outerShdw\", attrs, [createColorElement(options.color)]);\n};\n//#endregion\n//#region src/drawingml/effects/preset-shadow.ts\n/**\n* Preset shadow effect for DrawingML shapes.\n*\n* Reference: ISO/IEC 29500-4, dml-main.xsd, CT_PresetShadowEffect\n*\n* @module\n*/\n/**\n* Preset shadow types (20 variations).\n*\n* Reference: ISO/IEC 29500-4, dml-main.xsd, ST_PresetShadowVal\n*/\nconst PresetShadowVal = {\n\tSHDW1: \"shadow1\",\n\tSHDW2: \"shadow2\",\n\tSHDW3: \"shadow3\",\n\tSHDW4: \"shadow4\",\n\tSHDW5: \"shadow5\",\n\tSHDW6: \"shadow6\",\n\tSHDW7: \"shadow7\",\n\tSHDW8: \"shadow8\",\n\tSHDW9: \"shadow9\",\n\tSHDW10: \"shadow10\",\n\tSHDW11: \"shadow11\",\n\tSHDW12: \"shadow12\",\n\tSHDW13: \"shadow13\",\n\tSHDW14: \"shadow14\",\n\tSHDW15: \"shadow15\",\n\tSHDW16: \"shadow16\",\n\tSHDW17: \"shadow17\",\n\tSHDW18: \"shadow18\",\n\tSHDW19: \"shadow19\",\n\tSHDW20: \"shadow20\"\n};\n/**\n* Creates a preset shadow effect element.\n*\n* ## XSD Schema\n* ```xml\n* <xsd:complexType name=\"CT_PresetShadowEffect\">\n* <xsd:sequence>\n* <xsd:group ref=\"EG_ColorChoice\" minOccurs=\"1\" maxOccurs=\"1\"/>\n* </xsd:sequence>\n* <xsd:attribute name=\"prst\" type=\"ST_PresetShadowVal\" use=\"required\"/>\n* <xsd:attribute name=\"dist\" type=\"ST_PositiveCoordinate\" default=\"0\"/>\n* <xsd:attribute name=\"dir\" type=\"ST_PositiveFixedAngle\" default=\"0\"/>\n* </xsd:complexType>\n* ```\n*/\nconst createPresetShadowEffect = (options) => {\n\tconst attrs = { prst: xsdPresetShadow.to(options.preset) };\n\tif (options.distance !== void 0) attrs.dist = options.distance;\n\tif (options.direction !== void 0) attrs.dir = options.direction;\n\treturn element(\"a:prstShdw\", attrs, [createColorElement(options.color)]);\n};\n//#endregion\n//#region src/drawingml/effects/reflection.ts\n/**\n* Reflection effect for DrawingML shapes.\n*\n* Reference: ISO/IEC 29500-4, dml-main.xsd, CT_ReflectionEffect\n*\n* @module\n*/\n/**\n* Creates a reflection effect element.\n*\n* ## XSD Schema\n* ```xml\n* <xsd:complexType name=\"CT_ReflectionEffect\">\n* <xsd:attribute name=\"blurRad\" type=\"ST_PositiveCoordinate\" default=\"0\"/>\n* <xsd:attribute name=\"stA\" type=\"ST_PositiveFixedPercentage\" default=\"100%\"/>\n* <xsd:attribute name=\"stPos\" type=\"ST_PositiveFixedPercentage\" default=\"0%\"/>\n* <xsd:attribute name=\"endA\" type=\"ST_PositiveFixedPercentage\" default=\"0%\"/>\n* <xsd:attribute name=\"endPos\" type=\"ST_PositiveFixedPercentage\" default=\"100%\"/>\n* <xsd:attribute name=\"dist\" type=\"ST_PositiveCoordinate\" default=\"0\"/>\n* <xsd:attribute name=\"dir\" type=\"ST_PositiveFixedAngle\" default=\"0\"/>\n* <xsd:attribute name=\"fadeDir\" type=\"ST_PositiveFixedAngle\" default=\"5400000\"/>\n* <xsd:attribute name=\"sx\" type=\"ST_Percentage\" default=\"100%\"/>\n* <xsd:attribute name=\"sy\" type=\"ST_Percentage\" default=\"100%\"/>\n* <xsd:attribute name=\"kx\" type=\"ST_FixedAngle\" default=\"0\"/>\n* <xsd:attribute name=\"ky\" type=\"ST_FixedAngle\" default=\"0\"/>\n* <xsd:attribute name=\"algn\" type=\"ST_RectAlignment\" default=\"b\"/>\n* <xsd:attribute name=\"rotWithShape\" type=\"xsd:boolean\" default=\"true\"/>\n* </xsd:complexType>\n* ```\n*/\nconst createReflectionEffect = (options) => {\n\tif (!options) return \"<a:reflection/>\";\n\tconst attrs = {};\n\tif (options.blurRadius !== void 0) attrs.blurRad = options.blurRadius;\n\tif (options.startAlpha !== void 0) attrs.stA = options.startAlpha;\n\tif (options.startPosition !== void 0) attrs.stPos = options.startPosition;\n\tif (options.endAlpha !== void 0) attrs.endA = options.endAlpha;\n\tif (options.endPosition !== void 0) attrs.endPos = options.endPosition;\n\tif (options.distance !== void 0) attrs.dist = options.distance;\n\tif (options.direction !== void 0) attrs.dir = options.direction;\n\tif (options.fadeDirection !== void 0) attrs.fadeDir = options.fadeDirection;\n\tif (options.scaleX !== void 0) attrs.sx = options.scaleX;\n\tif (options.scaleY !== void 0) attrs.sy = options.scaleY;\n\tif (options.skewX !== void 0) attrs.kx = options.skewX;\n\tif (options.skewY !== void 0) attrs.ky = options.skewY;\n\tif (options.alignment !== void 0) attrs.algn = xsdRectAlignment.to(options.alignment);\n\tif (options.rotWithShape === false) attrs.rotWithShape = 0;\n\treturn element(\"a:reflection\", attrs);\n};\n//#endregion\n//#region src/drawingml/effects/soft-edge.ts\n/**\n* Soft edge effect for DrawingML shapes.\n*\n* Reference: ISO/IEC 29500-4, dml-main.xsd, CT_SoftEdgesEffect\n*\n* @module\n*/\n/**\n* Creates a soft edge effect element.\n*\n* ## XSD Schema\n* ```xml\n* <xsd:complexType name=\"CT_SoftEdgesEffect\">\n* <xsd:attribute name=\"rad\" type=\"ST_PositiveCoordinate\" use=\"required\"/>\n* </xsd:complexType>\n* ```\n*\n* @param rad - Soft edge radius in EMUs (required)\n*/\nconst createSoftEdgeEffect = (rad) => `<a:softEdge rad=\"${rad}\"/>`;\n//#endregion\n//#region src/drawingml/effects/effect-list.ts\n/**\n* Effect list container for DrawingML shapes.\n*\n* Reference: ISO/IEC 29500-4, dml-main.xsd, CT_EffectList, EG_EffectProperties\n*\n* @module\n*/\n/**\n* Calculates the effect extent for a given set of effects.\n*\n* The effectExtent specifies the additional extent which shall be added to each edge\n* of the image (top, bottom, left, right) in order to compensate for any drawing effects\n* applied to the DrawingML object.\n*\n* Reference: CT_EffectExtent in dml-wordprocessingDrawing.xsd\n*\n* @param options - Effect list options\n* @returns The calculated effect extent in EMUs\n*/\nconst calculateEffectExtent = (options) => {\n\tif (!options) return {\n\t\tl: 0,\n\t\tt: 0,\n\t\tr: 0,\n\t\tb: 0\n\t};\n\tlet l = 0, t = 0, r = 0, b = 0;\n\tif (options.outerShadow) {\n\t\tconst dist = options.outerShadow.distance ?? 0;\n\t\tconst blur = options.outerShadow.blurRadius ?? 0;\n\t\tconst radians = (options.outerShadow.direction ?? 0) / 6e4 * (Math.PI / 180);\n\t\tconst dx = Math.cos(radians) * dist;\n\t\tconst dy = Math.sin(radians) * dist;\n\t\tconst extend = Math.abs(dx) + blur;\n\t\tconst extendY = Math.abs(dy) + blur;\n\t\tif (dx > 0) r = Math.max(r, extend);\n\t\telse l = Math.max(l, extend);\n\t\tif (dy > 0) b = Math.max(b, extendY);\n\t\telse t = Math.max(t, extendY);\n\t}\n\tif (options.glow) {\n\t\tconst radius = options.glow.radius ?? 0;\n\t\tl = Math.max(l, radius);\n\t\tt = Math.max(t, radius);\n\t\tr = Math.max(r, radius);\n\t\tb = Math.max(b, radius);\n\t}\n\tif (options.reflection && options.reflection !== true) {\n\t\tconst dist = options.reflection.distance ?? 0;\n\t\tconst blur = options.reflection.blurRadius ?? 0;\n\t\tb = Math.max(b, dist + blur);\n\t}\n\tif (options.softEdge !== void 0) {\n\t\tl = Math.max(l, options.softEdge);\n\t\tt = Math.max(t, options.softEdge);\n\t\tr = Math.max(r, options.softEdge);\n\t\tb = Math.max(b, options.softEdge);\n\t}\n\treturn {\n\t\tl: Math.round(l),\n\t\tt: Math.round(t),\n\t\tr: Math.round(r),\n\t\tb: Math.round(b)\n\t};\n};\n/**\n* Creates a blur effect element.\n*\n* ## XSD Schema\n* ```xml\n* <xsd:complexType name=\"CT_BlurEffect\">\n* <xsd:attribute name=\"rad\" type=\"ST_PositiveCoordinate\" default=\"0\"/>\n* <xsd:attribute name=\"grow\" type=\"xsd:boolean\" default=\"true\"/>\n* </xsd:complexType>\n* ```\n*/\nconst createBlurEffect$1 = (options) => {\n\tconst attrs = {};\n\tif (options.radius !== void 0) attrs.rad = options.radius;\n\tif (options.grow === false) attrs.grow = 0;\n\treturn Object.keys(attrs).length > 0 ? element(\"a:blur\", attrs) : element(\"a:blur\");\n};\n/**\n* Creates an effect list element (a:effectLst).\n*\n* This is the EG_EffectProperties choice for a flat list of effects.\n* Effects are emitted in XSD order: blur, glow, innerShdw, outerShdw, prstShdw, reflection, softEdge.\n*\n* ## XSD Schema\n* ```xml\n* <xsd:complexType name=\"CT_EffectList\">\n* <xsd:sequence>\n* <xsd:element name=\"blur\" type=\"CT_BlurEffect\" minOccurs=\"0\"/>\n* <xsd:element name=\"fillOverlay\" type=\"CT_FillOverlayEffect\" minOccurs=\"0\"/>\n* <xsd:element name=\"glow\" type=\"CT_GlowEffect\" minOccurs=\"0\"/>\n* <xsd:element name=\"innerShdw\" type=\"CT_InnerShadowEffect\" minOccurs=\"0\"/>\n* <xsd:element name=\"outerShdw\" type=\"CT_OuterShadowEffect\" minOccurs=\"0\"/>\n* <xsd:element name=\"prstShdw\" type=\"CT_PresetShadowEffect\" minOccurs=\"0\"/>\n* <xsd:element name=\"reflection\" type=\"CT_ReflectionEffect\" minOccurs=\"0\"/>\n* <xsd:element name=\"softEdge\" type=\"CT_SoftEdgesEffect\" minOccurs=\"0\"/>\n* </xsd:sequence>\n* </xsd:complexType>\n* ```\n*/\nconst createEffectList = (options) => {\n\tconst children = [];\n\tif (options.blur) children.push(createBlurEffect$1(options.blur));\n\tif (options.fillOverlay) children.push(createFillOverlayEffect(options.fillOverlay));\n\tif (options.glow) children.push(createGlowEffect(options.glow));\n\tif (options.innerShadow) children.push(createInnerShadowEffect(options.innerShadow));\n\tif (options.outerShadow) children.push(createOuterShadowEffect(options.outerShadow));\n\tif (options.presetShadow) children.push(createPresetShadowEffect(options.presetShadow));\n\tif (options.reflection) children.push(createReflectionEffect(options.reflection === true ? void 0 : options.reflection));\n\tif (options.softEdge !== void 0) children.push(createSoftEdgeEffect(options.softEdge));\n\treturn element(\"a:effectLst\", void 0, children);\n};\n//#endregion\n//#region src/drawingml/effects/effect-dag.ts\n/**\n* Effect container (effectDag) for DrawingML shapes.\n*\n* Provides CT_EffectContainer — a directed acyclic graph (DAG) of effects\n* supporting 28 effect types including alpha/color operations, nested containers,\n* and all effects from CT_EffectList.\n*\n* Reference: ISO/IEC 29500-4, dml-main.xsd, CT_EffectContainer, EG_Effect\n*\n* @module\n*/\nconst createAlphaBiLevelEffect = (options) => `<a:alphaBiLevel thresh=\"${options.threshold}\"/>`;\nconst createAlphaCeilingEffect = () => \"<a:alphaCeiling/>\";\nconst createAlphaFloorEffect = () => \"<a:alphaFloor/>\";\nconst createAlphaInverseEffect = (options) => element(\"a:alphaInv\", void 0, options?.color ? [createColorElement(options.color)] : void 0);\nconst createAlphaModulateFixedEffect = (options) => options?.amount === void 0 ? \"<a:alphaModFix/>\" : `<a:alphaModFix amt=\"${options.amount}\"/>`;\nconst createAlphaOutsetEffect = (options) => options?.radius === void 0 ? \"<a:alphaOutset/>\" : `<a:alphaOutset rad=\"${options.radius}\"/>`;\nconst createAlphaReplaceEffect = (options) => `<a:alphaRepl a=\"${options.alpha}\"/>`;\nconst createBiLevelEffect = (thresh) => `<a:biLevel thresh=\"${thresh}\"/>`;\nconst createBlendEffect = (options) => element(\"a:blend\", { blend: xsdBlendMode.to(options.blend) }, [createEffectContainer(options.container)]);\nconst createColorChangeEffect = (options) => {\n\tconst children = [element(\"a:clrFrom\", void 0, [createColorElement(options.from)]), element(\"a:clrTo\", void 0, [createColorElement(options.to)])];\n\tif (options.useA === false) return element(\"a:clrChange\", { useA: 0 }, children);\n\treturn element(\"a:clrChange\", void 0, children);\n};\nconst createColorReplaceEffect = (color) => element(\"a:clrRepl\", void 0, [createColorElement(color)]);\nconst createDuotoneEffect = (options) => element(\"a:duotone\", void 0, [createColorElement(options.color1), createColorElement(options.color2)]);\nconst createFillEffect = (options) => {\n\tlet fillElement;\n\tif (options.noFill) fillElement = createNoFill();\n\telse if (options.solidFill) fillElement = createSolidFill(options.solidFill);\n\telse if (options.gradientFill) fillElement = createGradientFill(options.gradientFill);\n\telse if (options.patternFill) fillElement = createPatternFill(options.patternFill);\n\telse if (options.groupFill) fillElement = createGroupFill();\n\telse fillElement = createNoFill();\n\treturn element(\"a:fill\", void 0, [fillElement]);\n};\nconst createGrayscaleEffect = () => \"<a:grayscl/>\";\nconst createHSLEffect = (options) => {\n\tconst attrs = {};\n\tif (options?.hue !== void 0) attrs.hue = options.hue;\n\tif (options?.saturation !== void 0) attrs.sat = options.saturation;\n\tif (options?.luminance !== void 0) attrs.lum = options.luminance;\n\treturn element(\"a:hsl\", Object.keys(attrs).length > 0 ? attrs : void 0);\n};\nconst createLuminanceEffect = (options) => {\n\tconst attrs = {};\n\tif (options?.bright !== void 0) attrs.bright = options.bright;\n\tif (options?.contrast !== void 0) attrs.contrast = options.contrast;\n\treturn element(\"a:lum\", Object.keys(attrs).length > 0 ? attrs : void 0);\n};\nconst createTintEffect = (options) => {\n\tconst attrs = {};\n\tif (options?.hue !== void 0) attrs.hue = options.hue;\n\tif (options?.amount !== void 0) attrs.amt = options.amount;\n\treturn element(\"a:tint\", Object.keys(attrs).length > 0 ? attrs : void 0);\n};\nconst createRelativeOffsetEffect = (options) => {\n\tconst attrs = {};\n\tif (options?.translateX !== void 0) attrs.tx = options.translateX;\n\tif (options?.translateY !== void 0) attrs.ty = options.translateY;\n\treturn element(\"a:relOff\", Object.keys(attrs).length > 0 ? attrs : void 0);\n};\nconst createTransformEffect = (options) => {\n\tconst attrs = {};\n\tif (options?.scaleX !== void 0) attrs.sx = options.scaleX;\n\tif (options?.scaleY !== void 0) attrs.sy = options.scaleY;\n\tif (options?.skewX !== void 0) attrs.kx = options.skewX;\n\tif (options?.skewY !== void 0) attrs.ky = options.skewY;\n\tif (options?.translateX !== void 0) attrs.tx = options.translateX;\n\tif (options?.translateY !== void 0) attrs.ty = options.translateY;\n\treturn element(\"a:xfrm\", Object.keys(attrs).length > 0 ? attrs : void 0);\n};\nconst createEffectReference = (options) => `<a:effect ref=\"${options.ref}\"/>`;\nconst createBlurEffect = (options) => {\n\tconst attrs = {};\n\tif (options.radius !== void 0) attrs.rad = options.radius;\n\tif (options.grow === false) attrs.grow = 0;\n\treturn element(\"a:blur\", Object.keys(attrs).length > 0 ? attrs : void 0);\n};\n/**\n* Creates an effect container element (a:effectDag or a:cont).\n*\n* This is the CT_EffectContainer type — a recursive DAG of effects.\n* All 28 EG_Effect types are supported.\n*\n* ## XSD Schema\n* ```xml\n* <xsd:complexType name=\"CT_EffectContainer\">\n* <xsd:group ref=\"EG_Effect\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n* <xsd:attribute name=\"type\" type=\"ST_EffectContainerType\" default=\"sib\"/>\n* <xsd:attribute name=\"name\" type=\"xsd:token\" use=\"optional\"/>\n* </xsd:complexType>\n* ```\n*\n* @param options - Container options with effects\n* @param elementName - Element name, defaults to \"a:cont\" for top-level\n*/\nconst createEffectContainer = (options, elementName = \"a:cont\") => {\n\tconst attrs = {};\n\tif (options.type) attrs.type = xsdEffectContainer.to(options.type);\n\tif (options.name) attrs.name = options.name;\n\tconst children = [];\n\tif (options.blur) children.push(createBlurEffect(options.blur));\n\tif (options.fillOverlay) children.push(createFillOverlayEffect(options.fillOverlay));\n\tif (options.glow) children.push(createGlowEffect(options.glow));\n\tif (options.innerShadow) children.push(createInnerShadowEffect(options.innerShadow));\n\tif (options.outerShadow) children.push(createOuterShadowEffect(options.outerShadow));\n\tif (options.presetShadow) children.push(createPresetShadowEffect(options.presetShadow));\n\tif (options.reflection) children.push(createReflectionEffect(options.reflection === true ? void 0 : options.reflection));\n\tif (options.softEdge !== void 0) children.push(createSoftEdgeEffect(options.softEdge));\n\tif (options.containers) for (const nested of options.containers) children.push(createEffectContainer(nested));\n\tif (options.effectRefs) for (const ref of options.effectRefs) children.push(createEffectReference(ref));\n\tif (options.alphaBiLevel) children.push(createAlphaBiLevelEffect(options.alphaBiLevel));\n\tif (options.alphaCeiling) children.push(createAlphaCeilingEffect());\n\tif (options.alphaFloor) children.push(createAlphaFloorEffect());\n\tif (options.alphaInverse) children.push(createAlphaInverseEffect(options.alphaInverse));\n\tif (options.alphaModulate) children.push(element(\"a:alphaMod\", void 0, [createEffectContainer(options.alphaModulate)]));\n\tif (options.alphaModulateFixed) children.push(createAlphaModulateFixedEffect(options.alphaModulateFixed));\n\tif (options.alphaOutset) children.push(createAlphaOutsetEffect(options.alphaOutset));\n\tif (options.alphaReplace) children.push(createAlphaReplaceEffect(options.alphaReplace));\n\tif (options.biLevel) children.push(createBiLevelEffect(options.biLevel.threshold));\n\tif (options.blend) children.push(createBlendEffect(options.blend));\n\tif (options.colorChange) children.push(createColorChangeEffect(options.colorChange));\n\tif (options.colorReplace) children.push(createColorReplaceEffect(options.colorReplace));\n\tif (options.duotone) children.push(createDuotoneEffect(options.duotone));\n\tif (options.fill) children.push(createFillEffect(options.fill));\n\tif (options.grayscale) children.push(createGrayscaleEffect());\n\tif (options.hsl) children.push(createHSLEffect(options.hsl));\n\tif (options.luminance) children.push(createLuminanceEffect(options.luminance));\n\tif (options.tint) children.push(createTintEffect(options.tint));\n\tif (options.relativeOffset) children.push(createRelativeOffsetEffect(options.relativeOffset));\n\tif (options.transform) children.push(createTransformEffect(options.transform));\n\treturn element(elementName, Object.keys(attrs).length > 0 ? attrs : void 0, children.length > 0 ? children : void 0);\n};\n/**\n* Creates an effect DAG element (a:effectDag).\n*\n* This is the EG_EffectProperties choice alternative to effectLst,\n* supporting all 28 effect types with recursive nesting.\n*\n* @example\n* ```typescript\n* // Simple effect DAG with glow and outer shadow\n* createEffectDag({\n* glow: { radius: 50800, color: { value: \"FF0000\" } },\n* outerShadow: { color: { value: \"000000\" }, blurRadius: 76200 },\n* });\n*\n* // DAG with alpha effects and nested container\n* createEffectDag({\n* type: \"tree\",\n* alphaBiLevel: { threshold: 50000 },\n* containers: [{\n* glow: { color: { value: \"FF0000\" } },\n* }],\n* });\n* ```\n*/\nconst createEffectDag = (options) => createEffectContainer(options, \"a:effectDag\");\n//#endregion\n//#region src/drawingml/three-d/scene-3d.ts\n/**\n* 3D scene module for DrawingML shapes.\n*\n* Provides CT_Scene3D — the 3D scene properties including camera, light rig,\n* and optional backdrop that define how a 3D shape is rendered.\n*\n* Reference: ISO/IEC 29500-4, dml-main.xsd, CT_Scene3D\n*\n* @module\n*/\nconst createSphereCoords = (coords) => `<a:rot lat=\"${coords.lat}\" lon=\"${coords.lon}\" rev=\"${coords.rev}\"/>`;\nconst createCamera = (options) => {\n\tconst children = [];\n\tif (options.rotation) children.push(createSphereCoords(options.rotation));\n\treturn element(\"a:camera\", {\n\t\tprst: options.preset,\n\t\tfov: options.fov,\n\t\tzoom: options.zoom\n\t}, children);\n};\nconst createLightRig = (options) => {\n\tconst children = [];\n\tif (options.rotation) children.push(createSphereCoords(options.rotation));\n\treturn element(\"a:lightRig\", {\n\t\trig: options.rig,\n\t\tdir: options.direction\n\t}, children);\n};\nconst createPoint3D = (name, point) => `<${name} x=\"${point.x}\" y=\"${point.y}\" z=\"${point.z}\"/>`;\nconst createVector3D = (name, vector) => `<${name} dx=\"${vector.dx}\" dy=\"${vector.dy}\" dz=\"${vector.dz}\"/>`;\nconst createBackdrop = (options) => element(\"a:backdrop\", void 0, [\n\tcreatePoint3D(\"a:anchor\", options.anchor),\n\tcreateVector3D(\"a:norm\", options.normal),\n\tcreateVector3D(\"a:up\", options.up)\n]);\n/**\n* Creates a 3D scene element (a:scene3d).\n*\n* @example\n* ```typescript\n* // Simple scene with default camera and lighting\n* createScene3D({\n* camera: { preset: \"perspectiveFront\" },\n* lightRig: { rig: \"threePt\", direction: \"t\" },\n* });\n*\n* // Scene with rotated camera and backdrop\n* createScene3D({\n* camera: {\n* preset: \"isometricTopUp\",\n* rotation: { lat: 0, lon: 0, rev: 5400000 },\n* },\n* lightRig: { rig: \"balanced\", direction: \"tl\" },\n* backdrop: {\n* anchor: { x: 0, y: 0, z: 0 },\n* normal: { dx: 0, dy: 0, dz: 1 },\n* up: { dx: 0, dy: 1, dz: 0 },\n* },\n* });\n* ```\n*/\nconst createScene3D = (options) => {\n\tconst children = [createCamera(options.camera), createLightRig(options.lightRig)];\n\tif (options.backdrop) children.push(createBackdrop(options.backdrop));\n\treturn element(\"a:scene3d\", void 0, children);\n};\n//#endregion\n//#region src/drawingml/three-d/bevel.ts\n/**\n* Bevel element for DrawingML 3D shapes.\n*\n* Reference: ISO/IEC 29500-4, dml-main.xsd, CT_Bevel\n*\n* @module\n*/\n/**\n* Bevel preset types (12 variations).\n*\n* Reference: ISO/IEC 29500-4, dml-main.xsd, ST_BevelPresetType\n*/\nconst BevelPresetType = {\n\tRELAXED_INSET: \"relaxedInset\",\n\tCIRCLE: \"circle\",\n\tSLOPE: \"slope\",\n\tCROSS: \"cross\",\n\tANGLE: \"angle\",\n\tSOFT_ROUND: \"softRound\",\n\tCONVEX: \"convex\",\n\tCOOL_SLANT: \"coolSlant\",\n\tDIVOT: \"divot\",\n\tRIBLET: \"riblet\",\n\tHARD_EDGE: \"hardEdge\",\n\tART_DECO: \"artDeco\"\n};\n/**\n* Creates a bevel element.\n*\n* ## XSD Schema\n* ```xml\n* <xsd:complexType name=\"CT_Bevel\">\n* <xsd:attribute name=\"w\" type=\"ST_PositiveCoordinate\" default=\"76200\"/>\n* <xsd:attribute name=\"h\" type=\"ST_PositiveCoordinate\" default=\"76200\"/>\n* <xsd:attribute name=\"prst\" type=\"ST_BevelPresetType\" default=\"circle\"/>\n* </xsd:complexType>\n* ```\n*/\nconst createBevel = (options) => {\n\tif (!options) return `<a:bevelT/>`;\n\tconst attrs = {};\n\tif (options.w !== void 0) attrs.w = options.w;\n\tif (options.h !== void 0) attrs.h = options.h;\n\tif (options.prst !== void 0) attrs.prst = options.prst;\n\treturn element(\"a:bevelT\", attrs);\n};\n/**\n* Creates a bottom bevel element (a:bevelB).\n*/\nconst createBottomBevel = (options) => {\n\tif (!options) return `<a:bevelB/>`;\n\tconst attrs = {};\n\tif (options.w !== void 0) attrs.w = options.w;\n\tif (options.h !== void 0) attrs.h = options.h;\n\tif (options.prst !== void 0) attrs.prst = options.prst;\n\treturn element(\"a:bevelB\", attrs);\n};\n//#endregion\n//#region src/drawingml/three-d/shape-3d.ts\n/**\n* 3D shape properties for DrawingML.\n*\n* Reference: ISO/IEC 29500-4, dml-main.xsd, CT_Shape3D\n*\n* @module\n*/\n/**\n* Preset material types for 3D shapes (15 variations).\n*\n* Reference: ISO/IEC 29500-4, dml-main.xsd, ST_PresetMaterialType\n*/\nconst PresetMaterialType = {\n\tLEGACY_MATTE: \"legacyMatte\",\n\tLEGACY_PLASTIC: \"legacyPlastic\",\n\tLEGACY_METAL: \"legacyMetal\",\n\tLEGACY_WIREFRAME: \"legacyWireframe\",\n\tMATTE: \"matte\",\n\tPLASTIC: \"plastic\",\n\tMETAL: \"metal\",\n\tWARM_MATTE: \"warmMatte\",\n\tTRANSLUCENT_POWDER: \"translucentPowder\",\n\tPOWDER: \"powder\",\n\tDK_EDGE: \"darkEdge\",\n\tSOFT_EDGE: \"softEdge\",\n\tCLEAR: \"clear\",\n\tFLAT: \"flat\",\n\tSOFT_METAL: \"softMetal\"\n};\n/**\n* Creates a 3D shape properties element (a:sp3d).\n*\n* ## XSD Schema\n* ```xml\n* <xsd:complexType name=\"CT_Shape3D\">\n* <xsd:sequence>\n* <xsd:element name=\"bevelT\" type=\"CT_Bevel\" minOccurs=\"0\"/>\n* <xsd:element name=\"bevelB\" type=\"CT_Bevel\" minOccurs=\"0\"/>\n* <xsd:element name=\"extrusionClr\" type=\"CT_Color\" minOccurs=\"0\"/>\n* <xsd:element name=\"contourClr\" type=\"CT_Color\" minOccurs=\"0\"/>\n* </xsd:sequence>\n* <xsd:attribute name=\"z\" type=\"ST_Coordinate\" default=\"0\"/>\n* <xsd:attribute name=\"extrusionH\" type=\"ST_PositiveCoordinate\" default=\"0\"/>\n* <xsd:attribute name=\"contourW\" type=\"ST_PositiveCoordinate\" default=\"0\"/>\n* <xsd:attribute name=\"prstMaterial\" type=\"ST_PresetMaterialType\" default=\"warmMatte\"/>\n* </xsd:complexType>\n* ```\n*/\nconst createShape3D = (options) => {\n\tconst children = [];\n\tif (options.bevelT) children.push(createBevel(options.bevelT));\n\tif (options.bevelB) children.push(createBottomBevel(options.bevelB));\n\tif (options.extrusionColor) children.push(element(\"a:extrusionClr\", void 0, [createColorElement(options.extrusionColor)]));\n\tif (options.contourColor) children.push(element(\"a:contourClr\", void 0, [createColorElement(options.contourColor)]));\n\tconst attrs = {};\n\tif (options.z !== void 0) attrs.z = options.z;\n\tif (options.extrusionH !== void 0) attrs.extrusionH = options.extrusionH;\n\tif (options.contourW !== void 0) attrs.contourW = options.contourW;\n\tif (options.prstMaterial !== void 0) attrs.prstMaterial = xsdMaterialType.to(options.prstMaterial);\n\treturn element(\"a:sp3d\", attrs, children);\n};\n//#endregion\n//#region src/drawingml/geometry/adjustment-values.ts\n/**\n* Adjustment values module for preset geometries.\n*\n* @module\n*/\n/**\n* Build a:avLst XML string from geometry guides.\n*/\nfunction stringifyAdjustmentValues(guides) {\n\tif (!guides || guides.length === 0) return \"<a:avLst/>\";\n\treturn `<a:avLst>${guides.map((g) => `<a:gd name=\"${escapeXml(g.name)}\" fmla=\"${escapeXml(g.formula)}\"/>`).join(\"\")}</a:avLst>`;\n}\n//#endregion\n//#region src/drawingml/geometry/preset-geometry.ts\n/**\n* Build a:prstGeom XML string.\n*/\nfunction stringifyPresetGeometry(options) {\n\treturn `<a:prstGeom prst=\"${options?.preset ?? \"rect\"}\">${stringifyAdjustmentValues(options?.adjustmentValues)}</a:prstGeom>`;\n}\n//#endregion\n//#region src/drawingml/geometry/custom-geometry.ts\n/**\n* Custom geometry module for DrawingML shapes.\n*\n* Provides CT_CustomGeometry2D — user-defined 2D geometry with paths,\n* guides, adjust handles, connection sites, and a text insertion rectangle.\n*\n* Reference: ISO/IEC 29500-4, dml-main.xsd, CT_CustomGeometry2D\n*\n* @module\n*/\n/**\n* Creates a geometry guide list element (a:avLst or a:gdLst).\n*\n* Both CT_GeomGuideList types share the same structure — a list of `a:gd` children.\n* The only difference is the wrapper element name.\n*/\nconst createGuideList = (name, guides) => {\n\treturn element(name, void 0, guides.map((guide) => `<a:gd name=\"${guide.name}\" fmla=\"${guide.formula}\"/>`));\n};\nconst createAdjustPoint = (name, point) => element(name, void 0, [`<a:pt x=\"${point.x}\" y=\"${point.y}\"/>`]);\nconst createPathCommand = (cmd) => {\n\tswitch (cmd.command) {\n\t\tcase \"moveTo\": return createAdjustPoint(\"a:moveTo\", cmd.point);\n\t\tcase \"lineTo\": return createAdjustPoint(\"a:lnTo\", cmd.point);\n\t\tcase \"arcTo\": return `<a:arcTo wR=\"${cmd.widthRadius}\" hR=\"${cmd.heightRadius}\" stAng=\"${cmd.startAngle}\" swAng=\"${cmd.sweepAngle}\"/>`;\n\t\tcase \"quadBezTo\": return element(\"a:quadBezTo\", void 0, cmd.points.map((pt) => `<a:pt x=\"${pt.x}\" y=\"${pt.y}\"/>`));\n\t\tcase \"cubicBezTo\": return element(\"a:cubicBezTo\", void 0, cmd.points.map((pt) => `<a:pt x=\"${pt.x}\" y=\"${pt.y}\"/>`));\n\t\tcase \"close\": return \"<a:close/>\";\n\t}\n};\nconst createPath = (options) => {\n\tconst attrs = {};\n\tif (options.w !== void 0) attrs.w = options.w;\n\tif (options.h !== void 0) attrs.h = options.h;\n\tif (options.fill !== void 0) attrs.fill = xsdPathFillMode.to(options.fill);\n\tif (options.stroke !== void 0) attrs.stroke = options.stroke;\n\tif (options.extrusionOk !== void 0) attrs.extrusionOk = options.extrusionOk;\n\treturn element(\"a:path\", attrs, options.commands.map(createPathCommand));\n};\nconst createAdjustHandlePos = (position) => `<a:pos x=\"${position.x}\" y=\"${position.y}\"/>`;\nconst createXYAdjustHandle = (handle) => {\n\tconst attrs = {};\n\tif (handle.guideRefX !== void 0) attrs.gdRefX = handle.guideRefX;\n\tif (handle.minX !== void 0) attrs.minX = handle.minX;\n\tif (handle.maxX !== void 0) attrs.maxX = handle.maxX;\n\tif (handle.guideRefY !== void 0) attrs.gdRefY = handle.guideRefY;\n\tif (handle.minY !== void 0) attrs.minY = handle.minY;\n\tif (handle.maxY !== void 0) attrs.maxY = handle.maxY;\n\treturn element(\"a:ahXY\", attrs, [createAdjustHandlePos(handle.position)]);\n};\nconst createPolarAdjustHandle = (handle) => {\n\tconst attrs = {};\n\tif (handle.guideRefRadius !== void 0) attrs.gdRefR = handle.guideRefRadius;\n\tif (handle.minRadius !== void 0) attrs.minR = handle.minRadius;\n\tif (handle.maxRadius !== void 0) attrs.maxR = handle.maxRadius;\n\tif (handle.guideRefAngle !== void 0) attrs.gdRefAng = handle.guideRefAngle;\n\tif (handle.minAngle !== void 0) attrs.minAng = handle.minAngle;\n\tif (handle.maxAngle !== void 0) attrs.maxAng = handle.maxAngle;\n\treturn element(\"a:ahPolar\", attrs, [createAdjustHandlePos(handle.position)]);\n};\nconst createConnectionSite = (site) => element(\"a:cxn\", { ang: site.angle }, [createAdjustHandlePos(site.position)]);\nconst createGeomRect = (rect) => `<a:rect l=\"${rect.left}\" t=\"${rect.top}\" r=\"${rect.right}\" b=\"${rect.bottom}\"/>`;\n/**\n* Creates a custom 2D geometry element as an XML string (a:custGeom).\n*\n* @example\n* ```typescript\n* // Diamond shape\n* const geom = createCustomGeometry({\n* pathList: [{\n* commands: [\n* { command: \"moveTo\", point: { x: \"5000000\", y: \"0\" } },\n* { command: \"lineTo\", point: { x: \"10000000\", y: \"5000000\" } },\n* { command: \"lineTo\", point: { x: \"5000000\", y: \"10000000\" } },\n* { command: \"lineTo\", point: { x: \"0\", y: \"5000000\" } },\n* { command: \"close\" },\n* ],\n* }],\n* textRectangle: { left: \"2000000\", top: \"2000000\", right: \"8000000\", bottom: \"8000000\" },\n* });\n* ```\n*/\nconst createCustomGeometry = (options) => {\n\tconst children = [];\n\tif (options.adjustmentValues) children.push(createGuideList(\"a:avLst\", options.adjustmentValues));\n\tif (options.guides) children.push(createGuideList(\"a:gdLst\", options.guides));\n\tif (options.adjustHandles && options.adjustHandles.length > 0) children.push(element(\"a:ahLst\", void 0, options.adjustHandles.map((h) => h.type === \"xy\" ? createXYAdjustHandle(h) : createPolarAdjustHandle(h))));\n\tif (options.connectionSites && options.connectionSites.length > 0) children.push(element(\"a:cxnLst\", void 0, options.connectionSites.map(createConnectionSite)));\n\tif (options.textRectangle) children.push(createGeomRect(options.textRectangle));\n\tchildren.push(element(\"a:pathLst\", void 0, options.pathList.map(createPath)));\n\treturn element(\"a:custGeom\", void 0, children);\n};\n//#endregion\n//#region src/drawingml/blip/blip-extensions.ts\n/**\n* Blip extensions module for SVG support.\n*\n* This module provides extension elements that enable SVG image support\n* within blip elements using Office-specific extensions.\n*\n* Reference: http://officeopenxml.com/drwPic.php\n*\n* @module\n*/\n/**\n* Creates an SVG blip element for embedding SVG images.\n*\n* This element is a Microsoft Office extension that allows SVG images\n* to be referenced within a blip.\n*\n* @param svgReferenceId - The reference ID for the SVG image\n* @returns An XML string representing the SVG blip element\n* @internal\n*/\nconst createSvgBlip = (svgReferenceId) => `<asvg:svgBlip xmlns:asvg=\"http://schemas.microsoft.com/office/drawing/2016/SVG/main\" r:embed=\"{${svgReferenceId}}\"/>`;\n/**\n* Creates an extension element for SVG support.\n*\n* This element wraps the SVG blip extension with the appropriate URI\n* to identify it as an SVG extension.\n*\n* @param svgReferenceId - The reference ID for the SVG image\n* @returns An XML string representing the extension element\n* @internal\n*/\nconst createExtension = (svgReferenceId) => element(\"a:ext\", { uri: \"{96DAC541-7B7A-43D3-8B79-37D633B846F1}\" }, [createSvgBlip(svgReferenceId)]);\n/**\n* Creates an extension list for SVG images.\n*\n* This element contains the extensions needed to embed SVG images\n* within a blip. It wraps the SVG-specific extension elements.\n*\n* ## XSD Schema\n* ```xml\n* <xsd:complexType name=\"CT_OfficeArtExtensionList\">\n* <xsd:sequence>\n* <xsd:element name=\"ext\" type=\"CT_OfficeArtExtension\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n* </xsd:sequence>\n* </xsd:complexType>\n* ```\n*\n* @param svgReferenceId - The reference ID for the SVG image\n* @returns An XML string representing the extension list\n*/\nconst createExtensionList = (svgReferenceId) => element(\"a:extLst\", void 0, [createExtension(svgReferenceId)]);\n//#endregion\n//#region src/drawingml/blip/blip.ts\n/**\n* Blip (Binary Large Image or Picture) module for DrawingML.\n*\n* This module provides the blip element that references the actual\n* image data within a picture.\n*\n* Reference: http://officeopenxml.com/drwPic.php\n*\n* @module\n*/\n/**\n* Creates a blip element for an image.\n*\n* A blip references the actual image data stored in the document package\n* through a relationship ID. For SVG images, it includes extensions that\n* reference the SVG data.\n*\n* Reference: http://officeopenxml.com/drwPic.php\n*\n* ## XSD Schema\n* ```xml\n* <xsd:complexType name=\"CT_Blip\">\n* <xsd:sequence>\n* <xsd:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n* <xsd:element name=\"alphaBiLevel\" type=\"CT_AlphaBiLevelEffect\"/>\n* <xsd:element name=\"alphaCeiling\" type=\"CT_AlphaCeilingEffect\"/>\n* <xsd:element name=\"alphaFloor\" type=\"CT_AlphaFloorEffect\"/>\n* <xsd:element name=\"alphaInv\" type=\"CT_AlphaInverseEffect\"/>\n* <xsd:element name=\"alphaMod\" type=\"CT_AlphaModulateEffect\"/>\n* <xsd:element name=\"alphaModFix\" type=\"CT_AlphaModulateFixedEffect\"/>\n* <xsd:element name=\"alphaRepl\" type=\"CT_AlphaReplaceEffect\"/>\n* <xsd:element name=\"biLevel\" type=\"CT_BiLevelEffect\"/>\n* <xsd:element name=\"blur\" type=\"CT_BlurEffect\"/>\n* <xsd:element name=\"clrChange\" type=\"CT_ColorChangeEffect\"/>\n* <xsd:element name=\"clrRepl\" type=\"CT_ColorReplaceEffect\"/>\n* <xsd:element name=\"duotone\" type=\"CT_DuotoneEffect\"/>\n* <xsd:element name=\"fillOverlay\" type=\"CT_FillOverlayEffect\"/>\n* <xsd:element name=\"grayscl\" type=\"CT_GrayscaleEffect\"/>\n* <xsd:element name=\"hsl\" type=\"CT_HSLEffect\"/>\n* <xsd:element name=\"lum\" type=\"CT_LuminanceEffect\"/>\n* <xsd:element name=\"tint\" type=\"CT_TintEffect\"/>\n* </xsd:choice>\n* <xsd:element name=\"extLst\" type=\"CT_OfficeArtExtensionList\" minOccurs=\"0\"/>\n* </xsd:sequence>\n* <xsd:attribute ref=\"r:embed\"/>\n* <xsd:attribute ref=\"r:link\"/>\n* <xsd:attribute name=\"cstate\" type=\"ST_BlipCompression\"/>\n* </xsd:complexType>\n* ```\n*\n* @param options - Blip options including referenceId and type\n* @param blipEffects - Optional blip effects (brightness, contrast, etc.)\n* @returns An XML string representing the blip element\n*/\nconst createBlip = (options, blipEffects) => {\n\tconst children = [];\n\tif (blipEffects) children.push(...createBlipEffects(blipEffects));\n\tif (options.type === \"svg\" && options.fallbackFileName) children.push(createExtensionList(options.referenceId));\n\treturn element(\"a:blip\", {\n\t\tcstate: \"none\",\n\t\t\"r:embed\": `{${options.type === \"svg\" && options.fallbackFileName ? options.fallbackFileName : options.referenceId}}`\n\t}, children.length > 0 ? children : void 0);\n};\n//#endregion\n//#region src/drawingml/blip/blip-fill.ts\n/**\n* Blip fill module for DrawingML pictures.\n*\n* This module defines how an image (blip) fills a picture shape,\n* including stretching and cropping options.\n*\n* Reference: ISO/IEC 29500-4, dml-main.xsd, CT_BlipFillProperties\n*\n* @module\n*/\n/**\n* Creates a blip fill element.\n*\n* This element specifies the type of fill used for a picture. It contains the blip (image)\n* reference, an optional source rectangle for cropping, and the fill mode (typically stretch).\n*\n* Reference: ISO/IEC 29500-4, dml-main.xsd, CT_BlipFillProperties\n*\n* ## XSD Schema\n* ```xml\n* <xsd:complexType name=\"CT_BlipFillProperties\">\n* <xsd:sequence>\n* <xsd:element name=\"blip\" type=\"CT_Blip\" minOccurs=\"0\" maxOccurs=\"1\"/>\n* <xsd:element name=\"srcRect\" type=\"CT_RelativeRect\" minOccurs=\"0\" maxOccurs=\"1\"/>\n* <xsd:group ref=\"EG_FillModeProperties\" minOccurs=\"0\" maxOccurs=\"1\"/>\n* </xsd:sequence>\n* <xsd:attribute name=\"dpi\" type=\"xsd:unsignedInt\" use=\"optional\"/>\n* <xsd:attribute name=\"rotWithShape\" type=\"xsd:boolean\" use=\"optional\"/>\n* </xsd:complexType>\n* ```\n*\n* @param blipOptions - Blip options including referenceId and type\n* @param fillOptions - Optional blip fill options\n* @returns An XML string representing the blip fill element\n*/\nconst createBlipFill = (blipOptions, fillOptions) => {\n\tconst children = [];\n\tchildren.push(createBlip(blipOptions, fillOptions?.blipEffects));\n\tchildren.push(createSourceRectangle(fillOptions?.sourceRectangle));\n\tif (fillOptions?.tile) children.push(createTileInfo(fillOptions.tile));\n\telse children.push(\"<a:stretch><a:fillRect/></a:stretch>\");\n\tconst attrs = {};\n\tif (fillOptions?.dpi !== void 0) attrs.dpi = fillOptions.dpi;\n\tif (fillOptions?.rotWithShape !== void 0) attrs.rotWithShape = fillOptions.rotWithShape ? 1 : 0;\n\treturn element(\"pic:blipFill\", attrs, children);\n};\n//#endregion\n//#region src/drawingml/blip/stretch.ts\n/**\n* Stretch fill stringifier for blip fills.\n*\n* @module\n*/\n/**\n* Build a:stretch XML string with a:fillRect child.\n*/\nfunction stringifyStretch() {\n\treturn \"<a:stretch><a:fillRect/></a:stretch>\";\n}\n//#endregion\n//#region src/drawingml/transform.ts\nfunction buildXfrmAttrs(options) {\n\tconst attrs = {};\n\tif (options.flipHorizontal !== void 0) attrs.flipH = options.flipHorizontal;\n\tif (options.flipVertical !== void 0) attrs.flipV = options.flipVertical;\n\tif (options.rotation !== void 0) attrs.rot = options.rotation;\n\treturn Object.keys(attrs).length > 0 ? attrs : void 0;\n}\n/**\n* Creates a 2D transform element (a:xfrm).\n*\n* @param options - Transform options including position, size, rotation, and flip.\n* @param elementName - Element name, defaults to \"a:xfrm\".\n*/\nconst createTransform2D = (options, elementName = \"a:xfrm\") => {\n\tconst children = [];\n\tif (options.x !== void 0 || options.y !== void 0) {\n\t\tconst x = options.x !== void 0 ? convertToEmu(options.x) : 0;\n\t\tconst y = options.y !== void 0 ? convertToEmu(options.y) : 0;\n\t\tchildren.push(`<a:off x=\"${x}\" y=\"${y}\"/>`);\n\t}\n\tif (options.width !== void 0 || options.height !== void 0) {\n\t\tconst cx = options.width !== void 0 ? convertToEmu(options.width) : 0;\n\t\tconst cy = options.height !== void 0 ? convertToEmu(options.height) : 0;\n\t\tchildren.push(`<a:ext cx=\"${cx}\" cy=\"${cy}\"/>`);\n\t}\n\treturn element(elementName, buildXfrmAttrs(options), children);\n};\n/**\n* Creates a group transform element (a:xfrm with chOff/chExt children).\n*/\nconst createGroupTransform2D = (options, elementName = \"a:xfrm\") => {\n\tconst children = [];\n\tif (options.x !== void 0 || options.y !== void 0) {\n\t\tconst x = options.x !== void 0 ? convertToEmu(options.x) : 0;\n\t\tconst y = options.y !== void 0 ? convertToEmu(options.y) : 0;\n\t\tchildren.push(`<a:off x=\"${x}\" y=\"${y}\"/>`);\n\t}\n\tif (options.width !== void 0 || options.height !== void 0) {\n\t\tconst cx = options.width !== void 0 ? convertToEmu(options.width) : 0;\n\t\tconst cy = options.height !== void 0 ? convertToEmu(options.height) : 0;\n\t\tchildren.push(`<a:ext cx=\"${cx}\" cy=\"${cy}\"/>`);\n\t}\n\tconst chOffX = options.childOffsetX !== void 0 ? convertToEmu(options.childOffsetX) : 0;\n\tconst chOffY = options.childOffsetY !== void 0 ? convertToEmu(options.childOffsetY) : 0;\n\tchildren.push(`<a:chOff x=\"${chOffX}\" y=\"${chOffY}\"/>`);\n\tconst chExtCx = options.childExtentWidth !== void 0 ? convertToEmu(options.childExtentWidth) : 0;\n\tconst chExtCy = options.childExtentHeight !== void 0 ? convertToEmu(options.childExtentHeight) : 0;\n\tchildren.push(`<a:chExt cx=\"${chExtCx}\" cy=\"${chExtCy}\"/>`);\n\treturn element(elementName, buildXfrmAttrs(options), children);\n};\n//#endregion\n//#region src/drawingml/table-style.ts\n/**\n* Table Style system for DrawingML.\n*\n* Generates CT_TableStyle and CT_TableStyleList XML for custom table styles\n* in presentations (PPTX) and documents.\n*\n* Reference: ISO/IEC 29500-4, dml-main.xsd, CT_TableStyle / CT_TableStyleList\n*\n* @module\n*/\nfunction onOffAttr(val) {\n\tif (val === void 0) return \"\";\n\treturn val;\n}\n/** Pass through a string value (all color/fill factories now return string). */\nfunction toStr(el) {\n\treturn el;\n}\n/** Create a:styleMatrixReference (fillRef, lnRef, effectRef, fontRef) */\nfunction createStyleMatrixRef(elementName, opts) {\n\tconst children = [];\n\tif (opts.color) children.push(opts.color);\n\treturn element(`a:${elementName}`, { idx: String(opts.idx) }, children.length > 0 ? children : void 0);\n}\n/** Create border line element (a:ln with color) or a:lnRef */\nfunction createThemeableLine(opts) {\n\tif (opts.lineReference !== void 0) {\n\t\tconst children = [];\n\t\tif (opts.color) children.push(toStr(opts.color));\n\t\treturn element(\"a:lnRef\", { idx: String(opts.lineReference.idx) }, children.length > 0 ? children : void 0);\n\t}\n\tconst children = [];\n\tif (opts.color) children.push(toStr(opts.color));\n\tconst attrs = {};\n\tif (opts.width !== void 0) attrs.w = String(opts.width);\n\treturn element(\"a:ln\", attrs, children.length > 0 ? children : void 0);\n}\n/** Each cell-border side: Options key → a:tcBdr child element name. */\nconst BORDER_SIDES = [\n\t[\"left\", \"a:left\"],\n\t[\"right\", \"a:right\"],\n\t[\"top\", \"a:top\"],\n\t[\"bottom\", \"a:bottom\"],\n\t[\"insideH\", \"a:insideH\"],\n\t[\"insideV\", \"a:insideV\"]\n];\n/** CT_TableCellBorderStyle: each side wraps an EG_ThemeableLineStyle choice. */\nfunction buildCellBorders(opts) {\n\tconst children = [];\n\tfor (const [key, name] of BORDER_SIDES) {\n\t\tconst line = opts[key];\n\t\tif (line) children.push(element(name, void 0, [createThemeableLine(line)]));\n\t}\n\treturn element(\"a:tcBdr\", void 0, children);\n}\nfunction buildTextStyle(opts) {\n\tconst children = [];\n\tif (opts.fontReference) children.push(createStyleMatrixRef(\"fontRef\", opts.fontReference));\n\tif (opts.color) children.push(toStr(opts.color));\n\tconst attrs = {};\n\tif (opts.bold && opts.bold !== \"def\") attrs.b = onOffAttr(opts.bold);\n\tif (opts.italic && opts.italic !== \"def\") attrs.i = onOffAttr(opts.italic);\n\treturn element(\"a:tcTxStyle\", attrs, children.length > 0 ? children : void 0);\n}\nfunction buildCellStyle(opts) {\n\tconst children = [];\n\tif (opts.borders) children.push(buildCellBorders(opts.borders));\n\tif (opts.fillReference) children.push(createStyleMatrixRef(\"fillRef\", opts.fillReference));\n\telse if (opts.fill) children.push(toStr(opts.fill));\n\treturn element(\"a:tcStyle\", void 0, children);\n}\nfunction buildPartStyle(elementName, opts) {\n\tconst children = [];\n\tif (opts.text) children.push(buildTextStyle(opts.text));\n\tif (opts.cell) children.push(buildCellStyle(opts.cell));\n\treturn element(elementName, void 0, children);\n}\n/** XSD ordering for CT_TableStyle children */\nconst REGION_ORDER = [\n\t\"tblBg\",\n\t\"wholeTbl\",\n\t\"band1H\",\n\t\"band2H\",\n\t\"band1V\",\n\t\"band2V\",\n\t\"lastCol\",\n\t\"firstCol\",\n\t\"lastRow\",\n\t\"seCell\",\n\t\"swCell\",\n\t\"firstRow\",\n\t\"neCell\",\n\t\"nwCell\"\n];\n/** XML element name for each region */\nconst REGION_ELEMENTS = {\n\ttblBg: \"a:tblBg\",\n\twholeTbl: \"a:wholeTbl\",\n\tband1H: \"a:band1H\",\n\tband2H: \"a:band2H\",\n\tband1V: \"a:band1V\",\n\tband2V: \"a:band2V\",\n\tlastCol: \"a:lastCol\",\n\tfirstCol: \"a:firstCol\",\n\tlastRow: \"a:lastRow\",\n\tseCell: \"a:seCell\",\n\tswCell: \"a:swCell\",\n\tfirstRow: \"a:firstRow\",\n\tneCell: \"a:neCell\",\n\tnwCell: \"a:nwCell\"\n};\n/** Create a single table style (CT_TableStyle) */\nfunction createTableStyle(opts) {\n\tconst children = [];\n\tif (opts.regions) for (const region of REGION_ORDER) {\n\t\tconst part = opts.regions[region];\n\t\tif (!part) continue;\n\t\tchildren.push(buildPartStyle(REGION_ELEMENTS[region], part));\n\t}\n\treturn element(\"a:tblStyle\", {\n\t\tstyleId: opts.styleId,\n\t\tstyleName: opts.styleName\n\t}, children.length > 0 ? children : void 0);\n}\n/** Create table style list (CT_TableStyleList) */\nfunction createTableStyleList(opts) {\n\tconst children = [];\n\tif (opts.styles) for (const style of opts.styles) children.push(createTableStyle(style));\n\treturn element(\"a:tblStyleLst\", {\n\t\t\"xmlns:a\": \"http://schemas.openxmlformats.org/drawingml/2006/main\",\n\t\tdef: opts.defaultStyleId\n\t}, children.length > 0 ? children : void 0);\n}\n/**\n* Serialize a single parsed element. `stringify` treats its argument as a\n* document root and serializes the `elements` array, so wrap the child to\n* serialize the child itself (round-trips raw color/fill child elements).\n*/\nfunction serializeChild(child) {\n\treturn stringify({ elements: [child] });\n}\n/** Reverse of REGION_ELEMENTS: XML element name → region key. */\nconst ELEMENT_TO_REGION = Object.fromEntries(Object.entries(REGION_ELEMENTS).map(([region, name]) => [name, region]));\n/** Parse a:tblStyleLst → TableStyleListOptions (reverse of createTableStyleList). */\nfunction parseTableStyleList(el) {\n\tconst defaultStyleId = attr(el, \"def\") ?? \"\";\n\tconst styles = [];\n\tfor (const child of el.elements ?? []) {\n\t\tif (child.name !== \"a:tblStyle\") continue;\n\t\tconst style = parseTableStyle(child);\n\t\tif (style) styles.push(style);\n\t}\n\treturn {\n\t\tdefaultStyleId,\n\t\t...styles.length > 0 ? { styles } : {}\n\t};\n}\nfunction parseTableStyle(el) {\n\tconst styleId = attr(el, \"styleId\");\n\tconst styleName = attr(el, \"styleName\");\n\tif (styleId === void 0 || styleName === void 0) return void 0;\n\tconst regions = {};\n\tfor (const child of el.elements ?? []) {\n\t\tif (!child.name) continue;\n\t\tconst region = ELEMENT_TO_REGION[child.name];\n\t\tif (!region) continue;\n\t\tconst part = parsePartStyle(child);\n\t\tif (part) regions[region] = part;\n\t}\n\treturn {\n\t\tstyleId,\n\t\tstyleName,\n\t\t...Object.keys(regions).length > 0 ? { regions } : {}\n\t};\n}\nfunction parsePartStyle(el) {\n\tconst part = {};\n\tconst txStyle = findChild(el, \"a:tcTxStyle\");\n\tif (txStyle) {\n\t\tconst text = parseTableTextStyle(txStyle);\n\t\tif (text) part.text = text;\n\t}\n\tconst cellStyle = findChild(el, \"a:tcStyle\");\n\tif (cellStyle) {\n\t\tconst cell = parseTableCellStyle(cellStyle);\n\t\tif (cell) part.cell = cell;\n\t}\n\treturn Object.keys(part).length > 0 ? part : void 0;\n}\nfunction parseTableTextStyle(el) {\n\tconst opts = {};\n\tconst b = attr(el, \"b\");\n\tif (b === \"on\" || b === \"off\") opts.bold = b;\n\tconst i = attr(el, \"i\");\n\tif (i === \"on\" || i === \"off\") opts.italic = i;\n\tconst fontRefEl = findChild(el, \"a:fontRef\");\n\tif (fontRefEl) opts.fontReference = parseStyleMatrixRef(fontRefEl);\n\tfor (const child of el.elements ?? []) {\n\t\tif (child.name === \"a:fontRef\") continue;\n\t\topts.color = serializeChild(child);\n\t\tbreak;\n\t}\n\treturn Object.keys(opts).length > 0 ? opts : void 0;\n}\nfunction parseTableCellStyle(el) {\n\tconst opts = {};\n\tconst tcBdr = findChild(el, \"a:tcBdr\");\n\tif (tcBdr) {\n\t\tconst borders = parseCellBorders(tcBdr);\n\t\tif (borders) opts.borders = borders;\n\t}\n\tconst fillRefEl = findChild(el, \"a:fillRef\");\n\tif (fillRefEl) opts.fillReference = parseStyleMatrixRef(fillRefEl);\n\telse for (const child of el.elements ?? []) {\n\t\tif (child.name === \"a:tcBdr\") continue;\n\t\topts.fill = serializeChild(child);\n\t\tbreak;\n\t}\n\treturn Object.keys(opts).length > 0 ? opts : void 0;\n}\nfunction parseCellBorders(el) {\n\tconst borders = {};\n\tfor (const [key, name] of BORDER_SIDES) {\n\t\tconst borderEl = findChild(el, name);\n\t\tif (!borderEl) continue;\n\t\tconst lineEl = borderEl.elements?.find((c) => c.type === \"element\");\n\t\tif (!lineEl) continue;\n\t\tconst line = parseThemeableLine(lineEl);\n\t\tif (line) borders[key] = line;\n\t}\n\treturn Object.keys(borders).length > 0 ? borders : void 0;\n}\nfunction parseThemeableLine(el) {\n\tconst opts = {};\n\tif (el.name === \"a:lnRef\") {\n\t\tconst idx = attrNum(el, \"idx\");\n\t\tif (idx !== void 0) opts.lineReference = { idx };\n\t} else {\n\t\tconst w = attrNum(el, \"w\");\n\t\tif (w !== void 0) opts.width = w;\n\t}\n\tfor (const child of el.elements ?? []) {\n\t\topts.color = serializeChild(child);\n\t\tbreak;\n\t}\n\treturn Object.keys(opts).length > 0 ? opts : void 0;\n}\nfunction parseStyleMatrixRef(el) {\n\tconst opts = { idx: attrNum(el, \"idx\") ?? 0 };\n\tfor (const child of el.elements ?? []) {\n\t\topts.color = serializeChild(child);\n\t\tbreak;\n\t}\n\treturn opts;\n}\n//#endregion\n//#region src/drawingml/locking/locking.ts\n/**\n* DrawingML shape locking properties.\n*\n* Controls which aspects of a shape can be modified by users.\n*\n* Reference: OOXML transitional, dml-main.xsd, AG_Locking / CT_ShapeLocking / CT_PictureLocking / CT_GroupLocking\n*\n* @module\n*/\nfunction toFlatAttrs(opts) {\n\tconst result = {};\n\tfor (const key of Object.keys(opts)) if (opts[key] !== void 0) result[key] = opts[key];\n\treturn result;\n}\nfunction createShapeLocking(opts) {\n\treturn element(\"a:spLocks\", toFlatAttrs(opts));\n}\nfunction createPictureLocking(opts) {\n\treturn element(\"a:picLocks\", toFlatAttrs(opts));\n}\nfunction createGroupLocking(opts) {\n\treturn element(\"a:grpSpLocks\", toFlatAttrs(opts));\n}\nfunction createGraphicFrameLocking(opts) {\n\treturn element(\"a:graphicFrameLocks\", toFlatAttrs(opts));\n}\n//#endregion\n//#region src/drawingml/diagram/layout-vars.ts\n/**\n* Diagram layout variable property set elements.\n*\n* Reference: ISO/IEC 29500-4, dml-diagram.xsd\n* CT_LayoutVariablePropertySet and its child elements.\n*\n* @module\n*/\n/** Creates a dgm:adj element. */\nconst createAdjust = (options) => `<dgm:adj idx=\"${options.idx}\" val=\"${options.val}\"/>`;\nconst AnimationLevelValue = {\n\tNONE: \"none\",\n\tLEVEL: \"lvl\",\n\tCENTER: \"ctr\"\n};\n/** Creates a dgm:animLvl element. */\nconst createAnimationLevel = (options) => options?.val !== void 0 ? `<dgm:animLvl val=\"${options.val}\"/>` : \"<dgm:animLvl/>\";\nconst AnimateOneByOneValue = {\n\tNONE: \"none\",\n\tONE: \"one\",\n\tBRANCH: \"branch\"\n};\n/** Creates a dgm:animOne element. */\nconst createAnimateOneByOne = (options) => options?.val !== void 0 ? `<dgm:animOne val=\"${options.val}\"/>` : \"<dgm:animOne/>\";\n/** Creates a dgm:chMax element. */\nconst createMaxChildren = (options) => options?.val !== void 0 ? `<dgm:chMax val=\"${options.val}\"/>` : \"<dgm:chMax/>\";\n/** Creates a dgm:chPref element. */\nconst createPreferredChildren = (options) => options?.val !== void 0 ? `<dgm:chPref val=\"${options.val}\"/>` : \"<dgm:chPref/>\";\n/** Creates a dgm:orgChart element. */\nconst createOrgChart = (options) => options?.val !== void 0 ? `<dgm:orgChart val=\"${options.val}\"/>` : \"<dgm:orgChart/>\";\nconst HierBranchStyle = {\n\tLEFT: \"l\",\n\tRIGHT: \"r\",\n\tHANGING: \"hang\",\n\tSTANDARD: \"std\",\n\tINITIAL: \"init\"\n};\n/** Creates a dgm:hierBranch element. */\nconst createHierBranch = (options) => options?.val !== void 0 ? `<dgm:hierBranch val=\"${options.val}\"/>` : \"<dgm:hierBranch/>\";\n/**\n* Creates a dgm:presLayoutVars element (CT_LayoutVariablePropertySet).\n*\n* ## XSD Schema\n* ```xml\n* <xsd:complexType name=\"CT_LayoutVariablePropertySet\">\n* <xsd:sequence>\n* <xsd:element name=\"orgChart\" type=\"CT_OrgChart\" minOccurs=\"0\"/>\n* <xsd:element name=\"chMax\" type=\"CT_ChildMax\" minOccurs=\"0\"/>\n* <xsd:element name=\"chPref\" type=\"CT_ChildPref\" minOccurs=\"0\"/>\n* <xsd:element name=\"bulletEnabled\" type=\"CT_BulletEnabled\" minOccurs=\"0\"/>\n* <xsd:element name=\"dir\" type=\"CT_Direction\" minOccurs=\"0\"/>\n* <xsd:element name=\"hierBranch\" type=\"CT_HierBranchStyle\" minOccurs=\"0\"/>\n* <xsd:element name=\"animOne\" type=\"CT_AnimOne\" minOccurs=\"0\"/>\n* <xsd:element name=\"animLvl\" type=\"CT_AnimLvl\" minOccurs=\"0\"/>\n* <xsd:element name=\"resizeHandles\" type=\"CT_ResizeHandles\" minOccurs=\"0\"/>\n* </xsd:sequence>\n* </xsd:complexType>\n* ```\n*/\nconst createPresentationLayoutVariables = (options) => {\n\tconst children = [];\n\tif (options?.orgChart) children.push(createOrgChart(options.orgChart));\n\tif (options?.maxChildren) children.push(createMaxChildren(options.maxChildren));\n\tif (options?.preferredChildren) children.push(createPreferredChildren(options.preferredChildren));\n\tif (options?.animateOneByOne) children.push(createAnimateOneByOne(options.animateOneByOne));\n\tif (options?.animationLevel) children.push(createAnimationLevel(options.animationLevel));\n\tif (options?.hierBranch) children.push(createHierBranch(options.hierBranch));\n\treturn element(\"dgm:presLayoutVars\", void 0, children);\n};\n/** Creates a dgm:adjLst element containing dgm:adj children. */\nconst createAdjustList = (options) => {\n\tconst children = [];\n\tif (options?.adjustments) for (const a of options.adjustments) children.push(createAdjust(a));\n\treturn element(\"dgm:adjLst\", void 0, children);\n};\n//#endregion\n//#region src/drawingml/diagram/headers.ts\n/**\n* Diagram definition header elements.\n*\n* Reference: ISO/IEC 29500-4, dml-diagram.xsd\n* CT_ColorTransformHeader, CT_DiagramDefinitionHeader, CT_StyleDefinitionHeader\n* and their list containers.\n*\n* @module\n*/\nconst createNameEl = (tag, options) => {\n\tconst attrs = { val: options.val };\n\tif (options.lang) attrs.lang = options.lang;\n\treturn element(tag, attrs);\n};\nconst createDescEl = (tag, options) => {\n\tconst attrs = { val: options.val };\n\tif (options.lang) attrs.lang = options.lang;\n\treturn element(tag, attrs);\n};\nconst createCatEl = (options) => `<dgm:cat type=\"${options.type}\" pri=\"${options.pri}\"/>`;\nconst createCatLst = (categories) => {\n\tconst children = [];\n\tif (categories) for (const cat of categories) children.push(createCatEl(cat));\n\treturn element(\"dgm:catLst\", void 0, children);\n};\n/**\n* Creates a dgm:colorsDefHdr element (CT_ColorTransformHeader).\n*\n* ## XSD Schema\n* ```xml\n* <xsd:complexType name=\"CT_ColorTransformHeader\">\n* <xsd:sequence>\n* <xsd:element name=\"title\" type=\"CT_CTName\" minOccurs=\"1\" maxOccurs=\"unbounded\"/>\n* <xsd:element name=\"desc\" type=\"CT_CTDescription\" minOccurs=\"1\" maxOccurs=\"unbounded\"/>\n* <xsd:element name=\"catLst\" type=\"CT_CTCategories\" minOccurs=\"0\"/>\n* <xsd:element name=\"extLst\" type=\"a:CT_OfficeArtExtensionList\" minOccurs=\"0\"/>\n* </xsd:sequence>\n* <xsd:attribute name=\"uniqueId\" type=\"xsd:string\" use=\"required\"/>\n* <xsd:attribute name=\"minVer\" type=\"xsd:string\" use=\"optional\"/>\n* <xsd:attribute name=\"resId\" type=\"xsd:int\" use=\"optional\" default=\"0\"/>\n* </xsd:complexType>\n* ```\n*/\nconst createColorsDefinitionHeader = (options) => {\n\tconst children = [];\n\tfor (const t of options.title) children.push(createNameEl(\"dgm:title\", t));\n\tfor (const d of options.desc) children.push(createDescEl(\"dgm:desc\", d));\n\tif (options.categories?.length) children.push(createCatLst(options.categories));\n\tconst attrs = { uniqueId: options.uniqueId };\n\tif (options.minVer !== void 0) attrs.minVer = options.minVer;\n\tif (options.resId !== void 0) attrs.resId = options.resId;\n\treturn element(\"dgm:colorsDefHdr\", attrs, children);\n};\n/** Creates a dgm:colorsDefHdrLst element. */\nconst createColorsDefinitionHeaderList = (options) => {\n\tconst children = [];\n\tif (options?.headers) for (const hdr of options.headers) children.push(createColorsDefinitionHeader(hdr));\n\treturn element(\"dgm:colorsDefHdrLst\", void 0, children);\n};\n/**\n* Creates a dgm:layoutDefHdr element (CT_DiagramDefinitionHeader).\n*\n* ## XSD Schema\n* ```xml\n* <xsd:complexType name=\"CT_DiagramDefinitionHeader\">\n* <xsd:sequence>\n* <xsd:element name=\"title\" type=\"CT_Name\" minOccurs=\"1\" maxOccurs=\"unbounded\"/>\n* <xsd:element name=\"desc\" type=\"CT_Description\" minOccurs=\"1\" maxOccurs=\"unbounded\"/>\n* <xsd:element name=\"catLst\" type=\"CT_Categories\" minOccurs=\"0\"/>\n* <xsd:element name=\"extLst\" type=\"a:CT_OfficeArtExtensionList\" minOccurs=\"0\"/>\n* </xsd:sequence>\n* <xsd:attribute name=\"uniqueId\" type=\"xsd:string\" use=\"required\"/>\n* <xsd:attribute name=\"minVer\" type=\"xsd:string\" use=\"optional\"/>\n* <xsd:attribute name=\"defStyle\" type=\"xsd:string\" use=\"optional\" default=\"\"/>\n* <xsd:attribute name=\"resId\" type=\"xsd:int\" use=\"optional\" default=\"0\"/>\n* </xsd:complexType>\n* ```\n*/\nconst createLayoutDefinitionHeader = (options) => {\n\tconst children = [];\n\tfor (const t of options.title) children.push(createNameEl(\"dgm:title\", t));\n\tfor (const d of options.desc) children.push(createDescEl(\"dgm:desc\", d));\n\tif (options.categories?.length) children.push(createCatLst(options.categories));\n\tconst attrs = { uniqueId: options.uniqueId };\n\tif (options.minVer !== void 0) attrs.minVer = options.minVer;\n\tif (options.defStyle !== void 0) attrs.defStyle = options.defStyle;\n\tif (options.resId !== void 0) attrs.resId = options.resId;\n\treturn element(\"dgm:layoutDefHdr\", attrs, children);\n};\n/** Creates a dgm:layoutDefHdrLst element. */\nconst createLayoutDefinitionHeaderList = (options) => {\n\tconst children = [];\n\tif (options?.headers) for (const hdr of options.headers) children.push(createLayoutDefinitionHeader(hdr));\n\treturn element(\"dgm:layoutDefHdrLst\", void 0, children);\n};\n/**\n* Creates a dgm:styleDefHdr element (CT_StyleDefinitionHeader).\n*\n* ## XSD Schema\n* ```xml\n* <xsd:complexType name=\"CT_StyleDefinitionHeader\">\n* <xsd:sequence>\n* <xsd:element name=\"title\" type=\"CT_SDName\" minOccurs=\"1\" maxOccurs=\"unbounded\"/>\n* <xsd:element name=\"desc\" type=\"CT_SDDescription\" minOccurs=\"1\" maxOccurs=\"unbounded\"/>\n* <xsd:element name=\"catLst\" type=\"CT_SDCategories\" minOccurs=\"0\"/>\n* <xsd:element name=\"extLst\" type=\"a:CT_OfficeArtExtensionList\" minOccurs=\"0\"/>\n* </xsd:sequence>\n* <xsd:attribute name=\"uniqueId\" type=\"xsd:string\" use=\"required\"/>\n* <xsd:attribute name=\"minVer\" type=\"xsd:string\" use=\"optional\"/>\n* <xsd:attribute name=\"resId\" type=\"xsd:int\" use=\"optional\" default=\"0\"/>\n* </xsd:complexType>\n* ```\n*/\nconst createStyleDefinitionHeader = (options) => {\n\tconst children = [];\n\tfor (const t of options.title) children.push(createNameEl(\"dgm:title\", t));\n\tfor (const d of options.desc) children.push(createDescEl(\"dgm:desc\", d));\n\tif (options.categories?.length) children.push(createCatLst(options.categories));\n\tconst attrs = { uniqueId: options.uniqueId };\n\tif (options.minVer !== void 0) attrs.minVer = options.minVer;\n\tif (options.resId !== void 0) attrs.resId = options.resId;\n\treturn element(\"dgm:styleDefHdr\", attrs, children);\n};\n/** Creates a dgm:styleDefHdrLst element. */\nconst createStyleDefinitionHeaderList = (options) => {\n\tconst children = [];\n\tif (options?.headers) for (const hdr of options.headers) children.push(createStyleDefinitionHeader(hdr));\n\treturn element(\"dgm:styleDefHdrLst\", void 0, children);\n};\n//#endregion\n//#region src/drawingml/diagram/diagram-style.ts\n/**\n* Diagram style, color list, and style label elements.\n*\n* Reference: ISO/IEC 29500-4, dml-diagram.xsd\n* CT_Style, CT_StyleLabel, CT_Colors, CT_CTStyleLabel\n*\n* @module\n*/\nconst StyleMatrixIndex = {\n\tSUBTLE: \"subtle\",\n\tMODERATE: \"moderate\",\n\tINTENSE: \"intense\"\n};\nconst FontCollectionIndex = {\n\tMAJOR: \"major\",\n\tMINOR: \"minor\",\n\tNONE: \"none\"\n};\n/**\n* Creates a dgm:style element (a:CT_ShapeStyle).\n*\n* ## XSD Schema\n* ```xml\n* <xsd:complexType name=\"CT_ShapeStyle\">\n* <xsd:sequence>\n* <xsd:element name=\"lnRef\" type=\"CT_StyleMatrixReference\"/>\n* <xsd:element name=\"fillRef\" type=\"CT_StyleMatrixReference\"/>\n* <xsd:element name=\"effectRef\" type=\"CT_StyleMatrixReference\"/>\n* <xsd:element name=\"fontRef\" type=\"CT_FontReference\"/>\n* </xsd:sequence>\n* </xsd:complexType>\n* ```\n*/\nconst createDiagramStyle = (options) => {\n\tconst children = [];\n\tchildren.push(element(\"a:lnRef\", { idx: options?.lineReference?.idx ?? 1 }, [createColorElement({ value: SchemeColor.ACCENT1 })]));\n\tchildren.push(element(\"a:fillRef\", { idx: options?.fillReference?.idx ?? 1 }, [createColorElement({ value: SchemeColor.ACCENT1 })]));\n\tchildren.push(element(\"a:effectRef\", { idx: options?.effectReference?.idx ?? 0 }, [createColorElement({ value: SchemeColor.ACCENT1 })]));\n\tchildren.push(element(\"a:fontRef\", { idx: options?.fontReference?.idx ?? \"minor\" }, [createColorElement({ value: SchemeColor.TX1 })]));\n\treturn element(\"dgm:style\", void 0, children);\n};\nconst ColorMethod = {\n\tSPAN: \"span\",\n\tCYCLE: \"cycle\",\n\tREPEAT: \"repeat\"\n};\nconst HueDirection = {\n\tCLOCKWISE: \"cw\",\n\tCOUNTER_CLOCKWISE: \"ccw\"\n};\n/** Creates a generic CT_Colors element with the given tag. */\nconst createColorList = (tag, options) => {\n\tconst children = [];\n\tif (options?.colors) for (const c of options.colors) children.push(createColorElement(c));\n\tconst hasAttrs = options?.meth !== void 0 || options?.hueDir !== void 0;\n\tconst attrs = {};\n\tif (options?.meth) attrs.meth = options.meth;\n\tif (options?.hueDir) attrs.hueDir = options.hueDir;\n\treturn element(tag, hasAttrs ? attrs : void 0, children.length > 0 ? children : void 0);\n};\nconst createFillColorList = (options) => createColorList(\"dgm:fillClrLst\", options);\nconst createLineColorList = (options) => createColorList(\"dgm:linClrLst\", options);\nconst createEffectColorList = (options) => createColorList(\"dgm:effectClrLst\", options);\nconst createTextFillColorList = (options) => createColorList(\"dgm:txFillClrLst\", options);\nconst createTextLineColorList = (options) => createColorList(\"dgm:txLinClrLst\", options);\nconst createTextEffectColorList = (options) => createColorList(\"dgm:txEffectClrLst\", options);\n/**\n* Creates a dgm:styleLbl element (CT_StyleLabel or CT_CTStyleLabel).\n*\n* ## XSD Schema (CT_CTStyleLabel, for color transforms)\n* ```xml\n* <xsd:complexType name=\"CT_CTStyleLabel\">\n* <xsd:sequence>\n* <xsd:element name=\"fillClrLst\" type=\"CT_Colors\" minOccurs=\"0\"/>\n* <xsd:element name=\"linClrLst\" type=\"CT_Colors\" minOccurs=\"0\"/>\n* <xsd:element name=\"effectClrLst\" type=\"CT_Colors\" minOccurs=\"0\"/>\n* <xsd:element name=\"txLinClrLst\" type=\"CT_Colors\" minOccurs=\"0\"/>\n* <xsd:element name=\"txFillClrLst\" type=\"CT_Colors\" minOccurs=\"0\"/>\n* <xsd:element name=\"txEffectClrLst\" type=\"CT_Colors\" minOccurs=\"0\"/>\n* <xsd:element name=\"extLst\" type=\"a:CT_OfficeArtExtensionList\" minOccurs=\"0\"/>\n* </xsd:sequence>\n* <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\"/>\n* </xsd:complexType>\n* ```\n*\n* ## XSD Schema (CT_StyleLabel, for quick styles)\n* ```xml\n* <xsd:complexType name=\"CT_StyleLabel\">\n* <xsd:sequence>\n* <xsd:element name=\"scene3d\" type=\"a:CT_Scene3D\" minOccurs=\"0\"/>\n* <xsd:element name=\"sp3d\" type=\"a:CT_Shape3D\" minOccurs=\"0\"/>\n* <xsd:element name=\"txPr\" type=\"CT_TextProps\" minOccurs=\"0\"/>\n* <xsd:element name=\"style\" type=\"a:CT_ShapeStyle\" minOccurs=\"0\"/>\n* <xsd:element name=\"extLst\" type=\"a:CT_OfficeArtExtensionList\" minOccurs=\"0\"/>\n* </xsd:sequence>\n* <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\"/>\n* </xsd:complexType>\n* ```\n*/\nconst createStyleLabel = (options) => {\n\tconst children = [];\n\tif (options.fillColorList) children.push(createFillColorList(options.fillColorList));\n\tif (options.lineColorList) children.push(createLineColorList(options.lineColorList));\n\tif (options.effectColorList) children.push(createEffectColorList(options.effectColorList));\n\tif (options.textFillColorList) children.push(createTextFillColorList(options.textFillColorList));\n\tif (options.textLineColorList) children.push(createTextLineColorList(options.textLineColorList));\n\tif (options.textEffectColorList) children.push(createTextEffectColorList(options.textEffectColorList));\n\treturn element(\"dgm:styleLbl\", { name: options.name }, children);\n};\n//#endregion\n//#region src/drawingml/diagram/diagram-rel.ts\n/**\n* Creates a dgm:relIds element (CT_RelIds).\n*\n* ## XSD Schema\n* ```xml\n* <xsd:complexType name=\"CT_RelIds\">\n* <xsd:attribute ref=\"r:dm\" use=\"required\"/>\n* <xsd:attribute ref=\"r:lo\" use=\"required\"/>\n* <xsd:attribute ref=\"r:qs\" use=\"required\"/>\n* <xsd:attribute ref=\"r:cs\" use=\"required\"/>\n* </xsd:complexType>\n* ```\n*/\nconst createDiagramRelationshipIds = (options) => `<dgm:relIds r:dm=\"${options.dm}\" r:lo=\"${options.lo}\" r:qs=\"${options.qs}\" r:cs=\"${options.cs}\"/>`;\n//#endregion\n//#region src/drawingml/diagram/diagram-props.ts\n/**\n* Diagram extension list, 3D shape, and text properties.\n*\n* Reference: ISO/IEC 29500-4, dml-diagram.xsd, dml-main.xsd\n*\n* @module\n*/\n/**\n* Creates a dgm:extLst element (a:CT_OfficeArtExtensionList).\n*\n* Generic extension list pattern used across OOXML.\n*/\nconst createDiagramExtensionList = (options) => {\n\tconst children = [];\n\tif (options?.extensions) for (const ext of options.extensions) children.push(`<a:ext uri=\"${ext.uri}\"/>`);\n\treturn element(\"dgm:extLst\", void 0, children);\n};\n/**\n* Creates a dgm:sp3d element wrapping a:CT_Shape3D.\n*\n* Delegates to the shared createShape3D factory but wraps in dgm: namespace context.\n*/\nconst createDiagramShape3D = (options) => createShape3D(options);\n/**\n* Creates a dgm:txPr element (CT_TextProps).\n*\n* ## XSD Schema\n* ```xml\n* <xsd:complexType name=\"CT_TextProps\">\n* <xsd:sequence>\n* <xsd:group ref=\"a:EG_Text3D\" minOccurs=\"0\" maxOccurs=\"1\"/>\n* </xsd:sequence>\n* </xsd:complexType>\n* ```\n*/\nconst createDiagramTextProperties = (_options) => \"<dgm:txPr/>\";\n//#endregion\n//#region src/drawingml/color/color-descriptors.ts\n/**\n* Color descriptors for DrawingML.\n*\n* @module\n*/\nconst TRANSFORM_KEYS = [\n\t\"tint\",\n\t\"shade\",\n\t\"comp\",\n\t\"inv\",\n\t\"gray\",\n\t\"alpha\",\n\t\"alphaOff\",\n\t\"alphaMod\",\n\t\"hue\",\n\t\"hueOff\",\n\t\"hueMod\",\n\t\"sat\",\n\t\"satOff\",\n\t\"satMod\",\n\t\"lum\",\n\t\"lumOff\",\n\t\"lumMod\",\n\t\"red\",\n\t\"redOff\",\n\t\"redMod\",\n\t\"green\",\n\t\"greenOff\",\n\t\"greenMod\",\n\t\"blue\",\n\t\"blueOff\",\n\t\"blueMod\",\n\t\"gamma\",\n\t\"invGamma\"\n];\nfunction stringifyTransforms(opts) {\n\tconst parts = [];\n\tfor (const key of TRANSFORM_KEYS) {\n\t\tconst v = opts[key];\n\t\tif (v === void 0 || v === false) continue;\n\t\tif (v === true) parts.push(`<a:${key}/>`);\n\t\telse parts.push(`<a:${key} val=\"${escapeXml(String(v))}\"/>`);\n\t}\n\treturn parts.join(\"\");\n}\nfunction readTransforms(el) {\n\tif (!el.elements || el.elements.length === 0) return void 0;\n\tconst result = {};\n\tfor (const child of el.elements) {\n\t\tif (!child.name || !child.name.startsWith(\"a:\")) continue;\n\t\tconst key = child.name.slice(2);\n\t\tif (!TRANSFORM_KEYS.includes(key)) continue;\n\t\tconst val = child.attributes?.[\"val\"];\n\t\tif (val !== void 0) result[key] = Number(val);\n\t\telse result[key] = true;\n\t}\n\treturn Object.keys(result).length > 0 ? result : void 0;\n}\nconst rgbColorDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\tconst transforms = opts.transforms ? stringifyTransforms(opts.transforms) : \"\";\n\t\tif (transforms) return `<a:srgbClr val=\"${escapeXml(opts.value)}\">${transforms}</a:srgbClr>`;\n\t\treturn `<a:srgbClr val=\"${escapeXml(opts.value)}\"/>`;\n\t},\n\tparse(el, _ctx) {\n\t\tconst result = { value: String(el.attributes?.[\"val\"] ?? \"\") };\n\t\tconst transforms = readTransforms(el);\n\t\tif (transforms) result.transforms = transforms;\n\t\treturn result;\n\t}\n};\nconst schemeColorDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\tconst transforms = opts.transforms ? stringifyTransforms(opts.transforms) : \"\";\n\t\tif (transforms) return `<a:schemeClr val=\"${escapeXml(opts.value)}\">${transforms}</a:schemeClr>`;\n\t\treturn `<a:schemeClr val=\"${escapeXml(opts.value)}\"/>`;\n\t},\n\tparse(el, _ctx) {\n\t\tconst result = { value: String(el.attributes?.[\"val\"] ?? \"\") };\n\t\tconst transforms = readTransforms(el);\n\t\tif (transforms) result.transforms = transforms;\n\t\treturn result;\n\t}\n};\nconst hslColorDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\tconst transforms = opts.transforms ? stringifyTransforms(opts.transforms) : \"\";\n\t\tif (transforms) return `<a:hslClr hue=\"${opts.hue}\" sat=\"${opts.saturation}\" lum=\"${opts.luminance}\">${transforms}</a:hslClr>`;\n\t\treturn `<a:hslClr hue=\"${opts.hue}\" sat=\"${opts.saturation}\" lum=\"${opts.luminance}\"/>`;\n\t},\n\tparse(el, _ctx) {\n\t\tconst result = {\n\t\t\thue: Number(el.attributes?.[\"hue\"] ?? 0),\n\t\t\tsaturation: Number(el.attributes?.[\"sat\"] ?? 0),\n\t\t\tluminance: Number(el.attributes?.[\"lum\"] ?? 0)\n\t\t};\n\t\tconst transforms = readTransforms(el);\n\t\tif (transforms) result.transforms = transforms;\n\t\treturn result;\n\t}\n};\nconst systemColorDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\tconst transforms = opts.transforms ? stringifyTransforms(opts.transforms) : \"\";\n\t\tconst attrParts = [`val=\"${escapeXml(opts.value)}\"`];\n\t\tif (opts.lastClr) attrParts.push(`lastClr=\"${escapeXml(opts.lastClr)}\"`);\n\t\tconst attrStr = attrParts.join(\" \");\n\t\tif (transforms) return `<a:sysClr ${attrStr}>${transforms}</a:sysClr>`;\n\t\treturn `<a:sysClr ${attrStr}/>`;\n\t},\n\tparse(el, _ctx) {\n\t\tconst result = { value: String(el.attributes?.[\"val\"] ?? \"\") };\n\t\tconst lastClr = el.attributes?.[\"lastClr\"];\n\t\tif (lastClr) result.lastClr = String(lastClr);\n\t\tconst transforms = readTransforms(el);\n\t\tif (transforms) result.transforms = transforms;\n\t\treturn result;\n\t}\n};\nconst presetColorDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\tconst transforms = opts.transforms ? stringifyTransforms(opts.transforms) : \"\";\n\t\tif (transforms) return `<a:prstClr val=\"${escapeXml(opts.value)}\">${transforms}</a:prstClr>`;\n\t\treturn `<a:prstClr val=\"${escapeXml(opts.value)}\"/>`;\n\t},\n\tparse(el, _ctx) {\n\t\tconst result = { value: String(el.attributes?.[\"val\"] ?? \"\") };\n\t\tconst transforms = readTransforms(el);\n\t\tif (transforms) result.transforms = transforms;\n\t\treturn result;\n\t}\n};\nconst scRgbColorDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\tconst transforms = opts.transforms ? stringifyTransforms(opts.transforms) : \"\";\n\t\tif (transforms) return `<a:scrgbClr r=\"${escapeXml(opts.r)}\" g=\"${escapeXml(opts.g)}\" b=\"${escapeXml(opts.b)}\">${transforms}</a:scrgbClr>`;\n\t\treturn `<a:scrgbClr r=\"${escapeXml(opts.r)}\" g=\"${escapeXml(opts.g)}\" b=\"${escapeXml(opts.b)}\"/>`;\n\t},\n\tparse(el, _ctx) {\n\t\tconst result = {\n\t\t\tr: String(el.attributes?.[\"r\"] ?? \"\"),\n\t\t\tg: String(el.attributes?.[\"g\"] ?? \"\"),\n\t\t\tb: String(el.attributes?.[\"b\"] ?? \"\")\n\t\t};\n\t\tconst transforms = readTransforms(el);\n\t\tif (transforms) result.transforms = transforms;\n\t\treturn result;\n\t}\n};\nconst SYSTEM_COLOR_VALUES = new Set(Object.values(SystemColor));\nconst PRESET_COLOR_VALUES = new Set(Object.values(PresetColor));\nconst SCHEME_COLOR_VALUES = new Set(Object.values(SchemeColor));\n/** Stringify an EG_ColorChoice (direct color element, no `a:solidFill` wrapper).\n* Used for gradient stops, fg/bg clr, and effect colors. Replaces the former\n* `getColorDescriptor` which returned a polymorphic `CustomDescriptor<any>`. */\nfunction stringifyColorChoice(color, ctx) {\n\tif (\"hue\" in color) return stringify$1(hslColorDesc, color, ctx) ?? \"\";\n\tif (\"r\" in color) return stringify$1(scRgbColorDesc, color, ctx) ?? \"\";\n\tconst colorValue = color.value;\n\tif (SYSTEM_COLOR_VALUES.has(colorValue)) return stringify$1(systemColorDesc, color, ctx) ?? \"\";\n\tif (PRESET_COLOR_VALUES.has(colorValue)) return stringify$1(presetColorDesc, color, ctx) ?? \"\";\n\tif (SCHEME_COLOR_VALUES.has(colorValue)) return stringify$1(schemeColorDesc, color, ctx) ?? \"\";\n\treturn stringify$1(rgbColorDesc, color, ctx) ?? \"\";\n}\n/**\n* Parse an EG_ColorChoice from an element's direct children. Handles all six\n* color element kinds (srgbClr/schemeClr/hslClr/sysClr/prstClr/scrgbClr) —\n* used both by {@link solidFillDesc} (under a:solidFill) and by fill\n* descriptors reading direct colors under a:gs / a:fgClr / a:bgClr.\n*/\nfunction parseColorChoice(el, ctx) {\n\tif (!el.elements) return {};\n\tfor (const child of el.elements) switch (child.name) {\n\t\tcase \"a:srgbClr\": return rgbColorDesc.parse(child, ctx);\n\t\tcase \"a:schemeClr\": return schemeColorDesc.parse(child, ctx);\n\t\tcase \"a:hslClr\": return hslColorDesc.parse(child, ctx);\n\t\tcase \"a:sysClr\": return systemColorDesc.parse(child, ctx);\n\t\tcase \"a:prstClr\": return presetColorDesc.parse(child, ctx);\n\t\tcase \"a:scrgbClr\": return scRgbColorDesc.parse(child, ctx);\n\t}\n\treturn {};\n}\nconst solidFillDesc = {\n\tkind: \"custom\",\n\tstringify(color, ctx) {\n\t\tconst inner = stringifyColorChoice(color, ctx);\n\t\tif (!inner) return void 0;\n\t\treturn `<a:solidFill>${inner}</a:solidFill>`;\n\t},\n\tparse(el, _ctx) {\n\t\treturn parseColorChoice(el, _ctx);\n\t}\n};\n//#endregion\n//#region src/drawingml/blip/blip-descriptors.ts\n/**\n* Blip descriptor for DrawingML pictures.\n*\n* @module\n*/\nconst tileDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\tconst attrParts = [];\n\t\tif (opts.tx !== void 0) attrParts.push(`tx=\"${opts.tx}\"`);\n\t\tif (opts.ty !== void 0) attrParts.push(`ty=\"${opts.ty}\"`);\n\t\tif (opts.sx !== void 0) attrParts.push(`sx=\"${opts.sx}\"`);\n\t\tif (opts.sy !== void 0) attrParts.push(`sy=\"${opts.sy}\"`);\n\t\tif (opts.flip !== void 0) attrParts.push(`flip=\"${escapeXml(opts.flip)}\"`);\n\t\tif (opts.align !== void 0) attrParts.push(`algn=\"${escapeXml(xsdRectAlignment.to(opts.align))}\"`);\n\t\treturn `<a:tile${attrParts.length ? \" \" + attrParts.join(\" \") : \"\"}/>`;\n\t},\n\tparse(el, _ctx) {\n\t\tconst result = {};\n\t\tif (el.attributes?.[\"tx\"] !== void 0) result.tx = Number(el.attributes[\"tx\"]);\n\t\tif (el.attributes?.[\"ty\"] !== void 0) result.ty = Number(el.attributes[\"ty\"]);\n\t\tif (el.attributes?.[\"sx\"] !== void 0) result.sx = Number(el.attributes[\"sx\"]);\n\t\tif (el.attributes?.[\"sy\"] !== void 0) result.sy = Number(el.attributes[\"sy\"]);\n\t\tif (el.attributes?.[\"flip\"] !== void 0) result.flip = String(el.attributes[\"flip\"]);\n\t\tif (el.attributes?.[\"algn\"] !== void 0) result.align = xsdRectAlignment.from(String(el.attributes[\"algn\"]));\n\t\treturn result;\n\t}\n};\nconst sourceRectangleDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\tconst attrParts = [];\n\t\tif (opts.left !== void 0) attrParts.push(`l=\"${opts.left}\"`);\n\t\tif (opts.top !== void 0) attrParts.push(`t=\"${opts.top}\"`);\n\t\tif (opts.right !== void 0) attrParts.push(`r=\"${opts.right}\"`);\n\t\tif (opts.bottom !== void 0) attrParts.push(`b=\"${opts.bottom}\"`);\n\t\treturn `<a:srcRect${attrParts.length ? \" \" + attrParts.join(\" \") : \"\"}/>`;\n\t},\n\tparse(el, _ctx) {\n\t\tconst result = {};\n\t\tif (el.attributes?.[\"l\"] !== void 0) result.left = Number(el.attributes[\"l\"]);\n\t\tif (el.attributes?.[\"t\"] !== void 0) result.top = Number(el.attributes[\"t\"]);\n\t\tif (el.attributes?.[\"r\"] !== void 0) result.right = Number(el.attributes[\"r\"]);\n\t\tif (el.attributes?.[\"b\"] !== void 0) result.bottom = Number(el.attributes[\"b\"]);\n\t\treturn result;\n\t}\n};\nconst stretchDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\tconst attrParts = [];\n\t\tif (opts.left !== void 0) attrParts.push(`l=\"${opts.left}\"`);\n\t\tif (opts.top !== void 0) attrParts.push(`t=\"${opts.top}\"`);\n\t\tif (opts.right !== void 0) attrParts.push(`r=\"${opts.right}\"`);\n\t\tif (opts.bottom !== void 0) attrParts.push(`b=\"${opts.bottom}\"`);\n\t\treturn `<a:stretch><a:fillRect${attrParts.length ? \" \" + attrParts.join(\" \") : \"\"}/></a:stretch>`;\n\t},\n\tparse(el, _ctx) {\n\t\tconst fillRect = findChild(el, \"a:fillRect\");\n\t\tif (!fillRect) return {};\n\t\tconst result = {};\n\t\tif (fillRect.attributes?.[\"l\"] !== void 0) result.left = Number(fillRect.attributes[\"l\"]);\n\t\tif (fillRect.attributes?.[\"t\"] !== void 0) result.top = Number(fillRect.attributes[\"t\"]);\n\t\tif (fillRect.attributes?.[\"r\"] !== void 0) result.right = Number(fillRect.attributes[\"r\"]);\n\t\tif (fillRect.attributes?.[\"b\"] !== void 0) result.bottom = Number(fillRect.attributes[\"b\"]);\n\t\treturn result;\n\t}\n};\nfunction stringifyBlipEffects(opts, ctx) {\n\tconst parts = [];\n\tif (opts.grayscale) parts.push(\"<a:grayscl/>\");\n\tif (opts.luminance) {\n\t\tconst attrParts = [];\n\t\tif (opts.luminance.bright !== void 0) attrParts.push(`bright=\"${opts.luminance.bright}\"`);\n\t\tif (opts.luminance.contrast !== void 0) attrParts.push(`contrast=\"${opts.luminance.contrast}\"`);\n\t\tconst attrStr = attrParts.length ? \" \" + attrParts.join(\" \") : \"\";\n\t\tparts.push(`<a:lum${attrStr}/>`);\n\t}\n\tif (opts.hsl) {\n\t\tconst attrParts = [];\n\t\tif (opts.hsl.hue !== void 0) attrParts.push(`hue=\"${opts.hsl.hue}\"`);\n\t\tif (opts.hsl.saturation !== void 0) attrParts.push(`sat=\"${opts.hsl.saturation}\"`);\n\t\tif (opts.hsl.luminance !== void 0) attrParts.push(`lum=\"${opts.hsl.luminance}\"`);\n\t\tconst attrStr = attrParts.length ? \" \" + attrParts.join(\" \") : \"\";\n\t\tparts.push(`<a:hsl${attrStr}/>`);\n\t}\n\tif (opts.tint) {\n\t\tconst attrParts = [];\n\t\tif (opts.tint.hue !== void 0) attrParts.push(`hue=\"${opts.tint.hue}\"`);\n\t\tif (opts.tint.amount !== void 0) attrParts.push(`amt=\"${opts.tint.amount}\"`);\n\t\tconst attrStr = attrParts.length ? \" \" + attrParts.join(\" \") : \"\";\n\t\tparts.push(`<a:tint${attrStr}/>`);\n\t}\n\tif (opts.duotone) {\n\t\tconst c1 = stringify$1(solidFillDesc, opts.duotone.color1, ctx);\n\t\tconst c2 = stringify$1(solidFillDesc, opts.duotone.color2, ctx);\n\t\tparts.push(`<a:duotone>${c1 ?? \"\"}${c2 ?? \"\"}</a:duotone>`);\n\t}\n\tif (opts.biLevel) parts.push(`<a:biLevel thresh=\"${opts.biLevel.threshold}\"/>`);\n\tif (opts.alphaCeiling) parts.push(\"<a:alphaCeiling/>\");\n\tif (opts.alphaFloor) parts.push(\"<a:alphaFloor/>\");\n\tif (opts.alphaInverse !== void 0) if (typeof opts.alphaInverse === \"boolean\") parts.push(\"<a:alphaInv/>\");\n\telse {\n\t\tconst colorXml = stringify$1(solidFillDesc, opts.alphaInverse, ctx);\n\t\tparts.push(`<a:alphaInv>${colorXml ?? \"\"}</a:alphaInv>`);\n\t}\n\tif (opts.alphaModFix) {\n\t\tconst amt = opts.alphaModFix.amount ?? 100;\n\t\tparts.push(`<a:alphaModFix amt=\"${amt}\"/>`);\n\t}\n\tif (opts.alphaRepl) parts.push(`<a:alphaRepl a=\"${opts.alphaRepl.amount}\"/>`);\n\tif (opts.alphaBiLevel) parts.push(`<a:alphaBiLevel thresh=\"${opts.alphaBiLevel.threshold}\"/>`);\n\tif (opts.colorChange) {\n\t\tconst fromXml = stringify$1(solidFillDesc, opts.colorChange.from, ctx);\n\t\tconst toXml = stringify$1(solidFillDesc, opts.colorChange.to, ctx);\n\t\tconst attrParts = [];\n\t\tif (opts.colorChange.useAlpha === false) attrParts.push(\"useA=\\\"0\\\"\");\n\t\tconst attrStr = attrParts.length ? \" \" + attrParts.join(\" \") : \"\";\n\t\tparts.push(`<a:clrChange${attrStr}><a:clrFrom>${fromXml ?? \"\"}</a:clrFrom><a:clrTo>${toXml ?? \"\"}</a:clrTo></a:clrChange>`);\n\t}\n\tif (opts.colorRepl) {\n\t\tconst colorXml = stringify$1(solidFillDesc, opts.colorRepl.color, ctx);\n\t\tparts.push(`<a:clrRepl>${colorXml ?? \"\"}</a:clrRepl>`);\n\t}\n\tif (opts.blur) {\n\t\tconst attrParts = [];\n\t\tif (opts.blur.radius !== void 0) attrParts.push(`rad=\"${opts.blur.radius}\"`);\n\t\tif (opts.blur.grow === false) attrParts.push(\"grow=\\\"0\\\"\");\n\t\tconst attrStr = attrParts.length ? \" \" + attrParts.join(\" \") : \"\";\n\t\tparts.push(`<a:blur${attrStr}/>`);\n\t}\n\treturn parts.join(\"\");\n}\nfunction readBlipEffects(el, ctx) {\n\tconst result = {};\n\tif (findChild(el, \"a:grayscl\")) result.grayscale = true;\n\tconst lum = findChild(el, \"a:lum\");\n\tif (lum) {\n\t\tconst opts = {};\n\t\tif (lum.attributes?.[\"bright\"] !== void 0) opts.bright = Number(String(lum.attributes[\"bright\"]).replace(\"%\", \"\"));\n\t\tif (lum.attributes?.[\"contrast\"] !== void 0) opts.contrast = Number(String(lum.attributes[\"contrast\"]).replace(\"%\", \"\"));\n\t\tresult.luminance = opts;\n\t}\n\tconst hsl = findChild(el, \"a:hsl\");\n\tif (hsl) {\n\t\tconst opts = {};\n\t\tif (hsl.attributes?.[\"hue\"] !== void 0) opts.hue = Number(hsl.attributes[\"hue\"]);\n\t\tif (hsl.attributes?.[\"sat\"] !== void 0) opts.saturation = Number(String(hsl.attributes[\"sat\"]).replace(\"%\", \"\"));\n\t\tif (hsl.attributes?.[\"lum\"] !== void 0) opts.luminance = Number(String(hsl.attributes[\"lum\"]).replace(\"%\", \"\"));\n\t\tresult.hsl = opts;\n\t}\n\tconst tint = findChild(el, \"a:tint\");\n\tif (tint) {\n\t\tconst opts = {};\n\t\tif (tint.attributes?.[\"hue\"] !== void 0) opts.hue = Number(tint.attributes[\"hue\"]);\n\t\tif (tint.attributes?.[\"amt\"] !== void 0) opts.amount = Number(String(tint.attributes[\"amt\"]).replace(\"%\", \"\"));\n\t\tresult.tint = opts;\n\t}\n\tconst biLevel = findChild(el, \"a:biLevel\");\n\tif (biLevel?.attributes?.[\"thresh\"] !== void 0) result.biLevel = { threshold: Number(String(biLevel.attributes[\"thresh\"]).replace(\"%\", \"\")) };\n\tif (findChild(el, \"a:alphaCeiling\")) result.alphaCeiling = true;\n\tif (findChild(el, \"a:alphaFloor\")) result.alphaFloor = true;\n\tconst alphaInv = findChild(el, \"a:alphaInv\");\n\tif (alphaInv) {\n\t\tconst solidFill = findChild(alphaInv, \"a:solidFill\");\n\t\tif (solidFill) result.alphaInverse = parse$1(solidFillDesc, solidFill, ctx);\n\t\telse result.alphaInverse = {};\n\t}\n\tconst alphaModFix = findChild(el, \"a:alphaModFix\");\n\tif (alphaModFix) {\n\t\tconst opts = {};\n\t\tif (alphaModFix.attributes?.[\"amt\"] !== void 0) opts.amount = Number(String(alphaModFix.attributes[\"amt\"]).replace(\"%\", \"\"));\n\t\tresult.alphaModFix = opts;\n\t}\n\tconst alphaRepl = findChild(el, \"a:alphaRepl\");\n\tif (alphaRepl?.attributes?.[\"a\"] !== void 0) result.alphaRepl = { amount: Number(String(alphaRepl.attributes[\"a\"]).replace(\"%\", \"\")) };\n\tconst alphaBiLevel = findChild(el, \"a:alphaBiLevel\");\n\tif (alphaBiLevel?.attributes?.[\"thresh\"] !== void 0) result.alphaBiLevel = { threshold: Number(String(alphaBiLevel.attributes[\"thresh\"]).replace(\"%\", \"\")) };\n\tconst clrChange = findChild(el, \"a:clrChange\");\n\tif (clrChange) {\n\t\tconst opts = {};\n\t\tif (clrChange.attributes?.[\"useA\"] !== void 0) opts.useAlpha = clrChange.attributes[\"useA\"] !== \"0\";\n\t\tconst clrFrom = findChild(clrChange, \"a:clrFrom\");\n\t\tif (clrFrom) {\n\t\t\tconst fromFill = findChild(clrFrom, \"a:solidFill\");\n\t\t\tif (fromFill) opts.from = parse$1(solidFillDesc, fromFill, ctx);\n\t\t}\n\t\tconst clrTo = findChild(clrChange, \"a:clrTo\");\n\t\tif (clrTo) {\n\t\t\tconst toFill = findChild(clrTo, \"a:solidFill\");\n\t\t\tif (toFill) opts.to = parse$1(solidFillDesc, toFill, ctx);\n\t\t}\n\t\tresult.colorChange = opts;\n\t}\n\tconst clrRepl = findChild(el, \"a:clrRepl\");\n\tif (clrRepl) {\n\t\tconst solidFill = findChild(clrRepl, \"a:solidFill\");\n\t\tif (solidFill) result.colorRepl = { color: parse$1(solidFillDesc, solidFill, ctx) };\n\t}\n\tconst blur = findChild(el, \"a:blur\");\n\tif (blur) {\n\t\tconst opts = {};\n\t\tif (blur.attributes?.[\"rad\"] !== void 0) opts.radius = Number(blur.attributes[\"rad\"]);\n\t\tif (blur.attributes?.[\"grow\"] !== void 0) opts.grow = blur.attributes[\"grow\"] !== \"0\";\n\t\tresult.blur = opts;\n\t}\n\tconst duotone = findChild(el, \"a:duotone\");\n\tif (duotone?.elements) {\n\t\tconst fills = [];\n\t\tfor (const child of duotone.elements) {\n\t\t\tconst sf = findChild(child, \"a:solidFill\");\n\t\t\tif (sf) fills.push(parse$1(solidFillDesc, sf, ctx));\n\t\t}\n\t\tconst [color1, color2] = fills;\n\t\tif (color1 && color2) result.duotone = {\n\t\t\tcolor1,\n\t\t\tcolor2\n\t\t};\n\t}\n\treturn Object.keys(result).length > 0 ? result : void 0;\n}\nconst blipDesc = {\n\tkind: \"custom\",\n\tstringify(opts, ctx) {\n\t\tconst attrParts = [];\n\t\tconst embedValue = `{${opts.referenceId}}`;\n\t\tattrParts.push(`r:embed=\"${escapeXml(embedValue)}\"`);\n\t\tattrParts.push(\"cstate=\\\"none\\\"\");\n\t\tconst attrStr = \" \" + attrParts.join(\" \");\n\t\tconst parts = [];\n\t\tif (opts.blipEffects) parts.push(stringifyBlipEffects(opts.blipEffects, ctx));\n\t\tconst content = parts.join(\"\");\n\t\tif (!content) return `<a:blip${attrStr}/>`;\n\t\treturn `<a:blip${attrStr}>${content}</a:blip>`;\n\t},\n\tparse(el, ctx) {\n\t\tconst result = {};\n\t\tconst embed = el.attributes?.[\"r:embed\"];\n\t\tif (embed !== void 0) result.referenceId = String(embed).replace(/^\\{(.+)\\}$/, \"$1\");\n\t\tconst link = el.attributes?.[\"r:link\"];\n\t\tif (link !== void 0) result.referenceId = String(link).replace(/^\\{(.+)\\}$/, \"$1\");\n\t\tconst effects = readBlipEffects(el, ctx);\n\t\tif (effects) result.blipEffects = effects;\n\t\treturn result;\n\t}\n};\nconst blipFillDesc = {\n\tkind: \"custom\",\n\tstringify(opts, ctx) {\n\t\tconst attrParts = [];\n\t\tif (opts.dpi !== void 0) attrParts.push(`dpi=\"${opts.dpi}\"`);\n\t\tif (opts.rotWithShape !== void 0) attrParts.push(`rotWithShape=\"${opts.rotWithShape ? 1 : 0}\"`);\n\t\tconst attrStr = attrParts.length ? \" \" + attrParts.join(\" \") : \"\";\n\t\tconst parts = [];\n\t\tif (opts.referenceId) {\n\t\t\tconst blipXml = stringify$1(blipDesc, {\n\t\t\t\treferenceId: opts.referenceId,\n\t\t\t\tblipEffects: opts.blipEffects\n\t\t\t}, ctx);\n\t\t\tif (blipXml) parts.push(blipXml);\n\t\t}\n\t\tif (opts.sourceRectangle) {\n\t\t\tconst srcRectXml = stringify$1(sourceRectangleDesc, opts.sourceRectangle, ctx);\n\t\t\tif (srcRectXml) parts.push(srcRectXml);\n\t\t}\n\t\tif (opts.tile) {\n\t\t\tconst tileXml = stringify$1(tileDesc, opts.tile, ctx);\n\t\t\tif (tileXml) parts.push(tileXml);\n\t\t} else parts.push(\"<a:stretch><a:fillRect/></a:stretch>\");\n\t\tconst content = parts.join(\"\");\n\t\tif (!attrStr && !content) return void 0;\n\t\tif (!content) return `<pic:blipFill${attrStr}/>`;\n\t\treturn `<pic:blipFill${attrStr}>${content}</pic:blipFill>`;\n\t},\n\tparse(el, ctx) {\n\t\tconst result = {};\n\t\tif (el.attributes?.[\"dpi\"] !== void 0) result.dpi = Number(el.attributes[\"dpi\"]);\n\t\tif (el.attributes?.[\"rotWithShape\"] !== void 0) result.rotWithShape = el.attributes[\"rotWithShape\"] !== \"0\";\n\t\tconst blip = findChild(el, \"a:blip\");\n\t\tif (blip) {\n\t\t\tconst blipResult = parse$1(blipDesc, blip, ctx);\n\t\t\tif (blipResult.referenceId) result.referenceId = blipResult.referenceId;\n\t\t\tif (blipResult.blipEffects) result.blipEffects = blipResult.blipEffects;\n\t\t}\n\t\tconst srcRect = findChild(el, \"a:srcRect\");\n\t\tif (srcRect) result.sourceRectangle = parse$1(sourceRectangleDesc, srcRect, ctx);\n\t\tconst tile = findChild(el, \"a:tile\");\n\t\tif (tile) result.tile = parse$1(tileDesc, tile, ctx);\n\t\treturn result;\n\t}\n};\n//#endregion\n//#region src/drawingml/fill/fill-descriptors.ts\n/**\n* Fill descriptors for DrawingML EG_FillProperties.\n*\n* @module\n*/\nfunction stringifyRelativeRect(tag, rect) {\n\tconst parts = [];\n\tif (rect.left) parts.push(`l=\"${escapeXml(rect.left)}\"`);\n\tif (rect.top) parts.push(`t=\"${escapeXml(rect.top)}\"`);\n\tif (rect.right) parts.push(`r=\"${escapeXml(rect.right)}\"`);\n\tif (rect.bottom) parts.push(`b=\"${escapeXml(rect.bottom)}\"`);\n\treturn `<${tag}${parts.length ? \" \" + parts.join(\" \") : \"\"}/>`;\n}\nfunction readRelativeRect(el) {\n\tconst result = {};\n\tif (el.attributes?.[\"l\"]) result.left = String(el.attributes[\"l\"]);\n\tif (el.attributes?.[\"t\"]) result.top = String(el.attributes[\"t\"]);\n\tif (el.attributes?.[\"r\"]) result.right = String(el.attributes[\"r\"]);\n\tif (el.attributes?.[\"b\"]) result.bottom = String(el.attributes[\"b\"]);\n\treturn result;\n}\nfunction stringifyShade(shade) {\n\tif (\"angle\" in shade) {\n\t\tconst parts = [];\n\t\tif (shade.angle !== void 0) parts.push(`ang=\"${shade.angle}\"`);\n\t\tif (shade.scaled !== void 0) parts.push(`scaled=\"${shade.scaled ? 1 : 0}\"`);\n\t\treturn `<a:lin${parts.length ? \" \" + parts.join(\" \") : \"\"}/>`;\n\t}\n\tconst pathShade = shade;\n\tconst parts = [];\n\tif (pathShade.path) parts.push(`path=\"${escapeXml(pathShade.path)}\"`);\n\tconst attrStr = parts.length ? \" \" + parts.join(\" \") : \"\";\n\tif (pathShade.fillToRectangle) return `<a:path${attrStr}>${stringifyRelativeRect(\"a:fillToRect\", pathShade.fillToRectangle)}</a:path>`;\n\treturn `<a:path${attrStr}/>`;\n}\nconst gradientFillDesc = {\n\tkind: \"custom\",\n\tstringify(opts, ctx) {\n\t\tconst parts = [];\n\t\tconst stopsXml = opts.stops.map((stop) => {\n\t\t\tconst colorXml = stringifyColorChoice(stop.color, ctx);\n\t\t\tif (!colorXml) return `<a:gs pos=\"${stop.position}\"/>`;\n\t\t\treturn `<a:gs pos=\"${stop.position}\">${colorXml}</a:gs>`;\n\t\t}).join(\"\");\n\t\tparts.push(`<a:gsLst>${stopsXml}</a:gsLst>`);\n\t\tif (opts.shade) parts.push(stringifyShade(opts.shade));\n\t\tif (opts.tileRectangle) parts.push(stringifyRelativeRect(\"a:tileRect\", opts.tileRectangle));\n\t\tconst attrParts = [];\n\t\tif (opts.flip) attrParts.push(`flip=\"${escapeXml(opts.flip)}\"`);\n\t\tif (opts.rotateWithShape !== void 0) attrParts.push(`rotWithShape=\"${opts.rotateWithShape ? 1 : 0}\"`);\n\t\treturn `<a:gradFill${attrParts.length ? \" \" + attrParts.join(\" \") : \"\"}>${parts.join(\"\")}</a:gradFill>`;\n\t},\n\tparse(el, ctx) {\n\t\tconst result = {};\n\t\tconst gsLst = findChild(el, \"a:gsLst\");\n\t\tif (gsLst?.elements) result.stops = gsLst.elements.filter((c) => c.name === \"a:gs\").map((gs) => {\n\t\t\treturn {\n\t\t\t\tposition: Number(gs.attributes?.[\"pos\"] ?? 0),\n\t\t\t\tcolor: readDirectColor(gs, ctx)\n\t\t\t};\n\t\t});\n\t\tconst lin = findChild(el, \"a:lin\");\n\t\tif (lin) {\n\t\t\tconst shade = {};\n\t\t\tif (lin.attributes?.[\"ang\"] !== void 0) shade.angle = Number(lin.attributes[\"ang\"]);\n\t\t\tif (lin.attributes?.[\"scaled\"] !== void 0) shade.scaled = lin.attributes[\"scaled\"] !== \"0\";\n\t\t\tresult.shade = shade;\n\t\t} else {\n\t\t\tconst path = findChild(el, \"a:path\");\n\t\t\tif (path) {\n\t\t\t\tconst shade = {};\n\t\t\t\tif (path.attributes?.[\"path\"] !== void 0) shade.path = String(path.attributes[\"path\"]);\n\t\t\t\tconst fillToRectangle = findChild(path, \"a:fillToRect\");\n\t\t\t\tif (fillToRectangle) shade.fillToRectangle = readRelativeRect(fillToRectangle);\n\t\t\t\tresult.shade = shade;\n\t\t\t}\n\t\t}\n\t\tif (el.attributes?.[\"flip\"] !== void 0) result.flip = String(el.attributes[\"flip\"]);\n\t\tif (el.attributes?.[\"rotWithShape\"] !== void 0) result.rotateWithShape = el.attributes[\"rotWithShape\"] !== \"0\";\n\t\tconst tileRectangle = findChild(el, \"a:tileRect\");\n\t\tif (tileRectangle) result.tileRectangle = readRelativeRect(tileRectangle);\n\t\treturn result;\n\t}\n};\nconst patternFillDesc = {\n\tkind: \"custom\",\n\tstringify(opts, ctx) {\n\t\tconst parts = [];\n\t\tconst prst = xsdPattern.to(opts.pattern);\n\t\tif (opts.foregroundColor) {\n\t\t\tconst colorXml = stringifyColorChoice(opts.foregroundColor, ctx);\n\t\t\tif (colorXml) parts.push(`<a:fgClr>${colorXml}</a:fgClr>`);\n\t\t}\n\t\tif (opts.backgroundColor) {\n\t\t\tconst colorXml = stringifyColorChoice(opts.backgroundColor, ctx);\n\t\t\tif (colorXml) parts.push(`<a:bgClr>${colorXml}</a:bgClr>`);\n\t\t}\n\t\tconst inner = parts.join(\"\");\n\t\treturn `<a:pattFill prst=\"${escapeXml(prst)}\">${inner}</a:pattFill>`;\n\t},\n\tparse(el, ctx) {\n\t\tconst result = {};\n\t\tconst prst = el.attributes?.[\"prst\"];\n\t\tif (prst) result.pattern = xsdPattern.from(String(prst));\n\t\tconst fgClr = findChild(el, \"a:fgClr\");\n\t\tif (fgClr) result.foregroundColor = readDirectColor(fgClr, ctx);\n\t\tconst bgClr = findChild(el, \"a:bgClr\");\n\t\tif (bgClr) result.backgroundColor = readDirectColor(bgClr, ctx);\n\t\treturn result;\n\t}\n};\nfunction imageTypeFromPath(path) {\n\tswitch (path.split(\".\").pop()?.toLowerCase() ?? \"\") {\n\t\tcase \"png\": return \"png\";\n\t\tcase \"jpg\":\n\t\tcase \"jpeg\": return \"jpg\";\n\t\tcase \"gif\": return \"gif\";\n\t\tcase \"bmp\": return \"bmp\";\n\t\tcase \"tif\":\n\t\tcase \"tiff\": return \"tif\";\n\t\tcase \"ico\": return \"ico\";\n\t\tcase \"emf\": return \"emf\";\n\t\tcase \"wmf\": return \"wmf\";\n\t\tdefault: return \"png\";\n\t}\n}\nconst fillDesc = {\n\tkind: \"custom\",\n\tstringify(opts, ctx) {\n\t\tif (typeof opts === \"string\") return stringify$1(solidFillDesc, { value: opts.replace(\"#\", \"\") }, ctx);\n\t\tswitch (opts.type) {\n\t\t\tcase \"none\": return \"<a:noFill/>\";\n\t\t\tcase \"solid\": return stringify$1(solidFillDesc, typeof opts.color === \"string\" ? { value: opts.color.replace(\"#\", \"\") } : opts.color, ctx);\n\t\t\tcase \"gradient\": {\n\t\t\t\tif (\"options\" in opts) return stringify$1(gradientFillDesc, opts.options, ctx);\n\t\t\t\tconst gradOpts = { stops: opts.stops.map((stop) => ({\n\t\t\t\t\tposition: stop.position * 1e3,\n\t\t\t\t\tcolor: typeof stop.color === \"string\" ? { value: stop.color.replace(\"#\", \"\") } : stop.color\n\t\t\t\t})) };\n\t\t\t\tif (!opts.path && opts.angle !== void 0) gradOpts.shade = {\n\t\t\t\t\tangle: opts.angle * 6e4,\n\t\t\t\t\tscaled: opts.scaled ?? true\n\t\t\t\t};\n\t\t\t\tif (opts.path) gradOpts.shade = { path: opts.path };\n\t\t\t\treturn stringify$1(gradientFillDesc, gradOpts, ctx);\n\t\t\t}\n\t\t\tcase \"blip\": return buildFill(opts, ctx.addMedia(toUint8Array(opts.data, { encoding: \"base64\" }), opts.imageType));\n\t\t\tcase \"pattern\": return stringify$1(patternFillDesc, {\n\t\t\t\tpattern: opts.pattern,\n\t\t\t\t...opts.foregroundColor && { foregroundColor: typeof opts.foregroundColor === \"string\" ? { value: opts.foregroundColor.replace(\"#\", \"\") } : opts.foregroundColor },\n\t\t\t\t...opts.backgroundColor && { backgroundColor: typeof opts.backgroundColor === \"string\" ? { value: opts.backgroundColor.replace(\"#\", \"\") } : opts.backgroundColor }\n\t\t\t}, ctx);\n\t\t\tcase \"group\": return \"<a:grpFill/>\";\n\t\t}\n\t},\n\tparse(el, ctx) {\n\t\tconst resolve = (tag) => el.name === tag ? el : findChild(el, tag);\n\t\tif (resolve(\"a:noFill\")) return { type: \"none\" };\n\t\tconst solidFill = resolve(\"a:solidFill\");\n\t\tif (solidFill) return {\n\t\t\ttype: \"solid\",\n\t\t\tcolor: parse$1(solidFillDesc, solidFill, ctx)\n\t\t};\n\t\tconst gradFill = resolve(\"a:gradFill\");\n\t\tif (gradFill) return {\n\t\t\ttype: \"gradient\",\n\t\t\toptions: parse$1(gradientFillDesc, gradFill, ctx)\n\t\t};\n\t\tconst pattFill = resolve(\"a:pattFill\");\n\t\tif (pattFill) return {\n\t\t\ttype: \"pattern\",\n\t\t\t...parse$1(patternFillDesc, pattFill, ctx)\n\t\t};\n\t\tif (resolve(\"a:grpFill\")) return { type: \"group\" };\n\t\tconst blipFill = resolve(\"a:blipFill\");\n\t\tif (blipFill) {\n\t\t\tconst blipOpts = parse$1(blipFillDesc, blipFill, ctx);\n\t\t\tconst mediaPath = blipOpts.referenceId ? ctx.resolveRelationship(blipOpts.referenceId) : void 0;\n\t\t\tconst data = mediaPath ? ctx.getRaw(mediaPath) : void 0;\n\t\t\tif (mediaPath && data) {\n\t\t\t\tconst blip = {\n\t\t\t\t\ttype: \"blip\",\n\t\t\t\t\tdata,\n\t\t\t\t\timageType: imageTypeFromPath(mediaPath)\n\t\t\t\t};\n\t\t\t\tif (blipOpts.dpi !== void 0) blip.dpi = blipOpts.dpi;\n\t\t\t\tif (blipOpts.rotWithShape !== void 0) blip.rotWithShape = blipOpts.rotWithShape;\n\t\t\t\tif (blipOpts.blipEffects) blip.blipEffects = blipOpts.blipEffects;\n\t\t\t\tif (blipOpts.sourceRectangle) blip.sourceRectangle = blipOpts.sourceRectangle;\n\t\t\t\tif (blipOpts.tile) blip.tile = blipOpts.tile;\n\t\t\t\treturn blip;\n\t\t\t}\n\t\t}\n\t\treturn { type: \"none\" };\n\t}\n};\nfunction readDirectColor(el, ctx) {\n\tconst color = parseColorChoice(el, ctx);\n\tif (Object.keys(color).length > 0) return color;\n\tconst solidFill = findChild(el, \"a:solidFill\");\n\tif (solidFill) return parse$1(solidFillDesc, solidFill, ctx);\n\treturn { value: \"\" };\n}\n//#endregion\n//#region src/drawingml/outline/outline-descriptors.ts\n/**\n* Outline descriptor for DrawingML shapes.\n*\n* @module\n*/\nfunction stringifyLineEnd(tag, opts) {\n\tconst parts = [];\n\tif (opts.type) parts.push(`type=\"${escapeXml(opts.type)}\"`);\n\tif (opts.width) parts.push(`w=\"${escapeXml(opts.width)}\"`);\n\tif (opts.length) parts.push(`len=\"${escapeXml(opts.length)}\"`);\n\treturn `<${tag}${parts.length ? \" \" + parts.join(\" \") : \"\"}/>`;\n}\nfunction readLineEnd(el) {\n\tconst result = {};\n\tif (el.attributes?.[\"type\"]) result.type = String(el.attributes[\"type\"]);\n\tif (el.attributes?.[\"w\"]) result.width = String(el.attributes[\"w\"]);\n\tif (el.attributes?.[\"len\"]) result.length = String(el.attributes[\"len\"]);\n\treturn result;\n}\nfunction stringifyCustomDash(stops) {\n\treturn `<a:custDash>${stops.map((s) => `<a:ds d=\"${escapeXml(s.d)}\" sp=\"${escapeXml(s.sp)}\"/>`).join(\"\")}</a:custDash>`;\n}\nconst outlineDesc = {\n\tkind: \"custom\",\n\tstringify(opts, ctx) {\n\t\tconst parts = [];\n\t\tconst attrParts = [];\n\t\tif (opts.width !== void 0) attrParts.push(`w=\"${convertToEmu(opts.width)}\"`);\n\t\tif (opts.cap !== void 0) attrParts.push(`cap=\"${escapeXml(xsdLineCap.to(opts.cap))}\"`);\n\t\tif (opts.compoundLine !== void 0) attrParts.push(`cmpd=\"${escapeXml(xsdCompoundLine.to(opts.compoundLine))}\"`);\n\t\tif (opts.align !== void 0) attrParts.push(`algn=\"${escapeXml(xsdPenAlignment.to(opts.align))}\"`);\n\t\tconst attrStr = attrParts.length ? \" \" + attrParts.join(\" \") : \"\";\n\t\tif (opts.type === \"noFill\") parts.push(\"<a:noFill/>\");\n\t\telse if (opts.type === \"solidFill\" && opts.color) {\n\t\t\tconst fillXml = stringify$1(solidFillDesc, opts.color, ctx);\n\t\t\tif (fillXml) parts.push(fillXml);\n\t\t} else if (opts.type === \"gradFill\" && opts.gradientFill) {\n\t\t\tconst gradXml = stringify$1(gradientFillDesc, opts.gradientFill, ctx);\n\t\t\tif (gradXml) parts.push(gradXml);\n\t\t}\n\t\tif (opts.customDash) parts.push(stringifyCustomDash(opts.customDash));\n\t\telse if (opts.dash) parts.push(`<a:prstDash val=\"${escapeXml(opts.dash)}\"/>`);\n\t\tif (opts.join) if (opts.join === \"miter\" && opts.miterLimit !== void 0) parts.push(`<a:miter lim=\"${opts.miterLimit}\"/>`);\n\t\telse parts.push(`<a:${opts.join}/>`);\n\t\tif (opts.headEnd) parts.push(stringifyLineEnd(\"a:headEnd\", opts.headEnd));\n\t\tif (opts.tailEnd) parts.push(stringifyLineEnd(\"a:tailEnd\", opts.tailEnd));\n\t\tif (parts.length === 0 && !attrStr) return void 0;\n\t\tif (parts.length === 0) return `<a:ln${attrStr}/>`;\n\t\treturn `<a:ln${attrStr}>${parts.join(\"\")}</a:ln>`;\n\t},\n\tparse(el, _ctx) {\n\t\tconst result = {};\n\t\tif (el.attributes) {\n\t\t\tif (el.attributes[\"w\"] !== void 0) result.width = Number(el.attributes[\"w\"]);\n\t\t\tif (el.attributes[\"cap\"] !== void 0) result.cap = xsdLineCap.from(String(el.attributes[\"cap\"]));\n\t\t\tif (el.attributes[\"cmpd\"] !== void 0) result.compoundLine = xsdCompoundLine.from(String(el.attributes[\"cmpd\"]));\n\t\t\tif (el.attributes[\"algn\"] !== void 0) result.align = xsdPenAlignment.from(String(el.attributes[\"algn\"]));\n\t\t}\n\t\tconst solidFill = findChild(el, \"a:solidFill\");\n\t\tif (solidFill) {\n\t\t\tresult.type = \"solidFill\";\n\t\t\tresult.color = parse$1(solidFillDesc, solidFill, _ctx);\n\t\t}\n\t\tif (findChild(el, \"a:noFill\")) result.type = \"noFill\";\n\t\tif (findChild(el, \"a:gradFill\")) {\n\t\t\tresult.type = \"gradFill\";\n\t\t\tresult.gradientFill = parse$1(gradientFillDesc, findChild(el, \"a:gradFill\"), _ctx);\n\t\t}\n\t\tconst prstDash = findChild(el, \"a:prstDash\");\n\t\tif (prstDash?.attributes?.[\"val\"]) result.dash = String(prstDash.attributes[\"val\"]);\n\t\tconst custDash = findChild(el, \"a:custDash\");\n\t\tif (custDash?.elements) result.customDash = custDash.elements.filter((c) => c.name === \"a:ds\").map((c) => ({\n\t\t\td: String(c.attributes?.[\"d\"] ?? \"\"),\n\t\t\tsp: String(c.attributes?.[\"sp\"] ?? \"\")\n\t\t}));\n\t\tif (findChild(el, \"a:round\")) result.join = \"round\";\n\t\telse if (findChild(el, \"a:bevel\")) result.join = \"bevel\";\n\t\telse {\n\t\t\tconst miter = findChild(el, \"a:miter\");\n\t\t\tif (miter) {\n\t\t\t\tresult.join = \"miter\";\n\t\t\t\tif (miter.attributes?.[\"lim\"]) result.miterLimit = Number(miter.attributes[\"lim\"]);\n\t\t\t}\n\t\t}\n\t\tconst headEnd = findChild(el, \"a:headEnd\");\n\t\tif (headEnd) result.headEnd = readLineEnd(headEnd);\n\t\tconst tailEnd = findChild(el, \"a:tailEnd\");\n\t\tif (tailEnd) result.tailEnd = readLineEnd(tailEnd);\n\t\treturn result;\n\t}\n};\n//#endregion\n//#region src/drawingml/effects/effect-descriptors.ts\n/**\n* Effect list descriptor for DrawingML shapes.\n*\n* @module\n*/\nfunction stringifyEffectColor(color, ctx) {\n\tif (!color) return void 0;\n\treturn stringifyColorChoice(color, ctx);\n}\nfunction stringifyColorEffect(tag, attrs, color, ctx) {\n\tconst attrParts = [];\n\tfor (const [key, val] of Object.entries(attrs)) if (val !== void 0) attrParts.push(`${key}=\"${escapeXml(String(val))}\"`);\n\tconst attrStr = attrParts.length ? \" \" + attrParts.join(\" \") : \"\";\n\tconst colorXml = stringifyEffectColor(color, ctx);\n\tif (!colorXml && !attrStr) return void 0;\n\tif (!colorXml) return `<${tag}${attrStr}/>`;\n\treturn `<${tag}${attrStr}>${colorXml}</${tag}>`;\n}\nfunction readColorFromElement(el, ctx) {\n\tconst color = parseColorChoice(el, ctx);\n\tif (!color || Object.keys(color).length === 0) return void 0;\n\treturn color;\n}\nconst effectListDesc = {\n\tkind: \"custom\",\n\tstringify(opts, ctx) {\n\t\tconst parts = [];\n\t\tif (opts.blur) {\n\t\t\tconst attrParts = [];\n\t\t\tif (opts.blur.radius !== void 0) attrParts.push(`rad=\"${opts.blur.radius}\"`);\n\t\t\tif (opts.blur.grow === false) attrParts.push(\"grow=\\\"0\\\"\");\n\t\t\tconst attrStr = attrParts.length ? \" \" + attrParts.join(\" \") : \"\";\n\t\t\tparts.push(`<a:blur${attrStr}/>`);\n\t\t}\n\t\tif (opts.fillOverlay) parts.push(`<a:fillOverlay blend=\"${escapeXml(xsdBlendMode.to(opts.fillOverlay.blend))}\"/>`);\n\t\tif (opts.glow) parts.push(stringifyColorEffect(\"a:glow\", { rad: opts.glow.radius }, opts.glow.color, ctx) ?? \"\");\n\t\tif (opts.innerShadow) parts.push(stringifyColorEffect(\"a:innerShdw\", {\n\t\t\tblurRad: opts.innerShadow.blurRadius,\n\t\t\tdist: opts.innerShadow.distance,\n\t\t\tdir: opts.innerShadow.direction\n\t\t}, opts.innerShadow.color, ctx) ?? \"\");\n\t\tif (opts.outerShadow) parts.push(stringifyColorEffect(\"a:outerShdw\", {\n\t\t\tblurRad: opts.outerShadow.blurRadius,\n\t\t\tdist: opts.outerShadow.distance,\n\t\t\tdir: opts.outerShadow.direction,\n\t\t\tsx: opts.outerShadow.scaleX,\n\t\t\tsy: opts.outerShadow.scaleY,\n\t\t\tkx: opts.outerShadow.skewX,\n\t\t\tky: opts.outerShadow.skewY,\n\t\t\talgn: opts.outerShadow.alignment !== void 0 ? xsdRectAlignment.to(opts.outerShadow.alignment) : void 0,\n\t\t\trotWithShape: opts.outerShadow.rotWithShape === false ? 0 : void 0\n\t\t}, opts.outerShadow.color, ctx) ?? \"\");\n\t\tif (opts.presetShadow) parts.push(stringifyColorEffect(\"a:prstShdw\", {\n\t\t\tprst: opts.presetShadow.preset,\n\t\t\tdist: opts.presetShadow.distance,\n\t\t\tdir: opts.presetShadow.direction\n\t\t}, opts.presetShadow.color, ctx) ?? \"\");\n\t\tif (opts.reflection) {\n\t\t\tconst refOpts = opts.reflection === true ? {} : opts.reflection;\n\t\t\tconst attrParts = [];\n\t\t\tif (refOpts.blurRadius !== void 0) attrParts.push(`blurRad=\"${refOpts.blurRadius}\"`);\n\t\t\tif (refOpts.startAlpha !== void 0) attrParts.push(`stA=\"${refOpts.startAlpha}\"`);\n\t\t\tif (refOpts.startPosition !== void 0) attrParts.push(`stPos=\"${refOpts.startPosition}\"`);\n\t\t\tif (refOpts.endAlpha !== void 0) attrParts.push(`endA=\"${refOpts.endAlpha}\"`);\n\t\t\tif (refOpts.endPosition !== void 0) attrParts.push(`endPos=\"${refOpts.endPosition}\"`);\n\t\t\tif (refOpts.distance !== void 0) attrParts.push(`dist=\"${refOpts.distance}\"`);\n\t\t\tif (refOpts.direction !== void 0) attrParts.push(`dir=\"${refOpts.direction}\"`);\n\t\t\tif (refOpts.fadeDirection !== void 0) attrParts.push(`fadeDir=\"${refOpts.fadeDirection}\"`);\n\t\t\tif (refOpts.scaleX !== void 0) attrParts.push(`sx=\"${refOpts.scaleX}\"`);\n\t\t\tif (refOpts.scaleY !== void 0) attrParts.push(`sy=\"${refOpts.scaleY}\"`);\n\t\t\tif (refOpts.skewX !== void 0) attrParts.push(`kx=\"${refOpts.skewX}\"`);\n\t\t\tif (refOpts.skewY !== void 0) attrParts.push(`ky=\"${refOpts.skewY}\"`);\n\t\t\tif (refOpts.alignment !== void 0) attrParts.push(`algn=\"${escapeXml(xsdRectAlignment.to(refOpts.alignment))}\"`);\n\t\t\tif (refOpts.rotWithShape !== void 0) attrParts.push(`rotWithShape=\"${refOpts.rotWithShape ? 1 : 0}\"`);\n\t\t\tconst attrStr = attrParts.length ? \" \" + attrParts.join(\" \") : \"\";\n\t\t\tparts.push(`<a:reflection${attrStr}/>`);\n\t\t}\n\t\tif (opts.softEdge !== void 0) parts.push(`<a:softEdge rad=\"${opts.softEdge}\"/>`);\n\t\tconst content = parts.filter(Boolean).join(\"\");\n\t\tif (!content) return void 0;\n\t\treturn `<a:effectLst>${content}</a:effectLst>`;\n\t},\n\tparse(el, ctx) {\n\t\tconst result = {};\n\t\tconst blur = findChild(el, \"a:blur\");\n\t\tif (blur) {\n\t\t\tconst blurOpts = {};\n\t\t\tif (blur.attributes?.[\"rad\"] !== void 0) blurOpts.radius = Number(blur.attributes[\"rad\"]);\n\t\t\tif (blur.attributes?.[\"grow\"] !== void 0) blurOpts.grow = blur.attributes[\"grow\"] !== \"0\";\n\t\t\tresult.blur = blurOpts;\n\t\t}\n\t\tconst glow = findChild(el, \"a:glow\");\n\t\tif (glow) {\n\t\t\tconst glowOpts = {};\n\t\t\tif (glow.attributes?.[\"rad\"] !== void 0) glowOpts.radius = Number(glow.attributes[\"rad\"]);\n\t\t\tconst color = readColorFromElement(glow, ctx);\n\t\t\tif (color) glowOpts.color = color;\n\t\t\tresult.glow = glowOpts;\n\t\t}\n\t\tconst innerShdw = findChild(el, \"a:innerShdw\");\n\t\tif (innerShdw) {\n\t\t\tconst innerOpts = {};\n\t\t\tif (innerShdw.attributes?.[\"blurRad\"] !== void 0) innerOpts.blurRadius = Number(innerShdw.attributes[\"blurRad\"]);\n\t\t\tif (innerShdw.attributes?.[\"dist\"] !== void 0) innerOpts.distance = Number(innerShdw.attributes[\"dist\"]);\n\t\t\tif (innerShdw.attributes?.[\"dir\"] !== void 0) innerOpts.direction = Number(innerShdw.attributes[\"dir\"]);\n\t\t\tconst color = readColorFromElement(innerShdw, ctx);\n\t\t\tif (color) innerOpts.color = color;\n\t\t\tresult.innerShadow = innerOpts;\n\t\t}\n\t\tconst outerShdw = findChild(el, \"a:outerShdw\");\n\t\tif (outerShdw) {\n\t\t\tconst outerOpts = {};\n\t\t\tif (outerShdw.attributes?.[\"blurRad\"] !== void 0) outerOpts.blurRadius = Number(outerShdw.attributes[\"blurRad\"]);\n\t\t\tif (outerShdw.attributes?.[\"dist\"] !== void 0) outerOpts.distance = Number(outerShdw.attributes[\"dist\"]);\n\t\t\tif (outerShdw.attributes?.[\"dir\"] !== void 0) outerOpts.direction = Number(outerShdw.attributes[\"dir\"]);\n\t\t\tif (outerShdw.attributes?.[\"sx\"] !== void 0) outerOpts.scaleX = Number(outerShdw.attributes[\"sx\"]);\n\t\t\tif (outerShdw.attributes?.[\"sy\"] !== void 0) outerOpts.scaleY = Number(outerShdw.attributes[\"sy\"]);\n\t\t\tif (outerShdw.attributes?.[\"kx\"] !== void 0) outerOpts.skewX = Number(outerShdw.attributes[\"kx\"]);\n\t\t\tif (outerShdw.attributes?.[\"ky\"] !== void 0) outerOpts.skewY = Number(outerShdw.attributes[\"ky\"]);\n\t\t\tif (outerShdw.attributes?.[\"algn\"] !== void 0) outerOpts.alignment = xsdRectAlignment.from(String(outerShdw.attributes[\"algn\"]));\n\t\t\tif (outerShdw.attributes?.[\"rotWithShape\"] !== void 0) outerOpts.rotWithShape = outerShdw.attributes[\"rotWithShape\"] !== \"0\";\n\t\t\tconst color = readColorFromElement(outerShdw, ctx);\n\t\t\tif (color) outerOpts.color = color;\n\t\t\tresult.outerShadow = outerOpts;\n\t\t}\n\t\tconst fillOverlay = findChild(el, \"a:fillOverlay\");\n\t\tif (fillOverlay) {\n\t\t\tconst overlayOpts = {};\n\t\t\tif (fillOverlay.attributes?.[\"blend\"] !== void 0) overlayOpts.blend = xsdBlendMode.from(String(fillOverlay.attributes[\"blend\"]));\n\t\t\tresult.fillOverlay = overlayOpts;\n\t\t}\n\t\tconst prstShdw = findChild(el, \"a:prstShdw\");\n\t\tif (prstShdw) {\n\t\t\tconst prstOpts = {};\n\t\t\tif (prstShdw.attributes?.[\"prst\"] !== void 0) prstOpts.preset = String(prstShdw.attributes[\"prst\"]);\n\t\t\tif (prstShdw.attributes?.[\"dist\"] !== void 0) prstOpts.distance = Number(prstShdw.attributes[\"dist\"]);\n\t\t\tif (prstShdw.attributes?.[\"dir\"] !== void 0) prstOpts.direction = Number(prstShdw.attributes[\"dir\"]);\n\t\t\tconst color = readColorFromElement(prstShdw, ctx);\n\t\t\tif (color) prstOpts.color = color;\n\t\t\tresult.presetShadow = prstOpts;\n\t\t}\n\t\tconst reflection = findChild(el, \"a:reflection\");\n\t\tif (reflection) {\n\t\t\tconst refOpts = {};\n\t\t\tif (reflection.attributes?.[\"blurRad\"] !== void 0) refOpts.blurRadius = Number(reflection.attributes[\"blurRad\"]);\n\t\t\tif (reflection.attributes?.[\"stA\"] !== void 0) refOpts.startAlpha = Number(reflection.attributes[\"stA\"]);\n\t\t\tif (reflection.attributes?.[\"stPos\"] !== void 0) refOpts.startPosition = Number(reflection.attributes[\"stPos\"]);\n\t\t\tif (reflection.attributes?.[\"endA\"] !== void 0) refOpts.endAlpha = Number(reflection.attributes[\"endA\"]);\n\t\t\tif (reflection.attributes?.[\"endPos\"] !== void 0) refOpts.endPosition = Number(reflection.attributes[\"endPos\"]);\n\t\t\tif (reflection.attributes?.[\"dist\"] !== void 0) refOpts.distance = Number(reflection.attributes[\"dist\"]);\n\t\t\tif (reflection.attributes?.[\"dir\"] !== void 0) refOpts.direction = Number(reflection.attributes[\"dir\"]);\n\t\t\tif (reflection.attributes?.[\"fadeDir\"] !== void 0) refOpts.fadeDirection = Number(reflection.attributes[\"fadeDir\"]);\n\t\t\tif (reflection.attributes?.[\"sx\"] !== void 0) refOpts.scaleX = Number(reflection.attributes[\"sx\"]);\n\t\t\tif (reflection.attributes?.[\"sy\"] !== void 0) refOpts.scaleY = Number(reflection.attributes[\"sy\"]);\n\t\t\tif (reflection.attributes?.[\"kx\"] !== void 0) refOpts.skewX = Number(reflection.attributes[\"kx\"]);\n\t\t\tif (reflection.attributes?.[\"ky\"] !== void 0) refOpts.skewY = Number(reflection.attributes[\"ky\"]);\n\t\t\tif (reflection.attributes?.[\"algn\"] !== void 0) refOpts.alignment = xsdRectAlignment.from(String(reflection.attributes[\"algn\"]));\n\t\t\tif (reflection.attributes?.[\"rotWithShape\"] !== void 0) refOpts.rotWithShape = reflection.attributes[\"rotWithShape\"] !== \"0\";\n\t\t\tresult.reflection = refOpts;\n\t\t}\n\t\tconst softEdge = findChild(el, \"a:softEdge\");\n\t\tif (softEdge?.attributes?.[\"rad\"] !== void 0) result.softEdge = Number(softEdge.attributes[\"rad\"]);\n\t\treturn result;\n\t}\n};\n//#endregion\n//#region src/drawingml/locking/locking-descriptors.ts\nconst BASE_LOCKING_KEYS = [\n\t\"noGrp\",\n\t\"noSelect\",\n\t\"noRot\",\n\t\"noChangeAspect\",\n\t\"noMove\",\n\t\"noResize\",\n\t\"noEditPoints\",\n\t\"noAdjustHandles\",\n\t\"noChangeArrowheads\",\n\t\"noChangeShapeType\"\n];\nconst SHAPE_EXTRA_KEYS = [\"noTextEdit\"];\nconst PICTURE_EXTRA_KEYS = [\"noCrop\"];\nconst GROUP_EXTRA_KEYS = [\"noUngrp\"];\nconst FRAME_EXTRA_KEYS = [\"noDrilldown\"];\nfunction stringifyLockingAttrs(opts, keys) {\n\tconst parts = [];\n\tfor (const key of keys) if (opts[key] !== void 0) parts.push(`${key}=\"${opts[key] ? 1 : 0}\"`);\n\treturn parts.length ? \" \" + parts.join(\" \") : \"\";\n}\nfunction readLockingAttrs(el, keys) {\n\tconst result = {};\n\tif (!el.attributes) return result;\n\tfor (const key of keys) {\n\t\tconst val = el.attributes[key];\n\t\tif (val !== void 0) result[key] = val === \"1\" || val === 1 || val === \"true\";\n\t}\n\treturn result;\n}\nconst shapeLockingDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\tconst attrStr = stringifyLockingAttrs(opts, [...BASE_LOCKING_KEYS, ...SHAPE_EXTRA_KEYS]);\n\t\tif (!attrStr) return void 0;\n\t\treturn `<a:spLocks${attrStr}/>`;\n\t},\n\tparse(el, _ctx) {\n\t\treturn readLockingAttrs(el, [...BASE_LOCKING_KEYS, ...SHAPE_EXTRA_KEYS]);\n\t}\n};\nconst pictureLockingDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\tconst attrStr = stringifyLockingAttrs(opts, [...BASE_LOCKING_KEYS, ...PICTURE_EXTRA_KEYS]);\n\t\tif (!attrStr) return void 0;\n\t\treturn `<a:picLocks${attrStr}/>`;\n\t},\n\tparse(el, _ctx) {\n\t\treturn readLockingAttrs(el, [...BASE_LOCKING_KEYS, ...PICTURE_EXTRA_KEYS]);\n\t}\n};\nconst groupLockingDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\tconst attrStr = stringifyLockingAttrs(opts, [...BASE_LOCKING_KEYS, ...GROUP_EXTRA_KEYS]);\n\t\tif (!attrStr) return void 0;\n\t\treturn `<a:grpSpLocks${attrStr}/>`;\n\t},\n\tparse(el, _ctx) {\n\t\treturn readLockingAttrs(el, [...BASE_LOCKING_KEYS, ...GROUP_EXTRA_KEYS]);\n\t}\n};\nconst graphicFrameLockingDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\tconst attrStr = stringifyLockingAttrs(opts, [...BASE_LOCKING_KEYS, ...FRAME_EXTRA_KEYS]);\n\t\tif (!attrStr) return void 0;\n\t\treturn `<a:graphicFrameLocks${attrStr}/>`;\n\t},\n\tparse(el, _ctx) {\n\t\treturn readLockingAttrs(el, [...BASE_LOCKING_KEYS, ...FRAME_EXTRA_KEYS]);\n\t}\n};\n//#endregion\n//#region src/drawingml/geometry/geometry-descriptors.ts\n/**\n* Geometry descriptors for DrawingML shapes.\n*\n* @module\n*/\nconst adjustmentValuesDesc = {\n\tkind: \"custom\",\n\tstringify(guides, _ctx) {\n\t\tif (!guides || guides.length === 0) return \"<a:avLst/>\";\n\t\treturn `<a:avLst>${guides.map((g) => `<a:gd name=\"${escapeXml(g.name)}\" fmla=\"${escapeXml(g.formula)}\"/>`).join(\"\")}</a:avLst>`;\n\t},\n\tparse(el, _ctx) {\n\t\tconst result = [];\n\t\tif (el.elements) {\n\t\t\tfor (const child of el.elements) if (child.name === \"a:gd\" && child.attributes) {\n\t\t\t\tconst name = child.attributes[\"name\"];\n\t\t\t\tconst fmla = child.attributes[\"fmla\"];\n\t\t\t\tif (name !== void 0 && fmla !== void 0) result.push({\n\t\t\t\t\tname: String(name),\n\t\t\t\t\tformula: String(fmla)\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n};\nconst presetGeometryDesc = {\n\tkind: \"custom\",\n\tstringify(opts, ctx) {\n\t\tconst prst = opts.preset ?? \"rect\";\n\t\tlet avXml = \"\";\n\t\tif (opts.adjustmentValues) avXml = stringify$1(adjustmentValuesDesc, opts.adjustmentValues, ctx) ?? \"<a:avLst/>\";\n\t\telse avXml = \"<a:avLst/>\";\n\t\treturn `<a:prstGeom prst=\"${escapeXml(prst)}\">${avXml}</a:prstGeom>`;\n\t},\n\tparse(el, ctx) {\n\t\tconst result = {};\n\t\tif (el.attributes?.[\"prst\"] !== void 0) result.preset = String(el.attributes[\"prst\"]);\n\t\tconst avLst = findChild(el, \"a:avLst\");\n\t\tif (avLst) {\n\t\t\tconst guides = parse$1(adjustmentValuesDesc, avLst, ctx);\n\t\t\tif (guides.length > 0) result.adjustmentValues = guides;\n\t\t}\n\t\treturn result;\n\t}\n};\nfunction stringifyAdjustPoint(pt) {\n\treturn `<a:pt x=\"${escapeXml(pt.x)}\" y=\"${escapeXml(pt.y)}\"/>`;\n}\nfunction stringifyPathCommand(cmd) {\n\tswitch (cmd.command) {\n\t\tcase \"moveTo\": return `<a:moveTo>${stringifyAdjustPoint(cmd.point)}</a:moveTo>`;\n\t\tcase \"lineTo\": return `<a:lnTo>${stringifyAdjustPoint(cmd.point)}</a:lnTo>`;\n\t\tcase \"arcTo\": return `<a:arcTo wR=\"${escapeXml(cmd.widthRadius)}\" hR=\"${escapeXml(cmd.heightRadius)}\" stAng=\"${escapeXml(cmd.startAngle)}\" swAng=\"${escapeXml(cmd.sweepAngle)}\"/>`;\n\t\tcase \"quadBezTo\": return `<a:quadBezTo>${cmd.points.map(stringifyAdjustPoint).join(\"\")}</a:quadBezTo>`;\n\t\tcase \"cubicBezTo\": return `<a:cubicBezTo>${cmd.points.map(stringifyAdjustPoint).join(\"\")}</a:cubicBezTo>`;\n\t\tcase \"close\": return \"<a:close/>\";\n\t}\n}\nfunction stringifyPath(path) {\n\tconst attrs = [];\n\tif (path.w !== void 0) attrs.push(`w=\"${path.w}\"`);\n\tif (path.h !== void 0) attrs.push(`h=\"${path.h}\"`);\n\tif (path.fill !== void 0) attrs.push(`fill=\"${escapeXml(path.fill)}\"`);\n\tif (path.stroke !== void 0) attrs.push(`stroke=\"${path.stroke}\"`);\n\tif (path.extrusionOk !== void 0) attrs.push(`extrusionOk=\"${path.extrusionOk}\"`);\n\tconst attrStr = attrs.length ? \" \" + attrs.join(\" \") : \"\";\n\tconst cmds = path.commands.map(stringifyPathCommand).join(\"\");\n\tif (!cmds && !attrStr) return \"<a:path/>\";\n\treturn `<a:path${attrStr}>${cmds}</a:path>`;\n}\nfunction readAdjustPoint(el) {\n\tif (!el.attributes) return void 0;\n\tconst x = el.attributes[\"x\"];\n\tconst y = el.attributes[\"y\"];\n\tif (x === void 0 || y === void 0) return void 0;\n\treturn {\n\t\tx: String(x),\n\t\ty: String(y)\n\t};\n}\nfunction readPathCommand(tag, el) {\n\tswitch (tag) {\n\t\tcase \"a:moveTo\": {\n\t\t\tconst pt = el.elements?.find((c) => c.name === \"a:pt\");\n\t\t\tif (!pt) return void 0;\n\t\t\tconst point = readAdjustPoint(pt);\n\t\t\tif (!point) return void 0;\n\t\t\treturn {\n\t\t\t\tcommand: \"moveTo\",\n\t\t\t\tpoint\n\t\t\t};\n\t\t}\n\t\tcase \"a:lnTo\": {\n\t\t\tconst pt = el.elements?.find((c) => c.name === \"a:pt\");\n\t\t\tif (!pt) return void 0;\n\t\t\tconst point = readAdjustPoint(pt);\n\t\t\tif (!point) return void 0;\n\t\t\treturn {\n\t\t\t\tcommand: \"lineTo\",\n\t\t\t\tpoint\n\t\t\t};\n\t\t}\n\t\tcase \"a:arcTo\": {\n\t\t\tconst a = el.attributes;\n\t\t\tif (!a) return void 0;\n\t\t\treturn {\n\t\t\t\tcommand: \"arcTo\",\n\t\t\t\twidthRadius: String(a[\"wR\"] ?? \"\"),\n\t\t\t\theightRadius: String(a[\"hR\"] ?? \"\"),\n\t\t\t\tstartAngle: String(a[\"stAng\"] ?? \"\"),\n\t\t\t\tsweepAngle: String(a[\"swAng\"] ?? \"\")\n\t\t\t};\n\t\t}\n\t\tcase \"a:quadBezTo\": {\n\t\t\tconst [p0, p1] = (el.elements ?? []).filter((c) => c.name === \"a:pt\").map(readAdjustPoint).filter((p) => p !== void 0);\n\t\t\tif (!p0 || !p1) return void 0;\n\t\t\treturn {\n\t\t\t\tcommand: \"quadBezTo\",\n\t\t\t\tpoints: [p0, p1]\n\t\t\t};\n\t\t}\n\t\tcase \"a:cubicBezTo\": {\n\t\t\tconst [p0, p1, p2] = (el.elements ?? []).filter((c) => c.name === \"a:pt\").map(readAdjustPoint).filter((p) => p !== void 0);\n\t\t\tif (!p0 || !p1 || !p2) return void 0;\n\t\t\treturn {\n\t\t\t\tcommand: \"cubicBezTo\",\n\t\t\t\tpoints: [\n\t\t\t\t\tp0,\n\t\t\t\t\tp1,\n\t\t\t\t\tp2\n\t\t\t\t]\n\t\t\t};\n\t\t}\n\t\tcase \"a:close\": return { command: \"close\" };\n\t\tdefault: return;\n\t}\n}\nfunction readPath(el) {\n\tconst result = {};\n\tif (el.attributes) {\n\t\tif (el.attributes[\"w\"] !== void 0) result.w = Number(el.attributes[\"w\"]);\n\t\tif (el.attributes[\"h\"] !== void 0) result.h = Number(el.attributes[\"h\"]);\n\t\tif (el.attributes[\"fill\"] !== void 0) result.fill = String(el.attributes[\"fill\"]);\n\t\tif (el.attributes[\"stroke\"] !== void 0) result.stroke = el.attributes[\"stroke\"] !== \"0\" && el.attributes[\"stroke\"] !== \"false\";\n\t\tif (el.attributes[\"extrusionOk\"] !== void 0) result.extrusionOk = el.attributes[\"extrusionOk\"] !== \"0\" && el.attributes[\"extrusionOk\"] !== \"false\";\n\t}\n\tconst commands = [];\n\tif (el.elements) {\n\t\tfor (const child of el.elements) if (child.name) {\n\t\t\tconst cmd = readPathCommand(child.name, child);\n\t\t\tif (cmd) commands.push(cmd);\n\t\t}\n\t}\n\tif (commands.length > 0) result.commands = commands;\n\treturn result;\n}\nfunction stringifyGuideList(tag, guides) {\n\tif (!guides || guides.length === 0) return `<${tag}/>`;\n\treturn `<${tag}>${guides.map((g) => `<a:gd name=\"${escapeXml(g.name)}\" fmla=\"${escapeXml(g.formula)}\"/>`).join(\"\")}</${tag}>`;\n}\nfunction readGuideList(el) {\n\tconst result = [];\n\tif (el.elements) {\n\t\tfor (const child of el.elements) if (child.name === \"a:gd\" && child.attributes) {\n\t\t\tconst name = child.attributes[\"name\"];\n\t\t\tconst fmla = child.attributes[\"fmla\"];\n\t\t\tif (name !== void 0 && fmla !== void 0) result.push({\n\t\t\t\tname: String(name),\n\t\t\t\tformula: String(fmla)\n\t\t\t});\n\t\t}\n\t}\n\treturn result;\n}\nfunction stringifyAdjustHandlePos(pos) {\n\treturn `<a:pos x=\"${escapeXml(pos.x)}\" y=\"${escapeXml(pos.y)}\"/>`;\n}\nfunction stringifyXYAdjustHandle(h) {\n\tconst attrs = [];\n\tif (h.guideRefX !== void 0) attrs.push(`gdRefX=\"${escapeXml(h.guideRefX)}\"`);\n\tif (h.minX !== void 0) attrs.push(`minX=\"${escapeXml(h.minX)}\"`);\n\tif (h.maxX !== void 0) attrs.push(`maxX=\"${escapeXml(h.maxX)}\"`);\n\tif (h.guideRefY !== void 0) attrs.push(`gdRefY=\"${escapeXml(h.guideRefY)}\"`);\n\tif (h.minY !== void 0) attrs.push(`minY=\"${escapeXml(h.minY)}\"`);\n\tif (h.maxY !== void 0) attrs.push(`maxY=\"${escapeXml(h.maxY)}\"`);\n\treturn `<a:ahXY${attrs.length ? \" \" + attrs.join(\" \") : \"\"}>${stringifyAdjustHandlePos(h.position)}</a:ahXY>`;\n}\nfunction stringifyPolarAdjustHandle(h) {\n\tconst attrs = [];\n\tif (h.guideRefRadius !== void 0) attrs.push(`gdRefR=\"${escapeXml(h.guideRefRadius)}\"`);\n\tif (h.minRadius !== void 0) attrs.push(`minR=\"${escapeXml(h.minRadius)}\"`);\n\tif (h.maxRadius !== void 0) attrs.push(`maxR=\"${escapeXml(h.maxRadius)}\"`);\n\tif (h.guideRefAngle !== void 0) attrs.push(`gdRefAng=\"${escapeXml(h.guideRefAngle)}\"`);\n\tif (h.minAngle !== void 0) attrs.push(`minAng=\"${escapeXml(h.minAngle)}\"`);\n\tif (h.maxAngle !== void 0) attrs.push(`maxAng=\"${escapeXml(h.maxAngle)}\"`);\n\treturn `<a:ahPolar${attrs.length ? \" \" + attrs.join(\" \") : \"\"}>${stringifyAdjustHandlePos(h.position)}</a:ahPolar>`;\n}\nfunction stringifyAdjustHandle(h) {\n\treturn h.type === \"xy\" ? stringifyXYAdjustHandle(h) : stringifyPolarAdjustHandle(h);\n}\nfunction readAdjustHandlePos(el) {\n\tconst pos = el.elements?.find((c) => c.name === \"a:pos\");\n\tif (!pos?.attributes) return void 0;\n\tconst x = pos.attributes[\"x\"];\n\tconst y = pos.attributes[\"y\"];\n\tif (x === void 0 || y === void 0) return void 0;\n\treturn {\n\t\tx: String(x),\n\t\ty: String(y)\n\t};\n}\nfunction readXYAdjustHandle(el) {\n\tconst position = readAdjustHandlePos(el);\n\tif (!position) return void 0;\n\tconst result = {\n\t\ttype: \"xy\",\n\t\tposition\n\t};\n\tif (el.attributes?.[\"gdRefX\"] !== void 0) result.guideRefX = String(el.attributes[\"gdRefX\"]);\n\tif (el.attributes?.[\"minX\"] !== void 0) result.minX = String(el.attributes[\"minX\"]);\n\tif (el.attributes?.[\"maxX\"] !== void 0) result.maxX = String(el.attributes[\"maxX\"]);\n\tif (el.attributes?.[\"gdRefY\"] !== void 0) result.guideRefY = String(el.attributes[\"gdRefY\"]);\n\tif (el.attributes?.[\"minY\"] !== void 0) result.minY = String(el.attributes[\"minY\"]);\n\tif (el.attributes?.[\"maxY\"] !== void 0) result.maxY = String(el.attributes[\"maxY\"]);\n\treturn result;\n}\nfunction readPolarAdjustHandle(el) {\n\tconst position = readAdjustHandlePos(el);\n\tif (!position) return void 0;\n\tconst result = {\n\t\ttype: \"polar\",\n\t\tposition\n\t};\n\tif (el.attributes?.[\"gdRefR\"] !== void 0) result.guideRefRadius = String(el.attributes[\"gdRefR\"]);\n\tif (el.attributes?.[\"minR\"] !== void 0) result.minRadius = String(el.attributes[\"minR\"]);\n\tif (el.attributes?.[\"maxR\"] !== void 0) result.maxRadius = String(el.attributes[\"maxR\"]);\n\tif (el.attributes?.[\"gdRefAng\"] !== void 0) result.guideRefAngle = String(el.attributes[\"gdRefAng\"]);\n\tif (el.attributes?.[\"minAng\"] !== void 0) result.minAngle = String(el.attributes[\"minAng\"]);\n\tif (el.attributes?.[\"maxAng\"] !== void 0) result.maxAngle = String(el.attributes[\"maxAng\"]);\n\treturn result;\n}\nfunction stringifyConnectionSite(site) {\n\treturn `<a:cxn ang=\"${escapeXml(site.angle)}\">${stringifyAdjustHandlePos(site.position)}</a:cxn>`;\n}\nfunction readConnectionSite(el) {\n\tconst ang = el.attributes?.[\"ang\"];\n\tif (ang === void 0) return void 0;\n\tconst position = readAdjustHandlePos(el);\n\tif (!position) return void 0;\n\treturn {\n\t\tangle: String(ang),\n\t\tposition\n\t};\n}\nfunction stringifyGeomRect(rect) {\n\treturn `<a:rect l=\"${escapeXml(rect.left)}\" t=\"${escapeXml(rect.top)}\" r=\"${escapeXml(rect.right)}\" b=\"${escapeXml(rect.bottom)}\"/>`;\n}\nfunction readGeomRect(el) {\n\tconst a = el.attributes;\n\tif (!a) return void 0;\n\tconst l = a[\"l\"];\n\tconst t = a[\"t\"];\n\tconst r = a[\"r\"];\n\tconst b = a[\"b\"];\n\tif (l === void 0 || t === void 0 || r === void 0 || b === void 0) return void 0;\n\treturn {\n\t\tleft: String(l),\n\t\ttop: String(t),\n\t\tright: String(r),\n\t\tbottom: String(b)\n\t};\n}\nconst customGeometryDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\tconst parts = [];\n\t\tif (opts.adjustmentValues && opts.adjustmentValues.length > 0) parts.push(stringifyGuideList(\"a:avLst\", opts.adjustmentValues));\n\t\telse parts.push(\"<a:avLst/>\");\n\t\tif (opts.guides && opts.guides.length > 0) parts.push(stringifyGuideList(\"a:gdLst\", opts.guides));\n\t\tif (opts.adjustHandles && opts.adjustHandles.length > 0) {\n\t\t\tconst inner = opts.adjustHandles.map(stringifyAdjustHandle).join(\"\");\n\t\t\tparts.push(`<a:ahLst>${inner}</a:ahLst>`);\n\t\t}\n\t\tif (opts.connectionSites && opts.connectionSites.length > 0) {\n\t\t\tconst inner = opts.connectionSites.map(stringifyConnectionSite).join(\"\");\n\t\t\tparts.push(`<a:cxnLst>${inner}</a:cxnLst>`);\n\t\t}\n\t\tif (opts.textRectangle) parts.push(stringifyGeomRect(opts.textRectangle));\n\t\tconst pathsXml = opts.pathList.map(stringifyPath).join(\"\");\n\t\tparts.push(`<a:pathLst>${pathsXml}</a:pathLst>`);\n\t\treturn `<a:custGeom>${parts.join(\"\")}</a:custGeom>`;\n\t},\n\tparse(el, _ctx) {\n\t\tconst result = {};\n\t\tconst avLst = findChild(el, \"a:avLst\");\n\t\tif (avLst) {\n\t\t\tconst guides = readGuideList(avLst);\n\t\t\tif (guides.length > 0) result.adjustmentValues = guides;\n\t\t}\n\t\tconst gdLst = findChild(el, \"a:gdLst\");\n\t\tif (gdLst) {\n\t\t\tconst guides = readGuideList(gdLst);\n\t\t\tif (guides.length > 0) result.guides = guides;\n\t\t}\n\t\tconst ahLst = findChild(el, \"a:ahLst\");\n\t\tif (ahLst?.elements) {\n\t\t\tconst handles = [];\n\t\t\tfor (const child of ahLst.elements) if (child.name === \"a:ahXY\") {\n\t\t\t\tconst h = readXYAdjustHandle(child);\n\t\t\t\tif (h) handles.push(h);\n\t\t\t} else if (child.name === \"a:ahPolar\") {\n\t\t\t\tconst h = readPolarAdjustHandle(child);\n\t\t\t\tif (h) handles.push(h);\n\t\t\t}\n\t\t\tif (handles.length > 0) result.adjustHandles = handles;\n\t\t}\n\t\tconst cxnLst = findChild(el, \"a:cxnLst\");\n\t\tif (cxnLst?.elements) {\n\t\t\tconst sites = [];\n\t\t\tfor (const child of cxnLst.elements) if (child.name === \"a:cxn\") {\n\t\t\t\tconst site = readConnectionSite(child);\n\t\t\t\tif (site) sites.push(site);\n\t\t\t}\n\t\t\tif (sites.length > 0) result.connectionSites = sites;\n\t\t}\n\t\tconst rect = findChild(el, \"a:rect\");\n\t\tif (rect) {\n\t\t\tconst textRectangle = readGeomRect(rect);\n\t\t\tif (textRectangle) result.textRectangle = textRectangle;\n\t\t}\n\t\tconst pathLst = findChild(el, \"a:pathLst\");\n\t\tif (pathLst?.elements) {\n\t\t\tconst paths = [];\n\t\t\tfor (const child of pathLst.elements) if (child.name === \"a:path\") {\n\t\t\t\tconst p = readPath(child);\n\t\t\t\tif (p.commands && p.commands.length > 0) paths.push(p);\n\t\t\t}\n\t\t\tif (paths.length > 0) result.pathList = paths;\n\t\t}\n\t\treturn result;\n\t}\n};\n//#endregion\n//#region src/drawingml/transform-descriptors.ts\n/**\n* Transform 2D descriptor for DrawingML shapes.\n*\n* @module\n*/\nconst transform2DDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\tconst parts = [];\n\t\tconst attrParts = [];\n\t\tif (opts.flipHorizontal !== void 0) attrParts.push(`flipH=\"${opts.flipHorizontal ? 1 : 0}\"`);\n\t\tif (opts.flipVertical !== void 0) attrParts.push(`flipV=\"${opts.flipVertical ? 1 : 0}\"`);\n\t\tif (opts.rotation !== void 0) attrParts.push(`rot=\"${opts.rotation}\"`);\n\t\tconst attrStr = attrParts.length ? \" \" + attrParts.join(\" \") : \"\";\n\t\tif (opts.x !== void 0 || opts.y !== void 0) {\n\t\t\tconst x = opts.x !== void 0 ? convertToEmu(opts.x) : 0;\n\t\t\tconst y = opts.y !== void 0 ? convertToEmu(opts.y) : 0;\n\t\t\tparts.push(`<a:off x=\"${x}\" y=\"${y}\"/>`);\n\t\t}\n\t\tif (opts.width !== void 0 || opts.height !== void 0) {\n\t\t\tconst cx = opts.width !== void 0 ? convertToEmu(opts.width) : 0;\n\t\t\tconst cy = opts.height !== void 0 ? convertToEmu(opts.height) : 0;\n\t\t\tparts.push(`<a:ext cx=\"${cx}\" cy=\"${cy}\"/>`);\n\t\t}\n\t\tif (parts.length === 0 && !attrStr) return void 0;\n\t\tif (parts.length === 0) return `<a:xfrm${attrStr}/>`;\n\t\treturn `<a:xfrm${attrStr}>${parts.join(\"\")}</a:xfrm>`;\n\t},\n\tparse(el, _ctx) {\n\t\tconst result = {};\n\t\tif (el.attributes) {\n\t\t\tif (el.attributes[\"flipH\"] !== void 0) result.flipHorizontal = el.attributes[\"flipH\"] === 1 || el.attributes[\"flipH\"] === \"1\";\n\t\t\tif (el.attributes[\"flipV\"] !== void 0) result.flipVertical = el.attributes[\"flipV\"] === 1 || el.attributes[\"flipV\"] === \"1\";\n\t\t\tif (el.attributes[\"rot\"] !== void 0) result.rotation = Number(el.attributes[\"rot\"]);\n\t\t}\n\t\tconst off = findChild(el, \"a:off\");\n\t\tif (off?.attributes) {\n\t\t\tresult.x = attrMeasure(off, \"x\") ?? 0;\n\t\t\tresult.y = attrMeasure(off, \"y\") ?? 0;\n\t\t}\n\t\tconst ext = findChild(el, \"a:ext\");\n\t\tif (ext?.attributes) {\n\t\t\tresult.width = attrMeasure(ext, \"cx\") ?? 0;\n\t\t\tresult.height = attrMeasure(ext, \"cy\") ?? 0;\n\t\t}\n\t\treturn result;\n\t}\n};\nconst groupTransform2DDesc = {\n\tkind: \"custom\",\n\tstringify(opts, ctx) {\n\t\tconst base = transform2DDesc.stringify(opts, ctx) ?? \"<a:xfrm/>\";\n\t\tconst chOff = `<a:chOff x=\"${opts.childOffsetX ?? 0}\" y=\"${opts.childOffsetY ?? 0}\"/>`;\n\t\tconst chExt = `<a:chExt cx=\"${opts.childExtentWidth ?? 0}\" cy=\"${opts.childExtentHeight ?? 0}\"/>`;\n\t\tif (base.endsWith(\"/>\")) return `<a:xfrm>${chOff}${chExt}</a:xfrm>`;\n\t\treturn base.replace(/<\\/a:xfrm>$/, `${chOff}${chExt}</a:xfrm>`);\n\t},\n\tparse(el, ctx) {\n\t\tconst result = transform2DDesc.parse(el, ctx);\n\t\tconst chOff = findChild(el, \"a:chOff\");\n\t\tif (chOff?.attributes) {\n\t\t\tresult.childOffsetX = attrMeasure(chOff, \"x\") ?? 0;\n\t\t\tresult.childOffsetY = attrMeasure(chOff, \"y\") ?? 0;\n\t\t}\n\t\tconst chExt = findChild(el, \"a:chExt\");\n\t\tif (chExt?.attributes) {\n\t\t\tresult.childExtentWidth = attrMeasure(chExt, \"cx\") ?? 0;\n\t\t\tresult.childExtentHeight = attrMeasure(chExt, \"cy\") ?? 0;\n\t\t}\n\t\treturn result;\n\t}\n};\n//#endregion\n//#region src/drawingml/three-d/three-d-descriptors.ts\n/**\n* 3D descriptor for DrawingML shapes.\n*\n* @module\n*/\nfunction stringifySphereCoords(coords) {\n\treturn `<a:rot lat=\"${coords.lat}\" lon=\"${coords.lon}\" rev=\"${coords.rev}\"/>`;\n}\nfunction readSphereCoords(el) {\n\tconst lat = el.attributes?.[\"lat\"];\n\tconst lon = el.attributes?.[\"lon\"];\n\tconst rev = el.attributes?.[\"rev\"];\n\tif (lat === void 0 || lon === void 0 || rev === void 0) return void 0;\n\treturn {\n\t\tlat: Number(lat),\n\t\tlon: Number(lon),\n\t\trev: Number(rev)\n\t};\n}\nconst bevelDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\tconst attrParts = [];\n\t\tif (opts.w !== void 0) attrParts.push(`w=\"${opts.w}\"`);\n\t\tif (opts.h !== void 0) attrParts.push(`h=\"${opts.h}\"`);\n\t\tif (opts.prst !== void 0) attrParts.push(`prst=\"${escapeXml(opts.prst)}\"`);\n\t\treturn `<a:bevel${attrParts.length ? \" \" + attrParts.join(\" \") : \"\"}/>`;\n\t},\n\tparse(el, _ctx) {\n\t\tconst result = {};\n\t\tif (el.attributes?.[\"w\"] !== void 0) result.w = Number(el.attributes[\"w\"]);\n\t\tif (el.attributes?.[\"h\"] !== void 0) result.h = Number(el.attributes[\"h\"]);\n\t\tif (el.attributes?.[\"prst\"] !== void 0) result.prst = String(el.attributes[\"prst\"]);\n\t\treturn result;\n\t}\n};\nconst shape3DDesc = {\n\tkind: \"custom\",\n\tstringify(opts, ctx) {\n\t\tconst parts = [];\n\t\tif (opts.bevelT) {\n\t\t\tconst bevelXml = stringify$1(bevelDesc, opts.bevelT, ctx);\n\t\t\tif (bevelXml) parts.push(bevelXml.replace(\"<a:bevel\", \"<a:bevelT\"));\n\t\t}\n\t\tif (opts.bevelB) {\n\t\t\tconst bevelXml = stringify$1(bevelDesc, opts.bevelB, ctx);\n\t\t\tif (bevelXml) parts.push(bevelXml.replace(\"<a:bevel\", \"<a:bevelB\"));\n\t\t}\n\t\tif (opts.extrusionColor) {\n\t\t\tconst colorXml = stringify$1(solidFillDesc, opts.extrusionColor, ctx);\n\t\t\tif (colorXml) parts.push(`<a:extrusionClr>${colorXml}</a:extrusionClr>`);\n\t\t}\n\t\tif (opts.contourColor) {\n\t\t\tconst colorXml = stringify$1(solidFillDesc, opts.contourColor, ctx);\n\t\t\tif (colorXml) parts.push(`<a:contourClr>${colorXml}</a:contourClr>`);\n\t\t}\n\t\tconst attrParts = [];\n\t\tif (opts.z !== void 0) attrParts.push(`z=\"${opts.z}\"`);\n\t\tif (opts.extrusionH !== void 0) attrParts.push(`extrusionH=\"${opts.extrusionH}\"`);\n\t\tif (opts.contourW !== void 0) attrParts.push(`contourW=\"${opts.contourW}\"`);\n\t\tif (opts.prstMaterial !== void 0) attrParts.push(`prstMaterial=\"${escapeXml(xsdMaterialType.to(opts.prstMaterial))}\"`);\n\t\tconst attrStr = attrParts.length ? \" \" + attrParts.join(\" \") : \"\";\n\t\tconst content = parts.join(\"\");\n\t\tif (!attrStr && !content) return void 0;\n\t\tif (!content) return `<a:sp3d${attrStr}/>`;\n\t\treturn `<a:sp3d${attrStr}>${content}</a:sp3d>`;\n\t},\n\tparse(el, ctx) {\n\t\tconst result = {};\n\t\tif (el.attributes?.[\"z\"] !== void 0) result.z = Number(el.attributes[\"z\"]);\n\t\tif (el.attributes?.[\"extrusionH\"] !== void 0) result.extrusionH = Number(el.attributes[\"extrusionH\"]);\n\t\tif (el.attributes?.[\"contourW\"] !== void 0) result.contourW = Number(el.attributes[\"contourW\"]);\n\t\tif (el.attributes?.[\"prstMaterial\"] !== void 0) result.prstMaterial = xsdMaterialType.from(String(el.attributes[\"prstMaterial\"]));\n\t\tconst bevelT = findChild(el, \"a:bevelT\");\n\t\tif (bevelT) result.bevelT = parse$1(bevelDesc, bevelT, ctx);\n\t\tconst bevelB = findChild(el, \"a:bevelB\");\n\t\tif (bevelB) result.bevelB = parse$1(bevelDesc, bevelB, ctx);\n\t\tconst extrusionClr = findChild(el, \"a:extrusionClr\");\n\t\tif (extrusionClr) {\n\t\t\tconst solidFill = findChild(extrusionClr, \"a:solidFill\");\n\t\t\tif (solidFill) result.extrusionColor = parse$1(solidFillDesc, solidFill, ctx);\n\t\t}\n\t\tconst contourClr = findChild(el, \"a:contourClr\");\n\t\tif (contourClr) {\n\t\t\tconst solidFill = findChild(contourClr, \"a:solidFill\");\n\t\t\tif (solidFill) result.contourColor = parse$1(solidFillDesc, solidFill, ctx);\n\t\t}\n\t\treturn result;\n\t}\n};\nconst cameraDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\tconst attrParts = [];\n\t\tattrParts.push(`prst=\"${escapeXml(opts.preset)}\"`);\n\t\tif (opts.fov !== void 0) attrParts.push(`fov=\"${opts.fov}\"`);\n\t\tif (opts.zoom !== void 0) attrParts.push(`zoom=\"${escapeXml(opts.zoom)}\"`);\n\t\tconst attrStr = \" \" + attrParts.join(\" \");\n\t\tconst parts = [];\n\t\tif (opts.rotation) parts.push(stringifySphereCoords(opts.rotation));\n\t\tconst content = parts.join(\"\");\n\t\tif (!content) return `<a:camera${attrStr}/>`;\n\t\treturn `<a:camera${attrStr}>${content}</a:camera>`;\n\t},\n\tparse(el, _ctx) {\n\t\tconst result = {};\n\t\tif (el.attributes?.[\"prst\"] !== void 0) result.preset = String(el.attributes[\"prst\"]);\n\t\tif (el.attributes?.[\"fov\"] !== void 0) result.fov = Number(el.attributes[\"fov\"]);\n\t\tif (el.attributes?.[\"zoom\"] !== void 0) result.zoom = String(el.attributes[\"zoom\"]);\n\t\tconst rot = findChild(el, \"a:rot\");\n\t\tif (rot) result.rotation = readSphereCoords(rot);\n\t\treturn result;\n\t}\n};\nconst lightRigDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\tconst attrParts = [];\n\t\tattrParts.push(`rig=\"${escapeXml(opts.rig)}\"`);\n\t\tattrParts.push(`dir=\"${escapeXml(opts.direction)}\"`);\n\t\tconst attrStr = \" \" + attrParts.join(\" \");\n\t\tconst parts = [];\n\t\tif (opts.rotation) parts.push(stringifySphereCoords(opts.rotation));\n\t\tconst content = parts.join(\"\");\n\t\tif (!content) return `<a:lightRig${attrStr}/>`;\n\t\treturn `<a:lightRig${attrStr}>${content}</a:lightRig>`;\n\t},\n\tparse(el, _ctx) {\n\t\tconst result = {};\n\t\tif (el.attributes?.[\"rig\"] !== void 0) result.rig = String(el.attributes[\"rig\"]);\n\t\tif (el.attributes?.[\"dir\"] !== void 0) result.direction = String(el.attributes[\"dir\"]);\n\t\tconst rot = findChild(el, \"a:rot\");\n\t\tif (rot) result.rotation = readSphereCoords(rot);\n\t\treturn result;\n\t}\n};\nconst scene3DDesc = {\n\tkind: \"custom\",\n\tstringify(opts, ctx) {\n\t\tconst parts = [];\n\t\tconst cameraXml = stringify$1(cameraDesc, opts.camera, ctx);\n\t\tif (cameraXml) parts.push(cameraXml);\n\t\tconst lightRigXml = stringify$1(lightRigDesc, opts.lightRig, ctx);\n\t\tif (lightRigXml) parts.push(lightRigXml);\n\t\tif (opts.backdrop) parts.push(stringifyBackdrop(opts.backdrop));\n\t\tconst content = parts.join(\"\");\n\t\tif (!content) return void 0;\n\t\treturn `<a:scene3d>${content}</a:scene3d>`;\n\t},\n\tparse(el, ctx) {\n\t\tconst result = {};\n\t\tconst camera = findChild(el, \"a:camera\");\n\t\tif (camera) result.camera = parse$1(cameraDesc, camera, ctx);\n\t\tconst lightRig = findChild(el, \"a:lightRig\");\n\t\tif (lightRig) result.lightRig = parse$1(lightRigDesc, lightRig, ctx);\n\t\tconst backdrop = findChild(el, \"a:backdrop\");\n\t\tif (backdrop) result.backdrop = readBackdrop(backdrop);\n\t\treturn result;\n\t}\n};\nfunction stringifyPoint3D(name, point) {\n\treturn `<${name} x=\"${point.x}\" y=\"${point.y}\" z=\"${point.z}\"/>`;\n}\nfunction stringifyVector3D(name, vector) {\n\treturn `<${name} dx=\"${vector.dx}\" dy=\"${vector.dy}\" dz=\"${vector.dz}\"/>`;\n}\nfunction stringifyBackdrop(opts) {\n\treturn `<a:backdrop>${stringifyPoint3D(\"a:anchor\", opts.anchor) + stringifyVector3D(\"a:norm\", opts.normal) + stringifyVector3D(\"a:up\", opts.up)}</a:backdrop>`;\n}\nfunction readPoint3D(el) {\n\tconst x = el.attributes?.[\"x\"];\n\tconst y = el.attributes?.[\"y\"];\n\tconst z = el.attributes?.[\"z\"];\n\tif (x === void 0 || y === void 0 || z === void 0) return void 0;\n\treturn {\n\t\tx: Number(x),\n\t\ty: Number(y),\n\t\tz: Number(z)\n\t};\n}\nfunction readVector3D(el) {\n\tconst dx = el.attributes?.[\"dx\"];\n\tconst dy = el.attributes?.[\"dy\"];\n\tconst dz = el.attributes?.[\"dz\"];\n\tif (dx === void 0 || dy === void 0 || dz === void 0) return void 0;\n\treturn {\n\t\tdx: Number(dx),\n\t\tdy: Number(dy),\n\t\tdz: Number(dz)\n\t};\n}\nfunction readBackdrop(el) {\n\tconst anchor = findChild(el, \"a:anchor\");\n\tconst norm = findChild(el, \"a:norm\");\n\tconst up = findChild(el, \"a:up\");\n\tif (!anchor || !norm || !up) return void 0;\n\tconst anchorPt = readPoint3D(anchor);\n\tconst normVec = readVector3D(norm);\n\tconst upVec = readVector3D(up);\n\tif (!anchorPt || !normVec || !upVec) return void 0;\n\treturn {\n\t\tanchor: anchorPt,\n\t\tnormal: normVec,\n\t\tup: upVec\n\t};\n}\n//#endregion\n//#region src/drawingml/diagram/diagram-descriptors.ts\n/**\n* Diagram descriptors for declarative XML read/write.\n*\n* @module\n*/\nconst diagramRelationshipIdsDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\treturn `<dgm:relIds r:dm=\"${escapeXml(opts.dm)}\" r:lo=\"${escapeXml(opts.lo)}\" r:qs=\"${escapeXml(opts.qs)}\" r:cs=\"${escapeXml(opts.cs)}\"/>`;\n\t},\n\tparse(el, _ctx) {\n\t\tconst result = {};\n\t\tif (el.attributes) {\n\t\t\tif (el.attributes[\"r:dm\"] !== void 0) result.dm = String(el.attributes[\"r:dm\"]);\n\t\t\tif (el.attributes[\"r:lo\"] !== void 0) result.lo = String(el.attributes[\"r:lo\"]);\n\t\t\tif (el.attributes[\"r:qs\"] !== void 0) result.qs = String(el.attributes[\"r:qs\"]);\n\t\t\tif (el.attributes[\"r:cs\"] !== void 0) result.cs = String(el.attributes[\"r:cs\"]);\n\t\t}\n\t\treturn result;\n\t}\n};\nconst diagramStyleDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\treturn `<dgm:style><a:lnRef idx=\"${opts.lineReference?.idx ?? 1}\"><a:schemeClr val=\"accent1\"/></a:lnRef><a:fillRef idx=\"${opts.fillReference?.idx ?? 1}\"><a:schemeClr val=\"accent1\"/></a:fillRef><a:effectRef idx=\"${opts.effectReference?.idx ?? 0}\"><a:schemeClr val=\"accent1\"/></a:effectRef><a:fontRef idx=\"${escapeXml(opts.fontReference?.idx ?? \"minor\")}\"><a:schemeClr val=\"tx1\"/></a:fontRef></dgm:style>`;\n\t},\n\tparse(el, _ctx) {\n\t\tconst result = {};\n\t\tconst lnRef = findChild(el, \"a:lnRef\");\n\t\tif (lnRef?.attributes?.[\"idx\"] !== void 0) result.lineReference = { idx: Number(lnRef.attributes[\"idx\"]) };\n\t\tconst fillRef = findChild(el, \"a:fillRef\");\n\t\tif (fillRef?.attributes?.[\"idx\"] !== void 0) result.fillReference = { idx: Number(fillRef.attributes[\"idx\"]) };\n\t\tconst effectRef = findChild(el, \"a:effectRef\");\n\t\tif (effectRef?.attributes?.[\"idx\"] !== void 0) result.effectReference = { idx: Number(effectRef.attributes[\"idx\"]) };\n\t\tconst fontRef = findChild(el, \"a:fontRef\");\n\t\tif (fontRef?.attributes?.[\"idx\"] !== void 0) result.fontReference = { idx: String(fontRef.attributes[\"idx\"]) };\n\t\treturn result;\n\t}\n};\nconst presentationLayoutVariablesDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\tconst parts = [];\n\t\tif (opts.orgChart?.val !== void 0) parts.push(`<dgm:orgChart val=\"${opts.orgChart.val ? 1 : 0}\"/>`);\n\t\tif (opts.maxChildren?.val !== void 0) parts.push(`<dgm:chMax val=\"${opts.maxChildren.val}\"/>`);\n\t\tif (opts.preferredChildren?.val !== void 0) parts.push(`<dgm:chPref val=\"${opts.preferredChildren.val}\"/>`);\n\t\tif (opts.animateOneByOne?.val !== void 0) parts.push(`<dgm:animOne val=\"${escapeXml(opts.animateOneByOne.val)}\"/>`);\n\t\tif (opts.animationLevel?.val !== void 0) parts.push(`<dgm:animLvl val=\"${escapeXml(opts.animationLevel.val)}\"/>`);\n\t\tif (opts.hierBranch?.val !== void 0) parts.push(`<dgm:hierBranch val=\"${escapeXml(opts.hierBranch.val)}\"/>`);\n\t\tif (parts.length === 0) return `<dgm:presLayoutVars/>`;\n\t\treturn `<dgm:presLayoutVars>${parts.join(\"\")}</dgm:presLayoutVars>`;\n\t},\n\tparse(el, _ctx) {\n\t\tconst result = {};\n\t\tconst orgChart = findChild(el, \"dgm:orgChart\");\n\t\tif (orgChart?.attributes?.[\"val\"] !== void 0) result.orgChart = { val: orgChart.attributes[\"val\"] === 1 || orgChart.attributes[\"val\"] === \"1\" };\n\t\tconst chMax = findChild(el, \"dgm:chMax\");\n\t\tif (chMax?.attributes?.[\"val\"] !== void 0) result.maxChildren = { val: Number(chMax.attributes[\"val\"]) };\n\t\tconst chPref = findChild(el, \"dgm:chPref\");\n\t\tif (chPref?.attributes?.[\"val\"] !== void 0) result.preferredChildren = { val: Number(chPref.attributes[\"val\"]) };\n\t\tconst animOne = findChild(el, \"dgm:animOne\");\n\t\tif (animOne?.attributes?.[\"val\"] !== void 0) result.animateOneByOne = { val: String(animOne.attributes[\"val\"]) };\n\t\tconst animLvl = findChild(el, \"dgm:animLvl\");\n\t\tif (animLvl?.attributes?.[\"val\"] !== void 0) result.animationLevel = { val: String(animLvl.attributes[\"val\"]) };\n\t\tconst hierBranch = findChild(el, \"dgm:hierBranch\");\n\t\tif (hierBranch?.attributes?.[\"val\"] !== void 0) result.hierBranch = { val: String(hierBranch.attributes[\"val\"]) };\n\t\treturn result;\n\t}\n};\nconst diagramExtensionListDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\tif (!opts.extensions?.length) return void 0;\n\t\treturn `<dgm:extLst>${opts.extensions.map((ext) => `<a:ext uri=\"${escapeXml(ext.uri)}\"/>`).join(\"\")}</dgm:extLst>`;\n\t},\n\tparse(el, _ctx) {\n\t\tconst result = {};\n\t\tif (el.elements) {\n\t\t\tconst extensions = el.elements.filter((c) => c.name === \"a:ext\").map((c) => ({ uri: String(c.attributes?.[\"uri\"] ?? \"\") }));\n\t\t\tif (extensions.length) result.extensions = extensions;\n\t\t}\n\t\treturn result;\n\t}\n};\n//#endregion\nexport { createLayoutDefinitionHeader as $, PenAlignment as $t, scRgbColorDesc as A, createPresetColor as An, stringifyAdjustmentValues as At, FontCollectionIndex as B, createSoftEdgeEffect as Bt, sourceRectangleDesc as C, SystemColor as Cn, createTransform2D as Ct, parseColorChoice as D, createScRgbColor as Dn, createExtensionList as Dt, hslColorDesc as E, createSchemeColor as En, createBlip as Et, createDiagramExtensionList as F, createBottomBevel as Ft, createFillColorList as G, createOuterShadowEffect as Gt, StyleMatrixIndex as H, PresetShadowVal as Ht, createDiagramShape3D as I, createScene3D as It, createTextEffectColorList as J, BlendMode as Jt, createLineColorList as K, createInnerShadowEffect as Kt, createDiagramTextProperties as L, createEffectDag as Lt, solidFillDesc as M, createColorTransforms as Mn, createShape3D as Mt, stringifyColorChoice as N, BevelPresetType as Nt, presetColorDesc as O, createRgbColor as On, createCustomGeometry as Ot, systemColorDesc as P, createBevel as Pt, createColorsDefinitionHeaderList as Q, LineJoin as Qt, createDiagramRelationshipIds as R, calculateEffectExtent as Rt, blipFillDesc as S, createSolidFill as Sn, createGroupTransform2D as St, tileDesc as T, SchemeColor as Tn, createBlipFill as Tt, createDiagramStyle as U, createPresetShadowEffect as Ut, HueDirection as V, createReflectionEffect as Vt, createEffectColorList as W, RectAlignment as Wt, createTextLineColorList as X, CompoundLine as Xt, createTextFillColorList as Y, createFillOverlayEffect as Yt, createColorsDefinitionHeader as Z, LineCap as Zt, outlineDesc as _, TileAlignment as _n, createPictureLocking as _t, bevelDesc as a, createLineEnd as an, HierBranchStyle as at, patternFillDesc as b, createBlipEffects as bn, createTableStyleList as bt, groupTransform2DDesc as c, createNoFill as cn, createAnimateOneByOne as ct, presetGeometryDesc as d, PresetPattern as dn, createMaxChildren as dt, PresetDash as en, createLayoutDefinitionHeaderList as et, graphicFrameLockingDesc as f, createPatternFill as fn, createOrgChart as ft, effectListDesc as g, createGradientStop as gn, createGroupLocking as gt, shapeLockingDesc as h, createGradientFill as hn, createGraphicFrameLocking as ht, presentationLayoutVariablesDesc as i, LineEndWidth as in, AnimationLevelValue as it, schemeColorDesc as j, createHslColor as jn, PresetMaterialType as jt, rgbColorDesc as k, PresetColor as kn, stringifyPresetGeometry as kt, transform2DDesc as l, buildFill as ln, createAnimationLevel as lt, pictureLockingDesc as m, TileFlipMode as mn, createPresentationLayoutVariables as mt, diagramRelationshipIdsDesc as n, LineEndLength as nn, createStyleDefinitionHeaderList as nt, scene3DDesc as o, createCustomDash as on, createAdjust as ot, groupLockingDesc as p, PathShadeType as pn, createPreferredChildren as pt, createStyleLabel as q, createGlowEffect as qt, diagramStyleDesc as r, LineEndType as rn, AnimateOneByOneValue as rt, shape3DDesc as s, createGroupFill as sn, createAdjustList as st, diagramExtensionListDesc as t, createOutline as tn, createStyleDefinitionHeader as tt, customGeometryDesc as u, extractBlipFillMedia as un, createHierBranch as ut, fillDesc as v, createTileInfo as vn, createShapeLocking as vt, stretchDesc as w, createSystemColor as wn, stringifyStretch as wt, blipDesc as x, createColorElement as xn, parseTableStyleList as xt, gradientFillDesc as y, createSourceRectangle as yn, createTableStyle as yt, ColorMethod as z, createEffectList as zt };\n\n//# sourceMappingURL=drawingml-sj1J3lb0.mjs.map","import { findChild } from \"@office-open/xml\";\n//#region src/theme/default-colors.ts\n/** Office 2016+ default theme colors (hex without #). */\nconst DEFAULT_COLORS = {\n\tdark1: \"000000\",\n\tlight1: \"FFFFFF\",\n\tdark2: \"44546A\",\n\tlight2: \"E7E6E6\",\n\taccent1: \"4472C4\",\n\taccent2: \"ED7D31\",\n\taccent3: \"A5A5A5\",\n\taccent4: \"FFC000\",\n\taccent5: \"5B9BD5\",\n\taccent6: \"70AD47\",\n\thyperlink: \"0563C1\",\n\tfollowedHyperlink: \"954F72\"\n};\n//#endregion\n//#region src/theme/build-theme-xml.ts\n/**\n* Build theme XML string — pure function, no side effects.\n*\n* fmtScheme uses the complete Office version (gradFill, outerShdw, bgFillStyleLst)\n* matching what Excel generates.\n*\n* @module\n*/\nfunction buildThemeXml(options) {\n\tconst name = options?.name ?? \"Office Theme\";\n\tconst c = {\n\t\t...DEFAULT_COLORS,\n\t\t...options?.colors\n\t};\n\tconst f = options?.fonts;\n\tconst majorFont = f?.majorFont ?? \"Calibri Light\";\n\tconst minorFont = f?.minorFont ?? \"Calibri\";\n\tconst majorFontAsian = f?.majorFontAsian ?? \"\";\n\tconst minorFontAsian = f?.minorFontAsian ?? \"\";\n\treturn `<a:theme xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" name=\"${name}\"><a:themeElements><a:clrScheme name=\"${name}\"><a:dk1>${options?.colors?.dark1 !== void 0 ? `<a:srgbClr val=\"${c.dark1}\"/>` : `<a:sysClr val=\"windowText\" lastClr=\"000000\"/>`}</a:dk1><a:lt1>${options?.colors?.light1 !== void 0 ? `<a:srgbClr val=\"${c.light1}\"/>` : `<a:sysClr val=\"window\" lastClr=\"FFFFFF\"/>`}</a:lt1><a:dk2><a:srgbClr val=\"${c.dark2}\"/></a:dk2><a:lt2><a:srgbClr val=\"${c.light2}\"/></a:lt2><a:accent1><a:srgbClr val=\"${c.accent1}\"/></a:accent1><a:accent2><a:srgbClr val=\"${c.accent2}\"/></a:accent2><a:accent3><a:srgbClr val=\"${c.accent3}\"/></a:accent3><a:accent4><a:srgbClr val=\"${c.accent4}\"/></a:accent4><a:accent5><a:srgbClr val=\"${c.accent5}\"/></a:accent5><a:accent6><a:srgbClr val=\"${c.accent6}\"/></a:accent6><a:hlink><a:srgbClr val=\"${c.hyperlink}\"/></a:hlink><a:folHlink><a:srgbClr val=\"${c.followedHyperlink}\"/></a:folHlink></a:clrScheme><a:fontScheme name=\"${name}\"><a:majorFont><a:latin typeface=\"${majorFont}\" panose=\"020F0302020204030204\"/><a:ea typeface=\"${majorFontAsian}\"/><a:cs typeface=\"\"/></a:majorFont><a:minorFont><a:latin typeface=\"${minorFont}\" panose=\"020F0502020204030204\"/><a:ea typeface=\"${minorFontAsian}\"/><a:cs typeface=\"\"/></a:minorFont></a:fontScheme><a:fmtScheme name=\"Office\"><a:fillStyleLst><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:gradFill rotWithShape=\"1\"><a:gsLst><a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:lumMod val=\"110000\"/><a:satMod val=\"105000\"/><a:tint val=\"67000\"/></a:schemeClr></a:gs><a:gs pos=\"50000\"><a:schemeClr val=\"phClr\"><a:lumMod val=\"105000\"/><a:satMod val=\"103000\"/><a:tint val=\"73000\"/></a:schemeClr></a:gs><a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:lumMod val=\"105000\"/><a:satMod val=\"109000\"/><a:tint val=\"81000\"/></a:schemeClr></a:gs></a:gsLst><a:lin ang=\"5400000\" scaled=\"0\"/></a:gradFill><a:gradFill rotWithShape=\"1\"><a:gsLst><a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:lumMod val=\"102000\"/><a:satMod val=\"103000\"/><a:tint val=\"94000\"/></a:schemeClr></a:gs><a:gs pos=\"50000\"><a:schemeClr val=\"phClr\"><a:lumMod val=\"100000\"/><a:satMod val=\"110000\"/><a:shade val=\"100000\"/></a:schemeClr></a:gs><a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:lumMod val=\"99000\"/><a:satMod val=\"120000\"/><a:shade val=\"78000\"/></a:schemeClr></a:gs></a:gsLst><a:lin ang=\"5400000\" scaled=\"0\"/></a:gradFill></a:fillStyleLst><a:lnStyleLst><a:ln w=\"6350\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:prstDash val=\"solid\"/><a:miter lim=\"800000\"/></a:ln><a:ln w=\"12700\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:prstDash val=\"solid\"/><a:miter lim=\"800000\"/></a:ln><a:ln w=\"19050\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:prstDash val=\"solid\"/><a:miter lim=\"800000\"/></a:ln></a:lnStyleLst><a:effectStyleLst><a:effectStyle><a:effectLst/></a:effectStyle><a:effectStyle><a:effectLst/></a:effectStyle><a:effectStyle><a:effectLst><a:outerShdw blurRad=\"57150\" dist=\"19050\" dir=\"5400000\" algn=\"ctr\" rotWithShape=\"0\"><a:srgbClr val=\"000000\"><a:alpha val=\"63000\"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle></a:effectStyleLst><a:bgFillStyleLst><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:solidFill><a:schemeClr val=\"phClr\"><a:tint val=\"95000\"/><a:satMod val=\"170000\"/></a:schemeClr></a:solidFill><a:gradFill rotWithShape=\"1\"><a:gsLst><a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:lumMod val=\"102000\"/><a:satMod val=\"150000\"/><a:tint val=\"93000\"/><a:shade val=\"98000\"/></a:schemeClr></a:gs><a:gs pos=\"50000\"><a:schemeClr val=\"phClr\"><a:lumMod val=\"103000\"/><a:satMod val=\"130000\"/><a:tint val=\"98000\"/><a:shade val=\"90000\"/></a:schemeClr></a:gs><a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:satMod val=\"120000\"/><a:shade val=\"63000\"/></a:schemeClr></a:gs></a:gsLst><a:lin ang=\"5400000\" scaled=\"0\"/></a:gradFill></a:bgFillStyleLst></a:fmtScheme></a:themeElements><a:objectDefaults/><a:extraClrSchemeLst/></a:theme>`;\n}\n//#endregion\n//#region src/theme/default-theme.ts\n/**\n* Theme XML generation — pure function with caching.\n*\n* Replaces the DefaultTheme class with a functionally equivalent\n* pure function. Caches by serialized options key.\n*\n* @module\n*/\nconst DEFAULT_XML = buildThemeXml();\nconst customCache = /* @__PURE__ */ new Map();\nfunction themeKey(o) {\n\tconst c = o.colors;\n\tconst f = o.fonts;\n\treturn `n${o.name ?? \"\"}c${c?.dark1 ?? \"\"}${c?.light1 ?? \"\"}${c?.dark2 ?? \"\"}${c?.light2 ?? \"\"}${c?.accent1 ?? \"\"}${c?.accent2 ?? \"\"}${c?.accent3 ?? \"\"}${c?.accent4 ?? \"\"}${c?.accent5 ?? \"\"}${c?.accent6 ?? \"\"}${c?.hyperlink ?? \"\"}${c?.followedHyperlink ?? \"\"}f${f?.majorFont ?? \"\"}${f?.minorFont ?? \"\"}${f?.majorFontAsian ?? \"\"}${f?.minorFontAsian ?? \"\"}`;\n}\n/**\n* Generate theme XML string from options.\n* Returns cached default when no options provided.\n*/\nfunction createThemeXml(options) {\n\tif (!options) return DEFAULT_XML;\n\tconst key = themeKey(options);\n\tconst cached = customCache.get(key);\n\tif (cached) return cached;\n\tconst built = buildThemeXml(options);\n\tcustomCache.set(key, built);\n\treturn built;\n}\n//#endregion\n//#region src/theme/theme-descriptors.ts\n/**\n* Theme descriptors — bidirectional mapping between ThemeOptions and theme XML.\n*\n* @module\n*/\n/** Color scheme XML tag → ThemeOptions.colors key mapping. */\nconst COLOR_TAGS = [\n\t{\n\t\ttag: \"a:dk1\",\n\t\tkey: \"dark1\"\n\t},\n\t{\n\t\ttag: \"a:lt1\",\n\t\tkey: \"light1\"\n\t},\n\t{\n\t\ttag: \"a:dk2\",\n\t\tkey: \"dark2\"\n\t},\n\t{\n\t\ttag: \"a:lt2\",\n\t\tkey: \"light2\"\n\t},\n\t{\n\t\ttag: \"a:accent1\",\n\t\tkey: \"accent1\"\n\t},\n\t{\n\t\ttag: \"a:accent2\",\n\t\tkey: \"accent2\"\n\t},\n\t{\n\t\ttag: \"a:accent3\",\n\t\tkey: \"accent3\"\n\t},\n\t{\n\t\ttag: \"a:accent4\",\n\t\tkey: \"accent4\"\n\t},\n\t{\n\t\ttag: \"a:accent5\",\n\t\tkey: \"accent5\"\n\t},\n\t{\n\t\ttag: \"a:accent6\",\n\t\tkey: \"accent6\"\n\t},\n\t{\n\t\ttag: \"a:hlink\",\n\t\tkey: \"hyperlink\"\n\t},\n\t{\n\t\ttag: \"a:folHlink\",\n\t\tkey: \"followedHyperlink\"\n\t}\n];\n/** Read the hex color value from a color element (a:dk1/a:lt1 may be sysClr or srgbClr). */\nfunction readColorValue(el) {\n\tif (!el) return void 0;\n\tconst srgb = findChild(el, \"a:srgbClr\");\n\tif (srgb) return String(srgb.attributes?.[\"val\"] ?? \"\");\n\tconst sysClr = findChild(el, \"a:sysClr\");\n\tif (sysClr) return String(sysClr.attributes?.[\"lastClr\"] ?? \"\");\n}\nconst themeDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\treturn buildThemeXml(opts);\n\t},\n\tparse(el, _ctx) {\n\t\tconst result = {};\n\t\tconst name = el.attributes?.[\"name\"];\n\t\tif (name) result.name = String(name);\n\t\tconst themeElements = findChild(el, \"a:themeElements\");\n\t\tconst clrScheme = themeElements ? findChild(themeElements, \"a:clrScheme\") : void 0;\n\t\tif (clrScheme) {\n\t\t\tconst colors = {};\n\t\t\tfor (const { tag, key } of COLOR_TAGS) {\n\t\t\t\tconst value = readColorValue(findChild(clrScheme, tag));\n\t\t\t\tif (value) colors[key] = value;\n\t\t\t}\n\t\t\tif (Object.keys(colors).length > 0) result.colors = colors;\n\t\t}\n\t\tconst fontScheme = themeElements ? findChild(themeElements, \"a:fontScheme\") : void 0;\n\t\tif (fontScheme) {\n\t\t\tconst majorFontEl = findChild(fontScheme, \"a:majorFont\");\n\t\t\tconst minorFontEl = findChild(fontScheme, \"a:minorFont\");\n\t\t\tconst majorLatin = majorFontEl ? findChild(majorFontEl, \"a:latin\") : void 0;\n\t\t\tconst minorLatin = minorFontEl ? findChild(minorFontEl, \"a:latin\") : void 0;\n\t\t\tconst majorTypeface = majorLatin?.attributes?.[\"typeface\"];\n\t\t\tconst minorTypeface = minorLatin?.attributes?.[\"typeface\"];\n\t\t\tif (majorTypeface || minorTypeface) {\n\t\t\t\tconst fonts = {};\n\t\t\t\tif (majorTypeface) fonts.majorFont = String(majorTypeface);\n\t\t\t\tif (minorTypeface) fonts.minorFont = String(minorTypeface);\n\t\t\t\tresult.fonts = fonts;\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n};\n//#endregion\nexport { DEFAULT_COLORS as i, createThemeXml as n, buildThemeXml as r, themeDesc as t };\n\n//# sourceMappingURL=theme-CiNzdl-9.mjs.map","import { _ as DOCX_NS, a as appendOverride, b as parseCorePropsElement, c as createRunRenderer, d as createSplitInject, f as createTextElementContents, g as toJson, h as patchSpaceAttribute, i as appendContentType, l as createTokenReplacer, m as nextNumericId, n as appendRelationship, o as createReplacer, p as getFirstLevelElements, r as getNextRelationshipIndex, s as createTraverser, t as applyCorePropertiesOverride, u as TokenNotFoundError, v as PPTX_NS, y as buildCorePropertiesXmlString } from \"./patch-BmRfghOo.mjs\";\nimport { A as xsdStrikeStyle, B as isBase64DataURL, C as xsdLineEndSize, D as xsdPenAlignment, E as xsdPattern, F as xsdVerticalMergeRev, H as decodeBase64, I as hashedId, L as uniqueId, M as xsdTextAnchor, N as xsdTextCaps, O as xsdPresetShadow, P as xsdUnderlineStyle, R as uniqueNumericIdCreator, S as xsdLineCap, T as xsdPathFillMode, U as encodeBase64, V as toUint8Array, _ as parseUniversalMeasure, a as convertInchesToTwip, b as xsdCompoundLine, c as convertPointsToEmu, d as convertToPt, f as convertToTwip, g as convertUniversalMeasureToTwip, h as convertUniversalMeasureToPt, i as convertInchesToEmu, j as xsdTextAlign, k as xsdRectAlignment, l as convertToEmu, m as convertUniversalMeasureToInch, n as convertEmuToPixels, o as convertMillimetersToTwip, p as convertUniversalMeasureToEmu, r as convertEmuToPoints, s as convertPixelsToEmu, t as convertEmuToInches, u as convertToInch, v as invertMap, w as xsdMaterialType, x as xsdEffectContainer, y as xsdBlendMode, z as uniqueUuid } from \"./converters-C_Y2QX1w.mjs\";\nimport { $ as convertOutput, A as replaceChartPlaceholders, B as compileMapping, C as findAndReplaceImagePlaceholders, D as getVideoRefs, E as getReferencedMedia, F as replaceSmartArtPlaceholders, G as levelForMediaName, H as ZIP_STORED_LEVEL, I as replaceVideoPlaceholders, J as zipAndConvert, K as strFromU8, L as derivePasswordHash, M as replaceImagePlaceholders, N as replaceMediaPlaceholders, O as hasPlaceholders, P as replaceNumberingPlaceholders, Q as OoxmlMimeType, R as hashPasswordAgile, S as collectPlaceholderKeys, T as getMediaRefs, U as createPacker, V as ZIP_DEFLATE_LEVEL, W as createZipStream, X as hasNativeInflate, Y as zipSyncAndConvert, Z as nativeUnzip, _ as twipsMeasureValue, a as eighthPointMeasureValue, b as unsignedDecimalNumber, c as hpsMeasureValue, d as percentageValue, f as pointMeasureValue, g as signedTwipsMeasureValue, h as signedHpsMeasureValue, i as decimalNumber, j as replaceHyperlinkPlaceholders, k as replaceAllPlaceholders, l as longHexNumber, m as shortHexNumber, n as ThemeFont, o as hexBinary, p as positiveUniversalMeasureValue, q as unzipSync, r as dateTimeValue, s as hexColorValue, t as ThemeColor, u as measurementOrPercentValue, v as uCharHexNumber, w as formatId, x as addSmartArtRelationships, y as universalMeasureValue, z as randomBytes } from \"./util-Tq9PSjK0.mjs\";\nimport { a as stringifyDataModel, c as getColorXml, d as COLOR_CATEGORIES, f as LAYOUT_CATEGORIES, i as stringifyTransPoint, l as getLayoutXml, n as SmartArtCollection, o as stringifyConnection, p as STYLE_CATEGORIES, r as stringifyPoint, s as DEFAULT_DRAWING_XML, t as createDataModel, u as getStyleXml } from \"./smartart-B7ukZ-Tw.mjs\";\nimport { a as TimeUnit, c as ChartCollection, i as ErrorValueType, n as ErrorBarDirection, o as TrendlineType, r as ErrorBarType, s as chartSpaceDesc, t as DataLabelPosition } from \"./chart-DIGJna_6.mjs\";\nimport { $ as createLayoutDefinitionHeader, $t as PenAlignment, A as scRgbColorDesc, An as createPresetColor, At as stringifyAdjustmentValues, B as FontCollectionIndex, Bt as createSoftEdgeEffect, C as sourceRectangleDesc, Cn as SystemColor, Ct as createTransform2D, D as parseColorChoice, Dn as createScRgbColor, Dt as createExtensionList, E as hslColorDesc, En as createSchemeColor, Et as createBlip, F as createDiagramExtensionList, Ft as createBottomBevel, G as createFillColorList, Gt as createOuterShadowEffect, H as StyleMatrixIndex, Ht as PresetShadowVal, I as createDiagramShape3D, It as createScene3D, J as createTextEffectColorList, Jt as BlendMode, K as createLineColorList, Kt as createInnerShadowEffect, L as createDiagramTextProperties, Lt as createEffectDag, M as solidFillDesc, Mn as createColorTransforms, Mt as createShape3D, N as stringifyColorChoice, Nt as BevelPresetType, O as presetColorDesc, On as createRgbColor, Ot as createCustomGeometry, P as systemColorDesc, Pt as createBevel, Q as createColorsDefinitionHeaderList, Qt as LineJoin, R as createDiagramRelationshipIds, Rt as calculateEffectExtent, S as blipFillDesc, Sn as createSolidFill, St as createGroupTransform2D, T as tileDesc, Tn as SchemeColor, Tt as createBlipFill, U as createDiagramStyle, Ut as createPresetShadowEffect, V as HueDirection, Vt as createReflectionEffect, W as createEffectColorList, Wt as RectAlignment, X as createTextLineColorList, Xt as CompoundLine, Y as createTextFillColorList, Yt as createFillOverlayEffect, Z as createColorsDefinitionHeader, Zt as LineCap, _ as outlineDesc, _n as TileAlignment, _t as createPictureLocking, a as bevelDesc, an as createLineEnd, at as HierBranchStyle, b as patternFillDesc, bn as createBlipEffects, bt as createTableStyleList, c as groupTransform2DDesc, cn as createNoFill, ct as createAnimateOneByOne, d as presetGeometryDesc, dn as PresetPattern, dt as createMaxChildren, en as PresetDash, et as createLayoutDefinitionHeaderList, f as graphicFrameLockingDesc, fn as createPatternFill, ft as createOrgChart, g as effectListDesc, gn as createGradientStop, gt as createGroupLocking, h as shapeLockingDesc, hn as createGradientFill, ht as createGraphicFrameLocking, i as presentationLayoutVariablesDesc, in as LineEndWidth, it as AnimationLevelValue, j as schemeColorDesc, jn as createHslColor, jt as PresetMaterialType, k as rgbColorDesc, kn as PresetColor, kt as stringifyPresetGeometry, l as transform2DDesc, ln as buildFill, lt as createAnimationLevel, m as pictureLockingDesc, mn as TileFlipMode, mt as createPresentationLayoutVariables, n as diagramRelationshipIdsDesc, nn as LineEndLength, nt as createStyleDefinitionHeaderList, o as scene3DDesc, on as createCustomDash, ot as createAdjust, p as groupLockingDesc, pn as PathShadeType, pt as createPreferredChildren, q as createStyleLabel, qt as createGlowEffect, r as diagramStyleDesc, rn as LineEndType, rt as AnimateOneByOneValue, s as shape3DDesc, sn as createGroupFill, st as createAdjustList, t as diagramExtensionListDesc, tn as createOutline, tt as createStyleDefinitionHeader, u as customGeometryDesc, un as extractBlipFillMedia, ut as createHierBranch, v as fillDesc, vn as createTileInfo, vt as createShapeLocking, w as stretchDesc, wn as createSystemColor, wt as stringifyStretch, x as blipDesc, xn as createColorElement, xt as parseTableStyleList, y as gradientFillDesc, yn as createSourceRectangle, yt as createTableStyle, z as ColorMethod, zt as createEffectList } from \"./drawingml-sj1J3lb0.mjs\";\nimport { a as roundTripFields, i as diffTagSets, n as findFieldSpec, o as parse, r as checkOrder, s as stringify, t as FIELD_SPECS } from \"./descriptor-BjNkn5jo.mjs\";\nimport { i as DEFAULT_COLORS, n as createThemeXml, r as buildThemeXml, t as themeDesc } from \"./theme-CiNzdl-9.mjs\";\nimport { attr, escapeXml, js2xml, textOf, xml2js } from \"@office-open/xml\";\nimport { strFromU8 as strFromU8$1, strToU8, unzipSync as unzipSync$1, zipSync } from \"fflate\";\n//#region src/opc/relationships.ts\nconst TargetModeType = { EXTERNAL: \"External\" };\n/**\n* Manages OOXML relationship entries and serializes to XML.\n*\n* Standalone class — no XmlComponent inheritance.\n* Pure string concatenation for zero-allocation XML output.\n*/\nvar Relationships = class {\n\tentries = [];\n\taddRelationship(id, type, target, targetMode) {\n\t\tthis.entries.push({\n\t\t\tid: `rId${id}`,\n\t\t\ttype,\n\t\t\ttarget,\n\t\t\ttargetMode\n\t\t});\n\t}\n\tget relationshipCount() {\n\t\treturn this.entries.length;\n\t}\n\t/** Directly builds XML string — zero intermediate tree allocation. */\n\tserialize() {\n\t\tconst p = [\"<Relationships xmlns=\\\"http://schemas.openxmlformats.org/package/2006/relationships\\\">\"];\n\t\tfor (const e of this.entries) {\n\t\t\tconst tm = e.targetMode ? ` TargetMode=\"${escapeXml(e.targetMode)}\"` : \"\";\n\t\t\tp.push(`<Relationship Id=\"${escapeXml(e.id)}\" Type=\"${escapeXml(e.type)}\" Target=\"${escapeXml(e.target)}\"${tm}/>`);\n\t\t}\n\t\tp.push(\"</Relationships>\");\n\t\treturn p.join(\"\");\n\t}\n};\n/**\n* Serialize a Relationships part only when it carries at least one\n* relationship. Optional parts (fontTable, headers, footers, charts, drawings,\n* worksheets, …) emit no .rels part when empty — Office strips empty rels\n* shells when re-saving, so skipping them keeps generated packages free of\n* redundant empty parts and matches Office's normalized output.\n*\n* Always-on parts (the package `_rels/.rels` and the main\n* document/presentation/workbook parts) carry relationships by construction\n* and must NOT use this gate.\n*/\nfunction optionalRelsPart(rel, xmlDeclaration, path) {\n\treturn rel.relationshipCount > 0 ? {\n\t\tdata: xmlDeclaration + rel.serialize(),\n\t\tpath\n\t} : void 0;\n}\n//#endregion\n//#region src/opc/media.ts\n/**\n* FNV-1a hash is a pure function of the bytes, so memoize it across\n* {@link Media} instances — repeated `generate()` calls that reuse the same\n* buffer objects (the common case) skip recomputation entirely.\n*/\nconst hashKeyCache = /* @__PURE__ */ new WeakMap();\n/**\n* Shared media collection for docx/pptx/xlsx. Generic over the package's entry\n* type so each package keeps its own metadata while sharing the registration +\n* dedup logic.\n*/\nvar Media = class {\n\tmap = /* @__PURE__ */ new Map();\n\t/** FNV-1a content key (\"len:hash\") -> canonical file name, for cross-object dedup. */\n\tbyContent = /* @__PURE__ */ new Map();\n\t/** Memoized result per input buffer — the repeated-reference hot path. */\n\tverified = /* @__PURE__ */ new WeakMap();\n\tcounter = 0;\n\t/**\n\t* Register media, reusing the existing entry when the bytes already exist.\n\t* Returns the canonical entry (shared across all identical references) —\n\t* callers read `entry.fileName` for placeholders/relationship targets or use\n\t* the whole entry (e.g. drawing XML). The `build` callback constructs the\n\t* package-specific entry from the allocated file name.\n\t*\n\t* Pass `fileName` to pin the name (round-trip scenarios preserving a source\n\t* file name); omit it to allocate the next sequential `imageN.ext`.\n\t*/\n\taddMedia(data, type, build, fileName) {\n\t\tconst verifiedName = this.verified.get(data);\n\t\tif (verifiedName !== void 0) {\n\t\t\tconst existing = this.map.get(verifiedName);\n\t\t\tif (existing.type === type) return existing;\n\t\t}\n\t\tconst key = `${type}:${this.contentKey(data)}`;\n\t\tconst existingName = this.byContent.get(key);\n\t\tif (existingName !== void 0) {\n\t\t\tconst existing = this.map.get(existingName);\n\t\t\tif (existing.type === type && this.byteEqual(existing.data, data)) {\n\t\t\t\tthis.verified.set(data, existingName);\n\t\t\t\treturn existing;\n\t\t\t}\n\t\t}\n\t\tconst resolvedName = fileName ?? this.nextName(type);\n\t\tconst finalName = this.map.has(resolvedName) ? this.nextName(type) : resolvedName;\n\t\tconst entry = build(finalName);\n\t\tthis.map.set(finalName, entry);\n\t\tthis.byContent.set(key, finalName);\n\t\tthis.verified.set(data, finalName);\n\t\treturn entry;\n\t}\n\t/** Next sequential `imageN.${type}` that isn't already in use. */\n\tnextName(type) {\n\t\tlet name = `image${++this.counter}.${type}`;\n\t\twhile (this.map.has(name)) name = `image${++this.counter}.${type}`;\n\t\treturn name;\n\t}\n\t/** \"length:hash\" content key for `data` (FNV-1a over the raw bytes), memoized. */\n\tcontentKey(data) {\n\t\tconst cached = hashKeyCache.get(data);\n\t\tif (cached !== void 0) return cached;\n\t\tlet hash = 2166136261;\n\t\tfor (const byte of data) {\n\t\t\thash ^= byte;\n\t\t\thash = Math.imul(hash, 16777619);\n\t\t}\n\t\tconst key = `${data.length}:${(hash >>> 0).toString(16)}`;\n\t\thashKeyCache.set(data, key);\n\t\treturn key;\n\t}\n\t/** Structural equality with early exit on the first mismatch. */\n\tbyteEqual(a, b) {\n\t\tif (a.length !== b.length) return false;\n\t\tfor (let i = 0; i < a.length; i++) if (a[i] !== b[i]) return false;\n\t\treturn true;\n\t}\n\t/** All registered media entries. */\n\tget array() {\n\t\treturn [...this.map.values()];\n\t}\n};\n//#endregion\n//#region src/opc/content-types.ts\n/**\n* Creates a Default element mapping a file extension to a MIME content type.\n*/\nconst createDefault = (contentType, extension) => extension !== void 0 ? `<Default ContentType=\"${contentType}\" Extension=\"${extension}\"/>` : `<Default ContentType=\"${contentType}\"/>`;\n/**\n* Creates an Override element mapping a specific part path to a MIME content type.\n*/\nconst createOverride = (contentType, partName) => partName !== void 0 ? `<Override ContentType=\"${contentType}\" PartName=\"${partName}\"/>` : `<Override ContentType=\"${contentType}\"/>`;\n//#endregion\n//#region src/opc/app-properties.ts\n/**\n* Extended (App) Properties module — shared OPC part (docProps/app.xml).\n*\n* Format-agnostic: CT_Properties (ISO-IEC29500-2_2016 shared-documentPropertiesExtended.xsd)\n* is identical across docx/pptx/xlsx. Each package surfaces only the fields it populates\n* (Pages/Words for docx, Slides for pptx, etc.) — all fields are optional.\n*\n* @module\n*/\n/** xsd:boolean lexical form — spec canonical form is \"true\"/\"false\" (Word's convention). */\nconst xsdBoolean = (value) => value ? \"true\" : \"false\";\nconst appPropertiesDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\tconst p = [\"<Properties xmlns=\\\"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties\\\" xmlns:vt=\\\"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes\\\">\"];\n\t\tif (opts.template !== void 0) p.push(`<Template>${escapeXml(opts.template)}</Template>`);\n\t\tif (opts.manager !== void 0) p.push(`<Manager>${escapeXml(opts.manager)}</Manager>`);\n\t\tif (opts.company !== void 0) p.push(`<Company>${escapeXml(opts.company)}</Company>`);\n\t\tif (opts.pages !== void 0) p.push(`<Pages>${opts.pages}</Pages>`);\n\t\tif (opts.words !== void 0) p.push(`<Words>${opts.words}</Words>`);\n\t\tif (opts.characters !== void 0) p.push(`<Characters>${opts.characters}</Characters>`);\n\t\tif (opts.lines !== void 0) p.push(`<Lines>${opts.lines}</Lines>`);\n\t\tif (opts.paragraphs !== void 0) p.push(`<Paragraphs>${opts.paragraphs}</Paragraphs>`);\n\t\tif (opts.slides !== void 0) p.push(`<Slides>${opts.slides}</Slides>`);\n\t\tif (opts.notes !== void 0) p.push(`<Notes>${opts.notes}</Notes>`);\n\t\tif (opts.totalTime !== void 0) p.push(`<TotalTime>${opts.totalTime}</TotalTime>`);\n\t\tif (opts.hiddenSlides !== void 0) p.push(`<HiddenSlides>${opts.hiddenSlides}</HiddenSlides>`);\n\t\tif (opts.mmClips !== void 0) p.push(`<MMClips>${opts.mmClips}</MMClips>`);\n\t\tif (opts.scaleCrop !== void 0) p.push(`<ScaleCrop>${xsdBoolean(opts.scaleCrop)}</ScaleCrop>`);\n\t\tif (opts.linksUpToDate !== void 0) p.push(`<LinksUpToDate>${xsdBoolean(opts.linksUpToDate)}</LinksUpToDate>`);\n\t\tif (opts.charactersWithSpaces !== void 0) p.push(`<CharactersWithSpaces>${opts.charactersWithSpaces}</CharactersWithSpaces>`);\n\t\tif (opts.sharedDoc !== void 0) p.push(`<SharedDoc>${xsdBoolean(opts.sharedDoc)}</SharedDoc>`);\n\t\tif (opts.hyperlinkBase !== void 0) p.push(`<HyperlinkBase>${escapeXml(opts.hyperlinkBase)}</HyperlinkBase>`);\n\t\tif (opts.hyperlinksChanged !== void 0) p.push(`<HyperlinksChanged>${xsdBoolean(opts.hyperlinksChanged)}</HyperlinksChanged>`);\n\t\tif (opts.application !== void 0) p.push(`<Application>${escapeXml(opts.application)}</Application>`);\n\t\tif (opts.appVersion !== void 0) p.push(`<AppVersion>${escapeXml(opts.appVersion)}</AppVersion>`);\n\t\tif (opts.docSecurity !== void 0) p.push(`<DocSecurity>${opts.docSecurity}</DocSecurity>`);\n\t\tp.push(\"</Properties>\");\n\t\treturn p.join(\"\");\n\t},\n\tparse(el, _ctx) {\n\t\tconst result = {};\n\t\tfor (const child of el.elements ?? []) {\n\t\t\tif (typeof child.name !== \"string\") continue;\n\t\t\tconst text = child.elements?.[0]?.text;\n\t\t\tswitch (child.name) {\n\t\t\t\tcase \"Template\":\n\t\t\t\t\tif (typeof text === \"string\") result.template = text;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"Manager\":\n\t\t\t\t\tif (typeof text === \"string\") result.manager = text;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"Company\":\n\t\t\t\t\tif (typeof text === \"string\") result.company = text;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"Pages\":\n\t\t\t\t\tif (typeof text === \"string\") result.pages = Number(text);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"Words\":\n\t\t\t\t\tif (typeof text === \"string\") result.words = Number(text);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"Characters\":\n\t\t\t\t\tif (typeof text === \"string\") result.characters = Number(text);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"Lines\":\n\t\t\t\t\tif (typeof text === \"string\") result.lines = Number(text);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"Paragraphs\":\n\t\t\t\t\tif (typeof text === \"string\") result.paragraphs = Number(text);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"Slides\":\n\t\t\t\t\tif (typeof text === \"string\") result.slides = Number(text);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"Notes\":\n\t\t\t\t\tif (typeof text === \"string\") result.notes = Number(text);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"TotalTime\":\n\t\t\t\t\tif (typeof text === \"string\") result.totalTime = Number(text);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"HiddenSlides\":\n\t\t\t\t\tif (typeof text === \"string\") result.hiddenSlides = Number(text);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"MMClips\":\n\t\t\t\t\tif (typeof text === \"string\") result.mmClips = Number(text);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"ScaleCrop\":\n\t\t\t\t\tif (typeof text === \"string\") result.scaleCrop = text === \"1\" || text === \"true\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"LinksUpToDate\":\n\t\t\t\t\tif (typeof text === \"string\") result.linksUpToDate = text === \"1\" || text === \"true\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"CharactersWithSpaces\":\n\t\t\t\t\tif (typeof text === \"string\") result.charactersWithSpaces = Number(text);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"SharedDoc\":\n\t\t\t\t\tif (typeof text === \"string\") result.sharedDoc = text === \"1\" || text === \"true\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"HyperlinkBase\":\n\t\t\t\t\tif (typeof text === \"string\") result.hyperlinkBase = text;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"HyperlinksChanged\":\n\t\t\t\t\tif (typeof text === \"string\") result.hyperlinksChanged = text === \"1\" || text === \"true\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"Application\":\n\t\t\t\t\tif (typeof text === \"string\") result.application = text;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"AppVersion\":\n\t\t\t\t\tif (typeof text === \"string\") result.appVersion = text;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"DocSecurity\":\n\t\t\t\t\tif (typeof text === \"string\") result.docSecurity = Number(text);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n};\n//#endregion\n//#region src/opc/custom-properties.ts\n/**\n* Custom Properties module — shared OPC part (docProps/custom.xml).\n*\n* Format-agnostic: CT_CustomProperties (ISO-IEC29500-4_2016 shared-documentPropertiesCustom.xsd)\n* is identical across docx/pptx/xlsx.\n*\n* @module\n*/\nconst customPropertiesDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\tconst p = [\"<Properties xmlns=\\\"http://schemas.openxmlformats.org/officeDocument/2006/custom-properties\\\" xmlns:vt=\\\"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes\\\">\"];\n\t\tlet pid = 2;\n\t\tfor (const prop of opts.properties) {\n\t\t\tp.push(`<property fmtid=\"{D5CDD505-2E9C-101B-9397-08002B2CF9AE}\" pid=\"${pid}\" name=\"${escapeXml(prop.name)}\"><vt:lpwstr>${escapeXml(prop.value)}</vt:lpwstr></property>`);\n\t\t\tpid++;\n\t\t}\n\t\tp.push(\"</Properties>\");\n\t\treturn p.join(\"\");\n\t},\n\tparse(el, _ctx) {\n\t\tconst properties = [];\n\t\tfor (const child of el.elements ?? []) {\n\t\t\tif (child.name !== \"property\") continue;\n\t\t\tconst name = attr(child, \"name\");\n\t\t\tif (!name) continue;\n\t\t\tconst valueEl = child.elements?.find((e) => e.name?.startsWith(\"vt:\"));\n\t\t\tconst value = valueEl ? textOf(valueEl) ?? \"\" : \"\";\n\t\t\tproperties.push({\n\t\t\t\tname,\n\t\t\t\tvalue\n\t\t\t});\n\t\t}\n\t\treturn { properties };\n\t}\n};\n//#endregion\n//#region src/opc/parser.ts\nconst XML_PARSE_OPTIONS = {\n\tnativeTypeAttributes: true,\n\tcaptureSpacesBetweenElements: true\n};\n/**\n* Parsed OOXML archive backed by an unzipped ZIP map.\n*\n* Provides unstorage-style API (get/set/getRaw/setRaw/remove/has/keys)\n* for reading and modifying individual parts, then serializing back to a ZIP buffer.\n*/\nvar ParsedArchive = class {\n\tzip;\n\tmodified = /* @__PURE__ */ new Map();\n\twrapperCache = /* @__PURE__ */ new Map();\n\tconstructor(data) {\n\t\tlet unzipped;\n\t\ttry {\n\t\t\tunzipped = hasNativeInflate() ? nativeUnzip(data) : unzipSync$1(data);\n\t\t} catch {\n\t\t\tunzipped = unzipSync$1(data);\n\t\t}\n\t\tthis.zip = new Map(Object.entries(unzipped));\n\t}\n\t/** Read an XML part as an Element tree. */\n\tget(path) {\n\t\tconst modData = this.modified.get(path);\n\t\tif (modData) {\n\t\t\tconst wrapper = xml2js(strFromU8$1(modData), XML_PARSE_OPTIONS);\n\t\t\tthis.wrapperCache.set(path, wrapper);\n\t\t\treturn wrapper.elements?.find((e) => e.type === \"element\");\n\t\t}\n\t\tconst data = this.zip.get(path);\n\t\tif (data === void 0) return void 0;\n\t\tconst cached = this.wrapperCache.get(path);\n\t\tif (cached) return cached.elements?.find((e) => e.type === \"element\");\n\t\tconst wrapper = xml2js(strFromU8$1(data), XML_PARSE_OPTIONS);\n\t\tthis.wrapperCache.set(path, wrapper);\n\t\treturn wrapper.elements?.find((e) => e.type === \"element\");\n\t}\n\t/** Write an XML part (Element → XML string). */\n\tset(path, element) {\n\t\tconst wrapper = this.wrapperCache.get(path);\n\t\tconst xml = js2xml(wrapper ? {\n\t\t\t...wrapper,\n\t\t\telements: [{\n\t\t\t\t...element,\n\t\t\t\ttype: \"element\"\n\t\t\t}]\n\t\t} : { elements: [{\n\t\t\t...element,\n\t\t\ttype: \"element\"\n\t\t}] });\n\t\tthis.modified.set(path, strToU8(xml));\n\t}\n\t/** Read raw binary data (images, media, etc.). */\n\tgetRaw(path) {\n\t\treturn this.modified.get(path) ?? this.zip.get(path);\n\t}\n\t/** Write raw binary data. */\n\tsetRaw(path, data) {\n\t\tthis.modified.set(path, data);\n\t\tthis.wrapperCache.delete(path);\n\t}\n\t/** Remove a part. Returns true if it existed. */\n\tremove(path) {\n\t\tthis.wrapperCache.delete(path);\n\t\treturn this.modified.delete(path) || this.zip.delete(path);\n\t}\n\t/** Check if a part exists. */\n\thas(path) {\n\t\treturn this.modified.has(path) || this.zip.has(path);\n\t}\n\t/** List all paths matching an optional prefix. */\n\tkeys(prefix) {\n\t\tconst all = /* @__PURE__ */ new Set();\n\t\tfor (const key of this.zip.keys()) if (!prefix || key.startsWith(prefix)) all.add(key);\n\t\tfor (const key of this.modified.keys()) if (!prefix || key.startsWith(prefix)) all.add(key);\n\t\treturn [...all];\n\t}\n\t/** Serialize back to a ZIP buffer, merging original zip + modifications. */\n\tsave() {\n\t\tconst files = {};\n\t\tfor (const [path, data] of this.zip) if (!this.modified.has(path)) files[path] = isMediaPath(path) ? [data, { level: MEDIA_STORED_LEVEL }] : data;\n\t\tfor (const [path, data] of this.modified) files[path] = isMediaPath(path) ? [data, { level: MEDIA_STORED_LEVEL }] : data;\n\t\treturn zipSync(files);\n\t}\n};\n/** Media file extensions that should use STORE (no compression). */\nconst MEDIA_EXTENSIONS = new Set([\n\t\".png\",\n\t\".jpg\",\n\t\".jpeg\",\n\t\".gif\",\n\t\".wmf\",\n\t\".emf\",\n\t\".tif\",\n\t\".tiff\",\n\t\".avi\",\n\t\".mp4\",\n\t\".mp3\",\n\t\".wav\"\n]);\n/** Check if a file path has a media extension that should use STORE (no compression). */\nfunction isMediaPath(path) {\n\tconst dot = path.lastIndexOf(\".\");\n\tif (dot === -1) return false;\n\treturn MEDIA_EXTENSIONS.has(path.slice(dot).toLowerCase());\n}\n/** STORE level for already-compressed media formats. */\nconst MEDIA_STORED_LEVEL = 0;\n/** Parse an OOXML archive (.docx, .pptx, .xlsx) into a ParsedArchive. */\nfunction parseArchive(data) {\n\treturn new ParsedArchive(data);\n}\n//#endregion\n//#region src/opc/opc-consistency.ts\n/**\n* OPC (Open Packaging Convention) consistency validator.\n*\n* Pure function operating on an already-unzipped part map. Detects the three\n* classes of cross-part breakage that single-part XSD validation cannot see:\n*\n* - relationship integrity — dangling targets, duplicate rIds (O3/O7)\n* - content-type integrity — parts with no Override/Default, stale\n* Overrides pointing at absent parts (O5/O6)\n* - structural integrity — missing `always` parts, undeclared orphans\n* (O1/O2)\n*\n* O3/O5/O6/O7 are derived directly from the ZIP + `.rels` + `[Content_Types].xml`\n* and need no registry. O1/O2 consult {@link PackagePartRegistry}.\n*\n* Reference: ECMA-376 Part 2 (OPC).\n*\n* @module\n*/\nfunction rootElement(xml) {\n\ttry {\n\t\treturn xml2js(xml).elements?.find((e) => e.type === \"element\");\n\t} catch {\n\t\treturn;\n\t}\n}\nfunction parseContentTypes(entries) {\n\tconst defaults = /* @__PURE__ */ new Map();\n\tconst overrides = /* @__PURE__ */ new Map();\n\tconst xml = entries.get(\"[Content_Types].xml\");\n\tconst root = xml ? rootElement(xml) : void 0;\n\tif (!root) return {\n\t\tdefaults,\n\t\toverrides\n\t};\n\tfor (const child of root.elements ?? []) {\n\t\tif (child.type !== \"element\") continue;\n\t\tif (child.name === \"Default\") {\n\t\t\tconst ext = String(child.attributes?.Extension ?? \"\").toLowerCase();\n\t\t\tconst ct = String(child.attributes?.ContentType ?? \"\");\n\t\t\tif (ext && ct) defaults.set(ext, ct);\n\t\t} else if (child.name === \"Override\") {\n\t\t\tconst partName = normalizePartName(String(child.attributes?.PartName ?? \"\"));\n\t\t\tconst ct = String(child.attributes?.ContentType ?? \"\");\n\t\t\tif (partName && ct) overrides.set(partName, ct);\n\t\t}\n\t}\n\treturn {\n\t\tdefaults,\n\t\toverrides\n\t};\n}\nfunction parseAllRels(entries) {\n\tconst out = [];\n\tfor (const [relsPath, xml] of entries) {\n\t\tif (!relsPath.endsWith(\".rels\")) continue;\n\t\tconst root = rootElement(xml);\n\t\tif (!root) continue;\n\t\tconst list = [];\n\t\tfor (const child of root.elements ?? []) {\n\t\t\tif (child.type !== \"element\" || child.name !== \"Relationship\") continue;\n\t\t\tlist.push({\n\t\t\t\tid: String(child.attributes?.Id ?? \"\"),\n\t\t\t\ttype: String(child.attributes?.Type ?? \"\"),\n\t\t\t\ttarget: String(child.attributes?.Target ?? \"\"),\n\t\t\t\ttargetMode: child.attributes?.TargetMode ? String(child.attributes?.TargetMode) : void 0\n\t\t\t});\n\t\t}\n\t\tout.push({\n\t\t\trelsPath,\n\t\t\tentries: list\n\t\t});\n\t}\n\treturn out;\n}\n/** Strip the leading slash OPC uses on `PartName` to align with ZIP paths. */\nfunction normalizePartName(partName) {\n\treturn partName.startsWith(\"/\") ? partName.slice(1) : partName;\n}\n/**\n* Resolve a relationship `Target` (relative to its owning `.rels`) against the\n* ZIP root. Handles the `..` segments slides/masters use to reference siblings.\n*/\nfunction resolveRelTarget(relsPath, target) {\n\tconst slash = relsPath.lastIndexOf(\"/\");\n\tconst relsDir = slash === -1 ? \"\" : relsPath.slice(0, slash);\n\tconst base = relsDir === \"_rels\" ? \"\" : relsDir.endsWith(\"/_rels\") ? relsDir.slice(0, -6) : relsDir;\n\tconst segments = (base ? base.split(\"/\") : []).concat(target.split(\"/\"));\n\tconst resolved = [];\n\tfor (const seg of segments) {\n\t\tif (seg === \"\" || seg === \".\") continue;\n\t\tif (seg === \"..\") resolved.pop();\n\t\telse resolved.push(seg);\n\t}\n\treturn resolved.join(\"/\");\n}\n/** Compile a registry path template (with `${i}`) into an anchored matcher. */\nfunction pathMatcher(template) {\n\tconst pattern = template.replace(/\\$\\{i\\}/g, \"\\0\").replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\").replace(/\u0000/g, \"(\\\\d+)\");\n\treturn new RegExp(`^${pattern}$`);\n}\nfunction extensionOf(path) {\n\tconst dot = path.lastIndexOf(\".\");\n\treturn dot === -1 ? \"\" : path.slice(dot + 1).toLowerCase();\n}\n/**\n* Validate OPC consistency of an unzipped package.\n*\n* @param entries ZIP path → decoded XML/binary text. Binary parts (media,\n* fonts) are never parsed here — only their presence matters.\n* @param registry Declarative part expectations for the package format.\n* @returns Issues sorted by code then part. Empty array = consistent.\n*/\nfunction validateOpcConsistency(entries, registry) {\n\tconst issues = [];\n\tconst contentTypes = parseContentTypes(entries);\n\tconst relsFiles = parseAllRels(entries);\n\tfor (const def of registry.parts) {\n\t\tif (def.presence.kind !== \"always\" || def.path.includes(\"${i}\")) continue;\n\t\tif (!entries.has(def.path)) issues.push({\n\t\t\tcode: \"O2\",\n\t\t\tseverity: \"error\",\n\t\t\tpart: def.path,\n\t\t\tmessage: `required ${registry.format} part is absent from the package`\n\t\t});\n\t}\n\tconst matchers = registry.parts.map((def) => pathMatcher(def.path));\n\tfor (const path of entries.keys()) {\n\t\tif (path === \"[Content_Types].xml\") continue;\n\t\tif (path.endsWith(\".rels\")) continue;\n\t\tif (registry.orphanWhitelist.some((prefix) => path.startsWith(prefix))) continue;\n\t\tif (matchers.some((re) => re.test(path))) continue;\n\t\tissues.push({\n\t\t\tcode: \"O1\",\n\t\t\tseverity: \"warn\",\n\t\t\tpart: path,\n\t\t\tmessage: `part not declared in the ${registry.format} registry (possible orphan)`\n\t\t});\n\t}\n\tfor (const rf of relsFiles) for (const rel of rf.entries) {\n\t\tif (rel.targetMode === \"External\") continue;\n\t\tif (/^https?:\\/\\//i.test(rel.target)) continue;\n\t\tconst resolved = resolveRelTarget(rf.relsPath, rel.target);\n\t\tif (!resolved || entries.has(resolved)) continue;\n\t\tissues.push({\n\t\t\tcode: \"O3\",\n\t\t\tseverity: \"error\",\n\t\t\tpart: rf.relsPath,\n\t\t\tmessage: `relationship ${rel.id || \"(no Id)\"} (${rel.type}) Target \"${rel.target}\" resolves to absent part \"${resolved}\"`\n\t\t});\n\t}\n\tfor (const path of entries.keys()) {\n\t\tif (path === \"[Content_Types].xml\" || path.endsWith(\".rels\")) continue;\n\t\tif (contentTypes.overrides.has(path)) continue;\n\t\tconst ext = extensionOf(path);\n\t\tif (ext && contentTypes.defaults.has(ext)) continue;\n\t\tissues.push({\n\t\t\tcode: \"O5\",\n\t\t\tseverity: \"error\",\n\t\t\tpart: path,\n\t\t\tmessage: `part has no [Content_Types] Override and no Default covers extension \"${ext || \"(none)\"}\"`\n\t\t});\n\t}\n\tfor (const partName of contentTypes.overrides.keys()) {\n\t\tif (entries.has(partName)) continue;\n\t\tissues.push({\n\t\t\tcode: \"O6\",\n\t\t\tseverity: \"error\",\n\t\t\tpart: `/${partName}`,\n\t\t\tmessage: `[Content_Types] Override references absent part \"${partName}\"`\n\t\t});\n\t}\n\tfor (const rf of relsFiles) {\n\t\tconst counts = /* @__PURE__ */ new Map();\n\t\tfor (const rel of rf.entries) {\n\t\t\tif (!rel.id) continue;\n\t\t\tcounts.set(rel.id, (counts.get(rel.id) ?? 0) + 1);\n\t\t}\n\t\tfor (const [id, count] of counts) {\n\t\t\tif (count <= 1) continue;\n\t\t\tissues.push({\n\t\t\t\tcode: \"O7\",\n\t\t\t\tseverity: \"warn\",\n\t\t\t\tpart: rf.relsPath,\n\t\t\t\tmessage: `duplicate relationship Id \"${id}\" appears ${count} times`\n\t\t\t});\n\t\t}\n\t}\n\treturn issues.sort((a, b) => a.code === b.code ? a.part.localeCompare(b.part) : a.code.localeCompare(b.code));\n}\nfunction summarizeOpcIssues(issues) {\n\tlet errors = 0;\n\tlet warnings = 0;\n\tfor (const i of issues) if (i.severity === \"error\") errors++;\n\telse warnings++;\n\treturn {\n\t\terrors,\n\t\twarnings\n\t};\n}\n//#endregion\n//#region src/opc/part-registry.ts\nconst DOCX_PARTS = {\n\tformat: \"docx\",\n\torphanWhitelist: [\n\t\t\"word/media/\",\n\t\t\"word/fonts/\",\n\t\t\"word/embeddings/\",\n\t\t\"word/afchunks/\",\n\t\t\"customXml/\",\n\t\t\"_rels/\",\n\t\t\"word/_rels/\",\n\t\t\"docProps/\",\n\t\t\"[Content_Types].xml\"\n\t],\n\tparts: [\n\t\t{\n\t\t\tpath: \"[Content_Types].xml\",\n\t\t\tpresence: { kind: \"always\" }\n\t\t},\n\t\t{\n\t\t\tpath: \"_rels/.rels\",\n\t\t\tpresence: { kind: \"always\" }\n\t\t},\n\t\t{\n\t\t\tpath: \"word/document.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml\",\n\t\t\tpresence: { kind: \"always\" }\n\t\t},\n\t\t{\n\t\t\tpath: \"word/styles.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"conditional\",\n\t\t\t\tflag: \"freshCompile\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"word/numbering.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"conditional\",\n\t\t\t\tflag: \"freshCompile\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"word/footnotes.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"conditional\",\n\t\t\t\tflag: \"freshCompile\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"word/endnotes.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"conditional\",\n\t\t\t\tflag: \"freshCompile\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"word/settings.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"conditional\",\n\t\t\t\tflag: \"freshCompile\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"word/fontTable.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"conditional\",\n\t\t\t\tflag: \"freshCompile\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"docProps/core.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-package.core-properties+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"conditional\",\n\t\t\t\tflag: \"freshCompile\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"docProps/app.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.extended-properties+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"conditional\",\n\t\t\t\tflag: \"freshCompile\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"docProps/custom.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.custom-properties+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"conditional\",\n\t\t\t\tflag: \"freshCompile\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"word/comments.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"conditional\",\n\t\t\t\tflag: \"hasComments\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"word/header${i}.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.wordprocessingml.header+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"repeated\",\n\t\t\t\tcountFrom: \"headerCount\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"word/footer${i}.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"repeated\",\n\t\t\t\tcountFrom: \"footerCount\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"word/charts/chart${i}.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"repeated\",\n\t\t\t\tcountFrom: \"chartCount\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"word/diagrams/data${i}.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"repeated\",\n\t\t\t\tcountFrom: \"smartArtCount\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"word/diagrams/layout${i}.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"repeated\",\n\t\t\t\tcountFrom: \"smartArtCount\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"word/diagrams/quickStyle${i}.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"repeated\",\n\t\t\t\tcountFrom: \"smartArtCount\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"word/diagrams/colors${i}.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"repeated\",\n\t\t\t\tcountFrom: \"smartArtCount\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"word/diagrams/drawing${i}.xml\",\n\t\t\tcontentType: \"application/vnd.ms-office.drawingml.diagramDrawing+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"repeated\",\n\t\t\t\tcountFrom: \"smartArtCount\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"word/bibliography.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.wordprocessingml.bibliography+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"conditional\",\n\t\t\t\tflag: \"hasBibliography\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"word/glossary/document.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.wordprocessingml.glossary+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"conditional\",\n\t\t\t\tflag: \"hasGlossary\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"word/webSettings.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"conditional\",\n\t\t\t\tflag: \"hasWebSettings\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"word/theme/theme1.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.theme+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"conditional\",\n\t\t\t\tflag: \"freshCompile\"\n\t\t\t}\n\t\t}\n\t]\n};\nconst PPTX_PARTS = {\n\tformat: \"pptx\",\n\torphanWhitelist: [\n\t\t\"ppt/media/\",\n\t\t\"ppt/embeddings/\",\n\t\t\"_rels/\",\n\t\t\"ppt/_rels/\",\n\t\t\"ppt/slideMasters/_rels/\",\n\t\t\"ppt/slideLayouts/_rels/\",\n\t\t\"ppt/slides/_rels/\",\n\t\t\"ppt/notesMasters/_rels/\",\n\t\t\"ppt/notesSlides/_rels/\",\n\t\t\"ppt/charts/_rels/\",\n\t\t\"ppt/diagrams/_rels/\",\n\t\t\"docProps/\",\n\t\t\"[Content_Types].xml\"\n\t],\n\tparts: [\n\t\t{\n\t\t\tpath: \"[Content_Types].xml\",\n\t\t\tpresence: { kind: \"always\" }\n\t\t},\n\t\t{\n\t\t\tpath: \"_rels/.rels\",\n\t\t\tpresence: { kind: \"always\" }\n\t\t},\n\t\t{\n\t\t\tpath: \"ppt/presentation.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml\",\n\t\t\tpresence: { kind: \"always\" }\n\t\t},\n\t\t{\n\t\t\tpath: \"docProps/core.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-package.core-properties+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"conditional\",\n\t\t\t\tflag: \"freshCompile\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"docProps/app.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.extended-properties+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"conditional\",\n\t\t\t\tflag: \"freshCompile\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"ppt/theme/theme${i}.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.theme+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"repeated\",\n\t\t\t\tcountFrom: \"masters + notes/handout masters\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"ppt/presProps.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.presentationml.presProps+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"conditional\",\n\t\t\t\tflag: \"freshCompile\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"ppt/viewProps.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.presentationml.viewProps+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"conditional\",\n\t\t\t\tflag: \"freshCompile\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"ppt/tableStyles.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.presentationml.tableStyles+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"conditional\",\n\t\t\t\tflag: \"freshCompile\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"ppt/slideMasters/slideMaster${i}.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.presentationml.slideMaster+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"repeated\",\n\t\t\t\tcountFrom: \"masters.length\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"ppt/slideLayouts/slideLayout${i}.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.presentationml.slideLayout+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"repeated\",\n\t\t\t\tcountFrom: \"layouts.length\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"ppt/slides/slide${i}.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.presentationml.slide+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"repeated\",\n\t\t\t\tcountFrom: \"slides.length\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"ppt/notesMasters/notesMaster1.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.presentationml.notesMaster+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"conditional\",\n\t\t\t\tflag: \"any slide has notes\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"ppt/handoutMasters/handoutMaster1.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.presentationml.handoutMaster+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"conditional\",\n\t\t\t\tflag: \"includeHandoutMaster\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"ppt/notesSlides/notesSlide${i}.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.presentationml.notesSlide+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"repeated\",\n\t\t\t\tcountFrom: \"slides with notes\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"ppt/commentAuthors.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.presentationml.commentAuthors+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"conditional\",\n\t\t\t\tflag: \"any slide has comments\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"ppt/comments/comment${i}.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.presentationml.comments+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"repeated\",\n\t\t\t\tcountFrom: \"slides with comments\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"ppt/charts/chart${i}.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"repeated\",\n\t\t\t\tcountFrom: \"charts\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"ppt/diagrams/data${i}.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"repeated\",\n\t\t\t\tcountFrom: \"smartArts\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"ppt/diagrams/layout${i}.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"repeated\",\n\t\t\t\tcountFrom: \"smartArts\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"ppt/diagrams/quickStyle${i}.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"repeated\",\n\t\t\t\tcountFrom: \"smartArts\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"ppt/diagrams/colors${i}.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"repeated\",\n\t\t\t\tcountFrom: \"smartArts\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"ppt/diagrams/drawing${i}.xml\",\n\t\t\tcontentType: \"application/vnd.ms-office.drawingml.diagramDrawing+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"repeated\",\n\t\t\t\tcountFrom: \"smartArts\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"ppt/slideSyncPr/slideSyncPr${i}.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.presentationml.slideSyncProperties+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"repeated\",\n\t\t\t\tcountFrom: \"slides with slideSync\"\n\t\t\t}\n\t\t}\n\t]\n};\nconst XLSX_PARTS = {\n\tformat: \"xlsx\",\n\torphanWhitelist: [\n\t\t\"xl/media/\",\n\t\t\"xl/embeddings/\",\n\t\t\"_rels/\",\n\t\t\"xl/_rels/\",\n\t\t\"xl/worksheets/_rels/\",\n\t\t\"xl/chartsheets/_rels/\",\n\t\t\"xl/drawings/_rels/\",\n\t\t\"xl/pivotTables/_rels/\",\n\t\t\"xl/pivotCache/_rels/\",\n\t\t\"xl/externalLinks/_rels/\",\n\t\t\"docProps/\",\n\t\t\"[Content_Types].xml\"\n\t],\n\tparts: [\n\t\t{\n\t\t\tpath: \"[Content_Types].xml\",\n\t\t\tpresence: { kind: \"always\" }\n\t\t},\n\t\t{\n\t\t\tpath: \"_rels/.rels\",\n\t\t\tpresence: { kind: \"always\" }\n\t\t},\n\t\t{\n\t\t\tpath: \"xl/workbook.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\",\n\t\t\tpresence: { kind: \"always\" }\n\t\t},\n\t\t{\n\t\t\tpath: \"docProps/core.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-package.core-properties+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"conditional\",\n\t\t\t\tflag: \"freshCompile\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"docProps/app.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.extended-properties+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"conditional\",\n\t\t\t\tflag: \"freshCompile\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"xl/styles.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"conditional\",\n\t\t\t\tflag: \"freshCompile\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"xl/theme/theme1.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.theme+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"conditional\",\n\t\t\t\tflag: \"freshCompile\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"xl/sharedStrings.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"conditional\",\n\t\t\t\tflag: \"sharedStrings.count > 0\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"xl/worksheets/sheet${i}.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"repeated\",\n\t\t\t\tcountFrom: \"worksheets.length\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"xl/chartsheets/sheet${i}.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"repeated\",\n\t\t\t\tcountFrom: \"chartsheets.length\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"xl/drawings/drawing${i}.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.drawing+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"conditional\",\n\t\t\t\tflag: \"worksheet has drawing\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"xl/comments${i}.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"conditional\",\n\t\t\t\tflag: \"worksheet.comments.length > 0\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"xl/drawings/vmlDrawing${i}.vml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"conditional\",\n\t\t\t\tflag: \"worksheet.comments (legacy VML)\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"xl/charts/chart${i}.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"repeated\",\n\t\t\t\tcountFrom: \"charts\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"xl/pivotTables/pivotTable${i}.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"repeated\",\n\t\t\t\tcountFrom: \"pivotTables\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"xl/pivotCache/pivotCacheDefinition${i}.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"repeated\",\n\t\t\t\tcountFrom: \"pivotCaches\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"xl/pivotCache/pivotCacheRecords${i}.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"repeated\",\n\t\t\t\tcountFrom: \"pivotCaches\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"xl/tables/table${i}.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"repeated\",\n\t\t\t\tcountFrom: \"tables\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"xl/externalLinks/externalLink${i}.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"repeated\",\n\t\t\t\tcountFrom: \"externalLinks.length\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"xl/calcChain.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"conditional\",\n\t\t\t\tflag: \"any formula cell\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"xl/revisionHeaders.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"conditional\",\n\t\t\t\tflag: \"revisionLog\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"xl/revisions/revision${i}.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"repeated\",\n\t\t\t\tcountFrom: \"revisionLog.logs.length\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: \"xl/users.xml\",\n\t\t\tcontentType: \"application/vnd.openxmlformats-officedocument.spreadsheetml.users+xml\",\n\t\t\tpresence: {\n\t\t\t\tkind: \"conditional\",\n\t\t\t\tflag: \"revisionLog.users\"\n\t\t\t}\n\t\t}\n\t]\n};\nconst PART_REGISTRIES = {\n\tdocx: DOCX_PARTS,\n\tpptx: PPTX_PARTS,\n\txlsx: XLSX_PARTS\n};\n//#endregion\n//#region src/opc/content-type-overrides.ts\n/** Ensure a part path carries the leading slash an Override PartName requires. */\nfunction withLeadingSlash(partPath) {\n\treturn partPath.startsWith(\"/\") ? partPath : `/${partPath}`;\n}\n/**\n* Derive [Content_Types].xml Override entries for every registry part present\n* under `facts`. The `facts` keys mirror the registry's `flag` / `countFrom`\n* tokens: a boolean for `conditional` parts, a count for `repeated` parts.\n* Order follows `registry.parts`; OPC does not mandate Override order.\n*/\nfunction buildContentTypeOverrides(registry, facts) {\n\tconst overrides = [];\n\tfor (const part of registry.parts) {\n\t\tif (!part.contentType) continue;\n\t\tconst presence = part.presence;\n\t\tif (presence.kind === \"always\") {\n\t\t\tif (!part.path.includes(\"${i}\")) overrides.push({\n\t\t\t\tpartName: withLeadingSlash(part.path),\n\t\t\t\tcontentType: part.contentType\n\t\t\t});\n\t\t} else if (presence.kind === \"conditional\") {\n\t\t\tif (facts.get(presence.flag)) overrides.push({\n\t\t\t\tpartName: withLeadingSlash(part.path),\n\t\t\t\tcontentType: part.contentType\n\t\t\t});\n\t\t} else {\n\t\t\tconst count = Number(facts.get(presence.countFrom) ?? 0);\n\t\t\tfor (let i = 1; i <= count; i++) overrides.push({\n\t\t\t\tpartName: withLeadingSlash(part.path.replace(\"${i}\", String(i))),\n\t\t\t\tcontentType: part.contentType\n\t\t\t});\n\t\t}\n\t}\n\treturn overrides;\n}\n//#endregion\nexport { AnimateOneByOneValue, AnimationLevelValue, BevelPresetType, BlendMode, COLOR_CATEGORIES, ChartCollection, ColorMethod, CompoundLine, DEFAULT_COLORS, DEFAULT_DRAWING_XML, DOCX_NS, DOCX_PARTS, DataLabelPosition, ErrorBarDirection, ErrorBarType, ErrorValueType, FIELD_SPECS, FontCollectionIndex, HierBranchStyle, HueDirection, LAYOUT_CATEGORIES, LineCap, LineEndLength, LineEndType, LineEndWidth, LineJoin, Media, OoxmlMimeType, PART_REGISTRIES, PPTX_NS, PPTX_PARTS, ParsedArchive, PathShadeType, PenAlignment, PresetColor, PresetDash, PresetMaterialType, PresetPattern, PresetShadowVal, RectAlignment, Relationships, STYLE_CATEGORIES, SchemeColor, SmartArtCollection, StyleMatrixIndex, SystemColor, TargetModeType, ThemeColor, ThemeFont, TileAlignment, TileFlipMode, TimeUnit, TokenNotFoundError, TrendlineType, XLSX_PARTS, ZIP_DEFLATE_LEVEL, ZIP_STORED_LEVEL, addSmartArtRelationships, appPropertiesDesc, appendContentType, appendOverride, appendRelationship, applyCorePropertiesOverride, bevelDesc, blipDesc, blipFillDesc, buildContentTypeOverrides, buildCorePropertiesXmlString, buildFill, buildThemeXml, calculateEffectExtent, chartSpaceDesc, checkOrder, collectPlaceholderKeys, compileMapping, convertEmuToInches, convertEmuToPixels, convertEmuToPoints, convertInchesToEmu, convertInchesToTwip, convertMillimetersToTwip, convertOutput, convertPixelsToEmu, convertPointsToEmu, convertToEmu, convertToInch, convertToPt, convertToTwip, convertUniversalMeasureToEmu, convertUniversalMeasureToInch, convertUniversalMeasureToPt, convertUniversalMeasureToTwip, createAdjust, createAdjustList, createAnimateOneByOne, createAnimationLevel, createBevel, createBlip, createBlipEffects, createBlipFill, createBottomBevel, createColorElement, createColorTransforms, createColorsDefinitionHeader, createColorsDefinitionHeaderList, createCustomDash, createCustomGeometry, createDataModel, createDefault, createDiagramExtensionList, createDiagramRelationshipIds, createDiagramShape3D, createDiagramStyle, createDiagramTextProperties, createEffectColorList, createEffectDag, createEffectList, createExtensionList, createFillColorList, createFillOverlayEffect, createGlowEffect, createGradientFill, createGradientStop, createGraphicFrameLocking, createGroupFill, createGroupLocking, createGroupTransform2D, createHierBranch, createHslColor, createInnerShadowEffect, createLayoutDefinitionHeader, createLayoutDefinitionHeaderList, createLineColorList, createLineEnd, createMaxChildren, createNoFill, createOrgChart, createOuterShadowEffect, createOutline, createOverride, createPacker, createPatternFill, createPictureLocking, createPreferredChildren, createPresentationLayoutVariables, createPresetColor, createPresetShadowEffect, createReflectionEffect, createReplacer, createRgbColor, createRunRenderer, createScRgbColor, createScene3D, createSchemeColor, createShape3D, createShapeLocking, createSoftEdgeEffect, createSolidFill, createSourceRectangle, createSplitInject, createStyleDefinitionHeader, createStyleDefinitionHeaderList, createStyleLabel, createSystemColor, createTableStyle, createTableStyleList, createTextEffectColorList, createTextElementContents, createTextFillColorList, createTextLineColorList, createThemeXml, createTileInfo, createTokenReplacer, createTransform2D, createTraverser, createZipStream, customGeometryDesc, customPropertiesDesc, dateTimeValue, decimalNumber, decodeBase64, derivePasswordHash, diagramExtensionListDesc, diagramRelationshipIdsDesc, diagramStyleDesc, diffTagSets, effectListDesc, eighthPointMeasureValue, encodeBase64, extractBlipFillMedia, fillDesc, findAndReplaceImagePlaceholders, findFieldSpec, formatId, getColorXml, getFirstLevelElements, getLayoutXml, getMediaRefs, getNextRelationshipIndex, getReferencedMedia, getStyleXml, getVideoRefs, gradientFillDesc, graphicFrameLockingDesc, groupLockingDesc, groupTransform2DDesc, hasPlaceholders, hashPasswordAgile, hashedId, hexBinary, hexColorValue, hpsMeasureValue, hslColorDesc, invertMap, isBase64DataURL, levelForMediaName, longHexNumber, measurementOrPercentValue, nextNumericId, optionalRelsPart, outlineDesc, parse, parseArchive, parseColorChoice, parseCorePropsElement, parseTableStyleList, parseUniversalMeasure, patchSpaceAttribute, patternFillDesc, percentageValue, pictureLockingDesc, pointMeasureValue, positiveUniversalMeasureValue, presentationLayoutVariablesDesc, presetColorDesc, presetGeometryDesc, randomBytes, replaceAllPlaceholders, replaceChartPlaceholders, replaceHyperlinkPlaceholders, replaceImagePlaceholders, replaceMediaPlaceholders, replaceNumberingPlaceholders, replaceSmartArtPlaceholders, replaceVideoPlaceholders, rgbColorDesc, roundTripFields, scRgbColorDesc, scene3DDesc, schemeColorDesc, shape3DDesc, shapeLockingDesc, shortHexNumber, signedHpsMeasureValue, signedTwipsMeasureValue, solidFillDesc, sourceRectangleDesc, strFromU8, stretchDesc, stringify, stringifyAdjustmentValues, stringifyColorChoice, stringifyConnection, stringifyDataModel, stringifyPoint, stringifyPresetGeometry, stringifyStretch, stringifyTransPoint, summarizeOpcIssues, systemColorDesc, themeDesc, tileDesc, toJson, toUint8Array, transform2DDesc, twipsMeasureValue, uCharHexNumber, uniqueId, uniqueNumericIdCreator, uniqueUuid, universalMeasureValue, unsignedDecimalNumber, unzipSync, validateOpcConsistency, xsdBlendMode, xsdCompoundLine, xsdEffectContainer, xsdLineCap, xsdLineEndSize, xsdMaterialType, xsdPathFillMode, xsdPattern, xsdPenAlignment, xsdPresetShadow, xsdRectAlignment, xsdStrikeStyle, xsdTextAlign, xsdTextAnchor, xsdTextCaps, xsdUnderlineStyle, xsdVerticalMergeRev, zipAndConvert, zipSyncAndConvert };\n\n//# sourceMappingURL=index.mjs.map","import { attr, attrBool, attrMeasure, attrNum, children, element, escapeXml, findChild, findFirst, parse, textOf } from \"@office-open/xml\";\nimport { Media, convertEmuToPixels, convertToEmu, createTableStyleList, parseTableStyleList, toUint8Array, xsdLineEndSize, xsdRectAlignment, xsdStrikeStyle, xsdTextAlign, xsdTextAnchor, xsdTextCaps, xsdUnderlineStyle } from \"@office-open/core\";\nimport { buildFill, createEffectList, customGeometryDesc, effectListDesc, extractBlipFillMedia, fillDesc, outlineDesc, presetGeometryDesc, scene3DDesc, shape3DDesc, shapeLockingDesc, transform2DDesc } from \"@office-open/core/drawingml\";\nimport { parse as parse$1, stringify as stringify$1 } from \"@office-open/core/descriptor\";\nimport { chartSpaceDesc } from \"@office-open/core/chart\";\nimport { createDataModel } from \"@office-open/core/smartart\";\n//#region src/parts/slide/coerce.ts\n/**\n* Master slide child coercion.\n*\n* @module\n*/\n/**\n* Build master slide children XML from JSON options.\n*\n* Currently only supports empty children (master slides with no custom shapes).\n* Custom shapes on master slides should use the descriptor pipeline directly.\n* Accepts any child array shape (MasterChild[] or SlideChild[]) since it is a no-op.\n*/\nfunction buildMasterChildrenXml(children) {\n\tif (!children || children.length === 0) return \"\";\n\treturn \"\";\n}\n//#endregion\n//#region src/shared/constants.ts\n/**\n* OOXML magic-number constants for PPTX generation.\n*\n* Values are in EMU (English Metric Units) or hundredths of a point,\n* as defined by the OOXML specification.\n* @module\n*/\n/** Default outline width: 1pt = 12700 EMU */\nconst DEFAULT_OUTLINE_WIDTH = 12700;\n/** Default shadow blur radius: ~4pt = 50800 EMU */\nconst DEFAULT_SHADOW_BLUR_RADIUS = 50800;\n/** Default shadow distance: ~3pt = 38100 EMU */\nconst DEFAULT_SHADOW_DISTANCE = 38100;\n/** Default shadow direction: 270° = 2700000 (60,000ths of a degree) */\nconst DEFAULT_SHADOW_DIRECTION = 27e5;\n/** Default shadow alpha: 40% = 40000 (100,000ths of a percent) */\nconst DEFAULT_SHADOW_ALPHA = 4e4;\n/** Empty shape tree header: nvGrpSpPr + grpSpPr with zero-offset transform */\nconst SP_TREE_HEADER = \"<p:nvGrpSpPr><p:cNvPr id=\\\"1\\\" name=\\\"\\\"/><p:cNvGrpSpPr/><p:nvPr/></p:nvGrpSpPr><p:grpSpPr><a:xfrm><a:off x=\\\"0\\\" y=\\\"0\\\"/><a:ext cx=\\\"0\\\" cy=\\\"0\\\"/><a:chOff x=\\\"0\\\" y=\\\"0\\\"/><a:chExt cx=\\\"0\\\" cy=\\\"0\\\"/></a:xfrm></p:grpSpPr>\";\n/** Default theme color mapping attribute string for <p:clrMap> */\nconst DEFAULT_COLOR_MAP = \"bg1=\\\"lt1\\\" tx1=\\\"dk1\\\" bg2=\\\"lt2\\\" tx2=\\\"dk2\\\" accent1=\\\"accent1\\\" accent2=\\\"accent2\\\" accent3=\\\"accent3\\\" accent4=\\\"accent4\\\" accent5=\\\"accent5\\\" accent6=\\\"accent6\\\" hlink=\\\"hlink\\\" folHlink=\\\"folHlink\\\"\";\n//#endregion\n//#region src/shared/drawingml/effects.ts\nconst ReflectionAlignment = {\n\tTOP_LEFT: \"topLeft\",\n\tTOP: \"top\",\n\tTOP_RIGHT: \"topRight\",\n\tLEFT: \"left\",\n\tCENTER: \"center\",\n\tRIGHT: \"right\",\n\tBOTTOM_LEFT: \"bottomLeft\",\n\tBOTTOM: \"bottom\",\n\tBOTTOM_RIGHT: \"bottomRight\"\n};\n/** Convert PPTX simple color to core SolidFillOptions. */\nfunction toColor$1(color, alpha) {\n\tif (!color) return {\n\t\tvalue: \"000000\",\n\t\talpha: (alpha ?? 40) * 1e3\n\t};\n\treturn {\n\t\tvalue: color.replace(\"#\", \"\"),\n\t\talpha: (alpha ?? 40) * 1e3\n\t};\n}\n/** Convert PPTX ShadowOptions to core OuterShadowEffectOptions. */\nfunction toOuterShadow(opts) {\n\treturn {\n\t\tblurRadius: opts.blur,\n\t\tdistance: opts.distance,\n\t\tdirection: opts.direction,\n\t\trotWithShape: opts.rotateWithShape === false ? false : void 0,\n\t\tcolor: toColor$1(opts.color, opts.alpha)\n\t};\n}\n/** Convert PPTX ShadowOptions to core InnerShadowEffectOptions. */\nfunction toInnerShadow(opts) {\n\treturn {\n\t\tblurRadius: opts.blur,\n\t\tdistance: opts.distance,\n\t\tdirection: opts.direction,\n\t\tcolor: toColor$1(opts.color, opts.alpha)\n\t};\n}\n/** Convert PPTX GlowOptions to core GlowEffectOptions. */\nfunction toGlow(opts) {\n\treturn {\n\t\tradius: opts.radius ?? 152400,\n\t\tcolor: toColor$1(opts.color, opts.alpha)\n\t};\n}\n/** Convert PPTX ReflectionOptions to core ReflectionEffectOptions. */\nfunction toReflection(opts) {\n\tconst result = {};\n\tif (opts.blurRadius !== void 0) result.blurRadius = opts.blurRadius;\n\tif (opts.distance !== void 0) result.distance = opts.distance;\n\tif (opts.direction !== void 0) result.direction = opts.direction;\n\tif (opts.startAlpha !== void 0) result.startAlpha = opts.startAlpha * 1e3;\n\tif (opts.startPosition !== void 0) result.startPosition = opts.startPosition * 1e3;\n\tif (opts.endAlpha !== void 0) result.endAlpha = opts.endAlpha * 1e3;\n\tif (opts.endPosition !== void 0) result.endPosition = opts.endPosition * 1e3;\n\tif (opts.fadeDirection !== void 0) result.fadeDirection = opts.fadeDirection * 6e4;\n\tif (opts.scaleX !== void 0) result.scaleX = opts.scaleX * 1e3;\n\tif (opts.scaleY !== void 0) result.scaleY = opts.scaleY * 1e3;\n\tif (opts.skewX !== void 0) result.skewX = opts.skewX * 6e4;\n\tif (opts.skewY !== void 0) result.skewY = opts.skewY * 6e4;\n\tif (opts.alignment !== void 0) result.alignment = xsdRectAlignment.to(opts.alignment);\n\tif (opts.rotateWithShape === false) result.rotWithShape = 0;\n\treturn result;\n}\n/** Map PPTX EffectsOptions to core EffectListOptions. */\nfunction toEffectListOptions$1(opts) {\n\tif (!(opts.outerShadow || opts.innerShadow || opts.glow || opts.reflection || opts.softEdge)) return void 0;\n\treturn {\n\t\touterShadow: opts.outerShadow ? toOuterShadow(opts.outerShadow) : void 0,\n\t\tinnerShadow: opts.innerShadow ? toInnerShadow(opts.innerShadow) : void 0,\n\t\tglow: opts.glow ? toGlow(opts.glow) : void 0,\n\t\treflection: opts.reflection ? toReflection(opts.reflection) : void 0,\n\t\tsoftEdge: opts.softEdge ? opts.softEdge.radius ?? 50800 : void 0\n\t};\n}\n/** Create a:effectLst from PPTX simplified EffectsOptions. */\nfunction createPptxEffectList(options) {\n\tconst effectListOpts = toEffectListOptions$1(options);\n\treturn effectListOpts ? createEffectList(effectListOpts) : null;\n}\n//#endregion\n//#region src/parts/slide-layout.ts\nconst NS = `xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:p=\"http://schemas.openxmlformats.org/presentationml/2006/main\"`;\nconst SW_REF = 12192e3;\nconst sx = (refX, sw) => Math.round(refX * sw / SW_REF);\nconst toEmuPos = (pos) => ({\n\tx: convertToEmu(pos.x),\n\ty: convertToEmu(pos.y),\n\tcx: convertToEmu(pos.width),\n\tcy: convertToEmu(pos.height)\n});\nfunction dtPlaceholder(id) {\n\treturn `<p:sp><p:nvSpPr><p:cNvPr id=\"${id}\" name=\"Date Placeholder ${id - 1}\"/><p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr><p:nvPr><p:ph type=\"dt\" sz=\"half\" idx=\"10\"/></p:nvPr></p:nvSpPr><p:spPr/><p:txBody><a:bodyPr/><a:lstStyle/><a:p><a:fld id=\"{5BCAD085-E8A6-8845-BD4E-CB4CCA059FC4}\" type=\"datetimeFigureOut\"><a:rPr lang=\"en-US\" smtClean=\"0\"/><a:t>1/27/13</a:t></a:fld><a:endParaRPr lang=\"en-US\"/></a:p></p:txBody></p:sp>`;\n}\nfunction ftrPlaceholder(id) {\n\treturn `<p:sp><p:nvSpPr><p:cNvPr id=\"${id}\" name=\"Footer Placeholder ${id - 1}\"/><p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr><p:nvPr><p:ph type=\"ftr\" sz=\"quarter\" idx=\"11\"/></p:nvPr></p:nvSpPr><p:spPr/><p:txBody><a:bodyPr/><a:lstStyle/><a:p><a:endParaRPr lang=\"en-US\"/></a:p></p:txBody></p:sp>`;\n}\nfunction sldNumPlaceholder(id) {\n\treturn `<p:sp><p:nvSpPr><p:cNvPr id=\"${id}\" name=\"Slide Number Placeholder ${id - 1}\"/><p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr><p:nvPr><p:ph type=\"sldNum\" sz=\"quarter\" idx=\"12\"/></p:nvPr></p:nvSpPr><p:spPr/><p:txBody><a:bodyPr/><a:lstStyle/><a:p><a:fld id=\"{C1FF6DA9-008F-8B48-92A6-B652298478BF}\" type=\"slidenum\"><a:rPr lang=\"en-US\" smtClean=\"0\"/><a:t>‹#›</a:t></a:fld><a:endParaRPr lang=\"en-US\"/></a:p></p:txBody></p:sp>`;\n}\nfunction titlePlaceholder(id) {\n\treturn `<p:sp><p:nvSpPr><p:cNvPr id=\"${id}\" name=\"Title 1\"/><p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr><p:nvPr><p:ph type=\"title\"/></p:nvPr></p:nvSpPr><p:spPr/><p:txBody><a:bodyPr/><a:lstStyle/><a:p><a:endParaRPr lang=\"en-US\"/></a:p></p:txBody></p:sp>`;\n}\nfunction bodyPlaceholder(id, idx) {\n\treturn `<p:sp><p:nvSpPr><p:cNvPr id=\"${id}\" name=\"Content Placeholder ${id - 1}\"/><p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr><p:nvPr><p:ph idx=\"${idx}\"/></p:nvPr></p:nvSpPr><p:spPr/><p:txBody><a:bodyPr/><a:lstStyle/><a:p><a:endParaRPr lang=\"en-US\"/></a:p></p:txBody></p:sp>`;\n}\nfunction bodyPlaceholderAt(id, idx, x, y, cx, cy) {\n\treturn `<p:sp><p:nvSpPr><p:cNvPr id=\"${id}\" name=\"Content Placeholder ${id - 1}\"/><p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr><p:nvPr><p:ph idx=\"${idx}\"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x=\"${x}\" y=\"${y}\"/><a:ext cx=\"${cx}\" cy=\"${cy}\"/></a:xfrm></p:spPr><p:txBody><a:bodyPr/><a:lstStyle/><a:p><a:endParaRPr lang=\"en-US\"/></a:p></p:txBody></p:sp>`;\n}\nfunction typedBodyPlaceholder(id, idx, x, y, cx, cy) {\n\treturn `<p:sp><p:nvSpPr><p:cNvPr id=\"${id}\" name=\"Text Placeholder ${id - 1}\"/><p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr><p:nvPr><p:ph type=\"body\" idx=\"${idx}\"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x=\"${x}\" y=\"${y}\"/><a:ext cx=\"${cx}\" cy=\"${cy}\"/></a:xfrm></p:spPr><p:txBody><a:bodyPr/><a:lstStyle/><a:p><a:endParaRPr lang=\"en-US\"/></a:p></p:txBody></p:sp>`;\n}\nfunction titlePlaceholderAt(id, x, y, cx, cy) {\n\treturn `<p:sp><p:nvSpPr><p:cNvPr id=\"${id}\" name=\"Title 1\"/><p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr><p:nvPr><p:ph type=\"title\"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x=\"${x}\" y=\"${y}\"/><a:ext cx=\"${cx}\" cy=\"${cy}\"/></a:xfrm></p:spPr><p:txBody><a:bodyPr/><a:lstStyle/><a:p><a:endParaRPr lang=\"en-US\"/></a:p></p:txBody></p:sp>`;\n}\nfunction ctrTitlePlaceholder(id, x, y, cx, cy) {\n\treturn `<p:sp><p:nvSpPr><p:cNvPr id=\"${id}\" name=\"Title 1\"/><p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr><p:nvPr><p:ph type=\"ctrTitle\"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x=\"${x}\" y=\"${y}\"/><a:ext cx=\"${cx}\" cy=\"${cy}\"/></a:xfrm></p:spPr><p:txBody><a:bodyPr anchor=\"b\"/><a:lstStyle><a:lvl1pPr algn=\"ctr\"><a:defRPr sz=\"6000\"/></a:lvl1pPr></a:lstStyle><a:p><a:endParaRPr lang=\"en-US\"/></a:p></p:txBody></p:sp>`;\n}\nfunction subTitlePlaceholder(id, x, y, cx, cy) {\n\treturn `<p:sp><p:nvSpPr><p:cNvPr id=\"${id}\" name=\"Subtitle 2\"/><p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr><p:nvPr><p:ph type=\"subTitle\" idx=\"1\"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x=\"${x}\" y=\"${y}\"/><a:ext cx=\"${cx}\" cy=\"${cy}\"/></a:xfrm></p:spPr><p:txBody><a:bodyPr/><a:lstStyle><a:lvl1pPr marL=\"0\" indent=\"0\" algn=\"ctr\"><a:buNone/><a:defRPr sz=\"2400\"/></a:lvl1pPr></a:lstStyle><a:p><a:endParaRPr lang=\"en-US\"/></a:p></p:txBody></p:sp>`;\n}\nfunction picPlaceholder(id, idx, x, y, cx, cy) {\n\treturn `<p:sp><p:nvSpPr><p:cNvPr id=\"${id}\" name=\"Picture Placeholder ${id - 1}\"/><p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr><p:nvPr><p:ph type=\"pic\" idx=\"${idx}\"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x=\"${x}\" y=\"${y}\"/><a:ext cx=\"${cx}\" cy=\"${cy}\"/></a:xfrm></p:spPr><p:txBody><a:bodyPr/><a:lstStyle/><a:p><a:endParaRPr lang=\"en-US\"/></a:p></p:txBody></p:sp>`;\n}\nconst LAYOUT_DEFS = {\n\ttitle: {\n\t\ttype: \"title\",\n\t\tname: \"Title Slide\",\n\t\tbuildShapes: (sw) => ctrTitlePlaceholder(2, sx(1524e3, sw), 1122363, sx(9144e3, sw), 2387600) + subTitlePlaceholder(3, sx(1524e3, sw), 3602038, sx(9144e3, sw), 1655762)\n\t},\n\tobj: {\n\t\ttype: \"obj\",\n\t\tname: \"Title and Content\",\n\t\tbuildShapes: () => titlePlaceholder(2) + bodyPlaceholder(3, 1)\n\t},\n\tsecHead: {\n\t\ttype: \"secHead\",\n\t\tname: \"Section Header\",\n\t\tbuildShapes: (sw) => titlePlaceholderAt(2, sx(831850, sw), 1709738, sx(10515600, sw), 2852737) + typedBodyPlaceholder(3, 1, sx(831850, sw), 4589463, sx(10515600, sw), 1500187)\n\t},\n\ttwoObj: {\n\t\ttype: \"twoObj\",\n\t\tname: \"Two Content\",\n\t\tbuildShapes: (sw) => titlePlaceholder(2) + bodyPlaceholderAt(3, 1, sx(838200, sw), 1825625, sx(5181600, sw), 4351338) + bodyPlaceholderAt(4, 2, sx(6172200, sw), 1825625, sx(5181600, sw), 4351338)\n\t},\n\ttwoTxTwoObj: {\n\t\ttype: \"twoTxTwoObj\",\n\t\tname: \"Comparison\",\n\t\tbuildShapes: (sw) => titlePlaceholderAt(2, sx(839788, sw), 365125, sx(10515600, sw), 1325563) + typedBodyPlaceholder(3, 1, sx(839788, sw), 1681163, sx(5157787, sw), 823912) + bodyPlaceholderAt(4, 2, sx(839788, sw), 2505075, sx(5157787, sw), 3684588) + typedBodyPlaceholder(5, 3, sx(6172200, sw), 1681163, sx(5183188, sw), 823912) + bodyPlaceholderAt(6, 4, sx(6172200, sw), 2505075, sx(5183188, sw), 3684588)\n\t},\n\ttitleOnly: {\n\t\ttype: \"titleOnly\",\n\t\tname: \"Title Only\",\n\t\tbuildShapes: () => titlePlaceholder(2)\n\t},\n\tblank: {\n\t\ttype: \"blank\",\n\t\tname: \"Blank\",\n\t\tbuildShapes: () => \"\"\n\t},\n\tobjTx: {\n\t\ttype: \"objTx\",\n\t\tname: \"Content with Caption\",\n\t\tbuildShapes: (sw) => titlePlaceholderAt(2, sx(839788, sw), 457200, sx(3932237, sw), 1600200) + bodyPlaceholderAt(3, 1, sx(5183188, sw), 987425, sx(6172200, sw), 4873625) + typedBodyPlaceholder(4, 2, sx(839788, sw), 2057400, sx(3932237, sw), 3811588)\n\t},\n\tpicTx: {\n\t\ttype: \"picTx\",\n\t\tname: \"Picture with Caption\",\n\t\tbuildShapes: (sw) => titlePlaceholderAt(2, sx(839788, sw), 457200, sx(3932237, sw), 1600200) + picPlaceholder(3, 1, sx(5183188, sw), 987425, sx(6172200, sw), 4873625) + typedBodyPlaceholder(4, 2, sx(839788, sw), 2057400, sx(3932237, sw), 3811588)\n\t},\n\tvertTx: {\n\t\ttype: \"vertTx\",\n\t\tname: \"Vertical Text\",\n\t\tbuildShapes: () => titlePlaceholder(2) + `<p:sp><p:nvSpPr><p:cNvPr id=\"3\" name=\"Text Placeholder 2\"/><p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr><p:nvPr><p:ph type=\"body\" idx=\"1\"/></p:nvPr></p:nvSpPr><p:spPr/><p:txBody><a:bodyPr/><a:lstStyle/><a:p><a:endParaRPr lang=\"en-US\"/></a:p></p:txBody></p:sp>`\n\t},\n\tvertTitleAndTx: {\n\t\ttype: \"vertTitleAndTx\",\n\t\tname: \"Vertical Title and Text\",\n\t\tbuildShapes: (sw) => titlePlaceholderAt(2, sx(8724900, sw), 365125, sx(2628900, sw), 5811838) + typedBodyPlaceholder(3, 1, sx(838200, sw), 365125, sx(7734300, sw), 5811838)\n\t},\n\ttx: {\n\t\ttype: \"tx\",\n\t\tname: \"Title and Text\",\n\t\tbuildShapes: () => titlePlaceholder(2) + bodyPlaceholder(3, 1)\n\t},\n\tchart: {\n\t\ttype: \"chart\",\n\t\tname: \"Content with Caption\",\n\t\tbuildShapes: () => titlePlaceholder(2) + bodyPlaceholder(3, 1)\n\t},\n\ttbl: {\n\t\ttype: \"tbl\",\n\t\tname: \"Content with Caption\",\n\t\tbuildShapes: () => titlePlaceholder(2) + bodyPlaceholder(3, 1)\n\t},\n\ttwoColTx: {\n\t\ttype: \"twoColTx\",\n\t\tname: \"Two Content\",\n\t\tbuildShapes: (sw) => titlePlaceholder(2) + bodyPlaceholderAt(3, 1, sx(838200, sw), 1825625, sx(5181600, sw), 4351338) + bodyPlaceholderAt(4, 2, sx(6172200, sw), 1825625, sx(5181600, sw), 4351338)\n\t}\n};\nfunction buildLayoutXml(layoutType, slideWidth = SW_REF) {\n\tconst def = LAYOUT_DEFS[layoutType];\n\tconst contentShapes = def.buildShapes(slideWidth);\n\tconst footerStartId = 2 + (contentShapes ? (contentShapes.match(/<p:sp>/g) || []).length : 0);\n\tconst footerShapes = dtPlaceholder(footerStartId) + ftrPlaceholder(footerStartId + 1) + sldNumPlaceholder(footerStartId + 2);\n\treturn `<p:sldLayout ${NS} type=\"${layoutType}\" preserve=\"1\"><p:cSld name=\"${def.name}\"><p:spTree>${SP_TREE_HEADER}${contentShapes}${footerShapes}</p:spTree></p:cSld><p:clrMapOvr><a:masterClrMapping/></p:clrMapOvr></p:sldLayout>`;\n}\nfunction positionedTitlePlaceholder(id, x, y, cx, cy) {\n\treturn `<p:sp><p:nvSpPr><p:cNvPr id=\"${id}\" name=\"Title 1\"/><p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr><p:nvPr><p:ph type=\"title\"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x=\"${x}\" y=\"${y}\"/><a:ext cx=\"${cx}\" cy=\"${cy}\"/></a:xfrm></p:spPr><p:txBody><a:bodyPr/><a:lstStyle/><a:p><a:endParaRPr lang=\"en-US\"/></a:p></p:txBody></p:sp>`;\n}\nfunction positionedSubtitlePlaceholder(id, x, y, cx, cy) {\n\treturn `<p:sp><p:nvSpPr><p:cNvPr id=\"${id}\" name=\"Subtitle 2\"/><p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr><p:nvPr><p:ph type=\"subTitle\" idx=\"1\"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x=\"${x}\" y=\"${y}\"/><a:ext cx=\"${cx}\" cy=\"${cy}\"/></a:xfrm></p:spPr><p:txBody><a:bodyPr/><a:lstStyle/><a:p><a:endParaRPr lang=\"en-US\"/></a:p></p:txBody></p:sp>`;\n}\nfunction positionedBodyPlaceholder(id, idx, x, y, cx, cy) {\n\treturn `<p:sp><p:nvSpPr><p:cNvPr id=\"${id}\" name=\"Content Placeholder ${id - 1}\"/><p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr><p:nvPr><p:ph idx=\"${idx}\"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x=\"${x}\" y=\"${y}\"/><a:ext cx=\"${cx}\" cy=\"${cy}\"/></a:xfrm></p:spPr><p:txBody><a:bodyPr/><a:lstStyle/><a:p><a:endParaRPr lang=\"en-US\"/></a:p></p:txBody></p:sp>`;\n}\nfunction positionedDatePlaceholder(id, x, y, cx, cy) {\n\treturn `<p:sp><p:nvSpPr><p:cNvPr id=\"${id}\" name=\"Date Placeholder ${id - 1}\"/><p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr><p:nvPr><p:ph type=\"dt\" sz=\"half\" idx=\"10\"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x=\"${x}\" y=\"${y}\"/><a:ext cx=\"${cx}\" cy=\"${cy}\"/></a:xfrm></p:spPr><p:txBody><a:bodyPr/><a:lstStyle/><a:p><a:fld id=\"{5BCAD085-E8A6-8845-BD4E-CB4CCA059FC4}\" type=\"datetimeFigureOut\"><a:rPr lang=\"en-US\" smtClean=\"0\"/><a:t>1/27/13</a:t></a:fld><a:endParaRPr lang=\"en-US\"/></a:p></p:txBody></p:sp>`;\n}\nfunction positionedFooterPlaceholder(id, x, y, cx, cy) {\n\treturn `<p:sp><p:nvSpPr><p:cNvPr id=\"${id}\" name=\"Footer Placeholder ${id - 1}\"/><p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr><p:nvPr><p:ph type=\"ftr\" sz=\"quarter\" idx=\"11\"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x=\"${x}\" y=\"${y}\"/><a:ext cx=\"${cx}\" cy=\"${cy}\"/></a:xfrm></p:spPr><p:txBody><a:bodyPr/><a:lstStyle/><a:p><a:endParaRPr lang=\"en-US\"/></a:p></p:txBody></p:sp>`;\n}\nfunction positionedSldNumPlaceholder(id, x, y, cx, cy) {\n\treturn `<p:sp><p:nvSpPr><p:cNvPr id=\"${id}\" name=\"Slide Number Placeholder ${id - 1}\"/><p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr><p:nvPr><p:ph type=\"sldNum\" sz=\"quarter\" idx=\"12\"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x=\"${x}\" y=\"${y}\"/><a:ext cx=\"${cx}\" cy=\"${cy}\"/></a:xfrm></p:spPr><p:txBody><a:bodyPr/><a:lstStyle/><a:p><a:fld id=\"{C1FF6DA9-008F-8B48-92A6-B652298478BF}\" type=\"slidenum\"><a:rPr lang=\"en-US\" smtClean=\"0\"/><a:t>‹#›</a:t></a:fld><a:endParaRPr lang=\"en-US\"/></a:p></p:txBody></p:sp>`;\n}\nfunction buildCustomLayoutXml(def) {\n\tconst ph = def.placeholders ?? {};\n\tconst layoutType = def.type ?? \"blank\";\n\tconst displayName = def.name ?? LAYOUT_DEFS[layoutType]?.name ?? layoutType;\n\tconst shapes = [];\n\tlet nextId = 2;\n\tif (ph.title !== false) {\n\t\tconst titlePos = ph.title ? toEmuPos(ph.title) : null;\n\t\tif (titlePos) shapes.push(positionedTitlePlaceholder(nextId++, titlePos.x, titlePos.y, titlePos.cx, titlePos.cy));\n\t\telse shapes.push(titlePlaceholder(nextId++));\n\t}\n\tif (ph.subtitle !== false && ph.subtitle !== void 0) {\n\t\tconst subPos = toEmuPos(ph.subtitle);\n\t\tshapes.push(positionedSubtitlePlaceholder(nextId++, subPos.x, subPos.y, subPos.cx, subPos.cy));\n\t}\n\tif (ph.body !== false && ph.body !== void 0) {\n\t\tconst bodyPos = ph.body ? toEmuPos(ph.body) : null;\n\t\tif (bodyPos) shapes.push(positionedBodyPlaceholder(nextId++, 1, bodyPos.x, bodyPos.y, bodyPos.cx, bodyPos.cy));\n\t\telse shapes.push(bodyPlaceholder(nextId++, 1));\n\t}\n\tif (ph.date !== false && ph.date !== void 0) {\n\t\tconst datePos = ph.date ? toEmuPos(ph.date) : null;\n\t\tif (datePos) shapes.push(positionedDatePlaceholder(nextId++, datePos.x, datePos.y, datePos.cx, datePos.cy));\n\t\telse shapes.push(dtPlaceholder(nextId++));\n\t}\n\tif (ph.footer !== false && ph.footer !== void 0) {\n\t\tconst ftrPos = ph.footer ? toEmuPos(ph.footer) : null;\n\t\tif (ftrPos) shapes.push(positionedFooterPlaceholder(nextId++, ftrPos.x, ftrPos.y, ftrPos.cx, ftrPos.cy));\n\t\telse shapes.push(ftrPlaceholder(nextId++));\n\t}\n\tif (ph.slideNumber !== false && ph.slideNumber !== void 0) {\n\t\tconst sldPos = ph.slideNumber ? toEmuPos(ph.slideNumber) : null;\n\t\tif (sldPos) shapes.push(positionedSldNumPlaceholder(nextId++, sldPos.x, sldPos.y, sldPos.cx, sldPos.cy));\n\t\telse shapes.push(sldNumPlaceholder(nextId++));\n\t}\n\tconst childrenXml = buildMasterChildrenXml(def.children);\n\tif (childrenXml) {\n\t\tconst offset = nextId - 1;\n\t\tshapes.push(childrenXml.replace(/ id=\"(\\d+)\"/g, (_, n) => ` id=\"${parseInt(n) + offset}\"`));\n\t}\n\treturn `<p:sldLayout ${NS} type=\"${layoutType}\" preserve=\"1\"${def.matchingName !== void 0 ? ` matchingName=\"${def.matchingName}\"` : \"\"}><p:cSld name=\"${displayName}\"><p:spTree>${SP_TREE_HEADER}${shapes.join(\"\")}</p:spTree></p:cSld><p:clrMapOvr><a:masterClrMapping/></p:clrMapOvr></p:sldLayout>`;\n}\n//#endregion\n//#region src/parts/notes-master.ts\nconst DEFAULT_LEVEL_MARGINS = [\n\t0,\n\t457200,\n\t914400,\n\t1371600,\n\t1828800,\n\t2286e3,\n\t2743200,\n\t3200400,\n\t3657600\n];\nfunction buildColorMapAttrs(opts) {\n\tif (!opts) return DEFAULT_COLOR_MAP;\n\tconst merged = {\n\t\tbg1: \"lt1\",\n\t\ttx1: \"dk1\",\n\t\tbg2: \"lt2\",\n\t\ttx2: \"dk2\",\n\t\taccent1: \"accent1\",\n\t\taccent2: \"accent2\",\n\t\taccent3: \"accent3\",\n\t\taccent4: \"accent4\",\n\t\taccent5: \"accent5\",\n\t\taccent6: \"accent6\",\n\t\thlink: \"hlink\",\n\t\tfolHlink: \"folHlink\",\n\t\t...opts\n\t};\n\treturn Object.entries(merged).map(([k, v]) => `${k}=\"${v}\"`).join(\" \");\n}\nfunction buildHfAttrs(opts) {\n\tif (!opts) return \"dt=\\\"0\\\" hdr=\\\"0\\\" ftr=\\\"0\\\" sldNum=\\\"0\\\"\";\n\treturn `dt=\"${opts.date ? 1 : 0}\" hdr=\"${opts.header ? 1 : 0}\" ftr=\"${opts.footer ? 1 : 0}\" sldNum=\"${opts.slideNumber ? 1 : 0}\"`;\n}\nfunction buildNotesStyleXml(levels) {\n\tconst parts = [\"<p:notesStyle>\"];\n\tfor (let i = 0; i < 9; i++) {\n\t\tconst level = levels?.[i];\n\t\tconst marL = level?.marginLeft ?? DEFAULT_LEVEL_MARGINS[i];\n\t\tconst algn = level?.alignment ?? \"l\";\n\t\tconst sz = level?.fontSize ?? 1200;\n\t\tparts.push(`<a:lvl${i + 1}pPr marL=\"${marL}\" algn=\"${algn}\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:defRPr sz=\"${sz}\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl${i + 1}pPr>`);\n\t}\n\tparts.push(\"</p:notesStyle>\");\n\treturn parts.join(\"\");\n}\nfunction buildNotesMasterXml(options) {\n\tconst colorMap = buildColorMapAttrs(options?.colorMap);\n\tconst hf = buildHfAttrs(options?.headerFooter);\n\tconst notesStyle = buildNotesStyleXml(options?.notesStyle);\n\treturn `<p:notesMaster xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:p=\"http://schemas.openxmlformats.org/presentationml/2006/main\"><p:cSld><p:bg><p:bgRef idx=\"1001\"><a:schemeClr val=\"bg1\"/></p:bgRef></p:bg><p:spTree>${SP_TREE_HEADER}</p:spTree></p:cSld><p:clrMap ${colorMap}/><p:hf ${hf}/>` + notesStyle + \"</p:notesMaster>\";\n}\n//#endregion\n//#region src/parts/notes-slide.ts\n/**\n* Notes Slide XML builder.\n*\n* Pure function — no XmlComponent inheritance.\n*\n* @module\n*/\n/**\n* Build a complete p:notes XML string.\n*\n* Replaces the former NotesSlide XmlComponent class hierarchy\n* (NotesSlide → NotesCommonSlideData → NotesShapeTree → SlideImagePlaceholder / NotesBodyPlaceholder).\n*/\nfunction buildNotesSlideXml(options = {}) {\n\tconst escapedText = options.text ? escapeXml(options.text) : \"\";\n\treturn \"<p:notes xmlns:a=\\\"http://schemas.openxmlformats.org/drawingml/2006/main\\\" xmlns:r=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\\\" xmlns:p=\\\"http://schemas.openxmlformats.org/presentationml/2006/main\\\"><p:cSld><p:spTree><p:nvGrpSpPr><p:cNvPr id=\\\"1\\\" name=\\\"\\\"/><p:cNvGrpSpPr/><p:nvPr/></p:nvGrpSpPr><p:grpSpPr><a:xfrm><a:off x=\\\"0\\\" y=\\\"0\\\"/><a:ext cx=\\\"0\\\" cy=\\\"0\\\"/><a:chOff x=\\\"0\\\" y=\\\"0\\\"/><a:chExt cx=\\\"0\\\" cy=\\\"0\\\"/></a:xfrm></p:grpSpPr><p:sp><p:nvSpPr><p:cNvPr id=\\\"2\\\" name=\\\"Slide Image Placeholder 1\\\"/><p:cNvSpPr><a:spLocks noGrp=\\\"1\\\" noRot=\\\"1\\\" noChangeAspect=\\\"1\\\"/></p:cNvSpPr><p:nvPr><p:ph type=\\\"sldImg\\\"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x=\\\"685800\\\" y=\\\"1600200\\\"/><a:ext cx=\\\"5486400\\\" cy=\\\"3086100\\\"/></a:xfrm></p:spPr></p:sp><p:sp><p:nvSpPr><p:cNvPr id=\\\"3\\\" name=\\\"Notes Placeholder 1\\\"/><p:cNvSpPr><a:spLocks noGrp=\\\"1\\\"/></p:cNvSpPr><p:nvPr><p:ph type=\\\"body\\\" idx=\\\"1\\\"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x=\\\"685800\\\" y=\\\"4800600\\\"/><a:ext cx=\\\"5486400\\\" cy=\\\"3600450\\\"/></a:xfrm></p:spPr><p:txBody><a:bodyPr/><a:lstStyle/>\" + (escapedText ? `<a:p><a:r><a:rPr lang=\"en-US\" dirty=\"0\"/><a:t>${escapedText}</a:t></a:r></a:p>` : \"<a:p><a:endParaRPr lang=\\\"en-US\\\" dirty=\\\"0\\\"/></a:p>\") + \"</p:txBody></p:sp></p:spTree></p:cSld><p:clrMapOvr><a:masterClrMapping/></p:clrMapOvr></p:notes>\";\n}\n//#endregion\n//#region src/shared/animation/timing.ts\nconst ENTR_PRESET_IDS = {\n\tappear: 1,\n\tfade: 10,\n\tfly: 2,\n\twipe: 22,\n\tdissolve: 34,\n\tsplit: 21,\n\tblinds: 25,\n\tchecker: 26,\n\trandomBars: 24,\n\twheel: 27,\n\tzoom: 10,\n\tcover: 28,\n\tpush: 19,\n\tstrips: 23\n};\nconst EXIT_PRESET_IDS = {\n\tappear: 53,\n\tfade: 59,\n\tfly: 51,\n\twipe: 72,\n\tdissolve: 84,\n\tsplit: 71,\n\tblinds: 75,\n\tchecker: 76,\n\trandomBars: 74,\n\twheel: 77,\n\tzoom: 60,\n\tcover: 78,\n\tpush: 69,\n\tstrips: 73\n};\nconst EMPH_PRESET_IDS = {\n\tgrowShrink: 53,\n\tspin: 54,\n\tgrowWithTurn: 56,\n\tcolorChange: 29,\n\ttransparency: 57,\n\tboldFlash: 50,\n\twave: 55,\n\tpulse: 58\n};\nconst PATH_PRESET_IDS = {\n\tcustomPath: 200,\n\tarc: 201,\n\tbounce: 202,\n\tcircle: 203,\n\tcurve: 204,\n\tfigureEight: 205,\n\tline: 206,\n\tloop: 207\n};\nconst DIRECTION_SUBTYPES = {\n\tleft: 4,\n\tright: 8,\n\tup: 2,\n\tdown: 1,\n\thorizontal: 16,\n\tvertical: 32\n};\nconst FILTER_MAP = {\n\tfade: \"fade\",\n\tfly: \"fly\",\n\twipe: \"wipe\",\n\tdissolve: \"dissolve\",\n\tsplit: \"split\",\n\tblinds: \"blinds\",\n\tchecker: \"checkerboard\",\n\trandomBars: \"randombars\",\n\twheel: \"wheel\",\n\tzoom: \"zoom\",\n\tcover: \"cover\",\n\tpush: \"push\",\n\tstrips: \"strips\"\n};\nconst DIRECTION_FILTER = {\n\tfly: {\n\t\tleft: \"fromLeft\",\n\t\tright: \"fromRight\",\n\t\tup: \"fromTop\",\n\t\tdown: \"fromBottom\"\n\t},\n\twipe: {\n\t\tleft: \"right\",\n\t\tright: \"left\",\n\t\tup: \"down\",\n\t\tdown: \"up\"\n\t},\n\tsplit: {\n\t\thorizontal: \"horizontal\",\n\t\tvertical: \"vertical\"\n\t},\n\tblinds: {\n\t\thorizontal: \"horizontal\",\n\t\tvertical: \"vertical\"\n\t},\n\tchecker: {\n\t\thorizontal: \"horizontal\",\n\t\tvertical: \"vertical\"\n\t},\n\trandomBars: {\n\t\thorizontal: \"horizontal\",\n\t\tvertical: \"vertical\"\n\t},\n\tcover: {\n\t\tleft: \"left\",\n\t\tright: \"right\",\n\t\tup: \"top\",\n\t\tdown: \"bottom\"\n\t},\n\tpush: {\n\t\tleft: \"left\",\n\t\tright: \"right\",\n\t\tup: \"top\",\n\t\tdown: \"bottom\"\n\t},\n\tstrips: {\n\t\tleft: \"fromBottomLeft\",\n\t\tright: \"fromTopRight\",\n\t\tup: \"fromBottomRight\",\n\t\tdown: \"fromTopLeft\"\n\t},\n\twheel: {}\n};\nconst PATH_STRINGS = {\n\tcustomPath: \"\",\n\tarc: \"M 0 0 C 50 -100 100 -100 150 0\",\n\tbounce: \"M 0 0 L 50 0 C 50 -30 30 -50 0 -50 C -30 -50 -50 -30 -50 0 L 50 0\",\n\tcircle: \"M 0 0 C 50 -50 100 0 50 50 C 0 100 -50 50 0 0\",\n\tcurve: \"M 0 0 C 50 -80 100 -80 150 0 C 200 80 250 80 300 0\",\n\tfigureEight: \"M 0 0 C 50 -50 100 0 50 50 C 0 100 -50 50 0 0 C -50 -50 -100 0 -50 50 C 0 100 50 50 0 0\",\n\tline: \"M 0 0 L 200 0\",\n\tloop: \"M 0 0 C 50 -80 100 0 50 80 C 0 160 -50 80 0 0\"\n};\nfunction resolvePresetId(options) {\n\tif (options.mediaType) return 1;\n\tif (options.attributeName) return 0;\n\tconst cls = options.class ?? \"entr\";\n\tif (cls === \"emph\" && options.emphasisType) return EMPH_PRESET_IDS[options.emphasisType] ?? 0;\n\tif (options.pathType) return PATH_PRESET_IDS[options.pathType] ?? 200;\n\tconst type = options.type ?? \"appear\";\n\treturn (cls === \"exit\" ? EXIT_PRESET_IDS : ENTR_PRESET_IDS)[type] ?? 0;\n}\nfunction resolvePresetClass(options) {\n\tif (options.mediaType) return \"mediacall\";\n\tif (options.attributeName) return \"entr\";\n\tif (options.pathType) return \"emph\";\n\treturn options.class ?? \"entr\";\n}\nfunction resolvePresetSubtype(options) {\n\tif (options.direction) return DIRECTION_SUBTYPES[options.direction] ?? 0;\n\treturn 0;\n}\nfunction buildTargetElement(spid, options) {\n\tif (options?.inkTargetShapeId !== void 0) return element(\"p:tgtEl\", void 0, [`<p:inkTgt spid=\"${options.inkTargetShapeId}\"/>`]);\n\tif (options?.soundTarget !== void 0) return element(\"p:tgtEl\", void 0, [`<p:sndTgt r:id=\"${options.soundTarget}\"/>`]);\n\tconst spTgtChildren = [];\n\tif (options?.charRange) spTgtChildren.push(element(\"p:txEl\", void 0, [`<p:charRg st=\"${options.charRange[0]}\" end=\"${options.charRange[1]}\"/>`]));\n\telse if (options?.paragraphRange) spTgtChildren.push(element(\"p:txEl\", void 0, [`<p:pRg st=\"${options.paragraphRange[0]}\" end=\"${options.paragraphRange[1]}\"/>`]));\n\telse if (options?.subShapeId !== void 0) spTgtChildren.push(`<p:subSp spid=\"${options.subShapeId}\"/>`);\n\telse if (options?.graphicElementType !== void 0) spTgtChildren.push(element(\"p:graphicEl\", void 0, [`<a:graphicEl type=\"${options.graphicElementType}\"/>`]));\n\telse if (options?.oleChartElementType !== void 0) {\n\t\tconst oleChartAttrs = { type: options.oleChartElementType };\n\t\tif (options.oleChartElementLevel !== void 0) oleChartAttrs.lvl = options.oleChartElementLevel;\n\t\tspTgtChildren.push(element(\"p:oleChartEl\", oleChartAttrs));\n\t}\n\treturn element(\"p:tgtEl\", void 0, [element(\"p:spTgt\", { spid }, spTgtChildren.length > 0 ? spTgtChildren : void 0)]);\n}\nfunction buildEntrOrExitEffects(options, spid, ids) {\n\tconst children = [];\n\tconst cls = options.class ?? \"entr\";\n\tconst visibility = cls === \"exit\" ? \"hidden\" : \"visible\";\n\tchildren.push(element(\"p:set\", void 0, [element(\"p:cBhvr\", void 0, [\n\t\telement(\"p:cTn\", {\n\t\t\tid: ids.set,\n\t\t\tdur: \"1\",\n\t\t\tfill: \"hold\"\n\t\t}, [element(\"p:stCondLst\", void 0, [`<p:cond delay=\"0\"/>`])]),\n\t\telement(\"p:tgtEl\", void 0, [element(\"p:spTgt\", { spid })]),\n\t\telement(\"p:attrNameLst\", void 0, [`<p:attrName>style.visibility</p:attrName>`])\n\t]), element(\"p:to\", void 0, [`<p:strVal val=\"${visibility}\"/>`])]));\n\tif (options.type !== \"appear\") {\n\t\tconst filterBase = FILTER_MAP[options.type ?? \"fade\"];\n\t\tconst dirMap = DIRECTION_FILTER[options.type ?? \"fade\"];\n\t\tconst dirFilter = options.direction && dirMap ? dirMap[options.direction] : void 0;\n\t\tlet filter = filterBase;\n\t\tif (options.type === \"wheel\") filter = \"wheel(4)\";\n\t\telse if (options.type === \"split\") filter = `split(${options.direction ?? \"horizontal\"})`;\n\t\telse if (dirFilter) filter = `${filterBase}(${dirFilter})`;\n\t\tconst animEffectAttrs = {\n\t\t\ttransition: cls === \"exit\" ? \"out\" : \"in\",\n\t\t\tfilter\n\t\t};\n\t\tif (options.propertyList) animEffectAttrs.prLst = options.propertyList;\n\t\tconst animEffectChildren = [element(\"p:cBhvr\", void 0, [element(\"p:cTn\", {\n\t\t\tid: ids.effect,\n\t\t\tdur: String(options.duration ?? 500),\n\t\t\tfill: \"hold\"\n\t\t}), element(\"p:tgtEl\", void 0, [element(\"p:spTgt\", { spid })])])];\n\t\tif (options.effectProgress) animEffectChildren.push(element(\"p:progress\", void 0, [buildVariantValue(options.effectProgress)]));\n\t\tchildren.push(element(\"p:animEffect\", animEffectAttrs, animEffectChildren));\n\t}\n\treturn children;\n}\nfunction buildEmphasisEffects(options, spid, ids) {\n\tconst emphType = options.emphasisType ?? \"growShrink\";\n\tconst children = [];\n\tconst dur = String(options.duration ?? 500);\n\tconst tgtEl = element(\"p:tgtEl\", void 0, [element(\"p:spTgt\", { spid })]);\n\tswitch (emphType) {\n\t\tcase \"growShrink\": {\n\t\t\tconst animScaleAttrs = {};\n\t\t\tif (options.zoomContents !== void 0) animScaleAttrs.zoomContents = options.zoomContents ? 1 : 0;\n\t\t\tchildren.push(element(\"p:animScale\", animScaleAttrs, [element(\"p:cBhvr\", void 0, [element(\"p:cTn\", {\n\t\t\t\tid: ids.effect,\n\t\t\t\tdur,\n\t\t\t\tfill: \"hold\",\n\t\t\t\t...options.autoReverse ? { autoRev: 1 } : {}\n\t\t\t}, [element(\"p:stCondLst\", void 0, [`<p:cond delay=\"0\"/>`])]), tgtEl]), `<p:by x=\"150000\" y=\"150000\"/>`]));\n\t\t\tbreak;\n\t\t}\n\t\tcase \"spin\":\n\t\t\tchildren.push(element(\"p:animRot\", { by: \"3600000\" }, [element(\"p:cBhvr\", void 0, [element(\"p:cTn\", {\n\t\t\t\tid: ids.effect,\n\t\t\t\tdur,\n\t\t\t\tfill: \"hold\"\n\t\t\t}, [element(\"p:stCondLst\", void 0, [`<p:cond delay=\"0\"/>`])]), tgtEl])]));\n\t\t\tbreak;\n\t\tcase \"colorChange\": {\n\t\t\tconst color = options.color ?? \"FF0000\";\n\t\t\tconst animClrChildren = [element(\"p:cBhvr\", void 0, [element(\"p:cTn\", {\n\t\t\t\tid: ids.effect,\n\t\t\t\tdur,\n\t\t\t\tfill: \"hold\"\n\t\t\t}, [element(\"p:stCondLst\", void 0, [`<p:cond delay=\"0\"/>`])]), tgtEl])];\n\t\t\tif (options.colorByRgb) animClrChildren.push(element(\"p:by\", void 0, [`<p:rgb r=\"${options.colorByRgb.r}\" g=\"${options.colorByRgb.g}\" b=\"${options.colorByRgb.b}\"/>`]));\n\t\t\telse if (options.colorByHsl) animClrChildren.push(element(\"p:by\", void 0, [`<p:hsl h=\"${options.colorByHsl.h}\" s=\"${options.colorByHsl.s}\" l=\"${options.colorByHsl.l}\"/>`]));\n\t\t\tif (options.colorFrom) animClrChildren.push(element(\"p:from\", void 0, [`<a:srgbClr val=\"${options.colorFrom}\"/>`]));\n\t\t\tanimClrChildren.push(element(\"p:to\", void 0, [`<a:srgbClr val=\"${options.colorTo ?? color}\"/>`]));\n\t\t\tchildren.push(element(\"p:animClr\", void 0, animClrChildren));\n\t\t\tbreak;\n\t\t}\n\t\tcase \"transparency\":\n\t\t\tchildren.push(element(\"p:anim\", {\n\t\t\t\tcalcmode: \"lin\",\n\t\t\t\tvalueType: \"num\",\n\t\t\t\tfrom: \"0\",\n\t\t\t\tto: \"1\"\n\t\t\t}, [element(\"p:cBhvr\", void 0, [\n\t\t\t\telement(\"p:cTn\", {\n\t\t\t\t\tid: ids.effect,\n\t\t\t\t\tdur,\n\t\t\t\t\tfill: \"hold\"\n\t\t\t\t}),\n\t\t\t\ttgtEl,\n\t\t\t\telement(\"p:attrNameLst\", void 0, [`<p:attrName>style.opacity</p:attrName>`])\n\t\t\t])]));\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tchildren.push(element(\"p:animEffect\", {\n\t\t\t\ttransition: \"in\",\n\t\t\t\tfilter: emphType\n\t\t\t}, [element(\"p:cBhvr\", void 0, [element(\"p:cTn\", {\n\t\t\t\tid: ids.effect,\n\t\t\t\tdur,\n\t\t\t\tfill: \"hold\"\n\t\t\t}), tgtEl])]));\n\t\t\tbreak;\n\t}\n\treturn children;\n}\nfunction buildPathEffects(options, spid, ids) {\n\tconst pathStr = options.path ?? PATH_STRINGS[options.pathType ?? \"customPath\"] ?? \"\";\n\tconst dur = String(options.duration ?? 1e3);\n\tconst animMotionAttrs = {\n\t\torigin: \"layout\",\n\t\tpath: pathStr\n\t};\n\tif (options.pointsTypes) animMotionAttrs.ptsTypes = options.pointsTypes;\n\tif (options.pathEditMode) animMotionAttrs.pathEditMode = options.pathEditMode;\n\tif (options.rotationAngle !== void 0) animMotionAttrs.rAng = String(options.rotationAngle);\n\tconst animMotionChildren = [element(\"p:cBhvr\", void 0, [element(\"p:cTn\", {\n\t\tid: ids.effect,\n\t\tdur,\n\t\tfill: \"hold\"\n\t}, [element(\"p:stCondLst\", void 0, [`<p:cond delay=\"0\"/>`])]), buildTargetElement(spid, options)])];\n\tif (options.motionFrom) animMotionChildren.push(`<p:from x=\"${options.motionFrom.x}\" y=\"${options.motionFrom.y}\"/>`);\n\tif (options.motionRotationCenter) animMotionChildren.push(`<p:rCtr x=\"${options.motionRotationCenter.x}\" y=\"${options.motionRotationCenter.y}\"/>`);\n\treturn [element(\"p:animMotion\", animMotionAttrs, animMotionChildren)];\n}\n/**\n* Build p:cmd for media play/pause/stop (goes inside the animation sequence).\n* PowerPoint uses p:cmd type=\"call\" cmd=\"playFrom(0.0)\" for video play.\n*/\nfunction buildMediaPlayCommand(options, spid, ids) {\n\treturn element(\"p:cmd\", {\n\t\ttype: \"call\",\n\t\tcmd: options.fullScreen ? \"playFrom(0.0,1.0)\" : \"playFrom(0.0)\"\n\t}, [element(\"p:cBhvr\", void 0, [element(\"p:cTn\", {\n\t\tid: ids.cmd,\n\t\tdur: String(options.duration ?? 1e4),\n\t\tfill: \"hold\"\n\t}), buildTargetElement(spid)])]);\n}\n/**\n* Build generic p:cmd with configurable type (call/evt/verb).\n*/\nfunction buildCommand(options, spid, ids) {\n\treturn element(\"p:cmd\", {\n\t\ttype: options.commandType ?? \"call\",\n\t\tcmd: options.command ?? \"\"\n\t}, [element(\"p:cBhvr\", void 0, [element(\"p:cTn\", {\n\t\tid: ids.cmd,\n\t\tdur: String(options.duration ?? 1e3),\n\t\tfill: \"hold\"\n\t}), buildTargetElement(spid)])]);\n}\n/**\n* Build p:set for an instant property change (setBehavior).\n*/\nfunction buildSetBehavior(setOptions, spid, ids) {\n\tconst toValName = setOptions.toType === \"number\" ? \"p:numVal\" : \"p:strVal\";\n\treturn element(\"p:set\", void 0, [element(\"p:cBhvr\", void 0, [\n\t\telement(\"p:cTn\", {\n\t\t\tid: ids.set,\n\t\t\tdur: \"1\",\n\t\t\tfill: \"hold\"\n\t\t}, [element(\"p:stCondLst\", void 0, [`<p:cond delay=\"0\"/>`])]),\n\t\tbuildTargetElement(spid),\n\t\telement(\"p:attrNameLst\", void 0, [`<p:attrName>${escapeXml(setOptions.attributeName)}</p:attrName>`])\n\t]), element(\"p:to\", void 0, [`<${toValName} val=\"${setOptions.toValue}\"/>`])]);\n}\n/**\n* Build p:iterate for text-level animation iteration.\n*/\nfunction buildIterate(iterate) {\n\tconst attrs = {};\n\tif (iterate.type) attrs.type = iterate.type;\n\tif (iterate.backwards) attrs.backwards = 1;\n\tconst iterChildren = [];\n\tif (iterate.iteratePercentage !== void 0) iterChildren.push(`<p:tmPct val=\"${iterate.iteratePercentage}\"/>`);\n\telse if (iterate.interval !== void 0) iterChildren.push(`<p:tmAbs val=\"${iterate.interval}\"/>`);\n\treturn element(\"p:iterate\", attrs, iterChildren.length > 0 ? iterChildren : void 0);\n}\n/**\n* Build p:animVariant value child (boolVal|intVal|fltVal|strVal|clrVal).\n*/\nfunction buildVariantValue(variant) {\n\tif (variant.bool !== void 0) return `<p:boolVal val=\"${variant.bool ? 1 : 0}\"/>`;\n\tif (variant.int !== void 0) return `<p:intVal val=\"${variant.int}\"/>`;\n\tif (variant.float !== void 0) return `<p:fltVal val=\"${variant.float}\"/>`;\n\tif (variant.color !== void 0) return element(\"p:clrVal\", void 0, [`<a:srgbClr val=\"${variant.color}\"/>`]);\n\treturn `<p:strVal val=\"${variant.string ?? \"\"}\"/>`;\n}\n/**\n* Build a condition element (p:cond) from EndConditionOptions.\n*/\nfunction buildCondition(cond) {\n\tconst attrs = {};\n\tif (cond.delay !== void 0) attrs.delay = cond.delay;\n\tif (cond.event !== void 0) attrs.evt = cond.event;\n\tconst children = [];\n\tif (cond.timeNodeId !== void 0) children.push(`<p:tn val=\"${cond.timeNodeId}\"/>`);\n\telse if (cond.runtimeNode !== void 0) children.push(`<p:rtn val=\"${cond.runtimeNode}\"/>`);\n\treturn element(\"p:cond\", attrs, children.length > 0 ? children : void 0);\n}\n/**\n* Build p:video/p:audio with p:cMediaNode (goes as sibling of p:seq).\n* This is the media state controller, separate from the play command.\n*/\nfunction buildMediaStateNode(options, spid, ids) {\n\tconst isVideo = options.mediaType === \"playVideo\";\n\tconst elementName = isVideo ? \"p:video\" : \"p:audio\";\n\tconst mediaAttrs = {};\n\tif (!isVideo && options.isNarration) mediaAttrs.isNarration = true;\n\tif (isVideo && options.fullScreen) mediaAttrs.fullScrn = true;\n\tconst cMediaNodeAttrs = {};\n\tif (options.volume !== void 0) cMediaNodeAttrs.vol = options.volume * 1e3;\n\telse cMediaNodeAttrs.vol = 8e4;\n\tif (options.mute) cMediaNodeAttrs.mute = 1;\n\tif (options.numberOfSlides !== void 0) cMediaNodeAttrs.numSld = options.numberOfSlides;\n\tif (options.showWhenStopped !== void 0) cMediaNodeAttrs.showWhenStopped = options.showWhenStopped ? 1 : 0;\n\treturn element(elementName, mediaAttrs, [element(\"p:cMediaNode\", cMediaNodeAttrs, [element(\"p:cTn\", {\n\t\tid: ids.mediaCtn,\n\t\tfill: \"hold\",\n\t\tdisplay: \"0\"\n\t}, [element(\"p:stCondLst\", void 0, [`<p:cond delay=\"indefinite\"/>`])]), buildTargetElement(spid)])]);\n}\nfunction buildPropertyAnimation(options, spid, ids) {\n\tconst attrs = {};\n\tif (options.calcMode) attrs.calcmode = options.calcMode;\n\tif (options.valueType) attrs.valueType = options.valueType;\n\tif (options.from !== void 0) attrs.from = options.from;\n\tif (options.to !== void 0) attrs.to = options.to;\n\tif (options.animBy !== void 0) attrs.by = options.animBy;\n\tif (options.formula !== void 0) attrs.fmla = options.formula;\n\tif (options.colorSpace !== void 0) attrs.clrSpc = options.colorSpace;\n\tconst cBhvrChildren = [element(\"p:cTn\", {\n\t\tid: ids.cBhvr,\n\t\tdur: String(options.duration ?? 500),\n\t\tfill: \"hold\"\n\t}), buildTargetElement(spid, options)];\n\tif (options.attributeName) cBhvrChildren.push(element(\"p:attrNameLst\", void 0, [`<p:attrName>${escapeXml(options.attributeName)}</p:attrName>`]));\n\tconst cBhvrAttrs = {};\n\tif (options.additive !== void 0) cBhvrAttrs.additive = options.additive;\n\tif (options.accumulate !== void 0) cBhvrAttrs.accumulate = options.accumulate;\n\tif (options.transformType !== void 0) cBhvrAttrs.xfrmType = options.transformType;\n\tif (options.runtimeContext !== void 0) cBhvrAttrs.rctx = options.runtimeContext;\n\tif (options.override !== void 0) cBhvrAttrs.override = options.override;\n\tconst animChildren = [element(\"p:cBhvr\", cBhvrAttrs, cBhvrChildren)];\n\tif (options.from !== void 0 || options.to !== void 0 || options.colorFrom || options.colorTo) {\n\t\tconst tavList = [];\n\t\tconst buildVariantChild = (val, isColor) => {\n\t\t\tif (isColor) return `<p:clrVal><a:srgbClr val=\"${val}\"/></p:clrVal>`;\n\t\t\tif (options.variantInt !== void 0) return `<p:intVal val=\"${Number(val)}\"/>`;\n\t\t\tif (options.variantFloat !== void 0) return `<p:fltVal val=\"${Number(val)}\"/>`;\n\t\t\tif (options.variantBool !== void 0) return `<p:boolVal val=\"${val === \"true\" ? 1 : 0}\"/>`;\n\t\t\treturn `<p:strVal val=\"${val}\"/>`;\n\t\t};\n\t\tif (options.colorFrom) tavList.push(element(\"p:tav\", { tm: \"0\" }, [element(\"p:val\", void 0, [buildVariantChild(options.colorFrom, true)])]));\n\t\telse if (options.from !== void 0) tavList.push(element(\"p:tav\", { tm: \"0\" }, [element(\"p:val\", void 0, [buildVariantChild(options.from)])]));\n\t\tif (options.colorTo) tavList.push(element(\"p:tav\", { tm: \"100000\" }, [element(\"p:val\", void 0, [buildVariantChild(options.colorTo, true)])]));\n\t\telse if (options.to !== void 0) tavList.push(element(\"p:tav\", { tm: \"100000\" }, [element(\"p:val\", void 0, [buildVariantChild(options.to)])]));\n\t\tif (tavList.length > 0) animChildren.push(element(\"p:tavLst\", void 0, tavList));\n\t}\n\treturn element(\"p:anim\", attrs, animChildren);\n}\nfunction buildBuildList(builds, nextId) {\n\tconst bldChildren = [];\n\tfor (const bld of builds) {\n\t\tconst bldAttrs = {\n\t\t\tspid: bld.spid,\n\t\t\tgrpId: bld.grpId\n\t\t};\n\t\tif (bld.uiExpand) bldAttrs.uiExpand = 1;\n\t\tlet elementName;\n\t\tconst bldChildrenInner = [];\n\t\tswitch (bld.type) {\n\t\t\tcase \"paragraph\":\n\t\t\t\telementName = \"p:bldP\";\n\t\t\t\tif (bld.build) bldAttrs.build = bld.build;\n\t\t\t\tif (bld.bldLvl !== void 0) bldAttrs.bldLvl = bld.bldLvl;\n\t\t\t\tif (bld.animBg !== void 0) bldAttrs.animBg = bld.animBg ? 1 : 0;\n\t\t\t\tif (bld.autoUpdateAnimBg !== void 0) bldAttrs.autoUpdateAnimBg = bld.autoUpdateAnimBg ? 1 : 0;\n\t\t\t\tif (bld.rev) bldAttrs.rev = 1;\n\t\t\t\tif (bld.advAuto !== void 0) bldAttrs.advAuto = bld.advAuto;\n\t\t\t\tif (bld.templates && bld.templates.length > 0) {\n\t\t\t\t\tconst tmplChildren = bld.templates.map((tmpl) => {\n\t\t\t\t\t\tconst tmplAttrs = {};\n\t\t\t\t\t\tif (tmpl.lvl !== void 0) tmplAttrs.lvl = tmpl.lvl;\n\t\t\t\t\t\treturn element(\"p:tmpl\", tmplAttrs, [element(\"p:tnLst\", void 0, tmpl.children.map(() => {\n\t\t\t\t\t\t\treturn element(\"p:par\", void 0, [`<p:cTn id=\"${nextId()}\"/>`]);\n\t\t\t\t\t\t}))]);\n\t\t\t\t\t});\n\t\t\t\t\tbldChildrenInner.push(element(\"p:tmplLst\", void 0, tmplChildren));\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"diagram\":\n\t\t\t\telementName = \"p:bldDgm\";\n\t\t\t\tif (bld.diagramBuild) bldAttrs.bld = bld.diagramBuild;\n\t\t\t\tbreak;\n\t\t\tcase \"oleChart\":\n\t\t\t\telementName = \"p:bldOleChart\";\n\t\t\t\tif (bld.oleChartBuild) bldAttrs.bld = bld.oleChartBuild;\n\t\t\t\tif (bld.oleChartAnimBg !== void 0) bldAttrs.animBg = bld.oleChartAnimBg ? 1 : 0;\n\t\t\t\tbreak;\n\t\t\tcase \"graphic\":\n\t\t\t\telementName = \"p:bldGraphic\";\n\t\t\t\tif (bld.graphicBuildAsOne) bldChildrenInner.push(`<p:bldAsOne/>`);\n\t\t\t\telse bldChildrenInner.push(`<p:bldSub/>`);\n\t\t\t\tbreak;\n\t\t}\n\t\tbldChildren.push(element(elementName, bldAttrs, bldChildrenInner.length > 0 ? bldChildrenInner : void 0));\n\t}\n\treturn element(\"p:bldLst\", void 0, bldChildren);\n}\n/**\n* p:timing — Slide timing for shape animations.\n*\n* Pure collector — no XmlComponent inheritance.\n* Collects string children and serializes via `toXml()`.\n*/\nvar SlideTiming = class {\n\tparts = [];\n\tconstructor(entries) {\n\t\tif (entries.length === 0) return;\n\t\tlet id = 1;\n\t\tconst rootCtnId = id++;\n\t\tconst seqCtnId = id++;\n\t\tconst builds = entries[0]?.options.builds;\n\t\tconst previousAction = entries[0]?.options.previousAction;\n\t\tconst animationNodes = [];\n\t\tconst mediaStateNodes = [];\n\t\tlet clickGroupDelay = 0;\n\t\tfor (const [i, entry] of entries.entries()) {\n\t\t\tconst { spid, options } = entry;\n\t\t\tconst nodeType = options.trigger === \"withPrevious\" ? \"withEffect\" : options.trigger === \"afterPrevious\" ? \"afterEffect\" : \"clickEffect\";\n\t\t\tif (options.trigger === \"afterPrevious\" && i > 0) clickGroupDelay += (options.duration ?? 500) + (options.delay ?? 0);\n\t\t\tif (options.trigger === \"onClick\" || options.trigger === void 0) clickGroupDelay = 0;\n\t\t\tconst groupCtnId = id++;\n\t\t\tconst effectCtnId = id++;\n\t\t\tconst setCtnId = id++;\n\t\t\tconst effectCtnId2 = id++;\n\t\t\tconst presetId = resolvePresetId(options);\n\t\t\tconst presetClass = resolvePresetClass(options);\n\t\t\tconst presetSubtype = resolvePresetSubtype(options);\n\t\t\tlet effectChildren;\n\t\t\tif (options.commandType) effectChildren = [buildCommand(options, spid, { cmd: effectCtnId2 })];\n\t\t\telse if (options.mediaType) {\n\t\t\t\teffectChildren = [buildMediaPlayCommand(options, spid, { cmd: effectCtnId2 })];\n\t\t\t\tconst mediaStateId = id++;\n\t\t\t\tmediaStateNodes.push(buildMediaStateNode(options, spid, { mediaCtn: mediaStateId }));\n\t\t\t} else if (options.attributeName) effectChildren = [buildPropertyAnimation(options, spid, { cBhvr: effectCtnId2 })];\n\t\t\telse if (options.pathType) effectChildren = buildPathEffects(options, spid, {\n\t\t\t\tset: setCtnId,\n\t\t\t\teffect: effectCtnId2\n\t\t\t});\n\t\t\telse if (presetClass === \"emph\") effectChildren = buildEmphasisEffects(options, spid, {\n\t\t\t\tset: setCtnId,\n\t\t\t\teffect: effectCtnId2\n\t\t\t});\n\t\t\telse effectChildren = buildEntrOrExitEffects(options, spid, {\n\t\t\t\tset: setCtnId,\n\t\t\t\teffect: effectCtnId2\n\t\t\t});\n\t\t\tif (options.setBehavior) {\n\t\t\t\tconst setBehId = id++;\n\t\t\t\teffectChildren = [buildSetBehavior(options.setBehavior, spid, { set: setBehId }), ...effectChildren];\n\t\t\t}\n\t\t\tconst cTnAttrs = {\n\t\t\t\tid: effectCtnId,\n\t\t\t\tfill: \"hold\",\n\t\t\t\tnodeType\n\t\t\t};\n\t\t\tif (!options.mediaType && !options.attributeName) {\n\t\t\t\tcTnAttrs.presetID = presetId;\n\t\t\t\tcTnAttrs.presetClass = presetClass;\n\t\t\t\tcTnAttrs.presetSubtype = presetSubtype;\n\t\t\t}\n\t\t\tif (options.mediaType) {\n\t\t\t\tcTnAttrs.presetID = presetId;\n\t\t\t\tcTnAttrs.presetClass = presetClass;\n\t\t\t\tcTnAttrs.presetSubtype = presetSubtype;\n\t\t\t}\n\t\t\tif (options.speed !== void 0) cTnAttrs.spd = String(options.speed);\n\t\t\tif (options.repeatCount !== void 0) cTnAttrs.repeatCount = String(options.repeatCount);\n\t\t\tif (options.autoReverse) cTnAttrs.autoRev = 1;\n\t\t\tif (options.repeatDuration !== void 0) cTnAttrs.repeatDur = options.repeatDuration;\n\t\t\tif (options.acceleration !== void 0) cTnAttrs.accel = options.acceleration;\n\t\t\tif (options.deceleration !== void 0) cTnAttrs.decel = options.deceleration;\n\t\t\tif (options.restart !== void 0) cTnAttrs.restart = options.restart;\n\t\t\tif (options.syncBehavior !== void 0) cTnAttrs.syncBehavior = options.syncBehavior;\n\t\t\tif (options.timeFilter !== void 0) cTnAttrs.tmFilter = options.timeFilter;\n\t\t\tif (options.eventFilter !== void 0) cTnAttrs.evtFilter = options.eventFilter;\n\t\t\tif (options.display !== void 0) cTnAttrs.display = options.display ? 1 : 0;\n\t\t\tif (options.masterRelation !== void 0) cTnAttrs.masterRel = options.masterRelation;\n\t\t\tif (options.buildLevel !== void 0) cTnAttrs.bldLvl = options.buildLevel;\n\t\t\tif (options.groupId !== void 0) cTnAttrs.grpId = options.groupId;\n\t\t\tif (options.afterEffect !== void 0) cTnAttrs.afterEffect = options.afterEffect ? 1 : 0;\n\t\t\tif (options.nodePlaceholder !== void 0) cTnAttrs.nodePh = options.nodePlaceholder ? 1 : 0;\n\t\t\tif (options.advanceAfterTime !== void 0) cTnAttrs.advAuto = options.advanceAfterTime;\n\t\t\tif (options.animateBackground !== void 0) cTnAttrs.animBg = options.animateBackground ? 1 : 0;\n\t\t\tif (options.autoUpdateAnimationBackground !== void 0) cTnAttrs.autoUpdateAnimBg = options.autoUpdateAnimationBackground ? 1 : 0;\n\t\t\tconst effectCtnChildren = [element(\"p:stCondLst\", void 0, [element(\"p:cond\", { delay: String(options.delay ?? 0) })])];\n\t\t\tif (options.iterate) effectCtnChildren.push(buildIterate(options.iterate));\n\t\t\tif (options.endConditions && options.endConditions.length > 0) effectCtnChildren.push(element(\"p:endCondLst\", void 0, options.endConditions.map(buildCondition)));\n\t\t\tif (options.endSyncCondition) {\n\t\t\t\tconst syncAttrs = {};\n\t\t\t\tif (options.endSyncCondition.delay !== void 0) syncAttrs.delay = options.endSyncCondition.delay;\n\t\t\t\tif (options.endSyncCondition.event !== void 0) syncAttrs.evt = options.endSyncCondition.event;\n\t\t\t\tconst syncChildren = [];\n\t\t\t\tif (options.endSyncCondition.timeNodeId !== void 0) syncChildren.push(`<p:tn val=\"${options.endSyncCondition.timeNodeId}\"/>`);\n\t\t\t\telse if (options.endSyncCondition.runtimeNode !== void 0) syncChildren.push(`<p:rtn val=\"${options.endSyncCondition.runtimeNode}\"/>`);\n\t\t\t\teffectCtnChildren.push(element(\"p:endSync\", syncAttrs, syncChildren.length > 0 ? syncChildren : void 0));\n\t\t\t}\n\t\t\tconst childTnListChildren = options.exclusiveMode ? [element(\"p:excl\", void 0, [element(\"p:cTn\", { id: id++ }, [element(\"p:childTnLst\", void 0, effectChildren)])])] : effectChildren;\n\t\t\teffectCtnChildren.push(element(\"p:childTnLst\", void 0, childTnListChildren));\n\t\t\tif (options.subTimeNodes && options.subTimeNodes.length > 0) effectCtnChildren.push(element(\"p:subTnLst\", void 0, options.subTimeNodes.map((subOpts) => {\n\t\t\t\treturn element(\"p:par\", void 0, [element(\"p:cTn\", {\n\t\t\t\t\tid: id++,\n\t\t\t\t\tdur: String(subOpts.duration ?? 0)\n\t\t\t\t}, [element(\"p:stCondLst\", void 0, [element(\"p:cond\", { delay: String(subOpts.delay ?? 0) })])])]);\n\t\t\t})));\n\t\t\tconst innerPar = element(\"p:par\", void 0, [element(\"p:cTn\", cTnAttrs, effectCtnChildren)]);\n\t\t\tconst outerPar = element(\"p:par\", void 0, [element(\"p:cTn\", {\n\t\t\t\tid: groupCtnId,\n\t\t\t\tfill: \"hold\"\n\t\t\t}, [element(\"p:stCondLst\", void 0, [`<p:cond delay=\"0\"/>`]), element(\"p:childTnLst\", void 0, [innerPar])])]);\n\t\t\tanimationNodes.push(outerPar);\n\t\t}\n\t\tconst seqAttrs = {\n\t\t\tconcurrent: 1,\n\t\t\tnextAc: \"seek\"\n\t\t};\n\t\tif (previousAction !== void 0) seqAttrs.prevAc = previousAction;\n\t\tthis.parts.push(element(\"p:tnLst\", void 0, [element(\"p:par\", void 0, [element(\"p:cTn\", {\n\t\t\tid: rootCtnId,\n\t\t\tdur: \"indefinite\",\n\t\t\trestart: \"never\",\n\t\t\tnodeType: \"tmRoot\"\n\t\t}, [element(\"p:childTnLst\", void 0, [element(\"p:seq\", seqAttrs, [\n\t\t\telement(\"p:cTn\", {\n\t\t\t\tid: seqCtnId,\n\t\t\t\tdur: \"indefinite\",\n\t\t\t\tnodeType: \"mainSeq\"\n\t\t\t}, [element(\"p:childTnLst\", void 0, animationNodes)]),\n\t\t\telement(\"p:prevCondLst\", void 0, [element(\"p:cond\", {\n\t\t\t\tevt: \"onPrev\",\n\t\t\t\tdelay: \"0\"\n\t\t\t}, [element(\"p:tgtEl\", void 0, [`<p:sldTgt/>`])])]),\n\t\t\telement(\"p:nextCondLst\", void 0, [element(\"p:cond\", {\n\t\t\t\tevt: \"onNext\",\n\t\t\t\tdelay: \"0\"\n\t\t\t}, [element(\"p:tgtEl\", void 0, [`<p:sldTgt/>`])])])\n\t\t]), ...mediaStateNodes])])])]));\n\t\tif (builds) this.parts.push(buildBuildList(builds, () => id++));\n\t}\n\t/** Serialize to p:timing XML string. */\n\ttoXml() {\n\t\tif (this.parts.length === 0) return \"\";\n\t\tconst body = this.parts.join(\"\");\n\t\treturn body ? `<p:timing>${body}</p:timing>` : \"\";\n\t}\n};\n//#endregion\n//#region src/parts/descriptors/animation.ts\nconst ENTR_PRESET_TO_TYPE = /* @__PURE__ */ new Map();\nconst EXIT_PRESET_TO_TYPE = /* @__PURE__ */ new Map();\nconst EMPH_PRESET_TO_ID = /* @__PURE__ */ new Map();\nconst PATH_PRESET_TO_TYPE = /* @__PURE__ */ new Map();\nconst ENTR_IDS = {\n\tappear: 1,\n\tfade: 10,\n\tfly: 2,\n\twipe: 22,\n\tdissolve: 34,\n\tsplit: 21,\n\tblinds: 25,\n\tchecker: 26,\n\trandomBars: 24,\n\twheel: 27,\n\tzoom: 53,\n\tcover: 28,\n\tpush: 19,\n\tstrips: 23\n};\nconst EXIT_IDS = {\n\tappear: 53,\n\tfade: 59,\n\tfly: 51,\n\twipe: 72,\n\tdissolve: 84,\n\tsplit: 71,\n\tblinds: 75,\n\tchecker: 76,\n\trandomBars: 74,\n\twheel: 77,\n\tzoom: 60,\n\tcover: 78,\n\tpush: 69,\n\tstrips: 73\n};\nconst EMPH_IDS = {\n\tgrowShrink: 53,\n\tspin: 54,\n\tgrowWithTurn: 56,\n\tcolorChange: 29,\n\ttransparency: 57,\n\tboldFlash: 50,\n\twave: 55,\n\tpulse: 58\n};\nconst PATH_IDS = {\n\tcustomPath: 200,\n\tarc: 201,\n\tbounce: 202,\n\tcircle: 203,\n\tcurve: 204,\n\tfigureEight: 205,\n\tline: 206,\n\tloop: 207\n};\nfor (const [k, v] of Object.entries(ENTR_IDS)) ENTR_PRESET_TO_TYPE.set(v, k);\nfor (const [k, v] of Object.entries(EXIT_IDS)) EXIT_PRESET_TO_TYPE.set(v, k);\nfor (const [k, v] of Object.entries(EMPH_IDS)) EMPH_PRESET_TO_ID.set(v, k);\nfor (const [k, v] of Object.entries(PATH_IDS)) PATH_PRESET_TO_TYPE.set(v, k);\nconst SUBTYPE_TO_DIRECTION = /* @__PURE__ */ new Map();\nfor (const [k, v] of Object.entries({\n\tleft: 4,\n\tright: 8,\n\tup: 2,\n\tdown: 1,\n\thorizontal: 16,\n\tvertical: 32\n})) SUBTYPE_TO_DIRECTION.set(v, k);\n/**\n* Parse p:timing element and return a map of shape ID → AnimationOptions.\n*/\nfunction parseTiming(el) {\n\tconst result = /* @__PURE__ */ new Map();\n\tconst tnLst = findChild(el, \"p:tnLst\");\n\tif (!tnLst) return result;\n\tconst mainPar = findChild(tnLst, \"p:par\");\n\tif (!mainPar) return result;\n\tconst mainCTn = findChild(mainPar, \"p:cTn\");\n\tif (!mainCTn) return result;\n\tconst childTnLst = findChild(mainCTn, \"p:childTnLst\");\n\tif (!childTnLst) return result;\n\tconst seq = findChild(childTnLst, \"p:seq\");\n\tif (!seq) return result;\n\tconst seqCTn = findChild(seq, \"p:cTn\");\n\tconst seqChildTnLst = seqCTn ? findChild(seqCTn, \"p:childTnLst\") : void 0;\n\tif (!seqChildTnLst) return result;\n\tfor (const parEl of seqChildTnLst.elements ?? []) {\n\t\tif (parEl.name !== \"p:par\") continue;\n\t\tconst parCTn = findChild(parEl, \"p:cTn\");\n\t\tif (!parCTn) continue;\n\t\tconst parChildTnLst = findChild(parCTn, \"p:childTnLst\");\n\t\tif (!parChildTnLst) continue;\n\t\tfor (const effectEl of parChildTnLst.elements ?? []) {\n\t\t\tconst anim = parseAnimationEffect(effectEl);\n\t\t\tif (!anim) continue;\n\t\t\tconst shapeId = extractTargetShapeId(effectEl);\n\t\t\tif (shapeId !== void 0) result.set(shapeId, anim);\n\t\t}\n\t}\n\treturn result;\n}\nfunction parseAnimationEffect(el) {\n\tconst opts = {};\n\tconst cTn = findChild(el, \"p:cTn\") ?? el;\n\tconst nodeType = attr(cTn, \"nodeType\");\n\tif (nodeType === \"clickEffect\") opts.trigger = \"onClick\";\n\telse if (nodeType === \"withEffect\") opts.trigger = \"withPrevious\";\n\telse if (nodeType === \"afterEffect\") opts.trigger = \"afterPrevious\";\n\tconst presetClass = attr(cTn, \"presetClass\");\n\tif (presetClass) opts.class = presetClass;\n\tconst presetID = attrNum(cTn, \"presetID\");\n\tconst dur = attr(cTn, \"dur\");\n\tif (dur) {\n\t\tconst ms = parseDuration(dur);\n\t\tif (ms !== void 0) opts.duration = ms;\n\t}\n\tconst stCondLst = findChild(cTn, \"p:stCondLst\");\n\tif (stCondLst) {\n\t\tconst cond = findChild(stCondLst, \"p:cond\");\n\t\tif (cond) {\n\t\t\tconst delay = attr(cond, \"delay\");\n\t\t\tif (delay) {\n\t\t\t\tconst ms = parseDuration(delay);\n\t\t\t\tif (ms !== void 0) opts.delay = ms;\n\t\t\t}\n\t\t}\n\t}\n\tconst presetSubtype = attrNum(cTn, \"presetSubtype\");\n\tif (presetSubtype !== void 0) {\n\t\tconst dir = SUBTYPE_TO_DIRECTION.get(presetSubtype);\n\t\tif (dir) opts.direction = dir;\n\t}\n\tif (presetID !== void 0) {\n\t\tconst cls = presetClass ?? \"entr\";\n\t\tif (cls === \"entr\") {\n\t\t\tconst type = ENTR_PRESET_TO_TYPE.get(presetID);\n\t\t\tif (type) opts.type = type;\n\t\t} else if (cls === \"exit\") {\n\t\t\tconst type = EXIT_PRESET_TO_TYPE.get(presetID);\n\t\t\tif (type) opts.type = type;\n\t\t} else if (cls === \"emph\") {\n\t\t\tconst emphType = EMPH_PRESET_TO_ID.get(presetID);\n\t\t\tif (emphType) {\n\t\t\t\topts.emphasisType = emphType;\n\t\t\t\topts.type = \"appear\";\n\t\t\t}\n\t\t} else if (cls === \"mediacall\") {\n\t\t\topts.mediaType = \"play\";\n\t\t\topts.type = \"appear\";\n\t\t}\n\t}\n\tconst childTnLst = findChild(cTn, \"p:childTnLst\");\n\tif (childTnLst) for (const sub of childTnLst.elements ?? []) switch (sub.name) {\n\t\tcase \"p:animEffect\":\n\t\t\tif (opts.duration === void 0) {\n\t\t\t\tconst cBhvr = findChild(sub, \"p:cBhvr\");\n\t\t\t\tconst subCTn = cBhvr ? findChild(cBhvr, \"p:cTn\") : void 0;\n\t\t\t\tif (subCTn) {\n\t\t\t\t\tconst subDur = attr(subCTn, \"dur\");\n\t\t\t\t\tif (subDur) {\n\t\t\t\t\t\tconst ms = parseDuration(subDur);\n\t\t\t\t\t\tif (ms !== void 0) opts.duration = ms;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"p:anim\": {\n\t\t\tconst subCTn = findChild(sub, \"p:cTn\");\n\t\t\tif (subCTn) {\n\t\t\t\tconst attrName = findChild(subCTn, \"p:attrNameLst\");\n\t\t\t\tif (attrName) {\n\t\t\t\t\tconst name = findChild(attrName, \"p:attrName\");\n\t\t\t\t\tif (name) {\n\t\t\t\t\t\tconst text = name.elements?.[0]?.text;\n\t\t\t\t\t\tif (text) opts.attributeName = text;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst from = findChild(sub, \"p:cb\");\n\t\t\tif (from) {\n\t\t\t\tconst val = findChild(from, \"p:val\");\n\t\t\t\tif (val) {\n\t\t\t\t\tconst v = attr(val, \"val\");\n\t\t\t\t\tif (v) opts.from = v;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst toEl = findChild(sub, \"p:tavLst\");\n\t\t\tif (toEl) {\n\t\t\t\tconst tav = findChild(toEl, \"p:tav\");\n\t\t\t\tif (tav) {\n\t\t\t\t\tconst toVal = findChild(tav, \"p:val\");\n\t\t\t\t\tif (toVal) {\n\t\t\t\t\t\tconst v = attr(toVal, \"val\");\n\t\t\t\t\t\tif (v) opts.to = v;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tcase \"p:animMotion\": {\n\t\t\topts.pathType = \"customPath\";\n\t\t\tconst path = attr(sub, \"path\");\n\t\t\tif (path) opts.path = path;\n\t\t\tbreak;\n\t\t}\n\t\tcase \"p:animScale\":\n\t\t\topts.emphasisType = \"growShrink\";\n\t\t\treadSubDuration(sub, opts);\n\t\t\tbreak;\n\t\tcase \"p:animRot\":\n\t\t\topts.emphasisType = \"spin\";\n\t\t\treadSubDuration(sub, opts);\n\t\t\tbreak;\n\t\tcase \"p:animClr\":\n\t\t\topts.emphasisType = \"colorChange\";\n\t\t\treadSubDuration(sub, opts);\n\t\t\tbreak;\n\t\tcase \"p:cmd\":\n\t\t\tif (attr(sub, \"type\") === \"call\") opts.mediaType = \"play\";\n\t\t\tbreak;\n\t}\n\treturn Object.keys(opts).length > 0 ? opts : void 0;\n}\nfunction extractTargetShapeId(el) {\n\tconst cBhvr = findFirst(el, \"p:cBhvr\");\n\tif (!cBhvr) return void 0;\n\tconst tgtEl = findChild(cBhvr, \"p:tgtEl\");\n\tif (!tgtEl) return void 0;\n\tconst spTgt = findChild(tgtEl, \"p:spTgt\");\n\tif (!spTgt) return void 0;\n\treturn attrNum(spTgt, \"spid\");\n}\nfunction readSubDuration(sub, opts) {\n\tif (opts.duration !== void 0) return;\n\tconst cBhvr = findChild(sub, \"p:cBhvr\");\n\tconst subCTn = cBhvr ? findChild(cBhvr, \"p:cTn\") : void 0;\n\tif (subCTn) {\n\t\tconst subDur = attr(subCTn, \"dur\");\n\t\tif (subDur) {\n\t\t\tconst ms = parseDuration(subDur);\n\t\t\tif (ms !== void 0) opts.duration = ms;\n\t\t}\n\t}\n}\nfunction parseDuration(val) {\n\tif (val.startsWith(\"PT\")) {\n\t\tlet ms = 0;\n\t\tconst sMatch = val.match(/(\\d+\\.?\\d*)S/);\n\t\tif (sMatch) ms += Math.round(parseFloat(sMatch[1] ?? \"\") * 1e3);\n\t\tconst mMatch = val.match(/(\\d+\\.?\\d*)M/);\n\t\tif (mMatch) ms += Math.round(parseFloat(mMatch[1] ?? \"\") * 6e4);\n\t\tconst hMatch = val.match(/(\\d+\\.?\\d*)H/);\n\t\tif (hMatch) ms += Math.round(parseFloat(hMatch[1] ?? \"\") * 36e5);\n\t\treturn ms;\n\t}\n\tif (val === \"indefinite\") return void 0;\n\tconst num = parseInt(val, 10);\n\treturn isNaN(num) ? void 0 : num;\n}\nconst timingDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\tif (opts.entries.length === 0) return \"\";\n\t\treturn new SlideTiming(opts.entries).toXml();\n\t},\n\tparse(el, _ctx) {\n\t\tconst animMap = parseTiming(el);\n\t\tconst entries = [];\n\t\tfor (const [spid, options] of animMap) entries.push({\n\t\t\tspid,\n\t\t\toptions\n\t\t});\n\t\treturn { entries };\n\t}\n};\n//#endregion\n//#region src/parts/descriptors/text.ts\n/**\n* Text element descriptors for PPTX — TextRun (a:r), RunProperties (a:rPr), Paragraph (a:p).\n*\n* @module\n*/\nlet nextHyperlinkId = 1;\nconst runPropertiesDesc = {\n\tkind: \"custom\",\n\tstringify(opts, wctx) {\n\t\tconst ctx = wctx;\n\t\tlet hyperlinkKey;\n\t\tif (opts.hyperlink) {\n\t\t\thyperlinkKey = opts.hyperlink.referenceId ?? `hlink_${nextHyperlinkId++}`;\n\t\t\tctx.addHyperlink(hyperlinkKey, opts.hyperlink.url, opts.hyperlink.tooltip);\n\t\t}\n\t\tconst attrParts = [];\n\t\tif (opts.size) attrParts.push(`sz=\"${opts.size * 100}\"`);\n\t\tif (opts.bold !== void 0) attrParts.push(`b=\"${opts.bold ? 1 : 0}\"`);\n\t\tif (opts.italic !== void 0) attrParts.push(`i=\"${opts.italic ? 1 : 0}\"`);\n\t\tif (opts.underline) attrParts.push(`u=\"${xsdUnderlineStyle.to(opts.underline)}\"`);\n\t\tif (opts.lang) attrParts.push(`lang=\"${opts.lang}\"`);\n\t\tif (opts.strike) attrParts.push(`strike=\"${xsdStrikeStyle.to(opts.strike)}\"`);\n\t\tif (opts.baseline !== void 0) attrParts.push(`baseline=\"${opts.baseline}\"`);\n\t\tif (opts.capitalization) attrParts.push(`cap=\"${xsdTextCaps.to(opts.capitalization)}\"`);\n\t\tif (opts.spacing !== void 0) attrParts.push(`spc=\"${opts.spacing}\"`);\n\t\tif (opts.noProof !== void 0) attrParts.push(`noProof=\"${opts.noProof ? 1 : 0}\"`);\n\t\tif (opts.dirty !== void 0) attrParts.push(`dirty=\"${opts.dirty ? 1 : 0}\"`);\n\t\tif (opts.kumimoji !== void 0) attrParts.push(`kumimoji=\"${opts.kumimoji ? 1 : 0}\"`);\n\t\tif (opts.alternateLanguage) attrParts.push(`altLang=\"${opts.alternateLanguage}\"`);\n\t\tif (opts.normalizeHeight !== void 0) attrParts.push(`normalizeH=\"${opts.normalizeHeight ? 1 : 0}\"`);\n\t\tif (opts.bookmarkMark) attrParts.push(`bmk=\"${opts.bookmarkMark}\"`);\n\t\tif (opts.smartTagId) attrParts.push(`smtId=\"${opts.smartTagId}\"`);\n\t\tconst attrStr = attrParts.length ? \" \" + attrParts.join(\" \") : \"\";\n\t\tconst parts = [];\n\t\tif (opts.outline) {\n\t\t\tconst outlineXml = stringify$1(outlineDesc, {\n\t\t\t\twidth: DEFAULT_OUTLINE_WIDTH,\n\t\t\t\ttype: \"solidFill\",\n\t\t\t\tcolor: { value: \"000000\" }\n\t\t\t}, ctx);\n\t\t\tif (outlineXml) parts.push(outlineXml);\n\t\t}\n\t\tif (opts.fill !== void 0) {\n\t\t\tconst fillXml = stringify$1(fillDesc, opts.fill, ctx);\n\t\t\tif (fillXml) parts.push(fillXml);\n\t\t}\n\t\tif (opts.shadow) {\n\t\t\tconst effectXml = stringify$1(effectListDesc, { outerShadow: {\n\t\t\t\tblurRadius: DEFAULT_SHADOW_BLUR_RADIUS,\n\t\t\t\tdistance: DEFAULT_SHADOW_DISTANCE,\n\t\t\t\tdirection: DEFAULT_SHADOW_DIRECTION,\n\t\t\t\tcolor: {\n\t\t\t\t\tvalue: \"000000\",\n\t\t\t\t\ttransforms: { alpha: DEFAULT_SHADOW_ALPHA }\n\t\t\t\t}\n\t\t\t} }, ctx);\n\t\t\tif (effectXml) parts.push(effectXml);\n\t\t}\n\t\tif (opts.font) {\n\t\t\tparts.push(`<a:latin typeface=\"${opts.font}\"/>`);\n\t\t\tparts.push(`<a:ea typeface=\"${opts.font}\"/>`);\n\t\t}\n\t\tif (opts.hyperlink && hyperlinkKey) {\n\t\t\tconst hl = opts.hyperlink;\n\t\t\tconst hlAttrs = [`r:id=\"{hlink:${hyperlinkKey}}\"`];\n\t\t\tif (hl.tooltip) hlAttrs.push(`tooltip=\"${hl.tooltip}\"`);\n\t\t\tif (hl.action) hlAttrs.push(`action=\"${hl.action}\"`);\n\t\t\tif (hl.highlightClick) hlAttrs.push(\"highlightClick=\\\"1\\\"\");\n\t\t\tif (hl.endSound) hlAttrs.push(\"endSnd=\\\"1\\\"\");\n\t\t\tif (hl.invalidUrl) hlAttrs.push(\"invalidUrl=\\\"1\\\"\");\n\t\t\tparts.push(`<a:hlinkClick ${hlAttrs.join(\" \")}/>`);\n\t\t}\n\t\tif (opts.rightToLeft !== void 0) parts.push(`<a:rtl val=\"${opts.rightToLeft ? 1 : 0}\"/>`);\n\t\tif (attrParts.length === 0 && parts.length === 0) return \"\";\n\t\tif (parts.length === 0) return `<a:rPr ${attrStr}/>`;\n\t\treturn `<a:rPr${attrStr}>${parts.join(\"\")}</a:rPr>`;\n\t},\n\tparse(el, _ctx) {\n\t\tconst result = {};\n\t\tconst isOn = (raw) => String(raw) === \"1\";\n\t\tif (el.attributes) {\n\t\t\tif (el.attributes[\"sz\"] !== void 0) result.size = Number(el.attributes[\"sz\"]) / 100;\n\t\t\tif (el.attributes[\"b\"] !== void 0) result.bold = isOn(el.attributes[\"b\"]);\n\t\t\tif (el.attributes[\"i\"] !== void 0) result.italic = isOn(el.attributes[\"i\"]);\n\t\t\tif (el.attributes[\"u\"] !== void 0) result.underline = xsdUnderlineStyle.from(String(el.attributes[\"u\"]));\n\t\t\tif (el.attributes[\"lang\"] !== void 0) result.lang = String(el.attributes[\"lang\"]);\n\t\t\tif (el.attributes[\"strike\"] !== void 0) result.strike = xsdStrikeStyle.from(String(el.attributes[\"strike\"]));\n\t\t\tif (el.attributes[\"baseline\"] !== void 0) result.baseline = Number(el.attributes[\"baseline\"]);\n\t\t\tif (el.attributes[\"cap\"] !== void 0) result.capitalization = xsdTextCaps.from(String(el.attributes[\"cap\"]));\n\t\t\tif (el.attributes[\"spc\"] !== void 0) result.spacing = Number(el.attributes[\"spc\"]);\n\t\t\tif (el.attributes[\"noProof\"] !== void 0) result.noProof = isOn(el.attributes[\"noProof\"]);\n\t\t\tif (el.attributes[\"dirty\"] !== void 0) result.dirty = isOn(el.attributes[\"dirty\"]);\n\t\t\tif (el.attributes[\"kumimoji\"] !== void 0) result.kumimoji = isOn(el.attributes[\"kumimoji\"]);\n\t\t\tif (el.attributes[\"altLang\"] !== void 0) result.alternateLanguage = String(el.attributes[\"altLang\"]);\n\t\t\tif (el.attributes[\"normalizeH\"] !== void 0) result.normalizeHeight = isOn(el.attributes[\"normalizeH\"]);\n\t\t\tif (el.attributes[\"bmk\"] !== void 0) result.bookmarkMark = String(el.attributes[\"bmk\"]);\n\t\t\tif (el.attributes[\"smtId\"] !== void 0) result.smartTagId = String(el.attributes[\"smtId\"]);\n\t\t}\n\t\tif (findChild(el, \"a:ln\")) result.outline = true;\n\t\tif (findChild(el, \"a:solidFill\") || findChild(el, \"a:noFill\") || findChild(el, \"a:gradFill\") || findChild(el, \"a:pattFill\")) result.fill = parse$1(fillDesc, el, _ctx);\n\t\tif (findChild(el, \"a:effectLst\")) result.shadow = true;\n\t\tconst latin = findChild(el, \"a:latin\");\n\t\tif (latin?.attributes?.[\"typeface\"]) result.font = String(latin.attributes[\"typeface\"]);\n\t\tconst hlinkClick = findChild(el, \"a:hlinkClick\");\n\t\tif (hlinkClick) {\n\t\t\tconst hl = {};\n\t\t\tconst rId = hlinkClick.attributes?.[\"r:id\"];\n\t\t\tif (rId) {\n\t\t\t\tconst ridStr = String(rId);\n\t\t\t\tconst url = _ctx.resolveRelationship(ridStr);\n\t\t\t\tif (url) hl.url = url;\n\t\t\t\tconst m = ridStr.match(/^\\{hlink:(.+)\\}$/);\n\t\t\t\tif (m) hl.referenceId = m[1];\n\t\t\t}\n\t\t\tif (hlinkClick.attributes?.[\"tooltip\"]) hl.tooltip = String(hlinkClick.attributes[\"tooltip\"]);\n\t\t\tif (hlinkClick.attributes?.[\"action\"]) hl.action = String(hlinkClick.attributes[\"action\"]);\n\t\t\tif (hlinkClick.attributes?.[\"highlightClick\"]) hl.highlightClick = true;\n\t\t\tif (hlinkClick.attributes?.[\"endSnd\"]) hl.endSound = true;\n\t\t\tif (hlinkClick.attributes?.[\"invalidUrl\"]) hl.invalidUrl = true;\n\t\t\tresult.hyperlink = hl;\n\t\t}\n\t\tconst rtl = findChild(el, \"a:rtl\");\n\t\tif (rtl) result.rightToLeft = isOn(rtl.attributes?.[\"val\"]);\n\t\treturn result;\n\t}\n};\nconst textRunDesc = {\n\tkind: \"custom\",\n\tstringify(opts, ctx) {\n\t\tconst body = runPropertiesDesc.stringify(opts, ctx) ?? \"\";\n\t\tif (opts.text) return `<a:r>${body}<a:t>${escapeXml(opts.text)}</a:t></a:r>`;\n\t\treturn body ? `<a:r>${body}</a:r>` : \"<a:r/>\";\n\t},\n\tparse(el, _ctx) {\n\t\tconst result = {};\n\t\tconst rPr = findChild(el, \"a:rPr\");\n\t\tif (rPr) Object.assign(result, runPropertiesDesc.parse(rPr, _ctx));\n\t\tconst t = findChild(el, \"a:t\");\n\t\tif (t) result.text = (t.elements ?? []).filter((e) => e.type === \"text\").map((e) => e.text ?? \"\").join(\"\");\n\t\treturn result;\n\t}\n};\nfunction stringifyParagraphProperties(options) {\n\tconst children = [];\n\tconst attrs = [];\n\tif (options.alignment) attrs.push(`algn=\"${xsdTextAlign.to(options.alignment)}\"`);\n\tif (options.indentLevel !== void 0) attrs.push(`lvl=\"${options.indentLevel}\"`);\n\tif (options.marginIndent !== void 0) attrs.push(`marL=\"${options.marginIndent}\"`);\n\tif (options.marginRight !== void 0) attrs.push(`marR=\"${options.marginRight}\"`);\n\tif (options.defTabSize !== void 0) attrs.push(`defTabSz=\"${options.defTabSize}\"`);\n\tif (options.fontAlignment) attrs.push(`fontAlgn=\"${options.fontAlignment}\"`);\n\tif (options.lineSpacing !== void 0) children.push(`<a:lnSpc><a:spcPct val=\"${options.lineSpacing * 1e3}\"/></a:lnSpc>`);\n\tif (options.lineSpacingPoints !== void 0) children.push(`<a:lnSpc><a:spcPts val=\"${options.lineSpacingPoints * 100}\"/></a:lnSpc>`);\n\tif (options.marginBottom !== void 0 || options.marginTop !== void 0) children.push(`<a:spcAft><a:spcPts val=\"${options.marginBottom ?? 0}\"/></a:spcAft>`);\n\tif (options.marginTop !== void 0) children.push(`<a:spcBef><a:spcPts val=\"${options.marginTop}\"/></a:spcBef>`);\n\tif (options.bullet) children.push(...stringifyBullet(options.bullet));\n\tif (attrs.length === 0 && children.length === 0) return \"\";\n\tconst attrStr = attrs.length ? \" \" + attrs.join(\" \") : \"\";\n\tif (children.length === 0) return `<a:pPr${attrStr}/>`;\n\treturn `<a:pPr${attrStr}>${children.join(\"\")}</a:pPr>`;\n}\nfunction stringifyBullet(options) {\n\tconst parts = [];\n\tif (options.type === \"none\") {\n\t\tparts.push(\"<a:buNone/>\");\n\t\treturn parts;\n\t}\n\tif (options.color) parts.push(`<a:buClr><a:srgbClr val=\"${options.color.replace(\"#\", \"\")}\"/></a:buClr>`);\n\tif (options.size !== void 0) parts.push(`<a:buSzPct val=\"${options.size}%\"/>`);\n\tparts.push(`<a:buFont typeface=\"${options.font ?? \"Arial\"}\" panose=\"020B0604020202020204\" pitchFamily=\"34\" charset=\"0\"/>`);\n\tif (options.type === \"char\") parts.push(`<a:buChar char=\"${escapeXml(options.char ?? \"•\")}\"/>`);\n\telse if (options.type === \"autoNum\") {\n\t\tconst buAttrs = [`type=\"${options.format ?? \"arabicPeriod\"}\"`];\n\t\tif (options.startAt !== void 0) buAttrs.push(`startAt=\"${options.startAt}\"`);\n\t\tparts.push(`<a:buAutoNum ${buAttrs.join(\" \")}/>`);\n\t}\n\treturn parts;\n}\nfunction readParagraphProperties(el) {\n\tconst result = {};\n\tif (el.attributes) {\n\t\tif (el.attributes[\"algn\"] !== void 0) result.alignment = xsdTextAlign.from(String(el.attributes[\"algn\"]));\n\t\tif (el.attributes[\"lvl\"] !== void 0) result.indentLevel = Number(el.attributes[\"lvl\"]);\n\t\tif (el.attributes[\"marL\"] !== void 0) result.marginIndent = Number(el.attributes[\"marL\"]);\n\t\tif (el.attributes[\"marR\"] !== void 0) result.marginRight = Number(el.attributes[\"marR\"]);\n\t\tif (el.attributes[\"defTabSz\"] !== void 0) result.defTabSize = Number(el.attributes[\"defTabSz\"]);\n\t\tif (el.attributes[\"fontAlgn\"] !== void 0) result.fontAlignment = String(el.attributes[\"fontAlgn\"]);\n\t}\n\tconst lnSpc = findChild(el, \"a:lnSpc\");\n\tif (lnSpc) {\n\t\tconst spcPct = findChild(lnSpc, \"a:spcPct\");\n\t\tif (spcPct?.attributes?.[\"val\"] !== void 0) result.lineSpacing = Number(spcPct.attributes[\"val\"]) / 1e3;\n\t\tconst spcPts = findChild(lnSpc, \"a:spcPts\");\n\t\tif (spcPts?.attributes?.[\"val\"] !== void 0) result.lineSpacingPoints = Number(spcPts.attributes[\"val\"]) / 100;\n\t}\n\tconst spcAft = findChild(el, \"a:spcAft\");\n\tif (spcAft) {\n\t\tconst pts = findChild(spcAft, \"a:spcPts\");\n\t\tif (pts?.attributes?.[\"val\"] !== void 0) result.marginBottom = Number(pts.attributes[\"val\"]);\n\t}\n\tconst spcBef = findChild(el, \"a:spcBef\");\n\tif (spcBef) {\n\t\tconst pts = findChild(spcBef, \"a:spcPts\");\n\t\tif (pts?.attributes?.[\"val\"] !== void 0) result.marginTop = Number(pts.attributes[\"val\"]);\n\t}\n\tif (findChild(el, \"a:buNone\")) result.bullet = { type: \"none\" };\n\telse if (findChild(el, \"a:buChar\") || findChild(el, \"a:buAutoNum\")) {\n\t\tconst buChar = findChild(el, \"a:buChar\");\n\t\tif (buChar) {\n\t\t\tconst bullet = { type: \"char\" };\n\t\t\tif (buChar.attributes?.[\"char\"]) bullet.char = String(buChar.attributes[\"char\"]);\n\t\t\tconst buFont = findChild(el, \"a:buFont\");\n\t\t\tif (buFont?.attributes?.[\"typeface\"]) bullet.font = String(buFont.attributes[\"typeface\"]);\n\t\t\tconst buClr = findChild(el, \"a:buClr\");\n\t\t\tif (buClr) {\n\t\t\t\tconst srgb = findChild(buClr, \"a:srgbClr\");\n\t\t\t\tif (srgb?.attributes?.[\"val\"]) bullet.color = String(srgb.attributes[\"val\"]);\n\t\t\t}\n\t\t\tconst buSz = findChild(el, \"a:buSzPct\");\n\t\t\tif (buSz?.attributes?.[\"val\"]) bullet.size = Number(String(buSz.attributes[\"val\"]).replace(\"%\", \"\"));\n\t\t\tresult.bullet = bullet;\n\t\t} else {\n\t\t\tconst buAutoNum = findChild(el, \"a:buAutoNum\");\n\t\t\tconst bullet = { type: \"autoNum\" };\n\t\t\tif (buAutoNum.attributes?.[\"type\"]) bullet.format = String(buAutoNum.attributes[\"type\"]);\n\t\t\tconst buFont = findChild(el, \"a:buFont\");\n\t\t\tif (buFont?.attributes?.[\"typeface\"]) bullet.font = String(buFont.attributes[\"typeface\"]);\n\t\t\tif (buAutoNum.attributes?.[\"startAt\"] !== void 0) bullet.startAt = Number(buAutoNum.attributes[\"startAt\"]);\n\t\t\tconst buClr = findChild(el, \"a:buClr\");\n\t\t\tif (buClr) {\n\t\t\t\tconst srgb = findChild(buClr, \"a:srgbClr\");\n\t\t\t\tif (srgb?.attributes?.[\"val\"]) bullet.color = String(srgb.attributes[\"val\"]);\n\t\t\t}\n\t\t\tconst buSz = findChild(el, \"a:buSzPct\");\n\t\t\tif (buSz?.attributes?.[\"val\"]) bullet.size = Number(String(buSz.attributes[\"val\"]).replace(\"%\", \"\"));\n\t\t\tresult.bullet = bullet;\n\t\t}\n\t}\n\treturn result;\n}\nconst paragraphDesc = {\n\tkind: \"custom\",\n\tstringify(opts, ctx) {\n\t\tconst parts = [];\n\t\tif (opts.properties) {\n\t\t\tconst pPrXml = stringifyParagraphProperties(opts.properties);\n\t\t\tif (pPrXml) parts.push(pPrXml);\n\t\t}\n\t\tif (opts.text) parts.push(textRunDesc.stringify({ text: opts.text }, ctx) ?? \"\");\n\t\tif (opts.children) for (const child of opts.children) if (isTextField(child)) parts.push(stringifyTextField(child, ctx));\n\t\telse if (isBreak(child)) parts.push(stringifyBreak(child, ctx));\n\t\telse parts.push(textRunDesc.stringify(child, ctx) ?? \"\");\n\t\tif (opts.endParagraphProperties === false) {} else {\n\t\t\tconst epr = opts.endParagraphProperties ?? { lang: \"en-US\" };\n\t\t\tparts.push(stringifyEndParaRPr(epr, ctx));\n\t\t}\n\t\tconst body = parts.join(\"\");\n\t\treturn body ? `<a:p>${body}</a:p>` : \"<a:p/>\";\n\t},\n\tparse(el, ctx) {\n\t\tconst result = {};\n\t\tconst pPr = findChild(el, \"a:pPr\");\n\t\tif (pPr) result.properties = readParagraphProperties(pPr);\n\t\tconst children = [];\n\t\tfor (const child of el.elements ?? []) if (child.name === \"a:r\") children.push(textRunDesc.parse(child, ctx));\n\t\telse if (child.name === \"a:fld\") children.push(readTextField(child, ctx));\n\t\telse if (child.name === \"a:br\") children.push(readBreak(child, ctx));\n\t\tconst [onlyRun] = children;\n\t\tif (onlyRun !== void 0 && !isTextField(onlyRun) && !isBreak(onlyRun) && children.length === 1 && !result.properties && onlyRun.text !== void 0 && Object.keys(onlyRun).length === 1) result.text = onlyRun.text;\n\t\telse if (children.length > 0) result.children = children;\n\t\tconst endParaRPr = findChild(el, \"a:endParaRPr\");\n\t\tif (endParaRPr) result.endParagraphProperties = runPropertiesDesc.parse(endParaRPr, ctx);\n\t\telse result.endParagraphProperties = false;\n\t\treturn result;\n\t}\n};\nfunction isTextField(child) {\n\treturn typeof child.type === \"string\";\n}\nfunction isBreak(child) {\n\treturn child.break === true;\n}\nfunction stringifyBreak(opts, ctx) {\n\tconst rPr = opts.properties ? runPropertiesDesc.stringify(opts.properties, ctx) ?? \"\" : \"\";\n\treturn rPr ? `<a:br>${rPr}</a:br>` : \"<a:br/>\";\n}\nfunction readBreak(el, ctx) {\n\tconst result = { break: true };\n\tconst rPr = findChild(el, \"a:rPr\");\n\tif (rPr) result.properties = runPropertiesDesc.parse(rPr, ctx);\n\treturn result;\n}\nfunction stringifyEndParaRPr(opts, ctx) {\n\tconst rPr = runPropertiesDesc.stringify(opts, ctx) ?? \"\";\n\tif (!rPr) return \"<a:endParaRPr/>\";\n\treturn rPr.replaceAll(\"<a:rPr\", \"<a:endParaRPr\").replaceAll(\"</a:rPr>\", \"</a:endParaRPr>\");\n}\nfunction stringifyTextField(opts, ctx) {\n\tconst id = opts.id ?? \"{00000000-0000-0000-0000-000000000000}\";\n\tconst rPr = opts.properties ? runPropertiesDesc.stringify(opts.properties, ctx) ?? \"\" : \"\";\n\tconst t = opts.text !== void 0 ? `<a:t>${escapeXml(opts.text)}</a:t>` : \"\";\n\treturn `<a:fld id=\"${id}\" type=\"${opts.type}\">${rPr}${t}</a:fld>`;\n}\nfunction readTextField(el, ctx) {\n\tconst result = { type: String(el.attributes?.[\"type\"] ?? \"\") };\n\tconst id = el.attributes?.[\"id\"];\n\tif (id !== void 0) result.id = String(id);\n\tconst rPr = findChild(el, \"a:rPr\");\n\tif (rPr) result.properties = runPropertiesDesc.parse(rPr, ctx);\n\tconst t = findChild(el, \"a:t\");\n\tif (t) result.text = (t.elements ?? []).filter((e) => e.type === \"text\").map((e) => e.text ?? \"\").join(\"\");\n\treturn result;\n}\n//#endregion\n//#region src/parts/descriptors/shape.ts\n/**\n* Shape (p:sp) and Picture (p:pic) descriptors for PPTX slides.\n*\n* These CustomDescriptor implementations produce the same XML output as the\n* class-based Shape and Picture components, but through the descriptor pipeline.\n*\n* @module\n*/\nlet _nextShapeId = 2;\nlet _nextPictureId = 100;\nfunction toColor(color, alpha) {\n\tif (!color) return {\n\t\tvalue: \"000000\",\n\t\talpha: (alpha ?? 40) * 1e3\n\t};\n\treturn {\n\t\tvalue: color.replace(\"#\", \"\"),\n\t\talpha: (alpha ?? 40) * 1e3\n\t};\n}\n/** Map PPTX EffectsOptions to core EffectListOptions. */\nfunction toEffectListOptions(opts) {\n\tif (!(opts.outerShadow || opts.innerShadow || opts.glow || opts.reflection || opts.softEdge)) return void 0;\n\treturn {\n\t\touterShadow: opts.outerShadow ? {\n\t\t\tblurRadius: opts.outerShadow.blur,\n\t\t\tdistance: opts.outerShadow.distance,\n\t\t\tdirection: opts.outerShadow.direction,\n\t\t\trotWithShape: opts.outerShadow.rotateWithShape === false ? false : void 0,\n\t\t\tcolor: toColor(opts.outerShadow.color, opts.outerShadow.alpha)\n\t\t} : void 0,\n\t\tinnerShadow: opts.innerShadow ? {\n\t\t\tblurRadius: opts.innerShadow.blur,\n\t\t\tdistance: opts.innerShadow.distance,\n\t\t\tdirection: opts.innerShadow.direction,\n\t\t\tcolor: toColor(opts.innerShadow.color, opts.innerShadow.alpha)\n\t\t} : void 0,\n\t\tglow: opts.glow ? {\n\t\t\tradius: opts.glow.radius ?? 152400,\n\t\t\tcolor: toColor(opts.glow.color, opts.glow.alpha)\n\t\t} : void 0,\n\t\treflection: opts.reflection ? toReflectionCore(opts.reflection) : void 0,\n\t\tsoftEdge: opts.softEdge ? opts.softEdge.radius ?? 50800 : void 0\n\t};\n}\nfunction toReflectionCore(opts) {\n\tconst result = {};\n\tif (opts.blurRadius !== void 0) result.blurRadius = opts.blurRadius;\n\tif (opts.distance !== void 0) result.distance = opts.distance;\n\tif (opts.direction !== void 0) result.direction = opts.direction;\n\tif (opts.startAlpha !== void 0) result.startAlpha = opts.startAlpha * 1e3;\n\tif (opts.startPosition !== void 0) result.startPosition = opts.startPosition * 1e3;\n\tif (opts.endAlpha !== void 0) result.endAlpha = opts.endAlpha * 1e3;\n\tif (opts.endPosition !== void 0) result.endPosition = opts.endPosition * 1e3;\n\tif (opts.fadeDirection !== void 0) result.fadeDirection = opts.fadeDirection * 6e4;\n\tif (opts.scaleX !== void 0) result.scaleX = opts.scaleX * 1e3;\n\tif (opts.scaleY !== void 0) result.scaleY = opts.scaleY * 1e3;\n\tif (opts.skewX !== void 0) result.skewX = opts.skewX * 6e4;\n\tif (opts.skewY !== void 0) result.skewY = opts.skewY * 6e4;\n\tif (opts.alignment !== void 0) result.alignment = opts.alignment;\n\tif (opts.rotateWithShape === false) result.rotWithShape = 0;\n\treturn result;\n}\n/** Map PPTX EffectsOptions to core Scene3DOptions. */\nfunction toScene3DOptions(opts) {\n\tif (!opts.rotation3D && !opts.lighting) return void 0;\n\treturn {\n\t\tcamera: {\n\t\t\tpreset: opts.rotation3D?.perspective ? \"legacyPerspectiveFront\" : \"orthographicFront\",\n\t\t\t...opts.rotation3D?.perspective && { fov: opts.rotation3D.perspective },\n\t\t\t...opts.rotation3D && { rotation: {\n\t\t\t\tlat: (opts.rotation3D.x ?? 0) * 6e4,\n\t\t\t\tlon: (opts.rotation3D.y ?? 0) * 6e4,\n\t\t\t\trev: (opts.rotation3D.z ?? 0) * 6e4\n\t\t\t} }\n\t\t},\n\t\tlightRig: {\n\t\t\trig: opts.lighting ?? \"threePt\",\n\t\t\tdirection: \"t\"\n\t\t}\n\t};\n}\n/** Map PPTX EffectsOptions to core Shape3DOptions. */\nfunction toShape3DOptions(opts) {\n\tif (!opts.extrusionH && !opts.bevelTop && !opts.bevelBottom && !opts.material) return void 0;\n\treturn {\n\t\t...opts.bevelTop ? { bevelT: {\n\t\t\tw: opts.bevelTop.width,\n\t\t\th: opts.bevelTop.height\n\t\t} } : {},\n\t\t...opts.bevelBottom ? { bevelB: {\n\t\t\tw: opts.bevelBottom.width,\n\t\t\th: opts.bevelBottom.height\n\t\t} } : {},\n\t\t...opts.extrusionH !== void 0 ? { extrusionH: opts.extrusionH } : {},\n\t\t...opts.material ? { prstMaterial: opts.material } : {}\n\t};\n}\nconst DASH_STYLE_MAP = {\n\tsolid: \"solid\",\n\tdash: \"dash\",\n\tdashDot: \"dashDot\",\n\tlgDash: \"lgDash\",\n\tsysDot: \"sysDot\",\n\tsysDash: \"sysDash\"\n};\nfunction toCoreOutlineOptions(opts) {\n\tconst result = { width: opts.width };\n\tif (opts.color) {\n\t\tresult.type = \"solidFill\";\n\t\tresult.color = { value: opts.color.replace(\"#\", \"\") };\n\t} else result.type = \"noFill\";\n\tif (opts.dashStyle) result.dash = DASH_STYLE_MAP[opts.dashStyle] ?? \"solid\";\n\treturn result;\n}\nconst shapeDesc = {\n\tkind: \"custom\",\n\tstringify(opts, ctx) {\n\t\tconst id = opts.id ?? _nextShapeId++;\n\t\tconst name = opts.name ?? `Shape ${id}`;\n\t\tconst parts = [];\n\t\tparts.push(stringifyNvSpPr(id, name, opts));\n\t\tconst spPrXml = stringifySpPr(opts, ctx);\n\t\tif (spPrXml) parts.push(spPrXml);\n\t\tif (opts.style) {\n\t\t\tconst styleXml = stringifyStyle(opts.style);\n\t\t\tif (styleXml) parts.push(styleXml);\n\t\t}\n\t\tparts.push(stringifyTxBody$1(opts.textBody ?? {}, ctx));\n\t\tconst spAttrs = [];\n\t\tif (opts.useBackgroundFill) spAttrs.push(\" useBgFill=\\\"1\\\"\");\n\t\tif (opts.blackWhiteMode) spAttrs.push(` bwMode=\"${opts.blackWhiteMode}\"`);\n\t\treturn `<p:sp${spAttrs.join(\"\")}>${parts.join(\"\")}</p:sp>`;\n\t},\n\tparse(el, ctx) {\n\t\tconst result = {};\n\t\tif (el.attributes) {\n\t\t\tif (el.attributes[\"useBgFill\"] !== void 0) result.useBackgroundFill = el.attributes[\"useBgFill\"] === \"1\";\n\t\t\tif (el.attributes[\"bwMode\"] !== void 0) result.blackWhiteMode = String(el.attributes[\"bwMode\"]);\n\t\t}\n\t\tconst nvSpPr = findChild(el, \"p:nvSpPr\");\n\t\tif (nvSpPr) {\n\t\t\tconst parsed = readNvSpPr(nvSpPr);\n\t\t\tif (parsed.id !== void 0) result.id = parsed.id;\n\t\t\tif (parsed.name !== void 0) result.name = parsed.name;\n\t\t\tif (parsed.placeholder !== void 0) result.placeholder = parsed.placeholder;\n\t\t\tif (parsed.placeholderIndex !== void 0) result.placeholderIndex = parsed.placeholderIndex;\n\t\t\tif (parsed.placeholderSize !== void 0) result.placeholderSize = parsed.placeholderSize;\n\t\t\tif (parsed.placeholderOrientation !== void 0) result.placeholderOrientation = parsed.placeholderOrientation;\n\t\t\tif (parsed.hasCustomPrompt !== void 0) result.hasCustomPrompt = parsed.hasCustomPrompt;\n\t\t\tif (parsed.isPhoto !== void 0) result.isPhoto = parsed.isPhoto;\n\t\t\tif (parsed.userDrawn !== void 0) result.userDrawn = parsed.userDrawn;\n\t\t\tif (parsed.locking !== void 0) result.locking = parsed.locking;\n\t\t}\n\t\tconst spPr = findChild(el, \"p:spPr\");\n\t\tif (spPr) Object.assign(result, readSpPr(spPr, ctx));\n\t\tconst style = findChild(el, \"p:style\");\n\t\tif (style) result.style = readStyle(style);\n\t\tconst txBody = findChild(el, \"p:txBody\");\n\t\tif (txBody) result.textBody = readTxBody(txBody, ctx);\n\t\treturn result;\n\t}\n};\nconst pictureDesc = {\n\tkind: \"custom\",\n\tstringify(opts, ctx) {\n\t\tconst pptx = ctx;\n\t\tconst id = opts.id ?? _nextPictureId++;\n\t\tconst name = opts.name ?? `Picture ${id}`;\n\t\tconst fileName = `${name.replace(/\\s+/g, \"_\")}.${opts.type}`;\n\t\tconst widthEmu = convertToEmu(opts.width ?? 0);\n\t\tconst heightEmu = convertToEmu(opts.height ?? 0);\n\t\tconst mediaEntry = pptx.addImage(fileName, {\n\t\t\tkey: fileName,\n\t\t\ttype: opts.type,\n\t\t\tfileName,\n\t\t\tdata: toUint8Array(opts.data, { encoding: \"base64\" }),\n\t\t\ttransformation: {\n\t\t\t\tpixels: {\n\t\t\t\t\tx: Math.round(convertEmuToPixels(widthEmu)),\n\t\t\t\t\ty: Math.round(convertEmuToPixels(heightEmu))\n\t\t\t\t},\n\t\t\t\temus: {\n\t\t\t\t\tx: widthEmu,\n\t\t\t\t\ty: heightEmu\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tconst parts = [];\n\t\tparts.push(stringifyNvPicPr(id, name));\n\t\tparts.push(stringifyPptxBlipFill(mediaEntry.fileName));\n\t\tconst spPrXml = stringifyPicSpPr(opts, ctx);\n\t\tif (spPrXml) parts.push(spPrXml);\n\t\treturn `<p:pic>${parts.join(\"\")}</p:pic>`;\n\t},\n\tparse(el, ctx) {\n\t\tconst result = {};\n\t\tconst nvPicPr = findChild(el, \"p:nvPicPr\");\n\t\tif (nvPicPr) {\n\t\t\tconst cNvPr = findChild(nvPicPr, \"p:cNvPr\");\n\t\t\tif (cNvPr?.attributes) {\n\t\t\t\tif (cNvPr.attributes[\"id\"] !== void 0) result.id = Number(cNvPr.attributes[\"id\"]);\n\t\t\t\tif (cNvPr.attributes[\"name\"] !== void 0) result.name = String(cNvPr.attributes[\"name\"]);\n\t\t\t}\n\t\t}\n\t\tconst spPr = findChild(el, \"p:spPr\");\n\t\tif (spPr) {\n\t\t\tconst xfrm = findChild(spPr, \"a:xfrm\");\n\t\t\tif (xfrm) {\n\t\t\t\tconst off = findChild(xfrm, \"a:off\");\n\t\t\t\tif (off?.attributes) {\n\t\t\t\t\tresult.x = Number(off.attributes[\"x\"] ?? 0);\n\t\t\t\t\tresult.y = Number(off.attributes[\"y\"] ?? 0);\n\t\t\t\t}\n\t\t\t\tconst ext = findChild(xfrm, \"a:ext\");\n\t\t\t\tif (ext?.attributes) {\n\t\t\t\t\tresult.width = Number(ext.attributes[\"cx\"] ?? 0);\n\t\t\t\t\tresult.height = Number(ext.attributes[\"cy\"] ?? 0);\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst effectLst = findChild(spPr, \"a:effectLst\");\n\t\t\tif (effectLst) {\n\t\t\t\tconst effects = parse$1(effectListDesc, effectLst, ctx);\n\t\t\t\tif (effects) result.effects = effects;\n\t\t\t}\n\t\t}\n\t\tconst blip = findFirst(el, \"a:blip\");\n\t\tif (blip) {\n\t\t\tconst rEmbed = attr(blip, \"r:embed\");\n\t\t\tif (rEmbed) {\n\t\t\t\tconst imagePath = ctx.resolveRelationship(rEmbed);\n\t\t\t\tif (imagePath) {\n\t\t\t\t\tconst imageData = ctx.getRaw(imagePath);\n\t\t\t\t\tif (imageData) {\n\t\t\t\t\t\tresult.data = imageData;\n\t\t\t\t\t\tresult.type = imageTypeFromPath$1(imagePath);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!result.data) result.data = new Uint8Array(0);\n\t\tif (!result.type) result.type = \"png\";\n\t\treturn result;\n\t}\n};\nfunction stringifyNvSpPr(id, name, opts) {\n\tlet nvPrContent = \"<p:nvPr/>\";\n\tif (opts.placeholder) {\n\t\tconst phAttrs = [`type=\"${opts.placeholder}\"`];\n\t\tif (opts.placeholderIndex !== void 0) phAttrs.push(`idx=\"${opts.placeholderIndex}\"`);\n\t\tif (opts.placeholderSize !== void 0) phAttrs.push(`sz=\"${opts.placeholderSize}\"`);\n\t\tif (opts.placeholderOrientation !== void 0) phAttrs.push(`orient=\"${opts.placeholderOrientation}\"`);\n\t\tif (opts.hasCustomPrompt) phAttrs.push(\"hasCustomPrompt=\\\"1\\\"\");\n\t\tnvPrContent = `<p:nvPr><p:ph ${phAttrs.join(\" \")}/></p:nvPr>`;\n\t} else if (opts.isPhoto || opts.userDrawn) {\n\t\tconst nvPrAttrs = [];\n\t\tif (opts.isPhoto) nvPrAttrs.push(\"isPhoto=\\\"1\\\"\");\n\t\tif (opts.userDrawn) nvPrAttrs.push(\"userDrawn=\\\"1\\\"\");\n\t\tnvPrContent = `<p:nvPr ${nvPrAttrs.join(\" \")}/>`;\n\t}\n\tlet cNvSpPrContent = \"<p:cNvSpPr/>\";\n\tif (opts.locking) {\n\t\tconst lockAttrs = buildLockAttrs(opts.locking);\n\t\tif (lockAttrs.length > 0) cNvSpPrContent = `<p:cNvSpPr><a:spLocks ${lockAttrs.join(\" \")}/></p:cNvSpPr>`;\n\t}\n\treturn `<p:nvSpPr><p:cNvPr id=\"${id}\" name=\"${escapeXml(name)}\"/>${cNvSpPrContent}${nvPrContent}</p:nvSpPr>`;\n}\nfunction buildLockAttrs(opts) {\n\tconst attrs = [];\n\tfor (const key of [\n\t\t\"noGrp\",\n\t\t\"noSelect\",\n\t\t\"noRot\",\n\t\t\"noChangeAspect\",\n\t\t\"noMove\",\n\t\t\"noResize\",\n\t\t\"noEditPoints\",\n\t\t\"noAdjustHandles\",\n\t\t\"noChangeArrowheads\",\n\t\t\"noChangeShapeType\",\n\t\t\"noTextEdit\"\n\t]) {\n\t\tconst val = opts[key];\n\t\tif (val !== void 0) attrs.push(`${key}=\"${val ? 1 : 0}\"`);\n\t}\n\treturn attrs;\n}\nfunction stringifySpPr(opts, ctx) {\n\tconst pptx = ctx;\n\tconst parts = [];\n\tif (opts.x !== void 0 || opts.y !== void 0 || opts.width !== void 0 || opts.height !== void 0 || opts.flipHorizontal !== void 0 || opts.rotation !== void 0) {\n\t\tconst xml = stringify$1(transform2DDesc, {\n\t\t\tx: opts.x,\n\t\t\ty: opts.y,\n\t\t\twidth: opts.width,\n\t\t\theight: opts.height,\n\t\t\tflipHorizontal: opts.flipHorizontal,\n\t\t\trotation: opts.rotation\n\t\t}, ctx);\n\t\tif (xml) parts.push(xml);\n\t}\n\tif (opts.customGeometry) {\n\t\tconst xml = stringify$1(customGeometryDesc, opts.customGeometry, ctx);\n\t\tif (xml) parts.push(xml);\n\t} else if (opts.geometry !== void 0 || !opts.placeholder) {\n\t\tconst xml = stringify$1(presetGeometryDesc, typeof opts.geometry === \"string\" || opts.geometry === void 0 ? { preset: opts.geometry ?? \"rect\" } : opts.geometry, ctx);\n\t\tif (xml) parts.push(xml);\n\t}\n\tif (opts.fill) {\n\t\tif ((typeof opts.fill === \"string\" ? \"solid\" : opts.fill.type) === \"blip\") {\n\t\t\tconst blipFill = opts.fill;\n\t\t\tif (blipFill.data) {\n\t\t\t\tconst raw = toUint8Array(blipFill.data, { encoding: \"base64\" });\n\t\t\t\tconst fileName = `image_blip.${blipFill.imageType ?? \"png\"}`;\n\t\t\t\tpptx.addImage(fileName, {\n\t\t\t\t\tkey: fileName,\n\t\t\t\t\tdata: raw,\n\t\t\t\t\tfileName,\n\t\t\t\t\ttype: blipFill.imageType ?? \"png\",\n\t\t\t\t\ttransformation: {\n\t\t\t\t\t\tpixels: {\n\t\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\t\ty: 0\n\t\t\t\t\t\t},\n\t\t\t\t\t\temus: {\n\t\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\t\ty: 0\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tconst fillXml = stringify$1(fillDesc, opts.fill, ctx);\n\t\tif (fillXml) parts.push(fillXml);\n\t} else if (!opts.placeholder) parts.push(\"<a:noFill/>\");\n\tif (opts.outline) {\n\t\tconst outlineXml = stringify$1(outlineDesc, toCoreOutlineOptions(opts.outline), ctx);\n\t\tif (outlineXml) parts.push(outlineXml);\n\t}\n\tif (opts.effects) {\n\t\tconst effectListOpts = toEffectListOptions(opts.effects);\n\t\tif (effectListOpts) {\n\t\t\tconst xml = stringify$1(effectListDesc, effectListOpts, ctx);\n\t\t\tif (xml) parts.push(xml);\n\t\t}\n\t\tconst scene3DOpts = toScene3DOptions(opts.effects);\n\t\tif (scene3DOpts) {\n\t\t\tconst xml = stringify$1(scene3DDesc, scene3DOpts, ctx);\n\t\t\tif (xml) parts.push(xml);\n\t\t}\n\t\tconst shape3DOpts = toShape3DOptions(opts.effects);\n\t\tif (shape3DOpts) {\n\t\t\tconst xml = stringify$1(shape3DDesc, shape3DOpts, ctx);\n\t\t\tif (xml) parts.push(xml);\n\t\t}\n\t}\n\tif (parts.length === 0) return \"<p:spPr/>\";\n\treturn `<p:spPr>${parts.join(\"\")}</p:spPr>`;\n}\nfunction stringifyStyle(style) {\n\tconst parts = [];\n\tif (style.lineReference) {\n\t\tconst colorChild = style.lineReference.color ? `<a:srgbClr val=\"${style.lineReference.color}\"/>` : \"\";\n\t\tparts.push(`<a:lnRef idx=\"${style.lineReference.index}\">${colorChild}</a:lnRef>`);\n\t}\n\tif (style.fillReference) {\n\t\tconst colorChild = style.fillReference.color ? `<a:srgbClr val=\"${style.fillReference.color}\"/>` : \"\";\n\t\tparts.push(`<a:fillRef idx=\"${style.fillReference.index}\">${colorChild}</a:fillRef>`);\n\t}\n\tif (style.effectReference) {\n\t\tconst colorChild = style.effectReference.color ? `<a:srgbClr val=\"${style.effectReference.color}\"/>` : \"\";\n\t\tparts.push(`<a:effectRef idx=\"${style.effectReference.index}\">${colorChild}</a:effectRef>`);\n\t}\n\tif (style.fontReference) {\n\t\tconst colorChild = style.fontReference.color ? `<a:solidFill><a:srgbClr val=\"${style.fontReference.color}\"/></a:solidFill>` : \"\";\n\t\tparts.push(`<a:fontRef idx=\"${style.fontReference.index}\">${colorChild}</a:fontRef>`);\n\t}\n\tif (parts.length === 0) return void 0;\n\treturn `<p:style>${parts.join(\"\")}</p:style>`;\n}\nfunction stringifyTxBody$1(opts, ctx) {\n\tconst parts = [];\n\tparts.push(stringifyBodyPr(opts));\n\tparts.push(\"<a:lstStyle/>\");\n\tif (opts.children && opts.children.length > 0) for (const p of opts.children) if (typeof p === \"string\") {\n\t\tconst xml = paragraphDesc.stringify({ text: p }, ctx);\n\t\tparts.push(xml ?? \"<a:p/>\");\n\t} else {\n\t\tconst xml = paragraphDesc.stringify(toParagraphDescOpts(p), ctx);\n\t\tparts.push(xml ?? \"<a:p/>\");\n\t}\n\telse if (opts.text !== void 0) {\n\t\tconst xml = paragraphDesc.stringify({ text: opts.text }, ctx);\n\t\tparts.push(xml ?? \"<a:p/>\");\n\t} else parts.push(\"<a:p/>\");\n\treturn `<p:txBody>${parts.join(\"\")}</p:txBody>`;\n}\n/** Convert ParagraphOptions to ParagraphDescriptorOptions. */\nfunction toParagraphDescOpts(opts) {\n\tconst result = {};\n\tif (opts.text !== void 0) result.text = opts.text;\n\tif (opts.children !== void 0) result.children = opts.children;\n\tif (opts.properties) result.properties = opts.properties;\n\treturn result;\n}\nfunction stringifyBodyPr(opts) {\n\tconst bodyPrChildren = [];\n\tif (opts.autoFit === \"normal\") {\n\t\tconst naAttrs = [];\n\t\tif (opts.autoFitFontScale !== void 0) naAttrs.push(`fontScale=\"${opts.autoFitFontScale}\"`);\n\t\tif (opts.autoFitLineSpaceReduction !== void 0) naAttrs.push(`lnSpcReduction=\"${opts.autoFitLineSpaceReduction}\"`);\n\t\tbodyPrChildren.push(naAttrs.length ? `<a:normAutofit ${naAttrs.join(\" \")}/>` : \"<a:normAutofit/>\");\n\t} else if (opts.autoFit === \"shape\") bodyPrChildren.push(\"<a:spAutoFit/>\");\n\telse if (opts.autoFit === \"none\") bodyPrChildren.push(\"<a:noAutofit/>\");\n\tconst attrs = [];\n\tif (opts.vertical) attrs.push(`vert=\"${opts.vertical}\"`);\n\tif (opts.anchor) attrs.push(`anchor=\"${xsdTextAnchor.to(opts.anchor)}\"`);\n\tif (opts.wrap) attrs.push(`wrap=\"${opts.wrap}\"`);\n\tif (opts.margins?.top !== void 0) attrs.push(`tIns=\"${opts.margins.top}\"`);\n\tif (opts.margins?.bottom !== void 0) attrs.push(`bIns=\"${opts.margins.bottom}\"`);\n\tif (opts.margins?.left !== void 0) attrs.push(`lIns=\"${opts.margins.left}\"`);\n\tif (opts.margins?.right !== void 0) attrs.push(`rIns=\"${opts.margins.right}\"`);\n\tif (opts.columns !== void 0) attrs.push(`numCol=\"${opts.columns}\"`);\n\tif (opts.columnSpacing !== void 0) attrs.push(`spcCol=\"${opts.columnSpacing * 100}\"`);\n\tif (opts.marginTop !== void 0) attrs.push(`marT=\"${opts.marginTop}\"`);\n\tif (opts.marginBottom !== void 0) attrs.push(`marB=\"${opts.marginBottom}\"`);\n\tconst attrStr = attrs.length ? \" \" + attrs.join(\" \") : \"\";\n\tconst children = bodyPrChildren.join(\"\");\n\tif (!children && !attrStr) return \"<a:bodyPr/>\";\n\tif (!children) return `<a:bodyPr${attrStr}/>`;\n\treturn `<a:bodyPr${attrStr}>${children}</a:bodyPr>`;\n}\nfunction stringifyNvPicPr(id, name) {\n\treturn `<p:nvPicPr><p:cNvPr id=\"${id}\" name=\"${escapeXml(name)}\" descr=\"\"/><p:cNvPicPr/><p:nvPr/></p:nvPicPr>`;\n}\n/** PPTX uses p:blipFill (not pic:blipFill). */\nfunction stringifyPptxBlipFill(fileName) {\n\treturn `<p:blipFill><a:blip r:embed=\"{${escapeXml(fileName)}}\" cstate=\"none\"/><a:stretch><a:fillRect/></a:stretch></p:blipFill>`;\n}\nfunction stringifyPicSpPr(opts, ctx) {\n\tconst parts = [];\n\tconst xfrmXml = stringify$1(transform2DDesc, {\n\t\tx: opts.x,\n\t\ty: opts.y,\n\t\twidth: opts.width,\n\t\theight: opts.height\n\t}, ctx);\n\tif (xfrmXml) parts.push(xfrmXml);\n\tconst geomXml = stringify$1(presetGeometryDesc, { preset: \"rect\" }, ctx);\n\tif (geomXml) parts.push(geomXml);\n\tif (opts.effects) {\n\t\tconst effectListOpts = toEffectListOptions(opts.effects);\n\t\tif (effectListOpts) {\n\t\t\tconst fxXml = stringify$1(effectListDesc, effectListOpts, ctx);\n\t\t\tif (fxXml) parts.push(fxXml);\n\t\t}\n\t}\n\tif (parts.length === 0) return \"<p:spPr/>\";\n\treturn `<p:spPr>${parts.join(\"\")}</p:spPr>`;\n}\nfunction readNvSpPr(nvSpPr) {\n\tconst result = {};\n\tconst cNvPr = findChild(nvSpPr, \"p:cNvPr\");\n\tif (cNvPr?.attributes) {\n\t\tif (cNvPr.attributes[\"id\"] !== void 0) result.id = Number(cNvPr.attributes[\"id\"]);\n\t\tif (cNvPr.attributes[\"name\"] !== void 0) result.name = String(cNvPr.attributes[\"name\"]);\n\t}\n\tconst nvPr = findChild(nvSpPr, \"p:nvPr\");\n\tif (nvPr) {\n\t\tif (nvPr.attributes) {\n\t\t\tif (nvPr.attributes[\"isPhoto\"] !== void 0) result.isPhoto = nvPr.attributes[\"isPhoto\"] === \"1\";\n\t\t\tif (nvPr.attributes[\"userDrawn\"] !== void 0) result.userDrawn = nvPr.attributes[\"userDrawn\"] === \"1\";\n\t\t}\n\t\tconst ph = findChild(nvPr, \"p:ph\");\n\t\tif (ph?.attributes) {\n\t\t\tif (ph.attributes[\"type\"] !== void 0) result.placeholder = String(ph.attributes[\"type\"]);\n\t\t\tif (ph.attributes[\"idx\"] !== void 0) result.placeholderIndex = Number(ph.attributes[\"idx\"]);\n\t\t\tif (ph.attributes[\"sz\"] !== void 0) result.placeholderSize = ph.attributes[\"sz\"];\n\t\t\tif (ph.attributes[\"orient\"] !== void 0) result.placeholderOrientation = ph.attributes[\"orient\"];\n\t\t\tif (ph.attributes[\"hasCustomPrompt\"] !== void 0) result.hasCustomPrompt = ph.attributes[\"hasCustomPrompt\"] === \"1\";\n\t\t}\n\t}\n\tconst cNvSpPr = findChild(nvSpPr, \"p:cNvSpPr\");\n\tif (cNvSpPr) {\n\t\tconst spLocks = findChild(cNvSpPr, \"a:spLocks\");\n\t\tif (spLocks) result.locking = shapeLockingDesc.parse(spLocks, {});\n\t}\n\treturn result;\n}\nfunction readSpPr(spPr, ctx) {\n\tconst result = {};\n\tconst xfrm = findChild(spPr, \"a:xfrm\");\n\tif (xfrm) {\n\t\tconst transformOpts = parse$1(transform2DDesc, xfrm, ctx);\n\t\tif (transformOpts.x !== void 0) result.x = transformOpts.x;\n\t\tif (transformOpts.y !== void 0) result.y = transformOpts.y;\n\t\tif (transformOpts.width !== void 0) result.width = transformOpts.width;\n\t\tif (transformOpts.height !== void 0) result.height = transformOpts.height;\n\t\tif (transformOpts.flipHorizontal !== void 0) result.flipHorizontal = transformOpts.flipHorizontal;\n\t\tif (transformOpts.rotation !== void 0) result.rotation = transformOpts.rotation;\n\t}\n\tconst custGeom = findChild(spPr, \"a:custGeom\");\n\tif (custGeom) result.customGeometry = parse$1(customGeometryDesc, custGeom, ctx);\n\telse {\n\t\tconst prstGeom = findChild(spPr, \"a:prstGeom\");\n\t\tif (prstGeom) {\n\t\t\tconst geomOpts = parse$1(presetGeometryDesc, prstGeom, ctx);\n\t\t\tif (geomOpts.adjustmentValues && geomOpts.adjustmentValues.length > 0) result.geometry = geomOpts;\n\t\t\telse if (geomOpts.preset) result.geometry = geomOpts.preset;\n\t\t}\n\t}\n\tif (findChild(spPr, \"a:solidFill\") || findChild(spPr, \"a:noFill\") || findChild(spPr, \"a:gradFill\") || findChild(spPr, \"a:pattFill\") || findChild(spPr, \"a:blipFill\")) result.fill = parse$1(fillDesc, spPr, ctx);\n\tconst ln = findChild(spPr, \"a:ln\");\n\tif (ln) result.outline = readOutlineCompat(ln);\n\tconst effects = readEffectsFromSpPr(spPr);\n\tif (effects) result.effects = effects;\n\treturn result;\n}\n/** Read x/y/width/height (in EMU) from an a:xfrm element. */\nfunction readPositionFromXfrm(xfrm) {\n\tconst result = {};\n\tconst off = findChild(xfrm, \"a:off\");\n\tif (off) {\n\t\tconst x = attrNum(off, \"x\");\n\t\tif (x !== void 0) result.x = x;\n\t\tconst y = attrNum(off, \"y\");\n\t\tif (y !== void 0) result.y = y;\n\t}\n\tconst ext = findChild(xfrm, \"a:ext\");\n\tif (ext) {\n\t\tconst cx = attrNum(ext, \"cx\");\n\t\tif (cx !== void 0) result.width = cx;\n\t\tconst cy = attrNum(ext, \"cy\");\n\t\tif (cy !== void 0) result.height = cy;\n\t}\n\treturn result;\n}\nfunction readOutlineCompat(ln) {\n\tconst coreOpts = parse$1(outlineDesc, ln, {});\n\tconst result = {};\n\tif (coreOpts.width !== void 0) result.width = coreOpts.width;\n\tif (coreOpts.dash) result.dashStyle = coreOpts.dash;\n\tif (coreOpts.type === \"solidFill\" && coreOpts.color) result.color = coreOpts.color.value ?? \"\";\n\treturn result;\n}\nfunction readStyle(styleEl) {\n\tconst result = {};\n\tconst lnRef = findChild(styleEl, \"a:lnRef\");\n\tif (lnRef?.attributes) {\n\t\tresult.lineReference = { index: Number(lnRef.attributes[\"idx\"] ?? 0) };\n\t\tconst srgbClr = findChild(lnRef, \"a:srgbClr\");\n\t\tif (srgbClr?.attributes?.[\"val\"]) result.lineReference.color = String(srgbClr.attributes[\"val\"]);\n\t}\n\tconst fillRef = findChild(styleEl, \"a:fillRef\");\n\tif (fillRef?.attributes) {\n\t\tresult.fillReference = { index: Number(fillRef.attributes[\"idx\"] ?? 0) };\n\t\tconst srgbClr = findChild(fillRef, \"a:srgbClr\");\n\t\tif (srgbClr?.attributes?.[\"val\"]) result.fillReference.color = String(srgbClr.attributes[\"val\"]);\n\t}\n\tconst effectRef = findChild(styleEl, \"a:effectRef\");\n\tif (effectRef?.attributes) {\n\t\tresult.effectReference = { index: Number(effectRef.attributes[\"idx\"] ?? 0) };\n\t\tconst srgbClr = findChild(effectRef, \"a:srgbClr\");\n\t\tif (srgbClr?.attributes?.[\"val\"]) result.effectReference.color = String(srgbClr.attributes[\"val\"]);\n\t}\n\tconst fontRef = findChild(styleEl, \"a:fontRef\");\n\tif (fontRef?.attributes) {\n\t\tresult.fontReference = { index: Number(fontRef.attributes[\"idx\"] ?? 0) };\n\t\tconst solidFill = findChild(fontRef, \"a:solidFill\");\n\t\tif (solidFill) {\n\t\t\tconst srgbClr = findChild(solidFill, \"a:srgbClr\");\n\t\t\tif (srgbClr?.attributes?.[\"val\"]) result.fontReference.color = String(srgbClr.attributes[\"val\"]);\n\t\t}\n\t}\n\treturn result;\n}\nfunction readTxBody(txBody, ctx) {\n\tconst result = {};\n\tconst bodyPr = findChild(txBody, \"a:bodyPr\");\n\tif (bodyPr) {\n\t\tconst attrs = bodyPr.attributes ?? {};\n\t\tif (attrs[\"vert\"] !== void 0) result.vertical = String(attrs[\"vert\"]);\n\t\tif (attrs[\"anchor\"] !== void 0) result.anchor = xsdTextAnchor.from(String(attrs[\"anchor\"]));\n\t\tif (attrs[\"wrap\"] !== void 0) result.wrap = String(attrs[\"wrap\"]);\n\t\tconst insMargins = {};\n\t\tconst tIns = attrMeasure(bodyPr, \"tIns\");\n\t\tif (tIns !== void 0) insMargins.top = tIns;\n\t\tconst bIns = attrMeasure(bodyPr, \"bIns\");\n\t\tif (bIns !== void 0) insMargins.bottom = bIns;\n\t\tconst lIns = attrMeasure(bodyPr, \"lIns\");\n\t\tif (lIns !== void 0) insMargins.left = lIns;\n\t\tconst rIns = attrMeasure(bodyPr, \"rIns\");\n\t\tif (rIns !== void 0) insMargins.right = rIns;\n\t\tif (Object.keys(insMargins).length > 0) result.margins = {\n\t\t\t...result.margins,\n\t\t\t...insMargins\n\t\t};\n\t\tif (attrs[\"numCol\"] !== void 0) result.columns = Number(attrs[\"numCol\"]);\n\t\tif (attrs[\"spcCol\"] !== void 0) result.columnSpacing = Number(attrs[\"spcCol\"]) / 100;\n\t\tconst marT = attrMeasure(bodyPr, \"marT\");\n\t\tif (marT !== void 0) result.marginTop = marT;\n\t\tconst marB = attrMeasure(bodyPr, \"marB\");\n\t\tif (marB !== void 0) result.marginBottom = marB;\n\t\tconst normAutofit = findChild(bodyPr, \"a:normAutofit\");\n\t\tif (normAutofit) {\n\t\t\tresult.autoFit = \"normal\";\n\t\t\tconst fontScale = attrNum(normAutofit, \"fontScale\");\n\t\t\tif (fontScale !== void 0) result.autoFitFontScale = fontScale;\n\t\t\tconst lnSpcReduction = attrNum(normAutofit, \"lnSpcReduction\");\n\t\t\tif (lnSpcReduction !== void 0) result.autoFitLineSpaceReduction = lnSpcReduction;\n\t\t} else if (findChild(bodyPr, \"a:spAutoFit\")) result.autoFit = \"shape\";\n\t\telse if (findChild(bodyPr, \"a:noAutofit\")) result.autoFit = \"none\";\n\t}\n\tconst paragraphs = [];\n\tif (txBody.elements) {\n\t\tfor (const child of txBody.elements) if (child.name === \"a:p\") {\n\t\t\tconst para = paragraphDesc.parse(child, ctx);\n\t\t\tparagraphs.push(para);\n\t\t}\n\t}\n\tconst [onlyPara] = paragraphs;\n\tif (paragraphs.length === 1 && onlyPara?.text && !onlyPara?.properties) result.text = onlyPara.text;\n\telse if (paragraphs.length > 0) result.children = paragraphs.map((p) => {\n\t\tif (p.text) return p.text;\n\t\treturn p;\n\t});\n\treturn result;\n}\n/** Map file extension to PictureOptions type. */\nfunction imageTypeFromPath$1(path) {\n\tswitch (path.split(\".\").pop()?.toLowerCase() ?? \"\") {\n\t\tcase \"jpg\":\n\t\tcase \"jpeg\": return \"jpg\";\n\t\tcase \"png\": return \"png\";\n\t\tcase \"gif\": return \"gif\";\n\t\tcase \"bmp\": return \"bmp\";\n\t\tcase \"emf\": return \"emf\";\n\t\tcase \"wmf\": return \"wmf\";\n\t\tdefault: return \"png\";\n\t}\n}\n/** Extract color and alpha from an effect element's child color element. */\nfunction extractColorFromElement(el) {\n\tfor (const child of el.elements ?? []) if (child.name === \"a:srgbClr\") {\n\t\tconst color = child.attributes?.[\"val\"] ? String(child.attributes[\"val\"]) : void 0;\n\t\tlet alpha;\n\t\tfor (const transform of child.elements ?? []) if (transform.name === \"a:alpha\") {\n\t\t\tconst val = attrNum(transform, \"val\");\n\t\t\tif (val !== void 0) alpha = Math.round(val / 1e3);\n\t\t}\n\t\treturn {\n\t\t\tcolor,\n\t\t\talpha\n\t\t};\n\t}\n}\n/** Parse 2D effects (a:effectLst) into PPTX EffectsOptions fields. */\nfunction readEffectList(effectLst) {\n\tconst opts = {};\n\tfor (const child of effectLst.elements ?? []) {\n\t\tif (!child.name) continue;\n\t\tswitch (child.name) {\n\t\t\tcase \"a:outerShdw\": {\n\t\t\t\tconst shadow = {};\n\t\t\t\tconst blurRad = attrNum(child, \"blurRad\");\n\t\t\t\tif (blurRad !== void 0) shadow.blur = blurRad;\n\t\t\t\tconst dist = attrNum(child, \"dist\");\n\t\t\t\tif (dist !== void 0) shadow.distance = dist;\n\t\t\t\tconst dir = attrNum(child, \"dir\");\n\t\t\t\tif (dir !== void 0) shadow.direction = dir;\n\t\t\t\tconst color = extractColorFromElement(child);\n\t\t\t\tif (color) {\n\t\t\t\t\tif (color.color) shadow.color = color.color;\n\t\t\t\t\tif (color.alpha !== void 0) shadow.alpha = color.alpha;\n\t\t\t\t}\n\t\t\t\topts.outerShadow = shadow;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"a:innerShdw\": {\n\t\t\t\tconst shadow = {};\n\t\t\t\tconst blurRad = attrNum(child, \"blurRad\");\n\t\t\t\tif (blurRad !== void 0) shadow.blur = blurRad;\n\t\t\t\tconst dist = attrNum(child, \"dist\");\n\t\t\t\tif (dist !== void 0) shadow.distance = dist;\n\t\t\t\tconst dir = attrNum(child, \"dir\");\n\t\t\t\tif (dir !== void 0) shadow.direction = dir;\n\t\t\t\tconst color = extractColorFromElement(child);\n\t\t\t\tif (color) {\n\t\t\t\t\tif (color.color) shadow.color = color.color;\n\t\t\t\t\tif (color.alpha !== void 0) shadow.alpha = color.alpha;\n\t\t\t\t}\n\t\t\t\topts.innerShadow = shadow;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"a:glow\": {\n\t\t\t\tconst glow = {};\n\t\t\t\tconst rad = attrNum(child, \"rad\");\n\t\t\t\tif (rad !== void 0) glow.radius = rad;\n\t\t\t\tconst color = extractColorFromElement(child);\n\t\t\t\tif (color) {\n\t\t\t\t\tif (color.color) glow.color = color.color;\n\t\t\t\t\tif (color.alpha !== void 0) glow.alpha = color.alpha;\n\t\t\t\t}\n\t\t\t\topts.glow = glow;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"a:reflection\": {\n\t\t\t\tconst reflection = {};\n\t\t\t\tconst blurRad = attrNum(child, \"blurRad\");\n\t\t\t\tif (blurRad !== void 0) reflection.blurRadius = blurRad;\n\t\t\t\tconst dist = attrNum(child, \"dist\");\n\t\t\t\tif (dist !== void 0) reflection.distance = dist;\n\t\t\t\tconst dir = attrNum(child, \"dir\");\n\t\t\t\tif (dir !== void 0) reflection.direction = dir;\n\t\t\t\tconst stA = attrNum(child, \"stA\");\n\t\t\t\tif (stA !== void 0) reflection.startAlpha = stA / 1e3;\n\t\t\t\tconst stPos = attrNum(child, \"stPos\");\n\t\t\t\tif (stPos !== void 0) reflection.startPosition = stPos / 1e3;\n\t\t\t\tconst endA = attrNum(child, \"endA\");\n\t\t\t\tif (endA !== void 0) reflection.endAlpha = endA / 1e3;\n\t\t\t\tconst endPos = attrNum(child, \"endPos\");\n\t\t\t\tif (endPos !== void 0) reflection.endPosition = endPos / 1e3;\n\t\t\t\tconst fadeDir = attrNum(child, \"fadeDir\");\n\t\t\t\tif (fadeDir !== void 0) reflection.fadeDirection = fadeDir / 6e4;\n\t\t\t\tconst sx = attrNum(child, \"sx\");\n\t\t\t\tif (sx !== void 0) reflection.scaleX = sx / 1e3;\n\t\t\t\tconst sy = attrNum(child, \"sy\");\n\t\t\t\tif (sy !== void 0) reflection.scaleY = sy / 1e3;\n\t\t\t\tconst kx = attrNum(child, \"kx\");\n\t\t\t\tif (kx !== void 0) reflection.skewX = kx / 6e4;\n\t\t\t\tconst ky = attrNum(child, \"ky\");\n\t\t\t\tif (ky !== void 0) reflection.skewY = ky / 6e4;\n\t\t\t\tconst algn = attr(child, \"algn\");\n\t\t\t\tif (algn) reflection.alignment = xsdRectAlignment.from(algn);\n\t\t\t\tconst rotWithShape = attr(child, \"rotWithShape\");\n\t\t\t\tif (rotWithShape !== void 0) reflection.rotateWithShape = rotWithShape !== \"0\";\n\t\t\t\topts.reflection = reflection;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"a:softEdge\": {\n\t\t\t\tconst rad = attrNum(child, \"rad\");\n\t\t\t\tif (rad !== void 0) opts.softEdge = { radius: rad };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn Object.keys(opts).length > 0 ? opts : void 0;\n}\n/** Parse effects from p:spPr (2D effects, 3D scene, 3D shape props). */\nfunction readEffectsFromSpPr(spPr) {\n\tconst opts = {};\n\tconst effectLst = findChild(spPr, \"a:effectLst\");\n\tif (effectLst) {\n\t\tconst effectOpts = readEffectList(effectLst);\n\t\tif (effectOpts) Object.assign(opts, effectOpts);\n\t}\n\tconst scene3d = findChild(spPr, \"a:scene3d\");\n\tif (scene3d) {\n\t\tconst camera = findChild(scene3d, \"a:camera\");\n\t\tif (camera) {\n\t\t\tconst rot = findChild(camera, \"a:rot\");\n\t\t\tif (rot) {\n\t\t\t\tconst rotation3d = {};\n\t\t\t\tconst lat = attrNum(rot, \"lat\");\n\t\t\t\tconst lon = attrNum(rot, \"lon\");\n\t\t\t\tconst rev = attrNum(rot, \"rev\");\n\t\t\t\tif (lat !== void 0) rotation3d.x = Math.round(lat / 6e4);\n\t\t\t\tif (lon !== void 0) rotation3d.y = Math.round(lon / 6e4);\n\t\t\t\tif (rev !== void 0) rotation3d.z = Math.round(rev / 6e4);\n\t\t\t\tconst fov = attrNum(camera, \"fov\");\n\t\t\t\tif (fov !== void 0) rotation3d.perspective = fov;\n\t\t\t\tif (Object.keys(rotation3d).length > 0) opts.rotation3D = rotation3d;\n\t\t\t}\n\t\t}\n\t\tconst lightRig = findChild(scene3d, \"a:lightRig\");\n\t\tif (lightRig) {\n\t\t\tconst rig = attr(lightRig, \"rig\");\n\t\t\tif (rig) opts.lighting = rig;\n\t\t}\n\t}\n\tconst sp3d = findChild(spPr, \"a:sp3d\");\n\tif (sp3d) {\n\t\tconst bevelT = findChild(sp3d, \"a:bevelT\");\n\t\tif (bevelT) {\n\t\t\tconst bevel = {};\n\t\t\tconst w = attrNum(bevelT, \"w\");\n\t\t\tconst h = attrNum(bevelT, \"h\");\n\t\t\tif (w !== void 0) bevel.width = w;\n\t\t\tif (h !== void 0) bevel.height = h;\n\t\t\tconst prst = attr(bevelT, \"prst\");\n\t\t\tif (prst) bevel.preset = prst;\n\t\t\tif (Object.keys(bevel).length > 0) opts.bevelTop = bevel;\n\t\t}\n\t\tconst bevelB = findChild(sp3d, \"a:bevelB\");\n\t\tif (bevelB) {\n\t\t\tconst bevel = {};\n\t\t\tconst w = attrNum(bevelB, \"w\");\n\t\t\tconst h = attrNum(bevelB, \"h\");\n\t\t\tif (w !== void 0) bevel.width = w;\n\t\t\tif (h !== void 0) bevel.height = h;\n\t\t\tconst prst = attr(bevelB, \"prst\");\n\t\t\tif (prst) bevel.preset = prst;\n\t\t\tif (Object.keys(bevel).length > 0) opts.bevelBottom = bevel;\n\t\t}\n\t\tconst z = attrNum(sp3d, \"z\");\n\t\tif (z !== void 0) opts.depth = z;\n\t\tconst contourW = attrNum(sp3d, \"contourW\");\n\t\tif (contourW !== void 0) opts.contourWidth = contourW;\n\t\tconst extrusionH = attrNum(sp3d, \"extrusionH\");\n\t\tif (extrusionH !== void 0) opts.extrusionH = extrusionH;\n\t\tconst prstMaterial = attr(sp3d, \"prstMaterial\");\n\t\tif (prstMaterial) opts.material = prstMaterial;\n\t}\n\treturn Object.keys(opts).length > 0 ? opts : void 0;\n}\n//#endregion\n//#region src/parts/descriptors/background.ts\nconst backgroundDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\treturn stringifyBackgroundInner(opts);\n\t},\n\tparse(el, ctx) {\n\t\treturn parseBackground(el, ctx);\n\t}\n};\nfunction stringifyBackgroundInner(opts) {\n\tconst bgAttrs = [];\n\tif (opts.blackWhiteMode) bgAttrs.push(` p:bwMode=\"${opts.blackWhiteMode}\"`);\n\tconst bgPrAttrs = [];\n\tif (opts.shadeToTitle) bgPrAttrs.push(\" shadeToTitle=\\\"1\\\"\");\n\tconst fillXml = buildFill(opts.fill ?? { type: \"none\" });\n\tlet effectsXml = \"\";\n\tif (opts.effects) {\n\t\tconst el = createPptxEffectList(opts.effects);\n\t\tif (el) effectsXml = el;\n\t}\n\treturn `<p:bg${bgAttrs.join(\"\")}><p:bgPr${bgPrAttrs.join(\"\")}>${fillXml}${effectsXml}</p:bgPr></p:bg>`;\n}\nfunction parseBackground(el, ctx) {\n\tconst result = {};\n\tif (el.attributes?.[\"p:bwMode\"]) result.blackWhiteMode = String(el.attributes[\"p:bwMode\"]);\n\tconst bgPr = findChild(el, \"p:bgPr\");\n\tif (bgPr) {\n\t\tif (bgPr.attributes?.[\"shadeToTitle\"] === \"1\") result.shadeToTitle = true;\n\t\tconst fillResult = parse$1(fillDesc, bgPr, ctx);\n\t\tif (fillResult && Object.keys(fillResult).length > 0) result.fill = fillResult;\n\t\tconst effectLst = findChild(bgPr, \"a:effectLst\");\n\t\tif (effectLst) {\n\t\t\tconst effects = readEffectList(effectLst);\n\t\t\tif (effects) result.effects = effects;\n\t\t}\n\t}\n\treturn result;\n}\n//#endregion\n//#region src/parts/descriptors/chart.ts\n/**\n* Chart (p:graphicFrame) descriptor for PPTX.\n*\n* Produces a graphicFrame with a chart reference placeholder.\n* The actual chart data is registered in PptxWriteContext for\n* separate compilation by the compiler.\n*\n* @module\n*/\nlet _nextChartId = 2048;\nconst chartDesc = {\n\tkind: \"custom\",\n\tstringify(opts, ctx) {\n\t\tconst pptxCtx = ctx;\n\t\tconst id = opts.id ?? _nextChartId++;\n\t\tconst name = opts.name ?? `Chart ${id}`;\n\t\tconst chartKey = opts.chartKey ?? pptxCtx.nextChartKey();\n\t\tconst chartXml = stringify$1(chartSpaceDesc, opts, ctx);\n\t\tif (chartXml) pptxCtx.addChart(chartKey, {\n\t\t\tkey: chartKey,\n\t\t\tchartSpaceXml: chartXml\n\t\t});\n\t\tconst x = convertToEmu(opts.x ?? 0);\n\t\tconst y = convertToEmu(opts.y ?? 0);\n\t\tconst w = convertToEmu(opts.width ?? \"100px\");\n\t\tconst h = convertToEmu(opts.height ?? \"100px\");\n\t\tconst parts = [];\n\t\tparts.push(`<p:nvGraphicFramePr><p:cNvPr id=\"${id}\" name=\"${escapeXml(name)}\"/><p:cNvGraphicFramePr><a:graphicFrameLocks noGrp=\"1\"/></p:cNvGraphicFramePr><p:nvPr/></p:nvGraphicFramePr>`);\n\t\tparts.push(`<p:xfrm><a:off x=\"${x}\" y=\"${y}\"/><a:ext cx=\"${w}\" cy=\"${h}\"/></p:xfrm>`);\n\t\tparts.push(`<a:graphic><a:graphicData uri=\"http://schemas.openxmlformats.org/drawingml/2006/chart\"><c:chart xmlns:c=\"http://schemas.openxmlformats.org/drawingml/2006/chart\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" r:id=\"{chart:${chartKey}}\"/></a:graphicData></a:graphic>`);\n\t\treturn `<p:graphicFrame>${parts.join(\"\")}</p:graphicFrame>`;\n\t},\n\tparse(el, _ctx) {\n\t\tconst result = {};\n\t\tconst nvGfxFramePr = findChild(el, \"p:nvGraphicFramePr\");\n\t\tif (nvGfxFramePr) {\n\t\t\tconst cNvPr = findChild(nvGfxFramePr, \"p:cNvPr\");\n\t\t\tif (cNvPr) {\n\t\t\t\tconst id = attrNum(cNvPr, \"id\");\n\t\t\t\tif (id !== void 0) result.id = id;\n\t\t\t\tconst name = attr(cNvPr, \"name\");\n\t\t\t\tif (name) result.name = name;\n\t\t\t}\n\t\t}\n\t\tconst xfrm = findChild(el, \"p:xfrm\");\n\t\tif (xfrm) Object.assign(result, readPositionFromXfrm(xfrm));\n\t\tconst chartRef = findFirst(el, \"c:chart\");\n\t\tif (chartRef) {\n\t\t\tconst rId = attr(chartRef, \"r:id\");\n\t\t\tif (rId) {\n\t\t\t\tconst chartPath = _ctx.resolveRelationship(rId);\n\t\t\t\tif (chartPath) {\n\t\t\t\t\tconst chartXml = _ctx.getPart(chartPath);\n\t\t\t\t\tif (chartXml) {\n\t\t\t\t\t\tconst chartOpts = parseChartXml(chartXml);\n\t\t\t\t\t\tif (chartOpts) Object.assign(result, chartOpts);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n};\n/** Parse chart XML (c:chartSpace) into chart options. */\nfunction parseChartXml(el) {\n\tconst chart = findChild(el, \"c:chart\");\n\tif (!chart) return void 0;\n\tconst opts = {};\n\tconst titleEl = findChild(chart, \"c:title\");\n\tif (titleEl) {\n\t\tconst rich = findFirst(titleEl, \"c:rich\");\n\t\tif (rich) {\n\t\t\tconst t = findFirst(rich, \"a:t\");\n\t\t\tif (t) {\n\t\t\t\tconst title = textOf(t);\n\t\t\t\tif (title) opts.title = title;\n\t\t\t}\n\t\t}\n\t}\n\tconst plotArea = findChild(chart, \"c:plotArea\");\n\tif (!plotArea) return void 0;\n\tlet chartType;\n\tlet typeElement;\n\tfor (const child of plotArea.elements ?? []) {\n\t\tswitch (child.name) {\n\t\t\tcase \"c:barChart\": {\n\t\t\t\tconst barDir = findChild(child, \"c:barDir\");\n\t\t\t\tchartType = barDir && attr(barDir, \"val\") === \"bar\" ? \"bar\" : \"column\";\n\t\t\t\ttypeElement = child;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"c:lineChart\":\n\t\t\t\tchartType = \"line\";\n\t\t\t\ttypeElement = child;\n\t\t\t\tbreak;\n\t\t\tcase \"c:pieChart\":\n\t\t\t\tchartType = \"pie\";\n\t\t\t\ttypeElement = child;\n\t\t\t\tbreak;\n\t\t\tcase \"c:areaChart\":\n\t\t\t\tchartType = \"area\";\n\t\t\t\ttypeElement = child;\n\t\t\t\tbreak;\n\t\t\tcase \"c:scatterChart\":\n\t\t\t\tchartType = \"scatter\";\n\t\t\t\ttypeElement = child;\n\t\t\t\tbreak;\n\t\t}\n\t\tif (chartType) break;\n\t}\n\tif (!chartType || !typeElement) return void 0;\n\topts.type = chartType;\n\tconst series = [];\n\tlet categories;\n\tfor (const serEl of typeElement.elements ?? []) {\n\t\tif (serEl.name !== \"c:ser\") continue;\n\t\tconst nameParts = extractStrCache(serEl, \"c:tx\");\n\t\tconst cats = extractStrCache(serEl, \"c:cat\");\n\t\tif (cats.length > 0 && !categories) categories = cats;\n\t\tconst vals = extractNumCache(serEl);\n\t\tseries.push({\n\t\t\tname: nameParts[0] ?? \"\",\n\t\t\tvalues: vals\n\t\t});\n\t}\n\topts.categories = categories ?? [];\n\topts.series = series;\n\topts.showLegend = findChild(chart, \"c:legend\") !== void 0;\n\tconst styleEl = findChild(el, \"c:style\");\n\tif (styleEl) {\n\t\tconst val = attrNum(styleEl, \"val\");\n\t\tif (val !== void 0) opts.style = val;\n\t}\n\treturn opts;\n}\nfunction extractStrCache(serEl, tag) {\n\tconst txEl = findChild(serEl, tag);\n\tif (!txEl) return [];\n\tconst strRef = findChild(txEl, \"c:strRef\");\n\tif (!strRef) return [];\n\tconst strCache = findChild(strRef, \"c:strCache\");\n\tif (!strCache) return [];\n\tconst parts = [];\n\tfor (const pt of strCache.elements ?? []) {\n\t\tif (pt.name !== \"c:pt\") continue;\n\t\tconst v = findChild(pt, \"c:v\");\n\t\tif (v) {\n\t\t\tconst text = textOf(v);\n\t\t\tif (text) parts.push(text);\n\t\t}\n\t}\n\treturn parts;\n}\nfunction extractNumCache(serEl) {\n\tconst valEl = findChild(serEl, \"c:val\") ?? findChild(serEl, \"c:yVal\");\n\tif (!valEl) return [];\n\tconst numRef = findChild(valEl, \"c:numRef\");\n\tif (!numRef) return [];\n\tconst numCache = findChild(numRef, \"c:numCache\");\n\tif (!numCache) return [];\n\tconst vals = [];\n\tfor (const pt of numCache.elements ?? []) {\n\t\tif (pt.name !== \"c:pt\") continue;\n\t\tconst v = findChild(pt, \"c:v\");\n\t\tif (v) {\n\t\t\tconst text = textOf(v);\n\t\t\tif (text) vals.push(parseFloat(text));\n\t\t}\n\t}\n\treturn vals;\n}\n//#endregion\n//#region src/parts/descriptors/group.ts\n/**\n* Group shape descriptor for PPTX.\n*\n* @module\n*/\nlet _nextGroupId = 200;\nconst groupShapeDesc = {\n\tkind: \"custom\",\n\tstringify(opts, ctx) {\n\t\tconst descCtx = ctx;\n\t\tconst id = opts.id ?? _nextGroupId++;\n\t\tconst name = opts.name ?? \"Group\";\n\t\tconst x = convertToEmu(opts.x ?? 0);\n\t\tconst y = convertToEmu(opts.y ?? 0);\n\t\tconst w = convertToEmu(opts.width ?? \"100px\");\n\t\tconst h = convertToEmu(opts.height ?? \"100px\");\n\t\tconst chOffX = opts.childOffset ? convertToEmu(opts.childOffset.x) : x;\n\t\tconst chOffY = opts.childOffset ? convertToEmu(opts.childOffset.y) : y;\n\t\tconst chExtCx = opts.childExtent ? convertToEmu(opts.childExtent.cx) : w;\n\t\tconst chExtCy = opts.childExtent ? convertToEmu(opts.childExtent.cy) : h;\n\t\tconst xfrmAttrs = [];\n\t\tif (opts.flipHorizontal) xfrmAttrs.push(\" flipH=\\\"1\\\"\");\n\t\tif (opts.rotation !== void 0) xfrmAttrs.push(` rot=\"${opts.rotation}\"`);\n\t\tconst grpSpPrParts = [`<a:xfrm${xfrmAttrs.join(\"\")}><a:off x=\"${x}\" y=\"${y}\"/><a:ext cx=\"${w}\" cy=\"${h}\"/><a:chOff x=\"${chOffX}\" y=\"${chOffY}\"/><a:chExt cx=\"${chExtCx}\" cy=\"${chExtCy}\"/></a:xfrm>`];\n\t\tif (opts.fill) {\n\t\t\tconst fillXml = stringify$1(fillDesc, opts.fill, descCtx);\n\t\t\tif (fillXml) grpSpPrParts.push(fillXml);\n\t\t}\n\t\tif (opts.effects) {\n\t\t\tconst effectListOpts = toEffectListOptions$1(opts.effects);\n\t\t\tif (effectListOpts) {\n\t\t\t\tconst fxXml = stringify$1(effectListDesc, effectListOpts, descCtx);\n\t\t\t\tif (fxXml) grpSpPrParts.push(fxXml);\n\t\t\t}\n\t\t}\n\t\tconst parts = [];\n\t\tparts.push(`<p:nvGrpSpPr><p:cNvPr id=\"${id}\" name=\"${escapeXml(name)}\"/><p:cNvGrpSpPr/><p:nvPr/></p:nvGrpSpPr>`);\n\t\tparts.push(`<p:grpSpPr>${grpSpPrParts.join(\"\")}</p:grpSpPr>`);\n\t\tif (opts.children) for (const child of opts.children) {\n\t\t\tconst xml = stringifyChild(child, descCtx);\n\t\t\tif (xml) parts.push(xml);\n\t\t}\n\t\treturn `<p:grpSp>${parts.join(\"\")}</p:grpSp>`;\n\t},\n\tparse(el, ctx) {\n\t\tconst result = {};\n\t\tconst nvGrpSpPr = findChild(el, \"p:nvGrpSpPr\");\n\t\tif (nvGrpSpPr) {\n\t\t\tconst cNvPr = findChild(nvGrpSpPr, \"p:cNvPr\");\n\t\t\tif (cNvPr) {\n\t\t\t\tconst id = attrNum(cNvPr, \"id\");\n\t\t\t\tif (id !== void 0) result.id = id;\n\t\t\t\tconst name = attr(cNvPr, \"name\");\n\t\t\t\tif (name) result.name = name;\n\t\t\t}\n\t\t}\n\t\tconst grpSpPr = findChild(el, \"p:grpSpPr\");\n\t\tif (grpSpPr) {\n\t\t\tconst xfrm = findChild(grpSpPr, \"a:xfrm\");\n\t\t\tif (xfrm) {\n\t\t\t\tconst off = findChild(xfrm, \"a:off\");\n\t\t\t\tif (off) {\n\t\t\t\t\tconst x = attrNum(off, \"x\");\n\t\t\t\t\tif (x !== void 0) result.x = x;\n\t\t\t\t\tconst y = attrNum(off, \"y\");\n\t\t\t\t\tif (y !== void 0) result.y = y;\n\t\t\t\t}\n\t\t\t\tconst ext = findChild(xfrm, \"a:ext\");\n\t\t\t\tif (ext) {\n\t\t\t\t\tconst cx = attrNum(ext, \"cx\");\n\t\t\t\t\tif (cx !== void 0) result.width = cx;\n\t\t\t\t\tconst cy = attrNum(ext, \"cy\");\n\t\t\t\t\tif (cy !== void 0) result.height = cy;\n\t\t\t\t}\n\t\t\t\tconst chOff = findChild(xfrm, \"a:chOff\");\n\t\t\t\tif (chOff) {\n\t\t\t\t\tconst cox = attrNum(chOff, \"x\");\n\t\t\t\t\tconst coy = attrNum(chOff, \"y\");\n\t\t\t\t\tif (cox !== void 0 && coy !== void 0) result.childOffset = {\n\t\t\t\t\t\tx: cox,\n\t\t\t\t\t\ty: coy\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst chExt = findChild(xfrm, \"a:chExt\");\n\t\t\t\tif (chExt) {\n\t\t\t\t\tconst ccx = attrNum(chExt, \"cx\");\n\t\t\t\t\tconst ccy = attrNum(chExt, \"cy\");\n\t\t\t\t\tif (ccx !== void 0 && ccy !== void 0) result.childExtent = {\n\t\t\t\t\t\tcx: ccx,\n\t\t\t\t\t\tcy: ccy\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst rot = attrNum(xfrm, \"rot\");\n\t\t\t\tif (rot !== void 0) result.rotation = rot;\n\t\t\t\tif (attrBool(xfrm, \"flipH\")) result.flipHorizontal = true;\n\t\t\t}\n\t\t\tif (findChild(grpSpPr, \"a:solidFill\") || findChild(grpSpPr, \"a:noFill\") || findChild(grpSpPr, \"a:gradFill\") || findChild(grpSpPr, \"a:pattFill\") || findChild(grpSpPr, \"a:blipFill\")) result.fill = parse$1(fillDesc, grpSpPr, ctx);\n\t\t\tconst effectLst = findChild(grpSpPr, \"a:effectLst\");\n\t\t\tif (effectLst) result.effects = parse$1(effectListDesc, effectLst, ctx);\n\t\t}\n\t\tconst groupChildren = [];\n\t\tfor (const child of el.elements ?? []) {\n\t\t\tif (child.name === \"p:nvGrpSpPr\" || child.name === \"p:grpSpPr\") continue;\n\t\t\tconst parsed = parseChild(child, ctx);\n\t\t\tif (parsed !== void 0) groupChildren.push(parsed);\n\t\t}\n\t\tif (groupChildren.length > 0) result.children = groupChildren;\n\t\treturn result;\n\t}\n};\n//#endregion\n//#region src/parts/descriptors/line.ts\n/**\n* Line and Connector descriptors for PPTX.\n*\n* @module\n*/\nlet _nextLineId = 2;\nlet _nextConnectorId = 2;\nconst lineShapeDesc = {\n\tkind: \"custom\",\n\tstringify(opts, ctx) {\n\t\tconst id = opts.id ?? _nextLineId++;\n\t\tconst name = opts.name ?? `Line ${id}`;\n\t\tconst x1 = convertToEmu(opts.x1 ?? 0);\n\t\tconst y1 = convertToEmu(opts.y1 ?? 0);\n\t\tconst x2 = convertToEmu(opts.x2 ?? \"100px\");\n\t\tconst y2 = convertToEmu(opts.y2 ?? \"100px\");\n\t\tconst offX = Math.min(x1, x2);\n\t\tconst offY = Math.min(y1, y2);\n\t\tconst parts = [];\n\t\tparts.push(`<p:nvSpPr><p:cNvPr id=\"${id}\" name=\"${escapeXml(name)}\"/><p:cNvSpPr/><p:nvPr/></p:nvSpPr>`);\n\t\tconst spPrParts = [];\n\t\tconst xfrmAttrs = [];\n\t\tif (x1 > x2) xfrmAttrs.push(\" flipH=\\\"1\\\"\");\n\t\tif (y1 > y2) xfrmAttrs.push(\" flipV=\\\"1\\\"\");\n\t\tspPrParts.push(`<a:xfrm${xfrmAttrs.join(\"\")}><a:off x=\"${offX}\" y=\"${offY}\"/><a:ext cx=\"${Math.abs(x2 - x1)}\" cy=\"${Math.abs(y2 - y1)}\"/></a:xfrm>`);\n\t\tspPrParts.push(\"<a:prstGeom prst=\\\"line\\\"><a:avLst/></a:prstGeom>\");\n\t\tif (opts.fill !== void 0) {\n\t\t\tconst fillXml = stringify$1(fillDesc, opts.fill, ctx);\n\t\t\tif (fillXml) spPrParts.push(fillXml);\n\t\t}\n\t\tif (opts.outline) {\n\t\t\tconst outlineXml = stringify$1(outlineDesc, toCoreOutlineOptions(opts.outline), ctx);\n\t\t\tif (outlineXml) spPrParts.push(outlineXml);\n\t\t}\n\t\tparts.push(`<p:spPr>${spPrParts.join(\"\")}</p:spPr>`);\n\t\tparts.push(\"<p:txBody><a:bodyPr wrap=\\\"square\\\"/><a:lstStyle/><a:p/></p:txBody>\");\n\t\treturn `<p:sp>${parts.join(\"\")}</p:sp>`;\n\t},\n\tparse(el, _ctx) {\n\t\tconst result = {};\n\t\tconst nvSpPr = findChild(el, \"p:nvSpPr\");\n\t\tif (nvSpPr) {\n\t\t\tconst cNvPr = findChild(nvSpPr, \"p:cNvPr\");\n\t\t\tif (cNvPr) {\n\t\t\t\tconst id = attrNum(cNvPr, \"id\");\n\t\t\t\tif (id !== void 0) result.id = id;\n\t\t\t\tconst name = attr(cNvPr, \"name\");\n\t\t\t\tif (name) result.name = name;\n\t\t\t}\n\t\t}\n\t\tconst spPr = findChild(el, \"p:spPr\");\n\t\tif (spPr) {\n\t\t\tconst xfrm = findChild(spPr, \"a:xfrm\");\n\t\t\tif (xfrm) {\n\t\t\t\tconst off = findChild(xfrm, \"a:off\");\n\t\t\t\tconst ext = findChild(xfrm, \"a:ext\");\n\t\t\t\tconst flipH = attrBool(xfrm, \"flipH\");\n\t\t\t\tconst flipV = attrBool(xfrm, \"flipV\");\n\t\t\t\tif (off && ext) {\n\t\t\t\t\tconst offX = attrNum(off, \"x\") ?? 0;\n\t\t\t\t\tconst offY = attrNum(off, \"y\") ?? 0;\n\t\t\t\t\tconst cx = attrNum(ext, \"cx\") ?? 0;\n\t\t\t\t\tconst cy = attrNum(ext, \"cy\") ?? 0;\n\t\t\t\t\tconst x1 = flipH ? offX + cx : offX;\n\t\t\t\t\tconst y1 = flipV ? offY + cy : offY;\n\t\t\t\t\tconst x2 = flipH ? offX : offX + cx;\n\t\t\t\t\tconst y2 = flipV ? offY : offY + cy;\n\t\t\t\t\tresult.x1 = x1;\n\t\t\t\t\tresult.y1 = y1;\n\t\t\t\t\tresult.x2 = x2;\n\t\t\t\t\tresult.y2 = y2;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (findChild(spPr, \"a:solidFill\") || findChild(spPr, \"a:noFill\") || findChild(spPr, \"a:gradFill\") || findChild(spPr, \"a:pattFill\") || findChild(spPr, \"a:blipFill\")) result.fill = parse$1(fillDesc, spPr, _ctx);\n\t\t\tconst ln = findChild(spPr, \"a:ln\");\n\t\t\tif (ln) result.outline = readOutlineCompat(ln);\n\t\t}\n\t\treturn result;\n\t}\n};\nconst ARROWHEAD_MAP = {\n\ttriangle: \"triangle\",\n\tstealth: \"stealth\",\n\tdiamond: \"diamond\",\n\toval: \"oval\",\n\topen: \"arrow\",\n\tnone: \"none\"\n};\n/** Reverse map: OOXML ST_LineEndType -> library ArrowheadType. */\nconst XML_TO_ARROWHEAD = {\n\ttriangle: \"triangle\",\n\tstealth: \"stealth\",\n\tdiamond: \"diamond\",\n\toval: \"oval\",\n\tarrow: \"open\",\n\tnone: \"none\"\n};\nconst connectorShapeDesc = {\n\tkind: \"custom\",\n\tstringify(opts, ctx) {\n\t\tconst id = opts.id ?? _nextConnectorId++;\n\t\tconst name = opts.name ?? `Connector ${id}`;\n\t\tconst x1 = convertToEmu(opts.x1 ?? 0);\n\t\tconst y1 = convertToEmu(opts.y1 ?? 0);\n\t\tconst x2 = convertToEmu(opts.x2 ?? \"100px\");\n\t\tconst y2 = convertToEmu(opts.y2 ?? \"100px\");\n\t\tconst offX = Math.min(x1, x2);\n\t\tconst offY = Math.min(y1, y2);\n\t\tconst parts = [];\n\t\tparts.push(`<p:nvCxnSpPr><p:cNvPr id=\"${id}\" name=\"${escapeXml(name)}\"/><p:cNvCxnSpPr/><p:nvPr/></p:nvCxnSpPr>`);\n\t\tconst spPrParts = [];\n\t\tconst xfrmAttrs = [];\n\t\tif (x1 > x2) xfrmAttrs.push(\" flipH=\\\"1\\\"\");\n\t\tif (y1 > y2) xfrmAttrs.push(\" flipV=\\\"1\\\"\");\n\t\tspPrParts.push(`<a:xfrm${xfrmAttrs.join(\"\")}><a:off x=\"${offX}\" y=\"${offY}\"/><a:ext cx=\"${Math.abs(x2 - x1)}\" cy=\"${Math.abs(y2 - y1)}\"/></a:xfrm>`);\n\t\tspPrParts.push(\"<a:prstGeom prst=\\\"line\\\"><a:avLst/></a:prstGeom>\");\n\t\tif (opts.fill !== void 0) {\n\t\t\tconst fillXml = stringify$1(fillDesc, opts.fill, ctx);\n\t\t\tif (fillXml) spPrParts.push(fillXml);\n\t\t}\n\t\tconst coreOutline = opts.outline ? toCoreOutlineOptions(opts.outline) : {};\n\t\tconst hasArrowheads = opts.beginArrowhead || opts.endArrowhead;\n\t\tif (opts.outline || hasArrowheads) {\n\t\t\tif (hasArrowheads) {\n\t\t\t\tif (opts.beginArrowhead) coreOutline.tailEnd = {\n\t\t\t\t\ttype: ARROWHEAD_MAP[opts.beginArrowhead] ?? \"none\",\n\t\t\t\t\t...opts.arrowheadWidth ? { w: opts.arrowheadWidth } : {},\n\t\t\t\t\t...opts.arrowheadLength ? { len: opts.arrowheadLength } : {}\n\t\t\t\t};\n\t\t\t\tif (opts.endArrowhead) coreOutline.headEnd = {\n\t\t\t\t\ttype: ARROWHEAD_MAP[opts.endArrowhead] ?? \"none\",\n\t\t\t\t\t...opts.arrowheadWidth ? { w: opts.arrowheadWidth } : {},\n\t\t\t\t\t...opts.arrowheadLength ? { len: opts.arrowheadLength } : {}\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst outlineXml = stringify$1(outlineDesc, coreOutline, ctx);\n\t\t\tif (outlineXml) spPrParts.push(outlineXml);\n\t\t}\n\t\tparts.push(`<p:spPr>${spPrParts.join(\"\")}</p:spPr>`);\n\t\treturn `<p:cxnSp>${parts.join(\"\")}</p:cxnSp>`;\n\t},\n\tparse(el, _ctx) {\n\t\tconst result = {};\n\t\tconst nvCxnSpPr = findChild(el, \"p:nvCxnSpPr\");\n\t\tif (nvCxnSpPr) {\n\t\t\tconst cNvPr = findChild(nvCxnSpPr, \"p:cNvPr\");\n\t\t\tif (cNvPr) {\n\t\t\t\tconst id = attrNum(cNvPr, \"id\");\n\t\t\t\tif (id !== void 0) result.id = id;\n\t\t\t\tconst name = attr(cNvPr, \"name\");\n\t\t\t\tif (name) result.name = name;\n\t\t\t}\n\t\t}\n\t\tconst spPr = findChild(el, \"p:spPr\");\n\t\tif (spPr) {\n\t\t\tconst xfrm = findChild(spPr, \"a:xfrm\");\n\t\t\tif (xfrm) {\n\t\t\t\tconst off = findChild(xfrm, \"a:off\");\n\t\t\t\tconst ext = findChild(xfrm, \"a:ext\");\n\t\t\t\tconst flipH = attrBool(xfrm, \"flipH\");\n\t\t\t\tconst flipV = attrBool(xfrm, \"flipV\");\n\t\t\t\tif (off && ext) {\n\t\t\t\t\tconst offX = attrNum(off, \"x\") ?? 0;\n\t\t\t\t\tconst offY = attrNum(off, \"y\") ?? 0;\n\t\t\t\t\tconst cx = attrNum(ext, \"cx\") ?? 0;\n\t\t\t\t\tconst cy = attrNum(ext, \"cy\") ?? 0;\n\t\t\t\t\tconst x1 = flipH ? offX + cx : offX;\n\t\t\t\t\tconst y1 = flipV ? offY + cy : offY;\n\t\t\t\t\tconst x2 = flipH ? offX : offX + cx;\n\t\t\t\t\tconst y2 = flipV ? offY : offY + cy;\n\t\t\t\t\tresult.x1 = x1;\n\t\t\t\t\tresult.y1 = y1;\n\t\t\t\t\tresult.x2 = x2;\n\t\t\t\t\tresult.y2 = y2;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (findChild(spPr, \"a:solidFill\") || findChild(spPr, \"a:noFill\") || findChild(spPr, \"a:gradFill\") || findChild(spPr, \"a:pattFill\") || findChild(spPr, \"a:blipFill\")) result.fill = parse$1(fillDesc, spPr, _ctx);\n\t\t\tconst ln = findChild(spPr, \"a:ln\");\n\t\t\tif (ln) result.outline = readOutlineCompat(ln);\n\t\t\tif (ln) {\n\t\t\t\tconst headEnd = findChild(ln, \"a:headEnd\");\n\t\t\t\tif (headEnd) {\n\t\t\t\t\tconst type = attr(headEnd, \"type\");\n\t\t\t\t\tif (type) result.endArrowhead = XML_TO_ARROWHEAD[type] ?? type;\n\t\t\t\t\tconst w = attr(headEnd, \"w\");\n\t\t\t\t\tif (w) result.arrowheadWidth = xsdLineEndSize.from(w);\n\t\t\t\t\tconst len = attr(headEnd, \"len\");\n\t\t\t\t\tif (len) result.arrowheadLength = xsdLineEndSize.from(len);\n\t\t\t\t}\n\t\t\t\tconst tailEnd = findChild(ln, \"a:tailEnd\");\n\t\t\t\tif (tailEnd) {\n\t\t\t\t\tconst type = attr(tailEnd, \"type\");\n\t\t\t\t\tif (type) result.beginArrowhead = XML_TO_ARROWHEAD[type] ?? type;\n\t\t\t\t\tconst w = attr(tailEnd, \"w\");\n\t\t\t\t\tif (w && result.arrowheadWidth === void 0) result.arrowheadWidth = xsdLineEndSize.from(w);\n\t\t\t\t\tconst len = attr(tailEnd, \"len\");\n\t\t\t\t\tif (len && result.arrowheadLength === void 0) result.arrowheadLength = xsdLineEndSize.from(len);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n};\n//#endregion\n//#region src/parts/descriptors/locked-canvas.ts\n/**\n* Locked Canvas descriptor for PPTX.\n*\n* Produces a p:graphicFrame with lc:lockedCanvas.\n*\n* @module\n*/\nlet _nextLockedCanvasId = 2048;\nlet _nextCanvasShapeId = 2;\nconst lockedCanvasDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\tconst id = opts.id ?? _nextLockedCanvasId++;\n\t\tconst name = opts.name ?? `Locked Canvas ${id}`;\n\t\tconst x = convertToEmu(opts.x ?? 0);\n\t\tconst y = convertToEmu(opts.y ?? 0);\n\t\tconst cx = convertToEmu(opts.width ?? 0);\n\t\tconst cy = convertToEmu(opts.height ?? 0);\n\t\tconst parts = [];\n\t\tparts.push(`<p:nvGraphicFramePr><p:cNvPr id=\"${id}\" name=\"${escapeXml(name)}\"/><p:cNvGraphicFramePr><a:graphicFrameLocks noGrp=\"1\"/></p:cNvGraphicFramePr><p:nvPr/></p:nvGraphicFramePr>`);\n\t\tparts.push(`<p:xfrm><a:off x=\"${x}\" y=\"${y}\"/><a:ext cx=\"${cx}\" cy=\"${cy}\"/></p:xfrm>`);\n\t\tconst grpSpPr = `<a:grpSpPr><a:xfrm><a:off x=\"0\" y=\"0\"/><a:ext cx=\"${cx}\" cy=\"${cy}\"/><a:chOff x=\"0\" y=\"0\"/><a:chExt cx=\"${cx}\" cy=\"${cy}\"/></a:xfrm></a:grpSpPr>`;\n\t\tconst canvasChildren = buildCanvasChildren(opts.children);\n\t\tparts.push(`<a:graphic><a:graphicData uri=\"http://schemas.openxmlformats.org/drawingml/2006/lockedCanvas\"><lc:lockedCanvas xmlns:lc=\"http://schemas.openxmlformats.org/drawingml/2006/lockedCanvas\"><a:nvGrpSpPr><a:cNvPr id=\"0\" name=\"\"/><a:cNvGrpSpPr/></a:nvGrpSpPr>${grpSpPr}${canvasChildren}</lc:lockedCanvas></a:graphicData></a:graphic>`);\n\t\treturn `<p:graphicFrame>${parts.join(\"\")}</p:graphicFrame>`;\n\t},\n\tparse(el, _ctx) {\n\t\tconst result = {};\n\t\tconst nvGrFrm = findChild(el, \"p:nvGraphicFramePr\");\n\t\tif (nvGrFrm) {\n\t\t\tconst cnvPr = findChild(nvGrFrm, \"p:cNvPr\");\n\t\t\tif (cnvPr) {\n\t\t\t\tconst id = attrNum(cnvPr, \"id\");\n\t\t\t\tif (id !== void 0) result.id = id;\n\t\t\t\tconst name = attr(cnvPr, \"name\");\n\t\t\t\tif (name !== void 0) result.name = name;\n\t\t\t}\n\t\t}\n\t\tconst xfrm = findChild(el, \"p:xfrm\");\n\t\tif (xfrm) {\n\t\t\tconst off = findChild(xfrm, \"a:off\");\n\t\t\tif (off) {\n\t\t\t\tconst x = attrNum(off, \"x\");\n\t\t\t\tif (x !== void 0) result.x = x;\n\t\t\t\tconst y = attrNum(off, \"y\");\n\t\t\t\tif (y !== void 0) result.y = y;\n\t\t\t}\n\t\t\tconst ext = findChild(xfrm, \"a:ext\");\n\t\t\tif (ext) {\n\t\t\t\tconst cx = attrNum(ext, \"cx\");\n\t\t\t\tif (cx !== void 0) result.width = cx;\n\t\t\t\tconst cy = attrNum(ext, \"cy\");\n\t\t\t\tif (cy !== void 0) result.height = cy;\n\t\t\t}\n\t\t}\n\t\tconst graphic = findChild(el, \"a:graphic\");\n\t\tconst graphicData = graphic ? findChild(graphic, \"a:graphicData\") : void 0;\n\t\tconst lockedCanvas = graphicData ? findChild(graphicData, \"lc:lockedCanvas\") : void 0;\n\t\tif (lockedCanvas) {\n\t\t\tconst children = [];\n\t\t\tfor (const child of lockedCanvas.elements ?? []) {\n\t\t\t\tif (child.name !== \"a:sp\") continue;\n\t\t\t\tconst shape = {};\n\t\t\t\tconst spPr = findChild(child, \"a:spPr\");\n\t\t\t\tif (spPr) {\n\t\t\t\t\tconst spXfrm = findChild(spPr, \"a:xfrm\");\n\t\t\t\t\tif (spXfrm) {\n\t\t\t\t\t\tconst off = findChild(spXfrm, \"a:off\");\n\t\t\t\t\t\tif (off) {\n\t\t\t\t\t\t\tconst x = attrNum(off, \"x\");\n\t\t\t\t\t\t\tif (x !== void 0) shape.x = x;\n\t\t\t\t\t\t\tconst y = attrNum(off, \"y\");\n\t\t\t\t\t\t\tif (y !== void 0) shape.y = y;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst ext = findChild(spXfrm, \"a:ext\");\n\t\t\t\t\t\tif (ext) {\n\t\t\t\t\t\t\tconst cx = attrNum(ext, \"cx\");\n\t\t\t\t\t\t\tif (cx !== void 0) shape.width = cx;\n\t\t\t\t\t\t\tconst cy = attrNum(ext, \"cy\");\n\t\t\t\t\t\t\tif (cy !== void 0) shape.height = cy;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst prstGeom = findChild(spPr, \"a:prstGeom\");\n\t\t\t\t\tif (prstGeom) {\n\t\t\t\t\t\tconst prst = attr(prstGeom, \"prst\");\n\t\t\t\t\t\tif (prst !== void 0) shape.geometry = prst;\n\t\t\t\t\t}\n\t\t\t\t\tconst solidFill = findChild(spPr, \"a:solidFill\");\n\t\t\t\t\tif (solidFill) {\n\t\t\t\t\t\tconst srgbClr = findChild(solidFill, \"a:srgbClr\");\n\t\t\t\t\t\tif (srgbClr) {\n\t\t\t\t\t\t\tconst val = attr(srgbClr, \"val\");\n\t\t\t\t\t\t\tif (val !== void 0) shape.fill = val;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst txSp = findChild(child, \"a:txSp\");\n\t\t\t\tif (txSp) {\n\t\t\t\t\tconst txBody = findChild(txSp, \"a:txBody\");\n\t\t\t\t\tif (txBody) {\n\t\t\t\t\t\tconst txt = collectRunText(txBody);\n\t\t\t\t\t\tif (txt) shape.textBody = txt;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tchildren.push(shape);\n\t\t\t}\n\t\t\tif (children.length > 0) result.children = children;\n\t\t}\n\t\treturn result;\n\t}\n};\nfunction buildCanvasChildren(children) {\n\tif (!children || children.length === 0) return \"\";\n\tconst parts = [];\n\tfor (const opts of children) {\n\t\tconst id = _nextCanvasShapeId++;\n\t\tconst spParts = [];\n\t\tspParts.push(`<a:nvSpPr><a:cNvPr id=\"${id}\" name=\"Shape ${id}\"/><a:cNvSpPr/></a:nvSpPr>`);\n\t\tconst spPrParts = [];\n\t\tconst sx = convertToEmu(opts.x ?? 0);\n\t\tconst sy = convertToEmu(opts.y ?? 0);\n\t\tconst scx = convertToEmu(opts.width ?? 0);\n\t\tconst scy = convertToEmu(opts.height ?? 0);\n\t\tspPrParts.push(`<a:xfrm><a:off x=\"${sx}\" y=\"${sy}\"/><a:ext cx=\"${scx}\" cy=\"${scy}\"/></a:xfrm>`);\n\t\tspPrParts.push(`<a:prstGeom prst=\"${opts.geometry ?? \"rect\"}\"><a:avLst/></a:prstGeom>`);\n\t\tif (opts.fill) spPrParts.push(`<a:solidFill><a:srgbClr val=\"${opts.fill}\"/></a:solidFill>`);\n\t\tspParts.push(`<a:spPr>${spPrParts.join(\"\")}</a:spPr>`);\n\t\tspParts.push(`<a:txSp><a:txBody><a:bodyPr/><a:lstStyle/><a:p>${opts.textBody ? `<a:r><a:t>${escapeXml(opts.textBody)}</a:t></a:r>` : \"\"}</a:p></a:txBody><a:useSpRect/></a:txSp>`);\n\t\tparts.push(`<a:sp>${spParts.join(\"\")}</a:sp>`);\n\t}\n\treturn parts.join(\"\");\n}\n/** Collect text from a:r/a:t children within a txBody element. */\nfunction collectRunText(el) {\n\tconst parts = [];\n\tfor (const child of el.elements ?? []) if (child.name === \"a:r\") {\n\t\tfor (const sub of child.elements ?? []) if (sub.name === \"a:t\" && sub.text !== void 0) parts.push(String(sub.text));\n\t} else if (child.name === \"a:p\") parts.push(collectRunText(child));\n\treturn parts.join(\"\");\n}\n//#endregion\n//#region src/parts/descriptors/media.ts\n/**\n* Video and Audio frame descriptors for PPTX.\n*\n* Both produce p:pic elements with media placeholders that are\n* resolved during compilation.\n*\n* @module\n*/\nlet _nextVideoId = 100;\nlet _nextAudioId = 200;\nconst VIDEO_EXT_URI$1 = \"{DAA4B4D4-6D71-4841-9C94-3DE7FCFB9230}\";\nconst AUDIO_EXT_URI$1 = \"{CF1602FD-DB20-4165-A070-5F299619DA56}\";\nconst videoDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\tconst id = opts.id ?? _nextVideoId++;\n\t\tconst name = opts.name ?? `Video ${id}`;\n\t\tconst mediaFileName = `${name.replace(/\\s+/g, \"_\")}.${opts.type ?? \"mp4\"}`;\n\t\tconst posterFileName = `${name.replace(/\\s+/g, \"_\")}_poster.${opts.posterType ?? \"png\"}`;\n\t\tconst x = convertToEmu(opts.x ?? 0);\n\t\tconst y = convertToEmu(opts.y ?? 0);\n\t\tconst w = convertToEmu(opts.width ?? 0);\n\t\tconst h = convertToEmu(opts.height ?? 0);\n\t\tconst parts = [];\n\t\tparts.push(`<p:nvPicPr><p:cNvPr id=\"${id}\" name=\"${escapeXml(name)}\" descr=\"\"/><p:cNvPicPr><a:picLocks noChangeAspect=\"1\"/></p:cNvPicPr><p:nvPr><a:videoFile r:link=\"{video:${mediaFileName}}\"/><p:extLst><p:ext uri=\"${VIDEO_EXT_URI$1}\"><p14:media r:embed=\"{media:${mediaFileName}}\" xmlns:p14=\"http://schemas.microsoft.com/office/powerpoint/2010/main\"/></p:ext></p:extLst></p:nvPr></p:nvPicPr>`);\n\t\tparts.push(`<p:blipFill><a:blip r:embed=\"{${posterFileName}}\"/><a:stretch><a:fillRect/></a:stretch></p:blipFill>`);\n\t\tparts.push(`<p:spPr><a:xfrm><a:off x=\"${x}\" y=\"${y}\"/><a:ext cx=\"${w}\" cy=\"${h}\"/></a:xfrm><a:prstGeom prst=\"rect\"><a:avLst/></a:prstGeom></p:spPr>`);\n\t\treturn `<p:pic>${parts.join(\"\")}</p:pic>`;\n\t},\n\tparse(el, _ctx) {\n\t\tconst result = {};\n\t\tconst spPr = findChild(el, \"p:spPr\");\n\t\tif (spPr) {\n\t\t\tconst xfrm = findChild(spPr, \"a:xfrm\");\n\t\t\tif (xfrm) Object.assign(result, readPositionFromXfrm(xfrm));\n\t\t}\n\t\tconst nvPicPr = findChild(el, \"p:nvPicPr\");\n\t\tif (nvPicPr) {\n\t\t\tconst cNvPr = findChild(nvPicPr, \"a:cNvPr\") ?? findChild(nvPicPr, \"p:cNvPr\");\n\t\t\tif (cNvPr) {\n\t\t\t\tconst id = attrNum(cNvPr, \"id\");\n\t\t\t\tif (id !== void 0) result.id = id;\n\t\t\t\tconst name = attr(cNvPr, \"name\");\n\t\t\t\tif (name) result.name = name;\n\t\t\t}\n\t\t}\n\t\tconst videoFileEl = findFirst(el, \"a:videoFile\");\n\t\tconst rLink = videoFileEl ? attr(videoFileEl, \"r:link\") : void 0;\n\t\tconst p14media = !videoFileEl ? findFirst(el, \"p14:media\") : void 0;\n\t\tconst rEmbed = p14media ? attr(p14media, \"r:embed\") : void 0;\n\t\tconst mediaRef = rLink ?? rEmbed;\n\t\tif (mediaRef) {\n\t\t\tconst mediaPath = _ctx.resolveRelationship(mediaRef);\n\t\t\tif (mediaPath) {\n\t\t\t\tconst data = _ctx.getRaw(mediaPath);\n\t\t\t\tif (data) result.data = data;\n\t\t\t}\n\t\t\tresult.type = mediaTypeFromPath(mediaPath ?? mediaRef, \"video\");\n\t\t}\n\t\tconst blipFill = findChild(el, \"p:blipFill\");\n\t\tif (blipFill) {\n\t\t\tconst blip = findChild(blipFill, \"a:blip\");\n\t\t\tif (blip) {\n\t\t\t\tconst rEmbedPoster = attr(blip, \"r:embed\");\n\t\t\t\tif (rEmbedPoster) {\n\t\t\t\t\tconst posterPath = _ctx.resolveRelationship(rEmbedPoster);\n\t\t\t\t\tif (posterPath) {\n\t\t\t\t\t\tconst posterData = _ctx.getRaw(posterPath);\n\t\t\t\t\t\tif (posterData) result.poster = posterData;\n\t\t\t\t\t\tresult.posterType = imageTypeFromPath(posterPath);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n};\nconst audioDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\tconst id = opts.id ?? _nextAudioId++;\n\t\tconst name = opts.name ?? `Audio ${id}`;\n\t\tconst mediaFileName = `${name.replace(/\\s+/g, \"_\")}.${opts.type ?? \"mp3\"}`;\n\t\tconst x = convertToEmu(opts.x ?? 0);\n\t\tconst y = convertToEmu(opts.y ?? 0);\n\t\tconst w = convertToEmu(opts.width ?? 0);\n\t\tconst h = convertToEmu(opts.height ?? 0);\n\t\tconst parts = [];\n\t\tparts.push(`<p:nvPicPr><p:cNvPr id=\"${id}\" name=\"${escapeXml(name)}\" descr=\"\"/><p:cNvPicPr><a:picLocks noChangeAspect=\"1\"/></p:cNvPicPr><p:nvPr><p:extLst><p:ext uri=\"${AUDIO_EXT_URI$1}\"><p14:media r:embed=\"{media:${mediaFileName}}\" xmlns:p14=\"http://schemas.microsoft.com/office/powerpoint/2010/main\"/></p:ext></p:extLst></p:nvPr></p:nvPicPr>`);\n\t\tparts.push(`<p:blipFill><a:stretch><a:fillRect/></a:stretch></p:blipFill>`);\n\t\tparts.push(`<p:spPr><a:xfrm><a:off x=\"${x}\" y=\"${y}\"/><a:ext cx=\"${w}\" cy=\"${h}\"/></a:xfrm><a:prstGeom prst=\"rect\"><a:avLst/></a:prstGeom></p:spPr>`);\n\t\treturn `<p:pic>${parts.join(\"\")}</p:pic>`;\n\t},\n\tparse(el, _ctx) {\n\t\tconst result = {};\n\t\tconst spPr = findChild(el, \"p:spPr\");\n\t\tif (spPr) {\n\t\t\tconst xfrm = findChild(spPr, \"a:xfrm\");\n\t\t\tif (xfrm) Object.assign(result, readPositionFromXfrm(xfrm));\n\t\t}\n\t\tconst nvPicPr = findChild(el, \"p:nvPicPr\");\n\t\tif (nvPicPr) {\n\t\t\tconst cNvPr = findChild(nvPicPr, \"a:cNvPr\") ?? findChild(nvPicPr, \"p:cNvPr\");\n\t\t\tif (cNvPr) {\n\t\t\t\tconst id = attrNum(cNvPr, \"id\");\n\t\t\t\tif (id !== void 0) result.id = id;\n\t\t\t\tconst name = attr(cNvPr, \"name\");\n\t\t\t\tif (name) result.name = name;\n\t\t\t}\n\t\t}\n\t\tconst audioFileEl = findFirst(el, \"a:audioFile\");\n\t\tconst rLink = audioFileEl ? attr(audioFileEl, \"r:link\") : void 0;\n\t\tconst p14media = !audioFileEl ? findFirst(el, \"p14:media\") : void 0;\n\t\tconst rEmbed = p14media ? attr(p14media, \"r:embed\") : void 0;\n\t\tconst mediaRef = rLink ?? rEmbed;\n\t\tif (mediaRef) {\n\t\t\tconst mediaPath = _ctx.resolveRelationship(mediaRef);\n\t\t\tif (mediaPath) {\n\t\t\t\tconst data = _ctx.getRaw(mediaPath);\n\t\t\t\tif (data) result.data = data;\n\t\t\t}\n\t\t\tresult.type = mediaTypeFromPath(mediaPath ?? mediaRef, \"audio\");\n\t\t}\n\t\treturn result;\n\t}\n};\nfunction mediaTypeFromPath(path, kind) {\n\tconst ext = path.match(/\\.([a-z0-9]+)\\b/i)?.[1]?.toLowerCase() ?? \"\";\n\tif (kind === \"video\") {\n\t\tif ([\n\t\t\t\"mp4\",\n\t\t\t\"mov\",\n\t\t\t\"wmv\",\n\t\t\t\"avi\"\n\t\t].includes(ext)) return ext;\n\t\treturn \"mp4\";\n\t}\n\tif ([\n\t\t\"mp3\",\n\t\t\"wav\",\n\t\t\"wma\",\n\t\t\"aac\"\n\t].includes(ext)) return ext;\n\treturn \"mp3\";\n}\nfunction imageTypeFromPath(path) {\n\tconst ext = path.split(\".\").pop()?.toLowerCase() ?? \"\";\n\tif ([\n\t\t\"png\",\n\t\t\"jpg\",\n\t\t\"jpeg\",\n\t\t\"gif\",\n\t\t\"bmp\",\n\t\t\"svg\"\n\t].includes(ext)) return ext;\n\treturn \"png\";\n}\n//#endregion\n//#region src/parts/descriptors/ole.ts\n/**\n* OLE Object descriptor for PPTX.\n*\n* Produces a p:graphicFrame with p:oleObj.\n*\n* @module\n*/\nlet _nextOleId = 2048;\nconst oleDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\tconst id = opts.id ?? _nextOleId++;\n\t\tconst name = opts.name ?? `Object ${id}`;\n\t\tconst x = convertToEmu(opts.x ?? 0);\n\t\tconst y = convertToEmu(opts.y ?? 0);\n\t\tconst w = convertToEmu(opts.width ?? \"100px\");\n\t\tconst h = convertToEmu(opts.height ?? \"100px\");\n\t\tconst parts = [];\n\t\tparts.push(`<p:nvGraphicFramePr><p:cNvPr id=\"${id}\" name=\"${escapeXml(name)}\"/><p:cNvGraphicFramePr><a:graphicFrameLocks noGrp=\"1\"/></p:cNvGraphicFramePr><p:nvPr/></p:nvGraphicFramePr>`);\n\t\tparts.push(`<p:xfrm><a:off x=\"${x}\" y=\"${y}\"/><a:ext cx=\"${w}\" cy=\"${h}\"/></p:xfrm>`);\n\t\tconst oleAttrs = [];\n\t\toleAttrs.push(`name=\"${escapeXml(opts.name ?? \"OLE Object\")}\"`);\n\t\tif (opts.spid) oleAttrs.push(`spid=\"${opts.spid}\"`);\n\t\tif (opts.showAsIcon) oleAttrs.push(`showAsIcon=\"1\"`);\n\t\tif (opts.imgW !== void 0) oleAttrs.push(`imgW=\"${opts.imgW}\"`);\n\t\tif (opts.imgH !== void 0) oleAttrs.push(`imgH=\"${opts.imgH}\"`);\n\t\tif (opts.progId) oleAttrs.push(`progId=\"${opts.progId}\"`);\n\t\tif (opts.followColorScheme) oleAttrs.push(`followColorScheme=\"${opts.followColorScheme}\"`);\n\t\tconst rId = opts.embed?.rId ?? opts.link?.rId;\n\t\tif (rId) oleAttrs.push(`r:id=\"${rId}\"`);\n\t\tconst oleChildren = [];\n\t\tif (opts.embed) oleChildren.push(\"<p:embed/>\");\n\t\telse if (opts.link) {\n\t\t\tconst linkAttrs = opts.link.autoUpdate ? \" updateAutomatic=\\\"1\\\"\" : \"\";\n\t\t\toleChildren.push(`<p:link${linkAttrs}/>`);\n\t\t}\n\t\tif (opts.imgRId) oleChildren.push(`<p:pic><p:nvPicPr><p:cNvPr id=\"2\" name=\"${escapeXml(name)}\"/><p:cNvPicPr/><p:nvPr/></p:nvPicPr></p:pic>`);\n\t\tparts.push(`<a:graphic><a:graphicData uri=\"http://schemas.openxmlformats.org/presentationml/2006/ole\"><p:oleObj ${oleAttrs.join(\" \")}>${oleChildren.join(\"\")}</p:oleObj></a:graphicData></a:graphic>`);\n\t\treturn `<p:graphicFrame>${parts.join(\"\")}</p:graphicFrame>`;\n\t},\n\tparse(el, _ctx) {\n\t\tconst result = {};\n\t\tconst nvGrFrm = findChild(el, \"p:nvGraphicFramePr\");\n\t\tif (nvGrFrm) {\n\t\t\tconst cnvPr = findChild(nvGrFrm, \"p:cNvPr\");\n\t\t\tif (cnvPr) {\n\t\t\t\tconst id = attrNum(cnvPr, \"id\");\n\t\t\t\tif (id !== void 0) result.id = id;\n\t\t\t\tconst name = attr(cnvPr, \"name\");\n\t\t\t\tif (name !== void 0) result.name = name;\n\t\t\t}\n\t\t}\n\t\tconst xfrm = findChild(el, \"p:xfrm\");\n\t\tif (xfrm) {\n\t\t\tconst off = findChild(xfrm, \"a:off\");\n\t\t\tif (off) {\n\t\t\t\tconst x = attrNum(off, \"x\");\n\t\t\t\tif (x !== void 0) result.x = x;\n\t\t\t\tconst y = attrNum(off, \"y\");\n\t\t\t\tif (y !== void 0) result.y = y;\n\t\t\t}\n\t\t\tconst ext = findChild(xfrm, \"a:ext\");\n\t\t\tif (ext) {\n\t\t\t\tconst cx = attrNum(ext, \"cx\");\n\t\t\t\tif (cx !== void 0) result.width = cx;\n\t\t\t\tconst cy = attrNum(ext, \"cy\");\n\t\t\t\tif (cy !== void 0) result.height = cy;\n\t\t\t}\n\t\t}\n\t\tconst graphic = findChild(el, \"a:graphic\");\n\t\tconst graphicData = graphic ? findChild(graphic, \"a:graphicData\") : void 0;\n\t\tconst oleObj = graphicData ? findChild(graphicData, \"p:oleObj\") : void 0;\n\t\tif (oleObj) {\n\t\t\tconst progId = attr(oleObj, \"progId\");\n\t\t\tif (progId !== void 0) result.progId = progId;\n\t\t\tconst spid = attr(oleObj, \"spid\");\n\t\t\tif (spid !== void 0) result.spid = spid;\n\t\t\tif (attrBool(oleObj, \"showAsIcon\")) result.showAsIcon = true;\n\t\t\tconst imgW = attrNum(oleObj, \"imgW\");\n\t\t\tif (imgW !== void 0) result.imgW = imgW;\n\t\t\tconst imgH = attrNum(oleObj, \"imgH\");\n\t\t\tif (imgH !== void 0) result.imgH = imgH;\n\t\t\tconst followCS = attr(oleObj, \"followColorScheme\");\n\t\t\tif (followCS !== void 0) result.followColorScheme = followCS;\n\t\t\tif (findChild(oleObj, \"p:embed\")) {\n\t\t\t\tconst rId = attr(oleObj, \"r:id\");\n\t\t\t\tif (rId !== void 0) result.embed = { rId };\n\t\t\t} else {\n\t\t\t\tconst linkEl = findChild(oleObj, \"p:link\");\n\t\t\t\tif (linkEl) {\n\t\t\t\t\tconst rId = attr(oleObj, \"r:id\");\n\t\t\t\t\tconst autoUpdate = attrBool(linkEl, \"updateAutomatic\") === true;\n\t\t\t\t\tresult.link = {\n\t\t\t\t\t\trId: rId ?? \"\",\n\t\t\t\t\t\t...autoUpdate ? { autoUpdate: true } : {}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst pic = findChild(oleObj, \"p:pic\");\n\t\t\tif (pic) {\n\t\t\t\tconst picRId = findDeepAttr(pic, \"r:id\");\n\t\t\t\tif (picRId !== void 0) result.imgRId = picRId;\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n};\n/** Search for an attribute value in the element or any descendant. */\nfunction findDeepAttr(el, name) {\n\tconst v = el.attributes?.[name];\n\tif (v !== void 0) return String(v);\n\tfor (const child of el.elements ?? []) {\n\t\tconst found = findDeepAttr(child, name);\n\t\tif (found !== void 0) return found;\n\t}\n}\n//#endregion\n//#region src/parts/descriptors/smartart.ts\n/**\n* SmartArt (p:graphicFrame with diagram) descriptor for PPTX.\n*\n* Produces a graphicFrame with SmartArt relationship placeholders.\n* The actual diagram data is registered in PptxWriteContext for\n* separate compilation by the compiler.\n*\n* @module\n*/\nlet _nextSmartArtId = 1024;\nconst smartArtDesc = {\n\tkind: \"custom\",\n\tstringify(opts, ctx) {\n\t\tconst pptxCtx = ctx;\n\t\tconst id = opts.id ?? _nextSmartArtId++;\n\t\tconst name = opts.name ?? `Diagram ${id}`;\n\t\tconst saKey = opts.smartArtKey ?? pptxCtx.nextSmartArtKey();\n\t\tconst layoutId = opts.layout ?? \"default\";\n\t\tconst styleId = opts.style ?? \"simple1\";\n\t\tconst colorId = opts.color ?? \"accent1_2\";\n\t\tif (opts.nodes && opts.nodes.length > 0) {\n\t\t\tconst body = createDataModel(opts.nodes, layoutId, styleId, colorId);\n\t\t\tconst dataModelXml = body ? \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"yes\\\"?>\" + body : \"\";\n\t\t\tpptxCtx.addSmartArt(saKey, {\n\t\t\t\tkey: saKey,\n\t\t\t\tdataModelXml,\n\t\t\t\tlayout: layoutId,\n\t\t\t\tstyle: styleId,\n\t\t\t\tcolor: colorId\n\t\t\t});\n\t\t}\n\t\tconst x = convertToEmu(opts.x ?? 0);\n\t\tconst y = convertToEmu(opts.y ?? 0);\n\t\tconst w = convertToEmu(opts.width ?? \"100px\");\n\t\tconst h = convertToEmu(opts.height ?? \"100px\");\n\t\tconst parts = [];\n\t\tparts.push(`<p:nvGraphicFramePr><p:cNvPr id=\"${id}\" name=\"${escapeXml(name)}\"/><p:cNvGraphicFramePr><a:graphicFrameLocks noGrp=\"1\"/></p:cNvGraphicFramePr><p:nvPr/></p:nvGraphicFramePr>`);\n\t\tparts.push(`<p:xfrm><a:off x=\"${x}\" y=\"${y}\"/><a:ext cx=\"${w}\" cy=\"${h}\"/></p:xfrm>`);\n\t\tparts.push(`<a:graphic><a:graphicData uri=\"http://schemas.openxmlformats.org/drawingml/2006/diagram\"><dgm:relIds xmlns:dgm=\"http://schemas.openxmlformats.org/drawingml/2006/diagram\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" r:dm=\"{smartart:${saKey}}\" r:lo=\"{smartart-lo:${saKey}}\" r:qs=\"{smartart-qs:${saKey}}\" r:cs=\"{smartart-cs:${saKey}}\"/></a:graphicData></a:graphic>`);\n\t\treturn `<p:graphicFrame>${parts.join(\"\")}</p:graphicFrame>`;\n\t},\n\tparse(el, _ctx) {\n\t\tconst result = {};\n\t\tconst xfrm = findChild(el, \"p:xfrm\");\n\t\tif (xfrm) Object.assign(result, readPositionFromXfrm(xfrm));\n\t\tconst nvGfxFramePr = findChild(el, \"p:nvGraphicFramePr\");\n\t\tif (nvGfxFramePr) {\n\t\t\tconst cNvPr = findChild(nvGfxFramePr, \"p:cNvPr\");\n\t\t\tif (cNvPr) {\n\t\t\t\tconst name = attr(cNvPr, \"name\");\n\t\t\t\tif (name) result.name = name;\n\t\t\t}\n\t\t}\n\t\tconst relIds = findFirst(el, \"dgm:relIds\");\n\t\tif (relIds) {\n\t\t\tconst rId = attr(relIds, \"r:dm\");\n\t\t\tif (rId) {\n\t\t\t\tconst dataPath = _ctx.resolveRelationship(rId);\n\t\t\t\tif (dataPath) {\n\t\t\t\t\tconst dataEl = _ctx.getPart(dataPath);\n\t\t\t\t\tif (dataEl) parseSmartArtDataXml(dataEl, result);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n};\n/** Parse SmartArt data XML into options. */\nfunction parseSmartArtDataXml(dataEl, result) {\n\tconst model = findChild(dataEl, \"dgm:dataModel\");\n\tif (!model) return;\n\tconst pts = findChild(model, \"dgm:pts\");\n\tif (!pts) return;\n\tconst nodeMap = /* @__PURE__ */ new Map();\n\tfor (const pt of pts.elements ?? []) {\n\t\tif (pt.name !== \"dgm:pt\") continue;\n\t\tconst ptType = attr(pt, \"type\");\n\t\tconst modelId = attr(pt, \"modelId\");\n\t\tif (ptType === \"doc\") {\n\t\t\tconst prSet = findChild(pt, \"dgm:prSet\");\n\t\t\tif (prSet) {\n\t\t\t\tconst loTypeId = attr(prSet, \"loTypeId\") ?? \"\";\n\t\t\t\tconst qsTypeId = attr(prSet, \"qsTypeId\") ?? \"\";\n\t\t\t\tconst csTypeId = attr(prSet, \"csTypeId\") ?? \"\";\n\t\t\t\tconst layout = loTypeId.split(\"/\").pop();\n\t\t\t\tif (layout) result.layout = layout;\n\t\t\t\tconst style = qsTypeId.split(\"/\").pop();\n\t\t\t\tif (style) result.style = style;\n\t\t\t\tconst color = csTypeId.split(\"/\").pop();\n\t\t\t\tif (color) result.color = color;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tif (ptType === \"conn\") continue;\n\t\tif (ptType === \"node\" && modelId) {\n\t\t\tconst t = findFirst(pt, \"a:t\");\n\t\t\tconst text = t ? extractText(t) : \"\";\n\t\t\tnodeMap.set(modelId, text);\n\t\t}\n\t}\n\tconst cxnLst = findChild(model, \"dgm:cxnLst\");\n\tif (!cxnLst) {\n\t\tresult.nodes = [];\n\t\treturn;\n\t}\n\tconst childrenMap = /* @__PURE__ */ new Map();\n\tfor (const cxn of cxnLst.elements ?? []) {\n\t\tif (cxn.name !== \"dgm:cxn\") continue;\n\t\tconst srcId = attr(cxn, \"srcId\");\n\t\tconst destId = attr(cxn, \"destId\");\n\t\tif (!srcId || !destId || !nodeMap.has(destId)) continue;\n\t\tlet arr = childrenMap.get(srcId);\n\t\tif (!arr) {\n\t\t\tarr = [];\n\t\t\tchildrenMap.set(srcId, arr);\n\t\t}\n\t\tarr.push(destId);\n\t}\n\tresult.nodes = (childrenMap.get(\"0\") ?? []).map((id) => buildSmartArtNode(id, nodeMap, childrenMap));\n}\nfunction extractText(t) {\n\treturn (t.elements ?? []).filter((e) => e.type === \"text\").map((e) => String(e.text ?? \"\")).join(\"\");\n}\nfunction buildSmartArtNode(id, nodeMap, childrenMap) {\n\tconst text = nodeMap.get(id) ?? \"\";\n\tconst childIds = childrenMap.get(id) ?? [];\n\tif (childIds.length === 0) return { text };\n\treturn {\n\t\ttext,\n\t\tchildren: childIds.map((cid) => buildSmartArtNode(cid, nodeMap, childrenMap))\n\t};\n}\n//#endregion\n//#region src/parts/descriptors/table.ts\n/**\n* Table (p:graphicFrame with a:tbl) descriptor for PPTX.\n*\n* @module\n*/\nlet _nextTableId = 1024;\nconst tableDesc = {\n\tkind: \"custom\",\n\tstringify(opts, ctx) {\n\t\tconst pptxCtx = ctx;\n\t\tconst id = opts.id ?? _nextTableId++;\n\t\tconst name = opts.name ?? `Table ${id}`;\n\t\tconst x = convertToEmu(opts.x ?? 0);\n\t\tconst y = convertToEmu(opts.y ?? 0);\n\t\tconst w = convertToEmu(opts.width ?? \"100px\");\n\t\tconst h = convertToEmu(opts.height ?? \"100px\");\n\t\tconst parts = [];\n\t\tparts.push(`<p:nvGraphicFramePr><p:cNvPr id=\"${id}\" name=\"${escapeXml(name)}\"/><p:cNvGraphicFramePr><a:graphicFrameLocks noGrp=\"1\"/></p:cNvGraphicFramePr><p:nvPr/></p:nvGraphicFramePr>`);\n\t\tparts.push(`<p:xfrm><a:off x=\"${x}\" y=\"${y}\"/><a:ext cx=\"${w}\" cy=\"${h}\"/></p:xfrm>`);\n\t\tconst tblParts = [];\n\t\ttblParts.push(stringifyTblPr(opts));\n\t\tconst gridCols = (opts.columnWidths && opts.columnWidths.length > 0 ? opts.columnWidths.map(convertToEmu) : Array.from({ length: opts.rows[0]?.cells.length ?? 1 }, () => 0)).map((cw) => `<a:gridCol w=\"${cw}\"/>`).join(\"\");\n\t\ttblParts.push(`<a:tblGrid>${gridCols}</a:tblGrid>`);\n\t\tconst rowCount = opts.rows.length;\n\t\tfor (const [ri, row] of opts.rows.entries()) {\n\t\t\tconst cells = distributeBorders(row, ri, rowCount, opts.borders);\n\t\t\ttblParts.push(stringifyRow({\n\t\t\t\t...row,\n\t\t\t\tcells\n\t\t\t}, pptxCtx));\n\t\t}\n\t\tconst tblXml = `<a:tbl>${tblParts.join(\"\")}</a:tbl>`;\n\t\tparts.push(`<a:graphic><a:graphicData uri=\"http://schemas.openxmlformats.org/drawingml/2006/table\">${tblXml}</a:graphicData></a:graphic>`);\n\t\treturn `<p:graphicFrame>${parts.join(\"\")}</p:graphicFrame>`;\n\t},\n\tparse(el, _ctx) {\n\t\tconst result = {};\n\t\tconst xfrm = findChild(el, \"p:xfrm\");\n\t\tif (xfrm) Object.assign(result, readPositionFromXfrm(xfrm));\n\t\tconst nvGfxFramePr = findChild(el, \"p:nvGraphicFramePr\");\n\t\tif (nvGfxFramePr) {\n\t\t\tconst cNvPr = findChild(nvGfxFramePr, \"p:cNvPr\");\n\t\t\tif (cNvPr) {\n\t\t\t\tconst id = attrNum(cNvPr, \"id\");\n\t\t\t\tif (id !== void 0) result.id = id;\n\t\t\t\tconst name = attr(cNvPr, \"name\");\n\t\t\t\tif (name) result.name = name;\n\t\t\t}\n\t\t}\n\t\tconst graphicData = findChild(el, \"a:graphic\") ? findChild(el, \"a:graphic\") : void 0;\n\t\tconst gd = graphicData ? findChild(graphicData, \"a:graphicData\") : void 0;\n\t\tconst tbl = gd ? findChild(gd, \"a:tbl\") : void 0;\n\t\tif (!tbl) return result;\n\t\tconst tblPr = findChild(tbl, \"a:tblPr\");\n\t\tif (tblPr) {\n\t\t\tif (attrBool(tblPr, \"firstRow\")) result.firstRow = true;\n\t\t\tif (attrBool(tblPr, \"lastRow\")) result.lastRow = true;\n\t\t\tif (attrBool(tblPr, \"bandRow\")) result.bandRow = true;\n\t\t\tif (attrBool(tblPr, \"firstCol\")) result.firstCol = true;\n\t\t\tif (attrBool(tblPr, \"lastCol\")) result.lastCol = true;\n\t\t\tif (attrBool(tblPr, \"bandCol\")) result.bandCol = true;\n\t\t\tconst tableStyleIdEl = findChild(tblPr, \"a:tableStyleId\");\n\t\t\tif (tableStyleIdEl) {\n\t\t\t\tconst styleId = textOf(tableStyleIdEl);\n\t\t\t\tif (styleId) result.tableStyleId = styleId;\n\t\t\t}\n\t\t\tconst borders = {};\n\t\t\tfor (const [elName, key] of [\n\t\t\t\t[\"a:lnL\", \"left\"],\n\t\t\t\t[\"a:lnR\", \"right\"],\n\t\t\t\t[\"a:lnT\", \"top\"],\n\t\t\t\t[\"a:lnB\", \"bottom\"]\n\t\t\t]) {\n\t\t\t\tconst borderEl = findChild(tblPr, elName);\n\t\t\t\tif (borderEl) {\n\t\t\t\t\tconst borderOpts = {};\n\t\t\t\t\tconst w = attrNum(borderEl, \"w\");\n\t\t\t\t\tif (w !== void 0) borderOpts.width = w;\n\t\t\t\t\tconst fillResult = parseTableCellFill(borderEl);\n\t\t\t\t\tif (fillResult) borderOpts.color = fillResult;\n\t\t\t\t\tconst prstDash = findChild(borderEl, \"a:prstDash\");\n\t\t\t\t\tif (prstDash) {\n\t\t\t\t\t\tconst val = attr(prstDash, \"val\");\n\t\t\t\t\t\tif (val) borderOpts.dashStyle = val;\n\t\t\t\t\t}\n\t\t\t\t\tif (Object.keys(borderOpts).length > 0) borders[key] = borderOpts;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (Object.keys(borders).length > 0) result.borders = borders;\n\t\t}\n\t\tconst tblGrid = findChild(tbl, \"a:tblGrid\");\n\t\tif (tblGrid) {\n\t\t\tconst colWidths = [];\n\t\t\tfor (const gridCol of children(tblGrid, \"a:gridCol\")) {\n\t\t\t\tconst w = attrNum(gridCol, \"w\");\n\t\t\t\tcolWidths.push(w ?? 0);\n\t\t\t}\n\t\t\tif (colWidths.length > 0) result.columnWidths = colWidths;\n\t\t}\n\t\tconst rows = [];\n\t\tfor (const tr of children(tbl, \"a:tr\")) {\n\t\t\tconst h = attrNum(tr, \"h\");\n\t\t\tconst cells = [];\n\t\t\tfor (const tc of children(tr, \"a:tc\")) cells.push(parseTableCell(tc, _ctx));\n\t\t\tconst row = { cells };\n\t\t\tif (h !== void 0) row.height = h;\n\t\t\trows.push(row);\n\t\t}\n\t\tresult.rows = rows;\n\t\treturn result;\n\t}\n};\nfunction stringifyTblPr(opts) {\n\tconst attrs = [];\n\tif (opts.firstRow !== void 0) attrs.push(`firstRow=\"${opts.firstRow ? 1 : 0}\"`);\n\tif (opts.lastRow !== void 0) attrs.push(`lastRow=\"${opts.lastRow ? 1 : 0}\"`);\n\tif (opts.bandRow !== void 0) attrs.push(`bandRow=\"${opts.bandRow ? 1 : 0}\"`);\n\tif (opts.firstCol !== void 0) attrs.push(`firstCol=\"${opts.firstCol ? 1 : 0}\"`);\n\tif (opts.lastCol !== void 0) attrs.push(`lastCol=\"${opts.lastCol ? 1 : 0}\"`);\n\tif (opts.bandCol !== void 0) attrs.push(`bandCol=\"${opts.bandCol ? 1 : 0}\"`);\n\tif (attrs.length === 0 && !opts.tableStyleId) return \"<a:tblPr/>\";\n\tconst styleId = opts.tableStyleId ? `<a:tableStyleId>${escapeXml(opts.tableStyleId)}</a:tableStyleId>` : \"\";\n\treturn `<a:tblPr ${attrs.join(\" \")}>${styleId}</a:tblPr>`;\n}\nfunction stringifyRow(row, ctx) {\n\tconst h = convertToEmu(row.height ?? 0);\n\tconst cellParts = [];\n\tfor (const cell of row.cells) cellParts.push(stringifyCell(cell, ctx));\n\treturn `<a:tr h=\"${h}\">${cellParts.join(\"\")}</a:tr>`;\n}\nfunction stringifyCell(cell, ctx) {\n\tconst parts = [];\n\tconst tcAttrs = [];\n\tif (cell.columnSpan !== void 0 && cell.columnSpan > 1) tcAttrs.push(`gridSpan=\"${cell.columnSpan}\"`);\n\tif (cell.rowSpan !== void 0 && cell.rowSpan > 1) tcAttrs.push(`rowSpan=\"${cell.rowSpan}\"`);\n\tif (cell.horizontalMerge) tcAttrs.push(`hMerge=\"${cell.horizontalMerge === \"restart\" ? 1 : 0}\"`);\n\tif (cell.verticalMerge) tcAttrs.push(`vMerge=\"${cell.verticalMerge === \"restart\" ? 1 : 0}\"`);\n\tconst tcAttrStr = tcAttrs.length > 0 ? ` ${tcAttrs.join(\" \")}` : \"\";\n\tparts.push(stringifyTxBody(cell, ctx));\n\tparts.push(stringifyTcPr(cell, ctx));\n\treturn `<a:tc${tcAttrStr}>${parts.join(\"\")}</a:tc>`;\n}\nfunction stringifyTxBody(cell, ctx) {\n\tconst txParts = [];\n\tconst bodyPrAttrs = [];\n\tconst margins = cell.margins;\n\tif (margins?.top !== void 0) bodyPrAttrs.push(`tIns=\"${margins.top}\"`);\n\tif (margins?.bottom !== void 0) bodyPrAttrs.push(`bIns=\"${margins.bottom}\"`);\n\tif (margins?.left !== void 0) bodyPrAttrs.push(`lIns=\"${margins.left}\"`);\n\tif (margins?.right !== void 0) bodyPrAttrs.push(`rIns=\"${margins.right}\"`);\n\tconst bodyPrStr = bodyPrAttrs.length > 0 ? ` ${bodyPrAttrs.join(\" \")}` : \"\";\n\ttxParts.push(`<a:bodyPr${bodyPrStr}/>`);\n\ttxParts.push(\"<a:lstStyle/>\");\n\tif (cell.children) for (const c of cell.children) if (typeof c === \"string\") {\n\t\tconst pXml = paragraphDesc.stringify({ children: [{ text: c }] }, ctx);\n\t\tif (pXml) txParts.push(pXml);\n\t} else {\n\t\tconst pXml = paragraphDesc.stringify(c, ctx);\n\t\tif (pXml) txParts.push(pXml);\n\t}\n\telse if (cell.text !== void 0) {\n\t\tconst pXml = paragraphDesc.stringify({ children: [{ text: cell.text }] }, ctx);\n\t\tif (pXml) txParts.push(pXml);\n\t} else txParts.push(\"<a:p/>\");\n\treturn `<a:txBody>${txParts.join(\"\")}</a:txBody>`;\n}\nfunction stringifyTcPr(cell, ctx) {\n\tconst parts = [];\n\tif (cell.verticalAlign) parts.push(`anchor=\"${xsdTextAnchor.to(cell.verticalAlign)}\"`);\n\tif (cell.borders) {\n\t\tif (cell.borders.left) parts.push(buildBorderLine(\"a:lnL\", cell.borders.left));\n\t\tif (cell.borders.right) parts.push(buildBorderLine(\"a:lnR\", cell.borders.right));\n\t\tif (cell.borders.top) parts.push(buildBorderLine(\"a:lnT\", cell.borders.top));\n\t\tif (cell.borders.bottom) parts.push(buildBorderLine(\"a:lnB\", cell.borders.bottom));\n\t}\n\tif (cell.fill !== void 0) {\n\t\tconst fillXml = stringify$1(fillDesc, cell.fill, ctx);\n\t\tif (fillXml) parts.push(fillXml);\n\t}\n\tif (parts.length === 0) return \"<a:tcPr/>\";\n\tconst first = parts[0];\n\tif (first !== void 0 && !first.startsWith(\"<\")) {\n\t\tconst attrStr = first;\n\t\tconst children = parts.slice(1);\n\t\tif (children.length === 0) return `<a:tcPr ${attrStr}/>`;\n\t\treturn `<a:tcPr ${attrStr}>${children.join(\"\")}</a:tcPr>`;\n\t}\n\treturn `<a:tcPr>${parts.join(\"\")}</a:tcPr>`;\n}\nfunction buildBorderLine(name, options) {\n\tconst attrs = [];\n\tif (options.width !== void 0) attrs.push(`w=\"${convertToEmu(options.width)}\"`);\n\tconst children = [];\n\tif (options.color) children.push(`<a:solidFill><a:srgbClr val=\"${options.color.replace(\"#\", \"\")}\"/></a:solidFill>`);\n\tif (options.dashStyle) children.push(`<a:prstDash val=\"${options.dashStyle}\"/>`);\n\tconst attrStr = attrs.length > 0 ? ` ${attrs.join(\" \")}` : \"\";\n\tif (children.length === 0) return `<${name}${attrStr}/>`;\n\treturn `<${name}${attrStr}>${children.join(\"\")}</${name}>`;\n}\n/** Distribute table-level borders to edge cells. */\nfunction distributeBorders(row, ri, rowCount, tb) {\n\tif (!tb) return row.cells;\n\tconst colCount = row.cells.length;\n\treturn row.cells.map((cell, ci) => {\n\t\tconst needTop = ri === 0 && !!tb.top && !cell.borders?.top;\n\t\tconst needBottom = ri === rowCount - 1 && !!tb.bottom && !cell.borders?.bottom;\n\t\tconst needLeft = ci === 0 && !!tb.left && !cell.borders?.left;\n\t\tconst needRight = ci === colCount - 1 && !!tb.right && !cell.borders?.right;\n\t\tif (!needTop && !needBottom && !needLeft && !needRight) return cell;\n\t\tconst borders = {\n\t\t\t...cell.borders,\n\t\t\t...needTop && { top: tb.top },\n\t\t\t...needBottom && { bottom: tb.bottom },\n\t\t\t...needLeft && { left: tb.left },\n\t\t\t...needRight && { right: tb.right }\n\t\t};\n\t\treturn {\n\t\t\t...cell,\n\t\t\tborders\n\t\t};\n\t});\n}\n/** Parse a table cell (a:tc) into options. */\nfunction parseTableCell(tc, readCtx) {\n\tconst result = {};\n\tconst ctx = readCtx ?? {};\n\tconst gridSpan = attrNum(tc, \"gridSpan\");\n\tif (gridSpan !== void 0 && gridSpan > 1) result.columnSpan = gridSpan;\n\tconst rowSpan = attrNum(tc, \"rowSpan\");\n\tif (rowSpan !== void 0 && rowSpan > 1) result.rowSpan = rowSpan;\n\tconst hMerge = attr(tc, \"hMerge\");\n\tif (hMerge === \"1\") result.horizontalMerge = \"restart\";\n\telse if (hMerge === \"0\") result.horizontalMerge = \"continue\";\n\tconst vMerge = attr(tc, \"vMerge\");\n\tif (vMerge === \"1\") result.verticalMerge = \"restart\";\n\telse if (vMerge === \"0\") result.verticalMerge = \"continue\";\n\tconst txBody = findChild(tc, \"a:txBody\");\n\tif (txBody) {\n\t\tconst paragraphs = [];\n\t\tfor (const pEl of txBody.elements ?? []) {\n\t\t\tif (pEl.name !== \"a:p\") continue;\n\t\t\tconst para = paragraphDesc.parse(pEl, ctx);\n\t\t\tparagraphs.push(para);\n\t\t}\n\t\tif (paragraphs.length === 1) {\n\t\t\tconst [p] = paragraphs;\n\t\t\tif (p) if (p.text && !p.children) result.text = p.text;\n\t\t\telse result.children = [p];\n\t\t} else if (paragraphs.length > 0) result.children = paragraphs;\n\t\tconst bodyPr = findChild(txBody, \"a:bodyPr\");\n\t\tif (bodyPr) {\n\t\t\tconst margins = {};\n\t\t\tconst tIns = attrMeasure(bodyPr, \"tIns\");\n\t\t\tif (tIns !== void 0) margins.top = tIns;\n\t\t\tconst bIns = attrMeasure(bodyPr, \"bIns\");\n\t\t\tif (bIns !== void 0) margins.bottom = bIns;\n\t\t\tconst lIns = attrMeasure(bodyPr, \"lIns\");\n\t\t\tif (lIns !== void 0) margins.left = lIns;\n\t\t\tconst rIns = attrMeasure(bodyPr, \"rIns\");\n\t\t\tif (rIns !== void 0) margins.right = rIns;\n\t\t\tif (Object.keys(margins).length > 0) result.margins = margins;\n\t\t}\n\t}\n\tconst tcPr = findChild(tc, \"a:tcPr\");\n\tif (tcPr) {\n\t\tconst anchor = attr(tcPr, \"anchor\");\n\t\tif (anchor) result.verticalAlign = xsdTextAnchor.from(anchor);\n\t\tconst margins = {};\n\t\tconst marL = attrMeasure(tcPr, \"marL\");\n\t\tif (marL !== void 0) margins.left = marL;\n\t\tconst marR = attrMeasure(tcPr, \"marR\");\n\t\tif (marR !== void 0) margins.right = marR;\n\t\tconst marT = attrMeasure(tcPr, \"marT\");\n\t\tif (marT !== void 0) margins.top = marT;\n\t\tconst marB = attrMeasure(tcPr, \"marB\");\n\t\tif (marB !== void 0) margins.bottom = marB;\n\t\tif (Object.keys(margins).length > 0) result.margins = margins;\n\t\tif (findChild(tcPr, \"a:solidFill\") || findChild(tcPr, \"a:noFill\") || findChild(tcPr, \"a:gradFill\") || findChild(tcPr, \"a:pattFill\") || findChild(tcPr, \"a:blipFill\")) result.fill = parse$1(fillDesc, tcPr, ctx);\n\t\tconst borders = {};\n\t\tfor (const [elName, key] of [\n\t\t\t[\"a:lnL\", \"left\"],\n\t\t\t[\"a:lnR\", \"right\"],\n\t\t\t[\"a:lnT\", \"top\"],\n\t\t\t[\"a:lnB\", \"bottom\"]\n\t\t]) {\n\t\t\tconst borderEl = findChild(tcPr, elName);\n\t\t\tif (borderEl) {\n\t\t\t\tconst borderOpts = {};\n\t\t\t\tconst w = attrNum(borderEl, \"w\");\n\t\t\t\tif (w !== void 0) borderOpts.width = w;\n\t\t\t\tconst fillResult = parseTableCellFill(borderEl);\n\t\t\t\tif (fillResult) borderOpts.color = fillResult;\n\t\t\t\tconst prstDash = findChild(borderEl, \"a:prstDash\");\n\t\t\t\tif (prstDash) {\n\t\t\t\t\tconst val = attr(prstDash, \"val\");\n\t\t\t\t\tif (val) borderOpts.dashStyle = val;\n\t\t\t\t}\n\t\t\t\tif (Object.keys(borderOpts).length > 0) borders[key] = borderOpts;\n\t\t\t}\n\t\t}\n\t\tif (Object.keys(borders).length > 0) result.borders = borders;\n\t}\n\treturn result;\n}\n/** Extract a solid fill color string from an element (e.g. a:lnL, a:tcPr). */\nfunction parseTableCellFill(el) {\n\tconst solidFill = findChild(el, \"a:solidFill\");\n\tif (!solidFill) return void 0;\n\tconst srgbClr = findChild(solidFill, \"a:srgbClr\");\n\treturn srgbClr?.attributes?.[\"val\"] ? String(srgbClr.attributes[\"val\"]) : void 0;\n}\n//#endregion\n//#region src/parts/descriptors/bridge.ts\n/**\n* Serialize a SlideChild to XML using descriptors.\n*/\nfunction stringifyChild(child, ctx) {\n\tif (\"shape\" in child && child.shape) return shapeDesc.stringify(child.shape, ctx);\n\tif (\"picture\" in child && child.picture) return pictureDesc.stringify(child.picture, ctx);\n\tif (\"table\" in child && child.table) return tableDesc.stringify(child.table, ctx);\n\tif (\"line\" in child && child.line) return lineShapeDesc.stringify(child.line, ctx);\n\tif (\"connector\" in child && child.connector) return connectorShapeDesc.stringify(child.connector, ctx);\n\tif (\"group\" in child && child.group) return groupShapeDesc.stringify(child.group, ctx);\n\tif (\"chart\" in child && child.chart) return chartDesc.stringify(child.chart, ctx);\n\tif (\"smartart\" in child && child.smartart) return smartArtDesc.stringify(child.smartart, ctx);\n\tif (\"video\" in child && child.video) return videoDesc.stringify(child.video, ctx);\n\tif (\"audio\" in child && child.audio) return audioDesc.stringify(child.audio, ctx);\n\tif (\"ole\" in child && child.ole) return oleDesc.stringify(child.ole, ctx);\n\tif (\"lockedCanvas\" in child && child.lockedCanvas) return lockedCanvasDesc.stringify(child.lockedCanvas, ctx);\n}\n/** Media extension URIs used to detect video/audio in p:pic elements. */\nconst VIDEO_EXT_URI = \"{DAA4B4D4-6D71-4841-9C94-3DE7FCFB9230}\";\nconst AUDIO_EXT_URI = \"{CF1602FD-DB20-4165-A070-5F299619DA56}\";\n/**\n* Parse an XML child element into a SlideChild object using descriptors.\n*\n* Symmetric to {@link stringifyChild} — dispatches based on element tag name\n* to the appropriate descriptor's `parse()` method.\n*/\nfunction parseChild(el, ctx) {\n\tswitch (el.name) {\n\t\tcase \"p:sp\": {\n\t\t\tconst spPr = findChild(el, \"p:spPr\");\n\t\t\tconst prstGeom = spPr ? findChild(spPr, \"a:prstGeom\") : void 0;\n\t\t\tif ((prstGeom ? attr(prstGeom, \"prst\") : void 0) === \"line\") return { line: lineShapeDesc.parse(el, ctx) };\n\t\t\treturn { shape: shapeDesc.parse(el, ctx) };\n\t\t}\n\t\tcase \"p:pic\": {\n\t\t\tconst mediaType = detectMediaType(el);\n\t\t\tif (mediaType === \"video\") return { video: videoDesc.parse(el, ctx) };\n\t\t\tif (mediaType === \"audio\") return { audio: audioDesc.parse(el, ctx) };\n\t\t\treturn { picture: pictureDesc.parse(el, ctx) };\n\t\t}\n\t\tcase \"p:graphicFrame\": return parseGraphicFrameChild(el, ctx);\n\t\tcase \"p:cxnSp\": return { connector: connectorShapeDesc.parse(el, ctx) };\n\t\tcase \"p:grpSp\": return { group: groupShapeDesc.parse(el, ctx) };\n\t\tdefault: return;\n\t}\n}\n/** Detect whether a p:pic element is a video or audio frame. */\nfunction detectMediaType(el) {\n\tconst nvPicPr = findChild(el, \"p:nvPicPr\");\n\tif (!nvPicPr) return void 0;\n\tconst nvPr = findChild(nvPicPr, \"p:nvPr\");\n\tif (!nvPr) return void 0;\n\tconst extLst = findChild(nvPr, \"p:extLst\");\n\tif (!extLst) return void 0;\n\tfor (const ext of extLst.elements ?? []) {\n\t\tif (ext.name !== \"p:ext\") continue;\n\t\tconst uri = attr(ext, \"uri\");\n\t\tif (uri === VIDEO_EXT_URI) return \"video\";\n\t\tif (uri === AUDIO_EXT_URI) return \"audio\";\n\t}\n}\n/** Dispatch p:graphicFrame to chart/smartart/table descriptor. */\nfunction parseGraphicFrameChild(el, ctx) {\n\tconst graphicData = findFirst(el, \"a:graphicData\");\n\tif (!graphicData) return void 0;\n\tconst uri = attr(graphicData, \"uri\") ?? \"\";\n\tif (uri.includes(\"/chart\")) return { chart: chartDesc.parse(el, ctx) };\n\tif (uri.includes(\"/diagram\")) return { smartart: smartArtDesc.parse(el, ctx) };\n\tif (findChild(graphicData, \"a:tbl\")) return { table: tableDesc.parse(el, ctx) };\n}\n//#endregion\n//#region src/parts/descriptors/color-map-override.ts\nconst colorMapOverrideDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\tif (opts?.kind === \"override\") {\n\t\t\tconst attrs = Object.entries(opts.mapping).map(([k, v]) => `${k}=\"${v}\"`).join(\" \");\n\t\t\treturn `<p:clrMapOvr><a:overrideClrMapping${attrs ? \" \" + attrs : \"\"}/></p:clrMapOvr>`;\n\t\t}\n\t\treturn \"<p:clrMapOvr><a:masterClrMapping/></p:clrMapOvr>\";\n\t},\n\tparse(el, _ctx) {\n\t\tif (findChild(el, \"a:masterClrMapping\")) return { kind: \"master\" };\n\t\tconst override = findChild(el, \"a:overrideClrMapping\");\n\t\tif (override?.attributes) {\n\t\t\tconst mapping = {};\n\t\t\tfor (const [k, v] of Object.entries(override.attributes)) if (typeof v === \"string\") mapping[k] = v;\n\t\t\tif (Object.keys(mapping).length > 0) return {\n\t\t\t\tkind: \"override\",\n\t\t\t\tmapping\n\t\t\t};\n\t\t}\n\t}\n};\n//#endregion\n//#region src/shared/transition.ts\nconst ORIENT_TYPES = new Set([\n\t\"blinds\",\n\t\"checker\",\n\t\"comb\",\n\t\"randomBar\"\n]);\nconst SIDE_DIR_TYPES = new Set([\"push\", \"wipe\"]);\nconst EIGHT_DIR_TYPES = new Set([\"cover\", \"pull\"]);\nconst DIRECTION_MAP = {\n\tleft: \"l\",\n\tup: \"u\",\n\tright: \"r\",\n\tdown: \"d\",\n\tleftUp: \"lu\",\n\trightUp: \"ru\",\n\tleftDown: \"ld\",\n\trightDown: \"rd\",\n\tout: \"out\",\n\tin: \"in\"\n};\nfunction buildTransitionElement(type, direction, orient, thruBlk, spokes) {\n\tconst dir = direction ? DIRECTION_MAP[direction] : void 0;\n\tconst attrs = [];\n\tif (ORIENT_TYPES.has(type) && dir && dir !== \"horz\") attrs.push(`dir=\"${dir}\"`);\n\telse if (SIDE_DIR_TYPES.has(type) && dir && dir !== \"l\") attrs.push(`dir=\"${dir}\"`);\n\telse if (EIGHT_DIR_TYPES.has(type) && dir && dir !== \"l\") attrs.push(`dir=\"${dir}\"`);\n\telse if (type === \"strips\" && dir && dir !== \"lu\") attrs.push(`dir=\"${dir}\"`);\n\telse if ((type === \"fade\" || type === \"cut\") && thruBlk !== void 0) attrs.push(`thruBlk=\"${thruBlk ? 1 : 0}\"`);\n\telse if (type === \"split\") {\n\t\tif (orient && orient !== \"horz\") attrs.push(`orient=\"${orient}\"`);\n\t\tif (dir && dir !== \"out\") attrs.push(`dir=\"${dir}\"`);\n\t} else if (type === \"wheel\") {\n\t\tif (spokes !== void 0 && spokes !== 4) attrs.push(`spokes=\"${spokes}\"`);\n\t} else if (type === \"zoom\" && dir && dir !== \"in\") attrs.push(`dir=\"${dir}\"`);\n\treturn attrs.length > 0 ? `<p:${type} ${attrs.join(\" \")}/>` : `<p:${type}/>`;\n}\nfunction buildTransition(options) {\n\tconst attrParts = [];\n\tif (options.speed) attrParts.push(`spd=\"${options.speed === \"medium\" ? \"med\" : options.speed}\"`);\n\tif (options.advanceOnClick !== void 0) attrParts.push(`advClick=\"${options.advanceOnClick ? 1 : 0}\"`);\n\tif (options.advanceAfterTime !== void 0) attrParts.push(`advTm=\"${options.advanceAfterTime}\"`);\n\tconst children = [];\n\tif (options.type) children.push(buildTransitionElement(options.type, options.direction, options.orient, options.thruBlk, options.spokes));\n\tif (options.startSound) {\n\t\tconst sndAttrs = [`r:embed=\"${options.startSound.rId}\"`];\n\t\tif (options.startSound.name) sndAttrs.push(` name=\"${options.startSound.name}\"`);\n\t\tconst stSndAttrs = [];\n\t\tif (options.startSound.loop) stSndAttrs.push(\" loop=\\\"1\\\"\");\n\t\tchildren.push(`<p:sndAc><p:stSnd${stSndAttrs.join(\"\")}><p:snd ${sndAttrs.join(\" \")}/></p:stSnd></p:sndAc>`);\n\t} else if (options.stopPreviousSound) children.push(\"<p:sndAc><p:endSnd/></p:sndAc>\");\n\tif (attrParts.length === 0 && children.length === 0) return \"<p:transition/>\";\n\tconst attrStr = attrParts.length > 0 ? ` ${attrParts.join(\" \")}` : \"\";\n\tif (children.length === 0) return `<p:transition${attrStr}/>`;\n\treturn `<p:transition${attrStr}>${children.join(\"\")}</p:transition>`;\n}\n//#endregion\n//#region src/parts/descriptors/slide.ts\nconst slideDesc = {\n\tkind: \"custom\",\n\tstringify(opts, ctx) {\n\t\tconst parts = [];\n\t\tconst sldAttrs = [];\n\t\tif (opts.showMasterSp === false) sldAttrs.push(\" showMasterSp=\\\"0\\\"\");\n\t\tif (opts.showMasterPhAnim === false) sldAttrs.push(\" showMasterPhAnim=\\\"0\\\"\");\n\t\tif (opts.hidden) sldAttrs.push(\" show=\\\"0\\\"\");\n\t\tparts.push(`<p:sld xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:p=\"http://schemas.openxmlformats.org/presentationml/2006/main\"${sldAttrs.join(\"\")}>`);\n\t\tparts.push(\"<p:cSld>\");\n\t\tif (opts.background) parts.push(backgroundDesc.stringify(opts.background, ctx) ?? \"\");\n\t\tparts.push(\"<p:spTree>\");\n\t\tparts.push(SP_TREE_HEADER);\n\t\tif (opts.children) for (const child of opts.children) {\n\t\t\tconst xml = stringifySlideChild(child, ctx);\n\t\t\tif (xml) parts.push(xml);\n\t\t}\n\t\tparts.push(\"</p:spTree>\");\n\t\tif (opts.customerData && opts.customerData.length > 0) {\n\t\t\tconst cdItems = opts.customerData.map((d) => `<p:custData r:id=\"${d.rId}\"/>`).join(\"\");\n\t\t\tparts.push(`<p:custDataLst>${cdItems}</p:custDataLst>`);\n\t\t}\n\t\tif (opts.controls && opts.controls.length > 0) {\n\t\t\tconst ctrlItems = opts.controls.map((c) => {\n\t\t\t\tconst attrs = [];\n\t\t\t\tif (c.shapeId !== void 0) attrs.push(`spid=\"${c.shapeId}\"`);\n\t\t\t\tif (c.name) attrs.push(`name=\"${c.name}\"`);\n\t\t\t\tif (c.showAsIcon) attrs.push(\"showAsIcon=\\\"1\\\"\");\n\t\t\t\tif (c.rId) attrs.push(`r:id=\"${c.rId}\"`);\n\t\t\t\tif (c.imageWidth !== void 0) attrs.push(`imgW=\"${c.imageWidth}\"`);\n\t\t\t\tif (c.imageHeight !== void 0) attrs.push(`imgH=\"${c.imageHeight}\"`);\n\t\t\t\treturn `<p:control ${attrs.join(\" \")}/>`;\n\t\t\t}).join(\"\");\n\t\t\tparts.push(`<p:controls>${ctrlItems}</p:controls>`);\n\t\t}\n\t\tif (opts.headerFooter) {\n\t\t\tconst hf = opts.headerFooter;\n\t\t\tconst hfChildren = [];\n\t\t\tif (hf.slideNumber) hfChildren.push(\"<p:sldNum/>\");\n\t\t\tif (hf.dateTime) hfChildren.push(\"<p:dt/>\");\n\t\t\tif (hf.footer) hfChildren.push(\"<p:ftr/>\");\n\t\t\tif (hf.header) hfChildren.push(\"<p:hdr/>\");\n\t\t\tif (hfChildren.length > 0) parts.push(`<p:hf>${hfChildren.join(\"\")}</p:hf>`);\n\t\t}\n\t\tparts.push(\"</p:cSld>\");\n\t\tparts.push(\"<p:clrMapOvr><a:masterClrMapping/></p:clrMapOvr>\");\n\t\tif (opts.transition) parts.push(stringifyTransition(opts.transition));\n\t\tparts.push(\"</p:sld>\");\n\t\treturn parts.join(\"\");\n\t},\n\tparse(el, _ctx) {\n\t\tconst result = {};\n\t\tif (el.attributes) {\n\t\t\tif (el.attributes[\"showMasterSp\"] !== void 0) result.showMasterSp = el.attributes[\"showMasterSp\"] !== \"0\";\n\t\t\tif (el.attributes[\"showMasterPhAnim\"] !== void 0) result.showMasterPhAnim = el.attributes[\"showMasterPhAnim\"] !== \"0\";\n\t\t\tif (el.attributes[\"show\"] === \"0\") result.hidden = true;\n\t\t}\n\t\tconst cSld = findChild(el, \"p:cSld\");\n\t\tif (cSld) {\n\t\t\tconst bg = findChild(cSld, \"p:bg\");\n\t\t\tif (bg) result.background = backgroundDesc.parse(bg, _ctx);\n\t\t\tconst spTree = findChild(cSld, \"p:spTree\");\n\t\t\tif (spTree) {\n\t\t\t\tconst children = [];\n\t\t\t\tif (spTree.elements) for (const child of spTree.elements) {\n\t\t\t\t\tif (child.name === \"p:nvGrpSpPr\" || child.name === \"p:grpSpPr\") continue;\n\t\t\t\t\tconst parsed = parseChild(child, _ctx);\n\t\t\t\t\tif (parsed !== void 0) children.push(parsed);\n\t\t\t\t}\n\t\t\t\tif (children.length > 0) result.children = children;\n\t\t\t}\n\t\t\tconst hf = findChild(cSld, \"p:hf\");\n\t\t\tif (hf) {\n\t\t\t\tconst hfOpts = {};\n\t\t\t\tif (findChild(hf, \"p:sldNum\")) hfOpts.slideNumber = true;\n\t\t\t\tif (findChild(hf, \"p:dt\")) hfOpts.dateTime = true;\n\t\t\t\tif (findChild(hf, \"p:ftr\")) hfOpts.footer = true;\n\t\t\t\tif (findChild(hf, \"p:hdr\")) hfOpts.header = true;\n\t\t\t\tif (hfOpts.slideNumber || hfOpts.dateTime || hfOpts.footer || hfOpts.header) result.headerFooter = hfOpts;\n\t\t\t}\n\t\t}\n\t\tconst transition = findChild(el, \"p:transition\");\n\t\tif (transition) result.transition = readTransition(transition);\n\t\tconst timing = findChild(el, \"p:timing\");\n\t\tif (timing) {\n\t\t\tconst timingOpts = timingDesc.parse(timing, _ctx);\n\t\t\tif (timingOpts.entries && timingOpts.entries.length > 0) {\n\t\t\t\tconst animations = [];\n\t\t\t\tfor (const entry of timingOpts.entries) animations.push({\n\t\t\t\t\tshapeId: entry.spid,\n\t\t\t\t\toptions: entry.options\n\t\t\t\t});\n\t\t\t\tresult.animations = animations;\n\t\t\t}\n\t\t}\n\t\tconst custDataLst = findChild(el, \"p:custDataLst\");\n\t\tif (custDataLst) {\n\t\t\tconst items = [];\n\t\t\tfor (const cd of custDataLst.elements ?? []) if (cd.name === \"p:custData\") {\n\t\t\t\tconst rId = attr(cd, \"r:id\");\n\t\t\t\tif (rId) items.push({ rId });\n\t\t\t}\n\t\t\tif (items.length > 0) result.customerData = items;\n\t\t}\n\t\tconst controls = findChild(el, \"p:controls\");\n\t\tif (controls) {\n\t\t\tconst items = [];\n\t\t\tfor (const ctrl of controls.elements ?? []) {\n\t\t\t\tif (ctrl.name !== \"p:control\") continue;\n\t\t\t\tconst item = {};\n\t\t\t\tconst spid = attrNum(ctrl, \"spid\");\n\t\t\t\tif (spid !== void 0) item.shapeId = spid;\n\t\t\t\tconst name = attr(ctrl, \"name\");\n\t\t\t\tif (name) item.name = name;\n\t\t\t\tif (attr(ctrl, \"showAsIcon\") === \"1\") item.showAsIcon = true;\n\t\t\t\tconst rId = attr(ctrl, \"r:id\");\n\t\t\t\tif (rId) item.rId = rId;\n\t\t\t\tconst imgW = attrNum(ctrl, \"imgW\");\n\t\t\t\tif (imgW !== void 0) item.imageWidth = imgW;\n\t\t\t\tconst imgH = attrNum(ctrl, \"imgH\");\n\t\t\t\tif (imgH !== void 0) item.imageHeight = imgH;\n\t\t\t\titems.push(item);\n\t\t\t}\n\t\t\tif (items.length > 0) result.controls = items;\n\t\t}\n\t\treturn result;\n\t}\n};\nfunction stringifySlideChild(child, ctx) {\n\tif (\"shape\" in child) return shapeDesc.stringify(child.shape, ctx);\n\tif (\"picture\" in child) return pictureDesc.stringify(child.picture, ctx);\n\tif (\"contentPart\" in child) return `<p:contentPart r:id=\"${child.contentPart.rId}\"/>`;\n}\nfunction stringifyTransition(opts) {\n\tif (opts.type === \"none\" || opts.type === void 0) return \"\";\n\treturn buildTransition({\n\t\ttype: opts.type,\n\t\tdirection: opts.direction,\n\t\torient: opts.orient,\n\t\tspokes: opts.spokes,\n\t\tthruBlk: opts.thruBlk,\n\t\tspeed: opts.speed,\n\t\tadvanceOnClick: opts.advanceOnClick,\n\t\tadvanceAfterTime: opts.advanceAfterMs\n\t});\n}\nconst XML_DIR_TO_DIRECTION = {\n\tl: \"left\",\n\tr: \"right\",\n\tu: \"up\",\n\td: \"down\",\n\tlu: \"leftUp\",\n\tru: \"rightUp\",\n\tld: \"leftDown\",\n\trd: \"rightDown\",\n\tout: \"out\",\n\tin: \"in\"\n};\nconst TRANSITION_ELEMENT_TYPES = [\n\t\"fade\",\n\t\"push\",\n\t\"wipe\",\n\t\"split\",\n\t\"blinds\",\n\t\"checker\",\n\t\"comb\",\n\t\"randomBar\",\n\t\"cover\",\n\t\"pull\",\n\t\"strips\",\n\t\"wheel\",\n\t\"zoom\",\n\t\"circle\",\n\t\"dissolve\",\n\t\"diamond\",\n\t\"newsflash\",\n\t\"plus\",\n\t\"wedge\",\n\t\"random\",\n\t\"cut\"\n];\nfunction readTransition(el) {\n\tconst result = {};\n\tif (el.attributes) {\n\t\tif (el.attributes[\"spd\"] !== void 0) result.speed = el.attributes[\"spd\"] === \"med\" ? \"medium\" : el.attributes[\"spd\"];\n\t\tif (el.attributes[\"advClick\"] !== void 0) result.advanceOnClick = el.attributes[\"advClick\"] === \"1\";\n\t\tif (el.attributes[\"advTm\"] !== void 0) result.advanceAfterMs = Number(el.attributes[\"advTm\"]);\n\t}\n\tfor (const t of TRANSITION_ELEMENT_TYPES) {\n\t\tconst child = findChild(el, `p:${t}`);\n\t\tif (!child) continue;\n\t\tresult.type = t;\n\t\tconst attrs = child.attributes ?? {};\n\t\tconst dir = attrs[\"dir\"];\n\t\tif (dir !== void 0) {\n\t\t\tconst direction = XML_DIR_TO_DIRECTION[String(dir)];\n\t\t\tif (direction) result.direction = direction;\n\t\t}\n\t\tif (attrs[\"orient\"] !== void 0) result.orient = attrs[\"orient\"];\n\t\tif (attrs[\"spokes\"] !== void 0) result.spokes = Number(attrs[\"spokes\"]);\n\t\tif (attrs[\"thruBlk\"] !== void 0) result.thruBlk = attrs[\"thruBlk\"] === \"1\";\n\t\tbreak;\n\t}\n\treturn result;\n}\n//#endregion\n//#region src/parts/descriptors/slide-layout.ts\nconst NAME_TO_TYPE = {\n\t\"Title Slide\": \"title\",\n\t\"Title and Content\": \"obj\",\n\t\"Section Header\": \"secHead\",\n\t\"Two Content\": \"twoObj\",\n\tComparison: \"twoTxTwoObj\",\n\t\"Title Only\": \"titleOnly\",\n\tBlank: \"blank\",\n\t\"Content with Caption\": \"objTx\",\n\t\"Picture with Caption\": \"picTx\",\n\t\"Vertical Text\": \"vertTx\",\n\t\"Vertical Title and Text\": \"vertTitleAndTx\",\n\t\"Title and Text\": \"tx\"\n};\n/** Placeholder @type → LayoutPlaceholderOptions key. */\nconst PH_TYPE_TO_KEY = {\n\ttitle: \"title\",\n\tctrTitle: \"title\",\n\tbody: \"body\",\n\tsub: \"subtitle\",\n\tdt: \"date\",\n\tftr: \"footer\",\n\tsldNum: \"slideNumber\"\n};\nconst slideLayoutDesc = {\n\tkind: \"custom\",\n\tstringify(opts, ctx) {\n\t\tconst parts = [];\n\t\tconst attrs = [`type=\"${opts.type ?? \"cust\"}\"`];\n\t\tif (opts.matchingName !== void 0) attrs.push(`matchingName=\"${opts.matchingName}\"`);\n\t\tattrs.push(`preserve=\"${opts.preserve ? 1 : 0}\"`);\n\t\tif (opts.userDrawn) attrs.push(\"userDrawn=\\\"1\\\"\");\n\t\tif (opts.showMasterSp === false) attrs.push(\"showMasterSp=\\\"0\\\"\");\n\t\tif (opts.showMasterPhAnim === false) attrs.push(\"showMasterPhAnim=\\\"0\\\"\");\n\t\tparts.push(`<p:sldLayout ${NS} ${attrs.join(\" \")}>`);\n\t\tparts.push(`<p:cSld${opts.name !== void 0 ? ` name=\"${opts.name}\"` : \"\"}>`);\n\t\tif (opts.background) parts.push(backgroundDesc.stringify(opts.background, ctx) ?? \"\");\n\t\tparts.push(\"<p:spTree>\");\n\t\tparts.push(SP_TREE_HEADER);\n\t\tif (opts.children) for (const child of opts.children) {\n\t\t\tconst xml = stringifyChild(child, ctx);\n\t\t\tif (xml) parts.push(xml);\n\t\t}\n\t\tparts.push(\"</p:spTree>\");\n\t\tif (opts.customerData && opts.customerData.length > 0) {\n\t\t\tconst cdItems = opts.customerData.map((d) => `<p:custData r:id=\"${d.rId}\"/>`).join(\"\");\n\t\t\tparts.push(`<p:custDataLst>${cdItems}</p:custDataLst>`);\n\t\t}\n\t\tif (opts.controls && opts.controls.length > 0) {\n\t\t\tconst ctrlItems = opts.controls.map((c) => {\n\t\t\t\tconst a = [];\n\t\t\t\tif (c.shapeId !== void 0) a.push(`spid=\"${c.shapeId}\"`);\n\t\t\t\tif (c.name) a.push(`name=\"${c.name}\"`);\n\t\t\t\tif (c.showAsIcon) a.push(\"showAsIcon=\\\"1\\\"\");\n\t\t\t\tif (c.rId) a.push(`r:id=\"${c.rId}\"`);\n\t\t\t\tif (c.imageWidth !== void 0) a.push(`imgW=\"${c.imageWidth}\"`);\n\t\t\t\tif (c.imageHeight !== void 0) a.push(`imgH=\"${c.imageHeight}\"`);\n\t\t\t\treturn `<p:control ${a.join(\" \")}/>`;\n\t\t\t}).join(\"\");\n\t\t\tparts.push(`<p:controls>${ctrlItems}</p:controls>`);\n\t\t}\n\t\tparts.push(\"</p:cSld>\");\n\t\tparts.push(colorMapOverrideDesc.stringify(opts.colorMapOverride, ctx) ?? \"<p:clrMapOvr><a:masterClrMapping/></p:clrMapOvr>\");\n\t\tif (opts.transition) {\n\t\t\tconst transitionXml = stringifyTransition(opts.transition);\n\t\t\tif (transitionXml) parts.push(transitionXml);\n\t\t}\n\t\tif (opts.timing) parts.push(timingDesc.stringify(opts.timing, ctx) ?? \"\");\n\t\tif (opts.headerFooter) {\n\t\t\tconst hf = opts.headerFooter;\n\t\t\tconst hfChildren = [];\n\t\t\tif (hf.slideNumber) hfChildren.push(\"<p:sldNum/>\");\n\t\t\tif (hf.dateTime) hfChildren.push(\"<p:dt/>\");\n\t\t\tif (hf.footer) hfChildren.push(\"<p:ftr/>\");\n\t\t\tif (hf.header) hfChildren.push(\"<p:hdr/>\");\n\t\t\tif (hfChildren.length > 0) parts.push(`<p:hf>${hfChildren.join(\"\")}</p:hf>`);\n\t\t}\n\t\tparts.push(\"</p:sldLayout>\");\n\t\treturn parts.join(\"\");\n\t},\n\tparse(el, ctx) {\n\t\tconst result = {};\n\t\tconst typeAttr = attr(el, \"type\");\n\t\tif (typeAttr) result.type = typeAttr;\n\t\tconst matchingName = attr(el, \"matchingName\");\n\t\tif (matchingName !== void 0) result.matchingName = matchingName;\n\t\tconst preserveAttr = attr(el, \"preserve\");\n\t\tif (preserveAttr !== void 0) result.preserve = preserveAttr === \"1\";\n\t\tif (attr(el, \"userDrawn\") === \"1\") result.userDrawn = true;\n\t\tconst showMasterSp = attr(el, \"showMasterSp\");\n\t\tif (showMasterSp !== void 0) result.showMasterSp = showMasterSp !== \"0\";\n\t\tconst showMasterPhAnim = attr(el, \"showMasterPhAnim\");\n\t\tif (showMasterPhAnim !== void 0) result.showMasterPhAnim = showMasterPhAnim !== \"0\";\n\t\tconst cSld = findChild(el, \"p:cSld\");\n\t\tif (cSld) {\n\t\t\tconst name = attr(cSld, \"name\");\n\t\t\tif (name !== void 0) {\n\t\t\t\tresult.name = name;\n\t\t\t\tif (!result.type) result.type = NAME_TO_TYPE[name] ?? name;\n\t\t\t}\n\t\t\tconst bg = findChild(cSld, \"p:bg\");\n\t\t\tif (bg) result.background = backgroundDesc.parse(bg, ctx);\n\t\t\tconst spTree = findChild(cSld, \"p:spTree\");\n\t\t\tif (spTree) {\n\t\t\t\tconst children = [];\n\t\t\t\tconst placeholders = {};\n\t\t\t\tfor (const child of spTree.elements ?? []) {\n\t\t\t\t\tif (child.name === \"p:nvGrpSpPr\" || child.name === \"p:grpSpPr\") continue;\n\t\t\t\t\tconst parsed = parseChild(child, ctx);\n\t\t\t\t\tif (parsed !== void 0) children.push(parsed);\n\t\t\t\t\tif (child.name === \"p:sp\") {\n\t\t\t\t\t\tconst ph = extractPlaceholderPosition(child);\n\t\t\t\t\t\tif (ph) placeholders[ph.key] = ph.pos;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (children.length > 0) result.children = children;\n\t\t\t\tif (Object.keys(placeholders).length > 0) result.placeholders = placeholders;\n\t\t\t}\n\t\t\tconst custDataLst = findChild(cSld, \"p:custDataLst\");\n\t\t\tif (custDataLst) {\n\t\t\t\tconst items = [];\n\t\t\t\tfor (const cd of custDataLst.elements ?? []) if (cd.name === \"p:custData\") {\n\t\t\t\t\tconst rId = attr(cd, \"r:id\");\n\t\t\t\t\tif (rId) items.push({ rId });\n\t\t\t\t}\n\t\t\t\tif (items.length > 0) result.customerData = items;\n\t\t\t}\n\t\t\tconst controls = findChild(cSld, \"p:controls\");\n\t\t\tif (controls) {\n\t\t\t\tconst items = [];\n\t\t\t\tfor (const ctrl of controls.elements ?? []) {\n\t\t\t\t\tif (ctrl.name !== \"p:control\") continue;\n\t\t\t\t\tconst item = {};\n\t\t\t\t\tconst spid = attrNum(ctrl, \"spid\");\n\t\t\t\t\tif (spid !== void 0) item.shapeId = spid;\n\t\t\t\t\tconst ctrlName = attr(ctrl, \"name\");\n\t\t\t\t\tif (ctrlName) item.name = ctrlName;\n\t\t\t\t\tif (attr(ctrl, \"showAsIcon\") === \"1\") item.showAsIcon = true;\n\t\t\t\t\tconst rId = attr(ctrl, \"r:id\");\n\t\t\t\t\tif (rId) item.rId = rId;\n\t\t\t\t\tconst imgW = attrNum(ctrl, \"imgW\");\n\t\t\t\t\tif (imgW !== void 0) item.imageWidth = imgW;\n\t\t\t\t\tconst imgH = attrNum(ctrl, \"imgH\");\n\t\t\t\t\tif (imgH !== void 0) item.imageHeight = imgH;\n\t\t\t\t\titems.push(item);\n\t\t\t\t}\n\t\t\t\tif (items.length > 0) result.controls = items;\n\t\t\t}\n\t\t}\n\t\tconst clrMapOvr = findChild(el, \"p:clrMapOvr\");\n\t\tif (clrMapOvr) result.colorMapOverride = colorMapOverrideDesc.parse(clrMapOvr, ctx);\n\t\tconst transition = findChild(el, \"p:transition\");\n\t\tif (transition) result.transition = readTransition(transition);\n\t\tconst timing = findChild(el, \"p:timing\");\n\t\tif (timing) result.timing = timingDesc.parse(timing, ctx);\n\t\tconst hf = findChild(el, \"p:hf\");\n\t\tif (hf) {\n\t\t\tconst hfOpts = {};\n\t\t\tif (findChild(hf, \"p:sldNum\")) hfOpts.slideNumber = true;\n\t\t\tif (findChild(hf, \"p:dt\")) hfOpts.dateTime = true;\n\t\t\tif (findChild(hf, \"p:ftr\")) hfOpts.footer = true;\n\t\t\tif (findChild(hf, \"p:hdr\")) hfOpts.header = true;\n\t\t\tif (hfOpts.slideNumber || hfOpts.dateTime || hfOpts.footer || hfOpts.header) result.headerFooter = hfOpts;\n\t\t}\n\t\treturn result;\n\t}\n};\n/**\n* Read a placeholder's logical key and position (or `false` when hidden) from a\n* p:sp element. Returns undefined for non-placeholder shapes or unpositioned ones.\n*/\nfunction extractPlaceholderPosition(spEl) {\n\tconst nvSpPr = findChild(spEl, \"p:nvSpPr\");\n\tconst nvPr = nvSpPr ? findChild(nvSpPr, \"p:nvPr\") : void 0;\n\tconst ph = nvPr ? findChild(nvPr, \"p:ph\") : void 0;\n\tif (!ph) return void 0;\n\tconst phType = attr(ph, \"type\");\n\tconst key = phType ? PH_TYPE_TO_KEY[phType] : void 0;\n\tif (!key) return void 0;\n\tif (attr(ph, \"sz\") === \"0\") return {\n\t\tkey,\n\t\tpos: false\n\t};\n\tconst spPr = findChild(spEl, \"p:spPr\");\n\tconst xfrm = spPr ? findChild(spPr, \"a:xfrm\") : void 0;\n\tif (!xfrm) return void 0;\n\tconst off = findChild(xfrm, \"a:off\");\n\tconst ext = findChild(xfrm, \"a:ext\");\n\tif (!off || !ext) return void 0;\n\tconst x = attrNum(off, \"x\");\n\tconst y = attrNum(off, \"y\");\n\tconst width = attrNum(ext, \"cx\");\n\tconst height = attrNum(ext, \"cy\");\n\tif (x === void 0 || y === void 0 || width === void 0 || height === void 0) return;\n\treturn {\n\t\tkey,\n\t\tpos: {\n\t\t\tx,\n\t\t\ty,\n\t\t\twidth,\n\t\t\theight\n\t\t}\n\t};\n}\nconst STUB_READ_CONTEXT = {\n\tresolveRelationship: () => void 0,\n\tgetPart: () => void 0,\n\tgetRaw: () => void 0\n};\n/**\n* Parse a pre-built slideLayout XML string into a structured LayoutDefinition.\n*\n* Used by the compiler to convert fresh template/custom layout XML (produced by\n* buildLayoutXml/buildCustomLayoutXml) into structured form, so every layout\n* flows through {@link slideLayoutDesc.stringify} uniformly.\n*/\nfunction parseLayoutDef(xml) {\n\tconst root = parse(xml).elements?.[0];\n\tif (!root) throw new Error(\"parsed slideLayout document has no root element\");\n\treturn slideLayoutDesc.parse(root, STUB_READ_CONTEXT);\n}\n//#endregion\n//#region src/parts/descriptors/comments.ts\n/**\n* Comment descriptors for PPTX.\n*\n* Handles both comment authors (p:cmAuthorLst) and\n* per-slide comment lists (p:cmLst).\n*\n* @module\n*/\nconst commentAuthorsDesc = {\n\tkind: \"custom\",\n\tstringify(authors, _ctx) {\n\t\tconst parts = [\"<p:cmAuthorLst xmlns:p=\\\"http://schemas.openxmlformats.org/presentationml/2006/main\\\">\"];\n\t\tfor (const a of authors) parts.push(`<p:cmAuthor id=\"${a.id}\" name=\"${escapeXml(a.name)}\" initials=\"${escapeXml(a.initials)}\" clrIdx=\"${a.clrIdx}\" lastIdx=\"${a.lastIdx}\"/>`);\n\t\tparts.push(\"</p:cmAuthorLst>\");\n\t\treturn parts.join(\"\");\n\t},\n\tparse(el, _ctx) {\n\t\tconst authors = [];\n\t\tfor (const child of el.elements ?? []) {\n\t\t\tif (child.name !== \"p:cmAuthor\") continue;\n\t\t\tconst id = attrNum(child, \"id\");\n\t\t\tconst name = attr(child, \"name\");\n\t\t\tconst initials = attr(child, \"initials\");\n\t\t\tconst clrIdx = attrNum(child, \"clrIdx\");\n\t\t\tconst lastIdx = attrNum(child, \"lastIdx\");\n\t\t\tif (id !== void 0 && name && initials && clrIdx !== void 0 && lastIdx !== void 0) authors.push({\n\t\t\t\tid,\n\t\t\t\tname,\n\t\t\t\tinitials,\n\t\t\t\tclrIdx,\n\t\t\t\tlastIdx\n\t\t\t});\n\t\t}\n\t\treturn authors;\n\t}\n};\nconst slideCommentsDesc = {\n\tkind: \"custom\",\n\tstringify(comments, _ctx) {\n\t\tconst parts = [\"<p:cmLst xmlns:p=\\\"http://schemas.openxmlformats.org/presentationml/2006/main\\\">\"];\n\t\tfor (const c of comments) {\n\t\t\tconst attrs = [`authorId=\"${c.authorId}\"`, `idx=\"${c.idx}\"`];\n\t\t\tif (c.date != null) attrs.push(`dt=\"${escapeXml(c.date)}\"`);\n\t\t\tparts.push(`<p:cm ${attrs.join(\" \")}>`);\n\t\t\tparts.push(`<p:pos x=\"${convertToEmu(c.x)}\" y=\"${convertToEmu(c.y)}\"/>`);\n\t\t\tparts.push(`<p:text>${escapeXml(c.text)}</p:text>`);\n\t\t\tif (c.modified !== void 0) parts.push(`<p:extLst mod=\"${c.modified ? 1 : 0}\"/>`);\n\t\t\tparts.push(\"</p:cm>\");\n\t\t}\n\t\tparts.push(\"</p:cmLst>\");\n\t\treturn parts.join(\"\");\n\t},\n\tparse(el, _ctx) {\n\t\tconst comments = [];\n\t\tfor (const cm of el.elements ?? []) {\n\t\t\tif (cm.name !== \"p:cm\") continue;\n\t\t\tconst authorId = attrNum(cm, \"authorId\") ?? 0;\n\t\t\tconst idx = attrNum(cm, \"idx\") ?? 0;\n\t\t\tconst date = attr(cm, \"dt\");\n\t\t\tconst pos = findChild(cm, \"p:pos\");\n\t\t\tconst x = pos ? attrNum(pos, \"x\") ?? 0 : 0;\n\t\t\tconst y = pos ? attrNum(pos, \"y\") ?? 0 : 0;\n\t\t\tconst textEl = findChild(cm, \"p:text\");\n\t\t\tconst entry = {\n\t\t\t\tauthorId,\n\t\t\t\tidx,\n\t\t\t\tx,\n\t\t\t\ty,\n\t\t\t\ttext: textEl ? textOf(textEl) ?? \"\" : \"\"\n\t\t\t};\n\t\t\tif (date !== void 0) entry.date = date;\n\t\t\tconst extLst = findChild(cm, \"p:extLst\");\n\t\t\tif (extLst) {\n\t\t\t\tconst mod = attr(extLst, \"mod\");\n\t\t\t\tif (mod !== void 0) entry.modified = mod === \"1\";\n\t\t\t}\n\t\t\tcomments.push(entry);\n\t\t}\n\t\treturn comments;\n\t}\n};\n//#endregion\n//#region src/parts/presentation-properties.ts\nconst COLOR_MODE_XSD = {\n\tblackWhite: \"bw\",\n\tgray: \"gray\",\n\tcolor: \"clr\"\n};\nfunction buildWebPrXml(opts) {\n\tconst attrs = [];\n\tif (opts.showAnimation) attrs.push(\" showAnimation=\\\"1\\\"\");\n\tif (opts.resizeGraphics === false) attrs.push(\" resizeGraphics=\\\"0\\\"\");\n\tif (opts.allowPng) attrs.push(\" allowPng=\\\"1\\\"\");\n\tif (opts.relyOnVml) attrs.push(\" relyOnVml=\\\"1\\\"\");\n\tif (opts.organizeInFolders === false) attrs.push(\" organizeInFolders=\\\"0\\\"\");\n\tif (opts.useLongFilenames === false) attrs.push(\" useLongFilenames=\\\"0\\\"\");\n\tif (opts.imageSize) attrs.push(` imgSz=\"${opts.imageSize}\"`);\n\tif (opts.encoding) attrs.push(` encoding=\"${opts.encoding}\"`);\n\tif (opts.color) attrs.push(` clr=\"${opts.color}\"`);\n\treturn `<p:webPr${attrs.join(\"\")}/>`;\n}\nfunction buildPrnPrXml(opts) {\n\tconst attrs = [];\n\tif (opts.printWhat) attrs.push(` prnWhat=\"${opts.printWhat}\"`);\n\tif (opts.colorMode) attrs.push(` clrMode=\"${COLOR_MODE_XSD[opts.colorMode]}\"`);\n\tif (opts.hiddenSlides) attrs.push(\" hiddenSlides=\\\"1\\\"\");\n\tif (opts.scaleToFitPaper) attrs.push(\" scaleToFitPaper=\\\"1\\\"\");\n\tif (opts.frameSlides) attrs.push(\" frameSlides=\\\"1\\\"\");\n\treturn `<p:prnPr${attrs.join(\"\")}/>`;\n}\nfunction buildHtmlPubPrXml(opts) {\n\tconst attrs = [];\n\tif (opts.showSpeakerNotes === false) attrs.push(\" showSpeakerNotes=\\\"0\\\"\");\n\tif (opts.target) attrs.push(` target=\"${opts.target}\"`);\n\tif (opts.title) attrs.push(` title=\"${opts.title}\"`);\n\tif (opts.rId) attrs.push(` r:id=\"${opts.rId}\"`);\n\treturn `<p:htmlPubPr${attrs.join(\"\")}><p:sldAll/></p:htmlPubPr>`;\n}\nfunction buildShowPrXml(showOptions) {\n\tconst showPrAttrs = [];\n\tif (showOptions.loop) showPrAttrs.push(\" loop=\\\"1\\\"\");\n\tif (showOptions.showNarration === false) showPrAttrs.push(\" showNarration=\\\"0\\\"\");\n\tif (showOptions.showAnimation === false) showPrAttrs.push(\" showAnimation=\\\"0\\\"\");\n\tif (showOptions.useTimings) showPrAttrs.push(\" useTimings=\\\"1\\\"\");\n\tconst showType = showOptions.type ?? \"present\";\n\tlet showTypeXml;\n\tif (showType === \"kiosk\") showTypeXml = `<p:kiosk${showOptions.restart !== void 0 ? ` restart=\"${showOptions.restart}\"` : \"\"}/>`;\n\telse if (showType === \"browse\") showTypeXml = `<p:browse${showOptions.showScrollbar === false ? \" showScrollbar=\\\"0\\\"\" : \"\"}/>`;\n\telse showTypeXml = \"<p:present/>\";\n\tlet slideListXml = \"<p:sldAll/>\";\n\tif (showOptions.slideRange) slideListXml = `<p:sldRg st=\"${showOptions.slideRange.start}\" end=\"${showOptions.slideRange.end}\"/>`;\n\tlet penClrXml = \"\";\n\tif (showOptions.penColor) penClrXml = `<p:penClr><a:srgbClr val=\"${showOptions.penColor}\"/></p:penClr>`;\n\treturn `<p:showPr${showPrAttrs.join(\"\")}>${showTypeXml}${slideListXml}${penClrXml}</p:showPr>`;\n}\nfunction buildPresPropsXml(opts) {\n\tconst ns = \"xmlns:a=\\\"http://schemas.openxmlformats.org/drawingml/2006/main\\\" xmlns:r=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\\\" xmlns:p=\\\"http://schemas.openxmlformats.org/presentationml/2006/main\\\"\";\n\tif (!opts) return `<p:presentationPr ${ns}/>`;\n\tconst children = [];\n\tif (opts.htmlPublish) children.push(buildHtmlPubPrXml(opts.htmlPublish));\n\tif (opts.web) children.push(buildWebPrXml(opts.web));\n\tif (opts.print) children.push(buildPrnPrXml(opts.print));\n\tif (opts.show) children.push(buildShowPrXml(opts.show));\n\tif (opts.colorMru && opts.colorMru.length > 0) children.push(`<p:clrMru>${opts.colorMru.map((c) => `<a:srgbClr val=\"${c}\"/>`).join(\"\")}</p:clrMru>`);\n\tif (children.length === 0) return `<p:presentationPr ${ns}/>`;\n\treturn `<p:presentationPr ${ns}>${children.join(\"\")}</p:presentationPr>`;\n}\n//#endregion\n//#region src/parts/descriptors/presentation-properties.ts\nconst presPropsDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\treturn buildPresPropsXml(opts);\n\t},\n\tparse(el, _ctx) {\n\t\treturn parsePresProps(el);\n\t}\n};\nfunction parsePresProps(el) {\n\tconst result = {};\n\tconst showPr = findChild(el, \"p:showPr\") ?? findChild(el, \"p:show\");\n\tif (showPr) {\n\t\tconst showOpts = {};\n\t\tif (showPr.attributes?.[\"loop\"] !== void 0) showOpts.loop = showPr.attributes[\"loop\"] === \"1\";\n\t\tif (showPr.attributes?.[\"showNarration\"] !== void 0) showOpts.showNarration = showPr.attributes[\"showNarration\"] === \"1\";\n\t\tif (showPr.attributes?.[\"useTimings\"] !== void 0) showOpts.useTimings = showPr.attributes[\"useTimings\"] === \"1\";\n\t\tif (findChild(showPr, \"p:kiosk\")) showOpts.type = \"kiosk\";\n\t\telse if (findChild(showPr, \"p:browse\")) showOpts.type = \"browse\";\n\t\telse if (findChild(showPr, \"p:present\")) showOpts.type = \"present\";\n\t\tif (Object.keys(showOpts).length > 0) result.show = showOpts;\n\t}\n\treturn result;\n}\n//#endregion\n//#region src/context.ts\n/**\n* PPTX write context — collects resources during descriptor-driven serialization.\n*\n* @module\n*/\n/**\n* Parse context for PPTX documents.\n*/\nvar ParseContext = class {\n\tpptx;\n\tslideRels;\n\tconstructor(pptx, slideRels) {\n\t\tthis.pptx = pptx;\n\t\tthis.slideRels = slideRels;\n\t}\n};\n/**\n* PPTX-specific write context.\n*\n* Extends the core {@link WriteContext} with media, chart, SmartArt,\n* and hyperlink registration methods. Custom descriptors cast the\n* generic `WriteContext` to this type to access PPTX-specific features.\n*/\nvar PptxWriteContext = class {\n\t_media = new Media();\n\t_charts = /* @__PURE__ */ new Map();\n\t_smartArts = /* @__PURE__ */ new Map();\n\t_hyperlinks = /* @__PURE__ */ new Map();\n\t_nextRelId = 1;\n\t_nextChartId = 1;\n\t_nextSmartArtId = 1;\n\taddRelationship(_type, _target, _mode) {\n\t\treturn `rId${this._nextRelId++}`;\n\t}\n\taddMedia(data, type) {\n\t\treturn `{${this._media.addMedia(data, type, (fileName) => ({\n\t\t\tkey: fileName,\n\t\t\tfileName,\n\t\t\tdata,\n\t\t\ttype,\n\t\t\ttransformation: {\n\t\t\t\tpixels: {\n\t\t\t\t\tx: 0,\n\t\t\t\t\ty: 0\n\t\t\t\t},\n\t\t\t\temus: {\n\t\t\t\t\tx: 0,\n\t\t\t\t\ty: 0\n\t\t\t\t}\n\t\t\t}\n\t\t})).fileName}}`;\n\t}\n\taddImage(key, entry) {\n\t\treturn this._media.addMedia(entry.data, entry.type, (fileName) => ({\n\t\t\t...entry,\n\t\t\tfileName,\n\t\t\tkey: fileName\n\t\t}), key);\n\t}\n\taddChart(key, entry) {\n\t\tthis._charts.set(key, entry);\n\t}\n\taddSmartArt(key, entry) {\n\t\tthis._smartArts.set(key, entry);\n\t}\n\taddHyperlink(key, url, tooltip) {\n\t\tthis._hyperlinks.set(key, {\n\t\t\tkey,\n\t\t\turl,\n\t\t\ttooltip\n\t\t});\n\t}\n\tnextChartKey() {\n\t\treturn `chart_${this._nextChartId++}`;\n\t}\n\tnextSmartArtKey() {\n\t\treturn `smartart_${this._nextSmartArtId++}`;\n\t}\n\tget media() {\n\t\treturn this._media.array;\n\t}\n\t/** Underlying deduplicated collection — used by the compiler for media output. */\n\tget mediaCollection() {\n\t\treturn this._media;\n\t}\n\tget charts() {\n\t\treturn [...this._charts.values()];\n\t}\n\tget smartArts() {\n\t\treturn [...this._smartArts.values()];\n\t}\n\tget hyperlinks() {\n\t\treturn [...this._hyperlinks.values()];\n\t}\n};\n/**\n* PPTX-specific read context.\n*\n* Adapts the existing {@link ParseContext} to the core {@link ReadContext}\n* interface used by the descriptor parse pipeline.\n*/\nvar PptxReadContext = class {\n\t_parseCtx;\n\tconstructor(_parseCtx) {\n\t\tthis._parseCtx = _parseCtx;\n\t}\n\tresolveRelationship(rId) {\n\t\treturn this._parseCtx.slideRels.get(rId);\n\t}\n\tgetPart(path) {\n\t\treturn this._parseCtx.pptx.doc.get(path);\n\t}\n\tgetRaw(path) {\n\t\treturn this._parseCtx.pptx.doc.getRaw(path);\n\t}\n};\n//#endregion\n//#region src/parts/descriptors/notes-master.ts\nconst COLOR_MAP_KEYS = [\n\t\"bg1\",\n\t\"tx1\",\n\t\"bg2\",\n\t\"tx2\",\n\t\"accent1\",\n\t\"accent2\",\n\t\"accent3\",\n\t\"accent4\",\n\t\"accent5\",\n\t\"accent6\",\n\t\"hlink\",\n\t\"folHlink\"\n];\nconst LEVEL_TAGS = [\n\t\"a:lvl1pPr\",\n\t\"a:lvl2pPr\",\n\t\"a:lvl3pPr\",\n\t\"a:lvl4pPr\",\n\t\"a:lvl5pPr\",\n\t\"a:lvl6pPr\",\n\t\"a:lvl7pPr\",\n\t\"a:lvl8pPr\",\n\t\"a:lvl9pPr\"\n];\nconst notesMasterDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\treturn buildNotesMasterXml(opts.options);\n\t},\n\tparse(el, _ctx) {\n\t\tconst result = {};\n\t\tconst options = {};\n\t\tconst clrMap = findChild(el, \"p:clrMap\");\n\t\tif (clrMap) {\n\t\t\tconst colorMap = {};\n\t\t\tfor (const key of COLOR_MAP_KEYS) {\n\t\t\t\tconst v = attr(clrMap, key);\n\t\t\t\tif (v !== void 0) colorMap[key] = v;\n\t\t\t}\n\t\t\tif (Object.keys(colorMap).length > 0) options.colorMap = colorMap;\n\t\t}\n\t\tconst hf = findChild(el, \"p:hf\");\n\t\tif (hf) {\n\t\t\tconst headerFooter = {};\n\t\t\tconst dt = attr(hf, \"dt\");\n\t\t\tif (dt !== void 0) headerFooter.date = dt === \"1\";\n\t\t\tconst hdr = attr(hf, \"hdr\");\n\t\t\tif (hdr !== void 0) headerFooter.header = hdr === \"1\";\n\t\t\tconst ftr = attr(hf, \"ftr\");\n\t\t\tif (ftr !== void 0) headerFooter.footer = ftr === \"1\";\n\t\t\tconst sldNum = attr(hf, \"sldNum\");\n\t\t\tif (sldNum !== void 0) headerFooter.slideNumber = sldNum === \"1\";\n\t\t\tif (Object.keys(headerFooter).length > 0) options.headerFooter = headerFooter;\n\t\t}\n\t\tconst notesStyle = findChild(el, \"p:notesStyle\");\n\t\tif (notesStyle) {\n\t\t\tconst levels = [];\n\t\t\tfor (const tag of LEVEL_TAGS) {\n\t\t\t\tconst lvlEl = findChild(notesStyle, tag);\n\t\t\t\tif (lvlEl) {\n\t\t\t\t\tconst lvl = {};\n\t\t\t\t\tconst defRPr = findChild(lvlEl, \"a:defRPr\");\n\t\t\t\t\tif (defRPr) {\n\t\t\t\t\t\tconst sz = attrMeasure(defRPr, \"sz\");\n\t\t\t\t\t\tif (sz !== void 0) lvl.fontSize = sz;\n\t\t\t\t\t}\n\t\t\t\t\tconst marL = attrMeasure(lvlEl, \"marL\");\n\t\t\t\t\tif (marL !== void 0) lvl.marginLeft = marL;\n\t\t\t\t\tconst algn = attr(lvlEl, \"algn\");\n\t\t\t\t\tif (algn !== void 0) lvl.alignment = algn;\n\t\t\t\t\tlevels.push(lvl);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (levels.length > 0) options.notesStyle = levels;\n\t\t}\n\t\tif (Object.keys(options).length > 0) result.options = options;\n\t\treturn result;\n\t}\n};\n//#endregion\n//#region src/parts/descriptors/notes-slide.ts\nconst notesSlideDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\treturn buildNotesSlideXml({ text: opts.text });\n\t},\n\tparse(el, _ctx) {\n\t\tconst cSld = findChild(el, \"p:cSld\");\n\t\tif (!cSld) return {};\n\t\tconst spTree = findChild(cSld, \"p:spTree\");\n\t\tif (!spTree) return {};\n\t\tfor (const sp of spTree.elements ?? []) {\n\t\t\tif (sp.name !== \"p:sp\") continue;\n\t\t\tconst nvPr = findChild(findChild(sp, \"p:nvSpPr\") ?? sp, \"p:nvPr\");\n\t\t\tconst ph = nvPr ? findChild(nvPr, \"p:ph\") : void 0;\n\t\t\tif (!ph) continue;\n\t\t\tif (ph.attributes?.[\"type\"] !== \"body\") continue;\n\t\t\tconst txBody = findChild(sp, \"p:txBody\");\n\t\t\tif (!txBody) break;\n\t\t\tconst parts = [];\n\t\t\tfor (const p of txBody.elements ?? []) {\n\t\t\t\tif (p.name !== \"a:p\") continue;\n\t\t\t\tfor (const r of p.elements ?? []) {\n\t\t\t\t\tif (r.name !== \"a:r\") continue;\n\t\t\t\t\tconst t = findChild(r, \"a:t\");\n\t\t\t\t\tif (t) parts.push(textOf(t) ?? \"\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (parts.length > 0) return { text: parts.join(\"\\n\") };\n\t\t\tbreak;\n\t\t}\n\t\treturn {};\n\t}\n};\n//#endregion\n//#region src/parts/descriptors/table-styles.ts\n/**\n* Table Styles (a:tblStyleLst) descriptor for PPTX.\n*\n* @module\n*/\nconst DEFAULT_STYLE_ID = \"{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}\";\nconst tableStylesDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\tif (!opts.opts) return `<a:tblStyleLst xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" def=\"${DEFAULT_STYLE_ID}\"/>`;\n\t\treturn createTableStyleList(opts.opts);\n\t},\n\tparse(el, _ctx) {\n\t\treturn { opts: parseTableStyleList(el) };\n\t}\n};\n//#endregion\n//#region src/parts/view-properties.ts\nconst LAST_VIEW_XSD = {\n\tslideView: \"sldView\",\n\tslideMasterView: \"sldMasterView\",\n\tnotesView: \"notesView\",\n\thandoutView: \"handoutView\",\n\toutlineView: \"outlineView\",\n\tslideSorterView: \"sldSorterView\"\n};\nfunction buildNormalViewPrXml(opts) {\n\tconst attrs = [];\n\tif (opts?.showOutlineIcons === false) attrs.push(\" showOutlineIcons=\\\"0\\\"\");\n\tif (opts?.snapVertSplitter) attrs.push(\" snapVertSplitter=\\\"1\\\"\");\n\tif (opts?.vertBarState) attrs.push(` vertBarState=\"${opts.vertBarState}\"`);\n\tif (opts?.horzBarState) attrs.push(` horzBarState=\"${opts.horzBarState}\"`);\n\tif (opts?.preferSingleView) attrs.push(\" preferSingleView=\\\"1\\\"\");\n\treturn `<p:normalViewPr${attrs.join(\"\")}><p:restoredLeft sz=\"14996\" autoAdjust=\"0\"/><p:restoredTop sz=\"94660\"/></p:normalViewPr>`;\n}\nfunction buildCViewPrXml(zoomN, zoomD, varScale = false) {\n\treturn `<p:cViewPr${varScale ? \" varScale=\\\"1\\\"\" : \"\"}><p:scale><a:sx n=\"${zoomN}\" d=\"${zoomD}\"/><a:sy n=\"${zoomN}\" d=\"${zoomD}\"/></p:scale><p:origin x=\"1200\" y=\"72\"/></p:cViewPr>`;\n}\nfunction buildCSldViewPrXml(opts, zoomN = 90, zoomD = 100, guides) {\n\tconst attrs = [];\n\tif (opts?.snapToGrid === false) attrs.push(\" snapToGrid=\\\"0\\\"\");\n\tif (opts?.snapToObjects) attrs.push(\" snapToObjects=\\\"1\\\"\");\n\tif (opts?.showGuides) attrs.push(\" showGuides=\\\"1\\\"\");\n\tlet guideLstXml = \"<p:guideLst/>\";\n\tif (guides && guides.length > 0) guideLstXml = `<p:guideLst>${guides.map((g) => {\n\t\tconst gAttrs = [];\n\t\tif (g.orient) gAttrs.push(` orient=\"${g.orient}\"`);\n\t\tif (g.pos !== void 0) gAttrs.push(` pos=\"${g.pos}\"`);\n\t\treturn `<p:guide${gAttrs.join(\"\")}/>`;\n\t}).join(\"\")}</p:guideLst>`;\n\treturn `<p:cSldViewPr${attrs.join(\"\")}>` + buildCViewPrXml(zoomN, zoomD, opts?.varScale !== false) + guideLstXml + \"</p:cSldViewPr>\";\n}\nfunction buildViewPropsXml(opts) {\n\tconst ns = \"xmlns:a=\\\"http://schemas.openxmlformats.org/drawingml/2006/main\\\" xmlns:r=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\\\" xmlns:p=\\\"http://schemas.openxmlformats.org/presentationml/2006/main\\\"\";\n\tconst zoomN = opts?.zoomScaleNumerator ?? 90;\n\tconst zoomD = opts?.zoomScaleDenominator ?? 100;\n\tconst gridCx = opts?.gridSpacing?.cx ?? 72008;\n\tconst gridCy = opts?.gridSpacing?.cy ?? 72008;\n\tconst parts = [];\n\tlet rootAttrs = \"\";\n\tif (opts?.lastView) rootAttrs += ` lastView=\"${LAST_VIEW_XSD[opts.lastView]}\"`;\n\tif (opts?.showComments === false) rootAttrs += \" showComments=\\\"0\\\"\";\n\tparts.push(`<p:viewPr ${ns}${rootAttrs}>`);\n\tparts.push(buildNormalViewPrXml(opts?.normalView));\n\tparts.push(\"<p:slideViewPr>\");\n\tparts.push(buildCSldViewPrXml(opts?.slideView, zoomN, zoomD, opts?.guides));\n\tparts.push(\"</p:slideViewPr>\");\n\tif (opts?.outlineView) {\n\t\tlet outlineXml = \"<p:outlineViewPr>\";\n\t\toutlineXml += buildCViewPrXml(zoomN, zoomD);\n\t\tif (opts.outlineView.slides && opts.outlineView.slides.length > 0) {\n\t\t\toutlineXml += \"<p:sldLst>\";\n\t\t\tfor (const sl of opts.outlineView.slides) {\n\t\t\t\tconst slAttrs = [`r:id=\"${sl.rId}\"`];\n\t\t\t\tif (sl.collapse) slAttrs.push(\" collapse=\\\"1\\\"\");\n\t\t\t\toutlineXml += `<p:sld ${slAttrs.join(\" \")}/>`;\n\t\t\t}\n\t\t\toutlineXml += \"</p:sldLst>\";\n\t\t}\n\t\toutlineXml += \"</p:outlineViewPr>\";\n\t\tparts.push(outlineXml);\n\t}\n\tparts.push(\"<p:notesTextViewPr>\");\n\tparts.push(\"<p:cViewPr>\");\n\tparts.push(\"<p:scale><a:sx n=\\\"1\\\" d=\\\"1\\\"/><a:sy n=\\\"1\\\" d=\\\"1\\\"/></p:scale>\");\n\tparts.push(\"<p:origin x=\\\"0\\\" y=\\\"0\\\"/>\");\n\tparts.push(\"</p:cViewPr>\");\n\tparts.push(\"</p:notesTextViewPr>\");\n\tif (opts?.sorterView) {\n\t\tconst sorterAttrs = [];\n\t\tif (opts.sorterView.showFormatting) sorterAttrs.push(\" showFormatting=\\\"1\\\"\");\n\t\tparts.push(`<p:sorterViewPr${sorterAttrs.join(\"\")}>`);\n\t\tparts.push(buildCViewPrXml(zoomN, zoomD));\n\t\tparts.push(\"</p:sorterViewPr>\");\n\t}\n\tif (opts?.notesView) {\n\t\tparts.push(\"<p:notesViewPr>\");\n\t\tparts.push(buildCSldViewPrXml(void 0, zoomN, zoomD));\n\t\tparts.push(\"</p:notesViewPr>\");\n\t}\n\tparts.push(`<p:gridSpacing cx=\"${gridCx}\" cy=\"${gridCy}\"/>`);\n\tparts.push(\"</p:viewPr>\");\n\treturn parts.join(\"\");\n}\n//#endregion\n//#region src/parts/descriptors/view-properties.ts\nconst viewPropsDesc = {\n\tkind: \"custom\",\n\tstringify(opts, _ctx) {\n\t\treturn buildViewPropsXml(opts);\n\t},\n\tparse(el, _ctx) {\n\t\treturn parseViewProperties(el);\n\t}\n};\nfunction parseViewProperties(el) {\n\tconst result = {};\n\tif (el.attributes) {\n\t\tconst a = el.attributes;\n\t\tif (a[\"lastView\"]) {\n\t\t\tconst mapped = {\n\t\t\t\tsldView: \"slideView\",\n\t\t\t\tsldMasterView: \"slideMasterView\",\n\t\t\t\tnotesView: \"notesView\",\n\t\t\t\thandoutView: \"handoutView\",\n\t\t\t\toutlineView: \"outlineView\",\n\t\t\t\tsldSorterView: \"slideSorterView\"\n\t\t\t}[a[\"lastView\"]];\n\t\t\tif (mapped) result.lastView = mapped;\n\t\t}\n\t\tif (a[\"showComments\"] !== void 0) result.showComments = a[\"showComments\"] !== \"0\";\n\t}\n\tconst gridSpacing = findChild(el, \"p:gridSpacing\");\n\tif (gridSpacing?.attributes) {\n\t\tconst cx = attrNum(gridSpacing, \"cx\");\n\t\tconst cy = attrNum(gridSpacing, \"cy\");\n\t\tif (cx !== void 0 || cy !== void 0) result.gridSpacing = {\n\t\t\tcx: cx ?? 72008,\n\t\t\tcy: cy ?? 72008\n\t\t};\n\t}\n\treturn result;\n}\n//#endregion\nexport { buildMasterChildrenXml as A, buildLayoutXml as C, createPptxEffectList as D, ReflectionAlignment as E, DEFAULT_COLOR_MAP as O, buildCustomLayoutXml as S, extractBlipFillMedia as T, backgroundDesc as _, ParseContext as a, buildNotesSlideXml as b, presPropsDesc as c, parseLayoutDef as d, slideLayoutDesc as f, stringifyChild as g, parseChild as h, notesMasterDesc as i, SP_TREE_HEADER as k, commentAuthorsDesc as l, buildTransition as m, tableStylesDesc as n, PptxReadContext as o, slideDesc as p, notesSlideDesc as r, PptxWriteContext as s, viewPropsDesc as t, slideCommentsDesc as u, textRunDesc as v, buildFill as w, buildNotesMasterXml as x, timingDesc as y };\n\n//# sourceMappingURL=view-properties-u0DngwjR.mjs.map","import { _ as backgroundDesc, a as ParseContext, c as presPropsDesc, f as slideLayoutDesc, h as parseChild, i as notesMasterDesc, l as commentAuthorsDesc, n as tableStylesDesc, o as PptxReadContext, p as slideDesc, r as notesSlideDesc, t as viewPropsDesc, u as slideCommentsDesc } from \"./view-properties-u0DngwjR.mjs\";\nimport { attr, attrNum, findChild } from \"@office-open/xml\";\nimport { appPropertiesDesc, customPropertiesDesc, parseArchive, parseCorePropsElement, toUint8Array } from \"@office-open/core\";\nimport { themeDesc } from \"@office-open/core/theme\";\n//#region src/parse.ts\nfunction resolveRelsPath(target) {\n\tif (target.startsWith(\"/\")) return target.slice(1);\n\tif (target.startsWith(\"../\")) return target.replace(\"../\", \"ppt/\");\n\treturn `ppt/${target}`;\n}\nfunction sortByNumber(paths) {\n\treturn paths.sort((a, b) => {\n\t\treturn parseInt(a.match(/(\\d+)/)?.[1] ?? \"0\", 10) - parseInt(b.match(/(\\d+)/)?.[1] ?? \"0\", 10);\n\t});\n}\nfunction xmlKeys(keys) {\n\treturn keys.filter((k) => k.endsWith(\".xml\"));\n}\nfunction parseRootRels(doc) {\n\tconst relsEl = doc.get(\"_rels/.rels\");\n\tif (!relsEl) return {};\n\tlet coreProps;\n\tlet appProps;\n\tlet customProps;\n\tfor (const child of relsEl.elements ?? []) {\n\t\tif (child.name !== \"Relationship\") continue;\n\t\tconst type = attr(child, \"Type\") ?? \"\";\n\t\tconst target = attr(child, \"Target\") ?? \"\";\n\t\tif (!target) continue;\n\t\tconst path = target.startsWith(\"/\") ? target.slice(1) : target;\n\t\tif (type.includes(\"/core-properties\")) coreProps = path;\n\t\telse if (type.includes(\"/extended-properties\")) appProps = path;\n\t\telse if (type.includes(\"/custom-properties\")) customProps = path;\n\t}\n\treturn {\n\t\tcoreProps,\n\t\tappProps,\n\t\tcustomProps\n\t};\n}\nfunction parseSlideRels(doc, slidePaths, refs) {\n\tconst commentsSet = new Set(refs.comments);\n\tconst chartsSet = new Set(refs.charts);\n\tconst diagramDataSet = new Set(refs.diagramData);\n\tconst mediaSet = new Set(refs.media);\n\tfor (const slidePath of slidePaths) {\n\t\tconst parts = slidePath.split(\"/\");\n\t\tconst fileName = parts.pop();\n\t\tconst relsPath = `${parts.join(\"/\")}/_rels/${fileName}.rels`;\n\t\tconst relsEl = doc.get(relsPath);\n\t\tif (!relsEl) continue;\n\t\tfor (const child of relsEl.elements ?? []) {\n\t\t\tif (child.name !== \"Relationship\") continue;\n\t\t\tconst type = attr(child, \"Type\") ?? \"\";\n\t\t\tconst target = attr(child, \"Target\") ?? \"\";\n\t\t\tif (!target) continue;\n\t\t\tconst path = resolveRelsPath(target);\n\t\t\tif (type.includes(\"/comments\") && !type.includes(\"commentAuthors\")) commentsSet.add(path);\n\t\t\telse if (type.includes(\"/chart\")) chartsSet.add(path);\n\t\t\telse if (type.includes(\"/diagramData\")) diagramDataSet.add(path);\n\t\t\telse if (type.includes(\"/image\") || type.includes(\"/video\") || type.includes(\"/media\")) mediaSet.add(path);\n\t\t}\n\t}\n\trefs.comments = [...commentsSet];\n\trefs.charts = [...chartsSet];\n\trefs.diagramData = [...diagramDataSet];\n\trefs.media = [...mediaSet];\n}\nfunction parsePptx(data) {\n\tconst doc = parseArchive(toUint8Array(data));\n\tconst presentation = doc.get(\"ppt/presentation.xml\");\n\tconst relsXml = doc.get(\"ppt/_rels/presentation.xml.rels\");\n\tconst slides = [];\n\tconst slideMasters = [];\n\tconst themes = [];\n\tconst notesMasters = [];\n\tlet presProps;\n\tlet viewProps;\n\tlet tableStyles;\n\tlet commentAuthors;\n\tif (relsXml) for (const child of relsXml.elements ?? []) {\n\t\tif (child.name !== \"Relationship\") continue;\n\t\tconst type = attr(child, \"Type\") ?? \"\";\n\t\tconst target = attr(child, \"Target\") ?? \"\";\n\t\tif (!target) continue;\n\t\tconst path = resolveRelsPath(target);\n\t\tif (type.includes(\"/slideMaster\")) slideMasters.push(path);\n\t\telse if (type.includes(\"/slide\") && !type.includes(\"slideLayout\") && !type.includes(\"slideMaster\")) slides.push(path);\n\t\telse if (type.includes(\"/theme\")) themes.push(path);\n\t\telse if (type.includes(\"/notesMaster\")) notesMasters.push(path);\n\t\telse if (type.includes(\"/presProps\")) presProps = path;\n\t\telse if (type.includes(\"/viewProps\")) viewProps = path;\n\t\telse if (type.includes(\"/tableStyles\")) tableStyles = path;\n\t\telse if (type.includes(\"/commentAuthors\")) commentAuthors = path;\n\t}\n\tsortByNumber(slides);\n\tsortByNumber(slideMasters);\n\tsortByNumber(themes);\n\tsortByNumber(notesMasters);\n\tconst slideLayouts = sortByNumber(xmlKeys(doc.keys(\"ppt/slideLayouts/\")));\n\tconst notesSlides = sortByNumber(xmlKeys(doc.keys(\"ppt/notesSlides/\")));\n\tconst partRefs = {\n\t\tthemes,\n\t\tnotesMasters,\n\t\tcommentAuthors,\n\t\tcomments: [],\n\t\tcharts: [],\n\t\tdiagramData: [],\n\t\tmedia: doc.keys(\"ppt/media/\")\n\t};\n\tparseSlideRels(doc, slides, partRefs);\n\tsortByNumber(partRefs.comments);\n\tsortByNumber(partRefs.charts);\n\tsortByNumber(partRefs.diagramData);\n\tconst { coreProps, appProps, customProps } = parseRootRels(doc);\n\treturn {\n\t\tdoc,\n\t\tpresentation,\n\t\tslides,\n\t\tslideMasters,\n\t\tslideLayouts,\n\t\tnotesSlides,\n\t\tpartRefs,\n\t\tpresProps,\n\t\tviewProps,\n\t\ttableStyles,\n\t\tcoreProps,\n\t\tappProps,\n\t\tcustomProps\n\t};\n}\n/**\n* Parse a single slide's relationship file into a Map<rId, path>.\n*/\nfunction parseSlideRelMap(doc, slidePath) {\n\tconst rels = /* @__PURE__ */ new Map();\n\tconst parts = slidePath.split(\"/\");\n\tconst fileName = parts.pop();\n\tconst relsPath = `${parts.join(\"/\")}/_rels/${fileName}.rels`;\n\tconst relsEl = doc.get(relsPath);\n\tif (!relsEl) return rels;\n\tfor (const child of relsEl.elements ?? []) {\n\t\tif (child.name !== \"Relationship\") continue;\n\t\tconst id = attr(child, \"Id\") ?? \"\";\n\t\tconst target = attr(child, \"Target\") ?? \"\";\n\t\tif (!id || !target) continue;\n\t\tif (attr(child, \"TargetMode\") === \"External\") rels.set(id, target);\n\t\telse rels.set(id, resolveRelsPath(target));\n\t}\n\treturn rels;\n}\n/**\n* Build a map from each path to the rel target matching a predicate.\n*/\nfunction resolveRelTargets(doc, paths, predicate) {\n\tconst map = /* @__PURE__ */ new Map();\n\tfor (const path of paths) for (const target of parseSlideRelMap(doc, path).values()) if (predicate(target)) map.set(path, target);\n\treturn map;\n}\n/**\n* Parse p14:sectionLst from presentation.xml and map each slide path to its\n* section name. Bridges p14:sldId (by slide id) -> p:sldIdLst (slide id ->\n* rId) -> presentation rels (rId -> path).\n*/\nfunction parseSlideSections(presentation, doc) {\n\tconst pathToSection = /* @__PURE__ */ new Map();\n\tif (!presentation) return pathToSection;\n\tconst extLst = findChild(presentation, \"p:extLst\");\n\tif (!extLst) return pathToSection;\n\tlet sectionLst;\n\tfor (const ext of extLst.elements ?? []) {\n\t\tif (ext.name !== \"p:ext\") continue;\n\t\tif (attr(ext, \"uri\") !== \"{521415D9-36F7-43E2-AB2F-B90AF26B5E84}\") continue;\n\t\tsectionLst = findChild(ext, \"p14:sectionLst\");\n\t\tif (sectionLst) break;\n\t}\n\tif (!sectionLst) return pathToSection;\n\tconst sectionBySlideId = /* @__PURE__ */ new Map();\n\tfor (const section of sectionLst.elements ?? []) {\n\t\tif (section.name !== \"p14:section\") continue;\n\t\tconst name = attr(section, \"name\");\n\t\tif (!name) continue;\n\t\tconst sldIdLst = findChild(section, \"p14:sldIdLst\");\n\t\tfor (const sldId of sldIdLst?.elements ?? []) {\n\t\t\tif (sldId.name !== \"p14:sldId\") continue;\n\t\t\tconst id = attrNum(sldId, \"id\");\n\t\t\tif (id !== void 0) sectionBySlideId.set(id, name);\n\t\t}\n\t}\n\tif (sectionBySlideId.size === 0) return pathToSection;\n\tconst sldIdLst = findChild(presentation, \"p:sldIdLst\");\n\tconst rIdBySlideId = /* @__PURE__ */ new Map();\n\tfor (const sldId of sldIdLst?.elements ?? []) {\n\t\tif (sldId.name !== \"p:sldId\") continue;\n\t\tconst id = attrNum(sldId, \"id\");\n\t\tconst rId = attr(sldId, \"r:id\");\n\t\tif (id !== void 0 && rId) rIdBySlideId.set(id, rId);\n\t}\n\tconst relsEl = doc.get(\"ppt/_rels/presentation.xml.rels\");\n\tconst pathByRId = /* @__PURE__ */ new Map();\n\tfor (const child of relsEl?.elements ?? []) {\n\t\tif (child.name !== \"Relationship\") continue;\n\t\tconst id = attr(child, \"Id\");\n\t\tconst target = attr(child, \"Target\");\n\t\tif (id && target) pathByRId.set(id, resolveRelsPath(target));\n\t}\n\tfor (const [slideId, name] of sectionBySlideId) {\n\t\tconst rId = rIdBySlideId.get(slideId);\n\t\tif (!rId) continue;\n\t\tconst path = pathByRId.get(rId);\n\t\tif (path) pathToSection.set(path, name);\n\t}\n\treturn pathToSection;\n}\n/**\n* Parse a .pptx file and convert it into PresentationOptions.\n*\n* This is the main public API for parsing PPTX files.\n* The returned options can be passed directly to `new Presentation(parsed)`\n* to recreate the presentation.\n*\n* @param data - Raw bytes of a .pptx file\n* @returns Parsed presentation options\n*/\nfunction parsePresentation(data) {\n\tconst pptx = parsePptx(data);\n\tconst opts = {};\n\tconst sectionBySlidePath = parseSlideSections(pptx.presentation, pptx.doc);\n\tif (pptx.presentation) {\n\t\tconst sldSz = findChild(pptx.presentation, \"p:sldSz\");\n\t\tif (sldSz) {\n\t\t\tconst cx = attrNum(sldSz, \"cx\");\n\t\t\tconst cy = attrNum(sldSz, \"cy\");\n\t\t\tif (cx === 12192e3 && cy === 6858e3) opts.size = \"16:9\";\n\t\t\telse if (cx === 9144e3 && cy === 6858e3) opts.size = \"4:3\";\n\t\t\telse if (cx && cy) opts.size = {\n\t\t\t\twidth: cx,\n\t\t\t\theight: cy\n\t\t\t};\n\t\t}\n\t}\n\tif (pptx.coreProps) {\n\t\tconst corePropsEl = pptx.doc.get(pptx.coreProps);\n\t\tif (corePropsEl) {\n\t\t\tconst cp = parseCorePropsElement(corePropsEl);\n\t\t\tif (cp.title) opts.title = cp.title;\n\t\t\tif (cp.subject) opts.subject = cp.subject;\n\t\t\tif (cp.creator) opts.creator = cp.creator;\n\t\t\tif (cp.keywords) opts.keywords = cp.keywords;\n\t\t\tif (cp.description) opts.description = cp.description;\n\t\t\tif (cp.lastModifiedBy) opts.lastModifiedBy = cp.lastModifiedBy;\n\t\t\tif (cp.revision !== void 0) opts.revision = cp.revision;\n\t\t\tif (cp.lastPrinted) opts.lastPrinted = cp.lastPrinted;\n\t\t\tif (cp.created) opts.created = cp.created;\n\t\t\tif (cp.modified) opts.modified = cp.modified;\n\t\t}\n\t}\n\tif (pptx.appProps) {\n\t\tconst appPropsEl = pptx.doc.get(pptx.appProps);\n\t\tif (appPropsEl) {\n\t\t\tconst ap = appPropertiesDesc.parse(appPropsEl, {});\n\t\t\tif (ap && Object.keys(ap).length > 0) opts.appProperties = ap;\n\t\t}\n\t}\n\tif (pptx.customProps) {\n\t\tconst customPropsEl = pptx.doc.get(pptx.customProps);\n\t\tif (customPropsEl) {\n\t\t\tconst cp = customPropertiesDesc.parse(customPropsEl, {});\n\t\t\tif (cp.properties?.length) opts.customProperties = cp.properties;\n\t\t}\n\t}\n\tif (pptx.presProps) {\n\t\tconst presPropsEl = pptx.doc.get(pptx.presProps);\n\t\tif (presPropsEl) {\n\t\t\tconst presPropsOpts = presPropsDesc.parse(presPropsEl, {});\n\t\t\tif (presPropsOpts.show) opts.show = presPropsOpts.show;\n\t\t}\n\t}\n\tif (pptx.viewProps) {\n\t\tconst viewPropsEl = pptx.doc.get(pptx.viewProps);\n\t\tif (viewPropsEl) {\n\t\t\tconst viewOpts = viewPropsDesc.parse(viewPropsEl, {});\n\t\t\tif (viewOpts.lastView || viewOpts.showComments !== void 0 || viewOpts.gridSpacing) opts.view = viewOpts;\n\t\t}\n\t}\n\tif (pptx.tableStyles) {\n\t\tconst tableStylesEl = pptx.doc.get(pptx.tableStyles);\n\t\tif (tableStylesEl) {\n\t\t\tconst tableStylesResult = tableStylesDesc.parse(tableStylesEl, {});\n\t\t\tif (tableStylesResult.opts) opts.tableStyles = tableStylesResult.opts;\n\t\t}\n\t}\n\tconst masterThemePaths = resolveRelTargets(pptx.doc, pptx.slideMasters, (t) => t.includes(\"/theme\"));\n\tconst layoutMasterPaths = resolveRelTargets(pptx.doc, pptx.slideLayouts, (t) => t.includes(\"/slideMaster\"));\n\tconst slideLayoutPaths = resolveRelTargets(pptx.doc, pptx.slides, (t) => t.includes(\"/slideLayout\"));\n\tconst masterCount = pptx.slideMasters.length;\n\tconst masterDefs = [];\n\tconst masterReadCtx = new PptxReadContext(new ParseContext(pptx, /* @__PURE__ */ new Map()));\n\tfor (const [mi, masterPath] of pptx.slideMasters.entries()) {\n\t\tconst masterEl = pptx.doc.get(masterPath);\n\t\tif (!masterEl) continue;\n\t\tconst themePath = masterThemePaths.get(masterPath);\n\t\tconst themeEl = themePath ? pptx.doc.get(themePath) : void 0;\n\t\tconst themeOptions = themeEl ? themeDesc.parse(themeEl, masterReadCtx) : void 0;\n\t\tconst cSld = findChild(masterEl, \"p:cSld\");\n\t\tconst bg = cSld ? findChild(cSld, \"p:bg\") : void 0;\n\t\tconst masterBackground = bg ? backgroundDesc.parse(bg, masterReadCtx) : void 0;\n\t\tconst hasBackground = masterBackground && Object.keys(masterBackground).length > 0;\n\t\tconst spTree = cSld ? findChild(cSld, \"p:spTree\") : void 0;\n\t\tconst masterChildren = [];\n\t\tif (spTree) for (const child of spTree.elements ?? []) {\n\t\t\tif (child.name === \"p:nvGrpSpPr\" || child.name === \"p:grpSpPr\") continue;\n\t\t\tif (child.name === \"p:sp\") {\n\t\t\t\tconst nvSpPr = findChild(child, \"p:nvSpPr\");\n\t\t\t\tconst nvPr = nvSpPr ? findChild(nvSpPr, \"p:nvPr\") : void 0;\n\t\t\t\tif (nvPr && findChild(nvPr, \"p:ph\")) continue;\n\t\t\t}\n\t\t\tconst parsed = parseChild(child, masterReadCtx);\n\t\t\tif (parsed !== void 0) masterChildren.push(parsed);\n\t\t}\n\t\tconst masterLayouts = [];\n\t\tfor (const layoutPath of pptx.slideLayouts) {\n\t\t\tif (layoutMasterPaths.get(layoutPath) !== masterPath) continue;\n\t\t\tconst layoutEl = pptx.doc.get(layoutPath);\n\t\t\tif (layoutEl) masterLayouts.push(slideLayoutDesc.parse(layoutEl, masterReadCtx));\n\t\t}\n\t\tconst masterName = themeOptions?.name ?? `master${mi + 1}`;\n\t\tconst masterDef = {};\n\t\tmasterDef.name = masterName;\n\t\tif (themeOptions) masterDef.theme = themeOptions;\n\t\tif (hasBackground) masterDef.background = masterBackground;\n\t\tif (masterChildren.length > 0) masterDef.children = masterChildren;\n\t\tif (masterLayouts.length > 0) masterDef.layouts = masterLayouts;\n\t\tmasterDefs.push(masterDef);\n\t}\n\tif (masterCount > 1) opts.masters = masterDefs;\n\tfor (const nmPath of pptx.partRefs.notesMasters) {\n\t\tconst nmEl = pptx.doc.get(nmPath);\n\t\tif (nmEl) {\n\t\t\tconst nmOpts = notesMasterDesc.parse(nmEl, masterReadCtx);\n\t\t\tif (nmOpts.options) {\n\t\t\t\topts.includeNotesMaster = true;\n\t\t\t\topts.notesMasterOptions = nmOpts.options;\n\t\t\t}\n\t\t}\n\t}\n\tconst commentAuthors = /* @__PURE__ */ new Map();\n\tif (pptx.partRefs.commentAuthors) {\n\t\tconst authorsEl = pptx.doc.get(pptx.partRefs.commentAuthors);\n\t\tif (authorsEl) {\n\t\t\tconst authors = commentAuthorsDesc.parse(authorsEl, masterReadCtx);\n\t\t\tfor (const a of authors) commentAuthors.set(a.id, {\n\t\t\t\tname: a.name,\n\t\t\t\tinitials: a.initials\n\t\t\t});\n\t\t}\n\t}\n\tconst result = [];\n\tfor (const slidePath of pptx.slides) {\n\t\tconst slideEl = pptx.doc.get(slidePath);\n\t\tif (!slideEl) continue;\n\t\tconst slideRels = parseSlideRelMap(pptx.doc, slidePath);\n\t\tconst readCtx = new PptxReadContext(new ParseContext(pptx, slideRels));\n\t\tconst slideOpts = slideDesc.parse(slideEl, readCtx);\n\t\tconst layoutPath = slideLayoutPaths.get(slidePath);\n\t\tif (layoutPath) {\n\t\t\tconst layoutEl = pptx.doc.get(layoutPath);\n\t\t\tif (layoutEl) slideOpts.layout = slideLayoutDesc.parse(layoutEl, readCtx).type ?? \"blank\";\n\t\t\tconst resolvedMasterPath = layoutMasterPaths.get(layoutPath);\n\t\t\tif (resolvedMasterPath) {\n\t\t\t\tconst masterIdx = pptx.slideMasters.indexOf(resolvedMasterPath);\n\t\t\t\tif (masterIdx >= 0 && masterDefs[masterIdx]) slideOpts.master = masterDefs[masterIdx].name;\n\t\t\t}\n\t\t}\n\t\tfor (const [, relPath] of slideRels) {\n\t\t\tif (!relPath.includes(\"/comments/\")) continue;\n\t\t\tconst commentsEl = pptx.doc.get(relPath);\n\t\t\tif (!commentsEl) continue;\n\t\t\tconst parsedComments = slideCommentsDesc.parse(commentsEl, readCtx);\n\t\t\tif (parsedComments.length > 0) {\n\t\t\t\tconst comments = [];\n\t\t\t\tfor (const cm of parsedComments) {\n\t\t\t\t\tconst entry = {\n\t\t\t\t\t\tx: cm.x,\n\t\t\t\t\t\ty: cm.y\n\t\t\t\t\t};\n\t\t\t\t\tif (cm.text) entry.text = cm.text;\n\t\t\t\t\tif (cm.date) entry.date = cm.date;\n\t\t\t\t\tif (cm.modified !== void 0) entry.modified = cm.modified;\n\t\t\t\t\tconst author = commentAuthors.get(cm.authorId);\n\t\t\t\t\tif (author) {\n\t\t\t\t\t\tentry.author = author.name;\n\t\t\t\t\t\tif (author.initials) entry.initials = author.initials;\n\t\t\t\t\t}\n\t\t\t\t\tcomments.push(entry);\n\t\t\t\t}\n\t\t\t\tif (comments.length > 0) slideOpts.comments = comments;\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tfor (const [, relPath] of slideRels) {\n\t\t\tif (!relPath.includes(\"/notesSlides/\")) continue;\n\t\t\tconst notesEl = pptx.doc.get(relPath);\n\t\t\tif (!notesEl) continue;\n\t\t\tconst notesData = notesSlideDesc.parse(notesEl, readCtx);\n\t\t\tif (notesData.text) slideOpts.notes = notesData.text;\n\t\t\tbreak;\n\t\t}\n\t\tconst sectionName = sectionBySlidePath.get(slidePath);\n\t\tif (sectionName) slideOpts.section = sectionName;\n\t\tresult.push(slideOpts);\n\t}\n\topts.slides = result;\n\treturn opts;\n}\n//#endregion\nexport { parseArchive, parsePptx, parsePresentation };\n\n//# sourceMappingURL=parse.mjs.map","/** PPTX read, build, and edit implementation. */\nimport type { ParagraphOptions, SlideChild, TableCellOptions, TextBodyOptions } from '@office-open/pptx'\nimport { parsePresentation } from '@office-open/pptx/parse'\nimport Automizer, { modify } from 'pptx-automizer'\nimport PptxGenJS from 'pptxgenjs'\n\nimport { ToolError } from '../../../core/errors'\nimport type { DocumentTable } from '../../document/contracts'\nimport { assertReplacementApplied } from '../../document/formats/text'\nimport type { PresentationReadOutput, PresentationReplacement, PresentationSlide } from '../contracts'\n\nfunction paragraphText(paragraph: ParagraphOptions | string): string {\n\tif (typeof paragraph === 'string') return paragraph\n\tif (paragraph.text) return paragraph.text\n\treturn (paragraph.children ?? []).map((child) => (typeof child === 'string' ? child : (child.text ?? ''))).join('')\n}\n\nfunction textBodyLines(body: TextBodyOptions | undefined): string[] {\n\tif (!body) return []\n\tif (body.text) return [body.text]\n\treturn (body.children ?? []).map(paragraphText).filter(Boolean)\n}\n\nfunction cellText(cell: TableCellOptions): string {\n\tif (cell.text) return cell.text\n\treturn (cell.children ?? []).map(paragraphText).join('\\n')\n}\n\nfunction notesText(notes: string | undefined): string {\n\treturn (notes ?? '')\n\t\t.split('\\n')\n\t\t.map((line) => line.trim())\n\t\t.filter(Boolean)\n\t\t.join(' ')\n}\n\nfunction shapeText(child: SlideChild): { title: boolean; lines: string[] } | undefined {\n\tif (!('shape' in child)) return undefined\n\tconst lines = textBodyLines(child.shape.textBody)\n\tif (lines.length === 0) return undefined\n\treturn {\n\t\ttitle: child.shape.placeholder === 'title',\n\t\tlines\n\t}\n}\n\nfunction slideTables(children: SlideChild[], slideNumber: number): DocumentTable[] {\n\treturn children.flatMap((child, index) => {\n\t\tif (!('table' in child)) return []\n\t\treturn [\n\t\t\t{\n\t\t\t\tname: `Slide ${slideNumber} Table ${index + 1}`,\n\t\t\t\trows: child.table.rows.map((row) => row.cells.map(cellText))\n\t\t\t}\n\t\t]\n\t})\n}\n\nexport async function readPresentation(\n\tbytes: Uint8Array\n): Promise<Pick<PresentationReadOutput, 'text' | 'slides' | 'tables'>> {\n\tconst presentation = parsePresentation(bytes)\n\tconst slides: PresentationSlide[] = []\n\tconst tables: DocumentTable[] = []\n\tconst text: string[] = []\n\tfor (const [index, source] of (presentation.slides ?? []).entries()) {\n\t\tconst children = source.children ?? []\n\t\tconst shapes = children.map(shapeText).filter((shape) => shape !== undefined)\n\t\tconst titleShape = shapes.find((shape) => shape.title) ?? shapes[0]\n\t\tconst title = titleShape?.lines.join(' ').trim()\n\t\tconst bullets = shapes.filter((shape) => shape !== titleShape).flatMap((shape) => shape.lines)\n\t\tconst notes = notesText(source.notes)\n\t\tconst slide: PresentationSlide = {\n\t\t\t...(title && { title }),\n\t\t\t...(bullets.length > 0 && { bullets }),\n\t\t\t...(notes && { notes })\n\t\t}\n\t\tslides.push(slide)\n\t\ttables.push(...slideTables(children, index + 1))\n\t\ttext.push([title, ...bullets, notes].filter(Boolean).join('\\n'))\n\t}\n\treturn {\n\t\tslides,\n\t\ttext: text.join('\\n\\n'),\n\t\t...(tables.length > 0 && { tables })\n\t}\n}\n\nexport async function buildPresentation(input: {\n\ttitle?: string | undefined\n\tslides: PresentationSlide[]\n}): Promise<Uint8Array> {\n\tconst presentation = new PptxGenJS()\n\tif (input.title) presentation.title = input.title\n\tfor (const slide of input.slides) {\n\t\tconst page = presentation.addSlide()\n\t\tlet y = 0.5\n\t\tif (slide.title) {\n\t\t\tpage.addText(slide.title, { x: 0.5, y, w: 9, h: 0.8, fontSize: 28, bold: true })\n\t\t\ty += 1\n\t\t}\n\t\tif (slide.bullets?.length) {\n\t\t\tpage.addText(\n\t\t\t\tslide.bullets.map((bullet) => ({ text: bullet, options: { bullet: true } })),\n\t\t\t\t{ x: 0.5, y, w: 9, h: 4, fontSize: 16 }\n\t\t\t)\n\t\t}\n\t\tif (slide.notes) page.addNotes(slide.notes)\n\t}\n\tconst output = await presentation.write({ outputType: 'arraybuffer' })\n\tif (output instanceof ArrayBuffer || output instanceof Uint8Array) return new Uint8Array(output)\n\tthrow new ToolError('Presentation builder returned unexpected type', { code: 'internal' })\n}\n\nexport async function patchPptx(bytes: Uint8Array, replacements: PresentationReplacement[]): Promise<Uint8Array> {\n\tconst content = await readPresentation(bytes)\n\tconst editableText = [\n\t\t...(content.slides ?? []).flatMap((slide) => [slide.title, ...(slide.bullets ?? [])]),\n\t\t...(content.tables ?? []).flatMap((table) => table.rows.flat())\n\t]\n\t\t.filter(Boolean)\n\t\t.join('\\n')\n\tfor (const replacement of replacements) {\n\t\tassertReplacementApplied(editableText.includes(replacement.find) ? 1 : 0, replacement.find)\n\t}\n\tconst automation = new Automizer({\n\t\tautoImportSlideMasters: true,\n\t\tcleanup: true,\n\t\tremoveExistingSlides: true,\n\t\tverbosity: 0\n\t})\n\tconst presentation = automation.loadRoot(bytes).load(bytes, 'source')\n\tconst slideNumbers = await presentation.getTemplate('source').getAllSlideNumbers()\n\tconst changes = replacements.map((replacement) => ({\n\t\treplace: replacement.find,\n\t\tby: { text: replacement.replace }\n\t}))\n\tfor (const slideNumber of slideNumbers) {\n\t\tpresentation.addSlide('source', slideNumber, (slide) => {\n\t\t\tslide.modify((document) => {\n\t\t\t\tmodify.replaceText(changes, { openingTag: '', closingTag: '' })(document.documentElement)\n\t\t\t})\n\t\t})\n\t}\n\tconst archive = await presentation.getJSZip()\n\treturn archive.generateAsync({ type: 'uint8array' })\n}\n","/** Presentation client. This capability is Node ESM-only until its PPTX dependencies support CommonJS. */\nimport { ToolError } from '../../core/errors'\nimport { requireAuth } from '../../core/provider'\nimport type { ToolContext } from '../../core/types'\nimport { artifactRefSchema } from '../../shared/artifact'\nimport type { ArtifactRef } from '../../shared/artifact'\nimport { S3Client } from '../../vendors/s3'\nimport { loadDocumentSource, sourceName } from '../document/artifacts'\nimport type { LoadedDocument } from '../document/artifacts'\nimport { presentationAuthSchema, presentationBuildOutputSchema, presentationReadOutputSchema } from './contracts'\nimport type {\n\tPresentationAuth,\n\tPresentationBuildInput,\n\tPresentationEditInput,\n\tPresentationReadInput,\n\tPresentationReadOutput\n} from './contracts'\nimport { buildPresentation, patchPptx, readPresentation } from './domain'\n\nexport type PresentationClientOptions = {\n\tfetch?: ToolContext['fetch']\n\tsignal?: ToolContext['signal']\n}\n\nconst PRESENTATION_MEDIA_TYPE = 'application/vnd.openxmlformats-officedocument.presentationml.presentation'\n\nfunction transportOptions(context: PresentationClientOptions) {\n\treturn {\n\t\t...(context.fetch && { fetch: context.fetch }),\n\t\t...(context.signal && { signal: context.signal })\n\t}\n}\n\nexport class PresentationClient {\n\treadonly #storage: S3Client\n\n\tconstructor(auth: PresentationAuth, context: PresentationClientOptions = {}) {\n\t\tconst parsed = presentationAuthSchema.safeParse(auth)\n\t\tif (!parsed.success) {\n\t\t\tthrow new ToolError('Invalid presentation auth credentials', {\n\t\t\t\tcode: 'bad_auth',\n\t\t\t\tdetails: { issues: parsed.error.issues.map((issue) => issue.message) }\n\t\t\t})\n\t\t}\n\t\tthis.#storage = new S3Client(parsed.data.storage, transportOptions(context))\n\t}\n\n\tstatic fromContext(context: ToolContext): PresentationClient {\n\t\treturn new PresentationClient(requireAuth(context, presentationAuthSchema), context)\n\t}\n\n\tstatic fromAuth(auth: PresentationAuth, context: PresentationClientOptions = {}): PresentationClient {\n\t\treturn new PresentationClient(auth, context)\n\t}\n\n\tasync read(input: PresentationReadInput): Promise<PresentationReadOutput> {\n\t\tconst loaded = await this.#load(input.source)\n\t\treturn presentationReadOutputSchema.parse({\n\t\t\tformat: 'pptx',\n\t\t\t...(await readPresentation(loaded.bytes)),\n\t\t\tbyte_length: loaded.bytes.byteLength,\n\t\t\t...(loaded.filename && { filename: loaded.filename }),\n\t\t\t...(loaded.media_type && { media_type: loaded.media_type })\n\t\t})\n\t}\n\n\tasync build(input: PresentationBuildInput) {\n\t\treturn this.#write(\n\t\t\tinput.output_key,\n\t\t\tawait buildPresentation({ title: input.title, slides: input.slides }),\n\t\t\tinput.filename ?? 'deck.pptx'\n\t\t)\n\t}\n\n\tasync edit(input: PresentationEditInput) {\n\t\tconst loaded = await this.#load(input.source)\n\t\treturn this.#write(\n\t\t\tinput.output_key,\n\t\t\tawait patchPptx(loaded.bytes, input.replacements),\n\t\t\tinput.filename ?? sourceName(loaded, 'deck.pptx')\n\t\t)\n\t}\n\n\tasync #load(source: PresentationReadInput['source']): Promise<LoadedDocument> {\n\t\treturn loadDocumentSource(source, (key) => this.#storage.getBytes(key))\n\t}\n\n\tasync #write(key: string, bytes: Uint8Array, filename: string) {\n\t\tconst result = await this.#putArtifact(key, bytes, filename)\n\t\treturn presentationBuildOutputSchema.parse({ result })\n\t}\n\n\tasync #putArtifact(key: string, bytes: Uint8Array, filename: string): Promise<ArtifactRef> {\n\t\tawait this.#storage.putBytes(key, bytes, PRESENTATION_MEDIA_TYPE)\n\t\treturn artifactRefSchema.parse({\n\t\t\tstore: 'object',\n\t\t\tkey,\n\t\t\tmedia_type: PRESENTATION_MEDIA_TYPE,\n\t\t\tfilename,\n\t\t\tbyte_length: bytes.byteLength\n\t\t})\n\t}\n}\n","import { defineModule, defineTool } from '../../core/define'\nimport { PresentationClient } from './client'\nimport {\n\tpresentationAuthSchema,\n\tpresentationBuildInputSchema,\n\tpresentationBuildOutputSchema,\n\tpresentationEditInputSchema,\n\tpresentationReadInputSchema,\n\tpresentationReadOutputSchema\n} from './contracts'\n\nexport const presentationReadTool = defineTool({\n\tid: 'presentation-read',\n\tname: 'readPresentation',\n\tdescription:\n\t\t'Read an existing PPTX ArtifactRef for understanding, including slide text, notes, and tables. Use before answering about or editing a supplied deck. This does not create a new presentation.',\n\tinputSchema: presentationReadInputSchema,\n\toutputSchema: presentationReadOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'node',\n\tartifacts: true,\n\texecute: async (input, ctx) => PresentationClient.fromContext(ctx).read(input)\n})\n\nexport const presentationBuildTool = defineTool({\n\tid: 'presentation-build',\n\tname: 'buildPresentation',\n\tdescription:\n\t\t'Create a new PPTX deliverable from structured slides. Use whenever the user asks to build a presentation or deck. Prefer this purpose-built builder over generating PPTX in a general code sandbox. Returns the final ArtifactRef; no export or edit step is needed.',\n\tinputSchema: presentationBuildInputSchema,\n\toutputSchema: presentationBuildOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'node',\n\tartifacts: true,\n\texecute: async (input, ctx) => PresentationClient.fromContext(ctx).build(input)\n})\n\nexport const presentationEditTool = defineTool({\n\tid: 'presentation-edit',\n\tname: 'editPresentation',\n\tdescription:\n\t\t'Edit an existing PPTX ArtifactRef with layout-preserving text replacements and return a new ArtifactRef. Use only when changing a supplied deck. For a new deck, use presentation-build; do not call this merely to make a built ArtifactRef deliverable.',\n\tinputSchema: presentationEditInputSchema,\n\toutputSchema: presentationBuildOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'node',\n\tartifacts: true,\n\texecute: async (input, ctx) => PresentationClient.fromContext(ctx).edit(input)\n})\n\nexport const presentationModule = defineModule({\n\tid: 'presentation',\n\ttitle: 'Presentation',\n\tdescription:\n\t\t'Purpose-built tools to read existing PPTX files, build final presentation deliverables, and edit supplied decks. Prefer these tools over general sandbox file generation.',\n\truntime: 'node',\n\tauth: { type: 'custom', schema: presentationAuthSchema },\n\tcategories: ['documents', 'office'],\n\tclassification: 'pii',\n\ttags: ['pptx'],\n\ttools: [presentationReadTool, presentationBuildTool, presentationEditTool]\n})\n"],"x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14],"mappings":"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"}