@verdocs/web-sdk 1.5.2 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (533) hide show
  1. package/dist/cjs/{VerdocsEndpoint-5e6dd8ef.js → VerdocsEndpoint-4b97517d.js} +45 -2048
  2. package/dist/cjs/VerdocsEndpoint-4b97517d.js.map +1 -0
  3. package/dist/cjs/index-589f3be8.js +2 -0
  4. package/dist/cjs/index-589f3be8.js.map +1 -0
  5. package/dist/cjs/index.cjs.js +2 -0
  6. package/dist/cjs/index.cjs.js.map +1 -0
  7. package/dist/cjs/loader.cjs.js +4 -2
  8. package/dist/cjs/loader.cjs.js.map +1 -0
  9. package/dist/cjs/{popper-71bf3058.js → popper-11d5f714.js} +62 -49
  10. package/dist/cjs/popper-11d5f714.js.map +1 -0
  11. package/dist/cjs/verdocs-auth.cjs.entry.js +23 -14
  12. package/dist/cjs/verdocs-auth.cjs.entry.js.map +1 -0
  13. package/dist/cjs/verdocs-button_2.cjs.entry.js +2 -0
  14. package/dist/cjs/verdocs-button_2.cjs.entry.js.map +1 -0
  15. package/dist/cjs/verdocs-dropdown_12.cjs.entry.js +11357 -7265
  16. package/dist/cjs/verdocs-dropdown_12.cjs.entry.js.map +1 -0
  17. package/dist/cjs/verdocs-initial-dialog.cjs.entry.js +2 -0
  18. package/dist/cjs/verdocs-initial-dialog.cjs.entry.js.map +1 -0
  19. package/dist/cjs/verdocs-kba-dialog.cjs.entry.js +2 -0
  20. package/dist/cjs/verdocs-kba-dialog.cjs.entry.js.map +1 -0
  21. package/dist/cjs/verdocs-loader.cjs.entry.js +2 -0
  22. package/dist/cjs/verdocs-loader.cjs.entry.js.map +1 -0
  23. package/dist/cjs/verdocs-ok-dialog.cjs.entry.js +2 -0
  24. package/dist/cjs/verdocs-ok-dialog.cjs.entry.js.map +1 -0
  25. package/dist/cjs/verdocs-organization-card.cjs.entry.js +2 -0
  26. package/dist/cjs/verdocs-organization-card.cjs.entry.js.map +1 -0
  27. package/dist/cjs/verdocs-quick-functions.cjs.entry.js +3 -1
  28. package/dist/cjs/verdocs-quick-functions.cjs.entry.js.map +1 -0
  29. package/dist/cjs/verdocs-search-activity_2.cjs.entry.js +3 -1
  30. package/dist/cjs/verdocs-search-activity_2.cjs.entry.js.map +1 -0
  31. package/dist/cjs/verdocs-search-tabs.cjs.entry.js +2 -0
  32. package/dist/cjs/verdocs-search-tabs.cjs.entry.js.map +1 -0
  33. package/dist/cjs/verdocs-search.cjs.entry.js +3 -1
  34. package/dist/cjs/verdocs-search.cjs.entry.js.map +1 -0
  35. package/dist/cjs/verdocs-sign.cjs.entry.js +4 -2
  36. package/dist/cjs/verdocs-sign.cjs.entry.js.map +1 -0
  37. package/dist/cjs/verdocs-signature-dialog.cjs.entry.js +2 -0
  38. package/dist/cjs/verdocs-signature-dialog.cjs.entry.js.map +1 -0
  39. package/dist/cjs/verdocs-status-indicator.cjs.entry.js +3 -1
  40. package/dist/cjs/verdocs-status-indicator.cjs.entry.js.map +1 -0
  41. package/dist/cjs/verdocs-template-card.cjs.entry.js +2 -0
  42. package/dist/cjs/verdocs-template-card.cjs.entry.js.map +1 -0
  43. package/dist/cjs/verdocs-template-tags.cjs.entry.js +2 -0
  44. package/dist/cjs/verdocs-template-tags.cjs.entry.js.map +1 -0
  45. package/dist/cjs/verdocs-toggle.cjs.entry.js +2 -0
  46. package/dist/cjs/verdocs-toggle.cjs.entry.js.map +1 -0
  47. package/dist/cjs/verdocs-upload-dialog.cjs.entry.js +2 -0
  48. package/dist/cjs/verdocs-upload-dialog.cjs.entry.js.map +1 -0
  49. package/dist/cjs/verdocs-web-sdk.cjs.js +4 -2
  50. package/dist/cjs/verdocs-web-sdk.cjs.js.map +1 -0
  51. package/dist/collection/collection-manifest.json +1 -1
  52. package/dist/collection/components/controls/verdocs-button/verdocs-button.js +1 -0
  53. package/dist/collection/components/controls/verdocs-button/verdocs-button.js.map +1 -0
  54. package/dist/collection/components/controls/verdocs-button/verdocs-button.stories.js +1 -0
  55. package/dist/collection/components/controls/verdocs-button/verdocs-button.stories.js.map +1 -0
  56. package/dist/collection/components/controls/verdocs-dropdown/verdocs-dropdown.js +1 -0
  57. package/dist/collection/components/controls/verdocs-dropdown/verdocs-dropdown.js.map +1 -0
  58. package/dist/collection/components/controls/verdocs-dropdown/verdocs-dropdown.stories.js +1 -0
  59. package/dist/collection/components/controls/verdocs-dropdown/verdocs-dropdown.stories.js.map +1 -0
  60. package/dist/collection/components/controls/verdocs-loader/verdocs-loader.js +1 -0
  61. package/dist/collection/components/controls/verdocs-loader/verdocs-loader.js.map +1 -0
  62. package/dist/collection/components/controls/verdocs-loader/verdocs-loader.stories.js +1 -0
  63. package/dist/collection/components/controls/verdocs-loader/verdocs-loader.stories.js.map +1 -0
  64. package/dist/collection/components/controls/verdocs-organization-card/verdocs-organization-card.js +1 -0
  65. package/dist/collection/components/controls/verdocs-organization-card/verdocs-organization-card.js.map +1 -0
  66. package/dist/collection/components/controls/verdocs-organization-card/verdocs-organization-card.stories.js +1 -0
  67. package/dist/collection/components/controls/verdocs-organization-card/verdocs-organization-card.stories.js.map +1 -0
  68. package/dist/collection/components/controls/verdocs-status-indicator/recipient-flow.js +1 -0
  69. package/dist/collection/components/controls/verdocs-status-indicator/recipient-flow.js.map +1 -0
  70. package/dist/collection/components/controls/verdocs-status-indicator/verdocs-status-indicator.js +1 -0
  71. package/dist/collection/components/controls/verdocs-status-indicator/verdocs-status-indicator.js.map +1 -0
  72. package/dist/collection/components/controls/verdocs-status-indicator/verdocs-status-indicator.stories.js +1 -0
  73. package/dist/collection/components/controls/verdocs-status-indicator/verdocs-status-indicator.stories.js.map +1 -0
  74. package/dist/collection/components/controls/verdocs-template-card/verdocs-template-card.js +1 -0
  75. package/dist/collection/components/controls/verdocs-template-card/verdocs-template-card.js.map +1 -0
  76. package/dist/collection/components/controls/verdocs-template-card/verdocs-template-card.stories.js +1 -0
  77. package/dist/collection/components/controls/verdocs-template-card/verdocs-template-card.stories.js.map +1 -0
  78. package/dist/collection/components/controls/verdocs-template-tags/verdocs-template-tags.js +1 -0
  79. package/dist/collection/components/controls/verdocs-template-tags/verdocs-template-tags.js.map +1 -0
  80. package/dist/collection/components/controls/verdocs-template-tags/verdocs-template-tags.stories.js +1 -0
  81. package/dist/collection/components/controls/verdocs-template-tags/verdocs-template-tags.stories.js.map +1 -0
  82. package/dist/collection/components/controls/verdocs-text-input/test/verdocs-text-input.js +1 -0
  83. package/dist/collection/components/controls/verdocs-text-input/test/verdocs-text-input.js.map +1 -0
  84. package/dist/collection/components/controls/verdocs-text-input/verdocs-text-input.js +1 -0
  85. package/dist/collection/components/controls/verdocs-text-input/verdocs-text-input.js.map +1 -0
  86. package/dist/collection/components/controls/verdocs-text-input/verdocs-text-input.stories.js +1 -0
  87. package/dist/collection/components/controls/verdocs-text-input/verdocs-text-input.stories.js.map +1 -0
  88. package/dist/collection/components/controls/verdocs-toggle/verdocs-toggle.js +1 -0
  89. package/dist/collection/components/controls/verdocs-toggle/verdocs-toggle.js.map +1 -0
  90. package/dist/collection/components/controls/verdocs-toggle/verdocs-toggle.stories.js +1 -0
  91. package/dist/collection/components/controls/verdocs-toggle/verdocs-toggle.stories.js.map +1 -0
  92. package/dist/collection/components/dialogs/verdocs-initial-dialog/verdocs-initial-dialog.js +1 -0
  93. package/dist/collection/components/dialogs/verdocs-initial-dialog/verdocs-initial-dialog.js.map +1 -0
  94. package/dist/collection/components/dialogs/verdocs-initial-dialog/verdocs-initial-dialog.stories.js +1 -0
  95. package/dist/collection/components/dialogs/verdocs-initial-dialog/verdocs-initial-dialog.stories.js.map +1 -0
  96. package/dist/collection/components/dialogs/verdocs-kba-dialog/verdocs-kba-dialog.js +1 -0
  97. package/dist/collection/components/dialogs/verdocs-kba-dialog/verdocs-kba-dialog.js.map +1 -0
  98. package/dist/collection/components/dialogs/verdocs-kba-dialog/verdocs-kba-dialog.stories.js +1 -0
  99. package/dist/collection/components/dialogs/verdocs-kba-dialog/verdocs-kba-dialog.stories.js.map +1 -0
  100. package/dist/collection/components/dialogs/verdocs-ok-dialog/verdocs-ok-dialog.js +1 -0
  101. package/dist/collection/components/dialogs/verdocs-ok-dialog/verdocs-ok-dialog.js.map +1 -0
  102. package/dist/collection/components/dialogs/verdocs-ok-dialog/verdocs-ok-dialog.stories.js +1 -0
  103. package/dist/collection/components/dialogs/verdocs-ok-dialog/verdocs-ok-dialog.stories.js.map +1 -0
  104. package/dist/collection/components/dialogs/verdocs-signature-dialog/verdocs-signature-dialog.js +1 -0
  105. package/dist/collection/components/dialogs/verdocs-signature-dialog/verdocs-signature-dialog.js.map +1 -0
  106. package/dist/collection/components/dialogs/verdocs-signature-dialog/verdocs-signature-dialog.stories.js +1 -0
  107. package/dist/collection/components/dialogs/verdocs-signature-dialog/verdocs-signature-dialog.stories.js.map +1 -0
  108. package/dist/collection/components/dialogs/verdocs-upload-dialog/verdocs-upload-dialog.js +1 -0
  109. package/dist/collection/components/dialogs/verdocs-upload-dialog/verdocs-upload-dialog.js.map +1 -0
  110. package/dist/collection/components/dialogs/verdocs-upload-dialog/verdocs-upload-dialog.stories.js +1 -0
  111. package/dist/collection/components/dialogs/verdocs-upload-dialog/verdocs-upload-dialog.stories.js.map +1 -0
  112. package/dist/collection/components/elements/verdocs-field-attachment/verdocs-field-attachment.js +1 -0
  113. package/dist/collection/components/elements/verdocs-field-attachment/verdocs-field-attachment.js.map +1 -0
  114. package/dist/collection/components/elements/verdocs-field-attachment/verdocs-field-attachment.stories.js +1 -0
  115. package/dist/collection/components/elements/verdocs-field-attachment/verdocs-field-attachment.stories.js.map +1 -0
  116. package/dist/collection/components/elements/verdocs-field-checkbox-group/verdocs-field-checkbox.js +1 -0
  117. package/dist/collection/components/elements/verdocs-field-checkbox-group/verdocs-field-checkbox.js.map +1 -0
  118. package/dist/collection/components/elements/verdocs-field-checkbox-group/verdocs-field-checkbox.stories.js +1 -0
  119. package/dist/collection/components/elements/verdocs-field-checkbox-group/verdocs-field-checkbox.stories.js.map +1 -0
  120. package/dist/collection/components/elements/verdocs-field-date/verdocs-field-date.js +1 -0
  121. package/dist/collection/components/elements/verdocs-field-date/verdocs-field-date.js.map +1 -0
  122. package/dist/collection/components/elements/verdocs-field-date/verdocs-field-date.stories.js +1 -0
  123. package/dist/collection/components/elements/verdocs-field-date/verdocs-field-date.stories.js.map +1 -0
  124. package/dist/collection/components/elements/verdocs-field-dropdown/verdocs-field-dropdown.js +1 -0
  125. package/dist/collection/components/elements/verdocs-field-dropdown/verdocs-field-dropdown.js.map +1 -0
  126. package/dist/collection/components/elements/verdocs-field-dropdown/verdocs-field-dropdown.stories.js +1 -0
  127. package/dist/collection/components/elements/verdocs-field-dropdown/verdocs-field-dropdown.stories.js.map +1 -0
  128. package/dist/collection/components/elements/verdocs-field-initial/verdocs-field-initial.js +1 -0
  129. package/dist/collection/components/elements/verdocs-field-initial/verdocs-field-initial.js.map +1 -0
  130. package/dist/collection/components/elements/verdocs-field-initial/verdocs-field-initial.stories.js +1 -0
  131. package/dist/collection/components/elements/verdocs-field-initial/verdocs-field-initial.stories.js.map +1 -0
  132. package/dist/collection/components/elements/verdocs-field-payment/verdocs-field-payment.js +1 -0
  133. package/dist/collection/components/elements/verdocs-field-payment/verdocs-field-payment.js.map +1 -0
  134. package/dist/collection/components/elements/verdocs-field-payment/verdocs-field-payment.stories.js +1 -0
  135. package/dist/collection/components/elements/verdocs-field-payment/verdocs-field-payment.stories.js.map +1 -0
  136. package/dist/collection/components/elements/verdocs-field-radio-button-group/verdocs-field-radio-button.js +1 -0
  137. package/dist/collection/components/elements/verdocs-field-radio-button-group/verdocs-field-radio-button.js.map +1 -0
  138. package/dist/collection/components/elements/verdocs-field-radio-button-group/verdocs-field-radio-button.stories.js +1 -0
  139. package/dist/collection/components/elements/verdocs-field-radio-button-group/verdocs-field-radio-button.stories.js.map +1 -0
  140. package/dist/collection/components/elements/verdocs-field-signature/verdocs-field-signature.js +1 -0
  141. package/dist/collection/components/elements/verdocs-field-signature/verdocs-field-signature.js.map +1 -0
  142. package/dist/collection/components/elements/verdocs-field-signature/verdocs-field-signature.stories.js +1 -0
  143. package/dist/collection/components/elements/verdocs-field-signature/verdocs-field-signature.stories.js.map +1 -0
  144. package/dist/collection/components/elements/verdocs-field-textarea/verdocs-field-textarea.js +1 -0
  145. package/dist/collection/components/elements/verdocs-field-textarea/verdocs-field-textarea.js.map +1 -0
  146. package/dist/collection/components/elements/verdocs-field-textarea/verdocs-field-textarea.stories.js +1 -0
  147. package/dist/collection/components/elements/verdocs-field-textarea/verdocs-field-textarea.stories.js.map +1 -0
  148. package/dist/collection/components/elements/verdocs-field-textbox/verdocs-field-textbox.js +1 -0
  149. package/dist/collection/components/elements/verdocs-field-textbox/verdocs-field-textbox.js.map +1 -0
  150. package/dist/collection/components/elements/verdocs-field-textbox/verdocs-field-textbox.stories.js +1 -0
  151. package/dist/collection/components/elements/verdocs-field-textbox/verdocs-field-textbox.stories.js.map +1 -0
  152. package/dist/collection/components/elements/verdocs-quick-functions/verdocs-quick-functions.js +1 -0
  153. package/dist/collection/components/elements/verdocs-quick-functions/verdocs-quick-functions.js.map +1 -0
  154. package/dist/collection/components/elements/verdocs-quick-functions/verdocs-quick-functions.stories.js +1 -0
  155. package/dist/collection/components/elements/verdocs-quick-functions/verdocs-quick-functions.stories.js.map +1 -0
  156. package/dist/collection/components/elements/verdocs-search-activity/verdocs-search-activity.js +1 -0
  157. package/dist/collection/components/elements/verdocs-search-activity/verdocs-search-activity.js.map +1 -0
  158. package/dist/collection/components/elements/verdocs-search-activity/verdocs-search-activity.stories.js +1 -0
  159. package/dist/collection/components/elements/verdocs-search-activity/verdocs-search-activity.stories.js.map +1 -0
  160. package/dist/collection/components/elements/verdocs-search-box/verdocs-search-box.js +1 -0
  161. package/dist/collection/components/elements/verdocs-search-box/verdocs-search-box.js.map +1 -0
  162. package/dist/collection/components/elements/verdocs-search-box/verdocs-search-box.stories.js +1 -0
  163. package/dist/collection/components/elements/verdocs-search-box/verdocs-search-box.stories.js.map +1 -0
  164. package/dist/collection/components/elements/verdocs-search-tabs/verdocs-search-tabs.js +1 -0
  165. package/dist/collection/components/elements/verdocs-search-tabs/verdocs-search-tabs.js.map +1 -0
  166. package/dist/collection/components/elements/verdocs-search-tabs/verdocs-search-tabs.stories.js +1 -0
  167. package/dist/collection/components/elements/verdocs-search-tabs/verdocs-search-tabs.stories.js.map +1 -0
  168. package/dist/collection/components/embeds/verdocs-auth/verdocs-auth.js +24 -16
  169. package/dist/collection/components/embeds/verdocs-auth/verdocs-auth.js.map +1 -0
  170. package/dist/collection/components/embeds/verdocs-auth/verdocs-auth.stories.js +1 -0
  171. package/dist/collection/components/embeds/verdocs-auth/verdocs-auth.stories.js.map +1 -0
  172. package/dist/collection/components/embeds/verdocs-search/verdocs-search.js +1 -0
  173. package/dist/collection/components/embeds/verdocs-search/verdocs-search.js.map +1 -0
  174. package/dist/collection/components/embeds/verdocs-search/verdocs-search.stories.js +1 -0
  175. package/dist/collection/components/embeds/verdocs-search/verdocs-search.stories.js.map +1 -0
  176. package/dist/collection/components/embeds/verdocs-sign/verdocs-sign.js +2 -1
  177. package/dist/collection/components/embeds/verdocs-sign/verdocs-sign.js.map +1 -0
  178. package/dist/collection/components/embeds/verdocs-sign/verdocs-sign.stories.js +1 -0
  179. package/dist/collection/components/embeds/verdocs-sign/verdocs-sign.stories.js.map +1 -0
  180. package/dist/collection/components/embeds/verdocs-view/verdocs-view.css +1 -2
  181. package/dist/collection/components/embeds/verdocs-view/verdocs-view.js +4 -24
  182. package/dist/collection/components/embeds/verdocs-view/verdocs-view.js.map +1 -0
  183. package/dist/collection/components/embeds/verdocs-view/verdocs-view.stories.js +5 -2
  184. package/dist/collection/components/embeds/verdocs-view/verdocs-view.stories.js.map +1 -0
  185. package/dist/collection/index.js +1 -0
  186. package/dist/collection/index.js.map +1 -0
  187. package/dist/collection/utils/utils.js +1 -0
  188. package/dist/collection/utils/utils.js.map +1 -0
  189. package/dist/components/VerdocsEndpoint.js +46 -2042
  190. package/dist/components/VerdocsEndpoint.js.map +1 -0
  191. package/dist/components/index.d.ts +32 -32
  192. package/dist/components/index.js +2 -0
  193. package/dist/components/index.js.map +1 -0
  194. package/dist/components/popper.js +62 -49
  195. package/dist/components/popper.js.map +1 -0
  196. package/dist/components/verdocs-auth.js +24 -14
  197. package/dist/components/verdocs-auth.js.map +1 -0
  198. package/dist/components/verdocs-button.js +2 -0
  199. package/dist/components/verdocs-button.js.map +1 -0
  200. package/dist/components/verdocs-button2.js +2 -0
  201. package/dist/components/verdocs-button2.js.map +1 -0
  202. package/dist/components/verdocs-dropdown.js +2 -0
  203. package/dist/components/verdocs-dropdown.js.map +1 -0
  204. package/dist/components/verdocs-dropdown2.js +2 -0
  205. package/dist/components/verdocs-dropdown2.js.map +1 -0
  206. package/dist/components/verdocs-field-attachment.js +2 -0
  207. package/dist/components/verdocs-field-attachment.js.map +1 -0
  208. package/dist/components/verdocs-field-attachment2.js +2 -0
  209. package/dist/components/verdocs-field-attachment2.js.map +1 -0
  210. package/dist/components/verdocs-field-checkbox.js +2 -0
  211. package/dist/components/verdocs-field-checkbox.js.map +1 -0
  212. package/dist/components/verdocs-field-checkbox2.js +2 -0
  213. package/dist/components/verdocs-field-checkbox2.js.map +1 -0
  214. package/dist/components/verdocs-field-date.js +2 -0
  215. package/dist/components/verdocs-field-date.js.map +1 -0
  216. package/dist/components/verdocs-field-date2.js +2 -0
  217. package/dist/components/verdocs-field-date2.js.map +1 -0
  218. package/dist/components/verdocs-field-dropdown.js +2 -0
  219. package/dist/components/verdocs-field-dropdown.js.map +1 -0
  220. package/dist/components/verdocs-field-dropdown2.js +2 -0
  221. package/dist/components/verdocs-field-dropdown2.js.map +1 -0
  222. package/dist/components/verdocs-field-initial.js +2 -0
  223. package/dist/components/verdocs-field-initial.js.map +1 -0
  224. package/dist/components/verdocs-field-initial2.js +2 -0
  225. package/dist/components/verdocs-field-initial2.js.map +1 -0
  226. package/dist/components/verdocs-field-payment.js +2 -0
  227. package/dist/components/verdocs-field-payment.js.map +1 -0
  228. package/dist/components/verdocs-field-payment2.js +2 -0
  229. package/dist/components/verdocs-field-payment2.js.map +1 -0
  230. package/dist/components/verdocs-field-radio-button.js +2 -0
  231. package/dist/components/verdocs-field-radio-button.js.map +1 -0
  232. package/dist/components/verdocs-field-radio-button2.js +2 -0
  233. package/dist/components/verdocs-field-radio-button2.js.map +1 -0
  234. package/dist/components/verdocs-field-signature.js +2 -0
  235. package/dist/components/verdocs-field-signature.js.map +1 -0
  236. package/dist/components/verdocs-field-signature2.js +2 -0
  237. package/dist/components/verdocs-field-signature2.js.map +1 -0
  238. package/dist/components/verdocs-field-textarea.js +2 -0
  239. package/dist/components/verdocs-field-textarea.js.map +1 -0
  240. package/dist/components/verdocs-field-textarea2.js +2 -0
  241. package/dist/components/verdocs-field-textarea2.js.map +1 -0
  242. package/dist/components/verdocs-field-textbox.js +2 -0
  243. package/dist/components/verdocs-field-textbox.js.map +1 -0
  244. package/dist/components/verdocs-field-textbox2.js +2 -0
  245. package/dist/components/verdocs-field-textbox2.js.map +1 -0
  246. package/dist/components/verdocs-initial-dialog.js +2 -0
  247. package/dist/components/verdocs-initial-dialog.js.map +1 -0
  248. package/dist/components/verdocs-initial-dialog2.js +2 -0
  249. package/dist/components/verdocs-initial-dialog2.js.map +1 -0
  250. package/dist/components/verdocs-kba-dialog.js +2 -0
  251. package/dist/components/verdocs-kba-dialog.js.map +1 -0
  252. package/dist/components/verdocs-loader.js +2 -0
  253. package/dist/components/verdocs-loader.js.map +1 -0
  254. package/dist/components/verdocs-loader2.js +2 -0
  255. package/dist/components/verdocs-loader2.js.map +1 -0
  256. package/dist/components/verdocs-ok-dialog.js +2 -0
  257. package/dist/components/verdocs-ok-dialog.js.map +1 -0
  258. package/dist/components/verdocs-ok-dialog2.js +2 -0
  259. package/dist/components/verdocs-ok-dialog2.js.map +1 -0
  260. package/dist/components/verdocs-organization-card.js +2 -0
  261. package/dist/components/verdocs-organization-card.js.map +1 -0
  262. package/dist/components/verdocs-quick-functions.js +2 -0
  263. package/dist/components/verdocs-quick-functions.js.map +1 -0
  264. package/dist/components/verdocs-search-activity.js +2 -0
  265. package/dist/components/verdocs-search-activity.js.map +1 -0
  266. package/dist/components/verdocs-search-activity2.js +2 -0
  267. package/dist/components/verdocs-search-activity2.js.map +1 -0
  268. package/dist/components/verdocs-search-box.js +2 -0
  269. package/dist/components/verdocs-search-box.js.map +1 -0
  270. package/dist/components/verdocs-search-box2.js +2 -0
  271. package/dist/components/verdocs-search-box2.js.map +1 -0
  272. package/dist/components/verdocs-search-tabs.js +2 -0
  273. package/dist/components/verdocs-search-tabs.js.map +1 -0
  274. package/dist/components/verdocs-search.js +2 -0
  275. package/dist/components/verdocs-search.js.map +1 -0
  276. package/dist/components/verdocs-sign.js +3 -1
  277. package/dist/components/verdocs-sign.js.map +1 -0
  278. package/dist/components/verdocs-signature-dialog.js +2 -0
  279. package/dist/components/verdocs-signature-dialog.js.map +1 -0
  280. package/dist/components/verdocs-signature-dialog2.js +2 -0
  281. package/dist/components/verdocs-signature-dialog2.js.map +1 -0
  282. package/dist/components/verdocs-status-indicator.js +2 -0
  283. package/dist/components/verdocs-status-indicator.js.map +1 -0
  284. package/dist/components/verdocs-template-card.js +2 -0
  285. package/dist/components/verdocs-template-card.js.map +1 -0
  286. package/dist/components/verdocs-template-tags.js +2 -0
  287. package/dist/components/verdocs-template-tags.js.map +1 -0
  288. package/dist/components/verdocs-text-input.js +2 -0
  289. package/dist/components/verdocs-text-input.js.map +1 -0
  290. package/dist/components/verdocs-text-input2.js +2 -0
  291. package/dist/components/verdocs-text-input2.js.map +1 -0
  292. package/dist/components/verdocs-toggle.js +2 -0
  293. package/dist/components/verdocs-toggle.js.map +1 -0
  294. package/dist/components/verdocs-upload-dialog.js +2 -0
  295. package/dist/components/verdocs-upload-dialog.js.map +1 -0
  296. package/dist/components/verdocs-upload-dialog2.js +2 -0
  297. package/dist/components/verdocs-upload-dialog2.js.map +1 -0
  298. package/dist/components/verdocs-view.js +2 -0
  299. package/dist/components/verdocs-view.js.map +1 -0
  300. package/dist/components/verdocs-view2.js +11357 -7266
  301. package/dist/components/verdocs-view2.js.map +1 -0
  302. package/dist/custom-elements.json +0 -4
  303. package/dist/docs.json +2 -20
  304. package/dist/esm/{VerdocsEndpoint-30e1b6ec.js → VerdocsEndpoint-9353e4a0.js} +46 -2042
  305. package/dist/esm/VerdocsEndpoint-9353e4a0.js.map +1 -0
  306. package/dist/esm/index-859bc689.js +2 -0
  307. package/dist/esm/index-859bc689.js.map +1 -0
  308. package/dist/esm/index.js +2 -0
  309. package/dist/esm/index.js.map +1 -0
  310. package/dist/esm/loader.js +4 -2
  311. package/dist/esm/loader.js.map +1 -0
  312. package/dist/esm/{popper-93ecb064.js → popper-f860750c.js} +62 -49
  313. package/dist/esm/popper-f860750c.js.map +1 -0
  314. package/dist/esm/verdocs-auth.entry.js +23 -14
  315. package/dist/esm/verdocs-auth.entry.js.map +1 -0
  316. package/dist/esm/verdocs-button_2.entry.js +2 -0
  317. package/dist/esm/verdocs-button_2.entry.js.map +1 -0
  318. package/dist/esm/verdocs-dropdown_12.entry.js +11334 -7242
  319. package/dist/esm/verdocs-dropdown_12.entry.js.map +1 -0
  320. package/dist/esm/verdocs-initial-dialog.entry.js +2 -0
  321. package/dist/esm/verdocs-initial-dialog.entry.js.map +1 -0
  322. package/dist/esm/verdocs-kba-dialog.entry.js +2 -0
  323. package/dist/esm/verdocs-kba-dialog.entry.js.map +1 -0
  324. package/dist/esm/verdocs-loader.entry.js +2 -0
  325. package/dist/esm/verdocs-loader.entry.js.map +1 -0
  326. package/dist/esm/verdocs-ok-dialog.entry.js +2 -0
  327. package/dist/esm/verdocs-ok-dialog.entry.js.map +1 -0
  328. package/dist/esm/verdocs-organization-card.entry.js +2 -0
  329. package/dist/esm/verdocs-organization-card.entry.js.map +1 -0
  330. package/dist/esm/verdocs-quick-functions.entry.js +3 -1
  331. package/dist/esm/verdocs-quick-functions.entry.js.map +1 -0
  332. package/dist/esm/verdocs-search-activity_2.entry.js +3 -1
  333. package/dist/esm/verdocs-search-activity_2.entry.js.map +1 -0
  334. package/dist/esm/verdocs-search-tabs.entry.js +2 -0
  335. package/dist/esm/verdocs-search-tabs.entry.js.map +1 -0
  336. package/dist/esm/verdocs-search.entry.js +3 -1
  337. package/dist/esm/verdocs-search.entry.js.map +1 -0
  338. package/dist/esm/verdocs-sign.entry.js +4 -2
  339. package/dist/esm/verdocs-sign.entry.js.map +1 -0
  340. package/dist/esm/verdocs-signature-dialog.entry.js +2 -0
  341. package/dist/esm/verdocs-signature-dialog.entry.js.map +1 -0
  342. package/dist/esm/verdocs-status-indicator.entry.js +3 -1
  343. package/dist/esm/verdocs-status-indicator.entry.js.map +1 -0
  344. package/dist/esm/verdocs-template-card.entry.js +2 -0
  345. package/dist/esm/verdocs-template-card.entry.js.map +1 -0
  346. package/dist/esm/verdocs-template-tags.entry.js +2 -0
  347. package/dist/esm/verdocs-template-tags.entry.js.map +1 -0
  348. package/dist/esm/verdocs-toggle.entry.js +2 -0
  349. package/dist/esm/verdocs-toggle.entry.js.map +1 -0
  350. package/dist/esm/verdocs-upload-dialog.entry.js +2 -0
  351. package/dist/esm/verdocs-upload-dialog.entry.js.map +1 -0
  352. package/dist/esm/verdocs-web-sdk.js +4 -2
  353. package/dist/esm/verdocs-web-sdk.js.map +1 -0
  354. package/dist/esm-es5/VerdocsEndpoint-9353e4a0.js +2 -0
  355. package/dist/esm-es5/VerdocsEndpoint-9353e4a0.js.map +1 -0
  356. package/dist/esm-es5/index-859bc689.js +2 -1
  357. package/dist/esm-es5/index-859bc689.js.map +1 -0
  358. package/dist/esm-es5/index.js +2 -0
  359. package/dist/esm-es5/index.js.map +1 -0
  360. package/dist/esm-es5/loader.js +2 -1
  361. package/dist/esm-es5/loader.js.map +1 -0
  362. package/dist/esm-es5/popper-f860750c.js +2 -0
  363. package/dist/esm-es5/popper-f860750c.js.map +1 -0
  364. package/dist/esm-es5/verdocs-auth.entry.js +2 -1
  365. package/dist/esm-es5/verdocs-auth.entry.js.map +1 -0
  366. package/dist/esm-es5/verdocs-button_2.entry.js +2 -1
  367. package/dist/esm-es5/verdocs-button_2.entry.js.map +1 -0
  368. package/dist/esm-es5/verdocs-dropdown_12.entry.js +6 -5
  369. package/dist/esm-es5/verdocs-dropdown_12.entry.js.map +1 -0
  370. package/dist/esm-es5/verdocs-initial-dialog.entry.js +2 -1
  371. package/dist/esm-es5/verdocs-initial-dialog.entry.js.map +1 -0
  372. package/dist/esm-es5/verdocs-kba-dialog.entry.js +2 -1
  373. package/dist/esm-es5/verdocs-kba-dialog.entry.js.map +1 -0
  374. package/dist/esm-es5/verdocs-loader.entry.js +2 -1
  375. package/dist/esm-es5/verdocs-loader.entry.js.map +1 -0
  376. package/dist/esm-es5/verdocs-ok-dialog.entry.js +2 -1
  377. package/dist/esm-es5/verdocs-ok-dialog.entry.js.map +1 -0
  378. package/dist/esm-es5/verdocs-organization-card.entry.js +2 -1
  379. package/dist/esm-es5/verdocs-organization-card.entry.js.map +1 -0
  380. package/dist/esm-es5/verdocs-quick-functions.entry.js +2 -1
  381. package/dist/esm-es5/verdocs-quick-functions.entry.js.map +1 -0
  382. package/dist/esm-es5/verdocs-search-activity_2.entry.js +2 -1
  383. package/dist/esm-es5/verdocs-search-activity_2.entry.js.map +1 -0
  384. package/dist/esm-es5/verdocs-search-tabs.entry.js +2 -1
  385. package/dist/esm-es5/verdocs-search-tabs.entry.js.map +1 -0
  386. package/dist/esm-es5/verdocs-search.entry.js +2 -1
  387. package/dist/esm-es5/verdocs-search.entry.js.map +1 -0
  388. package/dist/esm-es5/verdocs-sign.entry.js +2 -1
  389. package/dist/esm-es5/verdocs-sign.entry.js.map +1 -0
  390. package/dist/esm-es5/verdocs-signature-dialog.entry.js +2 -1
  391. package/dist/esm-es5/verdocs-signature-dialog.entry.js.map +1 -0
  392. package/dist/esm-es5/verdocs-status-indicator.entry.js +2 -1
  393. package/dist/esm-es5/verdocs-status-indicator.entry.js.map +1 -0
  394. package/dist/esm-es5/verdocs-template-card.entry.js +2 -1
  395. package/dist/esm-es5/verdocs-template-card.entry.js.map +1 -0
  396. package/dist/esm-es5/verdocs-template-tags.entry.js +2 -1
  397. package/dist/esm-es5/verdocs-template-tags.entry.js.map +1 -0
  398. package/dist/esm-es5/verdocs-toggle.entry.js +2 -1
  399. package/dist/esm-es5/verdocs-toggle.entry.js.map +1 -0
  400. package/dist/esm-es5/verdocs-upload-dialog.entry.js +2 -1
  401. package/dist/esm-es5/verdocs-upload-dialog.entry.js.map +1 -0
  402. package/dist/esm-es5/verdocs-web-sdk.js +2 -1
  403. package/dist/esm-es5/verdocs-web-sdk.js.map +1 -0
  404. package/dist/types/components/embeds/verdocs-auth/verdocs-auth.d.ts +2 -0
  405. package/dist/types/components/embeds/verdocs-view/verdocs-view.d.ts +0 -5
  406. package/dist/types/components.d.ts +0 -8
  407. package/dist/verdocs-web-sdk/index.esm.js +2 -0
  408. package/dist/verdocs-web-sdk/index.esm.js.map +1 -0
  409. package/dist/verdocs-web-sdk/p-06b2e7a5.entry.js +2 -0
  410. package/dist/verdocs-web-sdk/p-06b2e7a5.entry.js.map +1 -0
  411. package/dist/verdocs-web-sdk/p-088b9a26.entry.js +2 -0
  412. package/dist/verdocs-web-sdk/p-088b9a26.entry.js.map +1 -0
  413. package/dist/verdocs-web-sdk/p-10e49d23.entry.js +2 -0
  414. package/dist/verdocs-web-sdk/p-10e49d23.entry.js.map +1 -0
  415. package/dist/verdocs-web-sdk/p-11f56146.entry.js +2 -0
  416. package/dist/verdocs-web-sdk/p-11f56146.entry.js.map +1 -0
  417. package/dist/verdocs-web-sdk/p-144e0842.system.entry.js +2 -1
  418. package/dist/verdocs-web-sdk/p-144e0842.system.entry.js.map +1 -0
  419. package/dist/verdocs-web-sdk/p-1907fc69.entry.js +2 -0
  420. package/dist/verdocs-web-sdk/p-1907fc69.entry.js.map +1 -0
  421. package/dist/verdocs-web-sdk/p-1c648415.entry.js +2 -0
  422. package/dist/verdocs-web-sdk/p-1c648415.entry.js.map +1 -0
  423. package/dist/verdocs-web-sdk/p-1f55d8ac.system.entry.js +2 -1
  424. package/dist/verdocs-web-sdk/p-1f55d8ac.system.entry.js.map +1 -0
  425. package/dist/verdocs-web-sdk/p-22220dcc.entry.js +2 -0
  426. package/dist/verdocs-web-sdk/p-22220dcc.entry.js.map +1 -0
  427. package/dist/verdocs-web-sdk/p-2bc58746.js +3 -2
  428. package/dist/verdocs-web-sdk/p-2bc58746.js.map +1 -0
  429. package/dist/verdocs-web-sdk/p-316b2fd4.entry.js +2 -0
  430. package/dist/verdocs-web-sdk/p-316b2fd4.entry.js.map +1 -0
  431. package/dist/verdocs-web-sdk/p-347c10fe.entry.js +2 -0
  432. package/dist/verdocs-web-sdk/p-347c10fe.entry.js.map +1 -0
  433. package/dist/verdocs-web-sdk/{p-1b4e04b7.system.entry.js → p-39818d35.system.entry.js} +2 -1
  434. package/dist/verdocs-web-sdk/p-39818d35.system.entry.js.map +1 -0
  435. package/dist/verdocs-web-sdk/p-4b0c711c.entry.js +2 -0
  436. package/dist/verdocs-web-sdk/p-4b0c711c.entry.js.map +1 -0
  437. package/dist/verdocs-web-sdk/p-50ea2036.system.js +2 -1
  438. package/dist/verdocs-web-sdk/p-50ea2036.system.js.map +1 -0
  439. package/dist/verdocs-web-sdk/{p-a87069d5.system.entry.js → p-545eb938.system.entry.js} +2 -1
  440. package/dist/verdocs-web-sdk/p-545eb938.system.entry.js.map +1 -0
  441. package/dist/verdocs-web-sdk/p-64127985.system.js +2 -0
  442. package/dist/verdocs-web-sdk/p-64127985.system.js.map +1 -0
  443. package/dist/verdocs-web-sdk/p-654d98ea.system.entry.js +2 -0
  444. package/dist/verdocs-web-sdk/p-654d98ea.system.entry.js.map +1 -0
  445. package/dist/verdocs-web-sdk/p-6802ef91.system.entry.js +2 -1
  446. package/dist/verdocs-web-sdk/p-6802ef91.system.entry.js.map +1 -0
  447. package/dist/verdocs-web-sdk/{p-f814d5cc.system.entry.js → p-6bda2959.system.entry.js} +2 -1
  448. package/dist/verdocs-web-sdk/p-6bda2959.system.entry.js.map +1 -0
  449. package/dist/verdocs-web-sdk/{p-9139a76d.system.entry.js → p-6eed372a.system.entry.js} +2 -1
  450. package/dist/verdocs-web-sdk/p-6eed372a.system.entry.js.map +1 -0
  451. package/dist/verdocs-web-sdk/p-7f162244.js +2 -0
  452. package/dist/verdocs-web-sdk/p-7f162244.js.map +1 -0
  453. package/dist/verdocs-web-sdk/p-81fc0196.system.entry.js +2 -1
  454. package/dist/verdocs-web-sdk/p-81fc0196.system.entry.js.map +1 -0
  455. package/dist/verdocs-web-sdk/p-85cd7ebf.system.entry.js +24 -0
  456. package/dist/verdocs-web-sdk/p-85cd7ebf.system.entry.js.map +1 -0
  457. package/dist/verdocs-web-sdk/p-92f8605b.entry.js +2 -0
  458. package/dist/verdocs-web-sdk/p-92f8605b.entry.js.map +1 -0
  459. package/dist/verdocs-web-sdk/p-a217fe67.entry.js +2 -0
  460. package/dist/verdocs-web-sdk/p-a217fe67.entry.js.map +1 -0
  461. package/dist/verdocs-web-sdk/p-aef24c40.entry.js +2 -0
  462. package/dist/verdocs-web-sdk/p-aef24c40.entry.js.map +1 -0
  463. package/dist/verdocs-web-sdk/p-b08a8bd9.entry.js +2 -0
  464. package/dist/verdocs-web-sdk/p-b08a8bd9.entry.js.map +1 -0
  465. package/dist/verdocs-web-sdk/p-bb08e079.system.js +2 -0
  466. package/dist/verdocs-web-sdk/p-bb08e079.system.js.map +1 -0
  467. package/dist/verdocs-web-sdk/p-bdcc8115.entry.js +2 -0
  468. package/dist/verdocs-web-sdk/p-bdcc8115.entry.js.map +1 -0
  469. package/dist/verdocs-web-sdk/p-c2f97ef9.system.entry.js +2 -1
  470. package/dist/verdocs-web-sdk/p-c2f97ef9.system.entry.js.map +1 -0
  471. package/dist/verdocs-web-sdk/p-caed7818.system.js +2 -1
  472. package/dist/verdocs-web-sdk/p-caed7818.system.js.map +1 -0
  473. package/dist/verdocs-web-sdk/p-cc127684.system.entry.js +2 -1
  474. package/dist/verdocs-web-sdk/p-cc127684.system.entry.js.map +1 -0
  475. package/dist/verdocs-web-sdk/p-cd6a2c40.system.entry.js +2 -1
  476. package/dist/verdocs-web-sdk/p-cd6a2c40.system.entry.js.map +1 -0
  477. package/dist/verdocs-web-sdk/p-d14a6057.system.entry.js +2 -1
  478. package/dist/verdocs-web-sdk/p-d14a6057.system.entry.js.map +1 -0
  479. package/dist/verdocs-web-sdk/p-d6206c17.system.entry.js +2 -1
  480. package/dist/verdocs-web-sdk/p-d6206c17.system.entry.js.map +1 -0
  481. package/dist/verdocs-web-sdk/p-da0462e5.entry.js +2 -0
  482. package/dist/verdocs-web-sdk/p-da0462e5.entry.js.map +1 -0
  483. package/dist/verdocs-web-sdk/{p-16d62a51.system.entry.js → p-dadb25d5.system.entry.js} +2 -1
  484. package/dist/verdocs-web-sdk/p-dadb25d5.system.entry.js.map +1 -0
  485. package/dist/verdocs-web-sdk/p-e12b7fbc.system.js +2 -0
  486. package/dist/verdocs-web-sdk/p-e12b7fbc.system.js.map +1 -0
  487. package/dist/verdocs-web-sdk/p-e4ba14dc.system.entry.js +2 -1
  488. package/dist/verdocs-web-sdk/p-e4ba14dc.system.entry.js.map +1 -0
  489. package/dist/verdocs-web-sdk/p-e719f9ca.system.entry.js +2 -1
  490. package/dist/verdocs-web-sdk/p-e719f9ca.system.entry.js.map +1 -0
  491. package/dist/verdocs-web-sdk/p-ec26fc38.js +2 -0
  492. package/dist/verdocs-web-sdk/p-ec26fc38.js.map +1 -0
  493. package/dist/verdocs-web-sdk/p-ec757dab.entry.js +24 -0
  494. package/dist/verdocs-web-sdk/p-ec757dab.entry.js.map +1 -0
  495. package/dist/verdocs-web-sdk/p-f0d0f959.system.entry.js +2 -1
  496. package/dist/verdocs-web-sdk/p-f0d0f959.system.entry.js.map +1 -0
  497. package/dist/verdocs-web-sdk/p-f248e3c4.entry.js +2 -0
  498. package/dist/verdocs-web-sdk/p-f248e3c4.entry.js.map +1 -0
  499. package/dist/verdocs-web-sdk/p-f33f8683.entry.js +2 -0
  500. package/dist/verdocs-web-sdk/p-f33f8683.entry.js.map +1 -0
  501. package/dist/verdocs-web-sdk/verdocs-web-sdk.esm.js +2 -1
  502. package/dist/verdocs-web-sdk/verdocs-web-sdk.esm.js.map +1 -0
  503. package/dist/verdocs-web-sdk/verdocs-web-sdk.js +1 -1
  504. package/package.json +20 -14
  505. package/dist/esm-es5/VerdocsEndpoint-30e1b6ec.js +0 -7
  506. package/dist/esm-es5/popper-93ecb064.js +0 -1
  507. package/dist/verdocs-web-sdk/p-064453c3.entry.js +0 -1
  508. package/dist/verdocs-web-sdk/p-06f38046.js +0 -1
  509. package/dist/verdocs-web-sdk/p-15b7ed4d.entry.js +0 -1
  510. package/dist/verdocs-web-sdk/p-1ea3b9d3.entry.js +0 -1
  511. package/dist/verdocs-web-sdk/p-30cc8818.entry.js +0 -1
  512. package/dist/verdocs-web-sdk/p-32ad1014.entry.js +0 -1
  513. package/dist/verdocs-web-sdk/p-4c66f794.js +0 -1
  514. package/dist/verdocs-web-sdk/p-4d80d044.system.js +0 -7
  515. package/dist/verdocs-web-sdk/p-6393b2b4.entry.js +0 -1
  516. package/dist/verdocs-web-sdk/p-66b19637.entry.js +0 -1
  517. package/dist/verdocs-web-sdk/p-6fa6fb3c.entry.js +0 -1
  518. package/dist/verdocs-web-sdk/p-8276345a.entry.js +0 -1
  519. package/dist/verdocs-web-sdk/p-829b235c.entry.js +0 -1
  520. package/dist/verdocs-web-sdk/p-88a300c5.system.js +0 -1
  521. package/dist/verdocs-web-sdk/p-96c0bf40.system.js +0 -1
  522. package/dist/verdocs-web-sdk/p-9b34c794.entry.js +0 -1
  523. package/dist/verdocs-web-sdk/p-9d8d8c78.entry.js +0 -1
  524. package/dist/verdocs-web-sdk/p-aa9fc574.entry.js +0 -1
  525. package/dist/verdocs-web-sdk/p-bf2620cb.entry.js +0 -1
  526. package/dist/verdocs-web-sdk/p-c29c2cf8.entry.js +0 -1
  527. package/dist/verdocs-web-sdk/p-c4d03ff9.system.entry.js +0 -23
  528. package/dist/verdocs-web-sdk/p-d522de7d.entry.js +0 -23
  529. package/dist/verdocs-web-sdk/p-da667373.entry.js +0 -1
  530. package/dist/verdocs-web-sdk/p-f4219236.entry.js +0 -1
  531. package/dist/verdocs-web-sdk/p-f6a53928.system.entry.js +0 -1
  532. package/dist/verdocs-web-sdk/p-f7e26fbd.entry.js +0 -1
  533. package/dist/verdocs-web-sdk/verdocs-web-sdk.css +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["src/components/controls/verdocs-dropdown/verdocs-dropdown.scss?tag=verdocs-dropdown","src/components/controls/verdocs-dropdown/verdocs-dropdown.tsx","src/components/elements/verdocs-field-attachment/verdocs-field-attachment.scss?tag=verdocs-field-attachment","src/components/elements/verdocs-field-attachment/verdocs-field-attachment.tsx","src/components/elements/verdocs-field-checkbox-group/verdocs-field-checkbox.scss?tag=verdocs-field-checkbox","src/components/elements/verdocs-field-checkbox-group/verdocs-field-checkbox.tsx","node_modules/vanillajs-datepicker/js/lib/utils.js","node_modules/vanillajs-datepicker/js/lib/date.js","node_modules/vanillajs-datepicker/js/lib/date-format.js","node_modules/vanillajs-datepicker/js/lib/dom.js","node_modules/vanillajs-datepicker/js/lib/event.js","node_modules/vanillajs-datepicker/js/i18n/base-locales.js","node_modules/vanillajs-datepicker/js/options/defaultOptions.js","node_modules/vanillajs-datepicker/js/options/processOptions.js","node_modules/vanillajs-datepicker/js/picker/templates/pickerTemplate.js","node_modules/vanillajs-datepicker/js/picker/templates/daysTemplate.js","node_modules/vanillajs-datepicker/js/picker/templates/calendarWeeksTemplate.js","node_modules/vanillajs-datepicker/js/picker/views/View.js","node_modules/vanillajs-datepicker/js/picker/views/DaysView.js","node_modules/vanillajs-datepicker/js/picker/views/MonthsView.js","node_modules/vanillajs-datepicker/js/picker/views/YearsView.js","node_modules/vanillajs-datepicker/js/events/functions.js","node_modules/vanillajs-datepicker/js/events/pickerListeners.js","node_modules/vanillajs-datepicker/js/picker/Picker.js","node_modules/vanillajs-datepicker/js/events/inputFieldListeners.js","node_modules/vanillajs-datepicker/js/events/otherListeners.js","node_modules/vanillajs-datepicker/js/Datepicker.js","src/components/elements/verdocs-field-date/verdocs-field-date.scss?tag=verdocs-field-date","src/components/elements/verdocs-field-date/verdocs-field-date.tsx","src/components/elements/verdocs-field-dropdown/verdocs-field-dropdown.scss?tag=verdocs-field-dropdown","src/components/elements/verdocs-field-dropdown/verdocs-field-dropdown.tsx","src/components/elements/verdocs-field-initial/verdocs-field-initial.scss?tag=verdocs-field-initial","src/components/elements/verdocs-field-initial/verdocs-field-initial.tsx","src/components/elements/verdocs-field-payment/verdocs-field-payment.scss?tag=verdocs-field-payment","src/components/elements/verdocs-field-payment/verdocs-field-payment.tsx","src/components/elements/verdocs-field-radio-button-group/verdocs-field-radio-button.scss?tag=verdocs-field-radio-button","src/components/elements/verdocs-field-radio-button-group/verdocs-field-radio-button.tsx","src/components/elements/verdocs-field-signature/verdocs-field-signature.scss?tag=verdocs-field-signature","src/components/elements/verdocs-field-signature/verdocs-field-signature.tsx","src/components/elements/verdocs-field-textarea/verdocs-field-textarea.scss?tag=verdocs-field-textarea","src/components/elements/verdocs-field-textarea/verdocs-field-textarea.tsx","src/components/elements/verdocs-field-textbox/verdocs-field-textbox.scss?tag=verdocs-field-textbox","src/components/elements/verdocs-field-textbox/verdocs-field-textbox.tsx","node_modules/pdfjs-dist/build/pdf.js","src/utils/utils.ts","src/components/embeds/verdocs-view/verdocs-view.scss?tag=verdocs-view","src/components/embeds/verdocs-view/verdocs-view.tsx"],"names":["verdocsDropdownCss","VerdocsDropdown","[object Object]","hostRef","this","options","isOpen","open","popper","createPopper","dropdownButton","dropdownMenu","placement","modifiers","name","offset","option","optionSelected","emit","hide","setAttribute","removeAttribute","_a","setOptions","enabled","_b","update","e","target","localName","className","showDropdown","h","Host","class","storybook","window","innerHTML","SortDown","aria-label","onClick","toggleDropdown","onBlur","handleHideDropdown","ref","el","aria-hidden","map","handleSelectOption","disabled","label","verdocsFieldAttachmentCss","VerdocsFieldAttachment","order","value","required","handleShow","dialog","document","createElement","addEventListener","console","log","remove","body","append","Paperclip","verdocsFieldCheckboxCss","VerdocsFieldCheckbox","fieldChange","checked","type","tabIndex","onChange","handleChange","hasProperty","obj","prop","Object","prototype","hasOwnProperty","call","lastItemOf","arr","length","pushUnique","items","forEach","item","includes","push","stringToArray","str","separator","split","isInRange","testVal","min","max","minOK","undefined","maxOK","limitToRange","val","createTagRepeat","tagName","repeat","attributes","index","html","openTagSrc","keys","reduce","src","attr","next","optimizeTemplateHTML","replace","stripTime","timeValue","Date","setHours","today","dateValue","args","newDate","setFullYear","addDays","date","amount","setDate","getDate","addWeeks","addMonths","monthsToSet","getMonth","expectedMonth","time","setMonth","addYears","getFullYear","dayDiff","day","from","dayOfTheWeekOf","baseDate","dayOfWeek","weekStart","baseDay","getDay","getWeek","thuOfTheWeek","firstThu","Math","round","startOfYearPeriod","years","year","floor","regularizeDate","timeSpan","useLastDate","reFormatTokens","reNonDateParts","knownFormats","parseFns","parseInt","month","locale","monthIndex","isNaN","NaN","monthName","toLowerCase","compareNames","startsWith","monthsShort","findIndex","months","normalizeMonth","getTime","formatFns","padZero","daysShort","days","slice","num","toString","padStart","parseFormatString","format","Error","separators","parts","match","RegExp","partFormatters","token","partParserKeys","key","find","part","dateStr","dateParts","dtParts","m","origDate","fn","parseDate","toValue","parser","formatDate","dateObj","toDisplay","formatter","range","createRange","parseHTML","createContextualFragment","getParent","parentElement","parentNode","ShadowRoot","host","isActiveElement","getRootNode","activeElement","hideElement","style","display","dataset","styleDisplay","showElement","emptyChildNodes","firstChild","removeChild","replaceChildNodes","newChildNodes","DocumentFragment","appendChild","node","listenerRegistry","WeakMap","removeEventListener","EventTarget","registerListeners","keyObj","listeners","registered","get","set","listener","unregisterListeners","delete","Event","composedPath","getComposedPath","path","parent","defaultView","findFromPath","criteria","currentTarget","rest","findElementInEventPath","ev","selector","Element","matches","locales","en","daysMin","clear","titleFormat","defaultOptions","autohide","beforeShowDay","beforeShowDecade","beforeShowMonth","beforeShowYear","calendarWeeks","clearBtn","dateDelimiter","datesDisabled","daysOfWeekDisabled","daysOfWeekHighlighted","defaultViewDate","disableTouchKeyboard","language","maxDate","maxNumberOfDates","maxView","minDate","nextArrow","orientation","pickLevel","prevArrow","showDaysOfWeek","showOnClick","showOnFocus","startView","title","todayBtn","todayBtnMode","todayHighlight","updateOnBlur","defaultLang","defaultFormat","defaultWeekStart","sanitizeDOW","dow","calcEndOfWeek","startOfWeek","validateDate","origValue","validateViewId","viewId","processOptions","datepicker","inOpts","assign","config","constructor","rangeSideIndex","lang","origLocale","weekEnd","hasToDisplay","hasToValue","validFormatString","test","newPickLevel","minDt","maxDt","defaultMinDt","dates","dt","viewDate","wkStart","Number","multidate","String","newMaxView","newStartView","childNodes","x","y","pickerTemplate","daysTemplate","calendarWeeksTemplate","View","picker","element","selected","init","isMinView","id","updateFocus","updateSelection","current","result","beforeShow","classes","classList","add","extraClasses","content","DaysView","super","cellClass","onConstruction","inner","grid","lastChild","updateDOW","dayNames","switchLabelFormat","weeksElem","weeks","insertBefore","Array","children","textContent","viewYear","viewMonth","firstOfMonth","start","first","last","focused","rangepicker","switchLabel","setViewSwitchLabel","setPrevBtnDisabled","setNextBtnDisabled","rangeStart","rangeEnd","performBeforeHook","querySelectorAll","computeMonthRange","thisYear","startY","startM","endY","endM","MonthsView","data-month","ix","monthNames","minYear","minMonth","minDateObj","maxYear","maxMonth","maxDateObj","yrOutOfRange","isMinYear","isMaxYear","toTitleCase","word","ch","toUpperCase","YearsView","navStep","step","beforeShowOption","triggerDatepickerEvent","detail","currentView","dispatchEvent","CustomEvent","goToPrevOrNext","direction","newViewDate","changeFocus","render","switchView","changeView","unfocus","revert","refresh","goToSelectedMonthOrYear","selection","onClickTodayBtn","currentDate","onClickClearBtn","onClickViewSwitch","onClickPrevBtn","onClickNextBtn","onClickView","contains","onMousedownPicker","preventDefault","orientClasses","toPx","processPickerOptions","controls","prevBtn","cloneNode","nextBtn","computeResetViewDate","setViewDate","oldViewDate","getTextDirection","getComputedStyle","findScrollParents","overflow","Picker","template","buttonClass","header","main","footer","firstElementChild","viewSwitch","lastElementChild","elementClass","inline","bind","views","container","inputField","after","view","active","inputDirection","dir","visiblity","place","blur","exitEditMode","offsetParent","width","calendarWidth","height","calendarHeight","getBoundingClientRect","left","inputLeft","top","inputTop","right","inputRight","bottom","inputBottom","inputWidth","inputHeight","orientX","orientY","scrollX","scrollY","offsetParentRect","scrollLeft","scrollTop","scrollParent","scrollAreaLeft","scrollAreaTop","clientWidth","scrollAreaRight","clientHeight","scrollAreaBottom","documentElement","scrollParentRect","adjustment","values","labelText","oldView","newView","_renderMethod","replaceChild","quickRender","renderMethod","findNextAvailableOne","addFn","increase","testFn","moveByArrowKey","vertical","ctrlKey","metaKey","onKeydown","show","editMode","shiftKey","enterEditMode","onFocus","_showing","onMousedown","_active","_clicking","setTimeout","onClickInput","clearTimeout","onPaste","clipboardData","types","onClickOutside","pickerElem","stringifyDates","join","processInputDates","inputDates","origDates","newDates","filter","refreshUI","mode","Datepicker","HTMLElement","querySelector","inputs","indexOf","datepickers","isArray","defineProperty","_options","initialDates","inputDateValues","onMousedownDocument","pickerElement","newOptions","focus","detach","callback","opts","lastArg","pop","forceRender","verdocsFieldDateCss","VerdocsFieldDate","placeholder","fieldFocus","toISOString","fieldBlur","fieldInput","handleBlur","handleFocus","onInput","handleInput","verdocsFieldDropdownCss","VerdocsFieldDropdown","verdocsFieldInitialCss","VerdocsFieldInitial","fullName","alt","verdocsFieldPaymentCss","VerdocsFieldPayment","signed","signatureUrl","_fields","signatureFile","initialFile","focusOrderNumber","focusFieldName","showError","pageNum","fieldIndex","dialogOpened","closeAllErrors","fieldsMap","fieldsForCurrentSigner","fontSize","averageFontWidth","requiredFields","field","recipients","preparer","r","preparedMessage","verdocsFieldRadioButtonCss","VerdocsFieldRadioButton","htmlFor","verdocsFieldSignatureCss","VerdocsFieldSignature","verdocsFieldTextareaCss","VerdocsFieldTextarea","verdocsFieldTextboxCss","VerdocsFieldTextbox","webpackUniversalModuleDefinition","root","factory","module","exports","globalThis","__webpack_modules__","__unused_webpack_module","__w_pdfjs_require__","VerbosityLevel","Util","UnknownErrorException","UnexpectedResponseException","UNSUPPORTED_FEATURES","TextRenderingMode","StreamType","RenderingIntentFlag","PermissionFlag","PasswordResponses","PasswordException","PageActionEventType","OPS","MissingPDFException","LINE_FACTOR","LINE_DESCENT_FACTOR","InvalidPDFException","ImageKind","IDENTITY_MATRIX","FormatError","FontType","FeatureTest","FONT_IDENTITY_MATRIX","DocumentActionEventType","CMapCompressionType","BaseException","AnnotationType","AnnotationStateModelType","AnnotationReviewState","AnnotationReplyType","AnnotationMode","AnnotationMarkedState","AnnotationFlag","AnnotationFieldFlag","AnnotationEditorType","AnnotationEditorPrefix","AnnotationEditorParamsType","AnnotationBorderStyleType","AnnotationActionEventType","AbortException","arrayByteLength","arraysToBytes","assert","bytesToString","createPromiseCapability","createValidAbsoluteUrl","escapeString","getModificationDate","getVerbosityLevel","info","isArrayBuffer","isArrayEqual","isAscii","objectFromMap","objectSize","setVerbosityLevel","shadow","string32","stringToBytes","stringToPDFString","stringToUTF16BEString","stringToUTF8String","unreachable","utf8StringToString","warn","ANY","DISPLAY","PRINT","ANNOTATIONS_FORMS","ANNOTATIONS_STORAGE","ANNOTATIONS_DISABLE","OPLIST","DISABLE","ENABLE","ENABLE_FORMS","ENABLE_STORAGE","NONE","FREETEXT","INK","FREETEXT_SIZE","FREETEXT_COLOR","FREETEXT_OPACITY","INK_COLOR","INK_THICKNESS","INK_OPACITY","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","FILL","STROKE","FILL_STROKE","INVISIBLE","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","FILL_STROKE_MASK","ADD_TO_PATH_FLAG","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","TEXT","LINK","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","HIGHLIGHT","UNDERLINE","SQUIGGLY","STRIKEOUT","STAMP","CARET","POPUP","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","MARKED","REVIEW","UNMARKED","ACCEPTED","REJECTED","CANCELLED","COMPLETED","GROUP","REPLY","HIDDEN","NOZOOM","NOROTATE","NOVIEW","READONLY","LOCKED","TOGGLENOVIEW","LOCKEDCONTENTS","REQUIRED","NOEXPORT","MULTILINE","PASSWORD","NOTOGGLETOOFF","RADIO","PUSHBUTTON","COMBO","EDIT","SORT","FILESELECT","MULTISELECT","DONOTSPELLCHECK","DONOTSCROLL","COMB","RICHTEXT","RADIOSINUNISON","COMMITONSELCHANGE","SOLID","DASHED","BEVELED","INSET","E","X","D","U","Fo","Bl","PO","PC","PV","PI","K","F","V","C","WC","WS","DS","WP","DP","O","UNKNOWN","FLATE","LZW","DCT","JPX","JBIG","A85","AHX","CCF","RLX","TYPE1","TYPE1STANDARD","TYPE1C","CIDFONTTYPE0","CIDFONTTYPE0C","TRUETYPE","CIDFONTTYPE2","TYPE3","OPENTYPE","TYPE0","MMTYPE1","ERRORS","WARNINGS","INFOS","BINARY","STREAM","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","save","restore","transform","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","fill","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotations","endAnnotations","beginAnnotation","endAnnotation","paintJpegXObject","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","unknown","forms","javaScript","signatures","smask","shadingPattern","font","errorTilingPattern","errorExtGState","errorXObject","errorFontLoadType3","errorFontState","errorFontMissing","errorFontTranslate","errorColorSpace","errorOperatorList","errorFontToUnicode","errorFontLoadNative","errorFontBuildPath","errorFontGetPath","errorMarkedContent","errorContentSubStream","NEED_PASSWORD","INCORRECT_PASSWORD","verbosity","level","isInteger","msg","cond","_isValidProtocol","url","protocol","baseUrl","addDefaultProtocol","dots","tryConvertEncoding","ex","absoluteUrl","URL","enumerable","configurable","writable","BaseExceptionClosure","message","code","details","status","bytes","MAX_ARGUMENT_COUNT","fromCharCode","apply","strBuf","i","chunkEnd","chunk","subarray","Uint8Array","charCodeAt","byteLength","resultLength","pos","data","itemLength","create","isLittleEndian","buffer8","view32","Uint32Array","buffer","isEvalSupported","Function","isOffscreenCanvasSupported","OffscreenCanvas","hexNumbers","n","g","b","minMax","temp","m1","m2","p","xt","yt","d","p1","applyTransform","p2","p3","p4","v","transpose","a","c","second","sqrt","sx","sy","rect","rect1","rect2","xLow","xHigh","yLow","yHigh","x0","y0","x1","y1","x2","y2","x3","y3","tvalues","bounds","t","t1","t2","b2ac","sqrtb2ac","abs","j","mt","jlen","PDFStringTranslateTable","encoding","decoder","TextDecoder","fatal","decode","ii","charAt","buf","char","decodeURIComponent","escape","unescape","encodeURIComponent","arr1","arr2","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","capability","isSettled","promise","Promise","resolve","reject","reason","__unused_webpack_exports","isNodeJS","process","versions","nw","electron","StatTimer","RenderingCancelledException","PixelsPerInch","PageViewport","PDFDateString","DOMStandardFontDataFactory","DOMSVGFactory","DOMCanvasFactory","DOMCMapReaderFactory","binarySearchFirstItem","deprecated","getColorValues","getFilenameFromUrl","getPdfFilenameFromUrl","getRGB","getXfaPageViewport","isDataScheme","isPdfFile","isValidFetchUrl","loadScript","_base_factory","_util","SVG_NS","CSS","PDF","BaseCanvasFactory","ownerDocument","_document","canvas","async","fetchData","asTypedArray","baseURI","response","fetch","ok","statusText","arrayBuffer","text","request","XMLHttpRequest","responseType","onreadystatechange","readyState","DONE","responseText","send","BaseCMapReaderFactory","compressionType","isCompressed","then","cMapData","BaseStandardFontDataFactory","BaseSVGFactory","createElementNS","viewBox","scale","rotation","offsetX","offsetY","dontFlip","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","topLeft","bottomRight","applyInverseTransform","trim","substring","filename","anchor","query","end","lastIndexOf","defaultFilename","reURI","reFilename","splitURI","exec","suggestedFilename","started","times","now","outBuf","longest","duration","padEnd","removeScriptElement","script","onload","evt","onerror","head","pdfDateStringRegex","input","hour","minute","universalTimeRelation","offsetHour","offsetMinute","UTC","xfaPage","color","colorRGB","colors","span","visibility","computedColor","condition","minIndex","maxIndex","currentIndex","currentItem","_createCanvas","context","getContext","canvasAndContext","_fetchData","catch","skipDimensions","svg","_createSVG","build","RenderTask","PDFWorkerUtil","PDFWorker","PDFPageProxy","PDFDocumentProxy","PDFDocumentLoadingTask","PDFDataRangeTransport","LoopbackPort","DefaultStandardFontDataFactory","DefaultCanvasFactory","DefaultCMapReaderFactory","getDocument","setPDFNetworkStreamFactory","version","_annotation_storage","_display_utils","_font_loader","_canvas","_worker_options","_is_node","_message_handler","_metadata","_optional_content_config","_transport_stream","_xfa_text","DEFAULT_RANGE_CHUNK_SIZE","RENDERING_CANCELLED_TIMEOUT","NodeCanvasFactory","NodeCMapReaderFactory","NodeStandardFontDataFactory","createPDFNetworkStream","pdfNetworkStreamFactory","task","source","params","rangeTransport","worker","location","href","Buffer","CMapReaderFactory","StandardFontDataFactory","ignoreErrors","stopAtErrors","fontExtraProperties","pdfBug","enableXfa","rangeChunkSize","docBaseUrl","maxImageSize","cMapUrl","standardFontDataUrl","useWorkerFetch","disableFontFace","useSystemFonts","disableRange","disableStream","disableAutoFetch","workerParams","port","GlobalWorkerOptions","workerPort","fromPort","_worker","docId","destroyed","workerIdPromise","_fetchDocument","networkStreamPromise","networkStream","PDFDataTransportStream","initialData","progressiveDone","contentDispositionFilename","httpHeaders","withCredentials","all","workerId","messageHandler","MessageHandler","transport","WorkerTransport","_transport","_capability","pdfDataRangeTransport","sendWithPromise","apiVersion","password","onPassword","onProgress","onUnsupportedFeature","destroy","_rangeListeners","_progressListeners","_progressiveReadListeners","_progressiveDoneListeners","_readyCapability","begin","loaded","total","pdfInfo","_pdfInfo","fingerprints","stats","streamTypes","fontTypes","annotationStorage","numPages","isPureXfa","_htmlForXfa","allXfaHtml","pageNumber","getPage","getPageIndex","getDestinations","getDestination","getPageLabels","getPageLayout","getPageMode","getViewerPreferences","getOpenAction","getAttachments","getJavaScript","getDocJSActions","getOutline","getOptionalContentConfig","getPermissions","getMetadata","getMarkInfo","getData","downloadInfoCapability","keepLoadedFonts","startCleanup","loadingTask","loadingParams","size","saveDocument","getFieldObjects","hasJSActions","getCalculationOrderIds","pageIndex","pageInfo","_pageIndex","_pageInfo","_ownerDocument","_stats","_pdfBug","commonObjs","objs","PDFObjects","_bitmaps","Set","cleanupAfterRender","pendingCleanup","_intentStates","Map","_annotationPromises","rotate","userUnit","intent","intentArgs","getRenderingIntent","cacheKey","getAnnotations","renderingIntent","annotations","annotation","titleObj","contentsObj","_jsActionsPromise","getPageJSActions","canvasContext","viewport","annotationMode","imageLayer","canvasFactory","background","optionalContentConfigPromise","annotationCanvasMap","pageColors","printAnnotationStorage","arguments","renderInteractiveForms","includeAnnotationStorage","intentState","streamReaderCancelTimeout","canvasFactoryInstance","intentPrint","displayReadyCapability","operatorList","fnArray","argsArray","lastChunk","separateAnnots","_pumpOperatorList","complete","error","renderTasks","internalRenderTask","_tryCleanup","_abortOperatorList","timeEnd","InternalRenderTask","useRequestAnimationFrame","renderTask","transparency","optionalContentConfig","initializeGraphics","operatorListChanged","opListReadCapability","opListTask","disableCombineTextItems","includeMarkedContent","TEXT_CONTENT_CHUNK_SIZE","sendWithStream","combineTextItems","highWaterMark","getXfa","xfa","XfaText","readableStream","streamTextContent","pump","reader","read","done","styles","getReader","_structTreePromise","getStructTree","waitOn","force","completed","cancel","bitmap","close","resetStats","operatorListChunk","annotationStorageMap","streamReader","_renderPageChunk","curCacheKey","curIntentState","cleanup","_listeners","_deferred","transfers","event","structuredClone","splice","isWorkerDisabled","fallbackWorkerSrc","fakeWorkerId","require","pdfjsFilePath","currentScript","isSameOrigin","otherUrl","base","origin","other","createCDNWrapper","wrapper","createObjectURL","Blob","has","_port","_webWorker","_messageHandler","_initializeFromPort","_initialize","on","Worker","_mainThreadWorkerMessageHandler","workerSrc","terminateEarly","onWorkerError","terminate","_setupFakeWorker","sendTest","testObj","_setupFakeWorkerGlobal","WorkerMessageHandler","workerHandler","setup","pdfjsWorker","loader","mainWorkerMessageHandler","eval","getWorkerSrc","fontLoader","FontLoader","_onUnsupportedFeature","styleElement","_params","cMapPacked","destroyCapability","_passwordCapability","_networkStream","_fullReader","_lastProgress","setupMessageHandler","AnnotationStorage","isOpList","annotationMap","PrintAnnotationStorage","serializable","getHash","page","_destroy","resetModified","terminated","_getFieldObjectsPromise","_hasJSActionsPromise","cancelAllRequests","sink","getFullReader","onPull","enqueue","onCancel","ready","readyReason","headersCapability","fullReader","headersReady","isStreamingSupported","isRangeSupported","contentLength","rangeReader","getRangeReader","_numPages","htmlForXfa","exception","updatePassword","_startRenderPage","exportedData","exportedError","fontRegistry","FontInspector","fontAdded","FontFaceObject","finally","imageData","pageProxy","MAX_IMAGE_SIZE_TO_STORE","freeze","featureId","cachedPromise","gen","results","OptionalContentConfig","metadata","Metadata","cleanupSuccessful","objId","__ensureObj","settled","onContinue","form","WeakSet","operatorListIdx","running","graphicsReadyCallback","graphicsReady","_useRequestAnimationFrame","cancelled","_cancelBound","_continueBound","_continue","_scheduleNextBound","_scheduleNext","_nextBound","_next","StepperManager","stepper","nextBreakPoint","getNextBreakPoint","gfx","CanvasGraphics","beginDrawing","endDrawing","updateOperatorList","requestAnimationFrame","executeOperatorList","_editor","_murmurhash","_storage","_modified","onSetModified","onResetModified","defaultValue","modified","entry","entries","__setModified","print","clone","serialized","AnnotationEditor","serialize","hash","MurmurHash3_64","JSON","stringify","hexdigest","_tools","focusin","focusout","_zIndex","ColorManager","parameters","div","viewportBaseDimensions","isAttachedToDOM","_defaultLineColor","_colorManager","getHexCode","zIndex","setSelected","relatedTarget","closest","isMultipleSelection","commitOrRemove","isEmpty","commit","addToAnnotationStorage","startX","clientX","clientY","dataTransfer","setData","effectAllowed","tx","ty","screenToPageTranslation","parentWidth","parentHeight","setInForeground","getInitialTranslation","translate","bindEvents","isMac","KeyboardManager","platform","button","toggleSelected","pageWidth","pageHeight","pageDimensions","shiftX","shiftY","editor","getNextId","getRectInCurrentCoords","propertiesToUpdate","contentDiv","isEditing","setActiveEditor","CommandManager","AnnotationEditorUIManager","opacityToHex","names","opacity","IdManager","maxSize","cmd","undo","mustExec","overwriteIfSameType","keepUndo","callbacks","allKeys","isMacKey","at","navigator","isWin","altKey","self","__serialize","stopPropagation","ClipboardManager","_colors","rgb","matchMedia","RGB","every","_colorsMapping","makeHexColor","keydown","onEditingAction","onPageChanging","onTextLayerRendered","hasEmptyClipboard","hasSomethingToUndo","hasSomethingToRedo","hasSelectedEditor","selectAll","copy","paste","cut","redo","unselectAll","eventBus","_on","__removeKeyboardManager","_off","layer","getActive","shouldGetKeyboardEvents","_keyboardManager","hasChanged","some","dispatch","__addKeyboardManager","__dispatchUpdateStates","__isEmpty","editorType","__dispatchUpdateUI","defaultPropertiesToUpdate","getId","enable","disable","setEditingState","__disableAll","__enableAll","updateMode","updateParams","updateDefaultParams","editors","unselect","addOrRebuild","addEditor","hasSelection","select","ed","__addEditorToLayer","addCommands","newEditors","deserialize","__selectEditors","SEED","MASK_HIGH","MASK_LOW","seed","h1","h2","blockCounts","tailLength","dataUint32","k1","k2","C1","C2","C1_LOW","C2_LOW","hex1","hex2","BaseFontLoader","nativeFontFaces","nativeFontFace","fonts","rule","getElementsByTagName","styleSheet","sheet","insertRule","cssRules","attached","missingFile","isFontLoadingAPISupported","createNativeFontFace","addNativeFontFace","family","createFontFaceRule","isSyncFontLoadingSupported","_queueLoadingCallback","_prepareFontLoadEvent","hasFonts","_loadTestFont","rules","fontsToLoad","GenericFontLoader","loadingContext","requests","nextRequestId","loadTestFontId","supported","userAgent","completeRequest","otherRequest","shift","getLoadTestFont","atob","int32","spliceString","s","insert","chunk1","chunk2","ctx","called","isFontReady","fillText","getImageData","COMMENT_OFFSET","CFF_CHECKSUM_OFFSET","XXXX_VALUE","checksum","btoa","loadedName","position","fontFamily","translatedData","compiledGlyphs","cssFontInfo","FontFace","css","weight","fontWeight","italicAngle","registerFont","mimetype","character","cmds","jsBuf","_pattern_helper","_image_utils","MIN_FONT_SIZE","MAX_FONT_SIZE","MAX_GROUP_SIZE","EXECUTION_TIME","EXECUTION_STEPS","MAX_SIZE_TO_COMPILE","FULL_CHUNK_HEIGHT","LINEWIDTH_SCALE_FACTOR","mirrorContextOperations","destCtx","_removeMirroring","__originalSave","__originalRestore","__originalRotate","__originalScale","__originalTranslate","__originalTransform","__originalSetTransform","setTransform","__originalResetTransform","resetTransform","__originalClip","__originalMoveTo","__originalLineTo","__originalBezierCurveTo","bezierCurveTo","__originalRect","__originalClosePath","__originalBeginPath","beginPath","ctxSave","ctxRestore","ctxTranslate","ctxScale","ctxTransform","f","ctxSetTransform","ctxResetTransform","ctxRotate","angle","cp1x","cp1y","cp2x","cp2y","addContextCurrentTransform","_transformStack","mozCurrentTransform","_originalSave","_originalRestore","_originalRotate","_originalScale","_originalTranslate","_originalTransform","_originalSetTransform","_originalResetTransform","_transformMatrix","desc","getOwnPropertyDescriptor","getPrototypeOf","_setLineWidth","_getLineWidth","getLineWidth","_","getCurrentTransform","getCurrentTransformInverse","ad_bc","bc_ad","old","prev","cosValue","cos","sinValue","sin","CachedCanvases","cache","trackTransform","canvasEntry","reset","drawImageAtIntegerCoords","srcImg","srcX","srcY","srcW","srcH","destX","destY","destW","destH","tlX","rTlX","tlY","rTlY","brX","rWidth","brY","rHeight","sign","drawImage","scaleX","hypot","scaleY","compileType3Glyph","imgData","POINT_TO_PROCESS_LIMIT","POINT_TYPES","width1","points","j0","lineSize","elem","mask","count","sum","steps","Int32Array","outlines","coords","Path2D","p0","pp","drawOutline","o","l","ll","CanvasExtraState","alphaIsShape","fontSizeScale","textMatrix","textMatrixScale","fontMatrix","leading","lineX","lineY","charSpacing","wordSpacing","textHScale","textRenderingMode","textRise","fillColor","strokeColor","patternFill","fillAlpha","strokeAlpha","lineWidth","activeSMask","transferMaps","startNewPathAndClipBox","clipBox","minX","minY","maxX","maxY","scaleMinMax","box","bezierBoundingBox","updateRectMinMax","pathType","PathType","singularValueDecompose2dScale","xStrokePad","yStrokePad","intersect","getPathBoundingBox","Infinity","putBinaryImageData","ImageData","putImageData","partialChunkHeight","fullChunks","totalChunks","chunkImgData","createImageData","srcPos","destPos","dest","thisChunkHeight","elemsInThisChunk","transferMapRed","transferMapGreen","transferMapBlue","transferMapGray","kind","srcLength","dest32","dest32DataLength","fullSrcDiff","white","black","srcDiff","k","kEnd","kEndUnrolled","srcByte","hasTransferMaps","putBinaryImageMask","applyMaskImageData","copyCtxState","sourceCtx","properties","property","setLineDash","getLineDash","lineDashOffset","resetCtxToDefault","foregroundColor","strokeStyle","fillStyle","fillRule","globalAlpha","lineCap","lineJoin","miterLimit","globalCompositeOperation","composeSMaskBackdrop","r0","g0","b0","alpha","alpha_","composeSMaskAlpha","maskData","layerData","transferMap","composeSMaskLuminosity","genericComposeSMask","maskCtx","layerCtx","subtype","backdrop","layerOffsetX","layerOffsetY","maskOffsetX","maskOffsetY","hasBackdrop","composeFn","PIXELS_TO_PROCESS","chunkSize","ceil","row","chunkHeight","composeSMask","layerBox","layerWidth","layerHeight","getImageSmoothingEnabled","interpolate","fround","actualScale","devicePixelRatio","PDF_TO_CSS_UNITS","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","canvasCtx","stateStack","pendingClip","pendingEOFill","res","xobjs","groupStack","processingType3","baseTransform","baseTransformStack","groupLevel","smaskStack","smaskCounter","tempSMask","suspendedCtx","contentVisible","markedContentStack","cachedCanvases","cachedPatterns","viewportScale","outputScaleX","outputScaleY","backgroundColor","foreground","_cachedScaleForStroking","_cachedGetSinglePixelWidth","_cachedBitmapsMap","fallback","defaultBackgroundColor","fg","bg","isValidDefaultBg","defaultBg","rB","gB","bB","newComp","lumB","selectColor","lumC","fillRect","transparentCanvas","getCanvas","compositeCtx","beginLayout","executionStartIdx","continueCallback","argsArrayLen","chunkOperations","endTime","fnId","breakIt","depObjId","objsPool","inSMaskMode","__restoreInitialState","HTMLCanvasElement","endLayout","img","inverseTransform","widthScale","heightScale","paintWidth","paintHeight","tmpCanvasId","tmpCanvas","tmpCtx","newWidth","newHeight","clearRect","isPatternFill","currentTransform","scaled","maskCanvas","mainKey","withoutTranslation","cachedImage","maskToCanvas","cord1","cord2","normalizeRect","drawnWidth","drawnHeight","fillCanvas","fillCtx","_scaleImage","mozCurrentTransformInverse","imageSmoothingEnabled","inverse","getPattern","limit","dashArray","dashPhase","flatness","states","state","checkSMaskState","beginSMaskMode","endSMaskMode","cacheId","scratchCanvas","dirtyBox","ops","isScalingMatrix","minMaxForBezier","xw","yh","updatePathMinMax","updateCurvePathMinMax","updateScalingPathMinMax","setCurrentPoint","consumePath","rescaleAndStroke","getClippedPathBoundingBox","needRestore","paths","pendingTextPaths","addToPath","spacing","fontRefName","fontObj","fontDirection","isType3Font","bold","italic","typeface","fallbackName","browserFontSize","rise","patternTransform","fillStrokeMode","isAddToPathSet","getPathGenerator","strokeText","isFontSubpixelAAEnabled","glyphs","showType3Text","glyphsLength","spacingDir","defaultVMetrics","widthAdvanceScale","simpleFillText","pattern","getSinglePixelWidth","glyph","restoreNeeded","isSpace","fontChar","accent","scaledX","scaledY","vmetric","vx","vy","remeasure","measuredWidth","measureText","characterScaleX","isInFont","paintChar","scaledAccentX","scaledAccentY","charWidth","compose","isTextInvisible","spacingLength","charProcOperatorList","operatorListId","transformed","xWidth","yWidth","llx","lly","urx","ury","IR","canvasGraphicsFactory","createCanvasGraphics","TilingPattern","_getPattern","getColorN_Pattern","matrix","getShadingPattern","SHADING","inv","bl","br","ul","ur","bbox","group","currentCtx","isolated","knockout","getAxialAlignedBoundingBox","canvasBounds","groupCtx","startTransformInverse","currentMtx","hasOwnCanvas","canvasWidth","canvasHeight","annotationCanvas","savedCtx","getObject","compiled","_createMaskCanvas","skewX","skewY","positions","trans","images","image","w","imgToPaint","getCanvasPosition","appendImage","tag","visible","isVisible","isContentVisible","isEmptyClip","updateClipFromPath","absDet","normX","normY","scaledXLineWidth","scaledYLineWidth","baseArea","saveRestore","getScaleForStroking","savedMatrix","savedDashes","savedDashOffset","op","applyBoundingBox","region","BaseShadingPattern","RadialAxialShadingPattern","_type","_bbox","_colorStops","_p0","_p1","_r0","_r1","grad","createLinearGradient","createRadialGradient","colorStop","addColorStop","owner","ownerBBox","_createGradient","createPattern","domMatrix","DOMMatrix","drawTriangle","c1","c2","c3","rowSize","tmp","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","xa","car","cag","cab","xb","cbr","cbg","cbb","x1_","x2_","drawFigure","figure","ps","cs","verticesPerRow","rows","cols","q","MeshShadingPattern","_coords","_figures","_bounds","_background","combinedScale","EXPECTED_SCALE","MAX_PATTERN_SIZE","BORDER_SIZE","boundsWidth","boundsHeight","paddedWidth","paddedHeight","matrixScale","temporaryPatternCanvas","_createMeshCanvas","DummyShadingPattern","PaintType","COLORED","UNCOLORED","xstep","ystep","paintType","tilingType","curMatrixScale","dimx","getSizeAndScale","dimy","graphics","setFillAndStrokeStyleToContext","adjustedX0","adjustedY0","adjustedX1","adjustedY1","clipBbox","realOutputSize","bboxWidth","bboxHeight","cssColor","createPatternCanvas","inverseDecode","opaque","zeroMapping","oneMapping","widthInSource","widthRemainder","CallbackKind","DATA","ERROR","StreamKind","CANCEL","CANCEL_COMPLETE","CLOSE","ENQUEUE","PULL","PULL_COMPLETE","START_COMPLETE","wrapReason","sourceName","targetName","comObj","callbackId","streamId","streamSinks","streamControllers","callbackCapabilities","actionHandler","_onComObjOnMessage","stream","_processStreamMessage","action","cbSourceName","cbTargetName","postMessage","_createStreamSink","actionName","handler","ah","queueingStrategy","ReadableStream","controller","startCapability","startCall","pullCall","cancelCall","isClosed","desiredSize","pull","pullCapability","cancelCapability","streamSink","isCancelled","lastDesiredSize","sinkCapability","success","streamController","_deleteStreamController","allSettled","parsedData","rawData","INTERNAL","Symbol","OptionalContentGroup","internal","creator","groups","baseState","_setVisible","off","array","operator","__evaluateVisibilityExpression","expression","policy","ids","hasInitialVisibility","_queuedChunks","_progressiveDone","_contentDispositionFilename","_pdfDataRangeTransport","_isStreamingSupported","_isRangeSupported","_contentLength","_fullRequestReader","_rangeReaders","addRangeListener","_onReceiveData","addProgressListener","_onProgress","addProgressiveReadListener","addProgressiveDoneListener","_onProgressiveDone","transportReady","_enqueue","found","_begin","_progressiveDataLength","_loaded","firstReader","queuedChunks","PDFDataTransportStreamReader","PDFDataTransportStreamRangeReader","requestDataRange","abort","_stream","_done","_filename","_requests","_headersReady","requestCapability","_end","_queuedChunk","requestsCapability","_removeRangeReader","output","walk","shouldBuildText","child","fs","require$$0","readFile","Canvas","require$$1","createCanvas","AnnotationEditorLayer","_freetext","_ink","pointerup","pointerdown","_initialized","FreeTextEditor","initialize","l10n","InkEditor","uiManager","registerEditorTypes","addLayer","textLayerElements","textLayer","getElementsByClassName","textChildren","sort","__compareElementPositions","__hasTextLayer","updateToolbar","getMode","__cleanup","addInkEditorIfNeeded","disableClick","enableClick","isCommitting","setInBackground","__createAndAddNewEditor","pointerEvents","enableEditing","disableEditing","currentActive","removePointerInTextLayer","removeEditor","removeKey","focusMainContainer","attach","e1","e2","centerX1","centerX2","addPointerInTextLayer","owns","getAttribute","getIdForTextLayer","hasChildNodes","before","__changeParent","moveDivInDOM","onceAdded","setValue","needsToBeRebuilt","rebuild","annotationType","__createNewEditor","isSelected","getEditor","dropEffect","endX","removeLayer","setDimensions","getEditors","scaleFactor","pageLLx","pageLLy","pageURx","pageURy","flipOrientation","widthStr","heightStr","editorDivBlur","editorDivFocus","editorDivKeydown","_defaultColor","_defaultFontSize","_l10nPromise","_internalPadding","parseFloat","getPropertyValue","__updateFontSize","__updateColor","setFontsize","editorDiv","__setEditorDimensions","savedFontsize","savedColor","isInEditMode","enableEditMode","overlayDiv","contentEditable","draggable","disableEditMode","innerText","divs","nodeName","addUndoableEditor","__extractText","trimEnd","baseX","baseY","setAt","line","padding","getRect","convert","_pdfjsFitCurve","fitCurve","RESIZER_SIZE","canvasPointermove","canvasPointerleave","canvasPointerup","canvasPointerdown","thickness","bezierPath2D","currentPath","translationX","translationY","_defaultThickness","_defaultOpacity","__updateThickness","__updateOpacity","savedThickness","__fitToContent","__redraw","savedOpacity","__createCanvas","__createObserver","__setCanvasDims","disconnect","__setStroke","lastX","lastY","bezier","xy","path2D","__buildPath2D","__updateTransform","__startDrawing","__draw","__endDrawing","__stopDrawing","ResizeObserver","contentRect","observe","__getInitialBBox","setDims","__setMinDims","roundedWidth","roundedHeight","__setScaleFactor","__getPadding","scaleFactorW","scaleFactorH","control1","control2","NUMBER_OF_POINTS_ON_BEZIER_CURVE","p10","p11","p20","p21","p30","p31","p40","p41","__extractPointsOnBezier","__isAlmostFlat","q10","q11","q20","q21","q30","q31","tol","ax","ay","bx","by","xMin","xMax","yMin","yMax","firstTime","__getBbox","prevTranslationX","prevTranslationY","unscaledPadding","minHeight","minWidth","__serializePaths","maxError","progressCallback","TypeError","point","len","leftTangent","createTangent","rightTangent","fitCubic","MaxIterations","bezCurve","u","uPrime","prevErr","splitPoint","prevSplit","centerVector","toCenterTangent","fromCenterTangent","beziers","dist","maths","vectorLen","subtract","addArrays","mulItems","chordLengthParameterize","generateAndReport","reparameterize","errChange","normalize","concat","paramsOrig","paramsPrime","generateBezier","computeMaxError","bez","maxErr","maxPoint","A","det_C0_C1","det_C0_X","det_X_C1","alpha_l","alpha_r","epsilon","segLength","ux","firstPoint","lastPoint","zeros_Xx2x2","dot","newtonRaphsonRootFind","qprime","numerator","mulMatrix","denominator","squareItems","qprimeprime","currU","prevU","prevP","maxDist","t_distMap","mapTtoRelativeDistances","find_t","B_parts","B_t_curr","B_t_dist","B_t_prev","sumLen","param","lenMax","lenMin","tMax","tMin","pointA","pointB","zs","multiplier","addition","divisor","divItems","ctrlPoly","pA","pB","pC","pD","AnnotationLayer","_scripting_utils","_xfa_layer","DEFAULT_TAB_INDEX","DEFAULT_FONT_SIZE","GetElementsByNameSet","getRectDims","AnnotationElementFactory","LinkAnnotationElement","TextAnnotationElement","fieldType","TextWidgetAnnotationElement","radioButton","RadioButtonWidgetAnnotationElement","checkBox","CheckboxWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","WidgetAnnotationElement","PopupAnnotationElement","FreeTextAnnotationElement","LineAnnotationElement","SquareAnnotationElement","CircleAnnotationElement","PolylineAnnotationElement","CaretAnnotationElement","InkAnnotationElement","PolygonAnnotationElement","HighlightAnnotationElement","UnderlineAnnotationElement","SquigglyAnnotationElement","StrikeOutAnnotationElement","StampAnnotationElement","FileAttachmentAnnotationElement","AnnotationElement","isRenderable","ignoreBorder","createQuadrilaterals","linkService","downloadManager","imageResourcesPath","renderForms","svgFactory","enableScripting","_fieldObjects","fieldObjects","_mouseState","mouseState","_createContainer","quadrilaterals","_createQuadrilaterals","borderStyle","borderWidth","horizontalRadius","horizontalCornerRadius","verticalRadius","verticalCornerRadius","radius","borderRadius","borderBottomStyle","borderColor","setRotation","elementWidth","elementHeight","_commonActions","setColor","jsName","styleName","ColorConverters","hidden","preventScroll","userName","readonly","_setRequired","bgColor","fgColor","textColor","actions","jsEvent","commonActions","storedData","getRawValue","quadPoints","savedRect","quadPoint","trigger","popupElement","PopupElement","modificationDate","richText","hideWrapper","popup","quadrilateral","skipId","fields","fieldObj","exportValues","exportValue","domElement","getElementsByName","isTooltipOnly","link","isBound","addLinkAttributes","newWindow","_bindNamedAction","_bindLink","Action","_bindJSAction","resetForm","_bindResetFormAction","_renderQuadrilaterals","linkElement","destination","getDestinationHash","onclick","goToDestination","getAnchorUrl","executeNamedAction","otherClickAction","resetFormFields","refs","resetFormRefs","include","allFields","fieldIds","fieldName","storage","allIds","hasPopup","l10nId","l10nArgs","_createPopup","alternativeText","baseName","eventName","valueGetter","modifier","_getKeyModifier","getter","_setEventListener","TEXT_ALIGNMENT","fontColor","defaultAppearanceData","computedFontSize","multiLine","numberOfLines","lineHeight","textAlignment","textAlign","isRequired","hasAppearance","fieldValue","keyInStorage","_getElementsByName","getValue","formattedValue","elementData","userValue","valueOnFocus","doNotScroll","overflowY","overflowX","readOnly","setPropertyOnSiblings","defaultFieldValue","blurListener","setSelectionRange","selRange","_dispatchEventFromSandbox","commitKey","willCommit","selStart","selectionStart","selEnd","selectionEnd","_blurListener","isDown","Keystroke","inputType","change","_setEventListeners","maxLen","maxLength","comb","fieldWidth","combWidth","letterSpacing","verticalAlign","_setTextStyle","_setBackgroundColor","_setDefaultPropertiesFromJS","checkbox","curChecked","buttonValue","radio","pdfButtonValue","selectElement","addAnEmptyEntry","combo","multiSelect","multiple","optionElement","displayValue","removeEmptyEntry","noneOptionElement","prepend","isExport","selectedIndex","getItems","selectChild","indices","editable","changeEx","keyDown","IGNORE_TYPES","parentType","parentId","parentElements","parentRect","popupLeft","popupTop","pinned","BACKGROUND_ENLIGHT","dateObject","toDateObject","toLocaleDateString","toLocaleTimeString","XfaLayer","xfaHtml","contents","_formatContents","_toggle","_show","_hide","lines","createTextNode","pin","unpin","lineCoordinates","square","circle","containerClassName","svgElementName","coordinate","vertices","polyline","inkList","inkLists","file","_download","openOrDownloadData","sortedAnnotations","popupAnnotations","rendered","renderedElement","replaceWith","makeColorComp","G","R","B","components","CMYK_RGB","RGB_HTML","xfaOn","xfaOff","isHTMLAnchorElement","HTMLAnchorElement","dataId","setupStorage","rootHtml","setAttributes","stack","rootDiv","textDivs","childHtml","xmlns","TextLayerRenderTask","renderTextLayer","MAX_TEXT_DIVS_TO_RENDER","DEFAULT_FONT_ASCENT","ascentCache","AllWhitespaceRegexp","getAscent","cachedAscent","metrics","ascent","fontBoundingBoxAscent","descent","fontBoundingBoxDescent","ratio","pixels","appendText","geom","textDiv","textDivProperties","_enhanceTextSelection","hasText","hasEOL","originalTransform","paddingBottom","paddingLeft","paddingRight","paddingTop","_textDivs","_viewport","atan2","fontName","fontHeight","fontAscent","_fontInspectorEnabled","shouldScaleText","absScaleX","absScaleY","_textDivProperties","_textContentStream","_layoutText","angleCos","angleSin","divWidth","divHeight","_canceled","textDivsLength","_renderingDone","findPositiveMin","ts","expand","expanded","expandBounds","divProperties","Float64Array","jj","boxScale","boxes","x1New","x2New","expandBoundsLTR","fakeBoundary","horizon","boundary","horizonPart","affectedBoundary","maxXNew","xNew","changedHorizon","lastBoundary","useBoundary","unshift","used","textContentStream","textContentItemsStr","enhanceTextSelection","_textContent","_container","_textContentItemsStr","_reader","_layoutTextLastFontSize","_layoutTextLastFontFamily","_layoutTextCtx","_renderTimer","_devicePixelRatio","styleCache","timeout","textItems","textStyles","_processItems","expandDivs","transformBuf","paddingBuf","divProps","renderParameters","_render","SVGGraphics","SVG_DEFAULTS","fontStyle","XML_NS","XLINK_NS","contentType","forceDataSchema","digits","b1","b2","b3","d1","d2","d3","d4","convertImgDataToPng","PNG_HEADER","CHUNK_WRAPPER_SIZE","crcTable","crc32","crc","writePngChunk","adler32","deflateSync","literals","deflateSyncUncompressed","require$$2","maxBlockLength","deflateBlocks","idat","pi","adler","encode","isMask","bitDepth","colorType","offsetLiterals","offsetBytes","ihdr","pngLength","SVGExtraState","dependencies","activeClipUrl","clipGroup","maskId","opListToTree","opList","opTree","opListElement","pf","toFixed","pm","acos","clipCount","maskCount","shadingCount","transformMatrix","transformStack","extraStack","embedFonts","embeddedFonts","cssStyle","_operatorIdMapping","tgrp","executeOpTree","svgElement","loadDependencies","convertOpList","operatorIdMapping","opTreeElement","lineMatrix","xcoords","ycoords","tspan","setAttributeNS","txtElement","txtgrp","lineWidthScale","_setStrokeAttributes","_ensureTransformGroup","defs","addFontStyle","_makeColorN_Pattern","_makeShadingPattern","_makeTilingPattern","tilingId","tx0","ty0","tx1","ty1","xscale","yscale","txstep","tystep","tiling","shadingId","colorStops","gradient","point0","point1","focalPoint","circlePoint","focalRadius","circleRadius","stop","getAttributeNS","clipId","clipPath","clipElement","setStrokeAlpha","setFillAlpha","imgSrc","cliprect","imgEl","definitions","rootGroup","_ensureClipGroup","PDFNodeStream","_network_utils","http","require$$3","https","require$$4","require$$5","fileUriRegex","parseUrl","sourceUrl","parsedUrl","parse","isHttp","isFsUrl","_rangeRequestReaders","PDFNodeStreamFsFullReader","PDFNodeStreamFullReader","PDFNodeStreamFsRangeReader","PDFNodeStreamRangeReader","BaseFullReader","_url","_storedError","_disableRange","_rangeChunkSize","_readableStream","_readCapability","_headersCapability","_error","BaseRangeReader","createRequestOptions","headers","auth","hostname","method","handleResponse","statusCode","_setReadableStream","getResponseHeader","allowRangeRequests","suggestedLength","validateRangeRequestCapabilities","extractFilenameFromHeader","_request","_httpHeaders","Range","lstat","stat","createReadStream","createResponseStatusError","validateResponseStatus","_content_disposition","returnValues","contentEncoding","contentDisposition","getFilenameFromContentDispositionHeader","needsEncodingFixup","toParamRegExp","rfc2616unquote","rfc5987decode","rfc2047decode","fixupEncoding","rfc2231getparam","attributePattern","flags","textdecode","contentDispositionStr","iter","quot","quotindex","extvalue","encodingend","langvalue","charset","hex","PDFNetworkStream","OK_RESPONSE","PARTIAL_CONTENT_RESPONSE","getArrayBuffer","xhr","NetworkManager","getXhr","NetworkManager_getXhr","currXhrId","pendingRequests","xhrId","pendingRequest","setRequestHeader","expectedStatus","onError","onStateChange","onprogress","onHeadersReceived","onDone","xhrStatus","ok_response_on_range_request","rangeHeader","_source","_manager","PDFNetworkStreamFullRequestReader","PDFNetworkStreamRangeRequestReader","onClosed","_onRangeRequestReaderClosed","manager","_onHeadersReceived","_onDone","_onError","_fullRequestId","requestFull","_headersReceivedCapability","_cachedChunks","fullRequestXhrId","fullRequestXhr","getRequestXhr","abortRequest","lengthComputable","isPendingRequest","_requestId","requestRange","_close","PDFFetchStream","createFetchOptions","abortController","signal","credentials","redirect","createHeaders","Headers","PDFFetchStreamReader","PDFFetchStreamRangeReader","_withCredentials","AbortController","_abortController","_headers","__webpack_module_cache__","moduleId","cachedModule","__webpack_exports__","_annotation_editor_layer","_annotation_layer","_api","_svg","_text_layer","integerSequence","verdocsViewCss","CANVAS_MARGIN","PDF_WORKER_URL","PDFJSversion","CMAPS_URL","pdf","VerdocsView","fingerprint","endpoint","VerdocsEndpoint","getDefault","loadProgress","pagesRendered","newValue","oldValue","loadAndRender","pageNumbersToRender","pdfDocument","pageX0","pageY0","pageX1","pageY1","getViewport","pdfContainer","previousSibling","canvasTop","canvasBottom","pageDetails","originalWidth","isRotated","originalHeight","xRatio","yRatio","canvasLeft","canvasRight","eventData","pages","numRendered","canvasContainer","pageRendered","documentRendered","getElementById","progress","getToken","Authorization","renderPages"],"mappings":"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","sourcesContent":["@import '../../../theme.scss';\n\nverdocs-dropdown {\n font-family: $primary-font;\n display: block;\n\n .arrow {\n width: 32px;\n height: 26px;\n background: #fff;\n cursor: pointer;\n border-radius: 4px;\n align-items: center;\n display: inline-flex;\n border: 1px solid $light-border-color;\n justify-content: center;\n }\n\n .arrow svg {\n fill: $primary-color;\n transition: 0.3s;\n }\n\n .items {\n width: 200px;\n display: none;\n z-index: 10000;\n border-radius: 5px;\n background: $medium-bg;\n border: 1px solid $item-border-color;\n }\n\n .items[data-show] {\n display: block;\n }\n\n .option {\n width: 100%;\n color: #fff;\n border: none;\n display: block;\n text-align: left;\n background: none;\n padding: 10px 20px;\n }\n\n .option:hover {\n cursor: pointer;\n background: $primary-color;\n }\n\n .option[disabled] {\n color: $light-disabled-color;\n }\n\n .option[disabled]:hover {\n color: $light-disabled-color;\n cursor: inherit;\n background: transparent;\n }\n\n &.open {\n .items {\n display: block;\n }\n\n .arrow {\n background: $secondary-color;\n border: 1px solid $border-color;\n }\n\n .arrow svg {\n transform: scaleY(-1);\n fill: #fff;\n }\n }\n}\n","import {Host} from '@stencil/core';\nimport {createPopper, Instance} from '@popperjs/core';\nimport {Component, Prop, State, h, Event, EventEmitter} from '@stencil/core';\nimport SortDown from './down-arrow.svg';\n\nexport interface IMenuOption {\n label: string;\n id?: any;\n faIcon?: any;\n disabled?: boolean;\n}\n\n/**\n * Display a drop-down menu button. A menu of the specified options will be displayed when the button is pressed. The menu will be hidden\n * when the button is pressed again, or an option is selected.\n */\n@Component({\n tag: 'verdocs-dropdown',\n styleUrl: 'verdocs-dropdown.scss',\n})\nexport class VerdocsDropdown {\n private dropdownButton?: HTMLButtonElement;\n private dropdownMenu?: HTMLDivElement;\n private popper?: Instance;\n\n /**\n * The menu options to display.\n */\n @Prop() options: IMenuOption[] = [];\n\n /**\n * If set, the component will be open by default. This is primarily intended to be used for testing.\n */\n @Prop() open: boolean;\n\n /**\n * If set, the component will be open by default.\n */\n @State() isOpen: boolean;\n\n /**\n * Event fired when a menu option is clicked.\n * Web Component events need to be \"composed\" to cross the Shadow DOM and be received by parent frameworks.\n */\n @Event({composed: true}) optionSelected: EventEmitter<IMenuOption>;\n\n componentWillLoad() {\n this.isOpen = !!this.open;\n }\n\n componentDidLoad() {\n this.popper = createPopper(this.dropdownButton, this.dropdownMenu, {placement: 'bottom-start', modifiers: [{name: 'offset', options: {offset: [0, 6]}}]});\n }\n\n handleSelectOption(option: IMenuOption) {\n this.isOpen = false;\n this.optionSelected.emit(option);\n this.hide();\n }\n\n // See https://popper.js.org/docs/v2/tutorial/\n // What we're doing here is clearing event listeners when they aren't needed, to increase performance in lists\n showDropdown() {\n this.isOpen = true;\n this.dropdownMenu.setAttribute('data-show', '');\n this.dropdownMenu.removeAttribute('aria-hidden');\n\n this.popper?.setOptions(options => ({\n ...options,\n modifiers: [...options.modifiers, {name: 'eventListeners', enabled: true}],\n }));\n\n this.popper?.update();\n }\n\n handleHideDropdown(e: any) {\n if (e?.target?.localName === 'button' && e?.target?.className === 'arrow') {\n // This event is fired when a menu element is clicked because the button \"loses focus\" then too\n return;\n }\n\n this.hide();\n }\n\n toggleDropdown() {\n if (this.isOpen) {\n this.hide();\n } else {\n this.showDropdown();\n }\n }\n\n hide() {\n this.isOpen = false;\n this.dropdownMenu.removeAttribute('data-show');\n this.dropdownMenu.setAttribute('aria-hidden', 'true');\n this.popper?.setOptions(options => ({\n ...options,\n modifiers: [...options.modifiers, {name: 'eventListeners', enabled: false}],\n }));\n }\n\n render() {\n return (\n <Host class={{storybook: !!window?.['STORYBOOK_ENV'], open: !!this.isOpen}}>\n <button\n class=\"arrow\"\n innerHTML={SortDown}\n aria-label=\"Open Menu\"\n onClick={() => this.toggleDropdown()}\n onBlur={e => this.handleHideDropdown(e)}\n ref={el => (this.dropdownButton = el as HTMLButtonElement)}\n />\n\n <div class=\"items\" aria-hidden={!this.open} ref={el => (this.dropdownMenu = el as HTMLDivElement)}>\n {this.options?.map(option => (\n <button onClick={() => this.handleSelectOption(option)} class=\"option\" disabled={option.disabled}>\n {option.label}\n </button>\n ))}\n </div>\n </Host>\n );\n }\n}\n","@import '../../../theme.scss';\n\nverdocs-field-attachment {\n font-family: $verdocs-primary-font;\n width: 24px;\n height: 24px;\n display: block;\n font-size: 11px;\n background-color: transparent;\n transform-origin: bottom left;\n\n span {\n width: 20px;\n cursor: pointer;\n }\n\n &.required {\n span {\n border: 1px solid $verdocs-red-1;\n }\n }\n\n &.focused {\n animation: verdocs-field-pulse 0.75s 2;\n }\n}\n","import {Component, h, Host, Prop, Event, EventEmitter, Method} from '@stencil/core';\nimport Paperclip from './paperclip.svg';\n\n/**\n * Displays a signature field. Various field types are supported, including traditional Signature and Initials types as well as\n * input types like text and checkbox.\n */\n@Component({\n tag: 'verdocs-field-attachment',\n styleUrl: 'verdocs-field-attachment.scss',\n shadow: false,\n})\nexport class VerdocsFieldAttachment {\n /**\n * Sets the tabIndex of the input element.\n */\n @Prop() order: number = 1;\n\n /**\n * Sets the value of the input element.\n */\n @Prop() value: string = '';\n\n /**\n * If true, the field will be marked required.\n */\n @Prop() required: boolean = false;\n\n /**\n * Sets the disabled attribute of the input element.\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Event fired when the input field value changes. Note that this will only be fired on blur, tab-out, ENTER key press, etc.\n * It is generally the best event to subscribe to than `input` for most cases EXCEPT autocomplete fields that need to see every\n * keypress.\n */\n @Event({composed: true}) fieldChange: EventEmitter<string>;\n\n @Method() async focusField() {\n this.handleShow();\n }\n\n private dialog?: any;\n\n handleShow() {\n this.dialog = document.createElement('verdocs-upload-dialog');\n this.dialog.open = true;\n this.dialog.addEventListener('cancel', () => {\n console.log('cancel');\n this.dialog?.remove();\n });\n document.addEventListener('done', e => {\n console.log('done', e);\n this.dialog?.remove();\n });\n document.body.append(this.dialog);\n }\n\n render() {\n return (\n <Host class={{required: this.required}}>\n <span innerHTML={Paperclip} onClick={() => this.handleShow()} />\n </Host>\n );\n }\n}\n","@import '../../../theme.scss';\n\n// See https://www.kallmanation.com/styling-a-checkbox-with-only-css\nverdocs-field-checkbox {\n font-family: $verdocs-primary-font;\n font-size: 11px;\n background-color: transparent;\n transform-origin: bottom left;\n\n label > input[type='checkbox'] {\n display: none;\n }\n\n label > input[type='checkbox'] + *::before {\n content: '';\n display: block;\n vertical-align: bottom;\n width: 14px;\n height: 14px;\n border-radius: 2px;\n border: 1px solid rgba(0, 0, 0, 0.2);\n flex-shrink: 0;\n }\n\n label > input[type='checkbox']:checked + * {\n color: var(--verdocs-primary-color);\n }\n\n label > input[type='checkbox']:checked + *::before {\n content: '✓';\n color: white;\n text-align: center;\n background: var(--verdocs-primary-color);\n border-color: var(--verdocs-primary-color);\n }\n\n &.required {\n label > input[type='checkbox'] + *::before {\n border: 1px solid var(--verdocs-required-color);\n }\n }\n\n &.hide {\n display: none;\n }\n\n &.focused {\n animation: verdocs-field-pulse 0.75s 2;\n }\n}\n","import {Component, h, Host, Prop, Event, EventEmitter} from '@stencil/core';\n\n/**\n * Displays a signature field. Various field types are supported, including traditional Signature and Initials types as well as\n * input types like text and checkbox.\n */\n@Component({\n tag: 'verdocs-field-checkbox',\n styleUrl: 'verdocs-field-checkbox.scss',\n shadow: false,\n})\nexport class VerdocsFieldCheckbox {\n /**\n * Sets the tabIndex of the input element.\n */\n @Prop() order: number = 1;\n\n /**\n * Sets the value of the input element.\n */\n @Prop() value: boolean = false;\n\n /**\n * If true, the field will be marked required.\n */\n @Prop() required: boolean = false;\n\n /**\n * Sets the disabled attribute of the input element.\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Event fired when the input field value changes. Note that this will only be fired on blur, tab-out, ENTER key press, etc.\n * It is generally the best event to subscribe to than `input` for most cases EXCEPT autocomplete fields that need to see every\n * keypress.\n */\n @Event({composed: true}) fieldChange: EventEmitter<string>;\n\n handleChange(e: any) {\n this.fieldChange.emit(e.target.checked);\n }\n\n render() {\n return (\n <Host class={{required: this.required}}>\n <label>\n <input type=\"checkbox\" tabIndex={this.order} checked={this.value} disabled={this.disabled} required={this.required} onChange={e => this.handleChange(e)} />\n <span />\n </label>\n </Host>\n );\n }\n}\n","export function hasProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nexport function lastItemOf(arr) {\n return arr[arr.length - 1];\n}\n\n// push only the items not included in the array\nexport function pushUnique(arr, ...items) {\n items.forEach((item) => {\n if (arr.includes(item)) {\n return;\n }\n arr.push(item);\n });\n return arr;\n}\n\nexport function stringToArray(str, separator) {\n // convert empty string to an empty array\n return str ? str.split(separator) : [];\n}\n\nexport function isInRange(testVal, min, max) {\n const minOK = min === undefined || testVal >= min;\n const maxOK = max === undefined || testVal <= max;\n return minOK && maxOK;\n}\n\nexport function limitToRange(val, min, max) {\n if (val < min) {\n return min;\n }\n if (val > max) {\n return max;\n }\n return val;\n}\n\nexport function createTagRepeat(tagName, repeat, attributes = {}, index = 0, html = '') {\n const openTagSrc = Object.keys(attributes).reduce((src, attr) => {\n let val = attributes[attr];\n if (typeof val === 'function') {\n val = val(index);\n }\n return `${src} ${attr}=\"${val}\"`;\n }, tagName);\n html += `<${openTagSrc}></${tagName}>`;\n\n const next = index + 1;\n return next < repeat\n ? createTagRepeat(tagName, repeat, attributes, next, html)\n : html;\n}\n\n// Remove the spacing surrounding tags for HTML parser not to create text nodes\n// before/after elements\nexport function optimizeTemplateHTML(html) {\n return html.replace(/>\\s+/g, '>').replace(/\\s+</, '<');\n}\n","export function stripTime(timeValue) {\n return new Date(timeValue).setHours(0, 0, 0, 0);\n}\n\nexport function today() {\n return new Date().setHours(0, 0, 0, 0);\n}\n\n// Get the time value of the start of given date or year, month and day\nexport function dateValue(...args) {\n switch (args.length) {\n case 0:\n return today();\n case 1:\n return stripTime(args[0]);\n }\n\n // use setFullYear() to keep 2-digit year from being mapped to 1900-1999\n const newDate = new Date(0);\n newDate.setFullYear(...args);\n return newDate.setHours(0, 0, 0, 0);\n}\n\nexport function addDays(date, amount) {\n const newDate = new Date(date);\n return newDate.setDate(newDate.getDate() + amount);\n}\n\nexport function addWeeks(date, amount) {\n return addDays(date, amount * 7);\n}\n\nexport function addMonths(date, amount) {\n // If the day of the date is not in the new month, the last day of the new\n // month will be returned. e.g. Jan 31 + 1 month → Feb 28 (not Mar 03)\n const newDate = new Date(date);\n const monthsToSet = newDate.getMonth() + amount;\n let expectedMonth = monthsToSet % 12;\n if (expectedMonth < 0) {\n expectedMonth += 12;\n }\n\n const time = newDate.setMonth(monthsToSet);\n return newDate.getMonth() !== expectedMonth ? newDate.setDate(0) : time;\n}\n\nexport function addYears(date, amount) {\n // If the date is Feb 29 and the new year is not a leap year, Feb 28 of the\n // new year will be returned.\n const newDate = new Date(date);\n const expectedMonth = newDate.getMonth();\n const time = newDate.setFullYear(newDate.getFullYear() + amount);\n return expectedMonth === 1 && newDate.getMonth() === 2 ? newDate.setDate(0) : time;\n}\n\n// Calculate the distance bettwen 2 days of the week\nfunction dayDiff(day, from) {\n return (day - from + 7) % 7;\n}\n\n// Get the date of the specified day of the week of given base date\nexport function dayOfTheWeekOf(baseDate, dayOfWeek, weekStart = 0) {\n const baseDay = new Date(baseDate).getDay();\n return addDays(baseDate, dayDiff(dayOfWeek, weekStart) - dayDiff(baseDay, weekStart));\n}\n\n// Get the ISO week of a date\nexport function getWeek(date) {\n // start of ISO week is Monday\n const thuOfTheWeek = dayOfTheWeekOf(date, 4, 1);\n // 1st week == the week where the 4th of January is in\n const firstThu = dayOfTheWeekOf(new Date(thuOfTheWeek).setMonth(0, 4), 4, 1);\n return Math.round((thuOfTheWeek - firstThu) / 604800000) + 1;\n}\n\n// Get the start year of the period of years that includes given date\n// years: length of the year period\nexport function startOfYearPeriod(date, years) {\n /* @see https://en.wikipedia.org/wiki/Year_zero#ISO_8601 */\n const year = new Date(date).getFullYear();\n return Math.floor(year / years) * years;\n}\n\n// Convert date to the first/last date of the month/year of the date\nexport function regularizeDate(date, timeSpan, useLastDate) {\n if (timeSpan !== 1 && timeSpan !== 2) {\n return date;\n }\n const newDate = new Date(date);\n if (timeSpan === 1) {\n useLastDate\n ? newDate.setMonth(newDate.getMonth() + 1, 0)\n : newDate.setDate(1);\n } else {\n useLastDate\n ? newDate.setFullYear(newDate.getFullYear() + 1, 0, 0)\n : newDate.setMonth(0, 1);\n }\n return newDate.setHours(0, 0, 0, 0);\n}\n","import {stripTime, today} from './date.js';\nimport {lastItemOf} from './utils.js';\n\n// pattern for format parts\nexport const reFormatTokens = /dd?|DD?|mm?|MM?|yy?(?:yy)?/;\n// pattern for non date parts\nexport const reNonDateParts = /[\\s!-/:-@[-`{-~年月日]+/;\n// cache for persed formats\nlet knownFormats = {};\n// parse funtions for date parts\nconst parseFns = {\n y(date, year) {\n return new Date(date).setFullYear(parseInt(year, 10));\n },\n m(date, month, locale) {\n const newDate = new Date(date);\n let monthIndex = parseInt(month, 10) - 1;\n\n if (isNaN(monthIndex)) {\n if (!month) {\n return NaN;\n }\n\n const monthName = month.toLowerCase();\n const compareNames = name => name.toLowerCase().startsWith(monthName);\n // compare with both short and full names because some locales have periods\n // in the short names (not equal to the first X letters of the full names)\n monthIndex = locale.monthsShort.findIndex(compareNames);\n if (monthIndex < 0) {\n monthIndex = locale.months.findIndex(compareNames);\n }\n if (monthIndex < 0) {\n return NaN;\n }\n }\n\n newDate.setMonth(monthIndex);\n return newDate.getMonth() !== normalizeMonth(monthIndex)\n ? newDate.setDate(0)\n : newDate.getTime();\n },\n d(date, day) {\n return new Date(date).setDate(parseInt(day, 10));\n },\n};\n// format functions for date parts\nconst formatFns = {\n d(date) {\n return date.getDate();\n },\n dd(date) {\n return padZero(date.getDate(), 2);\n },\n D(date, locale) {\n return locale.daysShort[date.getDay()];\n },\n DD(date, locale) {\n return locale.days[date.getDay()];\n },\n m(date) {\n return date.getMonth() + 1;\n },\n mm(date) {\n return padZero(date.getMonth() + 1, 2);\n },\n M(date, locale) {\n return locale.monthsShort[date.getMonth()];\n },\n MM(date, locale) {\n return locale.months[date.getMonth()];\n },\n y(date) {\n return date.getFullYear();\n },\n yy(date) {\n return padZero(date.getFullYear(), 2).slice(-2);\n },\n yyyy(date) {\n return padZero(date.getFullYear(), 4);\n },\n};\n\n// get month index in normal range (0 - 11) from any number\nfunction normalizeMonth(monthIndex) {\n return monthIndex > -1 ? monthIndex % 12 : normalizeMonth(monthIndex + 12);\n}\n\nfunction padZero(num, length) {\n return num.toString().padStart(length, '0');\n}\n\nfunction parseFormatString(format) {\n if (typeof format !== 'string') {\n throw new Error(\"Invalid date format.\");\n }\n if (format in knownFormats) {\n return knownFormats[format];\n }\n\n // sprit the format string into parts and seprators\n const separators = format.split(reFormatTokens);\n const parts = format.match(new RegExp(reFormatTokens, 'g'));\n if (separators.length === 0 || !parts) {\n throw new Error(\"Invalid date format.\");\n }\n\n // collect format functions used in the format\n const partFormatters = parts.map(token => formatFns[token]);\n\n // collect parse function keys used in the format\n // iterate over parseFns' keys in order to keep the order of the keys.\n const partParserKeys = Object.keys(parseFns).reduce((keys, key) => {\n const token = parts.find(part => part[0] !== 'D' && part[0].toLowerCase() === key);\n if (token) {\n keys.push(key);\n }\n return keys;\n }, []);\n\n return knownFormats[format] = {\n parser(dateStr, locale) {\n const dateParts = dateStr.split(reNonDateParts).reduce((dtParts, part, index) => {\n if (part.length > 0 && parts[index]) {\n const token = parts[index][0];\n if (token === 'M') {\n dtParts.m = part;\n } else if (token !== 'D') {\n dtParts[token] = part;\n }\n }\n return dtParts;\n }, {});\n\n // iterate over partParserkeys so that the parsing is made in the oder\n // of year, month and day to prevent the day parser from correcting last\n // day of month wrongly\n return partParserKeys.reduce((origDate, key) => {\n const newDate = parseFns[key](origDate, dateParts[key], locale);\n // ingnore the part failed to parse\n return isNaN(newDate) ? origDate : newDate;\n }, today());\n },\n formatter(date, locale) {\n let dateStr = partFormatters.reduce((str, fn, index) => {\n return str += `${separators[index]}${fn(date, locale)}`;\n }, '');\n // separators' length is always parts' length + 1,\n return dateStr += lastItemOf(separators);\n },\n };\n}\n\nexport function parseDate(dateStr, format, locale) {\n if (dateStr instanceof Date || typeof dateStr === 'number') {\n const date = stripTime(dateStr);\n return isNaN(date) ? undefined : date;\n }\n if (!dateStr) {\n return undefined;\n }\n if (dateStr === 'today') {\n return today();\n }\n\n if (format && format.toValue) {\n const date = format.toValue(dateStr, format, locale);\n return isNaN(date) ? undefined : stripTime(date);\n }\n\n return parseFormatString(format).parser(dateStr, locale);\n}\n\nexport function formatDate(date, format, locale) {\n if (isNaN(date) || (!date && date !== 0)) {\n return '';\n }\n\n const dateObj = typeof date === 'number' ? new Date(date) : date;\n\n if (format.toDisplay) {\n return format.toDisplay(dateObj, format, locale);\n }\n\n return parseFormatString(format).formatter(dateObj, locale);\n}\n","const range = document.createRange();\n\nexport function parseHTML(html) {\n return range.createContextualFragment(html);\n}\n\nexport function getParent(el) {\n return el.parentElement\n || (el.parentNode instanceof ShadowRoot ? el.parentNode.host : undefined);\n}\n\nexport function isActiveElement(el) {\n return el.getRootNode().activeElement === el;\n}\n\n// equivalent to jQuery's :visble\nexport function isVisible(el) {\n return !!(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n}\n\nexport function hideElement(el) {\n if (el.style.display === 'none') {\n return;\n }\n // back up the existing display setting in data-style-display\n if (el.style.display) {\n el.dataset.styleDisplay = el.style.display;\n }\n el.style.display = 'none';\n}\n\nexport function showElement(el) {\n if (el.style.display !== 'none') {\n return;\n }\n if (el.dataset.styleDisplay) {\n // restore backed-up dispay property\n el.style.display = el.dataset.styleDisplay;\n delete el.dataset.styleDisplay;\n } else {\n el.style.display = '';\n }\n}\n\nexport function emptyChildNodes(el) {\n if (el.firstChild) {\n el.removeChild(el.firstChild);\n emptyChildNodes(el);\n }\n}\n\nexport function replaceChildNodes(el, newChildNodes) {\n emptyChildNodes(el);\n if (newChildNodes instanceof DocumentFragment) {\n el.appendChild(newChildNodes);\n } else if (typeof newChildNodes === 'string') {\n el.appendChild(parseHTML(newChildNodes));\n } else if (typeof newChildNodes.forEach === 'function') {\n newChildNodes.forEach((node) => {\n el.appendChild(node);\n });\n }\n}\n","const listenerRegistry = new WeakMap();\nconst {addEventListener, removeEventListener} = EventTarget.prototype;\n\n// Register event listeners to a key object\n// listeners: array of listener definitions;\n// - each definition must be a flat array of event target and the arguments\n// used to call addEventListener() on the target\nexport function registerListeners(keyObj, listeners) {\n let registered = listenerRegistry.get(keyObj);\n if (!registered) {\n registered = [];\n listenerRegistry.set(keyObj, registered);\n }\n listeners.forEach((listener) => {\n addEventListener.call(...listener);\n registered.push(listener);\n });\n}\n\nexport function unregisterListeners(keyObj) {\n let listeners = listenerRegistry.get(keyObj);\n if (!listeners) {\n return;\n }\n listeners.forEach((listener) => {\n removeEventListener.call(...listener);\n });\n listenerRegistry.delete(keyObj);\n}\n\n// Event.composedPath() polyfill for Edge\n// based on https://gist.github.com/kleinfreund/e9787d73776c0e3750dcfcdc89f100ec\nif (!Event.prototype.composedPath) {\n const getComposedPath = (node, path = []) => {\n path.push(node);\n\n let parent;\n if (node.parentNode) {\n parent = node.parentNode;\n } else if (node.host) { // ShadowRoot\n parent = node.host;\n } else if (node.defaultView) { // Document\n parent = node.defaultView;\n }\n return parent ? getComposedPath(parent, path) : path;\n };\n\n Event.prototype.composedPath = function () {\n return getComposedPath(this.target);\n };\n}\n\nfunction findFromPath(path, criteria, currentTarget) {\n const [node, ...rest] = path;\n if (criteria(node)) {\n return node;\n }\n if (node === currentTarget || node.tagName === 'HTML' || rest.length === 0) {\n // stop when reaching currentTarget or <html>\n return;\n }\n return findFromPath(rest, criteria, currentTarget);\n}\n\n// Search for the actual target of a delegated event\nexport function findElementInEventPath(ev, selector) {\n const criteria = typeof selector === 'function'\n ? selector\n : el => el instanceof Element && el.matches(selector);\n return findFromPath(ev.composedPath(), criteria, ev.currentTarget);\n}\n","// default locales\nexport const locales = {\n en: {\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n daysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n daysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n monthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n today: \"Today\",\n clear: \"Clear\",\n titleFormat: \"MM y\"\n }\n};\n","// config options updatable by setOptions() and their default values\nconst defaultOptions = {\n autohide: false,\n beforeShowDay: null,\n beforeShowDecade: null,\n beforeShowMonth: null,\n beforeShowYear: null,\n calendarWeeks: false,\n clearBtn: false,\n dateDelimiter: ',',\n datesDisabled: [],\n daysOfWeekDisabled: [],\n daysOfWeekHighlighted: [],\n defaultViewDate: undefined, // placeholder, defaults to today() by the program\n disableTouchKeyboard: false,\n format: 'mm/dd/yyyy',\n language: 'en',\n maxDate: null,\n maxNumberOfDates: 1,\n maxView: 3,\n minDate: null,\n nextArrow: '»',\n orientation: 'auto',\n pickLevel: 0,\n prevArrow: '«',\n showDaysOfWeek: true,\n showOnClick: true,\n showOnFocus: true,\n startView: 0,\n title: '',\n todayBtn: false,\n todayBtnMode: 0,\n todayHighlight: false,\n updateOnBlur: true,\n weekStart: 0,\n};\n\nexport default defaultOptions;\n","import {hasProperty, pushUnique} from '../lib/utils.js';\nimport {dateValue, regularizeDate} from '../lib/date.js';\nimport {reFormatTokens, parseDate} from '../lib/date-format.js';\nimport {parseHTML} from '../lib/dom.js';\nimport defaultOptions from './defaultOptions.js';\n\nconst {\n language: defaultLang,\n format: defaultFormat,\n weekStart: defaultWeekStart,\n} = defaultOptions;\n\n// Reducer function to filter out invalid day-of-week from the input\nfunction sanitizeDOW(dow, day) {\n return dow.length < 6 && day >= 0 && day < 7\n ? pushUnique(dow, day)\n : dow;\n}\n\nfunction calcEndOfWeek(startOfWeek) {\n return (startOfWeek + 6) % 7;\n}\n\n// validate input date. if invalid, fallback to the original value\nfunction validateDate(value, format, locale, origValue) {\n const date = parseDate(value, format, locale);\n return date !== undefined ? date : origValue;\n}\n\n// Validate viewId. if invalid, fallback to the original value\nfunction validateViewId(value, origValue, max = 3) {\n const viewId = parseInt(value, 10);\n return viewId >= 0 && viewId <= max ? viewId : origValue;\n}\n\n// Create Datepicker configuration to set\nexport default function processOptions(options, datepicker) {\n const inOpts = Object.assign({}, options);\n const config = {};\n const locales = datepicker.constructor.locales;\n const rangeSideIndex = datepicker.rangeSideIndex;\n let {\n format,\n language,\n locale,\n maxDate,\n maxView,\n minDate,\n pickLevel,\n startView,\n weekStart,\n } = datepicker.config || {};\n\n if (inOpts.language) {\n let lang;\n if (inOpts.language !== language) {\n if (locales[inOpts.language]) {\n lang = inOpts.language;\n } else {\n // Check if langauge + region tag can fallback to the one without\n // region (e.g. fr-CA → fr)\n lang = inOpts.language.split('-')[0];\n if (locales[lang] === undefined) {\n lang = false;\n }\n }\n }\n delete inOpts.language;\n if (lang) {\n language = config.language = lang;\n\n // update locale as well when updating language\n const origLocale = locale || locales[defaultLang];\n // use default language's properties for the fallback\n locale = Object.assign({\n format: defaultFormat,\n weekStart: defaultWeekStart\n }, locales[defaultLang]);\n if (language !== defaultLang) {\n Object.assign(locale, locales[language]);\n }\n config.locale = locale;\n // if format and/or weekStart are the same as old locale's defaults,\n // update them to new locale's defaults\n if (format === origLocale.format) {\n format = config.format = locale.format;\n }\n if (weekStart === origLocale.weekStart) {\n weekStart = config.weekStart = locale.weekStart;\n config.weekEnd = calcEndOfWeek(locale.weekStart);\n }\n }\n }\n\n if (inOpts.format) {\n const hasToDisplay = typeof inOpts.format.toDisplay === 'function';\n const hasToValue = typeof inOpts.format.toValue === 'function';\n const validFormatString = reFormatTokens.test(inOpts.format);\n if ((hasToDisplay && hasToValue) || validFormatString) {\n format = config.format = inOpts.format;\n }\n delete inOpts.format;\n }\n\n //*** pick level ***//\n let newPickLevel = pickLevel;\n if (inOpts.pickLevel !== undefined) {\n newPickLevel = validateViewId(inOpts.pickLevel, 2);\n delete inOpts.pickLevel;\n }\n if (newPickLevel !== pickLevel) {\n if (newPickLevel > pickLevel) {\n // complement current minDate/madDate so that the existing range will be\n // expanded to fit the new level later\n if (inOpts.minDate === undefined) {\n inOpts.minDate = minDate;\n }\n if (inOpts.maxDate === undefined) {\n inOpts.maxDate = maxDate;\n }\n }\n // complement datesDisabled so that it will be reset later\n if (!inOpts.datesDisabled) {\n inOpts.datesDisabled = [];\n }\n pickLevel = config.pickLevel = newPickLevel;\n }\n\n //*** dates ***//\n // while min and maxDate for \"no limit\" in the options are better to be null\n // (especially when updating), the ones in the config have to be undefined\n // because null is treated as 0 (= unix epoch) when comparing with time value\n let minDt = minDate;\n let maxDt = maxDate;\n if (inOpts.minDate !== undefined) {\n const defaultMinDt = dateValue(0, 0, 1);\n minDt = inOpts.minDate === null\n ? defaultMinDt // set 0000-01-01 to prevent negative values for year\n : validateDate(inOpts.minDate, format, locale, minDt);\n if (minDt !== defaultMinDt) {\n minDt = regularizeDate(minDt, pickLevel, false);\n }\n delete inOpts.minDate;\n }\n if (inOpts.maxDate !== undefined) {\n maxDt = inOpts.maxDate === null\n ? undefined\n : validateDate(inOpts.maxDate, format, locale, maxDt);\n if (maxDt !== undefined) {\n maxDt = regularizeDate(maxDt, pickLevel, true);\n }\n delete inOpts.maxDate;\n }\n if (maxDt < minDt) {\n minDate = config.minDate = maxDt;\n maxDate = config.maxDate = minDt;\n } else {\n if (minDate !== minDt) {\n minDate = config.minDate = minDt;\n }\n if (maxDate !== maxDt) {\n maxDate = config.maxDate = maxDt;\n }\n }\n\n if (inOpts.datesDisabled) {\n config.datesDisabled = inOpts.datesDisabled.reduce((dates, dt) => {\n const date = parseDate(dt, format, locale);\n return date !== undefined\n ? pushUnique(dates, regularizeDate(date, pickLevel, rangeSideIndex))\n : dates;\n }, []);\n delete inOpts.datesDisabled;\n }\n if (inOpts.defaultViewDate !== undefined) {\n const viewDate = parseDate(inOpts.defaultViewDate, format, locale);\n if (viewDate !== undefined) {\n config.defaultViewDate = viewDate;\n }\n delete inOpts.defaultViewDate;\n }\n\n //*** days of week ***//\n if (inOpts.weekStart !== undefined) {\n const wkStart = Number(inOpts.weekStart) % 7;\n if (!isNaN(wkStart)) {\n weekStart = config.weekStart = wkStart;\n config.weekEnd = calcEndOfWeek(wkStart);\n }\n delete inOpts.weekStart;\n }\n if (inOpts.daysOfWeekDisabled) {\n config.daysOfWeekDisabled = inOpts.daysOfWeekDisabled.reduce(sanitizeDOW, []);\n delete inOpts.daysOfWeekDisabled;\n }\n if (inOpts.daysOfWeekHighlighted) {\n config.daysOfWeekHighlighted = inOpts.daysOfWeekHighlighted.reduce(sanitizeDOW, []);\n delete inOpts.daysOfWeekHighlighted;\n }\n\n //*** multi date ***//\n if (inOpts.maxNumberOfDates !== undefined) {\n const maxNumberOfDates = parseInt(inOpts.maxNumberOfDates, 10);\n if (maxNumberOfDates >= 0) {\n config.maxNumberOfDates = maxNumberOfDates;\n config.multidate = maxNumberOfDates !== 1;\n }\n delete inOpts.maxNumberOfDates;\n }\n if (inOpts.dateDelimiter) {\n config.dateDelimiter = String(inOpts.dateDelimiter);\n delete inOpts.dateDelimiter;\n }\n\n //*** view ***//\n let newMaxView = maxView;\n if (inOpts.maxView !== undefined) {\n newMaxView = validateViewId(inOpts.maxView, maxView);\n delete inOpts.maxView;\n }\n // ensure max view >= pick level\n newMaxView = pickLevel > newMaxView ? pickLevel : newMaxView;\n if (newMaxView !== maxView) {\n maxView = config.maxView = newMaxView;\n }\n\n let newStartView = startView;\n if (inOpts.startView !== undefined) {\n newStartView = validateViewId(inOpts.startView, newStartView);\n delete inOpts.startView;\n }\n // ensure pick level <= start view <= max view\n if (newStartView < pickLevel) {\n newStartView = pickLevel;\n } else if (newStartView > maxView) {\n newStartView = maxView;\n }\n if (newStartView !== startView) {\n config.startView = newStartView;\n }\n\n //*** template ***//\n if (inOpts.prevArrow) {\n const prevArrow = parseHTML(inOpts.prevArrow);\n if (prevArrow.childNodes.length > 0) {\n config.prevArrow = prevArrow.childNodes;\n }\n delete inOpts.prevArrow;\n }\n if (inOpts.nextArrow) {\n const nextArrow = parseHTML(inOpts.nextArrow);\n if (nextArrow.childNodes.length > 0) {\n config.nextArrow = nextArrow.childNodes;\n }\n delete inOpts.nextArrow;\n }\n\n //*** misc ***//\n if (inOpts.disableTouchKeyboard !== undefined) {\n config.disableTouchKeyboard = 'ontouchstart' in document && !!inOpts.disableTouchKeyboard;\n delete inOpts.disableTouchKeyboard;\n }\n if (inOpts.orientation) {\n const orientation = inOpts.orientation.toLowerCase().split(/\\s+/g);\n config.orientation = {\n x: orientation.find(x => (x === 'left' || x === 'right')) || 'auto',\n y: orientation.find(y => (y === 'top' || y === 'bottom')) || 'auto',\n };\n delete inOpts.orientation;\n }\n if (inOpts.todayBtnMode !== undefined) {\n switch(inOpts.todayBtnMode) {\n case 0:\n case 1:\n config.todayBtnMode = inOpts.todayBtnMode;\n }\n delete inOpts.todayBtnMode;\n }\n\n //*** copy the rest ***//\n Object.keys(inOpts).forEach((key) => {\n if (inOpts[key] !== undefined && hasProperty(defaultOptions, key)) {\n config[key] = inOpts[key];\n }\n });\n\n return config;\n}\n","import {optimizeTemplateHTML} from '../../lib/utils.js';\n\nconst pickerTemplate = optimizeTemplateHTML(`<div class=\"datepicker\">\n <div class=\"datepicker-picker\">\n <div class=\"datepicker-header\">\n <div class=\"datepicker-title\"></div>\n <div class=\"datepicker-controls\">\n <button type=\"button\" class=\"%buttonClass% prev-btn\"></button>\n <button type=\"button\" class=\"%buttonClass% view-switch\"></button>\n <button type=\"button\" class=\"%buttonClass% next-btn\"></button>\n </div>\n </div>\n <div class=\"datepicker-main\"></div>\n <div class=\"datepicker-footer\">\n <div class=\"datepicker-controls\">\n <button type=\"button\" class=\"%buttonClass% today-btn\"></button>\n <button type=\"button\" class=\"%buttonClass% clear-btn\"></button>\n </div>\n </div>\n </div>\n</div>`);\n\nexport default pickerTemplate;\n","import {createTagRepeat, optimizeTemplateHTML} from '../../lib/utils.js';\n\nconst daysTemplate = optimizeTemplateHTML(`<div class=\"days\">\n <div class=\"days-of-week\">${createTagRepeat('span', 7, {class: 'dow'})}</div>\n <div class=\"datepicker-grid\">${createTagRepeat('span', 42)}</div>\n</div>`);\n\nexport default daysTemplate;\n","import {createTagRepeat, optimizeTemplateHTML} from '../../lib/utils.js';\n\nconst calendarWeeksTemplate = optimizeTemplateHTML(`<div class=\"calendar-weeks\">\n <div class=\"days-of-week\"><span class=\"dow\"></span></div>\n <div class=\"weeks\">${createTagRepeat('span', 6, {class: 'week'})}</div>\n</div>`);\n\nexport default calendarWeeksTemplate;\n","import {pushUnique} from '../../lib/utils.js';\nimport {parseHTML, replaceChildNodes} from '../../lib/dom.js';\n\n// Base class of the view classes\nexport default class View {\n constructor(picker, config) {\n Object.assign(this, config, {\n picker,\n element: parseHTML(`<div class=\"datepicker-view\"></div>`).firstChild,\n selected: [],\n });\n this.init(this.picker.datepicker.config);\n }\n\n init(options) {\n if (options.pickLevel !== undefined) {\n this.isMinView = this.id === options.pickLevel;\n }\n this.setOptions(options);\n this.updateFocus();\n this.updateSelection();\n }\n\n // Execute beforeShow() callback and apply the result to the element\n // args:\n // - current - current value on the iteration on view rendering\n // - timeValue - time value of the date to pass to beforeShow()\n performBeforeHook(el, current, timeValue) {\n let result = this.beforeShow(new Date(timeValue));\n switch (typeof result) {\n case 'boolean':\n result = {enabled: result};\n break;\n case 'string':\n result = {classes: result};\n }\n\n if (result) {\n if (result.enabled === false) {\n el.classList.add('disabled');\n pushUnique(this.disabled, current);\n }\n if (result.classes) {\n const extraClasses = result.classes.split(/\\s+/);\n el.classList.add(...extraClasses);\n if (extraClasses.includes('disabled')) {\n pushUnique(this.disabled, current);\n }\n }\n if (result.content) {\n replaceChildNodes(el, result.content);\n }\n }\n }\n}\n","import {hasProperty, pushUnique} from '../../lib/utils.js';\nimport {today, dateValue, addDays, addWeeks, dayOfTheWeekOf, getWeek} from '../../lib/date.js';\nimport {formatDate} from '../../lib/date-format.js';\nimport {parseHTML, showElement, hideElement} from '../../lib/dom.js';\nimport daysTemplate from '../templates/daysTemplate.js';\nimport calendarWeeksTemplate from '../templates/calendarWeeksTemplate.js';\nimport View from './View.js';\n\nexport default class DaysView extends View {\n constructor(picker) {\n super(picker, {\n id: 0,\n name: 'days',\n cellClass: 'day',\n });\n }\n\n init(options, onConstruction = true) {\n if (onConstruction) {\n const inner = parseHTML(daysTemplate).firstChild;\n this.dow = inner.firstChild;\n this.grid = inner.lastChild;\n this.element.appendChild(inner);\n }\n super.init(options);\n }\n\n setOptions(options) {\n let updateDOW;\n\n if (hasProperty(options, 'minDate')) {\n this.minDate = options.minDate;\n }\n if (hasProperty(options, 'maxDate')) {\n this.maxDate = options.maxDate;\n }\n if (options.datesDisabled) {\n this.datesDisabled = options.datesDisabled;\n }\n if (options.daysOfWeekDisabled) {\n this.daysOfWeekDisabled = options.daysOfWeekDisabled;\n updateDOW = true;\n }\n if (options.daysOfWeekHighlighted) {\n this.daysOfWeekHighlighted = options.daysOfWeekHighlighted;\n }\n if (options.todayHighlight !== undefined) {\n this.todayHighlight = options.todayHighlight;\n }\n if (options.weekStart !== undefined) {\n this.weekStart = options.weekStart;\n this.weekEnd = options.weekEnd;\n updateDOW = true;\n }\n if (options.locale) {\n const locale = this.locale = options.locale;\n this.dayNames = locale.daysMin;\n this.switchLabelFormat = locale.titleFormat;\n updateDOW = true;\n }\n if (options.beforeShowDay !== undefined) {\n this.beforeShow = typeof options.beforeShowDay === 'function'\n ? options.beforeShowDay\n : undefined;\n }\n\n if (options.calendarWeeks !== undefined) {\n if (options.calendarWeeks && !this.calendarWeeks) {\n const weeksElem = parseHTML(calendarWeeksTemplate).firstChild;\n this.calendarWeeks = {\n element: weeksElem,\n dow: weeksElem.firstChild,\n weeks: weeksElem.lastChild,\n };\n this.element.insertBefore(weeksElem, this.element.firstChild);\n } else if (this.calendarWeeks && !options.calendarWeeks) {\n this.element.removeChild(this.calendarWeeks.element);\n this.calendarWeeks = null;\n }\n }\n if (options.showDaysOfWeek !== undefined) {\n if (options.showDaysOfWeek) {\n showElement(this.dow);\n if (this.calendarWeeks) {\n showElement(this.calendarWeeks.dow);\n }\n } else {\n hideElement(this.dow);\n if (this.calendarWeeks) {\n hideElement(this.calendarWeeks.dow);\n }\n }\n }\n\n // update days-of-week when locale, daysOfweekDisabled or weekStart is changed\n if (updateDOW) {\n Array.from(this.dow.children).forEach((el, index) => {\n const dow = (this.weekStart + index) % 7;\n el.textContent = this.dayNames[dow];\n el.className = this.daysOfWeekDisabled.includes(dow) ? 'dow disabled' : 'dow';\n });\n }\n }\n\n // Apply update on the focused date to view's settings\n updateFocus() {\n const viewDate = new Date(this.picker.viewDate);\n const viewYear = viewDate.getFullYear();\n const viewMonth = viewDate.getMonth();\n const firstOfMonth = dateValue(viewYear, viewMonth, 1);\n const start = dayOfTheWeekOf(firstOfMonth, this.weekStart, this.weekStart);\n\n this.first = firstOfMonth;\n this.last = dateValue(viewYear, viewMonth + 1, 0);\n this.start = start;\n this.focused = this.picker.viewDate;\n }\n\n // Apply update on the selected dates to view's settings\n updateSelection() {\n const {dates, rangepicker} = this.picker.datepicker;\n this.selected = dates;\n if (rangepicker) {\n this.range = rangepicker.dates;\n }\n }\n\n // Update the entire view UI\n render() {\n // update today marker on ever render\n this.today = this.todayHighlight ? today() : undefined;\n // refresh disabled dates on every render in order to clear the ones added\n // by beforeShow hook at previous render\n this.disabled = [...this.datesDisabled];\n\n const switchLabel = formatDate(this.focused, this.switchLabelFormat, this.locale);\n this.picker.setViewSwitchLabel(switchLabel);\n this.picker.setPrevBtnDisabled(this.first <= this.minDate);\n this.picker.setNextBtnDisabled(this.last >= this.maxDate);\n\n if (this.calendarWeeks) {\n // start of the UTC week (Monday) of the 1st of the month\n const startOfWeek = dayOfTheWeekOf(this.first, 1, 1);\n Array.from(this.calendarWeeks.weeks.children).forEach((el, index) => {\n el.textContent = getWeek(addWeeks(startOfWeek, index));\n });\n }\n Array.from(this.grid.children).forEach((el, index) => {\n const classList = el.classList;\n const current = addDays(this.start, index);\n const date = new Date(current);\n const day = date.getDay();\n\n el.className = `datepicker-cell ${this.cellClass}`;\n el.dataset.date = current;\n el.textContent = date.getDate();\n\n if (current < this.first) {\n classList.add('prev');\n } else if (current > this.last) {\n classList.add('next');\n }\n if (this.today === current) {\n classList.add('today');\n }\n if (current < this.minDate || current > this.maxDate || this.disabled.includes(current)) {\n classList.add('disabled');\n }\n if (this.daysOfWeekDisabled.includes(day)) {\n classList.add('disabled');\n pushUnique(this.disabled, current);\n }\n if (this.daysOfWeekHighlighted.includes(day)) {\n classList.add('highlighted');\n }\n if (this.range) {\n const [rangeStart, rangeEnd] = this.range;\n if (current > rangeStart && current < rangeEnd) {\n classList.add('range');\n }\n if (current === rangeStart) {\n classList.add('range-start');\n }\n if (current === rangeEnd) {\n classList.add('range-end');\n }\n }\n if (this.selected.includes(current)) {\n classList.add('selected');\n }\n if (current === this.focused) {\n classList.add('focused');\n }\n\n if (this.beforeShow) {\n this.performBeforeHook(el, current, current);\n }\n });\n }\n\n // Update the view UI by applying the changes of selected and focused items\n refresh() {\n const [rangeStart, rangeEnd] = this.range || [];\n this.grid\n .querySelectorAll('.range, .range-start, .range-end, .selected, .focused')\n .forEach((el) => {\n el.classList.remove('range', 'range-start', 'range-end', 'selected', 'focused');\n });\n Array.from(this.grid.children).forEach((el) => {\n const current = Number(el.dataset.date);\n const classList = el.classList;\n if (current > rangeStart && current < rangeEnd) {\n classList.add('range');\n }\n if (current === rangeStart) {\n classList.add('range-start');\n }\n if (current === rangeEnd) {\n classList.add('range-end');\n }\n if (this.selected.includes(current)) {\n classList.add('selected');\n }\n if (current === this.focused) {\n classList.add('focused');\n }\n });\n }\n\n // Update the view UI by applying the change of focused item\n refreshFocus() {\n const index = Math.round((this.focused - this.start) / 86400000);\n this.grid.querySelectorAll('.focused').forEach((el) => {\n el.classList.remove('focused');\n });\n this.grid.children[index].classList.add('focused');\n }\n}\n","import {hasProperty, pushUnique, createTagRepeat} from '../../lib/utils.js';\nimport {dateValue} from '../../lib/date.js';\nimport {parseHTML} from '../../lib/dom.js';\nimport View from './View.js';\n\nfunction computeMonthRange(range, thisYear) {\n if (!range || !range[0] || !range[1]) {\n return;\n }\n\n const [[startY, startM], [endY, endM]] = range;\n if (startY > thisYear || endY < thisYear) {\n return;\n }\n return [\n startY === thisYear ? startM : -1,\n endY === thisYear ? endM : 12,\n ];\n}\n\nexport default class MonthsView extends View {\n constructor(picker) {\n super(picker, {\n id: 1,\n name: 'months',\n cellClass: 'month',\n });\n }\n\n init(options, onConstruction = true) {\n if (onConstruction) {\n this.grid = this.element;\n this.element.classList.add('months', 'datepicker-grid');\n this.grid.appendChild(parseHTML(createTagRepeat('span', 12, {'data-month': ix => ix})));\n }\n super.init(options);\n }\n\n setOptions(options) {\n if (options.locale) {\n this.monthNames = options.locale.monthsShort;\n }\n if (hasProperty(options, 'minDate')) {\n if (options.minDate === undefined) {\n this.minYear = this.minMonth = this.minDate = undefined;\n } else {\n const minDateObj = new Date(options.minDate);\n this.minYear = minDateObj.getFullYear();\n this.minMonth = minDateObj.getMonth();\n this.minDate = minDateObj.setDate(1);\n }\n }\n if (hasProperty(options, 'maxDate')) {\n if (options.maxDate === undefined) {\n this.maxYear = this.maxMonth = this.maxDate = undefined;\n } else {\n const maxDateObj = new Date(options.maxDate);\n this.maxYear = maxDateObj.getFullYear();\n this.maxMonth = maxDateObj.getMonth();\n this.maxDate = dateValue(this.maxYear, this.maxMonth + 1, 0);\n }\n }\n if (this.isMinView) {\n if (options.datesDisabled) {\n this.datesDisabled = options.datesDisabled;\n }\n } else {\n this.datesDisabled = [];\n }\n if (options.beforeShowMonth !== undefined) {\n this.beforeShow = typeof options.beforeShowMonth === 'function'\n ? options.beforeShowMonth\n : undefined;\n }\n }\n\n // Update view's settings to reflect the viewDate set on the picker\n updateFocus() {\n const viewDate = new Date(this.picker.viewDate);\n this.year = viewDate.getFullYear();\n this.focused = viewDate.getMonth();\n }\n\n // Update view's settings to reflect the selected dates\n updateSelection() {\n const {dates, rangepicker} = this.picker.datepicker;\n this.selected = dates.reduce((selected, timeValue) => {\n const date = new Date(timeValue);\n const year = date.getFullYear();\n const month = date.getMonth();\n if (selected[year] === undefined) {\n selected[year] = [month];\n } else {\n pushUnique(selected[year], month);\n }\n return selected;\n }, {});\n if (rangepicker && rangepicker.dates) {\n this.range = rangepicker.dates.map(timeValue => {\n const date = new Date(timeValue);\n return isNaN(date) ? undefined : [date.getFullYear(), date.getMonth()];\n });\n }\n }\n\n // Update the entire view UI\n render() {\n // refresh disabled months on every render in order to clear the ones added\n // by beforeShow hook at previous render\n // this.disabled = [...this.datesDisabled];\n this.disabled = this.datesDisabled.reduce((arr, disabled) => {\n const dt = new Date(disabled);\n if (this.year === dt.getFullYear()) {\n arr.push(dt.getMonth());\n }\n return arr;\n }, []);\n\n this.picker.setViewSwitchLabel(this.year);\n this.picker.setPrevBtnDisabled(this.year <= this.minYear);\n this.picker.setNextBtnDisabled(this.year >= this.maxYear);\n\n const selected = this.selected[this.year] || [];\n const yrOutOfRange = this.year < this.minYear || this.year > this.maxYear;\n const isMinYear = this.year === this.minYear;\n const isMaxYear = this.year === this.maxYear;\n const range = computeMonthRange(this.range, this.year);\n\n Array.from(this.grid.children).forEach((el, index) => {\n const classList = el.classList;\n const date = dateValue(this.year, index, 1);\n\n el.className = `datepicker-cell ${this.cellClass}`;\n if (this.isMinView) {\n el.dataset.date = date;\n }\n // reset text on every render to clear the custom content set\n // by beforeShow hook at previous render\n el.textContent = this.monthNames[index];\n\n if (\n yrOutOfRange\n || isMinYear && index < this.minMonth\n || isMaxYear && index > this.maxMonth\n || this.disabled.includes(index)\n ) {\n classList.add('disabled');\n }\n if (range) {\n const [rangeStart, rangeEnd] = range;\n if (index > rangeStart && index < rangeEnd) {\n classList.add('range');\n }\n if (index === rangeStart) {\n classList.add('range-start');\n }\n if (index === rangeEnd) {\n classList.add('range-end');\n }\n }\n if (selected.includes(index)) {\n classList.add('selected');\n }\n if (index === this.focused) {\n classList.add('focused');\n }\n\n if (this.beforeShow) {\n this.performBeforeHook(el, index, date);\n }\n });\n }\n\n // Update the view UI by applying the changes of selected and focused items\n refresh() {\n const selected = this.selected[this.year] || [];\n const [rangeStart, rangeEnd] = computeMonthRange(this.range, this.year) || [];\n this.grid\n .querySelectorAll('.range, .range-start, .range-end, .selected, .focused')\n .forEach((el) => {\n el.classList.remove('range', 'range-start', 'range-end', 'selected', 'focused');\n });\n Array.from(this.grid.children).forEach((el, index) => {\n const classList = el.classList;\n if (index > rangeStart && index < rangeEnd) {\n classList.add('range');\n }\n if (index === rangeStart) {\n classList.add('range-start');\n }\n if (index === rangeEnd) {\n classList.add('range-end');\n }\n if (selected.includes(index)) {\n classList.add('selected');\n }\n if (index === this.focused) {\n classList.add('focused');\n }\n });\n }\n\n // Update the view UI by applying the change of focused item\n refreshFocus() {\n this.grid.querySelectorAll('.focused').forEach((el) => {\n el.classList.remove('focused');\n });\n this.grid.children[this.focused].classList.add('focused');\n }\n}","import {hasProperty, pushUnique, createTagRepeat} from '../../lib/utils.js';\nimport {dateValue, startOfYearPeriod} from '../../lib/date.js';\nimport {parseHTML} from '../../lib/dom.js';\nimport View from './View.js';\n\nfunction toTitleCase(word) {\n return [...word].reduce((str, ch, ix) => str += ix ? ch : ch.toUpperCase(), '');\n}\n\n// Class representing the years and decades view elements\nexport default class YearsView extends View {\n constructor(picker, config) {\n super(picker, config);\n }\n\n init(options, onConstruction = true) {\n if (onConstruction) {\n this.navStep = this.step * 10;\n this.beforeShowOption = `beforeShow${toTitleCase(this.cellClass)}`;\n this.grid = this.element;\n this.element.classList.add(this.name, 'datepicker-grid');\n this.grid.appendChild(parseHTML(createTagRepeat('span', 12)));\n }\n super.init(options);\n }\n\n setOptions(options) {\n if (hasProperty(options, 'minDate')) {\n if (options.minDate === undefined) {\n this.minYear = this.minDate = undefined;\n } else {\n this.minYear = startOfYearPeriod(options.minDate, this.step);\n this.minDate = dateValue(this.minYear, 0, 1);\n }\n }\n if (hasProperty(options, 'maxDate')) {\n if (options.maxDate === undefined) {\n this.maxYear = this.maxDate = undefined;\n } else {\n this.maxYear = startOfYearPeriod(options.maxDate, this.step);\n this.maxDate = dateValue(this.maxYear, 11, 31);\n }\n }\n if (this.isMinView) {\n if (options.datesDisabled) {\n this.datesDisabled = options.datesDisabled;\n }\n } else {\n this.datesDisabled = [];\n }\n if (options[this.beforeShowOption] !== undefined) {\n const beforeShow = options[this.beforeShowOption];\n this.beforeShow = typeof beforeShow === 'function' ? beforeShow : undefined;\n }\n }\n\n // Update view's settings to reflect the viewDate set on the picker\n updateFocus() {\n const viewDate = new Date(this.picker.viewDate);\n const first = startOfYearPeriod(viewDate, this.navStep);\n const last = first + 9 * this.step;\n\n this.first = first;\n this.last = last;\n this.start = first - this.step;\n this.focused = startOfYearPeriod(viewDate, this.step);\n }\n\n // Update view's settings to reflect the selected dates\n updateSelection() {\n const {dates, rangepicker} = this.picker.datepicker;\n this.selected = dates.reduce((years, timeValue) => {\n return pushUnique(years, startOfYearPeriod(timeValue, this.step));\n }, []);\n if (rangepicker && rangepicker.dates) {\n this.range = rangepicker.dates.map(timeValue => {\n if (timeValue !== undefined) {\n return startOfYearPeriod(timeValue, this.step);\n }\n });\n }\n }\n\n // Update the entire view UI\n render() {\n // refresh disabled years on every render in order to clear the ones added\n // by beforeShow hook at previous render\n // this.disabled = [...this.datesDisabled];\n this.disabled = this.datesDisabled.map(disabled => new Date(disabled).getFullYear());\n\n this.picker.setViewSwitchLabel(`${this.first}-${this.last}`);\n this.picker.setPrevBtnDisabled(this.first <= this.minYear);\n this.picker.setNextBtnDisabled(this.last >= this.maxYear);\n\n Array.from(this.grid.children).forEach((el, index) => {\n const classList = el.classList;\n const current = this.start + (index * this.step);\n const date = dateValue(current, 0, 1);\n\n el.className = `datepicker-cell ${this.cellClass}`;\n if (this.isMinView) {\n el.dataset.date = date;\n }\n el.textContent = el.dataset.year = current;\n\n if (index === 0) {\n classList.add('prev');\n } else if (index === 11) {\n classList.add('next');\n }\n if (current < this.minYear || current > this.maxYear || this.disabled.includes(current)) {\n classList.add('disabled');\n }\n if (this.range) {\n const [rangeStart, rangeEnd] = this.range;\n if (current > rangeStart && current < rangeEnd) {\n classList.add('range');\n }\n if (current === rangeStart) {\n classList.add('range-start');\n }\n if (current === rangeEnd) {\n classList.add('range-end');\n }\n }\n if (this.selected.includes(current)) {\n classList.add('selected');\n }\n if (current === this.focused) {\n classList.add('focused');\n }\n\n if (this.beforeShow) {\n this.performBeforeHook(el, current, date);\n }\n });\n }\n\n // Update the view UI by applying the changes of selected and focused items\n refresh() {\n const [rangeStart, rangeEnd] = this.range || [];\n this.grid\n .querySelectorAll('.range, .range-start, .range-end, .selected, .focused')\n .forEach((el) => {\n el.classList.remove('range', 'range-start', 'range-end', 'selected', 'focused');\n });\n Array.from(this.grid.children).forEach((el) => {\n const current = Number(el.textContent);\n const classList = el.classList;\n if (current > rangeStart && current < rangeEnd) {\n classList.add('range');\n }\n if (current === rangeStart) {\n classList.add('range-start');\n }\n if (current === rangeEnd) {\n classList.add('range-end');\n }\n if (this.selected.includes(current)) {\n classList.add('selected');\n }\n if (current === this.focused) {\n classList.add('focused');\n }\n });\n }\n\n // Update the view UI by applying the change of focused item\n refreshFocus() {\n const index = Math.round((this.focused - this.start) / this.step);\n this.grid.querySelectorAll('.focused').forEach((el) => {\n el.classList.remove('focused');\n });\n this.grid.children[index].classList.add('focused');\n }\n}\n","import {limitToRange} from '../lib/utils.js';\nimport {addMonths, addYears} from '../lib/date.js';\n\nexport function triggerDatepickerEvent(datepicker, type) {\n const detail = {\n date: datepicker.getDate(),\n viewDate: new Date(datepicker.picker.viewDate),\n viewId: datepicker.picker.currentView.id,\n datepicker,\n };\n datepicker.element.dispatchEvent(new CustomEvent(type, {detail}));\n}\n\n// direction: -1 (to previous), 1 (to next)\nexport function goToPrevOrNext(datepicker, direction) {\n const {minDate, maxDate} = datepicker.config;\n const {currentView, viewDate} = datepicker.picker;\n let newViewDate;\n switch (currentView.id) {\n case 0:\n newViewDate = addMonths(viewDate, direction);\n break;\n case 1:\n newViewDate = addYears(viewDate, direction);\n break;\n default:\n newViewDate = addYears(viewDate, direction * currentView.navStep);\n }\n newViewDate = limitToRange(newViewDate, minDate, maxDate);\n datepicker.picker.changeFocus(newViewDate).render();\n}\n\nexport function switchView(datepicker) {\n const viewId = datepicker.picker.currentView.id;\n if (viewId === datepicker.config.maxView) {\n return;\n }\n datepicker.picker.changeView(viewId + 1).render();\n}\n\nexport function unfocus(datepicker) {\n if (datepicker.config.updateOnBlur) {\n datepicker.update({revert: true});\n } else {\n datepicker.refresh('input');\n }\n datepicker.hide();\n}\n","import {today, addMonths, addYears} from '../lib/date.js';\nimport {findElementInEventPath} from '../lib/event.js';\nimport {goToPrevOrNext, switchView} from './functions.js';\n\nfunction goToSelectedMonthOrYear(datepicker, selection) {\n const picker = datepicker.picker;\n const viewDate = new Date(picker.viewDate);\n const viewId = picker.currentView.id;\n const newDate = viewId === 1\n ? addMonths(viewDate, selection - viewDate.getMonth())\n : addYears(viewDate, selection - viewDate.getFullYear());\n\n picker.changeFocus(newDate).changeView(viewId - 1).render();\n}\n\nexport function onClickTodayBtn(datepicker) {\n const picker = datepicker.picker;\n const currentDate = today();\n if (datepicker.config.todayBtnMode === 1) {\n if (datepicker.config.autohide) {\n datepicker.setDate(currentDate);\n return;\n }\n datepicker.setDate(currentDate, {render: false});\n picker.update();\n }\n if (picker.viewDate !== currentDate) {\n picker.changeFocus(currentDate);\n }\n picker.changeView(0).render();\n}\n\nexport function onClickClearBtn(datepicker) {\n datepicker.setDate({clear: true});\n}\n\nexport function onClickViewSwitch(datepicker) {\n switchView(datepicker);\n}\n\nexport function onClickPrevBtn(datepicker) {\n goToPrevOrNext(datepicker, -1);\n}\n\nexport function onClickNextBtn(datepicker) {\n goToPrevOrNext(datepicker, 1);\n}\n\n// For the picker's main block to delegete the events from `datepicker-cell`s\nexport function onClickView(datepicker, ev) {\n const target = findElementInEventPath(ev, '.datepicker-cell');\n if (!target || target.classList.contains('disabled')) {\n return;\n }\n\n const {id, isMinView} = datepicker.picker.currentView;\n if (isMinView) {\n datepicker.setDate(Number(target.dataset.date));\n } else if (id === 1) {\n goToSelectedMonthOrYear(datepicker, Number(target.dataset.month));\n } else {\n goToSelectedMonthOrYear(datepicker, Number(target.dataset.year));\n }\n}\n\nexport function onMousedownPicker(ev) {\n ev.preventDefault();\n}\n","import {hasProperty, lastItemOf, isInRange, limitToRange} from '../lib/utils.js';\nimport {today} from '../lib/date.js';\nimport {parseHTML, getParent, showElement, hideElement, emptyChildNodes} from '../lib/dom.js';\nimport {registerListeners} from '../lib/event.js';\nimport pickerTemplate from './templates/pickerTemplate.js';\nimport DaysView from './views/DaysView.js';\nimport MonthsView from './views/MonthsView.js';\nimport YearsView from './views/YearsView.js';\nimport {triggerDatepickerEvent} from '../events/functions.js';\nimport {\n onClickTodayBtn,\n onClickClearBtn,\n onClickViewSwitch,\n onClickPrevBtn,\n onClickNextBtn,\n onClickView,\n onMousedownPicker,\n} from '../events/pickerListeners.js';\n\nconst orientClasses = ['left', 'top', 'right', 'bottom'].reduce((obj, key) => {\n obj[key] = `datepicker-orient-${key}`;\n return obj;\n}, {});\nconst toPx = num => num ? `${num}px` : num;\n\nfunction processPickerOptions(picker, options) {\n if (options.title !== undefined) {\n if (options.title) {\n picker.controls.title.textContent = options.title;\n showElement(picker.controls.title);\n } else {\n picker.controls.title.textContent = '';\n hideElement(picker.controls.title);\n }\n }\n if (options.prevArrow) {\n const prevBtn = picker.controls.prevBtn;\n emptyChildNodes(prevBtn);\n options.prevArrow.forEach((node) => {\n prevBtn.appendChild(node.cloneNode(true));\n });\n }\n if (options.nextArrow) {\n const nextBtn = picker.controls.nextBtn;\n emptyChildNodes(nextBtn);\n options.nextArrow.forEach((node) => {\n nextBtn.appendChild(node.cloneNode(true));\n });\n }\n if (options.locale) {\n picker.controls.todayBtn.textContent = options.locale.today;\n picker.controls.clearBtn.textContent = options.locale.clear;\n }\n if (options.todayBtn !== undefined) {\n if (options.todayBtn) {\n showElement(picker.controls.todayBtn);\n } else {\n hideElement(picker.controls.todayBtn);\n }\n }\n if (hasProperty(options, 'minDate') || hasProperty(options, 'maxDate')) {\n const {minDate, maxDate} = picker.datepicker.config;\n picker.controls.todayBtn.disabled = !isInRange(today(), minDate, maxDate);\n }\n if (options.clearBtn !== undefined) {\n if (options.clearBtn) {\n showElement(picker.controls.clearBtn);\n } else {\n hideElement(picker.controls.clearBtn);\n }\n }\n}\n\n// Compute view date to reset, which will be...\n// - the last item of the selected dates or defaultViewDate if no selection\n// - limitted to minDate or maxDate if it exceeds the range\nfunction computeResetViewDate(datepicker) {\n const {dates, config} = datepicker;\n const viewDate = dates.length > 0 ? lastItemOf(dates) : config.defaultViewDate;\n return limitToRange(viewDate, config.minDate, config.maxDate);\n}\n\n// Change current view's view date\nfunction setViewDate(picker, newDate) {\n const oldViewDate = new Date(picker.viewDate);\n const newViewDate = new Date(newDate);\n const {id, year, first, last} = picker.currentView;\n const viewYear = newViewDate.getFullYear();\n\n picker.viewDate = newDate;\n if (viewYear !== oldViewDate.getFullYear()) {\n triggerDatepickerEvent(picker.datepicker, 'changeYear');\n }\n if (newViewDate.getMonth() !== oldViewDate.getMonth()) {\n triggerDatepickerEvent(picker.datepicker, 'changeMonth');\n }\n\n // return whether the new date is in different period on time from the one\n // displayed in the current view\n // when true, the view needs to be re-rendered on the next UI refresh.\n switch (id) {\n case 0:\n return newDate < first || newDate > last;\n case 1:\n return viewYear !== year;\n default:\n return viewYear < first || viewYear > last;\n }\n}\n\nfunction getTextDirection(el) {\n return window.getComputedStyle(el).direction;\n}\n\n// find the closet scrollable ancestor elemnt under the body\nfunction findScrollParents(el) {\n const parent = getParent(el);\n if (parent === document.body || !parent) {\n return;\n }\n\n // checking overflow only is enough because computed overflow cannot be\n // visible or a combination of visible and other when either axis is set\n // to other than visible.\n // (Setting one axis to other than 'visible' while the other is 'visible'\n // results in the other axis turning to 'auto')\n return window.getComputedStyle(parent).overflow !== 'visible'\n ? parent\n : findScrollParents(parent);\n}\n\n// Class representing the picker UI\nexport default class Picker {\n constructor(datepicker) {\n const {config} = this.datepicker = datepicker;\n\n const template = pickerTemplate.replace(/%buttonClass%/g, config.buttonClass);\n const element = this.element = parseHTML(template).firstChild;\n const [header, main, footer] = element.firstChild.children;\n const title = header.firstElementChild;\n const [prevBtn, viewSwitch, nextBtn] = header.lastElementChild.children;\n const [todayBtn, clearBtn] = footer.firstChild.children;\n const controls = {\n title,\n prevBtn,\n viewSwitch,\n nextBtn,\n todayBtn,\n clearBtn,\n };\n this.main = main;\n this.controls = controls;\n\n const elementClass = datepicker.inline ? 'inline' : 'dropdown';\n element.classList.add(`datepicker-${elementClass}`);\n\n processPickerOptions(this, config);\n this.viewDate = computeResetViewDate(datepicker);\n\n // set up event listeners\n registerListeners(datepicker, [\n [element, 'mousedown', onMousedownPicker],\n [main, 'click', onClickView.bind(null, datepicker)],\n [controls.viewSwitch, 'click', onClickViewSwitch.bind(null, datepicker)],\n [controls.prevBtn, 'click', onClickPrevBtn.bind(null, datepicker)],\n [controls.nextBtn, 'click', onClickNextBtn.bind(null, datepicker)],\n [controls.todayBtn, 'click', onClickTodayBtn.bind(null, datepicker)],\n [controls.clearBtn, 'click', onClickClearBtn.bind(null, datepicker)],\n ]);\n\n // set up views\n this.views = [\n new DaysView(this),\n new MonthsView(this),\n new YearsView(this, {id: 2, name: 'years', cellClass: 'year', step: 1}),\n new YearsView(this, {id: 3, name: 'decades', cellClass: 'decade', step: 10}),\n ];\n this.currentView = this.views[config.startView];\n\n this.currentView.render();\n this.main.appendChild(this.currentView.element);\n if (config.container) {\n config.container.appendChild(this.element);\n } else {\n datepicker.inputField.after(this.element);\n }\n }\n\n setOptions(options) {\n processPickerOptions(this, options);\n this.views.forEach((view) => {\n view.init(options, false);\n });\n this.currentView.render();\n }\n\n detach() {\n this.element.remove();\n }\n\n show() {\n if (this.active) {\n return;\n }\n\n const {datepicker, element} = this;\n if (datepicker.inline) {\n element.classList.add('active');\n } else {\n // ensure picker's direction matches input's\n const inputDirection = getTextDirection(datepicker.inputField);\n if (inputDirection !== getTextDirection(getParent(element))) {\n element.dir = inputDirection;\n } else if (element.dir) {\n element.removeAttribute('dir');\n }\n\n element.style.visiblity = 'hidden';\n element.classList.add('active');\n this.place();\n element.style.visiblity = '';\n\n if (datepicker.config.disableTouchKeyboard) {\n datepicker.inputField.blur();\n }\n }\n this.active = true;\n triggerDatepickerEvent(datepicker, 'show');\n }\n\n hide() {\n if (!this.active) {\n return;\n }\n this.datepicker.exitEditMode();\n this.element.classList.remove('active');\n this.active = false;\n triggerDatepickerEvent(this.datepicker, 'hide');\n }\n\n place() {\n const {classList, offsetParent, style} = this.element;\n const {config, inputField} = this.datepicker;\n const {\n width: calendarWidth,\n height: calendarHeight,\n } = this.element.getBoundingClientRect();\n const {\n left: inputLeft,\n top: inputTop,\n right: inputRight,\n bottom: inputBottom,\n width: inputWidth,\n height: inputHeight\n } = inputField.getBoundingClientRect();\n let {x: orientX, y: orientY} = config.orientation;\n let left = inputLeft;\n let top = inputTop;\n\n // caliculate offsetLeft/Top of inputField\n if (offsetParent === document.body || !offsetParent) {\n left += window.scrollX;\n top += window.scrollY;\n } else {\n const offsetParentRect = offsetParent.getBoundingClientRect();\n left -= offsetParentRect.left - offsetParent.scrollLeft;\n top -= offsetParentRect.top - offsetParent.scrollTop;\n }\n\n // caliculate the boundaries of the visible area that contains inputField\n const scrollParent = findScrollParents(inputField);\n let scrollAreaLeft = 0;\n let scrollAreaTop = 0;\n let {\n clientWidth: scrollAreaRight,\n clientHeight: scrollAreaBottom,\n } = document.documentElement;\n\n if (scrollParent) {\n const scrollParentRect = scrollParent.getBoundingClientRect();\n if (scrollParentRect.top > 0) {\n scrollAreaTop = scrollParentRect.top;\n }\n if (scrollParentRect.left > 0) {\n scrollAreaLeft = scrollParentRect.left;\n }\n if (scrollParentRect.right < scrollAreaRight) {\n scrollAreaRight = scrollParentRect.right;\n }\n if (scrollParentRect.bottom < scrollAreaBottom) {\n scrollAreaBottom = scrollParentRect.bottom;\n }\n }\n\n // determine the horizontal orientation and left position\n let adjustment = 0;\n if (orientX === 'auto') {\n if (inputLeft < scrollAreaLeft) {\n orientX = 'left';\n adjustment = scrollAreaLeft - inputLeft;\n } else if (inputLeft + calendarWidth > scrollAreaRight) {\n orientX = 'right';\n if (scrollAreaRight < inputRight) {\n adjustment = scrollAreaRight - inputRight;\n }\n } else if (getTextDirection(inputField) === 'rtl') {\n orientX = inputRight - calendarWidth < scrollAreaLeft ? 'left' : 'right';\n } else {\n orientX = 'left';\n }\n }\n if (orientX === 'right') {\n left += inputWidth - calendarWidth;\n }\n left += adjustment;\n\n // determine the vertical orientation and top position\n if (orientY === 'auto') {\n if (inputTop - calendarHeight > scrollAreaTop) {\n orientY = inputBottom + calendarHeight > scrollAreaBottom ? 'top' : 'bottom';\n } else {\n orientY = 'bottom';\n }\n }\n if (orientY === 'top') {\n top -= calendarHeight;\n } else {\n top += inputHeight;\n }\n\n classList.remove(...Object.values(orientClasses));\n classList.add(orientClasses[orientX], orientClasses[orientY]);\n\n style.left = toPx(left);\n style.top = toPx(top);\n }\n\n setViewSwitchLabel(labelText) {\n this.controls.viewSwitch.textContent = labelText;\n }\n\n setPrevBtnDisabled(disabled) {\n this.controls.prevBtn.disabled = disabled;\n }\n\n setNextBtnDisabled(disabled) {\n this.controls.nextBtn.disabled = disabled;\n }\n\n changeView(viewId) {\n const oldView = this.currentView;\n const newView = this.views[viewId];\n if (newView.id !== oldView.id) {\n this.currentView = newView;\n this._renderMethod = 'render';\n triggerDatepickerEvent(this.datepicker, 'changeView');\n this.main.replaceChild(newView.element, oldView.element);\n }\n return this;\n }\n\n // Change the focused date (view date)\n changeFocus(newViewDate) {\n this._renderMethod = setViewDate(this, newViewDate) ? 'render' : 'refreshFocus';\n this.views.forEach((view) => {\n view.updateFocus();\n });\n return this;\n }\n\n // Apply the change of the selected dates\n update() {\n const newViewDate = computeResetViewDate(this.datepicker);\n this._renderMethod = setViewDate(this, newViewDate) ? 'render' : 'refresh';\n this.views.forEach((view) => {\n view.updateFocus();\n view.updateSelection();\n });\n return this;\n }\n\n // Refresh the picker UI\n render(quickRender = true) {\n const renderMethod = (quickRender && this._renderMethod) || 'render';\n delete this._renderMethod;\n\n this.currentView[renderMethod]();\n }\n}\n","import {isInRange} from '../lib/utils.js';\nimport {isActiveElement} from '../lib/dom.js';\nimport {addDays, addMonths, addYears, startOfYearPeriod} from '../lib/date.js';\nimport {goToPrevOrNext, switchView, unfocus} from './functions.js';\n\n// Find the closest date that doesn't meet the condition for unavailable date\n// Returns undefined if no available date is found\n// addFn: function to calculate the next date\n// - args: time value, amount\n// increase: amount to pass to addFn\n// testFn: function to test the unavailablity of the date\n// - args: time value; retun: true if unavailable\nfunction findNextAvailableOne(date, addFn, increase, testFn, min, max) {\n if (!isInRange(date, min, max)) {\n return;\n }\n if (testFn(date)) {\n const newDate = addFn(date, increase);\n return findNextAvailableOne(newDate, addFn, increase, testFn, min, max);\n }\n return date;\n}\n\n// direction: -1 (left/up), 1 (right/down)\n// vertical: true for up/down, false for left/right\nfunction moveByArrowKey(datepicker, ev, direction, vertical) {\n const picker = datepicker.picker;\n const currentView = picker.currentView;\n const step = currentView.step || 1;\n let viewDate = picker.viewDate;\n let addFn;\n let testFn;\n switch (currentView.id) {\n case 0:\n if (vertical) {\n viewDate = addDays(viewDate, direction * 7);\n } else if (ev.ctrlKey || ev.metaKey) {\n viewDate = addYears(viewDate, direction);\n } else {\n viewDate = addDays(viewDate, direction);\n }\n addFn = addDays;\n testFn = (date) => currentView.disabled.includes(date);\n break;\n case 1:\n viewDate = addMonths(viewDate, vertical ? direction * 4 : direction);\n addFn = addMonths;\n testFn = (date) => {\n const dt = new Date(date);\n const {year, disabled} = currentView;\n return dt.getFullYear() === year && disabled.includes(dt.getMonth());\n };\n break;\n default:\n viewDate = addYears(viewDate, direction * (vertical ? 4 : 1) * step);\n addFn = addYears;\n testFn = date => currentView.disabled.includes(startOfYearPeriod(date, step));\n }\n viewDate = findNextAvailableOne(\n viewDate,\n addFn,\n direction < 0 ? -step : step,\n testFn,\n currentView.minDate,\n currentView.maxDate\n );\n if (viewDate !== undefined) {\n picker.changeFocus(viewDate).render();\n }\n}\n\nexport function onKeydown(datepicker, ev) {\n const key = ev.key;\n if (key === 'Tab') {\n unfocus(datepicker);\n return;\n }\n\n const picker = datepicker.picker;\n const {id, isMinView} = picker.currentView;\n if (!picker.active) {\n if (key === 'ArrowDown') {\n picker.show();\n } else {\n if (key === 'Enter') {\n datepicker.update();\n } else if (key === 'Escape') {\n picker.show();\n }\n return;\n }\n } else if (datepicker.editMode) {\n if (key === 'Enter') {\n datepicker.exitEditMode({update: true, autohide: datepicker.config.autohide});\n } else if (key === 'Escape') {\n picker.hide();\n }\n return;\n } else {\n if (key === 'ArrowLeft') {\n if (ev.ctrlKey || ev.metaKey) {\n goToPrevOrNext(datepicker, -1);\n } else if (ev.shiftKey) {\n datepicker.enterEditMode();\n return;\n } else {\n moveByArrowKey(datepicker, ev, -1, false);\n }\n } else if (key === 'ArrowRight') {\n if (ev.ctrlKey || ev.metaKey) {\n goToPrevOrNext(datepicker, 1);\n } else if (ev.shiftKey) {\n datepicker.enterEditMode();\n return;\n } else {\n moveByArrowKey(datepicker, ev, 1, false);\n }\n } else if (key === 'ArrowUp') {\n if (ev.ctrlKey || ev.metaKey) {\n switchView(datepicker);\n } else if (ev.shiftKey) {\n datepicker.enterEditMode();\n return;\n } else {\n moveByArrowKey(datepicker, ev, -1, true);\n }\n } else if (key === 'ArrowDown') {\n if (ev.shiftKey && !ev.ctrlKey && !ev.metaKey) {\n datepicker.enterEditMode();\n return;\n }\n moveByArrowKey(datepicker, ev, 1, true);\n } else if (key === 'Enter') {\n if (isMinView) {\n datepicker.setDate(picker.viewDate);\n return;\n }\n picker.changeView(id - 1).render();\n } else {\n if (key === 'Escape') {\n picker.hide();\n } else if (\n key === 'Backspace'\n || key === 'Delete'\n || (key.length === 1 && !ev.ctrlKey && !ev.metaKey)\n ) {\n datepicker.enterEditMode();\n }\n return;\n }\n }\n ev.preventDefault();\n}\n\nexport function onFocus(datepicker) {\n if (datepicker.config.showOnFocus && !datepicker._showing) {\n datepicker.show();\n }\n}\n\n// for the prevention for entering edit mode while getting focus on click\nexport function onMousedown(datepicker, ev) {\n const el = ev.target;\n if (datepicker.picker.active || datepicker.config.showOnClick) {\n el._active = isActiveElement(el);\n el._clicking = setTimeout(() => {\n delete el._active;\n delete el._clicking;\n }, 2000);\n }\n}\n\nexport function onClickInput(datepicker, ev) {\n const el = ev.target;\n if (!el._clicking) {\n return;\n }\n clearTimeout(el._clicking);\n delete el._clicking;\n\n if (el._active) {\n datepicker.enterEditMode();\n }\n delete el._active;\n\n if (datepicker.config.showOnClick) {\n datepicker.show();\n }\n}\n\nexport function onPaste(datepicker, ev) {\n if (ev.clipboardData.types.includes('text/plain')) {\n datepicker.enterEditMode();\n }\n}\n","import {isActiveElement} from '../lib/dom.js';\nimport {findElementInEventPath} from '../lib/event.js';\nimport {unfocus} from './functions.js';\n\n// for the `document` to delegate the events from outside the picker/input field\nexport function onClickOutside(datepicker, ev) {\n const {element, picker} = datepicker;\n // check both picker's and input's activeness to make updateOnBlur work in\n // the cases where...\n // - picker is hidden by ESC key press → input stays focused\n // - input is unfocused by closing mobile keyboard → piker is kept shown\n if (!picker.active && !isActiveElement(element)) {\n return;\n }\n const pickerElem = picker.element;\n if (findElementInEventPath(ev, el => el === element || el === pickerElem)) {\n return;\n }\n unfocus(datepicker);\n}\n","import {lastItemOf, stringToArray, isInRange} from './lib/utils.js';\nimport {today, regularizeDate} from './lib/date.js';\nimport {parseDate, formatDate} from './lib/date-format.js';\nimport {isActiveElement} from './lib/dom.js';\nimport {registerListeners, unregisterListeners} from './lib/event.js';\nimport {locales} from './i18n/base-locales.js';\nimport defaultOptions from './options/defaultOptions.js';\nimport processOptions from './options/processOptions.js';\nimport Picker from './picker/Picker.js';\nimport {triggerDatepickerEvent} from './events/functions.js';\nimport {onKeydown, onFocus, onMousedown, onClickInput, onPaste} from './events/inputFieldListeners.js';\nimport {onClickOutside} from './events/otherListeners.js';\n\nfunction stringifyDates(dates, config) {\n return dates\n .map(dt => formatDate(dt, config.format, config.locale))\n .join(config.dateDelimiter);\n}\n\n// parse input dates and create an array of time values for selection\n// returns undefined if there are no valid dates in inputDates\n// when origDates (current selection) is passed, the function works to mix\n// the input dates into the current selection\nfunction processInputDates(datepicker, inputDates, clear = false) {\n // const {config, dates: origDates, rangepicker} = datepicker;\n const {config, dates: origDates, rangeSideIndex} = datepicker;\n if (inputDates.length === 0) {\n // empty input is considered valid unless origiDates is passed\n return clear ? [] : undefined;\n }\n\n // const rangeEnd = rangepicker && datepicker === rangepicker.datepickers[1];\n let newDates = inputDates.reduce((dates, dt) => {\n let date = parseDate(dt, config.format, config.locale);\n if (date === undefined) {\n return dates;\n }\n // adjust to 1st of the month/Jan 1st of the year\n // or to the last day of the monh/Dec 31st of the year if the datepicker\n // is the range-end picker of a rangepicker\n date = regularizeDate(date, config.pickLevel, rangeSideIndex);\n if (\n isInRange(date, config.minDate, config.maxDate)\n && !dates.includes(date)\n && !config.datesDisabled.includes(date)\n && (config.pickLevel > 0 || !config.daysOfWeekDisabled.includes(new Date(date).getDay()))\n ) {\n dates.push(date);\n }\n return dates;\n }, []);\n if (newDates.length === 0) {\n return;\n }\n if (config.multidate && !clear) {\n // get the synmetric difference between origDates and newDates\n newDates = newDates.reduce((dates, date) => {\n if (!origDates.includes(date)) {\n dates.push(date);\n }\n return dates;\n }, origDates.filter(date => !newDates.includes(date)));\n }\n // do length check always because user can input multiple dates regardless of the mode\n return config.maxNumberOfDates && newDates.length > config.maxNumberOfDates\n ? newDates.slice(config.maxNumberOfDates * -1)\n : newDates;\n}\n\n// refresh the UI elements\n// modes: 1: input only, 2, picker only, 3 both\nfunction refreshUI(datepicker, mode = 3, quickRender = true) {\n const {config, picker, inputField} = datepicker;\n if (mode & 2) {\n const newView = picker.active ? config.pickLevel : config.startView;\n picker.update().changeView(newView).render(quickRender);\n }\n if (mode & 1 && inputField) {\n inputField.value = stringifyDates(datepicker.dates, config);\n }\n}\n\nfunction setDate(datepicker, inputDates, options) {\n let {clear, render, autohide, revert} = options;\n if (render === undefined) {\n render = true;\n }\n if (!render) {\n autohide = false;\n } else if (autohide === undefined) {\n autohide = datepicker.config.autohide;\n }\n\n const newDates = processInputDates(datepicker, inputDates, clear);\n if (!newDates && !revert) {\n return;\n }\n if (newDates && newDates.toString() !== datepicker.dates.toString()) {\n datepicker.dates = newDates;\n refreshUI(datepicker, render ? 3 : 1);\n triggerDatepickerEvent(datepicker, 'changeDate');\n } else {\n refreshUI(datepicker, 1);\n }\n\n if (autohide) {\n datepicker.hide();\n }\n}\n\n/**\n * Class representing a date picker\n */\nexport default class Datepicker {\n /**\n * Create a date picker\n * @param {Element} element - element to bind a date picker\n * @param {Object} [options] - config options\n * @param {DateRangePicker} [rangepicker] - DateRangePicker instance the\n * date picker belongs to. Use this only when creating date picker as a part\n * of date range picker\n */\n constructor(element, options = {}, rangepicker = undefined) {\n element.datepicker = this;\n this.element = element;\n\n const config = this.config = Object.assign({\n buttonClass: (options.buttonClass && String(options.buttonClass)) || 'button',\n container: null,\n defaultViewDate: today(),\n maxDate: undefined,\n minDate: undefined,\n }, processOptions(defaultOptions, this));\n // configure by type\n const inline = this.inline = element.tagName !== 'INPUT';\n let inputField;\n if (inline) {\n config.container = element;\n } else {\n if (options.container) {\n // omit string type check because it doesn't guarantee to avoid errors\n // (invalid selector string causes abend with sytax error)\n config.container = options.container instanceof HTMLElement\n ? options.container\n : document.querySelector(options.container);\n }\n inputField = this.inputField = element;\n inputField.classList.add('datepicker-input');\n }\n if (rangepicker) {\n // check validiry\n const index = rangepicker.inputs.indexOf(inputField);\n const datepickers = rangepicker.datepickers;\n if (index < 0 || index > 1 || !Array.isArray(datepickers)) {\n throw Error('Invalid rangepicker object.');\n }\n // attach itaelf to the rangepicker here so that processInputDates() can\n // determine if this is the range-end picker of the rangepicker while\n // setting inital values when pickLevel > 0\n datepickers[index] = this;\n // add getter for rangepicker\n Object.defineProperty(this, 'rangepicker', {\n get() {\n return rangepicker;\n },\n });\n Object.defineProperty(this, 'rangeSideIndex', {\n get() {\n return index;\n },\n });\n }\n\n // set up config\n this._options = options;\n Object.assign(config, processOptions(options, this));\n\n // set initial dates\n let initialDates;\n if (inline) {\n initialDates = stringToArray(element.dataset.date, config.dateDelimiter);\n delete element.dataset.date;\n } else {\n initialDates = stringToArray(inputField.value, config.dateDelimiter);\n }\n this.dates = [];\n // process initial value\n const inputDateValues = processInputDates(this, initialDates);\n if (inputDateValues && inputDateValues.length > 0) {\n this.dates = inputDateValues;\n }\n if (inputField) {\n inputField.value = stringifyDates(this.dates, config);\n }\n\n const picker = this.picker = new Picker(this);\n\n if (inline) {\n this.show();\n } else {\n // set up event listeners in other modes\n const onMousedownDocument = onClickOutside.bind(null, this);\n const listeners = [\n [inputField, 'keydown', onKeydown.bind(null, this)],\n [inputField, 'focus', onFocus.bind(null, this)],\n [inputField, 'mousedown', onMousedown.bind(null, this)],\n [inputField, 'click', onClickInput.bind(null, this)],\n [inputField, 'paste', onPaste.bind(null, this)],\n [document, 'mousedown', onMousedownDocument],\n [document, 'touchstart', onMousedownDocument],\n [window, 'resize', picker.place.bind(picker)]\n ];\n registerListeners(this, listeners);\n }\n }\n\n /**\n * Format Date object or time value in given format and language\n * @param {Date|Number} date - date or time value to format\n * @param {String|Object} format - format string or object that contains\n * toDisplay() custom formatter, whose signature is\n * - args:\n * - date: {Date} - Date instance of the date passed to the method\n * - format: {Object} - the format object passed to the method\n * - locale: {Object} - locale for the language specified by `lang`\n * - return:\n * {String} formatted date\n * @param {String} [lang=en] - language code for the locale to use\n * @return {String} formatted date\n */\n static formatDate(date, format, lang) {\n return formatDate(date, format, lang && locales[lang] || locales.en);\n }\n\n /**\n * Parse date string\n * @param {String|Date|Number} dateStr - date string, Date object or time\n * value to parse\n * @param {String|Object} format - format string or object that contains\n * toValue() custom parser, whose signature is\n * - args:\n * - dateStr: {String|Date|Number} - the dateStr passed to the method\n * - format: {Object} - the format object passed to the method\n * - locale: {Object} - locale for the language specified by `lang`\n * - return:\n * {Date|Number} parsed date or its time value\n * @param {String} [lang=en] - language code for the locale to use\n * @return {Number} time value of parsed date\n */\n static parseDate(dateStr, format, lang) {\n return parseDate(dateStr, format, lang && locales[lang] || locales.en);\n }\n\n /**\n * @type {Object} - Installed locales in `[languageCode]: localeObject` format\n * en`:_English (US)_ is pre-installed.\n */\n static get locales() {\n return locales;\n }\n\n /**\n * @type {Boolean} - Whether the picker element is shown. `true` whne shown\n */\n get active() {\n return !!(this.picker && this.picker.active);\n }\n\n /**\n * @type {HTMLDivElement} - DOM object of picker element\n */\n get pickerElement() {\n return this.picker ? this.picker.element : undefined;\n }\n\n /**\n * Set new values to the config options\n * @param {Object} options - config options to update\n */\n setOptions(options) {\n const picker = this.picker;\n const newOptions = processOptions(options, this);\n Object.assign(this._options, options);\n Object.assign(this.config, newOptions);\n picker.setOptions(newOptions);\n\n refreshUI(this, 3);\n }\n\n /**\n * Show the picker element\n */\n show() {\n if (this.inputField) {\n if (this.inputField.disabled) {\n return;\n }\n if (!isActiveElement(this.inputField) && !this.config.disableTouchKeyboard) {\n this._showing = true;\n this.inputField.focus();\n delete this._showing;\n }\n }\n this.picker.show();\n }\n\n /**\n * Hide the picker element\n * Not available on inline picker\n */\n hide() {\n if (this.inline) {\n return;\n }\n this.picker.hide();\n this.picker.update().changeView(this.config.startView).render();\n }\n\n /**\n * Destroy the Datepicker instance\n * @return {Detepicker} - the instance destroyed\n */\n destroy() {\n this.hide();\n unregisterListeners(this);\n this.picker.detach();\n if (!this.inline) {\n this.inputField.classList.remove('datepicker-input');\n }\n delete this.element.datepicker;\n return this;\n }\n\n /**\n * Get the selected date(s)\n *\n * The method returns a Date object of selected date by default, and returns\n * an array of selected dates in multidate mode. If format string is passed,\n * it returns date string(s) formatted in given format.\n *\n * @param {String} [format] - Format string to stringify the date(s)\n * @return {Date|String|Date[]|String[]} - selected date(s), or if none is\n * selected, empty array in multidate mode and untitled in sigledate mode\n */\n getDate(format = undefined) {\n const callback = format\n ? date => formatDate(date, format, this.config.locale)\n : date => new Date(date);\n\n if (this.config.multidate) {\n return this.dates.map(callback);\n }\n if (this.dates.length > 0) {\n return callback(this.dates[0]);\n }\n }\n\n /**\n * Set selected date(s)\n *\n * In multidate mode, you can pass multiple dates as a series of arguments\n * or an array. (Since each date is parsed individually, the type of the\n * dates doesn't have to be the same.)\n * The given dates are used to toggle the select status of each date. The\n * number of selected dates is kept from exceeding the length set to\n * maxNumberOfDates.\n *\n * With clear: true option, the method can be used to clear the selection\n * and to replace the selection instead of toggling in multidate mode.\n * If the option is passed with no date arguments or an empty dates array,\n * it works as \"clear\" (clear the selection then set nothing), and if the\n * option is passed with new dates to select, it works as \"replace\" (clear\n * the selection then set the given dates)\n *\n * When render: false option is used, the method omits re-rendering the\n * picker element. In this case, you need to call refresh() method later in\n * order for the picker element to reflect the changes. The input field is\n * refreshed always regardless of this option.\n *\n * When invalid (unparsable, repeated, disabled or out-of-range) dates are\n * passed, the method ignores them and applies only valid ones. In the case\n * that all the given dates are invalid, which is distinguished from passing\n * no dates, the method considers it as an error and leaves the selection\n * untouched. (The input field also remains untouched unless revert: true\n * option is used.)\n *\n * @param {...(Date|Number|String)|Array} [dates] - Date strings, Date\n * objects, time values or mix of those for new selection\n * @param {Object} [options] - function options\n * - clear: {boolean} - Whether to clear the existing selection\n * defualt: false\n * - render: {boolean} - Whether to re-render the picker element\n * default: true\n * - autohide: {boolean} - Whether to hide the picker element after re-render\n * Ignored when used with render: false\n * default: config.autohide\n * - revert: {boolean} - Whether to refresh the input field when all the\n * passed dates are invalid\n * default: false\n */\n setDate(...args) {\n const dates = [...args];\n const opts = {};\n const lastArg = lastItemOf(args);\n if (\n typeof lastArg === 'object'\n && !Array.isArray(lastArg)\n && !(lastArg instanceof Date)\n && lastArg\n ) {\n Object.assign(opts, dates.pop());\n }\n\n const inputDates = Array.isArray(dates[0]) ? dates[0] : dates;\n setDate(this, inputDates, opts);\n }\n\n /**\n * Update the selected date(s) with input field's value\n * Not available on inline picker\n *\n * The input field will be refreshed with properly formatted date string.\n *\n * In the case that all the entered dates are invalid (unparsable, repeated,\n * disabled or out-of-range), whixh is distinguished from empty input field,\n * the method leaves the input field untouched as well as the selection by\n * default. If revert: true option is used in this case, the input field is\n * refreshed with the existing selection.\n *\n * @param {Object} [options] - function options\n * - autohide: {boolean} - whether to hide the picker element after refresh\n * default: false\n * - revert: {boolean} - Whether to refresh the input field when all the\n * passed dates are invalid\n * default: false\n */\n update(options = undefined) {\n if (this.inline) {\n return;\n }\n\n const opts = Object.assign(options || {}, {clear: true, render: true});\n const inputDates = stringToArray(this.inputField.value, this.config.dateDelimiter);\n setDate(this, inputDates, opts);\n }\n\n /**\n * Refresh the picker element and the associated input field\n * @param {String} [target] - target item when refreshing one item only\n * 'picker' or 'input'\n * @param {Boolean} [forceRender] - whether to re-render the picker element\n * regardless of its state instead of optimized refresh\n */\n refresh(target = undefined, forceRender = false) {\n if (target && typeof target !== 'string') {\n forceRender = target;\n target = undefined;\n }\n\n let mode;\n if (target === 'picker') {\n mode = 2;\n } else if (target === 'input') {\n mode = 1;\n } else {\n mode = 3;\n }\n refreshUI(this, mode, !forceRender);\n }\n\n /**\n * Enter edit mode\n * Not available on inline picker or when the picker element is hidden\n */\n enterEditMode() {\n if (this.inline || !this.picker.active || this.editMode) {\n return;\n }\n this.editMode = true;\n this.inputField.classList.add('in-edit');\n }\n\n /**\n * Exit from edit mode\n * Not available on inline picker\n * @param {Object} [options] - function options\n * - update: {boolean} - whether to call update() after exiting\n * If false, input field is revert to the existing selection\n * default: false\n */\n exitEditMode(options = undefined) {\n if (this.inline || !this.editMode) {\n return;\n }\n const opts = Object.assign({update: false}, options);\n delete this.editMode;\n this.inputField.classList.remove('in-edit');\n if (opts.update) {\n this.update(opts);\n }\n }\n}\n","@import '../../../theme.scss';\n\n@import 'node_modules/vanillajs-datepicker/sass/datepicker';\n\nverdocs-field-date {\n font-family: $verdocs-primary-font;\n width: 64px;\n height: 15px;\n display: block;\n font-size: 11px;\n position: relative;\n letter-spacing: 0.3px;\n background-color: transparent;\n transform-origin: bottom left;\n\n input {\n box-sizing: border-box;\n color: rgba(0, 0, 0, 0.87);\n font-weight: 500;\n transform-origin: 0 0;\n height: 100%;\n width: 100%;\n background: none;\n font-size: 11px;\n border: 1px solid #ccc;\n appearance: none;\n\n &.hide {\n display: none;\n }\n }\n\n &.required {\n input {\n border: 1px solid var(--verdocs-required-color);\n }\n }\n\n &.focused {\n animation: verdocs-field-pulse 0.75s 2;\n }\n}\n","// @ts-ignore\nimport {Datepicker} from 'vanillajs-datepicker';\nimport {Component, Event, EventEmitter, h, Host, Method, Prop, State} from '@stencil/core';\n\n/**\n * Displays a date field. When tapped or clicked, the input element will display a date picker component.\n */\n@Component({\n tag: 'verdocs-field-date',\n styleUrl: 'verdocs-field-date.scss',\n shadow: false,\n})\nexport class VerdocsFieldDate {\n private el: HTMLInputElement;\n\n /**\n * A placeholder to assist the user in completing the field.\n */\n @Prop() placeholder: string = 'Select Date';\n\n /**\n * Sets the tabIndex of the input element.\n */\n @Prop() order: number = 1;\n\n /**\n * Sets the value of the input element.\n */\n @Prop() value: string = '';\n\n /**\n * If true, the field will be marked required.\n */\n @Prop() required: boolean = false;\n\n /**\n * Sets the disabled attribute of the input element.\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Event fired when the input field loses focus.\n */\n @Event({composed: true}) fieldFocus: EventEmitter<boolean>;\n\n /**\n * Event fired when the input field gains focus.\n */\n @Event({composed: true}) fieldBlur: EventEmitter<boolean>;\n\n /**\n * Event fired when the input field value changes. Note that this will only be fired on blur, tab-out, ENTER key press, etc.\n * It is generally the best event to subscribe to than `input` for most cases EXCEPT autocomplete fields that need to see every\n * keypress.\n */\n @Event({composed: true}) fieldChange: EventEmitter<string>;\n\n /**\n * Event fired on every character entered into / deleted from the field.\n */\n @Event({composed: true}) fieldInput: EventEmitter<string>;\n\n @State() focused = false;\n\n @Method() async focusField() {\n this.focused = true;\n this.el.focus();\n this.fieldFocus.emit(true);\n }\n\n componentDidLoad() {\n new Datepicker(this.el, {\n autohide: true,\n todayHighlight: true,\n });\n\n this.el.addEventListener('changeDate', (e: any) => {\n console.log('changeDate', e.detail.date.toISOString());\n });\n }\n\n handleBlur() {\n this.focused = false;\n this.fieldBlur.emit(true);\n }\n\n handleFocus() {\n this.focused = true;\n this.fieldFocus.emit(true);\n }\n\n handleChange(e: any) {\n this.fieldChange.emit(e.target.value);\n }\n\n handleInput(e: any) {\n this.fieldInput.emit(e.target.value);\n }\n\n // NOTE: We don't use a \"date\" field here because browsers vary widely in their formatting of it.\n render() {\n return (\n <Host class={{focused: this.focused, required: this.required, storybook: !!window?.['STORYBOOK_ENV']}}>\n <input\n type=\"text\"\n value=\"\"\n placeholder={this.placeholder}\n required={this.required}\n ref={el => (this.el = el)}\n onBlur={() => this.handleBlur()}\n onFocus={() => this.handleFocus()}\n onChange={e => this.handleChange(e)}\n onInput={e => this.handleInput(e)}\n />\n </Host>\n );\n }\n}\n","@import '../../../theme.scss';\n\nverdocs-field-dropdown {\n font-family: $verdocs-primary-font;\n width: 85px;\n height: 20px;\n display: block;\n font-size: 11px;\n position: relative;\n background-color: transparent;\n transform-origin: bottom left;\n\n select {\n position: absolute;\n background: linear-gradient(55deg, transparent 50%, #333 50%), linear-gradient(125deg, #333 50%, transparent 50%), linear-gradient(to right, transparent, transparent);\n background-position: calc(100% - 7px) 4px, calc(100% - 3px) 4px, 100% 0;\n background-size: 5px 5px, 5px 5px, 2.5em 2.5em;\n background-repeat: no-repeat;\n appearance: none;\n\n box-sizing: border-box;\n color: rgba(0, 0, 0, 0.87);\n font-weight: 500;\n transform-origin: 0 0;\n height: 100%;\n width: 100%;\n font-size: 11px;\n border: 1px solid rgba(0, 0, 0, 0.2);\n\n &:focus {\n outline: none;\n }\n\n &.hide {\n display: none;\n }\n }\n\n //select {\n // position: absolute;\n // font-family: Arial, sans-serif;\n // background: linear-gradient(55deg, transparent 50%, #333 50%), linear-gradient(125deg, #333 50%, transparent 50%), linear-gradient(to right, transparent, transparent);\n // background-position: calc(100% - 7px) 4px, calc(100% - 3px) 4px, 100% 0;\n // background-size: 5px 5px, 5px 5px, 2.5em 2.5em;\n // background-repeat: no-repeat;\n // appearance: none;\n //}\n\n &.required {\n select {\n border: 1px solid var(--verdocs-required-color);\n }\n }\n\n &.focused {\n animation: verdocs-field-pulse 0.75s 2;\n }\n}\n","import {Component, Event, EventEmitter, h, Host, Method, Prop, State} from '@stencil/core';\n\n/**\n * Displays a signature field. Various field types are supported, including traditional Signature and Initials types as well as\n * input types like text and checkbox.\n */\n@Component({\n tag: 'verdocs-field-dropdown',\n styleUrl: 'verdocs-field-dropdown.scss',\n shadow: false,\n})\nexport class VerdocsFieldDropdown {\n private el: HTMLSelectElement;\n\n /**\n * The optoins to choose from.\n */\n @Prop() options: any[] = [];\n\n /**\n * If true, the field will be marked required.\n */\n @Prop() required: boolean = false;\n\n /**\n * Sets the tabIndex of the input element.\n */\n @Prop() order: number = 1;\n\n /**\n * Sets the disabled attribute of the input element.\n */\n @Prop() disabled: boolean = false;\n\n /**\n * The currently selected value.\n */\n @Prop() value: string = '';\n\n /**\n * Event fired when the input field loses focus.\n */\n @Event({composed: true}) fieldFocus: EventEmitter<boolean>;\n\n /**\n * Event fired when the input field gains focus.\n */\n @Event({composed: true}) fieldBlur: EventEmitter<boolean>;\n\n /**\n * Event fired when the input field value changes. Note that this will only be fired on blur, tab-out, ENTER key press, etc.\n * It is generally the best event to subscribe to than `input` for most cases EXCEPT autocomplete fields that need to see every\n * keypress.\n */\n @Event({composed: true}) fieldChange: EventEmitter<string>;\n\n @State() focused = false;\n\n @Method() async focusField() {\n this.focused = true;\n this.el.focus();\n this.fieldFocus.emit(true);\n }\n\n handleBlur() {\n this.focused = false;\n this.fieldBlur.emit(true);\n }\n\n handleFocus() {\n this.focused = true;\n this.fieldFocus.emit(true);\n }\n\n handleChange(e: any) {\n this.fieldChange.emit(e.target.value);\n }\n\n render() {\n return (\n <Host class={{focused: this.focused, required: this.required}}>\n <select\n tabIndex={this.order}\n disabled={this.disabled}\n ref={el => (this.el = el)}\n onChange={e => this.handleChange(e)}\n onBlur={() => this.handleBlur()}\n onFocus={() => this.handleFocus()}\n >\n <option value=\"\">Select...</option>\n {this.options.map(option => (\n <option value={option.id} selected={option.value === this.value}>\n {option.value}\n </option>\n ))}\n </select>\n </Host>\n );\n }\n}\n","@import '../../../theme.scss';\n\nverdocs-field-initial {\n font-family: $verdocs-primary-font;\n width: 83px;\n height: 36px;\n display: block;\n font-size: 11px;\n letter-spacing: 0.3px;\n background-color: transparent;\n transform-origin: bottom left;\n border: 1px solid rgba(0, 0, 0, 0.2);\n\n img {\n display: block;\n max-width: 100%;\n max-height: 100%;\n }\n\n button {\n box-sizing: border-box;\n border: none;\n color: rgba(0, 0, 0, 0.87);\n font-weight: 500;\n transform-origin: 0 0;\n height: 100%;\n width: 100%;\n background: none;\n font-size: 11px;\n\n &.hide {\n display: none;\n }\n }\n\n &.required {\n border: 1px solid var(--verdocs-required-color);\n }\n\n &.focused {\n animation: verdocs-field-pulse 0.75s 2;\n }\n}\n","import {Component, Event, EventEmitter, h, Host, Method, Prop} from '@stencil/core';\n\n/**\n * Displays an initial field. If an initial already exists, it will be displayed and the field will be disabled. Otherwise, a placeholder\n * button will be shown. Clicking the button will show a dialog to adopt an initial.\n */\n@Component({\n tag: 'verdocs-field-initial',\n styleUrl: 'verdocs-field-initial.scss',\n shadow: false,\n})\nexport class VerdocsFieldInitial {\n /**\n * Whether the field is required.\n */\n @Prop() required: boolean = false;\n\n /**\n * The user's full name.\n */\n @Prop() fullName: string = '';\n\n /**\n * The base64 signature value.\n */\n @Prop() value: string = '';\n\n /**\n * Event emitted when an initial block is adopted by the user. The event detail will contain the base64 string of the initial image.\n */\n @Event({composed: true}) adopt: EventEmitter<string>;\n\n /**\n * Event emitted when the user cancels the process.\n */\n @Event({composed: true}) cancel: EventEmitter;\n\n @Method() async focusField() {\n this.handleShow();\n }\n\n private dialog?: any;\n\n handleShow() {\n this.dialog = document.createElement('verdocs-initial-dialog');\n this.dialog.open = true;\n this.dialog.fullName = this.fullName;\n this.dialog.addEventListener('cancel', () => {\n console.log('cancel');\n this.dialog?.remove();\n });\n document.addEventListener('adopt', e => {\n console.log('adopt', e);\n this.dialog?.remove();\n });\n document.body.append(this.dialog);\n }\n\n render() {\n return (\n <Host class={{required: this.required}}>\n {this.value !== '' ? (\n <img src={this.value} alt=\"Initials\" />\n ) : (\n <button class={{}} onClick={() => this.handleShow()}>\n Initial\n </button>\n )}\n </Host>\n );\n }\n}\n","@import '../../../theme.scss';\n\nverdocs-field-payment {\n font-family: $verdocs-primary-font;\n width: 24px;\n height: 24px;\n display: block;\n font-size: 11px;\n position: relative;\n border: 1px solid #cfa;\n background-color: transparent;\n transform-origin: bottom left;\n\n button,\n div {\n box-sizing: border-box;\n }\n\n button {\n color: rgba(0, 0, 0, 0.87);\n font-weight: 500;\n transform-origin: 0 0;\n //background-color: rgba(225, 255, 255, 0.5);\n height: 100%;\n width: 100%;\n background: none;\n font-size: 11px;\n\n &.hide {\n display: none;\n }\n }\n\n input {\n float: left;\n font-family: Arial, sans-serif;\n }\n\n select {\n position: absolute;\n font-family: Arial, sans-serif;\n background: linear-gradient(55deg, transparent 50%, #333 50%), linear-gradient(125deg, #333 50%, transparent 50%), linear-gradient(to right, transparent, transparent);\n background-position: calc(100% - 7px) 4px, calc(100% - 3px) 4px, 100% 0;\n background-size: 5px 5px, 5px 5px, 2.5em 2.5em;\n background-repeat: no-repeat;\n appearance: none;\n }\n\n .frame {\n width: 100%;\n height: 100%;\n background-size: contain;\n text-align: left;\n\n img {\n position: absolute;\n height: auto;\n width: 100%;\n }\n }\n\n &.focused {\n animation: verdocs-field-pulse 0.75s 2;\n }\n}\n","import {Component, h, Host, Prop, Event, EventEmitter, State} from '@stencil/core';\nimport {IDocumentField} from '@verdocs/js-sdk/Documents/Documents';\n\n/**\n * Displays a signature field. Various field types are supported, including traditional Signature and Initials types as well as\n * input types like text and checkbox.\n */\n@Component({\n tag: 'verdocs-field-payment',\n styleUrl: 'verdocs-field-payment.scss',\n shadow: false,\n})\nexport class VerdocsFieldPayment {\n /**\n * The field to display.\n */\n @Prop() field: IDocumentField;\n\n @Prop() fields: any[];\n @Prop() pageNum: number;\n @Prop() roleName: string;\n @Prop() fieldId: string;\n @Prop() recipients: any;\n @Prop() selectedRoleName: string;\n @Prop() pdfPages: any[];\n @Prop() currentSignature: string;\n @Prop() currentSignatureId: string;\n @Prop() currentInitial: string;\n @Prop() currentInitialId: string;\n @Prop() focused: boolean = false;\n @Prop() signed: boolean = false;\n\n @Event({composed: true}) signatureComplete: EventEmitter<string>;\n\n @Event({composed: true}) initialComplete: EventEmitter<string>;\n\n @State() preparedMessage: string;\n @State() signatureUrl: string = '';\n\n _fields: any[] = [];\n // envelopeFieldsFormGroup: FormGroup;\n signatureFile: any = null;\n initialFile: any = null;\n today: string;\n focusOrderNumber = -1;\n focusFieldName: string = '';\n timer: any;\n activeElement = null;\n showError = {\n pageNum: -1,\n fieldIndex: -1,\n type: null,\n };\n dialogOpened = false;\n closeAllErrors = false;\n fieldsMap: any = {};\n mode: string;\n\n fieldsForCurrentSigner: any[] = [];\n\n validators;\n fontSize = 11;\n averageFontWidth = 5;\n requiredFields: any[] = [];\n\n componentWillLoad() {\n // Load validators\n // Load fields\n // Get role names\n console.log('sign field', this.field);\n\n if (this.recipients && this.recipients.length > 0) {\n const preparer = this.recipients.find(r => r.type === 'preparer');\n console.log('Found preparer', preparer);\n if (preparer) {\n this.preparedMessage = `Prepared by ${preparer['full_name']}`;\n }\n }\n }\n\n // [tabIndex]=\"field.role !== roleName ? -1 : 1\"\n // [ngStyle]=\"field.element_style\"\n // [value]=\"field.value\"\n // (click)=\"initiateSign(field)\"\n // (blur)=\"validateChanges(field)\"\n // [disabled]=\"field.role!==roleName\"\n // [id]=\"field.key\"\n\n // <button _ngcontent-app-root-c342=\"\" class=\"envelope__field\" tabindex=\"1\" ng-reflect-ng-style=\"[object Object]\"\n // ng-reflect-ng-class=\"[object Object]\" value=\"\" id=\"signatureP5-1\"\n // style=\"height: 100%; width: 100%; background: none; font-size: 11px; border: 1px solid rgb(204, 0, 0);\"> Signature </button>\n\n // bottom: 229.333\n // px\n // ;\n // left: 169.333\n // px\n // ;\n // height: 41\n // px\n // ;\n // width: 82\n // px\n // ;\n // background-color: rgba(156, 39, 176, 0.4);\n // transform: scale(1.33333, 1.33333);\n // }\n // <style>\n // .envelope__item[_ngcontent-app-root-c342] {\n // position: absolute;\n // transform-origin: bottom left;\n // opacity: 1;\n\n render() {\n return (\n <Host class={{focused: this.focused, storybook: !!window?.['STORYBOOK_ENV']}}>\n <button class={{hide: this.signed}}>Payment</button>\n {this.signed ? <div class=\"frame\" /> : <div style={{display: 'none'}} />}\n <img width=\"100%\" height=\"100%\" src={this.signatureUrl} />\n </Host>\n );\n }\n}\n","@import '../../../theme.scss';\n\n$background-color: #f4f4f4;\n$color2: #55bc81;\n\n// See https://www.sliderrevolution.com/resources/styling-radio-buttons/\nverdocs-field-radio-button {\n font-family: $verdocs-primary-font;\n width: 14px;\n height: 14px;\n display: block;\n font-size: 11px;\n position: relative;\n background-color: transparent;\n transform-origin: bottom left;\n border-radius: 100%;\n\n input[type='radio'] {\n position: absolute;\n opacity: 0;\n\n + label {\n &:before {\n content: '';\n background: $background-color;\n border-radius: 100%;\n border: 1px solid rgba(0, 0, 0, 0.2);\n //border: 1px solid rgb(204, 0, 0);\n display: inline-block;\n width: 13px;\n height: 13px;\n position: relative;\n top: 2px;\n margin-right: 2px;\n vertical-align: top;\n cursor: pointer;\n text-align: center;\n transition: all 250ms ease;\n }\n }\n\n &:checked {\n + label {\n &:before {\n background-color: $color2;\n box-shadow: inset 0 0 0 2px $background-color;\n }\n }\n }\n\n &:focus {\n + label {\n &:before {\n outline: none;\n border-color: $color2;\n }\n }\n }\n\n &:disabled {\n + label {\n &:before {\n box-shadow: inset 0 0 0 4px $background-color;\n border-color: darken($background-color, 25%);\n background: darken($background-color, 25%);\n }\n }\n }\n\n + label {\n &:empty {\n &:before {\n margin-right: 0;\n }\n }\n }\n }\n\n &.required {\n input[type='radio'] {\n + label {\n &:before {\n border: 1px solid var(--verdocs-required-color);\n }\n }\n }\n }\n\n &.hide {\n display: none;\n }\n\n &.focused {\n animation: verdocs-field-pulse 0.75s 2;\n }\n}\n","import {Component, h, Host, Prop, Event, EventEmitter} from '@stencil/core';\n\n/**\n * Displays a radio button.\n */\n@Component({\n tag: 'verdocs-field-radio-button',\n styleUrl: 'verdocs-field-radio-button.scss',\n shadow: false,\n})\nexport class VerdocsFieldRadioButton {\n /**\n * Sets the tabIndex of the input element.\n */\n @Prop() order: number = 1;\n\n /**\n * Sets the value of the input element.\n */\n @Prop() checked: boolean = false;\n\n /**\n * Sets the value of the input element.\n */\n @Prop() value: string = '';\n\n /**\n * Sets the name of the input element.\n */\n @Prop() name: string = '';\n\n /**\n * If true, the field will be marked required.\n */\n @Prop() required: boolean = false;\n\n /**\n * Sets the disabled attribute of the input element.\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Event fired when the input field value changes. Note that this will only be fired on blur, tab-out, ENTER key press, etc.\n * It is generally the best event to subscribe to than `input` for most cases EXCEPT autocomplete fields that need to see every\n * keypress.\n */\n @Event({composed: true}) fieldChange: EventEmitter<string>;\n\n handleChange(e: any) {\n console.log('changed', e);\n this.fieldChange.emit(e.target.checked);\n }\n\n render() {\n return (\n <Host class={{required: this.required, storybook: !!window?.['STORYBOOK_ENV']}}>\n <input\n type=\"radio\"\n tabIndex={this.order}\n value={this.value}\n name={this.name}\n id={`${this.name}=${this.value}`}\n checked={this.checked}\n disabled={this.disabled}\n required={this.required}\n onChange={e => this.handleChange(e)}\n />\n <label htmlFor={`${this.name}=${this.value}`} />\n </Host>\n );\n }\n}\n","@import '../../../theme.scss';\n\nverdocs-field-signature {\n font-family: $verdocs-primary-font;\n width: 83px;\n height: 36px;\n display: block;\n font-size: 11px;\n position: relative;\n letter-spacing: 0.3px;\n background-color: transparent;\n transform-origin: bottom left;\n border: 1px solid rgba(0, 0, 0, 0.2);\n\n img {\n display: block;\n max-width: 100%;\n max-height: 100%;\n }\n\n button {\n box-sizing: border-box;\n border: none;\n color: rgba(0, 0, 0, 0.87);\n font-weight: 500;\n transform-origin: 0 0;\n height: 100%;\n width: 100%;\n background: none;\n font-size: 11px;\n\n &.hide {\n display: none;\n }\n }\n\n &.required {\n border: 1px solid var(--verdocs-required-color);\n }\n\n &.focused {\n animation: verdocs-field-pulse 0.75s 2;\n }\n}\n","import {Component, h, Host, Prop, Event, EventEmitter, Method} from '@stencil/core';\n\n/**\n * Displays a signature field. If a signature already exists, it will be displayed and the field will be disabled. Otherwise, a placeholder\n * button will be shown. Clicking the button will show a dialog to adopt a signature.\n */\n@Component({\n tag: 'verdocs-field-signature',\n styleUrl: 'verdocs-field-signature.scss',\n shadow: false,\n})\nexport class VerdocsFieldSignature {\n /**\n * Whether the field is required.\n */\n @Prop() required: boolean = false;\n\n /**\n * The user's full name.\n */\n @Prop() fullName: string = '';\n\n /**\n * The base64 signature value.\n */\n @Prop() value: string = '';\n\n /**\n * Event emitted when an initial block is adopted by the user. The event detail will contain the base64 string of the initial image.\n */\n @Event({composed: true}) adopt: EventEmitter<string>;\n\n /**\n * Event emitted when the user cancels the process.\n */\n @Event({composed: true}) cancel: EventEmitter;\n\n @Method() async focusField() {\n this.handleShow();\n }\n\n private dialog?: any;\n\n handleShow() {\n this.dialog = document.createElement('verdocs-signature-dialog');\n this.dialog.open = true;\n this.dialog.fullName = this.fullName;\n this.dialog.addEventListener('cancel', () => {\n console.log('cancel');\n this.dialog?.remove();\n });\n document.addEventListener('adopt', e => {\n console.log('adopt', e);\n this.dialog?.remove();\n });\n document.body.append(this.dialog);\n }\n\n render() {\n return (\n <Host class={{required: this.required}}>\n {this.value !== '' ? (\n <img src={this.value} alt=\"Signature\" />\n ) : (\n <button class={{}} onClick={() => this.handleShow()}>\n Signature\n </button>\n )}\n </Host>\n );\n }\n}\n","@import '../../../theme.scss';\n\nverdocs-field-textarea {\n font-family: $verdocs-primary-font;\n width: 150px;\n height: 15px;\n display: block;\n font-size: 11px;\n position: relative;\n background-color: transparent;\n transform-origin: bottom left;\n\n textarea {\n box-sizing: border-box;\n color: rgba(0, 0, 0, 0.87);\n font-weight: 500;\n transform-origin: 0 0;\n height: 100%;\n width: 100%;\n background: none;\n font-size: 11px;\n border: 1px solid rgba(0, 0, 0, 0.2);\n\n &.hide {\n display: none;\n }\n }\n\n &.required {\n border: 1px solid var(--verdocs-required-color);\n }\n\n &.focused {\n animation: verdocs-field-pulse 0.75s 2;\n }\n}\n","import {Component, h, Host, Prop, Event, EventEmitter, State, Method} from '@stencil/core';\n\n/**\n * Display a multi-line text input field.\n */\n@Component({\n tag: 'verdocs-field-textarea',\n styleUrl: 'verdocs-field-textarea.scss',\n shadow: false,\n})\nexport class VerdocsFieldTextarea {\n private el: HTMLTextAreaElement;\n\n /**\n * A placeholder to assist the user in completing the field.\n */\n @Prop() placeholder: string = '';\n\n /**\n * Sets the tabIndex of the input element.\n */\n @Prop() order: number = 1;\n\n /**\n * Sets the value of the input element.\n */\n @Prop() value: string = '';\n\n /**\n * If true, the field will be marked required.\n */\n @Prop() required: boolean = false;\n\n /**\n * Sets the disabled attribute of the input element.\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Event fired when the input field loses focus.\n */\n @Event({composed: true}) fieldFocus: EventEmitter<boolean>;\n\n /**\n * Event fired when the input field gains focus.\n */\n @Event({composed: true}) fieldBlur: EventEmitter<boolean>;\n\n /**\n * Event fired when the input field value changes. Note that this will only be fired on blur, tab-out, ENTER key press, etc.\n * It is generally the best event to subscribe to than `input` for most cases EXCEPT autocomplete fields that need to see every\n * keypress.\n */\n @Event({composed: true}) fieldChange: EventEmitter<string>;\n\n /**\n * Event fired on every character entered into / deleted from the field.\n */\n @Event({composed: true}) fieldInput: EventEmitter<string>;\n\n @State() focused = false;\n\n @Method() async focusField() {\n this.focused = true;\n this.el.focus();\n this.fieldFocus.emit(true);\n }\n\n handleBlur() {\n this.focused = false;\n this.fieldBlur.emit(true);\n }\n\n handleFocus() {\n this.focused = true;\n this.fieldFocus.emit(true);\n }\n\n handleChange(e: any) {\n this.fieldChange.emit(e.target.value);\n }\n\n handleInput(e: any) {\n this.fieldInput.emit(e.target.value);\n }\n\n render() {\n return (\n <Host class={{focused: this.focused, required: this.required, storybook: !!window?.['STORYBOOK_ENV']}}>\n <textarea\n placeholder={this.placeholder || ''}\n tabIndex={this.order}\n value={this.value}\n disabled={this.disabled}\n required={this.required}\n ref={el => (this.el = el)}\n onBlur={() => this.handleBlur()}\n onFocus={() => this.handleFocus()}\n onChange={e => this.handleChange(e)}\n onInput={e => this.handleInput(e)}\n />\n </Host>\n );\n }\n}\n","@import '../../../theme.scss';\n\nverdocs-field-textbox {\n font-family: $verdocs-primary-font;\n width: 150px;\n height: 15px;\n display: block;\n font-size: 11px;\n position: relative;\n background-color: transparent;\n transform-origin: bottom left;\n\n input {\n box-sizing: border-box;\n color: rgba(0, 0, 0, 0.87);\n font-weight: 500;\n transform-origin: 0 0;\n height: 100%;\n width: 100%;\n background: none;\n font-size: 11px;\n border: 1px solid rgba(0, 0, 0, 0.2);\n\n &.hide {\n display: none;\n }\n }\n\n &.required {\n border: 1px solid var(--verdocs-required-color);\n }\n\n &.focused {\n animation: verdocs-field-pulse 0.75s 2;\n }\n}\n","import {Component, h, Host, Prop, Event, EventEmitter, State, Method} from '@stencil/core';\n\n/**\n * Display a text input field.\n */\n@Component({\n tag: 'verdocs-field-textbox',\n styleUrl: 'verdocs-field-textbox.scss',\n shadow: false,\n})\nexport class VerdocsFieldTextbox {\n private el: HTMLInputElement;\n\n /**\n * A placeholder to assist the user in completing the field.\n */\n @Prop() placeholder: string = '';\n\n /**\n * Sets the tabIndex of the input element.\n */\n @Prop() order: number = 1;\n\n /**\n * Sets the value of the input element.\n */\n @Prop() value: string = '';\n\n /**\n * If true, the field will be marked required.\n */\n @Prop() required: boolean = false;\n\n /**\n * Sets the disabled attribute of the input element.\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Event fired when the input field loses focus.\n */\n @Event({composed: true}) fieldFocus: EventEmitter<boolean>;\n\n /**\n * Event fired when the input field gains focus.\n */\n @Event({composed: true}) fieldBlur: EventEmitter<boolean>;\n\n /**\n * Event fired when the input field value changes. Note that this will only be fired on blur, tab-out, ENTER key press, etc.\n * It is generally the best event to subscribe to than `input` for most cases EXCEPT autocomplete fields that need to see every\n * keypress.\n */\n @Event({composed: true}) fieldChange: EventEmitter<string>;\n\n /**\n * Event fired on every character entered into / deleted from the field.\n */\n @Event({composed: true}) fieldInput: EventEmitter<string>;\n\n @State() focused = false;\n\n @Method() async focusField() {\n this.focused = true;\n this.el.focus();\n this.fieldFocus.emit(true);\n }\n\n handleBlur() {\n this.focused = false;\n this.fieldBlur.emit(true);\n }\n\n handleFocus() {\n this.focused = true;\n this.fieldFocus.emit(true);\n }\n\n handleChange(e: any) {\n this.fieldChange.emit(e.target.value);\n }\n\n handleInput(e: any) {\n this.fieldInput.emit(e.target.value);\n }\n\n render() {\n return (\n <Host class={{focused: this.focused, required: this.required}}>\n <input\n type=\"text\"\n placeholder={this.placeholder || ''}\n tabIndex={this.order}\n value={this.value}\n disabled={this.disabled}\n required={this.required}\n ref={el => (this.el = el)}\n onBlur={() => this.handleBlur()}\n onFocus={() => this.handleFocus()}\n onChange={e => this.handleChange(e)}\n onInput={e => this.handleInput(e)}\n />\n </Host>\n );\n }\n}\n","/**\n * @licstart The following is the entire license notice for the\n * JavaScript code in this page\n *\n * Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * JavaScript code in this page\n */\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf\"] = root.pdfjsLib = factory();\n})(globalThis, () => {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ([\n/* 0 */,\n/* 1 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.VerbosityLevel = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.UNSUPPORTED_FEATURES = exports.TextRenderingMode = exports.StreamType = exports.RenderingIntentFlag = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.PageActionEventType = exports.OPS = exports.MissingPDFException = exports.LINE_FACTOR = exports.LINE_DESCENT_FACTOR = exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = exports.FontType = exports.FeatureTest = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = exports.CMapCompressionType = exports.BaseException = exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = exports.AnnotationMode = exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationEditorType = exports.AnnotationEditorPrefix = exports.AnnotationEditorParamsType = exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0;\nexports.arrayByteLength = arrayByteLength;\nexports.arraysToBytes = arraysToBytes;\nexports.assert = assert;\nexports.bytesToString = bytesToString;\nexports.createPromiseCapability = createPromiseCapability;\nexports.createValidAbsoluteUrl = createValidAbsoluteUrl;\nexports.escapeString = escapeString;\nexports.getModificationDate = getModificationDate;\nexports.getVerbosityLevel = getVerbosityLevel;\nexports.info = info;\nexports.isArrayBuffer = isArrayBuffer;\nexports.isArrayEqual = isArrayEqual;\nexports.isAscii = isAscii;\nexports.objectFromMap = objectFromMap;\nexports.objectSize = objectSize;\nexports.setVerbosityLevel = setVerbosityLevel;\nexports.shadow = shadow;\nexports.string32 = string32;\nexports.stringToBytes = stringToBytes;\nexports.stringToPDFString = stringToPDFString;\nexports.stringToUTF16BEString = stringToUTF16BEString;\nexports.stringToUTF8String = stringToUTF8String;\nexports.unreachable = unreachable;\nexports.utf8StringToString = utf8StringToString;\nexports.warn = warn;\n\n__w_pdfjs_require__(2);\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nexports.IDENTITY_MATRIX = IDENTITY_MATRIX;\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nexports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX;\nconst LINE_FACTOR = 1.35;\nexports.LINE_FACTOR = LINE_FACTOR;\nconst LINE_DESCENT_FACTOR = 0.35;\nexports.LINE_DESCENT_FACTOR = LINE_DESCENT_FACTOR;\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n OPLIST: 0x100\n};\nexports.RenderingIntentFlag = RenderingIntentFlag;\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3\n};\nexports.AnnotationMode = AnnotationMode;\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\nexports.AnnotationEditorPrefix = AnnotationEditorPrefix;\nconst AnnotationEditorType = {\n DISABLE: -1,\n NONE: 0,\n FREETEXT: 3,\n INK: 15\n};\nexports.AnnotationEditorType = AnnotationEditorType;\nconst AnnotationEditorParamsType = {\n FREETEXT_SIZE: 1,\n FREETEXT_COLOR: 2,\n FREETEXT_OPACITY: 3,\n INK_COLOR: 11,\n INK_THICKNESS: 12,\n INK_OPACITY: 13\n};\nexports.AnnotationEditorParamsType = AnnotationEditorParamsType;\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800\n};\nexports.PermissionFlag = PermissionFlag;\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4\n};\nexports.TextRenderingMode = TextRenderingMode;\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3\n};\nexports.ImageKind = ImageKind;\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26\n};\nexports.AnnotationType = AnnotationType;\nconst AnnotationStateModelType = {\n MARKED: \"Marked\",\n REVIEW: \"Review\"\n};\nexports.AnnotationStateModelType = AnnotationStateModelType;\nconst AnnotationMarkedState = {\n MARKED: \"Marked\",\n UNMARKED: \"Unmarked\"\n};\nexports.AnnotationMarkedState = AnnotationMarkedState;\nconst AnnotationReviewState = {\n ACCEPTED: \"Accepted\",\n REJECTED: \"Rejected\",\n CANCELLED: \"Cancelled\",\n COMPLETED: \"Completed\",\n NONE: \"None\"\n};\nexports.AnnotationReviewState = AnnotationReviewState;\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\"\n};\nexports.AnnotationReplyType = AnnotationReplyType;\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200\n};\nexports.AnnotationFlag = AnnotationFlag;\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000\n};\nexports.AnnotationFieldFlag = AnnotationFieldFlag;\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5\n};\nexports.AnnotationBorderStyleType = AnnotationBorderStyleType;\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\"\n};\nexports.AnnotationActionEventType = AnnotationActionEventType;\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\"\n};\nexports.DocumentActionEventType = DocumentActionEventType;\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\"\n};\nexports.PageActionEventType = PageActionEventType;\nconst StreamType = {\n UNKNOWN: \"UNKNOWN\",\n FLATE: \"FLATE\",\n LZW: \"LZW\",\n DCT: \"DCT\",\n JPX: \"JPX\",\n JBIG: \"JBIG\",\n A85: \"A85\",\n AHX: \"AHX\",\n CCF: \"CCF\",\n RLX: \"RLX\"\n};\nexports.StreamType = StreamType;\nconst FontType = {\n UNKNOWN: \"UNKNOWN\",\n TYPE1: \"TYPE1\",\n TYPE1STANDARD: \"TYPE1STANDARD\",\n TYPE1C: \"TYPE1C\",\n CIDFONTTYPE0: \"CIDFONTTYPE0\",\n CIDFONTTYPE0C: \"CIDFONTTYPE0C\",\n TRUETYPE: \"TRUETYPE\",\n CIDFONTTYPE2: \"CIDFONTTYPE2\",\n TYPE3: \"TYPE3\",\n OPENTYPE: \"OPENTYPE\",\n TYPE0: \"TYPE0\",\n MMTYPE1: \"MMTYPE1\"\n};\nexports.FontType = FontType;\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5\n};\nexports.VerbosityLevel = VerbosityLevel;\nconst CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n STREAM: 2\n};\nexports.CMapCompressionType = CMapCompressionType;\nconst OPS = {\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotations: 78,\n endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n paintJpegXObject: 82,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91\n};\nexports.OPS = OPS;\nconst UNSUPPORTED_FEATURES = {\n unknown: \"unknown\",\n forms: \"forms\",\n javaScript: \"javaScript\",\n signatures: \"signatures\",\n smask: \"smask\",\n shadingPattern: \"shadingPattern\",\n font: \"font\",\n errorTilingPattern: \"errorTilingPattern\",\n errorExtGState: \"errorExtGState\",\n errorXObject: \"errorXObject\",\n errorFontLoadType3: \"errorFontLoadType3\",\n errorFontState: \"errorFontState\",\n errorFontMissing: \"errorFontMissing\",\n errorFontTranslate: \"errorFontTranslate\",\n errorColorSpace: \"errorColorSpace\",\n errorOperatorList: \"errorOperatorList\",\n errorFontToUnicode: \"errorFontToUnicode\",\n errorFontLoadNative: \"errorFontLoadNative\",\n errorFontBuildPath: \"errorFontBuildPath\",\n errorFontGetPath: \"errorFontGetPath\",\n errorMarkedContent: \"errorMarkedContent\",\n errorContentSubStream: \"errorContentSubStream\"\n};\nexports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES;\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2\n};\nexports.PasswordResponses = PasswordResponses;\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\n\nfunction getVerbosityLevel() {\n return verbosity;\n}\n\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\n\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\n\nfunction unreachable(msg) {\n throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\n\nfunction _isValidProtocol(url) {\n if (!url) {\n return false;\n }\n\n switch (url.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n\n default:\n return false;\n }\n}\n\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n\n try {\n if (options && typeof url === \"string\") {\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n\n if (dots && dots.length >= 2) {\n url = `http://${url}`;\n }\n }\n\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch (ex) {}\n }\n }\n\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch (ex) {}\n\n return null;\n}\n\nfunction shadow(obj, prop, value) {\n Object.defineProperty(obj, prop, {\n value,\n enumerable: true,\n configurable: true,\n writable: false\n });\n return value;\n}\n\nconst BaseException = function BaseExceptionClosure() {\n function BaseException(message, name) {\n if (this.constructor === BaseException) {\n unreachable(\"Cannot initialize BaseException.\");\n }\n\n this.message = message;\n this.name = name;\n }\n\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n return BaseException;\n}();\n\nexports.BaseException = BaseException;\n\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n\n}\n\nexports.PasswordException = PasswordException;\n\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n\n}\n\nexports.UnknownErrorException = UnknownErrorException;\n\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n\n}\n\nexports.InvalidPDFException = InvalidPDFException;\n\nclass MissingPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"MissingPDFException\");\n }\n\n}\n\nexports.MissingPDFException = MissingPDFException;\n\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg, \"UnexpectedResponseException\");\n this.status = status;\n }\n\n}\n\nexports.UnexpectedResponseException = UnexpectedResponseException;\n\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n\n}\n\nexports.FormatError = FormatError;\n\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n\n}\n\nexports.AbortException = AbortException;\n\nfunction bytesToString(bytes) {\n if (typeof bytes !== \"object\" || bytes === null || bytes.length === undefined) {\n unreachable(\"Invalid argument for bytesToString\");\n }\n\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n\n const strBuf = [];\n\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n\n return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n\n const length = str.length;\n const bytes = new Uint8Array(length);\n\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n\n return bytes;\n}\n\nfunction arrayByteLength(arr) {\n if (arr.length !== undefined) {\n return arr.length;\n }\n\n if (arr.byteLength !== undefined) {\n return arr.byteLength;\n }\n\n unreachable(\"Invalid argument for arrayByteLength\");\n}\n\nfunction arraysToBytes(arr) {\n const length = arr.length;\n\n if (length === 1 && arr[0] instanceof Uint8Array) {\n return arr[0];\n }\n\n let resultLength = 0;\n\n for (let i = 0; i < length; i++) {\n resultLength += arrayByteLength(arr[i]);\n }\n\n let pos = 0;\n const data = new Uint8Array(resultLength);\n\n for (let i = 0; i < length; i++) {\n let item = arr[i];\n\n if (!(item instanceof Uint8Array)) {\n if (typeof item === \"string\") {\n item = stringToBytes(item);\n } else {\n item = new Uint8Array(item);\n }\n }\n\n const itemLength = item.byteLength;\n data.set(item, pos);\n pos += itemLength;\n }\n\n return data;\n}\n\nfunction string32(value) {\n return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n}\n\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\n\nfunction objectFromMap(map) {\n const obj = Object.create(null);\n\n for (const [key, value] of map) {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\n\nfunction isEvalSupported() {\n try {\n new Function(\"\");\n return true;\n } catch (e) {\n return false;\n }\n}\n\nclass FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", isLittleEndian());\n }\n\n static get isEvalSupported() {\n return shadow(this, \"isEvalSupported\", isEvalSupported());\n }\n\n static get isOffscreenCanvasSupported() {\n return shadow(this, \"isOffscreenCanvasSupported\", typeof OffscreenCanvas !== \"undefined\");\n }\n\n}\n\nexports.FeatureTest = FeatureTest;\nconst hexNumbers = [...Array(256).keys()].map(n => n.toString(16).padStart(2, \"0\"));\n\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n\n static scaleMinMax(transform, minMax) {\n let temp;\n\n if (transform[0]) {\n if (transform[0] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n }\n\n minMax[0] *= transform[0];\n minMax[1] *= transform[0];\n\n if (transform[3] < 0) {\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n }\n\n minMax[2] *= transform[3];\n minMax[3] *= transform[3];\n } else {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n\n if (transform[1] < 0) {\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n }\n\n minMax[2] *= transform[1];\n minMax[3] *= transform[1];\n\n if (transform[2] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n }\n\n minMax[0] *= transform[2];\n minMax[1] *= transform[2];\n }\n\n minMax[0] += transform[4];\n minMax[1] += transform[4];\n minMax[2] += transform[5];\n minMax[3] += transform[5];\n }\n\n static transform(m1, m2) {\n return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];\n }\n\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = Util.applyTransform(r, m);\n const p2 = Util.applyTransform(r.slice(2, 4), m);\n const p3 = Util.applyTransform([r[0], r[3]], m);\n const p4 = Util.applyTransform([r[2], r[1]], m);\n return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])];\n }\n\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n }\n\n static apply3dTransform(m, v) {\n return [m[0] * v[0] + m[1] * v[1] + m[2] * v[2], m[3] * v[0] + m[4] * v[1] + m[5] * v[2], m[6] * v[0] + m[7] * v[1] + m[8] * v[2]];\n }\n\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n\n static normalizeRect(rect) {\n const r = rect.slice(0);\n\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n\n return r;\n }\n\n static intersect(rect1, rect2) {\n const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2]));\n const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2]));\n\n if (xLow > xHigh) {\n return null;\n }\n\n const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3]));\n const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3]));\n\n if (yLow > yHigh) {\n return null;\n }\n\n return [xLow, yLow, xHigh, yHigh];\n }\n\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {\n const tvalues = [],\n bounds = [[], []];\n let a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n\n for (let i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n } else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n\n t = -c / b;\n\n if (0 < t && t < 1) {\n tvalues.push(t);\n }\n\n continue;\n }\n\n b2ac = b * b - 4 * c * a;\n sqrtb2ac = Math.sqrt(b2ac);\n\n if (b2ac < 0) {\n continue;\n }\n\n t1 = (-b + sqrtb2ac) / (2 * a);\n\n if (0 < t1 && t1 < 1) {\n tvalues.push(t1);\n }\n\n t2 = (-b - sqrtb2ac) / (2 * a);\n\n if (0 < t2 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n\n let j = tvalues.length,\n mt;\n const jlen = j;\n\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] = mt * mt * mt * x0 + 3 * mt * mt * t * x1 + 3 * mt * t * t * x2 + t * t * t * x3;\n bounds[1][j] = mt * mt * mt * y0 + 3 * mt * mt * t * y1 + 3 * mt * t * t * y2 + t * t * t * y3;\n }\n\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n return [Math.min(...bounds[0]), Math.min(...bounds[1]), Math.max(...bounds[0]), Math.max(...bounds[1])];\n }\n\n}\n\nexports.Util = Util;\nconst PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac];\n\nfunction stringToPDFString(str) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = stringToBytes(str);\n return decoder.decode(buffer);\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n\n const strBuf = [];\n\n for (let i = 0, ii = str.length; i < ii; i++) {\n const code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n\n return strBuf.join(\"\");\n}\n\nfunction escapeString(str) {\n return str.replace(/([()\\\\\\n\\r])/g, match => {\n if (match === \"\\n\") {\n return \"\\\\n\";\n } else if (match === \"\\r\") {\n return \"\\\\r\";\n }\n\n return `\\\\${match}`;\n });\n}\n\nfunction isAscii(str) {\n return /^[\\x00-\\x7F]*$/.test(str);\n}\n\nfunction stringToUTF16BEString(str) {\n const buf = [\"\\xFE\\xFF\"];\n\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n buf.push(String.fromCharCode(char >> 8 & 0xff), String.fromCharCode(char & 0xff));\n }\n\n return buf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\n\nfunction isArrayBuffer(v) {\n return typeof v === \"object\" && v !== null && v.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction getModificationDate(date = new Date()) {\n const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, \"0\"), date.getUTCDate().toString().padStart(2, \"0\"), date.getUTCHours().toString().padStart(2, \"0\"), date.getUTCMinutes().toString().padStart(2, \"0\"), date.getUTCSeconds().toString().padStart(2, \"0\")];\n return buffer.join(\"\");\n}\n\nfunction createPromiseCapability() {\n const capability = Object.create(null);\n let isSettled = false;\n Object.defineProperty(capability, \"settled\", {\n get() {\n return isSettled;\n }\n\n });\n capability.promise = new Promise(function (resolve, reject) {\n capability.resolve = function (data) {\n isSettled = true;\n resolve(data);\n };\n\n capability.reject = function (reason) {\n isSettled = true;\n reject(reason);\n };\n });\n return capability;\n}\n\n/***/ }),\n/* 2 */\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\n\n\nvar _is_node = __w_pdfjs_require__(3);\n\n;\n\n/***/ }),\n/* 3 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.isNodeJS = void 0;\nconst isNodeJS = typeof process === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== \"browser\");\nexports.isNodeJS = isNodeJS;\n\n/***/ }),\n/* 4 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.StatTimer = exports.RenderingCancelledException = exports.PixelsPerInch = exports.PageViewport = exports.PDFDateString = exports.DOMStandardFontDataFactory = exports.DOMSVGFactory = exports.DOMCanvasFactory = exports.DOMCMapReaderFactory = void 0;\nexports.binarySearchFirstItem = binarySearchFirstItem;\nexports.deprecated = deprecated;\nexports.getColorValues = getColorValues;\nexports.getFilenameFromUrl = getFilenameFromUrl;\nexports.getPdfFilenameFromUrl = getPdfFilenameFromUrl;\nexports.getRGB = getRGB;\nexports.getXfaPageViewport = getXfaPageViewport;\nexports.isDataScheme = isDataScheme;\nexports.isPdfFile = isPdfFile;\nexports.isValidFetchUrl = isValidFetchUrl;\nexports.loadScript = loadScript;\n\nvar _base_factory = __w_pdfjs_require__(5);\n\nvar _util = __w_pdfjs_require__(1);\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\n\nclass PixelsPerInch {\n static CSS = 96.0;\n static PDF = 72.0;\n static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\n\nexports.PixelsPerInch = PixelsPerInch;\n\nclass DOMCanvasFactory extends _base_factory.BaseCanvasFactory {\n constructor({\n ownerDocument = globalThis.document\n } = {}) {\n super();\n this._document = ownerDocument;\n }\n\n _createCanvas(width, height) {\n const canvas = this._document.createElement(\"canvas\");\n\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n\n}\n\nexports.DOMCanvasFactory = DOMCanvasFactory;\n\nasync function fetchData(url, asTypedArray = false) {\n if (isValidFetchUrl(url, document.baseURI)) {\n const response = await fetch(url);\n\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n\n return asTypedArray ? new Uint8Array(await response.arrayBuffer()) : (0, _util.stringToBytes)(await response.text());\n }\n\n return new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open(\"GET\", url, true);\n\n if (asTypedArray) {\n request.responseType = \"arraybuffer\";\n }\n\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n\n if (request.status === 200 || request.status === 0) {\n let data;\n\n if (asTypedArray && request.response) {\n data = new Uint8Array(request.response);\n } else if (!asTypedArray && request.responseText) {\n data = (0, _util.stringToBytes)(request.responseText);\n }\n\n if (data) {\n resolve(data);\n return;\n }\n }\n\n reject(new Error(request.statusText));\n };\n\n request.send(null);\n });\n}\n\nclass DOMCMapReaderFactory extends _base_factory.BaseCMapReaderFactory {\n _fetchData(url, compressionType) {\n return fetchData(url, this.isCompressed).then(data => {\n return {\n cMapData: data,\n compressionType\n };\n });\n }\n\n}\n\nexports.DOMCMapReaderFactory = DOMCMapReaderFactory;\n\nclass DOMStandardFontDataFactory extends _base_factory.BaseStandardFontDataFactory {\n _fetchData(url) {\n return fetchData(url, true);\n }\n\n}\n\nexports.DOMStandardFontDataFactory = DOMStandardFontDataFactory;\n\nclass DOMSVGFactory extends _base_factory.BaseSVGFactory {\n _createSVG(type) {\n return document.createElementNS(SVG_NS, type);\n }\n\n}\n\nexports.DOMSVGFactory = DOMSVGFactory;\n\nclass PageViewport {\n constructor({\n viewBox,\n scale,\n rotation,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n }) {\n this.viewBox = viewBox;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n const centerX = (viewBox[2] + viewBox[0]) / 2;\n const centerY = (viewBox[3] + viewBox[1]) / 2;\n let rotateA, rotateB, rotateC, rotateD;\n rotation %= 360;\n\n if (rotation < 0) {\n rotation += 360;\n }\n\n switch (rotation) {\n case 180:\n rotateA = -1;\n rotateB = 0;\n rotateC = 0;\n rotateD = 1;\n break;\n\n case 90:\n rotateA = 0;\n rotateB = 1;\n rotateC = 1;\n rotateD = 0;\n break;\n\n case 270:\n rotateA = 0;\n rotateB = -1;\n rotateC = -1;\n rotateD = 0;\n break;\n\n case 0:\n rotateA = 1;\n rotateB = 0;\n rotateC = 0;\n rotateD = -1;\n break;\n\n default:\n throw new Error(\"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\");\n }\n\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\n }\n\n let offsetCanvasX, offsetCanvasY;\n let width, height;\n\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = Math.abs(viewBox[3] - viewBox[1]) * scale;\n height = Math.abs(viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = Math.abs(viewBox[2] - viewBox[0]) * scale;\n height = Math.abs(viewBox[3] - viewBox[1]) * scale;\n }\n\n this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];\n this.width = width;\n this.height = height;\n }\n\n clone({\n scale = this.scale,\n rotation = this.rotation,\n offsetX = this.offsetX,\n offsetY = this.offsetY,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n\n convertToViewportPoint(x, y) {\n return _util.Util.applyTransform([x, y], this.transform);\n }\n\n convertToViewportRectangle(rect) {\n const topLeft = _util.Util.applyTransform([rect[0], rect[1]], this.transform);\n\n const bottomRight = _util.Util.applyTransform([rect[2], rect[3]], this.transform);\n\n return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n }\n\n convertToPdfPoint(x, y) {\n return _util.Util.applyInverseTransform([x, y], this.transform);\n }\n\n}\n\nexports.PageViewport = PageViewport;\n\nclass RenderingCancelledException extends _util.BaseException {\n constructor(msg, type) {\n super(msg, \"RenderingCancelledException\");\n this.type = type;\n }\n\n}\n\nexports.RenderingCancelledException = RenderingCancelledException;\n\nfunction isDataScheme(url) {\n const ii = url.length;\n let i = 0;\n\n while (i < ii && url[i].trim() === \"\") {\n i++;\n }\n\n return url.substring(i, i + 5).toLowerCase() === \"data:\";\n}\n\nfunction isPdfFile(filename) {\n return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\n\nfunction getFilenameFromUrl(url) {\n const anchor = url.indexOf(\"#\");\n const query = url.indexOf(\"?\");\n const end = Math.min(anchor > 0 ? anchor : url.length, query > 0 ? query : url.length);\n return url.substring(url.lastIndexOf(\"/\", end) + 1, end);\n}\n\nfunction getPdfFilenameFromUrl(url, defaultFilename = \"document.pdf\") {\n if (typeof url !== \"string\") {\n return defaultFilename;\n }\n\n if (isDataScheme(url)) {\n (0, _util.warn)('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n return defaultFilename;\n }\n\n const reURI = /^(?:(?:[^:]+:)?\\/\\/[^/]+)?([^?#]*)(\\?[^#]*)?(#.*)?$/;\n const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n const splitURI = reURI.exec(url);\n let suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]);\n\n if (suggestedFilename) {\n suggestedFilename = suggestedFilename[0];\n\n if (suggestedFilename.includes(\"%\")) {\n try {\n suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0];\n } catch (ex) {}\n }\n }\n\n return suggestedFilename || defaultFilename;\n}\n\nclass StatTimer {\n constructor() {\n this.started = Object.create(null);\n this.times = [];\n }\n\n time(name) {\n if (name in this.started) {\n (0, _util.warn)(`Timer is already running for ${name}`);\n }\n\n this.started[name] = Date.now();\n }\n\n timeEnd(name) {\n if (!(name in this.started)) {\n (0, _util.warn)(`Timer has not been started for ${name}`);\n }\n\n this.times.push({\n name,\n start: this.started[name],\n end: Date.now()\n });\n delete this.started[name];\n }\n\n toString() {\n const outBuf = [];\n let longest = 0;\n\n for (const time of this.times) {\n const name = time.name;\n\n if (name.length > longest) {\n longest = name.length;\n }\n }\n\n for (const time of this.times) {\n const duration = time.end - time.start;\n outBuf.push(`${time.name.padEnd(longest)} ${duration}ms\\n`);\n }\n\n return outBuf.join(\"\");\n }\n\n}\n\nexports.StatTimer = StatTimer;\n\nfunction isValidFetchUrl(url, baseUrl) {\n try {\n const {\n protocol\n } = baseUrl ? new URL(url, baseUrl) : new URL(url);\n return protocol === \"http:\" || protocol === \"https:\";\n } catch (ex) {\n return false;\n }\n}\n\nfunction loadScript(src, removeScriptElement = false) {\n return new Promise((resolve, reject) => {\n const script = document.createElement(\"script\");\n script.src = src;\n\n script.onload = function (evt) {\n if (removeScriptElement) {\n script.remove();\n }\n\n resolve(evt);\n };\n\n script.onerror = function () {\n reject(new Error(`Cannot load script at: ${script.src}`));\n };\n\n (document.head || document.documentElement).append(script);\n });\n}\n\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\n\nlet pdfDateStringRegex;\n\nclass PDFDateString {\n static toDateObject(input) {\n if (!input || typeof input !== \"string\") {\n return null;\n }\n\n if (!pdfDateStringRegex) {\n pdfDateStringRegex = new RegExp(\"^D:\" + \"(\\\\d{4})\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"([Z|+|-])?\" + \"(\\\\d{2})?\" + \"'?\" + \"(\\\\d{2})?\" + \"'?\");\n }\n\n const matches = pdfDateStringRegex.exec(input);\n\n if (!matches) {\n return null;\n }\n\n const year = parseInt(matches[1], 10);\n let month = parseInt(matches[2], 10);\n month = month >= 1 && month <= 12 ? month - 1 : 0;\n let day = parseInt(matches[3], 10);\n day = day >= 1 && day <= 31 ? day : 1;\n let hour = parseInt(matches[4], 10);\n hour = hour >= 0 && hour <= 23 ? hour : 0;\n let minute = parseInt(matches[5], 10);\n minute = minute >= 0 && minute <= 59 ? minute : 0;\n let second = parseInt(matches[6], 10);\n second = second >= 0 && second <= 59 ? second : 0;\n const universalTimeRelation = matches[7] || \"Z\";\n let offsetHour = parseInt(matches[8], 10);\n offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n let offsetMinute = parseInt(matches[9], 10) || 0;\n offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n\n if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n\n}\n\nexports.PDFDateString = PDFDateString;\n\nfunction getXfaPageViewport(xfaPage, {\n scale = 1,\n rotation = 0\n}) {\n const {\n width,\n height\n } = xfaPage.attributes.style;\n const viewBox = [0, 0, parseInt(width), parseInt(height)];\n return new PageViewport({\n viewBox,\n scale,\n rotation\n });\n}\n\nfunction getRGB(color) {\n if (color.startsWith(\"#\")) {\n const colorRGB = parseInt(color.slice(1), 16);\n return [(colorRGB & 0xff0000) >> 16, (colorRGB & 0x00ff00) >> 8, colorRGB & 0x0000ff];\n }\n\n if (color.startsWith(\"rgb(\")) {\n return color.slice(4, -1).split(\",\").map(x => parseInt(x));\n }\n\n if (color.startsWith(\"rgba(\")) {\n return color.slice(5, -1).split(\",\").map(x => parseInt(x)).slice(0, 3);\n }\n\n (0, _util.warn)(`Not a valid color format: \"${color}\"`);\n return [0, 0, 0];\n}\n\nfunction getColorValues(colors) {\n const span = document.createElement(\"span\");\n span.style.visibility = \"hidden\";\n document.body.append(span);\n\n for (const name of colors.keys()) {\n span.style.color = name;\n const computedColor = window.getComputedStyle(span).color;\n colors.set(name, getRGB(computedColor));\n }\n\n span.remove();\n}\n\nfunction binarySearchFirstItem(items, condition, start = 0) {\n let minIndex = start;\n let maxIndex = items.length - 1;\n\n if (maxIndex < 0 || !condition(items[maxIndex])) {\n return items.length;\n }\n\n if (condition(items[minIndex])) {\n return minIndex;\n }\n\n while (minIndex < maxIndex) {\n const currentIndex = minIndex + maxIndex >> 1;\n const currentItem = items[currentIndex];\n\n if (condition(currentItem)) {\n maxIndex = currentIndex;\n } else {\n minIndex = currentIndex + 1;\n }\n }\n\n return minIndex;\n}\n\n/***/ }),\n/* 5 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.BaseStandardFontDataFactory = exports.BaseSVGFactory = exports.BaseCanvasFactory = exports.BaseCMapReaderFactory = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nclass BaseCanvasFactory {\n constructor() {\n if (this.constructor === BaseCanvasFactory) {\n (0, _util.unreachable)(\"Cannot initialize BaseCanvasFactory.\");\n }\n }\n\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n\n const canvas = this._createCanvas(width, height);\n\n return {\n canvas,\n context: canvas.getContext(\"2d\")\n };\n }\n\n reset(canvasAndContext, width, height) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n\n canvasAndContext.canvas.width = width;\n canvasAndContext.canvas.height = height;\n }\n\n destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n\n _createCanvas(width, height) {\n (0, _util.unreachable)(\"Abstract method `_createCanvas` called.\");\n }\n\n}\n\nexports.BaseCanvasFactory = BaseCanvasFactory;\n\nclass BaseCMapReaderFactory {\n constructor({\n baseUrl = null,\n isCompressed = false\n }) {\n if (this.constructor === BaseCMapReaderFactory) {\n (0, _util.unreachable)(\"Cannot initialize BaseCMapReaderFactory.\");\n }\n\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n\n async fetch({\n name\n }) {\n if (!this.baseUrl) {\n throw new Error('The CMap \"baseUrl\" parameter must be specified, ensure that ' + 'the \"cMapUrl\" and \"cMapPacked\" API parameters are provided.');\n }\n\n if (!name) {\n throw new Error(\"CMap name must be specified.\");\n }\n\n const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n const compressionType = this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE;\n return this._fetchData(url, compressionType).catch(reason => {\n throw new Error(`Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`);\n });\n }\n\n _fetchData(url, compressionType) {\n (0, _util.unreachable)(\"Abstract method `_fetchData` called.\");\n }\n\n}\n\nexports.BaseCMapReaderFactory = BaseCMapReaderFactory;\n\nclass BaseStandardFontDataFactory {\n constructor({\n baseUrl = null\n }) {\n if (this.constructor === BaseStandardFontDataFactory) {\n (0, _util.unreachable)(\"Cannot initialize BaseStandardFontDataFactory.\");\n }\n\n this.baseUrl = baseUrl;\n }\n\n async fetch({\n filename\n }) {\n if (!this.baseUrl) {\n throw new Error('The standard font \"baseUrl\" parameter must be specified, ensure that ' + 'the \"standardFontDataUrl\" API parameter is provided.');\n }\n\n if (!filename) {\n throw new Error(\"Font filename must be specified.\");\n }\n\n const url = `${this.baseUrl}${filename}`;\n return this._fetchData(url).catch(reason => {\n throw new Error(`Unable to load font data at: ${url}`);\n });\n }\n\n _fetchData(url) {\n (0, _util.unreachable)(\"Abstract method `_fetchData` called.\");\n }\n\n}\n\nexports.BaseStandardFontDataFactory = BaseStandardFontDataFactory;\n\nclass BaseSVGFactory {\n constructor() {\n if (this.constructor === BaseSVGFactory) {\n (0, _util.unreachable)(\"Cannot initialize BaseSVGFactory.\");\n }\n }\n\n create(width, height, skipDimensions = false) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid SVG dimensions\");\n }\n\n const svg = this._createSVG(\"svg:svg\");\n\n svg.setAttribute(\"version\", \"1.1\");\n\n if (!skipDimensions) {\n svg.setAttribute(\"width\", `${width}px`);\n svg.setAttribute(\"height\", `${height}px`);\n }\n\n svg.setAttribute(\"preserveAspectRatio\", \"none\");\n svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n return svg;\n }\n\n createElement(type) {\n if (typeof type !== \"string\") {\n throw new Error(\"Invalid SVG element type\");\n }\n\n return this._createSVG(type);\n }\n\n _createSVG(type) {\n (0, _util.unreachable)(\"Abstract method `_createSVG` called.\");\n }\n\n}\n\nexports.BaseSVGFactory = BaseSVGFactory;\n\n/***/ }),\n/* 6 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.build = exports.RenderTask = exports.PDFWorkerUtil = exports.PDFWorker = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFDocumentLoadingTask = exports.PDFDataRangeTransport = exports.LoopbackPort = exports.DefaultStandardFontDataFactory = exports.DefaultCanvasFactory = exports.DefaultCMapReaderFactory = void 0;\nexports.getDocument = getDocument;\nexports.setPDFNetworkStreamFactory = setPDFNetworkStreamFactory;\nexports.version = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _annotation_storage = __w_pdfjs_require__(7);\n\nvar _display_utils = __w_pdfjs_require__(4);\n\nvar _font_loader = __w_pdfjs_require__(11);\n\nvar _canvas = __w_pdfjs_require__(12);\n\nvar _worker_options = __w_pdfjs_require__(15);\n\nvar _is_node = __w_pdfjs_require__(3);\n\nvar _message_handler = __w_pdfjs_require__(16);\n\nvar _metadata = __w_pdfjs_require__(17);\n\nvar _optional_content_config = __w_pdfjs_require__(18);\n\nvar _transport_stream = __w_pdfjs_require__(19);\n\nvar _xfa_text = __w_pdfjs_require__(20);\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536;\nconst RENDERING_CANCELLED_TIMEOUT = 100;\nlet DefaultCanvasFactory = _display_utils.DOMCanvasFactory;\nexports.DefaultCanvasFactory = DefaultCanvasFactory;\nlet DefaultCMapReaderFactory = _display_utils.DOMCMapReaderFactory;\nexports.DefaultCMapReaderFactory = DefaultCMapReaderFactory;\nlet DefaultStandardFontDataFactory = _display_utils.DOMStandardFontDataFactory;\nexports.DefaultStandardFontDataFactory = DefaultStandardFontDataFactory;\n\nif (_is_node.isNodeJS) {\n const {\n NodeCanvasFactory,\n NodeCMapReaderFactory,\n NodeStandardFontDataFactory\n } = __w_pdfjs_require__(21);\n\n exports.DefaultCanvasFactory = DefaultCanvasFactory = NodeCanvasFactory;\n exports.DefaultCMapReaderFactory = DefaultCMapReaderFactory = NodeCMapReaderFactory;\n exports.DefaultStandardFontDataFactory = DefaultStandardFontDataFactory = NodeStandardFontDataFactory;\n}\n\nlet createPDFNetworkStream;\n\nfunction setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {\n createPDFNetworkStream = pdfNetworkStreamFactory;\n}\n\nfunction getDocument(src) {\n const task = new PDFDocumentLoadingTask();\n let source;\n\n if (typeof src === \"string\" || src instanceof URL) {\n source = {\n url: src\n };\n } else if ((0, _util.isArrayBuffer)(src)) {\n source = {\n data: src\n };\n } else if (src instanceof PDFDataRangeTransport) {\n source = {\n range: src\n };\n } else {\n if (typeof src !== \"object\") {\n throw new Error(\"Invalid parameter in getDocument, \" + \"need either string, URL, Uint8Array, or parameter object.\");\n }\n\n if (!src.url && !src.data && !src.range) {\n throw new Error(\"Invalid parameter object: need either .data, .range or .url\");\n }\n\n source = src;\n }\n\n const params = Object.create(null);\n let rangeTransport = null,\n worker = null;\n\n for (const key in source) {\n const value = source[key];\n\n switch (key) {\n case \"url\":\n if (typeof window !== \"undefined\") {\n try {\n params[key] = new URL(value, window.location).href;\n continue;\n } catch (ex) {\n (0, _util.warn)(`Cannot create valid URL: \"${ex}\".`);\n }\n } else if (typeof value === \"string\" || value instanceof URL) {\n params[key] = value.toString();\n continue;\n }\n\n throw new Error(\"Invalid PDF url data: \" + \"either string or URL-object is expected in the url property.\");\n\n case \"range\":\n rangeTransport = value;\n continue;\n\n case \"worker\":\n worker = value;\n continue;\n\n case \"data\":\n if (_is_node.isNodeJS && typeof Buffer !== \"undefined\" && value instanceof Buffer) {\n params[key] = new Uint8Array(value);\n } else if (value instanceof Uint8Array) {\n break;\n } else if (typeof value === \"string\") {\n params[key] = (0, _util.stringToBytes)(value);\n } else if (typeof value === \"object\" && value !== null && !isNaN(value.length)) {\n params[key] = new Uint8Array(value);\n } else if ((0, _util.isArrayBuffer)(value)) {\n params[key] = new Uint8Array(value);\n } else {\n throw new Error(\"Invalid PDF binary data: either typed array, \" + \"string, or array-like object is expected in the data property.\");\n }\n\n continue;\n }\n\n params[key] = value;\n }\n\n params.CMapReaderFactory = params.CMapReaderFactory || DefaultCMapReaderFactory;\n params.StandardFontDataFactory = params.StandardFontDataFactory || DefaultStandardFontDataFactory;\n params.ignoreErrors = params.stopAtErrors !== true;\n params.fontExtraProperties = params.fontExtraProperties === true;\n params.pdfBug = params.pdfBug === true;\n params.enableXfa = params.enableXfa === true;\n\n if (!Number.isInteger(params.rangeChunkSize) || params.rangeChunkSize < 1) {\n params.rangeChunkSize = DEFAULT_RANGE_CHUNK_SIZE;\n }\n\n if (typeof params.docBaseUrl !== \"string\" || (0, _display_utils.isDataScheme)(params.docBaseUrl)) {\n params.docBaseUrl = null;\n }\n\n if (!Number.isInteger(params.maxImageSize) || params.maxImageSize < -1) {\n params.maxImageSize = -1;\n }\n\n if (typeof params.cMapUrl !== \"string\") {\n params.cMapUrl = null;\n }\n\n if (typeof params.standardFontDataUrl !== \"string\") {\n params.standardFontDataUrl = null;\n }\n\n if (typeof params.useWorkerFetch !== \"boolean\") {\n params.useWorkerFetch = params.CMapReaderFactory === _display_utils.DOMCMapReaderFactory && params.StandardFontDataFactory === _display_utils.DOMStandardFontDataFactory;\n }\n\n if (typeof params.isEvalSupported !== \"boolean\") {\n params.isEvalSupported = true;\n }\n\n if (typeof params.disableFontFace !== \"boolean\") {\n params.disableFontFace = _is_node.isNodeJS;\n }\n\n if (typeof params.useSystemFonts !== \"boolean\") {\n params.useSystemFonts = !_is_node.isNodeJS && !params.disableFontFace;\n }\n\n if (typeof params.ownerDocument !== \"object\" || params.ownerDocument === null) {\n params.ownerDocument = globalThis.document;\n }\n\n if (typeof params.disableRange !== \"boolean\") {\n params.disableRange = false;\n }\n\n if (typeof params.disableStream !== \"boolean\") {\n params.disableStream = false;\n }\n\n if (typeof params.disableAutoFetch !== \"boolean\") {\n params.disableAutoFetch = false;\n }\n\n (0, _util.setVerbosityLevel)(params.verbosity);\n\n if (!worker) {\n const workerParams = {\n verbosity: params.verbosity,\n port: _worker_options.GlobalWorkerOptions.workerPort\n };\n worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams);\n task._worker = worker;\n }\n\n const docId = task.docId;\n worker.promise.then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const workerIdPromise = _fetchDocument(worker, params, rangeTransport, docId);\n\n const networkStreamPromise = new Promise(function (resolve) {\n let networkStream;\n\n if (rangeTransport) {\n networkStream = new _transport_stream.PDFDataTransportStream({\n length: params.length,\n initialData: params.initialData,\n progressiveDone: params.progressiveDone,\n contentDispositionFilename: params.contentDispositionFilename,\n disableRange: params.disableRange,\n disableStream: params.disableStream\n }, rangeTransport);\n } else if (!params.data) {\n networkStream = createPDFNetworkStream({\n url: params.url,\n length: params.length,\n httpHeaders: params.httpHeaders,\n withCredentials: params.withCredentials,\n rangeChunkSize: params.rangeChunkSize,\n disableRange: params.disableRange,\n disableStream: params.disableStream\n });\n }\n\n resolve(networkStream);\n });\n return Promise.all([workerIdPromise, networkStreamPromise]).then(function ([workerId, networkStream]) {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const messageHandler = new _message_handler.MessageHandler(docId, workerId, worker.port);\n const transport = new WorkerTransport(messageHandler, task, networkStream, params);\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n });\n }).catch(task._capability.reject);\n return task;\n}\n\nasync function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n\n if (pdfDataRangeTransport) {\n source.length = pdfDataRangeTransport.length;\n source.initialData = pdfDataRangeTransport.initialData;\n source.progressiveDone = pdfDataRangeTransport.progressiveDone;\n source.contentDispositionFilename = pdfDataRangeTransport.contentDispositionFilename;\n }\n\n const workerId = await worker.messageHandler.sendWithPromise(\"GetDocRequest\", {\n docId,\n apiVersion: '2.15.349',\n source: {\n data: source.data,\n url: source.url,\n password: source.password,\n disableAutoFetch: source.disableAutoFetch,\n rangeChunkSize: source.rangeChunkSize,\n length: source.length\n },\n maxImageSize: source.maxImageSize,\n disableFontFace: source.disableFontFace,\n docBaseUrl: source.docBaseUrl,\n ignoreErrors: source.ignoreErrors,\n isEvalSupported: source.isEvalSupported,\n fontExtraProperties: source.fontExtraProperties,\n enableXfa: source.enableXfa,\n useSystemFonts: source.useSystemFonts,\n cMapUrl: source.useWorkerFetch ? source.cMapUrl : null,\n standardFontDataUrl: source.useWorkerFetch ? source.standardFontDataUrl : null\n });\n\n if (source.data) {\n source.data = null;\n }\n\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n\n return workerId;\n}\n\nclass PDFDocumentLoadingTask {\n static #docId = 0;\n\n constructor() {\n this._capability = (0, _util.createPromiseCapability)();\n this._transport = null;\n this._worker = null;\n this.docId = `d${PDFDocumentLoadingTask.#docId++}`;\n this.destroyed = false;\n this.onPassword = null;\n this.onProgress = null;\n this.onUnsupportedFeature = null;\n }\n\n get promise() {\n return this._capability.promise;\n }\n\n async destroy() {\n this.destroyed = true;\n await this._transport?.destroy();\n this._transport = null;\n\n if (this._worker) {\n this._worker.destroy();\n\n this._worker = null;\n }\n }\n\n}\n\nexports.PDFDocumentLoadingTask = PDFDocumentLoadingTask;\n\nclass PDFDataRangeTransport {\n constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = (0, _util.createPromiseCapability)();\n }\n\n addRangeListener(listener) {\n this._rangeListeners.push(listener);\n }\n\n addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n\n addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n }\n\n addProgressiveDoneListener(listener) {\n this._progressiveDoneListeners.push(listener);\n }\n\n onDataRange(begin, chunk) {\n for (const listener of this._rangeListeners) {\n listener(begin, chunk);\n }\n }\n\n onDataProgress(loaded, total) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressListeners) {\n listener(loaded, total);\n }\n });\n }\n\n onDataProgressiveRead(chunk) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n\n onDataProgressiveDone() {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveDoneListeners) {\n listener();\n }\n });\n }\n\n transportReady() {\n this._readyCapability.resolve();\n }\n\n requestDataRange(begin, end) {\n (0, _util.unreachable)(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n\n abort() {}\n\n}\n\nexports.PDFDataRangeTransport = PDFDataRangeTransport;\n\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n Object.defineProperty(this, \"fingerprint\", {\n get() {\n (0, _display_utils.deprecated)(\"`PDFDocumentProxy.fingerprint`, \" + \"please use `PDFDocumentProxy.fingerprints` instead.\");\n return this.fingerprints[0];\n }\n\n });\n Object.defineProperty(this, \"getStats\", {\n value: async () => {\n (0, _display_utils.deprecated)(\"`PDFDocumentProxy.getStats`, \" + \"please use the `PDFDocumentProxy.stats`-getter instead.\");\n return this.stats || {\n streamTypes: {},\n fontTypes: {}\n };\n }\n });\n }\n\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n\n get numPages() {\n return this._pdfInfo.numPages;\n }\n\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n\n get stats() {\n return this._transport.stats;\n }\n\n get isPureXfa() {\n return !!this._transport._htmlForXfa;\n }\n\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n\n getDestinations() {\n return this._transport.getDestinations();\n }\n\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n\n getPageMode() {\n return this._transport.getPageMode();\n }\n\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n\n getAttachments() {\n return this._transport.getAttachments();\n }\n\n getJavaScript() {\n return this._transport.getJavaScript();\n }\n\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n\n getOutline() {\n return this._transport.getOutline();\n }\n\n getOptionalContentConfig() {\n return this._transport.getOptionalContentConfig();\n }\n\n getPermissions() {\n return this._transport.getPermissions();\n }\n\n getMetadata() {\n return this._transport.getMetadata();\n }\n\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n\n getData() {\n return this._transport.getData();\n }\n\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n\n destroy() {\n return this.loadingTask.destroy();\n }\n\n get loadingParams() {\n return this._transport.loadingParams;\n }\n\n get loadingTask() {\n return this._transport.loadingTask;\n }\n\n saveDocument() {\n if (this._transport.annotationStorage.size <= 0) {\n (0, _display_utils.deprecated)(\"saveDocument called while `annotationStorage` is empty, \" + \"please use the getData-method instead.\");\n }\n\n return this._transport.saveDocument();\n }\n\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n\n}\n\nexports.PDFDocumentProxy = PDFDocumentProxy;\n\nclass PDFPageProxy {\n constructor(pageIndex, pageInfo, transport, ownerDocument, pdfBug = false) {\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._ownerDocument = ownerDocument;\n this._transport = transport;\n this._stats = pdfBug ? new _display_utils.StatTimer() : null;\n this._pdfBug = pdfBug;\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n this._bitmaps = new Set();\n this.cleanupAfterRender = false;\n this.pendingCleanup = false;\n this._intentStates = new Map();\n this._annotationPromises = new Map();\n this.destroyed = false;\n }\n\n get pageNumber() {\n return this._pageIndex + 1;\n }\n\n get rotate() {\n return this._pageInfo.rotate;\n }\n\n get ref() {\n return this._pageInfo.ref;\n }\n\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n\n get view() {\n return this._pageInfo.view;\n }\n\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n } = {}) {\n return new _display_utils.PageViewport({\n viewBox: this.view,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n\n getAnnotations({\n intent = \"display\"\n } = {}) {\n const intentArgs = this._transport.getRenderingIntent(intent);\n\n let promise = this._annotationPromises.get(intentArgs.cacheKey);\n\n if (!promise) {\n promise = this._transport.getAnnotations(this._pageIndex, intentArgs.renderingIntent);\n\n this._annotationPromises.set(intentArgs.cacheKey, promise);\n\n promise = promise.then(annotations => {\n for (const annotation of annotations) {\n if (annotation.titleObj !== undefined) {\n Object.defineProperty(annotation, \"title\", {\n get() {\n (0, _display_utils.deprecated)(\"`title`-property on annotation, please use `titleObj` instead.\");\n return annotation.titleObj.str;\n }\n\n });\n }\n\n if (annotation.contentsObj !== undefined) {\n Object.defineProperty(annotation, \"contents\", {\n get() {\n (0, _display_utils.deprecated)(\"`contents`-property on annotation, please use `contentsObj` instead.\");\n return annotation.contentsObj.str;\n }\n\n });\n }\n }\n\n return annotations;\n });\n }\n\n return promise;\n }\n\n getJSActions() {\n return this._jsActionsPromise ||= this._transport.getPageJSActions(this._pageIndex);\n }\n\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n\n render({\n canvasContext,\n viewport,\n intent = \"display\",\n annotationMode = _util.AnnotationMode.ENABLE,\n transform = null,\n imageLayer = null,\n canvasFactory = null,\n background = null,\n optionalContentConfigPromise = null,\n annotationCanvasMap = null,\n pageColors = null,\n printAnnotationStorage = null\n }) {\n if (arguments[0]?.renderInteractiveForms !== undefined) {\n (0, _display_utils.deprecated)(\"render no longer accepts the `renderInteractiveForms`-option, \" + \"please use the `annotationMode`-option instead.\");\n\n if (arguments[0].renderInteractiveForms === true && annotationMode === _util.AnnotationMode.ENABLE) {\n annotationMode = _util.AnnotationMode.ENABLE_FORMS;\n }\n }\n\n if (arguments[0]?.includeAnnotationStorage !== undefined) {\n (0, _display_utils.deprecated)(\"render no longer accepts the `includeAnnotationStorage`-option, \" + \"please use the `annotationMode`-option instead.\");\n\n if (arguments[0].includeAnnotationStorage === true && annotationMode === _util.AnnotationMode.ENABLE) {\n annotationMode = _util.AnnotationMode.ENABLE_STORAGE;\n }\n }\n\n if (this._stats) {\n this._stats.time(\"Overall\");\n }\n\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage);\n\n this.pendingCleanup = false;\n\n if (!optionalContentConfigPromise) {\n optionalContentConfigPromise = this._transport.getOptionalContentConfig();\n }\n\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n\n if (!intentState) {\n intentState = Object.create(null);\n\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n\n const canvasFactoryInstance = canvasFactory || new DefaultCanvasFactory({\n ownerDocument: this._ownerDocument\n });\n const intentPrint = !!(intentArgs.renderingIntent & _util.RenderingIntentFlag.PRINT);\n\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = (0, _util.createPromiseCapability)();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n\n if (this._stats) {\n this._stats.time(\"Page Request\");\n }\n\n this._pumpOperatorList(intentArgs);\n }\n\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n\n if (this.cleanupAfterRender || intentPrint) {\n this.pendingCleanup = true;\n }\n\n this._tryCleanup();\n\n if (error) {\n internalRenderTask.capability.reject(error);\n\n this._abortOperatorList({\n intentState,\n reason: error instanceof Error ? error : new Error(error)\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n\n if (this._stats) {\n this._stats.timeEnd(\"Rendering\");\n\n this._stats.timeEnd(\"Overall\");\n }\n };\n\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n params: {\n canvasContext,\n viewport,\n transform,\n imageLayer,\n background\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n annotationCanvasMap,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: canvasFactoryInstance,\n useRequestAnimationFrame: !intentPrint,\n pdfBug: this._pdfBug,\n pageColors\n });\n (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => {\n if (this.pendingCleanup) {\n complete();\n return;\n }\n\n if (this._stats) {\n this._stats.time(\"Rendering\");\n }\n\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig\n });\n internalRenderTask.operatorListChanged();\n }).catch(complete);\n return renderTask;\n }\n\n getOperatorList({\n intent = \"display\",\n annotationMode = _util.AnnotationMode.ENABLE,\n printAnnotationStorage = null\n } = {}) {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n intentState.renderTasks.delete(opListTask);\n }\n }\n\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, true);\n\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n\n if (!intentState) {\n intentState = Object.create(null);\n\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n\n let opListTask;\n\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = (0, _util.createPromiseCapability)();\n (intentState.renderTasks ||= new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n\n if (this._stats) {\n this._stats.time(\"Page Request\");\n }\n\n this._pumpOperatorList(intentArgs);\n }\n\n return intentState.opListReadCapability.promise;\n }\n\n streamTextContent({\n disableCombineTextItems = false,\n includeMarkedContent = false\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n return this._transport.messageHandler.sendWithStream(\"GetTextContent\", {\n pageIndex: this._pageIndex,\n combineTextItems: disableCombineTextItems !== true,\n includeMarkedContent: includeMarkedContent === true\n }, {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n\n size(textContent) {\n return textContent.items.length;\n }\n\n });\n }\n\n getTextContent(params = {}) {\n if (this._transport._htmlForXfa) {\n return this.getXfa().then(xfa => {\n return _xfa_text.XfaText.textContent(xfa);\n });\n }\n\n const readableStream = this.streamTextContent(params);\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n resolve(textContent);\n return;\n }\n\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: Object.create(null)\n };\n pump();\n });\n }\n\n getStructTree() {\n return this._structTreePromise ||= this._transport.getStructTree(this._pageIndex);\n }\n\n _destroy() {\n this.destroyed = true;\n const waitOn = [];\n\n for (const intentState of this._intentStates.values()) {\n this._abortOperatorList({\n intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true\n });\n\n if (intentState.opListReadCapability) {\n continue;\n }\n\n for (const internalRenderTask of intentState.renderTasks) {\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n }\n\n this.objs.clear();\n\n for (const bitmap of this._bitmaps) {\n bitmap.close();\n }\n\n this._bitmaps.clear();\n\n this._annotationPromises.clear();\n\n this._jsActionsPromise = null;\n this._structTreePromise = null;\n this.pendingCleanup = false;\n return Promise.all(waitOn);\n }\n\n cleanup(resetStats = false) {\n this.pendingCleanup = true;\n return this._tryCleanup(resetStats);\n }\n\n _tryCleanup(resetStats = false) {\n if (!this.pendingCleanup) {\n return false;\n }\n\n for (const {\n renderTasks,\n operatorList\n } of this._intentStates.values()) {\n if (renderTasks.size > 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n\n this._intentStates.clear();\n\n this.objs.clear();\n\n this._annotationPromises.clear();\n\n this._jsActionsPromise = null;\n this._structTreePromise = null;\n\n if (resetStats && this._stats) {\n this._stats = new _display_utils.StatTimer();\n }\n\n for (const bitmap of this._bitmaps) {\n bitmap.close();\n }\n\n this._bitmaps.clear();\n\n this.pendingCleanup = false;\n return true;\n }\n\n _startRenderPage(transparency, cacheKey) {\n const intentState = this._intentStates.get(cacheKey);\n\n if (!intentState) {\n return;\n }\n\n if (this._stats) {\n this._stats.timeEnd(\"Page Request\");\n }\n\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.resolve(transparency);\n }\n }\n\n _renderPageChunk(operatorListChunk, intentState) {\n for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots;\n\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n\n if (operatorListChunk.lastChunk) {\n this._tryCleanup();\n }\n }\n\n _pumpOperatorList({\n renderingIntent,\n cacheKey,\n annotationStorageMap\n }) {\n const readableStream = this._transport.messageHandler.sendWithStream(\"GetOperatorList\", {\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage: annotationStorageMap\n });\n\n const reader = readableStream.getReader();\n\n const intentState = this._intentStates.get(cacheKey);\n\n intentState.streamReader = reader;\n\n const pump = () => {\n reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n\n if (this._transport.destroyed) {\n return;\n }\n\n this._renderPageChunk(value, intentState);\n\n pump();\n }, reason => {\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return;\n }\n\n if (intentState.operatorList) {\n intentState.operatorList.lastChunk = true;\n\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n\n this._tryCleanup();\n }\n\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n });\n };\n\n pump();\n }\n\n _abortOperatorList({\n intentState,\n reason,\n force = false\n }) {\n if (!intentState.streamReader) {\n return;\n }\n\n if (!force) {\n if (intentState.renderTasks.size > 0) {\n return;\n }\n\n if (reason instanceof _display_utils.RenderingCancelledException) {\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n this._abortOperatorList({\n intentState,\n reason,\n force: true\n });\n\n intentState.streamReaderCancelTimeout = null;\n }, RENDERING_CANCELLED_TIMEOUT);\n return;\n }\n }\n\n intentState.streamReader.cancel(new _util.AbortException(reason.message)).catch(() => {});\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return;\n }\n\n for (const [curCacheKey, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(curCacheKey);\n\n break;\n }\n }\n\n this.cleanup();\n }\n\n get stats() {\n return this._stats;\n }\n\n}\n\nexports.PDFPageProxy = PDFPageProxy;\n\nclass LoopbackPort {\n constructor() {\n this._listeners = [];\n this._deferred = Promise.resolve();\n }\n\n postMessage(obj, transfers) {\n const event = {\n data: structuredClone(obj, transfers)\n };\n\n this._deferred.then(() => {\n for (const listener of this._listeners) {\n listener.call(this, event);\n }\n });\n }\n\n addEventListener(name, listener) {\n this._listeners.push(listener);\n }\n\n removeEventListener(name, listener) {\n const i = this._listeners.indexOf(listener);\n\n this._listeners.splice(i, 1);\n }\n\n terminate() {\n this._listeners.length = 0;\n }\n\n}\n\nexports.LoopbackPort = LoopbackPort;\nconst PDFWorkerUtil = {\n isWorkerDisabled: false,\n fallbackWorkerSrc: null,\n fakeWorkerId: 0\n};\nexports.PDFWorkerUtil = PDFWorkerUtil;\n{\n if (_is_node.isNodeJS && typeof require === \"function\") {\n PDFWorkerUtil.isWorkerDisabled = true;\n PDFWorkerUtil.fallbackWorkerSrc = \"./pdf.worker.js\";\n } else if (typeof document === \"object\") {\n const pdfjsFilePath = document?.currentScript?.src;\n\n if (pdfjsFilePath) {\n PDFWorkerUtil.fallbackWorkerSrc = pdfjsFilePath.replace(/(\\.(?:min\\.)?js)(\\?.*)?$/i, \".worker$1$2\");\n }\n }\n\n PDFWorkerUtil.isSameOrigin = function (baseUrl, otherUrl) {\n let base;\n\n try {\n base = new URL(baseUrl);\n\n if (!base.origin || base.origin === \"null\") {\n return false;\n }\n } catch (e) {\n return false;\n }\n\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n };\n\n PDFWorkerUtil.createCDNWrapper = function (url) {\n const wrapper = `importScripts(\"${url}\");`;\n return URL.createObjectURL(new Blob([wrapper]));\n };\n}\n\nclass PDFWorker {\n static #workerPorts = new WeakMap();\n\n constructor({\n name = null,\n port = null,\n verbosity = (0, _util.getVerbosityLevel)()\n } = {}) {\n if (port && PDFWorker.#workerPorts.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n\n this.name = name;\n this.destroyed = false;\n this.verbosity = verbosity;\n this._readyCapability = (0, _util.createPromiseCapability)();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n\n if (port) {\n PDFWorker.#workerPorts.set(port, this);\n\n this._initializeFromPort(port);\n\n return;\n }\n\n this._initialize();\n }\n\n get promise() {\n return this._readyCapability.promise;\n }\n\n get port() {\n return this._port;\n }\n\n get messageHandler() {\n return this._messageHandler;\n }\n\n _initializeFromPort(port) {\n this._port = port;\n this._messageHandler = new _message_handler.MessageHandler(\"main\", \"worker\", port);\n\n this._messageHandler.on(\"ready\", function () {});\n\n this._readyCapability.resolve();\n }\n\n _initialize() {\n if (typeof Worker !== \"undefined\" && !PDFWorkerUtil.isWorkerDisabled && !PDFWorker._mainThreadWorkerMessageHandler) {\n let workerSrc = PDFWorker.workerSrc;\n\n try {\n if (!PDFWorkerUtil.isSameOrigin(window.location.href, workerSrc)) {\n workerSrc = PDFWorkerUtil.createCDNWrapper(new URL(workerSrc, window.location).href);\n }\n\n const worker = new Worker(workerSrc);\n const messageHandler = new _message_handler.MessageHandler(\"main\", \"worker\", worker);\n\n const terminateEarly = () => {\n worker.removeEventListener(\"error\", onWorkerError);\n messageHandler.destroy();\n worker.terminate();\n\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n } else {\n this._setupFakeWorker();\n }\n };\n\n const onWorkerError = () => {\n if (!this._webWorker) {\n terminateEarly();\n }\n };\n\n worker.addEventListener(\"error\", onWorkerError);\n messageHandler.on(\"test\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n\n if (this.destroyed) {\n terminateEarly();\n return;\n }\n\n if (data) {\n this._messageHandler = messageHandler;\n this._port = worker;\n this._webWorker = worker;\n\n this._readyCapability.resolve();\n\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity\n });\n } else {\n this._setupFakeWorker();\n\n messageHandler.destroy();\n worker.terminate();\n }\n });\n messageHandler.on(\"ready\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n\n if (this.destroyed) {\n terminateEarly();\n return;\n }\n\n try {\n sendTest();\n } catch (e) {\n this._setupFakeWorker();\n }\n });\n\n const sendTest = () => {\n const testObj = new Uint8Array();\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n };\n\n sendTest();\n return;\n } catch (e) {\n (0, _util.info)(\"The worker has been disabled.\");\n }\n }\n\n this._setupFakeWorker();\n }\n\n _setupFakeWorker() {\n if (!PDFWorkerUtil.isWorkerDisabled) {\n (0, _util.warn)(\"Setting up fake worker.\");\n PDFWorkerUtil.isWorkerDisabled = true;\n }\n\n PDFWorker._setupFakeWorkerGlobal.then(WorkerMessageHandler => {\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n\n return;\n }\n\n const port = new LoopbackPort();\n this._port = port;\n const id = `fake${PDFWorkerUtil.fakeWorkerId++}`;\n const workerHandler = new _message_handler.MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n const messageHandler = new _message_handler.MessageHandler(id, id + \"_worker\", port);\n this._messageHandler = messageHandler;\n\n this._readyCapability.resolve();\n\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity\n });\n }).catch(reason => {\n this._readyCapability.reject(new Error(`Setting up fake worker failed: \"${reason.message}\".`));\n });\n }\n\n destroy() {\n this.destroyed = true;\n\n if (this._webWorker) {\n this._webWorker.terminate();\n\n this._webWorker = null;\n }\n\n PDFWorker.#workerPorts.delete(this._port);\n this._port = null;\n\n if (this._messageHandler) {\n this._messageHandler.destroy();\n\n this._messageHandler = null;\n }\n }\n\n static fromPort(params) {\n if (!params?.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n\n if (this.#workerPorts.has(params.port)) {\n return this.#workerPorts.get(params.port);\n }\n\n return new PDFWorker(params);\n }\n\n static get workerSrc() {\n if (_worker_options.GlobalWorkerOptions.workerSrc) {\n return _worker_options.GlobalWorkerOptions.workerSrc;\n }\n\n if (PDFWorkerUtil.fallbackWorkerSrc !== null) {\n if (!_is_node.isNodeJS) {\n (0, _display_utils.deprecated)('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n\n return PDFWorkerUtil.fallbackWorkerSrc;\n }\n\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n\n static get _mainThreadWorkerMessageHandler() {\n try {\n return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n } catch (ex) {\n return null;\n }\n }\n\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n const mainWorkerMessageHandler = this._mainThreadWorkerMessageHandler;\n\n if (mainWorkerMessageHandler) {\n return mainWorkerMessageHandler;\n }\n\n if (_is_node.isNodeJS && typeof require === \"function\") {\n const worker = eval(\"require\")(this.workerSrc);\n return worker.WorkerMessageHandler;\n }\n\n await (0, _display_utils.loadScript)(this.workerSrc);\n return window.pdfjsWorker.WorkerMessageHandler;\n };\n\n return (0, _util.shadow)(this, \"_setupFakeWorkerGlobal\", loader());\n }\n\n}\n\nexports.PDFWorker = PDFWorker;\n{\n PDFWorker.getWorkerSrc = function () {\n (0, _display_utils.deprecated)(\"`PDFWorker.getWorkerSrc()`, please use `PDFWorker.workerSrc` instead.\");\n return this.workerSrc;\n };\n}\n\nclass WorkerTransport {\n #docStats = null;\n #pageCache = new Map();\n #pagePromises = new Map();\n #metadataPromise = null;\n\n constructor(messageHandler, loadingTask, networkStream, params) {\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new _font_loader.FontLoader({\n docId: loadingTask.docId,\n onUnsupportedFeature: this._onUnsupportedFeature.bind(this),\n ownerDocument: params.ownerDocument,\n styleElement: params.styleElement\n });\n this._params = params;\n\n if (!params.useWorkerFetch) {\n this.CMapReaderFactory = new params.CMapReaderFactory({\n baseUrl: params.cMapUrl,\n isCompressed: params.cMapPacked\n });\n this.StandardFontDataFactory = new params.StandardFontDataFactory({\n baseUrl: params.standardFontDataUrl\n });\n }\n\n this.destroyed = false;\n this.destroyCapability = null;\n this._passwordCapability = null;\n this._networkStream = networkStream;\n this._fullReader = null;\n this._lastProgress = null;\n this.downloadInfoCapability = (0, _util.createPromiseCapability)();\n this.setupMessageHandler();\n }\n\n get annotationStorage() {\n return (0, _util.shadow)(this, \"annotationStorage\", new _annotation_storage.AnnotationStorage());\n }\n\n get stats() {\n return this.#docStats;\n }\n\n getRenderingIntent(intent, annotationMode = _util.AnnotationMode.ENABLE, printAnnotationStorage = null, isOpList = false) {\n let renderingIntent = _util.RenderingIntentFlag.DISPLAY;\n let annotationMap = null;\n\n switch (intent) {\n case \"any\":\n renderingIntent = _util.RenderingIntentFlag.ANY;\n break;\n\n case \"display\":\n break;\n\n case \"print\":\n renderingIntent = _util.RenderingIntentFlag.PRINT;\n break;\n\n default:\n (0, _util.warn)(`getRenderingIntent - invalid intent: ${intent}`);\n }\n\n switch (annotationMode) {\n case _util.AnnotationMode.DISABLE:\n renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_DISABLE;\n break;\n\n case _util.AnnotationMode.ENABLE:\n break;\n\n case _util.AnnotationMode.ENABLE_FORMS:\n renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_FORMS;\n break;\n\n case _util.AnnotationMode.ENABLE_STORAGE:\n renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_STORAGE;\n const annotationStorage = renderingIntent & _util.RenderingIntentFlag.PRINT && printAnnotationStorage instanceof _annotation_storage.PrintAnnotationStorage ? printAnnotationStorage : this.annotationStorage;\n annotationMap = annotationStorage.serializable;\n break;\n\n default:\n (0, _util.warn)(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n }\n\n if (isOpList) {\n renderingIntent += _util.RenderingIntentFlag.OPLIST;\n }\n\n return {\n renderingIntent,\n cacheKey: `${renderingIntent}_${_annotation_storage.AnnotationStorage.getHash(annotationMap)}`,\n annotationStorageMap: annotationMap\n };\n }\n\n destroy() {\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n\n this.destroyed = true;\n this.destroyCapability = (0, _util.createPromiseCapability)();\n\n if (this._passwordCapability) {\n this._passwordCapability.reject(new Error(\"Worker was destroyed during onPassword callback\"));\n }\n\n const waitOn = [];\n\n for (const page of this.#pageCache.values()) {\n waitOn.push(page._destroy());\n }\n\n this.#pageCache.clear();\n this.#pagePromises.clear();\n\n if (this.hasOwnProperty(\"annotationStorage\")) {\n this.annotationStorage.resetModified();\n }\n\n const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n waitOn.push(terminated);\n Promise.all(waitOn).then(() => {\n this.commonObjs.clear();\n this.fontLoader.clear();\n this.#metadataPromise = null;\n this._getFieldObjectsPromise = null;\n this._hasJSActionsPromise = null;\n\n if (this._networkStream) {\n this._networkStream.cancelAllRequests(new _util.AbortException(\"Worker was terminated.\"));\n }\n\n if (this.messageHandler) {\n this.messageHandler.destroy();\n this.messageHandler = null;\n }\n\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n\n setupMessageHandler() {\n const {\n messageHandler,\n loadingTask\n } = this;\n messageHandler.on(\"GetReader\", (data, sink) => {\n (0, _util.assert)(this._networkStream, \"GetReader - no `IPDFStream` instance available.\");\n this._fullReader = this._networkStream.getFullReader();\n\n this._fullReader.onProgress = evt => {\n this._lastProgress = {\n loaded: evt.loaded,\n total: evt.total\n };\n };\n\n sink.onPull = () => {\n this._fullReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n\n (0, _util.assert)((0, _util.isArrayBuffer)(value), \"GetReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n\n sink.onCancel = reason => {\n this._fullReader.cancel(reason);\n\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"ReaderHeadersReady\", data => {\n const headersCapability = (0, _util.createPromiseCapability)();\n const fullReader = this._fullReader;\n fullReader.headersReady.then(() => {\n if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {\n if (this._lastProgress) {\n loadingTask.onProgress?.(this._lastProgress);\n }\n\n fullReader.onProgress = evt => {\n loadingTask.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n };\n }\n\n headersCapability.resolve({\n isStreamingSupported: fullReader.isStreamingSupported,\n isRangeSupported: fullReader.isRangeSupported,\n contentLength: fullReader.contentLength\n });\n }, headersCapability.reject);\n return headersCapability.promise;\n });\n messageHandler.on(\"GetRangeReader\", (data, sink) => {\n (0, _util.assert)(this._networkStream, \"GetRangeReader - no `IPDFStream` instance available.\");\n\n const rangeReader = this._networkStream.getRangeReader(data.begin, data.end);\n\n if (!rangeReader) {\n sink.close();\n return;\n }\n\n sink.onPull = () => {\n rangeReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n\n (0, _util.assert)((0, _util.isArrayBuffer)(value), \"GetRangeReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n\n sink.onCancel = reason => {\n rangeReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"GetDoc\", ({\n pdfInfo\n }) => {\n this._numPages = pdfInfo.numPages;\n this._htmlForXfa = pdfInfo.htmlForXfa;\n delete pdfInfo.htmlForXfa;\n\n loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n });\n messageHandler.on(\"DocException\", function (ex) {\n let reason;\n\n switch (ex.name) {\n case \"PasswordException\":\n reason = new _util.PasswordException(ex.message, ex.code);\n break;\n\n case \"InvalidPDFException\":\n reason = new _util.InvalidPDFException(ex.message);\n break;\n\n case \"MissingPDFException\":\n reason = new _util.MissingPDFException(ex.message);\n break;\n\n case \"UnexpectedResponseException\":\n reason = new _util.UnexpectedResponseException(ex.message, ex.status);\n break;\n\n case \"UnknownErrorException\":\n reason = new _util.UnknownErrorException(ex.message, ex.details);\n break;\n\n default:\n (0, _util.unreachable)(\"DocException - expected a valid Error.\");\n }\n\n loadingTask._capability.reject(reason);\n });\n messageHandler.on(\"PasswordRequest\", exception => {\n this._passwordCapability = (0, _util.createPromiseCapability)();\n\n if (loadingTask.onPassword) {\n const updatePassword = password => {\n if (password instanceof Error) {\n this._passwordCapability.reject(password);\n } else {\n this._passwordCapability.resolve({\n password\n });\n }\n };\n\n try {\n loadingTask.onPassword(updatePassword, exception.code);\n } catch (ex) {\n this._passwordCapability.reject(ex);\n }\n } else {\n this._passwordCapability.reject(new _util.PasswordException(exception.message, exception.code));\n }\n\n return this._passwordCapability.promise;\n });\n messageHandler.on(\"DataLoaded\", data => {\n loadingTask.onProgress?.({\n loaded: data.length,\n total: data.length\n });\n this.downloadInfoCapability.resolve(data);\n });\n messageHandler.on(\"StartRenderPage\", data => {\n if (this.destroyed) {\n return;\n }\n\n const page = this.#pageCache.get(data.pageIndex);\n\n page._startRenderPage(data.transparency, data.cacheKey);\n });\n messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n if (this.destroyed) {\n return;\n }\n\n if (this.commonObjs.has(id)) {\n return;\n }\n\n switch (type) {\n case \"Font\":\n const params = this._params;\n\n if (\"error\" in exportedData) {\n const exportedError = exportedData.error;\n (0, _util.warn)(`Error during font loading: ${exportedError}`);\n this.commonObjs.resolve(id, exportedError);\n break;\n }\n\n let fontRegistry = null;\n\n if (params.pdfBug && globalThis.FontInspector?.enabled) {\n fontRegistry = {\n registerFont(font, url) {\n globalThis.FontInspector.fontAdded(font, url);\n }\n\n };\n }\n\n const font = new _font_loader.FontFaceObject(exportedData, {\n isEvalSupported: params.isEvalSupported,\n disableFontFace: params.disableFontFace,\n ignoreErrors: params.ignoreErrors,\n onUnsupportedFeature: this._onUnsupportedFeature.bind(this),\n fontRegistry\n });\n this.fontLoader.bind(font).catch(reason => {\n return messageHandler.sendWithPromise(\"FontFallback\", {\n id\n });\n }).finally(() => {\n if (!params.fontExtraProperties && font.data) {\n font.data = null;\n }\n\n this.commonObjs.resolve(id, font);\n });\n break;\n\n case \"FontPath\":\n case \"Image\":\n this.commonObjs.resolve(id, exportedData);\n break;\n\n default:\n throw new Error(`Got unknown common object type ${type}`);\n }\n });\n messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n if (this.destroyed) {\n return;\n }\n\n const pageProxy = this.#pageCache.get(pageIndex);\n\n if (pageProxy.objs.has(id)) {\n return;\n }\n\n switch (type) {\n case \"Image\":\n pageProxy.objs.resolve(id, imageData);\n const MAX_IMAGE_SIZE_TO_STORE = 8000000;\n\n if (imageData) {\n let length;\n\n if (imageData.bitmap) {\n const {\n bitmap,\n width,\n height\n } = imageData;\n length = width * height * 4;\n\n pageProxy._bitmaps.add(bitmap);\n } else {\n length = imageData.data?.length || 0;\n }\n\n if (length > MAX_IMAGE_SIZE_TO_STORE) {\n pageProxy.cleanupAfterRender = true;\n }\n }\n\n break;\n\n case \"Pattern\":\n pageProxy.objs.resolve(id, imageData);\n break;\n\n default:\n throw new Error(`Got unknown object type ${type}`);\n }\n });\n messageHandler.on(\"DocProgress\", data => {\n if (this.destroyed) {\n return;\n }\n\n loadingTask.onProgress?.({\n loaded: data.loaded,\n total: data.total\n });\n });\n messageHandler.on(\"DocStats\", data => {\n if (this.destroyed) {\n return;\n }\n\n this.#docStats = Object.freeze({\n streamTypes: Object.freeze(data.streamTypes),\n fontTypes: Object.freeze(data.fontTypes)\n });\n });\n messageHandler.on(\"UnsupportedFeature\", this._onUnsupportedFeature.bind(this));\n messageHandler.on(\"FetchBuiltInCMap\", data => {\n if (this.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed.\"));\n }\n\n if (!this.CMapReaderFactory) {\n return Promise.reject(new Error(\"CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.\"));\n }\n\n return this.CMapReaderFactory.fetch(data);\n });\n messageHandler.on(\"FetchStandardFontData\", data => {\n if (this.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed.\"));\n }\n\n if (!this.StandardFontDataFactory) {\n return Promise.reject(new Error(\"StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.\"));\n }\n\n return this.StandardFontDataFactory.fetch(data);\n });\n }\n\n _onUnsupportedFeature({\n featureId\n }) {\n if (this.destroyed) {\n return;\n }\n\n this.loadingTask.onUnsupportedFeature?.(featureId);\n }\n\n getData() {\n return this.messageHandler.sendWithPromise(\"GetData\", null);\n }\n\n getPage(pageNumber) {\n if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) {\n return Promise.reject(new Error(\"Invalid page request.\"));\n }\n\n const pageIndex = pageNumber - 1,\n cachedPromise = this.#pagePromises.get(pageIndex);\n\n if (cachedPromise) {\n return cachedPromise;\n }\n\n const promise = this.messageHandler.sendWithPromise(\"GetPage\", {\n pageIndex\n }).then(pageInfo => {\n if (this.destroyed) {\n throw new Error(\"Transport destroyed\");\n }\n\n const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.ownerDocument, this._params.pdfBug);\n this.#pageCache.set(pageIndex, page);\n return page;\n });\n this.#pagePromises.set(pageIndex, promise);\n return promise;\n }\n\n getPageIndex(ref) {\n if (typeof ref !== \"object\" || ref === null || !Number.isInteger(ref.num) || ref.num < 0 || !Number.isInteger(ref.gen) || ref.gen < 0) {\n return Promise.reject(new Error(\"Invalid pageIndex request.\"));\n }\n\n return this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n num: ref.num,\n gen: ref.gen\n });\n }\n\n getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex,\n intent\n });\n }\n\n saveDocument() {\n return this.messageHandler.sendWithPromise(\"SaveDocument\", {\n isPureXfa: !!this._htmlForXfa,\n numPages: this._numPages,\n annotationStorage: this.annotationStorage.serializable,\n filename: this._fullReader?.filename ?? null\n }).finally(() => {\n this.annotationStorage.resetModified();\n });\n }\n\n getFieldObjects() {\n return this._getFieldObjectsPromise ||= this.messageHandler.sendWithPromise(\"GetFieldObjects\", null);\n }\n\n hasJSActions() {\n return this._hasJSActionsPromise ||= this.messageHandler.sendWithPromise(\"HasJSActions\", null);\n }\n\n getCalculationOrderIds() {\n return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n }\n\n getDestinations() {\n return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n }\n\n getDestination(id) {\n if (typeof id !== \"string\") {\n return Promise.reject(new Error(\"Invalid destination request.\"));\n }\n\n return this.messageHandler.sendWithPromise(\"GetDestination\", {\n id\n });\n }\n\n getPageLabels() {\n return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n }\n\n getPageLayout() {\n return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n }\n\n getPageMode() {\n return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n }\n\n getViewerPreferences() {\n return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n }\n\n getOpenAction() {\n return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n }\n\n getAttachments() {\n return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n }\n\n getJavaScript() {\n return this.messageHandler.sendWithPromise(\"GetJavaScript\", null);\n }\n\n getDocJSActions() {\n return this.messageHandler.sendWithPromise(\"GetDocJSActions\", null);\n }\n\n getPageJSActions(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n pageIndex\n });\n }\n\n getStructTree(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n pageIndex\n });\n }\n\n getOutline() {\n return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n }\n\n getOptionalContentConfig() {\n return this.messageHandler.sendWithPromise(\"GetOptionalContentConfig\", null).then(results => {\n return new _optional_content_config.OptionalContentConfig(results);\n });\n }\n\n getPermissions() {\n return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n }\n\n getMetadata() {\n return this.#metadataPromise ||= this.messageHandler.sendWithPromise(\"GetMetadata\", null).then(results => {\n return {\n info: results[0],\n metadata: results[1] ? new _metadata.Metadata(results[1]) : null,\n contentDispositionFilename: this._fullReader?.filename ?? null,\n contentLength: this._fullReader?.contentLength ?? null\n };\n });\n }\n\n getMarkInfo() {\n return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n }\n\n async startCleanup(keepLoadedFonts = false) {\n await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n\n if (this.destroyed) {\n return;\n }\n\n for (const page of this.#pageCache.values()) {\n const cleanupSuccessful = page.cleanup();\n\n if (!cleanupSuccessful) {\n throw new Error(`startCleanup: Page ${page.pageNumber} is currently rendering.`);\n }\n }\n\n this.commonObjs.clear();\n\n if (!keepLoadedFonts) {\n this.fontLoader.clear();\n }\n\n this.#metadataPromise = null;\n this._getFieldObjectsPromise = null;\n this._hasJSActionsPromise = null;\n }\n\n get loadingParams() {\n const params = this._params;\n return (0, _util.shadow)(this, \"loadingParams\", {\n disableAutoFetch: params.disableAutoFetch,\n enableXfa: params.enableXfa\n });\n }\n\n}\n\nclass PDFObjects {\n #objs = Object.create(null);\n\n __ensureObj(objId) {\n const obj = this.#objs[objId];\n\n if (obj) {\n return obj;\n }\n\n return this.#objs[objId] = {\n capability: (0, _util.createPromiseCapability)(),\n data: null\n };\n }\n\n get(objId, callback = null) {\n if (callback) {\n const obj = this.__ensureObj(objId);\n obj.capability.promise.then(() => callback(obj.data));\n return null;\n }\n\n const obj = this.#objs[objId];\n\n if (!obj?.capability.settled) {\n throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n }\n\n return obj.data;\n }\n\n has(objId) {\n const obj = this.#objs[objId];\n return obj?.capability.settled || false;\n }\n\n resolve(objId, data = null) {\n const obj = this.__ensureObj(objId);\n obj.data = data;\n obj.capability.resolve();\n }\n\n clear() {\n this.#objs = Object.create(null);\n }\n\n}\n\nclass RenderTask {\n #internalRenderTask = null;\n\n constructor(internalRenderTask) {\n this.#internalRenderTask = internalRenderTask;\n this.onContinue = null;\n }\n\n get promise() {\n return this.#internalRenderTask.capability.promise;\n }\n\n cancel() {\n this.#internalRenderTask.cancel();\n }\n\n get separateAnnots() {\n const {\n separateAnnots\n } = this.#internalRenderTask.operatorList;\n\n if (!separateAnnots) {\n return false;\n }\n\n const {\n annotationCanvasMap\n } = this.#internalRenderTask;\n return separateAnnots.form || separateAnnots.canvas && annotationCanvasMap?.size > 0;\n }\n\n}\n\nexports.RenderTask = RenderTask;\n\nclass InternalRenderTask {\n static #canvasInUse = new WeakSet();\n\n constructor({\n callback,\n params,\n objs,\n commonObjs,\n annotationCanvasMap,\n operatorList,\n pageIndex,\n canvasFactory,\n useRequestAnimationFrame = false,\n pdfBug = false,\n pageColors = null\n }) {\n this.callback = callback;\n this.params = params;\n this.objs = objs;\n this.commonObjs = commonObjs;\n this.annotationCanvasMap = annotationCanvasMap;\n this.operatorListIdx = null;\n this.operatorList = operatorList;\n this._pageIndex = pageIndex;\n this.canvasFactory = canvasFactory;\n this._pdfBug = pdfBug;\n this.pageColors = pageColors;\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== \"undefined\";\n this.cancelled = false;\n this.capability = (0, _util.createPromiseCapability)();\n this.task = new RenderTask(this);\n this._cancelBound = this.cancel.bind(this);\n this._continueBound = this._continue.bind(this);\n this._scheduleNextBound = this._scheduleNext.bind(this);\n this._nextBound = this._next.bind(this);\n this._canvas = params.canvasContext.canvas;\n }\n\n get completed() {\n return this.capability.promise.catch(function () {});\n }\n\n initializeGraphics({\n transparency = false,\n optionalContentConfig\n }) {\n if (this.cancelled) {\n return;\n }\n\n if (this._canvas) {\n if (InternalRenderTask.#canvasInUse.has(this._canvas)) {\n throw new Error(\"Cannot use the same canvas during multiple render() operations. \" + \"Use different canvas or ensure previous operations were \" + \"cancelled or completed.\");\n }\n\n InternalRenderTask.#canvasInUse.add(this._canvas);\n }\n\n if (this._pdfBug && globalThis.StepperManager?.enabled) {\n this.stepper = globalThis.StepperManager.create(this._pageIndex);\n this.stepper.init(this.operatorList);\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n }\n\n const {\n canvasContext,\n viewport,\n transform,\n imageLayer,\n background\n } = this.params;\n this.gfx = new _canvas.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, imageLayer, optionalContentConfig, this.annotationCanvasMap, this.pageColors);\n this.gfx.beginDrawing({\n transform,\n viewport,\n transparency,\n background\n });\n this.operatorListIdx = 0;\n this.graphicsReady = true;\n\n if (this.graphicsReadyCallback) {\n this.graphicsReadyCallback();\n }\n }\n\n cancel(error = null) {\n this.running = false;\n this.cancelled = true;\n\n if (this.gfx) {\n this.gfx.endDrawing();\n }\n\n if (this._canvas) {\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n }\n\n this.callback(error || new _display_utils.RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, \"canvas\"));\n }\n\n operatorListChanged() {\n if (!this.graphicsReady) {\n if (!this.graphicsReadyCallback) {\n this.graphicsReadyCallback = this._continueBound;\n }\n\n return;\n }\n\n if (this.stepper) {\n this.stepper.updateOperatorList(this.operatorList);\n }\n\n if (this.running) {\n return;\n }\n\n this._continue();\n }\n\n _continue() {\n this.running = true;\n\n if (this.cancelled) {\n return;\n }\n\n if (this.task.onContinue) {\n this.task.onContinue(this._scheduleNextBound);\n } else {\n this._scheduleNext();\n }\n }\n\n _scheduleNext() {\n if (this._useRequestAnimationFrame) {\n window.requestAnimationFrame(() => {\n this._nextBound().catch(this._cancelBound);\n });\n } else {\n Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n }\n }\n\n async _next() {\n if (this.cancelled) {\n return;\n }\n\n this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);\n\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = false;\n\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing();\n\n if (this._canvas) {\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n }\n\n this.callback();\n }\n }\n }\n\n}\n\nconst version = '2.15.349';\nexports.version = version;\nconst build = 'b8aa9c622';\nexports.build = build;\n\n/***/ }),\n/* 7 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.PrintAnnotationStorage = exports.AnnotationStorage = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _editor = __w_pdfjs_require__(8);\n\nvar _murmurhash = __w_pdfjs_require__(10);\n\nclass AnnotationStorage {\n constructor() {\n this._storage = new Map();\n this._modified = false;\n this.onSetModified = null;\n this.onResetModified = null;\n }\n\n getValue(key, defaultValue) {\n const value = this._storage.get(key);\n\n if (value === undefined) {\n return defaultValue;\n }\n\n return Object.assign(defaultValue, value);\n }\n\n getRawValue(key) {\n return this._storage.get(key);\n }\n\n removeKey(key) {\n this._storage.delete(key);\n\n if (this._storage.size === 0) {\n this.resetModified();\n }\n }\n\n setValue(key, value) {\n const obj = this._storage.get(key);\n\n let modified = false;\n\n if (obj !== undefined) {\n for (const [entry, val] of Object.entries(value)) {\n if (obj[entry] !== val) {\n modified = true;\n obj[entry] = val;\n }\n }\n } else {\n modified = true;\n\n this._storage.set(key, value);\n }\n\n if (modified) {\n this.__setModified();\n }\n }\n\n has(key) {\n return this._storage.has(key);\n }\n\n getAll() {\n return this._storage.size > 0 ? (0, _util.objectFromMap)(this._storage) : null;\n }\n\n get size() {\n return this._storage.size;\n }\n\n __setModified() {\n if (!this._modified) {\n this._modified = true;\n\n if (typeof this.onSetModified === \"function\") {\n this.onSetModified();\n }\n }\n }\n\n resetModified() {\n if (this._modified) {\n this._modified = false;\n\n if (typeof this.onResetModified === \"function\") {\n this.onResetModified();\n }\n }\n }\n\n get print() {\n return new PrintAnnotationStorage(this);\n }\n\n get serializable() {\n if (this._storage.size === 0) {\n return null;\n }\n\n const clone = new Map();\n\n for (const [key, val] of this._storage) {\n const serialized = val instanceof _editor.AnnotationEditor ? val.serialize() : val;\n\n if (serialized) {\n clone.set(key, serialized);\n }\n }\n\n return clone;\n }\n\n static getHash(map) {\n if (!map) {\n return \"\";\n }\n\n const hash = new _murmurhash.MurmurHash3_64();\n\n for (const [key, val] of map) {\n hash.update(`${key}:${JSON.stringify(val)}`);\n }\n\n return hash.hexdigest();\n }\n\n}\n\nexports.AnnotationStorage = AnnotationStorage;\n\nclass PrintAnnotationStorage extends AnnotationStorage {\n #serializable = null;\n\n constructor(parent) {\n super();\n this.#serializable = structuredClone(parent.serializable);\n }\n\n get print() {\n (0, _util.unreachable)(\"Should not call PrintAnnotationStorage.print\");\n }\n\n get serializable() {\n return this.#serializable;\n }\n\n}\n\nexports.PrintAnnotationStorage = PrintAnnotationStorage;\n\n/***/ }),\n/* 8 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.AnnotationEditor = void 0;\n\nvar _tools = __w_pdfjs_require__(9);\n\nvar _util = __w_pdfjs_require__(1);\n\nclass AnnotationEditor {\n #boundFocusin = this.focusin.bind(this);\n #boundFocusout = this.focusout.bind(this);\n #hasBeenSelected = false;\n #isEditing = false;\n #isInEditMode = false;\n #zIndex = AnnotationEditor._zIndex++;\n static _colorManager = new _tools.ColorManager();\n static _zIndex = 1;\n\n constructor(parameters) {\n if (this.constructor === AnnotationEditor) {\n (0, _util.unreachable)(\"Cannot initialize AnnotationEditor.\");\n }\n\n this.parent = parameters.parent;\n this.id = parameters.id;\n this.width = this.height = null;\n this.pageIndex = parameters.parent.pageIndex;\n this.name = parameters.name;\n this.div = null;\n const [width, height] = this.parent.viewportBaseDimensions;\n this.x = parameters.x / width;\n this.y = parameters.y / height;\n this.rotation = this.parent.viewport.rotation;\n this.isAttachedToDOM = false;\n }\n\n static get _defaultLineColor() {\n return (0, _util.shadow)(this, \"_defaultLineColor\", this._colorManager.getHexCode(\"CanvasText\"));\n }\n\n setInBackground() {\n this.div.style.zIndex = 0;\n }\n\n setInForeground() {\n this.div.style.zIndex = this.#zIndex;\n }\n\n focusin(event) {\n if (!this.#hasBeenSelected) {\n this.parent.setSelected(this);\n } else {\n this.#hasBeenSelected = false;\n }\n }\n\n focusout(event) {\n if (!this.isAttachedToDOM) {\n return;\n }\n\n const target = event.relatedTarget;\n\n if (target?.closest(`#${this.id}`)) {\n return;\n }\n\n event.preventDefault();\n\n if (!this.parent.isMultipleSelection) {\n this.commitOrRemove();\n }\n }\n\n commitOrRemove() {\n if (this.isEmpty()) {\n this.remove();\n } else {\n this.commit();\n }\n }\n\n commit() {\n this.parent.addToAnnotationStorage(this);\n }\n\n dragstart(event) {\n const rect = this.parent.div.getBoundingClientRect();\n this.startX = event.clientX - rect.x;\n this.startY = event.clientY - rect.y;\n event.dataTransfer.setData(\"text/plain\", this.id);\n event.dataTransfer.effectAllowed = \"move\";\n }\n\n setAt(x, y, tx, ty) {\n const [width, height] = this.parent.viewportBaseDimensions;\n [tx, ty] = this.screenToPageTranslation(tx, ty);\n this.x = (x + tx) / width;\n this.y = (y + ty) / height;\n this.div.style.left = `${100 * this.x}%`;\n this.div.style.top = `${100 * this.y}%`;\n }\n\n translate(x, y) {\n const [width, height] = this.parent.viewportBaseDimensions;\n [x, y] = this.screenToPageTranslation(x, y);\n this.x += x / width;\n this.y += y / height;\n this.div.style.left = `${100 * this.x}%`;\n this.div.style.top = `${100 * this.y}%`;\n }\n\n screenToPageTranslation(x, y) {\n const {\n rotation\n } = this.parent.viewport;\n\n switch (rotation) {\n case 90:\n return [y, -x];\n\n case 180:\n return [-x, -y];\n\n case 270:\n return [-y, x];\n\n default:\n return [x, y];\n }\n }\n\n setDims(width, height) {\n const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions;\n this.div.style.width = `${100 * width / parentWidth}%`;\n this.div.style.height = `${100 * height / parentHeight}%`;\n }\n\n getInitialTranslation() {\n return [0, 0];\n }\n\n render() {\n this.div = document.createElement(\"div\");\n this.div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n this.div.className = this.name;\n this.div.setAttribute(\"id\", this.id);\n this.div.setAttribute(\"tabIndex\", 0);\n this.setInForeground();\n this.div.addEventListener(\"focusin\", this.#boundFocusin);\n this.div.addEventListener(\"focusout\", this.#boundFocusout);\n const [tx, ty] = this.getInitialTranslation();\n this.translate(tx, ty);\n (0, _tools.bindEvents)(this, this.div, [\"dragstart\", \"pointerdown\"]);\n return this.div;\n }\n\n pointerdown(event) {\n const isMac = _tools.KeyboardManager.platform.isMac;\n\n if (event.button !== 0 || event.ctrlKey && isMac) {\n event.preventDefault();\n return;\n }\n\n if (event.ctrlKey && !isMac || event.shiftKey || event.metaKey && isMac) {\n this.parent.toggleSelected(this);\n } else {\n this.parent.setSelected(this);\n }\n\n this.#hasBeenSelected = true;\n }\n\n getRect(tx, ty) {\n const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions;\n const [pageWidth, pageHeight] = this.parent.pageDimensions;\n const shiftX = pageWidth * tx / parentWidth;\n const shiftY = pageHeight * ty / parentHeight;\n const x = this.x * pageWidth;\n const y = this.y * pageHeight;\n const width = this.width * pageWidth;\n const height = this.height * pageHeight;\n\n switch (this.rotation) {\n case 0:\n return [x + shiftX, pageHeight - y - shiftY - height, x + shiftX + width, pageHeight - y - shiftY];\n\n case 90:\n return [x + shiftY, pageHeight - y + shiftX, x + shiftY + height, pageHeight - y + shiftX + width];\n\n case 180:\n return [x - shiftX - width, pageHeight - y + shiftY, x - shiftX, pageHeight - y + shiftY + height];\n\n case 270:\n return [x - shiftY - height, pageHeight - y - shiftX - width, x - shiftY, pageHeight - y - shiftX];\n\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n\n getRectInCurrentCoords(rect, pageHeight) {\n const [x1, y1, x2, y2] = rect;\n const width = x2 - x1;\n const height = y2 - y1;\n\n switch (this.rotation) {\n case 0:\n return [x1, pageHeight - y2, width, height];\n\n case 90:\n return [x1, pageHeight - y1, height, width];\n\n case 180:\n return [x2, pageHeight - y1, width, height];\n\n case 270:\n return [x2, pageHeight - y2, height, width];\n\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n\n onceAdded() {}\n\n isEmpty() {\n return false;\n }\n\n enableEditMode() {\n this.#isInEditMode = true;\n }\n\n disableEditMode() {\n this.#isInEditMode = false;\n }\n\n isInEditMode() {\n return this.#isInEditMode;\n }\n\n shouldGetKeyboardEvents() {\n return false;\n }\n\n needsToBeRebuilt() {\n return this.div && !this.isAttachedToDOM;\n }\n\n rebuild() {\n this.div?.addEventListener(\"focusin\", this.#boundFocusin);\n }\n\n serialize() {\n (0, _util.unreachable)(\"An editor must be serializable\");\n }\n\n static deserialize(data, parent) {\n const editor = new this.prototype.constructor({\n parent,\n id: parent.getNextId()\n });\n editor.rotation = data.rotation;\n const [pageWidth, pageHeight] = parent.pageDimensions;\n const [x, y, width, height] = editor.getRectInCurrentCoords(data.rect, pageHeight);\n editor.x = x / pageWidth;\n editor.y = y / pageHeight;\n editor.width = width / pageWidth;\n editor.height = height / pageHeight;\n return editor;\n }\n\n remove() {\n this.div.removeEventListener(\"focusin\", this.#boundFocusin);\n this.div.removeEventListener(\"focusout\", this.#boundFocusout);\n\n if (!this.isEmpty()) {\n this.commit();\n }\n\n this.parent.remove(this);\n }\n\n select() {\n this.div?.classList.add(\"selectedEditor\");\n }\n\n unselect() {\n this.div?.classList.remove(\"selectedEditor\");\n }\n\n updateParams(type, value) {}\n\n disableEditing() {}\n\n enableEditing() {}\n\n getIdForTextLayer() {\n return this.id;\n }\n\n get propertiesToUpdate() {\n return {};\n }\n\n get contentDiv() {\n return this.div;\n }\n\n get isEditing() {\n return this.#isEditing;\n }\n\n set isEditing(value) {\n this.#isEditing = value;\n\n if (value) {\n this.parent.setSelected(this);\n this.parent.setActiveEditor(this);\n } else {\n this.parent.setActiveEditor(null);\n }\n }\n\n}\n\nexports.AnnotationEditor = AnnotationEditor;\n\n/***/ }),\n/* 9 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.KeyboardManager = exports.CommandManager = exports.ColorManager = exports.AnnotationEditorUIManager = void 0;\nexports.bindEvents = bindEvents;\nexports.opacityToHex = opacityToHex;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _display_utils = __w_pdfjs_require__(4);\n\nfunction bindEvents(obj, element, names) {\n for (const name of names) {\n element.addEventListener(name, obj[name].bind(obj));\n }\n}\n\nfunction opacityToHex(opacity) {\n return Math.round(Math.min(255, Math.max(1, 255 * opacity))).toString(16).padStart(2, \"0\");\n}\n\nclass IdManager {\n #id = 0;\n\n getId() {\n return `${_util.AnnotationEditorPrefix}${this.#id++}`;\n }\n\n}\n\nclass CommandManager {\n #commands = [];\n #locked = false;\n #maxSize;\n #position = -1;\n\n constructor(maxSize = 128) {\n this.#maxSize = maxSize;\n }\n\n add({\n cmd,\n undo,\n mustExec,\n type = NaN,\n overwriteIfSameType = false,\n keepUndo = false\n }) {\n if (mustExec) {\n cmd();\n }\n\n if (this.#locked) {\n return;\n }\n\n const save = {\n cmd,\n undo,\n type\n };\n\n if (this.#position === -1) {\n if (this.#commands.length > 0) {\n this.#commands.length = 0;\n }\n\n this.#position = 0;\n this.#commands.push(save);\n return;\n }\n\n if (overwriteIfSameType && this.#commands[this.#position].type === type) {\n if (keepUndo) {\n save.undo = this.#commands[this.#position].undo;\n }\n\n this.#commands[this.#position] = save;\n return;\n }\n\n const next = this.#position + 1;\n\n if (next === this.#maxSize) {\n this.#commands.splice(0, 1);\n } else {\n this.#position = next;\n\n if (next < this.#commands.length) {\n this.#commands.splice(next);\n }\n }\n\n this.#commands.push(save);\n }\n\n undo() {\n if (this.#position === -1) {\n return;\n }\n\n this.#locked = true;\n this.#commands[this.#position].undo();\n this.#locked = false;\n this.#position -= 1;\n }\n\n redo() {\n if (this.#position < this.#commands.length - 1) {\n this.#position += 1;\n this.#locked = true;\n this.#commands[this.#position].cmd();\n this.#locked = false;\n }\n }\n\n hasSomethingToUndo() {\n return this.#position !== -1;\n }\n\n hasSomethingToRedo() {\n return this.#position < this.#commands.length - 1;\n }\n\n destroy() {\n this.#commands = null;\n }\n\n}\n\nexports.CommandManager = CommandManager;\n\nclass KeyboardManager {\n constructor(callbacks) {\n this.buffer = [];\n this.callbacks = new Map();\n this.allKeys = new Set();\n const isMac = KeyboardManager.platform.isMac;\n\n for (const [keys, callback] of callbacks) {\n for (const key of keys) {\n const isMacKey = key.startsWith(\"mac+\");\n\n if (isMac && isMacKey) {\n this.callbacks.set(key.slice(4), callback);\n this.allKeys.add(key.split(\"+\").at(-1));\n } else if (!isMac && !isMacKey) {\n this.callbacks.set(key, callback);\n this.allKeys.add(key.split(\"+\").at(-1));\n }\n }\n }\n }\n\n static get platform() {\n const platform = typeof navigator !== \"undefined\" ? navigator.platform : \"\";\n return (0, _util.shadow)(this, \"platform\", {\n isWin: platform.includes(\"Win\"),\n isMac: platform.includes(\"Mac\")\n });\n }\n\n __serialize(event) {\n if (event.altKey) {\n this.buffer.push(\"alt\");\n }\n\n if (event.ctrlKey) {\n this.buffer.push(\"ctrl\");\n }\n\n if (event.metaKey) {\n this.buffer.push(\"meta\");\n }\n\n if (event.shiftKey) {\n this.buffer.push(\"shift\");\n }\n\n this.buffer.push(event.key);\n const str = this.buffer.join(\"+\");\n this.buffer.length = 0;\n return str;\n }\n\n exec(self, event) {\n if (!this.allKeys.has(event.key)) {\n return;\n }\n\n const callback = this.callbacks.get(this.__serialize(event));\n\n if (!callback) {\n return;\n }\n\n callback.bind(self)();\n event.stopPropagation();\n event.preventDefault();\n }\n\n}\n\nexports.KeyboardManager = KeyboardManager;\n\nclass ClipboardManager {\n #elements = null;\n\n copy(element) {\n if (!element) {\n return;\n }\n\n if (Array.isArray(element)) {\n this.#elements = element.map(el => el.serialize());\n } else {\n this.#elements = [element.serialize()];\n }\n\n this.#elements = this.#elements.filter(el => !!el);\n\n if (this.#elements.length === 0) {\n this.#elements = null;\n }\n }\n\n paste() {\n return this.#elements;\n }\n\n isEmpty() {\n return this.#elements === null;\n }\n\n destroy() {\n this.#elements = null;\n }\n\n}\n\nclass ColorManager {\n static _colorsMapping = new Map([[\"CanvasText\", [0, 0, 0]], [\"Canvas\", [255, 255, 255]]]);\n\n get _colors() {\n const colors = new Map([[\"CanvasText\", null], [\"Canvas\", null]]);\n (0, _display_utils.getColorValues)(colors);\n return (0, _util.shadow)(this, \"_colors\", colors);\n }\n\n convert(color) {\n const rgb = (0, _display_utils.getRGB)(color);\n\n if (!window.matchMedia(\"(forced-colors: active)\").matches) {\n return rgb;\n }\n\n for (const [name, RGB] of this._colors) {\n if (RGB.every((x, i) => x === rgb[i])) {\n return ColorManager._colorsMapping.get(name);\n }\n }\n\n return rgb;\n }\n\n getHexCode(name) {\n const rgb = this._colors.get(name);\n\n if (!rgb) {\n return name;\n }\n\n return _util.Util.makeHexColor(...rgb);\n }\n\n}\n\nexports.ColorManager = ColorManager;\n\nclass AnnotationEditorUIManager {\n #activeEditor = null;\n #allEditors = new Map();\n #allLayers = new Map();\n #clipboardManager = new ClipboardManager();\n #commandManager = new CommandManager();\n #currentPageIndex = 0;\n #editorTypes = null;\n #eventBus = null;\n #idManager = new IdManager();\n #isEnabled = false;\n #mode = _util.AnnotationEditorType.NONE;\n #selectedEditors = new Set();\n #boundKeydown = this.keydown.bind(this);\n #boundOnEditingAction = this.onEditingAction.bind(this);\n #boundOnPageChanging = this.onPageChanging.bind(this);\n #boundOnTextLayerRendered = this.onTextLayerRendered.bind(this);\n #previousStates = {\n isEditing: false,\n isEmpty: true,\n hasEmptyClipboard: true,\n hasSomethingToUndo: false,\n hasSomethingToRedo: false,\n hasSelectedEditor: false\n };\n #container = null;\n static _keyboardManager = new KeyboardManager([[[\"ctrl+a\", \"mac+meta+a\"], AnnotationEditorUIManager.prototype.selectAll], [[\"ctrl+c\", \"mac+meta+c\"], AnnotationEditorUIManager.prototype.copy], [[\"ctrl+v\", \"mac+meta+v\"], AnnotationEditorUIManager.prototype.paste], [[\"ctrl+x\", \"mac+meta+x\"], AnnotationEditorUIManager.prototype.cut], [[\"ctrl+z\", \"mac+meta+z\"], AnnotationEditorUIManager.prototype.undo], [[\"ctrl+y\", \"ctrl+shift+Z\", \"mac+meta+shift+Z\"], AnnotationEditorUIManager.prototype.redo], [[\"Backspace\", \"alt+Backspace\", \"ctrl+Backspace\", \"shift+Backspace\", \"mac+Backspace\", \"mac+alt+Backspace\", \"mac+ctrl+Backspace\", \"Delete\", \"ctrl+Delete\", \"shift+Delete\"], AnnotationEditorUIManager.prototype.delete], [[\"Escape\", \"mac+Escape\"], AnnotationEditorUIManager.prototype.unselectAll]]);\n\n constructor(container, eventBus) {\n this.#container = container;\n this.#eventBus = eventBus;\n\n this.#eventBus._on(\"editingaction\", this.#boundOnEditingAction);\n\n this.#eventBus._on(\"pagechanging\", this.#boundOnPageChanging);\n\n this.#eventBus._on(\"textlayerrendered\", this.#boundOnTextLayerRendered);\n }\n\n destroy() {\n this.__removeKeyboardManager();\n\n this.#eventBus._off(\"editingaction\", this.#boundOnEditingAction);\n\n this.#eventBus._off(\"pagechanging\", this.#boundOnPageChanging);\n\n this.#eventBus._off(\"textlayerrendered\", this.#boundOnTextLayerRendered);\n\n for (const layer of this.#allLayers.values()) {\n layer.destroy();\n }\n\n this.#allLayers.clear();\n this.#allEditors.clear();\n this.#activeEditor = null;\n this.#selectedEditors.clear();\n this.#clipboardManager.destroy();\n this.#commandManager.destroy();\n }\n\n onPageChanging({\n pageNumber\n }) {\n this.#currentPageIndex = pageNumber - 1;\n }\n\n onTextLayerRendered({\n pageNumber\n }) {\n const pageIndex = pageNumber - 1;\n const layer = this.#allLayers.get(pageIndex);\n layer?.onTextLayerRendered();\n }\n\n focusMainContainer() {\n this.#container.focus();\n }\n\n __addKeyboardManager() {\n this.#container.addEventListener(\"keydown\", this.#boundKeydown);\n }\n\n __removeKeyboardManager() {\n this.#container.removeEventListener(\"keydown\", this.#boundKeydown);\n }\n\n keydown(event) {\n if (!this.getActive()?.shouldGetKeyboardEvents()) {\n AnnotationEditorUIManager._keyboardManager.exec(this, event);\n }\n }\n\n onEditingAction(details) {\n if ([\"undo\", \"redo\", \"cut\", \"copy\", \"paste\", \"delete\", \"selectAll\"].includes(details.name)) {\n this[details.name]();\n }\n }\n\n __dispatchUpdateStates(details) {\n const hasChanged = Object.entries(details).some(([key, value]) => this.#previousStates[key] !== value);\n\n if (hasChanged) {\n this.#eventBus.dispatch(\"annotationeditorstateschanged\", {\n source: this,\n details: Object.assign(this.#previousStates, details)\n });\n }\n }\n\n __dispatchUpdateUI(details) {\n this.#eventBus.dispatch(\"annotationeditorparamschanged\", {\n source: this,\n details\n });\n }\n\n setEditingState(isEditing) {\n if (isEditing) {\n this.__addKeyboardManager();\n this.__dispatchUpdateStates({\n isEditing: this.#mode !== _util.AnnotationEditorType.NONE,\n isEmpty: this.__isEmpty(),\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n hasSelectedEditor: false,\n hasEmptyClipboard: this.#clipboardManager.isEmpty()\n });\n } else {\n this.__removeKeyboardManager();\n this.__dispatchUpdateStates({\n isEditing: false\n });\n }\n }\n\n registerEditorTypes(types) {\n this.#editorTypes = types;\n\n for (const editorType of this.#editorTypes) {\n this.__dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n }\n }\n\n getId() {\n return this.#idManager.getId();\n }\n\n addLayer(layer) {\n this.#allLayers.set(layer.pageIndex, layer);\n\n if (this.#isEnabled) {\n layer.enable();\n } else {\n layer.disable();\n }\n }\n\n removeLayer(layer) {\n this.#allLayers.delete(layer.pageIndex);\n }\n\n updateMode(mode) {\n this.#mode = mode;\n\n if (mode === _util.AnnotationEditorType.NONE) {\n this.setEditingState(false);\n this.__disableAll();\n } else {\n this.setEditingState(true);\n this.__enableAll();\n\n for (const layer of this.#allLayers.values()) {\n layer.updateMode(mode);\n }\n }\n }\n\n updateToolbar(mode) {\n if (mode === this.#mode) {\n return;\n }\n\n this.#eventBus.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode\n });\n }\n\n updateParams(type, value) {\n for (const editor of this.#selectedEditors) {\n editor.updateParams(type, value);\n }\n\n for (const editorType of this.#editorTypes) {\n editorType.updateDefaultParams(type, value);\n }\n }\n\n __enableAll() {\n if (!this.#isEnabled) {\n this.#isEnabled = true;\n\n for (const layer of this.#allLayers.values()) {\n layer.enable();\n }\n }\n }\n\n __disableAll() {\n this.unselectAll();\n\n if (this.#isEnabled) {\n this.#isEnabled = false;\n\n for (const layer of this.#allLayers.values()) {\n layer.disable();\n }\n }\n }\n\n getEditors(pageIndex) {\n const editors = [];\n\n for (const editor of this.#allEditors.values()) {\n if (editor.pageIndex === pageIndex) {\n editors.push(editor);\n }\n }\n\n return editors;\n }\n\n getEditor(id) {\n return this.#allEditors.get(id);\n }\n\n addEditor(editor) {\n this.#allEditors.set(editor.id, editor);\n }\n\n removeEditor(editor) {\n this.#allEditors.delete(editor.id);\n this.unselect(editor);\n }\n\n __addEditorToLayer(editor) {\n const layer = this.#allLayers.get(editor.pageIndex);\n\n if (layer) {\n layer.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n }\n }\n\n setActiveEditor(editor) {\n if (this.#activeEditor === editor) {\n return;\n }\n\n this.#activeEditor = editor;\n\n if (editor) {\n this.__dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n\n toggleSelected(editor) {\n if (this.#selectedEditors.has(editor)) {\n this.#selectedEditors.delete(editor);\n editor.unselect();\n this.__dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n return;\n }\n\n this.#selectedEditors.add(editor);\n editor.select();\n this.__dispatchUpdateUI(editor.propertiesToUpdate);\n this.__dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n\n setSelected(editor) {\n for (const ed of this.#selectedEditors) {\n if (ed !== editor) {\n ed.unselect();\n }\n }\n\n this.#selectedEditors.clear();\n this.#selectedEditors.add(editor);\n editor.select();\n this.__dispatchUpdateUI(editor.propertiesToUpdate);\n this.__dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n\n isSelected(editor) {\n return this.#selectedEditors.has(editor);\n }\n\n unselect(editor) {\n editor.unselect();\n this.#selectedEditors.delete(editor);\n this.__dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n\n get hasSelection() {\n return this.#selectedEditors.size !== 0;\n }\n\n undo() {\n this.#commandManager.undo();\n this.__dispatchUpdateStates({\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: true,\n isEmpty: this.__isEmpty()\n });\n }\n\n redo() {\n this.#commandManager.redo();\n this.__dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n isEmpty: this.__isEmpty()\n });\n }\n\n addCommands(params) {\n this.#commandManager.add(params);\n this.__dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: false,\n isEmpty: this.__isEmpty()\n });\n }\n\n __isEmpty() {\n if (this.#allEditors.size === 0) {\n return true;\n }\n\n if (this.#allEditors.size === 1) {\n for (const editor of this.#allEditors.values()) {\n return editor.isEmpty();\n }\n }\n\n return false;\n }\n\n delete() {\n if (this.#activeEditor) {\n this.#activeEditor.commitOrRemove();\n }\n\n if (!this.hasSelection) {\n return;\n }\n\n const editors = [...this.#selectedEditors];\n\n const cmd = () => {\n for (const editor of editors) {\n editor.remove();\n }\n };\n\n const undo = () => {\n for (const editor of editors) {\n this.__addEditorToLayer(editor);\n }\n };\n\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n\n copy() {\n if (this.#activeEditor) {\n this.#activeEditor.commitOrRemove();\n }\n\n if (this.hasSelection) {\n const editors = [];\n\n for (const editor of this.#selectedEditors) {\n if (!editor.isEmpty()) {\n editors.push(editor);\n }\n }\n\n if (editors.length === 0) {\n return;\n }\n\n this.#clipboardManager.copy(editors);\n this.__dispatchUpdateStates({\n hasEmptyClipboard: false\n });\n }\n }\n\n cut() {\n this.copy();\n this.delete();\n }\n\n paste() {\n if (this.#clipboardManager.isEmpty()) {\n return;\n }\n\n this.unselectAll();\n const layer = this.#allLayers.get(this.#currentPageIndex);\n const newEditors = this.#clipboardManager.paste().map(data => layer.deserialize(data));\n\n const cmd = () => {\n for (const editor of newEditors) {\n this.__addEditorToLayer(editor);\n }\n\n this.__selectEditors(newEditors);\n };\n\n const undo = () => {\n for (const editor of newEditors) {\n editor.remove();\n }\n };\n\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n\n __selectEditors(editors) {\n this.#selectedEditors.clear();\n\n for (const editor of editors) {\n if (editor.isEmpty()) {\n continue;\n }\n\n this.#selectedEditors.add(editor);\n editor.select();\n }\n\n this.__dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n\n selectAll() {\n for (const editor of this.#selectedEditors) {\n editor.commit();\n }\n\n this.__selectEditors(this.#allEditors.values());\n }\n\n unselectAll() {\n if (this.#activeEditor) {\n this.#activeEditor.commitOrRemove();\n return;\n }\n\n if (this.__selectEditors.size === 0) {\n return;\n }\n\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n\n this.#selectedEditors.clear();\n this.__dispatchUpdateStates({\n hasSelectedEditor: false\n });\n }\n\n isActive(editor) {\n return this.#activeEditor === editor;\n }\n\n getActive() {\n return this.#activeEditor;\n }\n\n getMode() {\n return this.#mode;\n }\n\n}\n\nexports.AnnotationEditorUIManager = AnnotationEditorUIManager;\n\n/***/ }),\n/* 10 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.MurmurHash3_64 = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nconst SEED = 0xc3d2e1f0;\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\n\nclass MurmurHash3_64 {\n constructor(seed) {\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\n\n update(input) {\n let data, length;\n\n if (typeof input === \"string\") {\n data = new Uint8Array(input.length * 2);\n length = 0;\n\n for (let i = 0, ii = input.length; i < ii; i++) {\n const code = input.charCodeAt(i);\n\n if (code <= 0xff) {\n data[length++] = code;\n } else {\n data[length++] = code >>> 8;\n data[length++] = code & 0xff;\n }\n }\n } else if ((0, _util.isArrayBuffer)(input)) {\n data = input.slice();\n length = data.byteLength;\n } else {\n throw new Error(\"Wrong data format in MurmurHash3_64_update. \" + \"Input must be a string or array.\");\n }\n\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\n const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n let k1 = 0,\n k2 = 0;\n let h1 = this.h1,\n h2 = this.h2;\n const C1 = 0xcc9e2d51,\n C2 = 0x1b873593;\n const C1_LOW = C1 & MASK_LOW,\n C2_LOW = C2 & MASK_LOW;\n\n for (let i = 0; i < blockCounts; i++) {\n if (i & 1) {\n k1 = dataUint32[i];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n h1 ^= k1;\n h1 = h1 << 13 | h1 >>> 19;\n h1 = h1 * 5 + 0xe6546b64;\n } else {\n k2 = dataUint32[i];\n k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;\n k2 = k2 << 15 | k2 >>> 17;\n k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;\n h2 ^= k2;\n h2 = h2 << 13 | h2 >>> 19;\n h2 = h2 * 5 + 0xe6546b64;\n }\n }\n\n k1 = 0;\n\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n\n case 1:\n k1 ^= data[blockCounts * 4];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n\n if (blockCounts & 1) {\n h1 ^= k1;\n } else {\n h2 ^= k1;\n }\n\n }\n\n this.h1 = h1;\n this.h2 = h2;\n }\n\n hexdigest() {\n let h1 = this.h1,\n h2 = this.h2;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;\n h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;\n h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n const hex1 = (h1 >>> 0).toString(16),\n hex2 = (h2 >>> 0).toString(16);\n return hex1.padStart(8, \"0\") + hex2.padStart(8, \"0\");\n }\n\n}\n\nexports.MurmurHash3_64 = MurmurHash3_64;\n\n/***/ }),\n/* 11 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.FontLoader = exports.FontFaceObject = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nclass BaseFontLoader {\n constructor({\n docId,\n onUnsupportedFeature,\n ownerDocument = globalThis.document,\n styleElement = null\n }) {\n if (this.constructor === BaseFontLoader) {\n (0, _util.unreachable)(\"Cannot initialize BaseFontLoader.\");\n }\n\n this.docId = docId;\n this._onUnsupportedFeature = onUnsupportedFeature;\n this._document = ownerDocument;\n this.nativeFontFaces = [];\n this.styleElement = null;\n }\n\n addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.push(nativeFontFace);\n\n this._document.fonts.add(nativeFontFace);\n }\n\n insertRule(rule) {\n let styleElement = this.styleElement;\n\n if (!styleElement) {\n styleElement = this.styleElement = this._document.createElement(\"style\");\n styleElement.id = `PDFJS_FONT_STYLE_TAG_${this.docId}`;\n\n this._document.documentElement.getElementsByTagName(\"head\")[0].append(styleElement);\n }\n\n const styleSheet = styleElement.sheet;\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n }\n\n clear() {\n for (const nativeFontFace of this.nativeFontFaces) {\n this._document.fonts.delete(nativeFontFace);\n }\n\n this.nativeFontFaces.length = 0;\n\n if (this.styleElement) {\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n\n async bind(font) {\n if (font.attached || font.missingFile) {\n return;\n }\n\n font.attached = true;\n\n if (this.isFontLoadingAPISupported) {\n const nativeFontFace = font.createNativeFontFace();\n\n if (nativeFontFace) {\n this.addNativeFontFace(nativeFontFace);\n\n try {\n await nativeFontFace.loaded;\n } catch (ex) {\n this._onUnsupportedFeature({\n featureId: _util.UNSUPPORTED_FEATURES.errorFontLoadNative\n });\n\n (0, _util.warn)(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n font.disableFontFace = true;\n throw ex;\n }\n }\n\n return;\n }\n\n const rule = font.createFontFaceRule();\n\n if (rule) {\n this.insertRule(rule);\n\n if (this.isSyncFontLoadingSupported) {\n return;\n }\n\n await new Promise(resolve => {\n const request = this._queueLoadingCallback(resolve);\n\n this._prepareFontLoadEvent([rule], [font], request);\n });\n }\n }\n\n _queueLoadingCallback(callback) {\n (0, _util.unreachable)(\"Abstract method `_queueLoadingCallback`.\");\n }\n\n get isFontLoadingAPISupported() {\n const hasFonts = !!this._document?.fonts;\n return (0, _util.shadow)(this, \"isFontLoadingAPISupported\", hasFonts);\n }\n\n get isSyncFontLoadingSupported() {\n (0, _util.unreachable)(\"Abstract method `isSyncFontLoadingSupported`.\");\n }\n\n get _loadTestFont() {\n (0, _util.unreachable)(\"Abstract method `_loadTestFont`.\");\n }\n\n _prepareFontLoadEvent(rules, fontsToLoad, request) {\n (0, _util.unreachable)(\"Abstract method `_prepareFontLoadEvent`.\");\n }\n\n}\n\nlet FontLoader;\nexports.FontLoader = FontLoader;\n{\n exports.FontLoader = FontLoader = class GenericFontLoader extends BaseFontLoader {\n constructor(params) {\n super(params);\n this.loadingContext = {\n requests: [],\n nextRequestId: 0\n };\n this.loadTestFontId = 0;\n }\n\n get isSyncFontLoadingSupported() {\n let supported = false;\n\n if (typeof navigator === \"undefined\") {\n supported = true;\n } else {\n const m = /Mozilla\\/5.0.*?rv:(\\d+).*? Gecko/.exec(navigator.userAgent);\n\n if (m?.[1] >= 14) {\n supported = true;\n }\n }\n\n return (0, _util.shadow)(this, \"isSyncFontLoadingSupported\", supported);\n }\n\n _queueLoadingCallback(callback) {\n function completeRequest() {\n (0, _util.assert)(!request.done, \"completeRequest() cannot be called twice.\");\n request.done = true;\n\n while (context.requests.length > 0 && context.requests[0].done) {\n const otherRequest = context.requests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n\n const context = this.loadingContext;\n const request = {\n id: `pdfjs-font-loading-${context.nextRequestId++}`,\n done: false,\n complete: completeRequest,\n callback\n };\n context.requests.push(request);\n return request;\n }\n\n get _loadTestFont() {\n const getLoadTestFont = function () {\n return atob(\"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" + \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" + \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" + \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" + \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" + \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" + \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" + \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" + \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" + \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" + \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" + \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" + \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" + \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" + \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" + \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" + \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\");\n };\n\n return (0, _util.shadow)(this, \"_loadTestFont\", getLoadTestFont());\n }\n\n _prepareFontLoadEvent(rules, fonts, request) {\n function int32(data, offset) {\n return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;\n }\n\n function spliceString(s, offset, remove, insert) {\n const chunk1 = s.substring(0, offset);\n const chunk2 = s.substring(offset + remove);\n return chunk1 + insert + chunk2;\n }\n\n let i, ii;\n\n const canvas = this._document.createElement(\"canvas\");\n\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n let called = 0;\n\n function isFontReady(name, callback) {\n called++;\n\n if (called > 30) {\n (0, _util.warn)(\"Load test font never loaded.\");\n callback();\n return;\n }\n\n ctx.font = \"30px \" + name;\n ctx.fillText(\".\", 0, 20);\n const imageData = ctx.getImageData(0, 0, 1, 1);\n\n if (imageData.data[3] > 0) {\n callback();\n return;\n }\n\n setTimeout(isFontReady.bind(null, name, callback));\n }\n\n const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n let data = this._loadTestFont;\n const COMMENT_OFFSET = 976;\n data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);\n const CFF_CHECKSUM_OFFSET = 16;\n const XXXX_VALUE = 0x58585858;\n let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n\n for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;\n }\n\n if (i < loadTestFontId.length) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i) | 0;\n }\n\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0, _util.string32)(checksum));\n const url = `url(data:font/opentype;base64,${btoa(data)});`;\n const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n this.insertRule(rule);\n const names = [];\n\n for (const font of fonts) {\n names.push(font.loadedName);\n }\n\n names.push(loadTestFontId);\n\n const div = this._document.createElement(\"div\");\n\n div.style.visibility = \"hidden\";\n div.style.width = div.style.height = \"10px\";\n div.style.position = \"absolute\";\n div.style.top = div.style.left = \"0px\";\n\n for (const name of names) {\n const span = this._document.createElement(\"span\");\n\n span.textContent = \"Hi\";\n span.style.fontFamily = name;\n div.append(span);\n }\n\n this._document.body.append(div);\n\n isFontReady(loadTestFontId, () => {\n div.remove();\n request.complete();\n });\n }\n\n };\n}\n\nclass FontFaceObject {\n constructor(translatedData, {\n isEvalSupported = true,\n disableFontFace = false,\n ignoreErrors = false,\n onUnsupportedFeature,\n fontRegistry = null\n }) {\n this.compiledGlyphs = Object.create(null);\n\n for (const i in translatedData) {\n this[i] = translatedData[i];\n }\n\n this.isEvalSupported = isEvalSupported !== false;\n this.disableFontFace = disableFontFace === true;\n this.ignoreErrors = ignoreErrors === true;\n this._onUnsupportedFeature = onUnsupportedFeature;\n this.fontRegistry = fontRegistry;\n }\n\n createNativeFontFace() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n\n let nativeFontFace;\n\n if (!this.cssFontInfo) {\n nativeFontFace = new FontFace(this.loadedName, this.data, {});\n } else {\n const css = {\n weight: this.cssFontInfo.fontWeight\n };\n\n if (this.cssFontInfo.italicAngle) {\n css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\n }\n\n nativeFontFace = new FontFace(this.cssFontInfo.fontFamily, this.data, css);\n }\n\n if (this.fontRegistry) {\n this.fontRegistry.registerFont(this);\n }\n\n return nativeFontFace;\n }\n\n createFontFaceRule() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n\n const data = (0, _util.bytesToString)(this.data);\n const url = `url(data:${this.mimetype};base64,${btoa(data)});`;\n let rule;\n\n if (!this.cssFontInfo) {\n rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n } else {\n let css = `font-weight: ${this.cssFontInfo.fontWeight};`;\n\n if (this.cssFontInfo.italicAngle) {\n css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;\n }\n\n rule = `@font-face {font-family:\"${this.cssFontInfo.fontFamily}\";${css}src:${url}}`;\n }\n\n if (this.fontRegistry) {\n this.fontRegistry.registerFont(this, url);\n }\n\n return rule;\n }\n\n getPathGenerator(objs, character) {\n if (this.compiledGlyphs[character] !== undefined) {\n return this.compiledGlyphs[character];\n }\n\n let cmds;\n\n try {\n cmds = objs.get(this.loadedName + \"_path_\" + character);\n } catch (ex) {\n if (!this.ignoreErrors) {\n throw ex;\n }\n\n this._onUnsupportedFeature({\n featureId: _util.UNSUPPORTED_FEATURES.errorFontGetPath\n });\n\n (0, _util.warn)(`getPathGenerator - ignoring character: \"${ex}\".`);\n return this.compiledGlyphs[character] = function (c, size) {};\n }\n\n if (this.isEvalSupported && _util.FeatureTest.isEvalSupported) {\n const jsBuf = [];\n\n for (const current of cmds) {\n const args = current.args !== undefined ? current.args.join(\",\") : \"\";\n jsBuf.push(\"c.\", current.cmd, \"(\", args, \");\\n\");\n }\n\n return this.compiledGlyphs[character] = new Function(\"c\", \"size\", jsBuf.join(\"\"));\n }\n\n return this.compiledGlyphs[character] = function (c, size) {\n for (const current of cmds) {\n if (current.cmd === \"scale\") {\n current.args = [size, -size];\n }\n\n c[current.cmd].apply(c, current.args);\n }\n };\n }\n\n}\n\nexports.FontFaceObject = FontFaceObject;\n\n/***/ }),\n/* 12 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.CanvasGraphics = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _display_utils = __w_pdfjs_require__(4);\n\nvar _pattern_helper = __w_pdfjs_require__(13);\n\nvar _image_utils = __w_pdfjs_require__(14);\n\nvar _is_node = __w_pdfjs_require__(3);\n\nconst MIN_FONT_SIZE = 16;\nconst MAX_FONT_SIZE = 100;\nconst MAX_GROUP_SIZE = 4096;\nconst EXECUTION_TIME = 15;\nconst EXECUTION_STEPS = 10;\nconst COMPILE_TYPE3_GLYPHS = true;\nconst MAX_SIZE_TO_COMPILE = 1000;\nconst FULL_CHUNK_HEIGHT = 16;\nconst LINEWIDTH_SCALE_FACTOR = 1.000001;\n\nfunction mirrorContextOperations(ctx, destCtx) {\n if (ctx._removeMirroring) {\n throw new Error(\"Context is already forwarding operations.\");\n }\n\n ctx.__originalSave = ctx.save;\n ctx.__originalRestore = ctx.restore;\n ctx.__originalRotate = ctx.rotate;\n ctx.__originalScale = ctx.scale;\n ctx.__originalTranslate = ctx.translate;\n ctx.__originalTransform = ctx.transform;\n ctx.__originalSetTransform = ctx.setTransform;\n ctx.__originalResetTransform = ctx.resetTransform;\n ctx.__originalClip = ctx.clip;\n ctx.__originalMoveTo = ctx.moveTo;\n ctx.__originalLineTo = ctx.lineTo;\n ctx.__originalBezierCurveTo = ctx.bezierCurveTo;\n ctx.__originalRect = ctx.rect;\n ctx.__originalClosePath = ctx.closePath;\n ctx.__originalBeginPath = ctx.beginPath;\n\n ctx._removeMirroring = () => {\n ctx.save = ctx.__originalSave;\n ctx.restore = ctx.__originalRestore;\n ctx.rotate = ctx.__originalRotate;\n ctx.scale = ctx.__originalScale;\n ctx.translate = ctx.__originalTranslate;\n ctx.transform = ctx.__originalTransform;\n ctx.setTransform = ctx.__originalSetTransform;\n ctx.resetTransform = ctx.__originalResetTransform;\n ctx.clip = ctx.__originalClip;\n ctx.moveTo = ctx.__originalMoveTo;\n ctx.lineTo = ctx.__originalLineTo;\n ctx.bezierCurveTo = ctx.__originalBezierCurveTo;\n ctx.rect = ctx.__originalRect;\n ctx.closePath = ctx.__originalClosePath;\n ctx.beginPath = ctx.__originalBeginPath;\n delete ctx._removeMirroring;\n };\n\n ctx.save = function ctxSave() {\n destCtx.save();\n\n this.__originalSave();\n };\n\n ctx.restore = function ctxRestore() {\n destCtx.restore();\n\n this.__originalRestore();\n };\n\n ctx.translate = function ctxTranslate(x, y) {\n destCtx.translate(x, y);\n\n this.__originalTranslate(x, y);\n };\n\n ctx.scale = function ctxScale(x, y) {\n destCtx.scale(x, y);\n\n this.__originalScale(x, y);\n };\n\n ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n destCtx.transform(a, b, c, d, e, f);\n\n this.__originalTransform(a, b, c, d, e, f);\n };\n\n ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n destCtx.setTransform(a, b, c, d, e, f);\n\n this.__originalSetTransform(a, b, c, d, e, f);\n };\n\n ctx.resetTransform = function ctxResetTransform() {\n destCtx.resetTransform();\n\n this.__originalResetTransform();\n };\n\n ctx.rotate = function ctxRotate(angle) {\n destCtx.rotate(angle);\n\n this.__originalRotate(angle);\n };\n\n ctx.clip = function ctxRotate(rule) {\n destCtx.clip(rule);\n\n this.__originalClip(rule);\n };\n\n ctx.moveTo = function (x, y) {\n destCtx.moveTo(x, y);\n\n this.__originalMoveTo(x, y);\n };\n\n ctx.lineTo = function (x, y) {\n destCtx.lineTo(x, y);\n\n this.__originalLineTo(x, y);\n };\n\n ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {\n destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n\n this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n };\n\n ctx.rect = function (x, y, width, height) {\n destCtx.rect(x, y, width, height);\n\n this.__originalRect(x, y, width, height);\n };\n\n ctx.closePath = function () {\n destCtx.closePath();\n\n this.__originalClosePath();\n };\n\n ctx.beginPath = function () {\n destCtx.beginPath();\n\n this.__originalBeginPath();\n };\n}\n\nfunction addContextCurrentTransform(ctx) {\n if (ctx._transformStack) {\n ctx._transformStack = [];\n }\n\n if (ctx.mozCurrentTransform) {\n return;\n }\n\n ctx._originalSave = ctx.save;\n ctx._originalRestore = ctx.restore;\n ctx._originalRotate = ctx.rotate;\n ctx._originalScale = ctx.scale;\n ctx._originalTranslate = ctx.translate;\n ctx._originalTransform = ctx.transform;\n ctx._originalSetTransform = ctx.setTransform;\n ctx._originalResetTransform = ctx.resetTransform;\n ctx._transformMatrix = ctx._transformMatrix || [1, 0, 0, 1, 0, 0];\n ctx._transformStack = [];\n\n try {\n const desc = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(ctx), \"lineWidth\");\n ctx._setLineWidth = desc.set;\n ctx._getLineWidth = desc.get;\n Object.defineProperty(ctx, \"lineWidth\", {\n set: function setLineWidth(width) {\n this._setLineWidth(width * LINEWIDTH_SCALE_FACTOR);\n },\n get: function getLineWidth() {\n return this._getLineWidth();\n }\n });\n } catch (_) {}\n\n Object.defineProperty(ctx, \"mozCurrentTransform\", {\n get: function getCurrentTransform() {\n return this._transformMatrix;\n }\n });\n Object.defineProperty(ctx, \"mozCurrentTransformInverse\", {\n get: function getCurrentTransformInverse() {\n const [a, b, c, d, e, f] = this._transformMatrix;\n const ad_bc = a * d - b * c;\n const bc_ad = b * c - a * d;\n return [d / ad_bc, b / bc_ad, c / bc_ad, a / ad_bc, (d * e - c * f) / bc_ad, (b * e - a * f) / ad_bc];\n }\n });\n\n ctx.save = function ctxSave() {\n const old = this._transformMatrix;\n\n this._transformStack.push(old);\n\n this._transformMatrix = old.slice(0, 6);\n\n this._originalSave();\n };\n\n ctx.restore = function ctxRestore() {\n if (this._transformStack.length === 0) {\n (0, _util.warn)(\"Tried to restore a ctx when the stack was already empty.\");\n }\n\n const prev = this._transformStack.pop();\n\n if (prev) {\n this._transformMatrix = prev;\n\n this._originalRestore();\n }\n };\n\n ctx.translate = function ctxTranslate(x, y) {\n const m = this._transformMatrix;\n m[4] = m[0] * x + m[2] * y + m[4];\n m[5] = m[1] * x + m[3] * y + m[5];\n\n this._originalTranslate(x, y);\n };\n\n ctx.scale = function ctxScale(x, y) {\n const m = this._transformMatrix;\n m[0] *= x;\n m[1] *= x;\n m[2] *= y;\n m[3] *= y;\n\n this._originalScale(x, y);\n };\n\n ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n const m = this._transformMatrix;\n this._transformMatrix = [m[0] * a + m[2] * b, m[1] * a + m[3] * b, m[0] * c + m[2] * d, m[1] * c + m[3] * d, m[0] * e + m[2] * f + m[4], m[1] * e + m[3] * f + m[5]];\n\n ctx._originalTransform(a, b, c, d, e, f);\n };\n\n ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n this._transformMatrix = [a, b, c, d, e, f];\n\n ctx._originalSetTransform(a, b, c, d, e, f);\n };\n\n ctx.resetTransform = function ctxResetTransform() {\n this._transformMatrix = [1, 0, 0, 1, 0, 0];\n\n ctx._originalResetTransform();\n };\n\n ctx.rotate = function ctxRotate(angle) {\n const cosValue = Math.cos(angle);\n const sinValue = Math.sin(angle);\n const m = this._transformMatrix;\n this._transformMatrix = [m[0] * cosValue + m[2] * sinValue, m[1] * cosValue + m[3] * sinValue, m[0] * -sinValue + m[2] * cosValue, m[1] * -sinValue + m[3] * cosValue, m[4], m[5]];\n\n this._originalRotate(angle);\n };\n}\n\nclass CachedCanvases {\n constructor(canvasFactory) {\n this.canvasFactory = canvasFactory;\n this.cache = Object.create(null);\n }\n\n getCanvas(id, width, height, trackTransform) {\n let canvasEntry;\n\n if (this.cache[id] !== undefined) {\n canvasEntry = this.cache[id];\n this.canvasFactory.reset(canvasEntry, width, height);\n canvasEntry.context.setTransform(1, 0, 0, 1, 0, 0);\n } else {\n canvasEntry = this.canvasFactory.create(width, height);\n this.cache[id] = canvasEntry;\n }\n\n if (trackTransform) {\n addContextCurrentTransform(canvasEntry.context);\n }\n\n return canvasEntry;\n }\n\n delete(id) {\n delete this.cache[id];\n }\n\n clear() {\n for (const id in this.cache) {\n const canvasEntry = this.cache[id];\n this.canvasFactory.destroy(canvasEntry);\n delete this.cache[id];\n }\n }\n\n}\n\nfunction drawImageAtIntegerCoords(ctx, srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH) {\n const [a, b, c, d, tx, ty] = ctx.mozCurrentTransform;\n\n if (b === 0 && c === 0) {\n const tlX = destX * a + tx;\n const rTlX = Math.round(tlX);\n const tlY = destY * d + ty;\n const rTlY = Math.round(tlY);\n const brX = (destX + destW) * a + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destY + destH) * d + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rWidth, rHeight];\n }\n\n if (a === 0 && d === 0) {\n const tlX = destY * c + tx;\n const rTlX = Math.round(tlX);\n const tlY = destX * b + ty;\n const rTlY = Math.round(tlY);\n const brX = (destY + destH) * c + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destX + destW) * b + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rHeight, rWidth];\n }\n\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);\n const scaleX = Math.hypot(a, b);\n const scaleY = Math.hypot(c, d);\n return [scaleX * destW, scaleY * destH];\n}\n\nfunction compileType3Glyph(imgData) {\n const {\n width,\n height\n } = imgData;\n\n if (!COMPILE_TYPE3_GLYPHS || width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) {\n return null;\n }\n\n const POINT_TO_PROCESS_LIMIT = 1000;\n const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);\n const width1 = width + 1;\n let points = new Uint8Array(width1 * (height + 1));\n let i, j, j0;\n const lineSize = width + 7 & ~7;\n let data = new Uint8Array(lineSize * height),\n pos = 0;\n\n for (const elem of imgData.data) {\n let mask = 128;\n\n while (mask > 0) {\n data[pos++] = elem & mask ? 0 : 255;\n mask >>= 1;\n }\n }\n\n let count = 0;\n pos = 0;\n\n if (data[pos] !== 0) {\n points[0] = 1;\n ++count;\n }\n\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j] = data[pos] ? 2 : 1;\n ++count;\n }\n\n pos++;\n }\n\n if (data[pos] !== 0) {\n points[j] = 2;\n ++count;\n }\n\n for (i = 1; i < height; i++) {\n pos = i * lineSize;\n j0 = i * width1;\n\n if (data[pos - lineSize] !== data[pos]) {\n points[j0] = data[pos] ? 1 : 8;\n ++count;\n }\n\n let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n\n for (j = 1; j < width; j++) {\n sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0);\n\n if (POINT_TYPES[sum]) {\n points[j0 + j] = POINT_TYPES[sum];\n ++count;\n }\n\n pos++;\n }\n\n if (data[pos - lineSize] !== data[pos]) {\n points[j0 + j] = data[pos] ? 2 : 4;\n ++count;\n }\n\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n }\n\n pos = lineSize * (height - 1);\n j0 = i * width1;\n\n if (data[pos] !== 0) {\n points[j0] = 8;\n ++count;\n }\n\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j0 + j] = data[pos] ? 4 : 8;\n ++count;\n }\n\n pos++;\n }\n\n if (data[pos] !== 0) {\n points[j0 + j] = 4;\n ++count;\n }\n\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n\n const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n let path, outlines, coords;\n\n if (!_is_node.isNodeJS) {\n path = new Path2D();\n } else {\n outlines = [];\n }\n\n for (i = 0; count && i <= height; i++) {\n let p = i * width1;\n const end = p + width;\n\n while (p < end && !points[p]) {\n p++;\n }\n\n if (p === end) {\n continue;\n }\n\n if (path) {\n path.moveTo(p % width1, i);\n } else {\n coords = [p % width1, i];\n }\n\n const p0 = p;\n let type = points[p];\n\n do {\n const step = steps[type];\n\n do {\n p += step;\n } while (!points[p]);\n\n const pp = points[p];\n\n if (pp !== 5 && pp !== 10) {\n type = pp;\n points[p] = 0;\n } else {\n type = pp & 0x33 * type >> 4;\n points[p] &= type >> 2 | type << 2;\n }\n\n if (path) {\n path.lineTo(p % width1, p / width1 | 0);\n } else {\n coords.push(p % width1, p / width1 | 0);\n }\n\n if (!points[p]) {\n --count;\n }\n } while (p0 !== p);\n\n if (!path) {\n outlines.push(coords);\n }\n\n --i;\n }\n\n data = null;\n points = null;\n\n const drawOutline = function (c) {\n c.save();\n c.scale(1 / width, -1 / height);\n c.translate(0, -height);\n\n if (path) {\n c.fill(path);\n } else {\n c.beginPath();\n\n for (const o of outlines) {\n c.moveTo(o[0], o[1]);\n\n for (let l = 2, ll = o.length; l < ll; l += 2) {\n c.lineTo(o[l], o[l + 1]);\n }\n }\n\n c.fill();\n }\n\n c.beginPath();\n c.restore();\n };\n\n return drawOutline;\n}\n\nclass CanvasExtraState {\n constructor(width, height) {\n this.alphaIsShape = false;\n this.fontSize = 0;\n this.fontSizeScale = 1;\n this.textMatrix = _util.IDENTITY_MATRIX;\n this.textMatrixScale = 1;\n this.fontMatrix = _util.FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.x = 0;\n this.y = 0;\n this.lineX = 0;\n this.lineY = 0;\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRenderingMode = _util.TextRenderingMode.FILL;\n this.textRise = 0;\n this.fillColor = \"#000000\";\n this.strokeColor = \"#000000\";\n this.patternFill = false;\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.activeSMask = null;\n this.transferMaps = null;\n this.startNewPathAndClipBox([0, 0, width, height]);\n }\n\n clone() {\n const clone = Object.create(this);\n clone.clipBox = this.clipBox.slice();\n return clone;\n }\n\n setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n\n updatePathMinMax(transform, x, y) {\n [x, y] = _util.Util.applyTransform([x, y], transform);\n this.minX = Math.min(this.minX, x);\n this.minY = Math.min(this.minY, y);\n this.maxX = Math.max(this.maxX, x);\n this.maxY = Math.max(this.maxY, y);\n }\n\n updateRectMinMax(transform, rect) {\n const p1 = _util.Util.applyTransform(rect, transform);\n\n const p2 = _util.Util.applyTransform(rect.slice(2), transform);\n\n this.minX = Math.min(this.minX, p1[0], p2[0]);\n this.minY = Math.min(this.minY, p1[1], p2[1]);\n this.maxX = Math.max(this.maxX, p1[0], p2[0]);\n this.maxY = Math.max(this.maxY, p1[1], p2[1]);\n }\n\n updateScalingPathMinMax(transform, minMax) {\n _util.Util.scaleMinMax(transform, minMax);\n\n this.minX = Math.min(this.minX, minMax[0]);\n this.maxX = Math.max(this.maxX, minMax[1]);\n this.minY = Math.min(this.minY, minMax[2]);\n this.maxY = Math.max(this.maxY, minMax[3]);\n }\n\n updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n const box = _util.Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3);\n\n if (minMax) {\n minMax[0] = Math.min(minMax[0], box[0], box[2]);\n minMax[1] = Math.max(minMax[1], box[0], box[2]);\n minMax[2] = Math.min(minMax[2], box[1], box[3]);\n minMax[3] = Math.max(minMax[3], box[1], box[3]);\n return;\n }\n\n this.updateRectMinMax(transform, box);\n }\n\n getPathBoundingBox(pathType = _pattern_helper.PathType.FILL, transform = null) {\n const box = [this.minX, this.minY, this.maxX, this.maxY];\n\n if (pathType === _pattern_helper.PathType.STROKE) {\n if (!transform) {\n (0, _util.unreachable)(\"Stroke bounding box must include transform.\");\n }\n\n const scale = _util.Util.singularValueDecompose2dScale(transform);\n\n const xStrokePad = scale[0] * this.lineWidth / 2;\n const yStrokePad = scale[1] * this.lineWidth / 2;\n box[0] -= xStrokePad;\n box[1] -= yStrokePad;\n box[2] += xStrokePad;\n box[3] += yStrokePad;\n }\n\n return box;\n }\n\n updateClipFromPath() {\n const intersect = _util.Util.intersect(this.clipBox, this.getPathBoundingBox());\n\n this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n }\n\n isEmptyClip() {\n return this.minX === Infinity;\n }\n\n startNewPathAndClipBox(box) {\n this.clipBox = box;\n this.minX = Infinity;\n this.minY = Infinity;\n this.maxX = 0;\n this.maxY = 0;\n }\n\n getClippedPathBoundingBox(pathType = _pattern_helper.PathType.FILL, transform = null) {\n return _util.Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform));\n }\n\n}\n\nfunction putBinaryImageData(ctx, imgData, transferMaps = null) {\n if (typeof ImageData !== \"undefined\" && imgData instanceof ImageData) {\n ctx.putImageData(imgData, 0, 0);\n return;\n }\n\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0,\n destPos;\n const src = imgData.data;\n const dest = chunkImgData.data;\n let i, j, thisChunkHeight, elemsInThisChunk;\n let transferMapRed, transferMapGreen, transferMapBlue, transferMapGray;\n\n if (transferMaps) {\n switch (transferMaps.length) {\n case 1:\n transferMapRed = transferMaps[0];\n transferMapGreen = transferMaps[0];\n transferMapBlue = transferMaps[0];\n transferMapGray = transferMaps[0];\n break;\n\n case 4:\n transferMapRed = transferMaps[0];\n transferMapGreen = transferMaps[1];\n transferMapBlue = transferMaps[2];\n transferMapGray = transferMaps[3];\n break;\n }\n }\n\n if (imgData.kind === _util.ImageKind.GRAYSCALE_1BPP) {\n const srcLength = src.byteLength;\n const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n const dest32DataLength = dest32.length;\n const fullSrcDiff = width + 7 >> 3;\n let white = 0xffffffff;\n let black = _util.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n\n if (transferMapGray) {\n if (transferMapGray[0] === 0xff && transferMapGray[0xff] === 0) {\n [white, black] = [black, white];\n }\n }\n\n for (i = 0; i < totalChunks; i++) {\n thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n destPos = 0;\n\n for (j = 0; j < thisChunkHeight; j++) {\n const srcDiff = srcLength - srcPos;\n let k = 0;\n const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n const kEndUnrolled = kEnd & ~7;\n let mask = 0;\n let srcByte = 0;\n\n for (; k < kEndUnrolled; k += 8) {\n srcByte = src[srcPos++];\n dest32[destPos++] = srcByte & 128 ? white : black;\n dest32[destPos++] = srcByte & 64 ? white : black;\n dest32[destPos++] = srcByte & 32 ? white : black;\n dest32[destPos++] = srcByte & 16 ? white : black;\n dest32[destPos++] = srcByte & 8 ? white : black;\n dest32[destPos++] = srcByte & 4 ? white : black;\n dest32[destPos++] = srcByte & 2 ? white : black;\n dest32[destPos++] = srcByte & 1 ? white : black;\n }\n\n for (; k < kEnd; k++) {\n if (mask === 0) {\n srcByte = src[srcPos++];\n mask = 128;\n }\n\n dest32[destPos++] = srcByte & mask ? white : black;\n mask >>= 1;\n }\n }\n\n while (destPos < dest32DataLength) {\n dest32[destPos++] = 0;\n }\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (imgData.kind === _util.ImageKind.RGBA_32BPP) {\n const hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue);\n j = 0;\n elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n\n for (i = 0; i < fullChunks; i++) {\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n srcPos += elemsInThisChunk;\n\n if (hasTransferMaps) {\n for (let k = 0; k < elemsInThisChunk; k += 4) {\n if (transferMapRed) {\n dest[k + 0] = transferMapRed[dest[k + 0]];\n }\n\n if (transferMapGreen) {\n dest[k + 1] = transferMapGreen[dest[k + 1]];\n }\n\n if (transferMapBlue) {\n dest[k + 2] = transferMapBlue[dest[k + 2]];\n }\n }\n }\n\n ctx.putImageData(chunkImgData, 0, j);\n j += FULL_CHUNK_HEIGHT;\n }\n\n if (i < totalChunks) {\n elemsInThisChunk = width * partialChunkHeight * 4;\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n\n if (hasTransferMaps) {\n for (let k = 0; k < elemsInThisChunk; k += 4) {\n if (transferMapRed) {\n dest[k + 0] = transferMapRed[dest[k + 0]];\n }\n\n if (transferMapGreen) {\n dest[k + 1] = transferMapGreen[dest[k + 1]];\n }\n\n if (transferMapBlue) {\n dest[k + 2] = transferMapBlue[dest[k + 2]];\n }\n }\n }\n\n ctx.putImageData(chunkImgData, 0, j);\n }\n } else if (imgData.kind === _util.ImageKind.RGB_24BPP) {\n const hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue);\n thisChunkHeight = FULL_CHUNK_HEIGHT;\n elemsInThisChunk = width * thisChunkHeight;\n\n for (i = 0; i < totalChunks; i++) {\n if (i >= fullChunks) {\n thisChunkHeight = partialChunkHeight;\n elemsInThisChunk = width * thisChunkHeight;\n }\n\n destPos = 0;\n\n for (j = elemsInThisChunk; j--;) {\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = 255;\n }\n\n if (hasTransferMaps) {\n for (let k = 0; k < destPos; k += 4) {\n if (transferMapRed) {\n dest[k + 0] = transferMapRed[dest[k + 0]];\n }\n\n if (transferMapGreen) {\n dest[k + 1] = transferMapGreen[dest[k + 1]];\n }\n\n if (transferMapBlue) {\n dest[k + 2] = transferMapBlue[dest[k + 2]];\n }\n }\n }\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(`bad image kind: ${imgData.kind}`);\n }\n}\n\nfunction putBinaryImageMask(ctx, imgData) {\n if (imgData.bitmap) {\n ctx.drawImage(imgData.bitmap, 0, 0);\n return;\n }\n\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0;\n const src = imgData.data;\n const dest = chunkImgData.data;\n\n for (let i = 0; i < totalChunks; i++) {\n const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n ({\n srcPos\n } = (0, _image_utils.applyMaskImageData)({\n src,\n srcPos,\n dest,\n width,\n height: thisChunkHeight\n }));\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n}\n\nfunction copyCtxState(sourceCtx, destCtx) {\n const properties = [\"strokeStyle\", \"fillStyle\", \"fillRule\", \"globalAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"globalCompositeOperation\", \"font\"];\n\n for (let i = 0, ii = properties.length; i < ii; i++) {\n const property = properties[i];\n\n if (sourceCtx[property] !== undefined) {\n destCtx[property] = sourceCtx[property];\n }\n }\n\n if (sourceCtx.setLineDash !== undefined) {\n destCtx.setLineDash(sourceCtx.getLineDash());\n destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n }\n}\n\nfunction resetCtxToDefault(ctx, foregroundColor) {\n ctx.strokeStyle = ctx.fillStyle = foregroundColor || \"#000000\";\n ctx.fillRule = \"nonzero\";\n ctx.globalAlpha = 1;\n ctx.lineWidth = 1;\n ctx.lineCap = \"butt\";\n ctx.lineJoin = \"miter\";\n ctx.miterLimit = 10;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.font = \"10px sans-serif\";\n\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash([]);\n ctx.lineDashOffset = 0;\n }\n}\n\nfunction composeSMaskBackdrop(bytes, r0, g0, b0) {\n const length = bytes.length;\n\n for (let i = 3; i < length; i += 4) {\n const alpha = bytes[i];\n\n if (alpha === 0) {\n bytes[i - 3] = r0;\n bytes[i - 2] = g0;\n bytes[i - 1] = b0;\n } else if (alpha < 255) {\n const alpha_ = 255 - alpha;\n bytes[i - 3] = bytes[i - 3] * alpha + r0 * alpha_ >> 8;\n bytes[i - 2] = bytes[i - 2] * alpha + g0 * alpha_ >> 8;\n bytes[i - 1] = bytes[i - 1] * alpha + b0 * alpha_ >> 8;\n }\n }\n}\n\nfunction composeSMaskAlpha(maskData, layerData, transferMap) {\n const length = maskData.length;\n const scale = 1 / 255;\n\n for (let i = 3; i < length; i += 4) {\n const alpha = transferMap ? transferMap[maskData[i]] : maskData[i];\n layerData[i] = layerData[i] * alpha * scale | 0;\n }\n}\n\nfunction composeSMaskLuminosity(maskData, layerData, transferMap) {\n const length = maskData.length;\n\n for (let i = 3; i < length; i += 4) {\n const y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28;\n layerData[i] = transferMap ? layerData[i] * transferMap[y >> 8] >> 8 : layerData[i] * y >> 16;\n }\n}\n\nfunction genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap, layerOffsetX, layerOffsetY, maskOffsetX, maskOffsetY) {\n const hasBackdrop = !!backdrop;\n const r0 = hasBackdrop ? backdrop[0] : 0;\n const g0 = hasBackdrop ? backdrop[1] : 0;\n const b0 = hasBackdrop ? backdrop[2] : 0;\n let composeFn;\n\n if (subtype === \"Luminosity\") {\n composeFn = composeSMaskLuminosity;\n } else {\n composeFn = composeSMaskAlpha;\n }\n\n const PIXELS_TO_PROCESS = 1048576;\n const chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));\n\n for (let row = 0; row < height; row += chunkSize) {\n const chunkHeight = Math.min(chunkSize, height - row);\n const maskData = maskCtx.getImageData(layerOffsetX - maskOffsetX, row + (layerOffsetY - maskOffsetY), width, chunkHeight);\n const layerData = layerCtx.getImageData(layerOffsetX, row + layerOffsetY, width, chunkHeight);\n\n if (hasBackdrop) {\n composeSMaskBackdrop(maskData.data, r0, g0, b0);\n }\n\n composeFn(maskData.data, layerData.data, transferMap);\n layerCtx.putImageData(layerData, layerOffsetX, row + layerOffsetY);\n }\n}\n\nfunction composeSMask(ctx, smask, layerCtx, layerBox) {\n const layerOffsetX = layerBox[0];\n const layerOffsetY = layerBox[1];\n const layerWidth = layerBox[2] - layerOffsetX;\n const layerHeight = layerBox[3] - layerOffsetY;\n\n if (layerWidth === 0 || layerHeight === 0) {\n return;\n }\n\n genericComposeSMask(smask.context, layerCtx, layerWidth, layerHeight, smask.subtype, smask.backdrop, smask.transferMap, layerOffsetX, layerOffsetY, smask.offsetX, smask.offsetY);\n ctx.save();\n ctx.globalAlpha = 1;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(layerCtx.canvas, 0, 0);\n ctx.restore();\n}\n\nfunction getImageSmoothingEnabled(transform, interpolate) {\n const scale = _util.Util.singularValueDecompose2dScale(transform);\n\n scale[0] = Math.fround(scale[0]);\n scale[1] = Math.fround(scale[1]);\n const actualScale = Math.fround((globalThis.devicePixelRatio || 1) * _display_utils.PixelsPerInch.PDF_TO_CSS_UNITS);\n\n if (interpolate !== undefined) {\n return interpolate;\n } else if (scale[0] <= actualScale || scale[1] <= actualScale) {\n return true;\n }\n\n return false;\n}\n\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\n\nclass CanvasGraphics {\n constructor(canvasCtx, commonObjs, objs, canvasFactory, imageLayer, optionalContentConfig, annotationCanvasMap, pageColors) {\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.stateStack = [];\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.res = null;\n this.xobjs = null;\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.canvasFactory = canvasFactory;\n this.imageLayer = imageLayer;\n this.groupStack = [];\n this.processingType3 = null;\n this.baseTransform = null;\n this.baseTransformStack = [];\n this.groupLevel = 0;\n this.smaskStack = [];\n this.smaskCounter = 0;\n this.tempSMask = null;\n this.suspendedCtx = null;\n this.contentVisible = true;\n this.markedContentStack = [];\n this.optionalContentConfig = optionalContentConfig;\n this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n this.cachedPatterns = new Map();\n this.annotationCanvasMap = annotationCanvasMap;\n this.viewportScale = 1;\n this.outputScaleX = 1;\n this.outputScaleY = 1;\n this.backgroundColor = pageColors?.background || null;\n this.foregroundColor = pageColors?.foreground || null;\n\n if (canvasCtx) {\n addContextCurrentTransform(canvasCtx);\n }\n\n this._cachedScaleForStroking = null;\n this._cachedGetSinglePixelWidth = null;\n this._cachedBitmapsMap = new Map();\n }\n\n getObject(data, fallback = null) {\n if (typeof data === \"string\") {\n return data.startsWith(\"g_\") ? this.commonObjs.get(data) : this.objs.get(data);\n }\n\n return fallback;\n }\n\n beginDrawing({\n transform,\n viewport,\n transparency = false,\n background = null\n }) {\n const width = this.ctx.canvas.width;\n const height = this.ctx.canvas.height;\n const defaultBackgroundColor = background || \"#ffffff\";\n this.ctx.save();\n\n if (this.foregroundColor && this.backgroundColor) {\n this.ctx.fillStyle = this.foregroundColor;\n const fg = this.foregroundColor = this.ctx.fillStyle;\n this.ctx.fillStyle = this.backgroundColor;\n const bg = this.backgroundColor = this.ctx.fillStyle;\n let isValidDefaultBg = true;\n let defaultBg = defaultBackgroundColor;\n this.ctx.fillStyle = defaultBackgroundColor;\n defaultBg = this.ctx.fillStyle;\n isValidDefaultBg = typeof defaultBg === \"string\" && /^#[0-9A-Fa-f]{6}$/.test(defaultBg);\n\n if (fg === \"#000000\" && bg === \"#ffffff\" || fg === bg || !isValidDefaultBg) {\n this.foregroundColor = this.backgroundColor = null;\n } else {\n const [rB, gB, bB] = (0, _display_utils.getRGB)(defaultBg);\n\n const newComp = x => {\n x /= 255;\n return x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n };\n\n const lumB = Math.round(0.2126 * newComp(rB) + 0.7152 * newComp(gB) + 0.0722 * newComp(bB));\n\n this.selectColor = (r, g, b) => {\n const lumC = 0.2126 * newComp(r) + 0.7152 * newComp(g) + 0.0722 * newComp(b);\n return Math.round(lumC) === lumB ? bg : fg;\n };\n }\n }\n\n this.ctx.fillStyle = this.backgroundColor || defaultBackgroundColor;\n this.ctx.fillRect(0, 0, width, height);\n this.ctx.restore();\n\n if (transparency) {\n const transparentCanvas = this.cachedCanvases.getCanvas(\"transparent\", width, height, true);\n this.compositeCtx = this.ctx;\n this.transparentCanvas = transparentCanvas.canvas;\n this.ctx = transparentCanvas.context;\n this.ctx.save();\n this.ctx.transform.apply(this.ctx, this.compositeCtx.mozCurrentTransform);\n }\n\n this.ctx.save();\n resetCtxToDefault(this.ctx, this.foregroundColor);\n\n if (transform) {\n this.ctx.transform.apply(this.ctx, transform);\n this.outputScaleX = transform[0];\n this.outputScaleY = transform[0];\n }\n\n this.ctx.transform.apply(this.ctx, viewport.transform);\n this.viewportScale = viewport.scale;\n this.baseTransform = this.ctx.mozCurrentTransform.slice();\n\n if (this.imageLayer) {\n this.imageLayer.beginLayout();\n }\n }\n\n executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) {\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n let i = executionStartIdx || 0;\n const argsArrayLen = argsArray.length;\n\n if (argsArrayLen === i) {\n return i;\n }\n\n const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === \"function\";\n const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n let steps = 0;\n const commonObjs = this.commonObjs;\n const objs = this.objs;\n let fnId;\n\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n\n fnId = fnArray[i];\n\n if (fnId !== _util.OPS.dependency) {\n this[fnId].apply(this, argsArray[i]);\n } else {\n for (const depObjId of argsArray[i]) {\n const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n\n if (!objsPool.has(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n }\n\n i++;\n\n if (i === argsArrayLen) {\n return i;\n }\n\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n\n steps = 0;\n }\n }\n }\n\n __restoreInitialState() {\n while (this.stateStack.length || this.inSMaskMode) {\n this.restore();\n }\n\n this.ctx.restore();\n\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n }\n\n endDrawing() {\n this.__restoreInitialState();\n this.cachedCanvases.clear();\n this.cachedPatterns.clear();\n\n for (const cache of this._cachedBitmapsMap.values()) {\n for (const canvas of cache.values()) {\n if (typeof HTMLCanvasElement !== \"undefined\" && canvas instanceof HTMLCanvasElement) {\n canvas.width = canvas.height = 0;\n }\n }\n\n cache.clear();\n }\n\n this._cachedBitmapsMap.clear();\n\n if (this.imageLayer) {\n this.imageLayer.endLayout();\n }\n }\n\n _scaleImage(img, inverseTransform) {\n const width = img.width;\n const height = img.height;\n let widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1);\n let heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1);\n let paintWidth = width,\n paintHeight = height;\n let tmpCanvasId = \"prescale1\";\n let tmpCanvas, tmpCtx;\n\n while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {\n let newWidth = paintWidth,\n newHeight = paintHeight;\n\n if (widthScale > 2 && paintWidth > 1) {\n newWidth = Math.ceil(paintWidth / 2);\n widthScale /= paintWidth / newWidth;\n }\n\n if (heightScale > 2 && paintHeight > 1) {\n newHeight = Math.ceil(paintHeight / 2);\n heightScale /= paintHeight / newHeight;\n }\n\n tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight, false);\n tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, newWidth, newHeight);\n tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);\n img = tmpCanvas.canvas;\n paintWidth = newWidth;\n paintHeight = newHeight;\n tmpCanvasId = tmpCanvasId === \"prescale1\" ? \"prescale2\" : \"prescale1\";\n }\n\n return {\n img,\n paintWidth,\n paintHeight\n };\n }\n\n _createMaskCanvas(img) {\n const ctx = this.ctx;\n const {\n width,\n height\n } = img;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n const currentTransform = ctx.mozCurrentTransform;\n let cache, cacheKey, scaled, maskCanvas;\n\n if ((img.bitmap || img.data) && img.count > 1) {\n const mainKey = img.bitmap || img.data.buffer;\n const withoutTranslation = currentTransform.slice(0, 4);\n cacheKey = JSON.stringify(isPatternFill ? withoutTranslation : [withoutTranslation, fillColor]);\n cache = this._cachedBitmapsMap.get(mainKey);\n\n if (!cache) {\n cache = new Map();\n\n this._cachedBitmapsMap.set(mainKey, cache);\n }\n\n const cachedImage = cache.get(cacheKey);\n\n if (cachedImage && !isPatternFill) {\n const offsetX = Math.round(Math.min(currentTransform[0], currentTransform[2]) + currentTransform[4]);\n const offsetY = Math.round(Math.min(currentTransform[1], currentTransform[3]) + currentTransform[5]);\n return {\n canvas: cachedImage,\n offsetX,\n offsetY\n };\n }\n\n scaled = cachedImage;\n }\n\n if (!scaled) {\n maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height, false);\n putBinaryImageMask(maskCanvas.context, img);\n }\n\n let maskToCanvas = _util.Util.transform(currentTransform, [1 / width, 0, 0, -1 / height, 0, 0]);\n\n maskToCanvas = _util.Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n\n const cord1 = _util.Util.applyTransform([0, 0], maskToCanvas);\n\n const cord2 = _util.Util.applyTransform([width, height], maskToCanvas);\n\n const rect = _util.Util.normalizeRect([cord1[0], cord1[1], cord2[0], cord2[1]]);\n\n const drawnWidth = Math.round(rect[2] - rect[0]) || 1;\n const drawnHeight = Math.round(rect[3] - rect[1]) || 1;\n const fillCanvas = this.cachedCanvases.getCanvas(\"fillCanvas\", drawnWidth, drawnHeight, true);\n const fillCtx = fillCanvas.context;\n const offsetX = Math.min(cord1[0], cord2[0]);\n const offsetY = Math.min(cord1[1], cord2[1]);\n fillCtx.translate(-offsetX, -offsetY);\n fillCtx.transform.apply(fillCtx, maskToCanvas);\n\n if (!scaled) {\n scaled = this._scaleImage(maskCanvas.canvas, fillCtx.mozCurrentTransformInverse);\n scaled = scaled.img;\n\n if (cache && isPatternFill) {\n cache.set(cacheKey, scaled);\n }\n }\n\n fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(fillCtx.mozCurrentTransform, img.interpolate);\n drawImageAtIntegerCoords(fillCtx, scaled, 0, 0, scaled.width, scaled.height, 0, 0, width, height);\n fillCtx.globalCompositeOperation = \"source-in\";\n\n const inverse = _util.Util.transform(fillCtx.mozCurrentTransformInverse, [1, 0, 0, 1, -offsetX, -offsetY]);\n\n fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, _pattern_helper.PathType.FILL) : fillColor;\n fillCtx.fillRect(0, 0, width, height);\n\n if (cache && !isPatternFill) {\n this.cachedCanvases.delete(\"fillCanvas\");\n cache.set(cacheKey, fillCanvas.canvas);\n }\n\n return {\n canvas: fillCanvas.canvas,\n offsetX: Math.round(offsetX),\n offsetY: Math.round(offsetY)\n };\n }\n\n setLineWidth(width) {\n if (width !== this.current.lineWidth) {\n this._cachedScaleForStroking = null;\n }\n\n this.current.lineWidth = width;\n this.ctx.lineWidth = width;\n }\n\n setLineCap(style) {\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n }\n\n setLineJoin(style) {\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n }\n\n setMiterLimit(limit) {\n this.ctx.miterLimit = limit;\n }\n\n setDash(dashArray, dashPhase) {\n const ctx = this.ctx;\n\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n }\n\n setRenderingIntent(intent) {}\n\n setFlatness(flatness) {}\n\n setGState(states) {\n for (let i = 0, ii = states.length; i < ii; i++) {\n const state = states[i];\n const key = state[0];\n const value = state[1];\n\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n\n case \"LC\":\n this.setLineCap(value);\n break;\n\n case \"LJ\":\n this.setLineJoin(value);\n break;\n\n case \"ML\":\n this.setMiterLimit(value);\n break;\n\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n\n case \"FL\":\n this.setFlatness(value);\n break;\n\n case \"Font\":\n this.setFont(value[0], value[1]);\n break;\n\n case \"CA\":\n this.current.strokeAlpha = state[1];\n break;\n\n case \"ca\":\n this.current.fillAlpha = state[1];\n this.ctx.globalAlpha = state[1];\n break;\n\n case \"BM\":\n this.ctx.globalCompositeOperation = value;\n break;\n\n case \"SMask\":\n this.current.activeSMask = value ? this.tempSMask : null;\n this.tempSMask = null;\n this.checkSMaskState();\n break;\n\n case \"TR\":\n this.current.transferMaps = value;\n }\n }\n }\n\n get inSMaskMode() {\n return !!this.suspendedCtx;\n }\n\n checkSMaskState() {\n const inSMaskMode = this.inSMaskMode;\n\n if (this.current.activeSMask && !inSMaskMode) {\n this.beginSMaskMode();\n } else if (!this.current.activeSMask && inSMaskMode) {\n this.endSMaskMode();\n }\n }\n\n beginSMaskMode() {\n if (this.inSMaskMode) {\n throw new Error(\"beginSMaskMode called while already in smask mode\");\n }\n\n const drawnWidth = this.ctx.canvas.width;\n const drawnHeight = this.ctx.canvas.height;\n const cacheId = \"smaskGroupAt\" + this.groupLevel;\n const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);\n this.suspendedCtx = this.ctx;\n this.ctx = scratchCanvas.context;\n const ctx = this.ctx;\n ctx.setTransform.apply(ctx, this.suspendedCtx.mozCurrentTransform);\n copyCtxState(this.suspendedCtx, ctx);\n mirrorContextOperations(ctx, this.suspendedCtx);\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n }\n\n endSMaskMode() {\n if (!this.inSMaskMode) {\n throw new Error(\"endSMaskMode called while not in smask mode\");\n }\n\n this.ctx._removeMirroring();\n\n copyCtxState(this.ctx, this.suspendedCtx);\n this.ctx = this.suspendedCtx;\n this.suspendedCtx = null;\n }\n\n compose(dirtyBox) {\n if (!this.current.activeSMask) {\n return;\n }\n\n if (!dirtyBox) {\n dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\n } else {\n dirtyBox[0] = Math.floor(dirtyBox[0]);\n dirtyBox[1] = Math.floor(dirtyBox[1]);\n dirtyBox[2] = Math.ceil(dirtyBox[2]);\n dirtyBox[3] = Math.ceil(dirtyBox[3]);\n }\n\n const smask = this.current.activeSMask;\n const suspendedCtx = this.suspendedCtx;\n composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n this.ctx.restore();\n }\n\n save() {\n if (this.inSMaskMode) {\n copyCtxState(this.ctx, this.suspendedCtx);\n this.suspendedCtx.save();\n } else {\n this.ctx.save();\n }\n\n const old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n }\n\n restore() {\n if (this.stateStack.length === 0 && this.inSMaskMode) {\n this.endSMaskMode();\n }\n\n if (this.stateStack.length !== 0) {\n this.current = this.stateStack.pop();\n\n if (this.inSMaskMode) {\n this.suspendedCtx.restore();\n copyCtxState(this.suspendedCtx, this.ctx);\n } else {\n this.ctx.restore();\n }\n\n this.checkSMaskState();\n this.pendingClip = null;\n this._cachedScaleForStroking = null;\n this._cachedGetSinglePixelWidth = null;\n }\n }\n\n transform(a, b, c, d, e, f) {\n this.ctx.transform(a, b, c, d, e, f);\n this._cachedScaleForStroking = null;\n this._cachedGetSinglePixelWidth = null;\n }\n\n constructPath(ops, args, minMax) {\n const ctx = this.ctx;\n const current = this.current;\n let x = current.x,\n y = current.y;\n let startX, startY;\n const currentTransform = ctx.mozCurrentTransform;\n const isScalingMatrix = currentTransform[0] === 0 && currentTransform[3] === 0 || currentTransform[1] === 0 && currentTransform[2] === 0;\n const minMaxForBezier = isScalingMatrix ? minMax.slice(0) : null;\n\n for (let i = 0, j = 0, ii = ops.length; i < ii; i++) {\n switch (ops[i] | 0) {\n case _util.OPS.rectangle:\n x = args[j++];\n y = args[j++];\n const width = args[j++];\n const height = args[j++];\n const xw = x + width;\n const yh = y + height;\n ctx.moveTo(x, y);\n\n if (width === 0 || height === 0) {\n ctx.lineTo(xw, yh);\n } else {\n ctx.lineTo(xw, y);\n ctx.lineTo(xw, yh);\n ctx.lineTo(x, yh);\n }\n\n if (!isScalingMatrix) {\n current.updateRectMinMax(currentTransform, [x, y, xw, yh]);\n }\n\n ctx.closePath();\n break;\n\n case _util.OPS.moveTo:\n x = args[j++];\n y = args[j++];\n ctx.moveTo(x, y);\n\n if (!isScalingMatrix) {\n current.updatePathMinMax(currentTransform, x, y);\n }\n\n break;\n\n case _util.OPS.lineTo:\n x = args[j++];\n y = args[j++];\n ctx.lineTo(x, y);\n\n if (!isScalingMatrix) {\n current.updatePathMinMax(currentTransform, x, y);\n }\n\n break;\n\n case _util.OPS.curveTo:\n startX = x;\n startY = y;\n x = args[j + 4];\n y = args[j + 5];\n ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y);\n current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], args[j + 2], args[j + 3], x, y, minMaxForBezier);\n j += 6;\n break;\n\n case _util.OPS.curveTo2:\n startX = x;\n startY = y;\n ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);\n current.updateCurvePathMinMax(currentTransform, startX, startY, x, y, args[j], args[j + 1], args[j + 2], args[j + 3], minMaxForBezier);\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n\n case _util.OPS.curveTo3:\n startX = x;\n startY = y;\n x = args[j + 2];\n y = args[j + 3];\n ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], x, y, x, y, minMaxForBezier);\n j += 4;\n break;\n\n case _util.OPS.closePath:\n ctx.closePath();\n break;\n }\n }\n\n if (isScalingMatrix) {\n current.updateScalingPathMinMax(currentTransform, minMaxForBezier);\n }\n\n current.setCurrentPoint(x, y);\n }\n\n closePath() {\n this.ctx.closePath();\n }\n\n stroke(consumePath) {\n consumePath = typeof consumePath !== \"undefined\" ? consumePath : true;\n const ctx = this.ctx;\n const strokeColor = this.current.strokeColor;\n ctx.globalAlpha = this.current.strokeAlpha;\n\n if (this.contentVisible) {\n if (typeof strokeColor === \"object\" && strokeColor?.getPattern) {\n ctx.save();\n ctx.strokeStyle = strokeColor.getPattern(ctx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.STROKE);\n this.rescaleAndStroke(false);\n ctx.restore();\n } else {\n this.rescaleAndStroke(true);\n }\n }\n\n if (consumePath) {\n this.consumePath(this.current.getClippedPathBoundingBox());\n }\n\n ctx.globalAlpha = this.current.fillAlpha;\n }\n\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n\n fill(consumePath) {\n consumePath = typeof consumePath !== \"undefined\" ? consumePath : true;\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n let needRestore = false;\n\n if (isPatternFill) {\n ctx.save();\n ctx.fillStyle = fillColor.getPattern(ctx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.FILL);\n needRestore = true;\n }\n\n const intersect = this.current.getClippedPathBoundingBox();\n\n if (this.contentVisible && intersect !== null) {\n if (this.pendingEOFill) {\n ctx.fill(\"evenodd\");\n this.pendingEOFill = false;\n } else {\n ctx.fill();\n }\n }\n\n if (needRestore) {\n ctx.restore();\n }\n\n if (consumePath) {\n this.consumePath(intersect);\n }\n }\n\n eoFill() {\n this.pendingEOFill = true;\n this.fill();\n }\n\n fillStroke() {\n this.fill(false);\n this.stroke(false);\n this.consumePath();\n }\n\n eoFillStroke() {\n this.pendingEOFill = true;\n this.fillStroke();\n }\n\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n\n closeEOFillStroke() {\n this.pendingEOFill = true;\n this.closePath();\n this.fillStroke();\n }\n\n endPath() {\n this.consumePath();\n }\n\n clip() {\n this.pendingClip = NORMAL_CLIP;\n }\n\n eoClip() {\n this.pendingClip = EO_CLIP;\n }\n\n beginText() {\n this.current.textMatrix = _util.IDENTITY_MATRIX;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n\n endText() {\n const paths = this.pendingTextPaths;\n const ctx = this.ctx;\n\n if (paths === undefined) {\n ctx.beginPath();\n return;\n }\n\n ctx.save();\n ctx.beginPath();\n\n for (const path of paths) {\n ctx.setTransform.apply(ctx, path.transform);\n ctx.translate(path.x, path.y);\n path.addToPath(ctx, path.fontSize);\n }\n\n ctx.restore();\n ctx.clip();\n ctx.beginPath();\n delete this.pendingTextPaths;\n }\n\n setCharSpacing(spacing) {\n this.current.charSpacing = spacing;\n }\n\n setWordSpacing(spacing) {\n this.current.wordSpacing = spacing;\n }\n\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n\n setLeading(leading) {\n this.current.leading = -leading;\n }\n\n setFont(fontRefName, size) {\n const fontObj = this.commonObjs.get(fontRefName);\n const current = this.current;\n\n if (!fontObj) {\n throw new Error(`Can't find font for ${fontRefName}`);\n }\n\n current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX;\n\n if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n (0, _util.warn)(\"Invalid font matrix for font \" + fontRefName);\n }\n\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n\n this.current.font = fontObj;\n this.current.fontSize = size;\n\n if (fontObj.isType3Font) {\n return;\n }\n\n const name = fontObj.loadedName || \"sans-serif\";\n let bold = \"normal\";\n\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n const typeface = `\"${name}\", ${fontObj.fallbackName}`;\n let browserFontSize = size;\n\n if (size < MIN_FONT_SIZE) {\n browserFontSize = MIN_FONT_SIZE;\n } else if (size > MAX_FONT_SIZE) {\n browserFontSize = MAX_FONT_SIZE;\n }\n\n this.current.fontSizeScale = size / browserFontSize;\n this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n }\n\n setTextRenderingMode(mode) {\n this.current.textRenderingMode = mode;\n }\n\n setTextRise(rise) {\n this.current.textRise = rise;\n }\n\n moveText(x, y) {\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n }\n\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n\n setTextMatrix(a, b, c, d, e, f) {\n this.current.textMatrix = [a, b, c, d, e, f];\n this.current.textMatrixScale = Math.hypot(a, b);\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n\n paintChar(character, x, y, patternTransform) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const textRenderingMode = current.textRenderingMode;\n const fontSize = current.fontSize / current.fontSizeScale;\n const fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;\n const isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG);\n const patternFill = current.patternFill && !font.missingFile;\n let addToPath;\n\n if (font.disableFontFace || isAddToPathSet || patternFill) {\n addToPath = font.getPathGenerator(this.commonObjs, character);\n }\n\n if (font.disableFontFace || patternFill) {\n ctx.save();\n ctx.translate(x, y);\n ctx.beginPath();\n addToPath(ctx, fontSize);\n\n if (patternTransform) {\n ctx.setTransform.apply(ctx, patternTransform);\n }\n\n if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n ctx.fill();\n }\n\n if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n ctx.stroke();\n }\n\n ctx.restore();\n } else {\n if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n ctx.fillText(character, x, y);\n }\n\n if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n ctx.strokeText(character, x, y);\n }\n }\n\n if (isAddToPathSet) {\n const paths = this.pendingTextPaths || (this.pendingTextPaths = []);\n paths.push({\n transform: ctx.mozCurrentTransform,\n x,\n y,\n fontSize,\n addToPath\n });\n }\n }\n\n get isFontSubpixelAAEnabled() {\n const {\n context: ctx\n } = this.cachedCanvases.getCanvas(\"isFontSubpixelAAEnabled\", 10, 10, false);\n ctx.scale(1.5, 1);\n ctx.fillText(\"I\", 0, 10);\n const data = ctx.getImageData(0, 0, 10, 10).data;\n let enabled = false;\n\n for (let i = 3; i < data.length; i += 4) {\n if (data[i] > 0 && data[i] < 255) {\n enabled = true;\n break;\n }\n }\n\n return (0, _util.shadow)(this, \"isFontSubpixelAAEnabled\", enabled);\n }\n\n showText(glyphs) {\n const current = this.current;\n const font = current.font;\n\n if (font.isType3Font) {\n return this.showType3Text(glyphs);\n }\n\n const fontSize = current.fontSize;\n\n if (fontSize === 0) {\n return undefined;\n }\n\n const ctx = this.ctx;\n const fontSizeScale = current.fontSizeScale;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const glyphsLength = glyphs.length;\n const vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n const simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;\n ctx.save();\n ctx.transform.apply(ctx, current.textMatrix);\n ctx.translate(current.x, current.y + current.textRise);\n\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n\n let patternTransform;\n\n if (current.patternFill) {\n ctx.save();\n const pattern = current.fillColor.getPattern(ctx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.FILL);\n patternTransform = ctx.mozCurrentTransform;\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n\n let lineWidth = current.lineWidth;\n const scale = current.textMatrixScale;\n\n if (scale === 0 || lineWidth === 0) {\n const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;\n\n if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n lineWidth = this.getSinglePixelWidth();\n }\n } else {\n lineWidth /= scale;\n }\n\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n\n ctx.lineWidth = lineWidth;\n let x = 0,\n i;\n\n for (i = 0; i < glyphsLength; ++i) {\n const glyph = glyphs[i];\n\n if (typeof glyph === \"number\") {\n x += spacingDir * glyph * fontSize / 1000;\n continue;\n }\n\n let restoreNeeded = false;\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n const accent = glyph.accent;\n let scaledX, scaledY;\n let width = glyph.width;\n\n if (vertical) {\n const vmetric = glyph.vmetric || defaultVMetrics;\n const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n\n if (font.remeasure && width > 0) {\n const measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale;\n\n if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n const characterScaleX = width / measuredWidth;\n restoreNeeded = true;\n ctx.save();\n ctx.scale(characterScaleX, 1);\n scaledX /= characterScaleX;\n } else if (width !== measuredWidth) {\n scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;\n }\n }\n\n if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n if (simpleFillText && !accent) {\n ctx.fillText(character, scaledX, scaledY);\n } else {\n this.paintChar(character, scaledX, scaledY, patternTransform);\n\n if (accent) {\n const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale;\n const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale;\n this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform);\n }\n }\n }\n\n let charWidth;\n\n if (vertical) {\n charWidth = width * widthAdvanceScale - spacing * fontDirection;\n } else {\n charWidth = width * widthAdvanceScale + spacing * fontDirection;\n }\n\n x += charWidth;\n\n if (restoreNeeded) {\n ctx.restore();\n }\n }\n\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n\n ctx.restore();\n this.compose();\n return undefined;\n }\n\n showType3Text(glyphs) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n const fontDirection = current.fontDirection;\n const spacingDir = font.vertical ? 1 : -1;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const textHScale = current.textHScale * fontDirection;\n const fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX;\n const glyphsLength = glyphs.length;\n const isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE;\n let i, glyph, width, spacingLength;\n\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n\n this._cachedScaleForStroking = null;\n this._cachedGetSinglePixelWidth = null;\n ctx.save();\n ctx.transform.apply(ctx, current.textMatrix);\n ctx.translate(current.x, current.y);\n ctx.scale(textHScale, fontDirection);\n\n for (i = 0; i < glyphsLength; ++i) {\n glyph = glyphs[i];\n\n if (typeof glyph === \"number\") {\n spacingLength = spacingDir * glyph * fontSize / 1000;\n this.ctx.translate(spacingLength, 0);\n current.x += spacingLength * textHScale;\n continue;\n }\n\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const operatorList = font.charProcOperatorList[glyph.operatorListId];\n\n if (!operatorList) {\n (0, _util.warn)(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n continue;\n }\n\n if (this.contentVisible) {\n this.processingType3 = glyph;\n this.save();\n ctx.scale(fontSize, fontSize);\n ctx.transform.apply(ctx, fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n }\n\n const transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix);\n\n width = transformed[0] * fontSize + spacing;\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n\n ctx.restore();\n this.processingType3 = null;\n }\n\n setCharWidth(xWidth, yWidth) {}\n\n setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {\n this.ctx.rect(llx, lly, urx - llx, ury - lly);\n this.ctx.clip();\n this.endPath();\n }\n\n getColorN_Pattern(IR) {\n let pattern;\n\n if (IR[0] === \"TilingPattern\") {\n const color = IR[1];\n const baseTransform = this.baseTransform || this.ctx.mozCurrentTransform.slice();\n const canvasGraphicsFactory = {\n createCanvasGraphics: ctx => {\n return new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory);\n }\n };\n pattern = new _pattern_helper.TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform);\n } else {\n pattern = this._getPattern(IR[1], IR[2]);\n }\n\n return pattern;\n }\n\n setStrokeColorN() {\n this.current.strokeColor = this.getColorN_Pattern(arguments);\n }\n\n setFillColorN() {\n this.current.fillColor = this.getColorN_Pattern(arguments);\n this.current.patternFill = true;\n }\n\n setStrokeRGBColor(r, g, b) {\n const color = this.selectColor?.(r, g, b) || _util.Util.makeHexColor(r, g, b);\n\n this.ctx.strokeStyle = color;\n this.current.strokeColor = color;\n }\n\n setFillRGBColor(r, g, b) {\n const color = this.selectColor?.(r, g, b) || _util.Util.makeHexColor(r, g, b);\n\n this.ctx.fillStyle = color;\n this.current.fillColor = color;\n this.current.patternFill = false;\n }\n\n _getPattern(objId, matrix = null) {\n let pattern;\n\n if (this.cachedPatterns.has(objId)) {\n pattern = this.cachedPatterns.get(objId);\n } else {\n pattern = (0, _pattern_helper.getShadingPattern)(this.objs.get(objId));\n this.cachedPatterns.set(objId, pattern);\n }\n\n if (matrix) {\n pattern.matrix = matrix;\n }\n\n return pattern;\n }\n\n shadingFill(objId) {\n if (!this.contentVisible) {\n return;\n }\n\n const ctx = this.ctx;\n this.save();\n\n const pattern = this._getPattern(objId);\n\n ctx.fillStyle = pattern.getPattern(ctx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.SHADING);\n const inv = ctx.mozCurrentTransformInverse;\n\n if (inv) {\n const canvas = ctx.canvas;\n const width = canvas.width;\n const height = canvas.height;\n\n const bl = _util.Util.applyTransform([0, 0], inv);\n\n const br = _util.Util.applyTransform([0, height], inv);\n\n const ul = _util.Util.applyTransform([width, 0], inv);\n\n const ur = _util.Util.applyTransform([width, height], inv);\n\n const x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n const y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n const x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n const y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n\n this.compose(this.current.getClippedPathBoundingBox());\n this.restore();\n }\n\n beginInlineImage() {\n (0, _util.unreachable)(\"Should not call beginInlineImage\");\n }\n\n beginImageData() {\n (0, _util.unreachable)(\"Should not call beginImageData\");\n }\n\n paintFormXObjectBegin(matrix, bbox) {\n if (!this.contentVisible) {\n return;\n }\n\n this.save();\n this.baseTransformStack.push(this.baseTransform);\n\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform.apply(this, matrix);\n }\n\n this.baseTransform = this.ctx.mozCurrentTransform;\n\n if (bbox) {\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n this.ctx.rect(bbox[0], bbox[1], width, height);\n this.current.updateRectMinMax(this.ctx.mozCurrentTransform, bbox);\n this.clip();\n this.endPath();\n }\n }\n\n paintFormXObjectEnd() {\n if (!this.contentVisible) {\n return;\n }\n\n this.restore();\n this.baseTransform = this.baseTransformStack.pop();\n }\n\n beginGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n\n this.save();\n\n if (this.inSMaskMode) {\n this.endSMaskMode();\n this.current.activeSMask = null;\n }\n\n const currentCtx = this.ctx;\n\n if (!group.isolated) {\n (0, _util.info)(\"TODO: Support non-isolated groups.\");\n }\n\n if (group.knockout) {\n (0, _util.warn)(\"Knockout groups not supported.\");\n }\n\n const currentTransform = currentCtx.mozCurrentTransform;\n\n if (group.matrix) {\n currentCtx.transform.apply(currentCtx, group.matrix);\n }\n\n if (!group.bbox) {\n throw new Error(\"Bounding box is required.\");\n }\n\n let bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform);\n\n const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];\n bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n const offsetX = Math.floor(bounds[0]);\n const offsetY = Math.floor(bounds[1]);\n let drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n let drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n let scaleX = 1,\n scaleY = 1;\n\n if (drawnWidth > MAX_GROUP_SIZE) {\n scaleX = drawnWidth / MAX_GROUP_SIZE;\n drawnWidth = MAX_GROUP_SIZE;\n }\n\n if (drawnHeight > MAX_GROUP_SIZE) {\n scaleY = drawnHeight / MAX_GROUP_SIZE;\n drawnHeight = MAX_GROUP_SIZE;\n }\n\n this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n let cacheId = \"groupAt\" + this.groupLevel;\n\n if (group.smask) {\n cacheId += \"_smask_\" + this.smaskCounter++ % 2;\n }\n\n const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);\n const groupCtx = scratchCanvas.context;\n groupCtx.scale(1 / scaleX, 1 / scaleY);\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform.apply(groupCtx, currentTransform);\n\n if (group.smask) {\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX,\n offsetY,\n scaleX,\n scaleY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null,\n startTransformInverse: null\n });\n } else {\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.scale(scaleX, scaleY);\n currentCtx.save();\n }\n\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n }\n\n endGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n\n this.groupLevel--;\n const groupCtx = this.ctx;\n const ctx = this.groupStack.pop();\n this.ctx = ctx;\n this.ctx.imageSmoothingEnabled = false;\n\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n this.restore();\n } else {\n this.ctx.restore();\n const currentMtx = this.ctx.mozCurrentTransform;\n this.restore();\n this.ctx.save();\n this.ctx.setTransform.apply(this.ctx, currentMtx);\n\n const dirtyBox = _util.Util.getAxialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx);\n\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n this.ctx.restore();\n this.compose(dirtyBox);\n }\n }\n\n beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) {\n this.__restoreInitialState();\n resetCtxToDefault(this.ctx, this.foregroundColor);\n this.ctx.save();\n this.save();\n\n if (this.baseTransform) {\n this.ctx.setTransform.apply(this.ctx, this.baseTransform);\n }\n\n if (Array.isArray(rect) && rect.length === 4) {\n const width = rect[2] - rect[0];\n const height = rect[3] - rect[1];\n\n if (hasOwnCanvas && this.annotationCanvasMap) {\n transform = transform.slice();\n transform[4] -= rect[0];\n transform[5] -= rect[1];\n rect = rect.slice();\n rect[0] = rect[1] = 0;\n rect[2] = width;\n rect[3] = height;\n\n const [scaleX, scaleY] = _util.Util.singularValueDecompose2dScale(this.ctx.mozCurrentTransform);\n\n const {\n viewportScale\n } = this;\n const canvasWidth = Math.ceil(width * this.outputScaleX * viewportScale);\n const canvasHeight = Math.ceil(height * this.outputScaleY * viewportScale);\n this.annotationCanvas = this.canvasFactory.create(canvasWidth, canvasHeight);\n const {\n canvas,\n context\n } = this.annotationCanvas;\n this.annotationCanvasMap.set(id, canvas);\n this.annotationCanvas.savedCtx = this.ctx;\n this.ctx = context;\n addContextCurrentTransform(this.ctx);\n this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY);\n resetCtxToDefault(this.ctx, this.foregroundColor);\n } else {\n resetCtxToDefault(this.ctx, this.foregroundColor);\n this.ctx.rect(rect[0], rect[1], width, height);\n this.ctx.clip();\n this.endPath();\n }\n }\n\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.transform.apply(this, transform);\n this.transform.apply(this, matrix);\n }\n\n endAnnotation() {\n if (this.annotationCanvas) {\n this.ctx = this.annotationCanvas.savedCtx;\n delete this.annotationCanvas.savedCtx;\n delete this.annotationCanvas;\n }\n }\n\n paintImageMaskXObject(img) {\n if (!this.contentVisible) {\n return;\n }\n\n const count = img.count;\n img = this.getObject(img.data, img);\n img.count = count;\n const ctx = this.ctx;\n const glyph = this.processingType3;\n\n if (glyph) {\n if (glyph.compiled === undefined) {\n glyph.compiled = compileType3Glyph(img);\n }\n\n if (glyph.compiled) {\n glyph.compiled(ctx);\n return;\n }\n }\n\n const mask = this._createMaskCanvas(img);\n\n const maskCanvas = mask.canvas;\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\n ctx.restore();\n this.compose();\n }\n\n paintImageMaskXObjectRepeat(img, scaleX, skewX = 0, skewY = 0, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n\n img = this.getObject(img.data, img);\n const ctx = this.ctx;\n ctx.save();\n const currentTransform = ctx.mozCurrentTransform;\n ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);\n\n const mask = this._createMaskCanvas(img);\n\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n const trans = _util.Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]]);\n\n const [x, y] = _util.Util.applyTransform([0, 0], trans);\n\n ctx.drawImage(mask.canvas, x, y);\n }\n\n ctx.restore();\n this.compose();\n }\n\n paintImageMaskXObjectGroup(images) {\n if (!this.contentVisible) {\n return;\n }\n\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n\n for (const image of images) {\n const {\n data,\n width,\n height,\n transform\n } = image;\n const maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height, false);\n const maskCtx = maskCanvas.context;\n maskCtx.save();\n const img = this.getObject(data, image);\n putBinaryImageMask(maskCtx, img);\n maskCtx.globalCompositeOperation = \"source-in\";\n maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.FILL) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n maskCtx.restore();\n ctx.save();\n ctx.transform.apply(ctx, transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n ctx.restore();\n }\n\n this.compose();\n }\n\n paintImageXObject(objId) {\n if (!this.contentVisible) {\n return;\n }\n\n const imgData = this.getObject(objId);\n\n if (!imgData) {\n (0, _util.warn)(\"Dependent image isn't ready yet\");\n return;\n }\n\n this.paintInlineImageXObject(imgData);\n }\n\n paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n\n const imgData = this.getObject(objId);\n\n if (!imgData) {\n (0, _util.warn)(\"Dependent image isn't ready yet\");\n return;\n }\n\n const width = imgData.width;\n const height = imgData.height;\n const map = [];\n\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n map.push({\n transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n x: 0,\n y: 0,\n w: width,\n h: height\n });\n }\n\n this.paintInlineImageXObjectGroup(imgData, map);\n }\n\n paintInlineImageXObject(imgData) {\n if (!this.contentVisible) {\n return;\n }\n\n const width = imgData.width;\n const height = imgData.height;\n const ctx = this.ctx;\n this.save();\n ctx.scale(1 / width, -1 / height);\n let imgToPaint;\n\n if (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement || !imgData.data) {\n imgToPaint = imgData;\n } else {\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height, false);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData, this.current.transferMaps);\n imgToPaint = tmpCanvas.canvas;\n }\n\n const scaled = this._scaleImage(imgToPaint, ctx.mozCurrentTransformInverse);\n\n ctx.imageSmoothingEnabled = getImageSmoothingEnabled(ctx.mozCurrentTransform, imgData.interpolate);\n const [rWidth, rHeight] = drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height);\n\n if (this.imageLayer) {\n const position = this.getCanvasPosition(0, -height);\n this.imageLayer.appendImage({\n imgData,\n left: position[0],\n top: position[1],\n width: rWidth,\n height: rHeight\n });\n }\n\n this.compose();\n this.restore();\n }\n\n paintInlineImageXObjectGroup(imgData, map) {\n if (!this.contentVisible) {\n return;\n }\n\n const ctx = this.ctx;\n const w = imgData.width;\n const h = imgData.height;\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", w, h, false);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData, this.current.transferMaps);\n\n for (let i = 0, ii = map.length; i < ii; i++) {\n const entry = map[i];\n ctx.save();\n ctx.transform.apply(ctx, entry.transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);\n\n if (this.imageLayer) {\n const position = this.getCanvasPosition(entry.x, entry.y);\n this.imageLayer.appendImage({\n imgData,\n left: position[0],\n top: position[1],\n width: w,\n height: h\n });\n }\n\n ctx.restore();\n }\n\n this.compose();\n }\n\n paintSolidColorImageMask() {\n if (!this.contentVisible) {\n return;\n }\n\n this.ctx.fillRect(0, 0, 1, 1);\n this.compose();\n }\n\n markPoint(tag) {}\n\n markPointProps(tag, properties) {}\n\n beginMarkedContent(tag) {\n this.markedContentStack.push({\n visible: true\n });\n }\n\n beginMarkedContentProps(tag, properties) {\n if (tag === \"OC\") {\n this.markedContentStack.push({\n visible: this.optionalContentConfig.isVisible(properties)\n });\n } else {\n this.markedContentStack.push({\n visible: true\n });\n }\n\n this.contentVisible = this.isContentVisible();\n }\n\n endMarkedContent() {\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n }\n\n beginCompat() {}\n\n endCompat() {}\n\n consumePath(clipBox) {\n const isEmpty = this.current.isEmptyClip();\n\n if (this.pendingClip) {\n this.current.updateClipFromPath();\n }\n\n if (!this.pendingClip) {\n this.compose(clipBox);\n }\n\n const ctx = this.ctx;\n\n if (this.pendingClip) {\n if (!isEmpty) {\n if (this.pendingClip === EO_CLIP) {\n ctx.clip(\"evenodd\");\n } else {\n ctx.clip();\n }\n }\n\n this.pendingClip = null;\n }\n\n this.current.startNewPathAndClipBox(this.current.clipBox);\n ctx.beginPath();\n }\n\n getSinglePixelWidth() {\n if (!this._cachedGetSinglePixelWidth) {\n const m = this.ctx.mozCurrentTransform;\n\n if (m[1] === 0 && m[2] === 0) {\n this._cachedGetSinglePixelWidth = 1 / Math.min(Math.abs(m[0]), Math.abs(m[3]));\n } else {\n const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n const normX = Math.hypot(m[0], m[2]);\n const normY = Math.hypot(m[1], m[3]);\n this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet;\n }\n }\n\n return this._cachedGetSinglePixelWidth;\n }\n\n getScaleForStroking() {\n if (!this._cachedScaleForStroking) {\n const {\n lineWidth\n } = this.current;\n const m = this.ctx.mozCurrentTransform;\n let scaleX, scaleY;\n\n if (m[1] === 0 && m[2] === 0) {\n const normX = Math.abs(m[0]);\n const normY = Math.abs(m[3]);\n\n if (lineWidth === 0) {\n scaleX = 1 / normX;\n scaleY = 1 / normY;\n } else {\n const scaledXLineWidth = normX * lineWidth;\n const scaledYLineWidth = normY * lineWidth;\n scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1;\n scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1;\n }\n } else {\n const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n const normX = Math.hypot(m[0], m[1]);\n const normY = Math.hypot(m[2], m[3]);\n\n if (lineWidth === 0) {\n scaleX = normY / absDet;\n scaleY = normX / absDet;\n } else {\n const baseArea = lineWidth * absDet;\n scaleX = normY > baseArea ? normY / baseArea : 1;\n scaleY = normX > baseArea ? normX / baseArea : 1;\n }\n }\n\n this._cachedScaleForStroking = [scaleX, scaleY];\n }\n\n return this._cachedScaleForStroking;\n }\n\n rescaleAndStroke(saveRestore) {\n const {\n ctx\n } = this;\n const {\n lineWidth\n } = this.current;\n const [scaleX, scaleY] = this.getScaleForStroking();\n ctx.lineWidth = lineWidth || 1;\n\n if (scaleX === 1 && scaleY === 1) {\n ctx.stroke();\n return;\n }\n\n let savedMatrix, savedDashes, savedDashOffset;\n\n if (saveRestore) {\n savedMatrix = ctx.mozCurrentTransform.slice();\n savedDashes = ctx.getLineDash().slice();\n savedDashOffset = ctx.lineDashOffset;\n }\n\n ctx.scale(scaleX, scaleY);\n const scale = Math.max(scaleX, scaleY);\n ctx.setLineDash(ctx.getLineDash().map(x => x / scale));\n ctx.lineDashOffset /= scale;\n ctx.stroke();\n\n if (saveRestore) {\n ctx.setTransform(...savedMatrix);\n ctx.setLineDash(savedDashes);\n ctx.lineDashOffset = savedDashOffset;\n }\n }\n\n getCanvasPosition(x, y) {\n const transform = this.ctx.mozCurrentTransform;\n return [transform[0] * x + transform[2] * y + transform[4], transform[1] * x + transform[3] * y + transform[5]];\n }\n\n isContentVisible() {\n for (let i = this.markedContentStack.length - 1; i >= 0; i--) {\n if (!this.markedContentStack[i].visible) {\n return false;\n }\n }\n\n return true;\n }\n\n}\n\nexports.CanvasGraphics = CanvasGraphics;\n\nfor (const op in _util.OPS) {\n if (CanvasGraphics.prototype[op] !== undefined) {\n CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op];\n }\n}\n\n/***/ }),\n/* 13 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.TilingPattern = exports.PathType = void 0;\nexports.getShadingPattern = getShadingPattern;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _is_node = __w_pdfjs_require__(3);\n\nconst PathType = {\n FILL: \"Fill\",\n STROKE: \"Stroke\",\n SHADING: \"Shading\"\n};\nexports.PathType = PathType;\n\nfunction applyBoundingBox(ctx, bbox) {\n if (!bbox || _is_node.isNodeJS) {\n return;\n }\n\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n const region = new Path2D();\n region.rect(bbox[0], bbox[1], width, height);\n ctx.clip(region);\n}\n\nclass BaseShadingPattern {\n constructor() {\n if (this.constructor === BaseShadingPattern) {\n (0, _util.unreachable)(\"Cannot initialize BaseShadingPattern.\");\n }\n }\n\n getPattern() {\n (0, _util.unreachable)(\"Abstract method `getPattern` called.\");\n }\n\n}\n\nclass RadialAxialShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._type = IR[1];\n this._bbox = IR[2];\n this._colorStops = IR[3];\n this._p0 = IR[4];\n this._p1 = IR[5];\n this._r0 = IR[6];\n this._r1 = IR[7];\n this.matrix = null;\n }\n\n _createGradient(ctx) {\n let grad;\n\n if (this._type === \"axial\") {\n grad = ctx.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]);\n } else if (this._type === \"radial\") {\n grad = ctx.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], this._r1);\n }\n\n for (const colorStop of this._colorStops) {\n grad.addColorStop(colorStop[0], colorStop[1]);\n }\n\n return grad;\n }\n\n getPattern(ctx, owner, inverse, pathType) {\n let pattern;\n\n if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n const ownerBBox = owner.current.getClippedPathBoundingBox(pathType, ctx.mozCurrentTransform) || [0, 0, 0, 0];\n const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", width, height, true);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.beginPath();\n tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n inverse = _util.Util.transform(inverse, [1, 0, 0, 1, ownerBBox[0], ownerBBox[1]]);\n tmpCtx.transform.apply(tmpCtx, owner.baseTransform);\n\n if (this.matrix) {\n tmpCtx.transform.apply(tmpCtx, this.matrix);\n }\n\n applyBoundingBox(tmpCtx, this._bbox);\n tmpCtx.fillStyle = this._createGradient(tmpCtx);\n tmpCtx.fill();\n pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n const domMatrix = new DOMMatrix(inverse);\n\n try {\n pattern.setTransform(domMatrix);\n } catch (ex) {\n (0, _util.warn)(`RadialAxialShadingPattern.getPattern: \"${ex?.message}\".`);\n }\n } else {\n applyBoundingBox(ctx, this._bbox);\n pattern = this._createGradient(ctx);\n }\n\n return pattern;\n }\n\n}\n\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n const coords = context.coords,\n colors = context.colors;\n const bytes = data.data,\n rowSize = data.width * 4;\n let tmp;\n\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n\n if (coords[p2 + 1] > coords[p3 + 1]) {\n tmp = p2;\n p2 = p3;\n p3 = tmp;\n tmp = c2;\n c2 = c3;\n c3 = tmp;\n }\n\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n\n const x1 = (coords[p1] + context.offsetX) * context.scaleX;\n const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n const x2 = (coords[p2] + context.offsetX) * context.scaleX;\n const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n const x3 = (coords[p3] + context.offsetX) * context.scaleX;\n const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n\n if (y1 >= y3) {\n return;\n }\n\n const c1r = colors[c1],\n c1g = colors[c1 + 1],\n c1b = colors[c1 + 2];\n const c2r = colors[c2],\n c2g = colors[c2 + 1],\n c2b = colors[c2 + 2];\n const c3r = colors[c3],\n c3g = colors[c3 + 1],\n c3b = colors[c3 + 2];\n const minY = Math.round(y1),\n maxY = Math.round(y3);\n let xa, car, cag, cab;\n let xb, cbr, cbg, cbb;\n\n for (let y = minY; y <= maxY; y++) {\n if (y < y2) {\n let k;\n\n if (y < y1) {\n k = 0;\n } else {\n k = (y1 - y) / (y1 - y2);\n }\n\n xa = x1 - (x1 - x2) * k;\n car = c1r - (c1r - c2r) * k;\n cag = c1g - (c1g - c2g) * k;\n cab = c1b - (c1b - c2b) * k;\n } else {\n let k;\n\n if (y > y3) {\n k = 1;\n } else if (y2 === y3) {\n k = 0;\n } else {\n k = (y2 - y) / (y2 - y3);\n }\n\n xa = x2 - (x2 - x3) * k;\n car = c2r - (c2r - c3r) * k;\n cag = c2g - (c2g - c3g) * k;\n cab = c2b - (c2b - c3b) * k;\n }\n\n let k;\n\n if (y < y1) {\n k = 0;\n } else if (y > y3) {\n k = 1;\n } else {\n k = (y1 - y) / (y1 - y3);\n }\n\n xb = x1 - (x1 - x3) * k;\n cbr = c1r - (c1r - c3r) * k;\n cbg = c1g - (c1g - c3g) * k;\n cbb = c1b - (c1b - c3b) * k;\n const x1_ = Math.round(Math.min(xa, xb));\n const x2_ = Math.round(Math.max(xa, xb));\n let j = rowSize * y + x1_ * 4;\n\n for (let x = x1_; x <= x2_; x++) {\n k = (xa - x) / (xa - xb);\n\n if (k < 0) {\n k = 0;\n } else if (k > 1) {\n k = 1;\n }\n\n bytes[j++] = car - (car - cbr) * k | 0;\n bytes[j++] = cag - (cag - cbg) * k | 0;\n bytes[j++] = cab - (cab - cbb) * k | 0;\n bytes[j++] = 255;\n }\n }\n}\n\nfunction drawFigure(data, figure, context) {\n const ps = figure.coords;\n const cs = figure.colors;\n let i, ii;\n\n switch (figure.type) {\n case \"lattice\":\n const verticesPerRow = figure.verticesPerRow;\n const rows = Math.floor(ps.length / verticesPerRow) - 1;\n const cols = verticesPerRow - 1;\n\n for (i = 0; i < rows; i++) {\n let q = i * verticesPerRow;\n\n for (let j = 0; j < cols; j++, q++) {\n drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]);\n drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);\n }\n }\n\n break;\n\n case \"triangles\":\n for (i = 0, ii = ps.length; i < ii; i += 3) {\n drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]);\n }\n\n break;\n\n default:\n throw new Error(\"illegal figure\");\n }\n}\n\nclass MeshShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._coords = IR[2];\n this._colors = IR[3];\n this._figures = IR[4];\n this._bounds = IR[5];\n this._bbox = IR[7];\n this._background = IR[8];\n this.matrix = null;\n }\n\n _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n const EXPECTED_SCALE = 1.1;\n const MAX_PATTERN_SIZE = 3000;\n const BORDER_SIZE = 2;\n const offsetX = Math.floor(this._bounds[0]);\n const offsetY = Math.floor(this._bounds[1]);\n const boundsWidth = Math.ceil(this._bounds[2]) - offsetX;\n const boundsHeight = Math.ceil(this._bounds[3]) - offsetY;\n const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n const scaleX = boundsWidth / width;\n const scaleY = boundsHeight / height;\n const context = {\n coords: this._coords,\n colors: this._colors,\n offsetX: -offsetX,\n offsetY: -offsetY,\n scaleX: 1 / scaleX,\n scaleY: 1 / scaleY\n };\n const paddedWidth = width + BORDER_SIZE * 2;\n const paddedHeight = height + BORDER_SIZE * 2;\n const tmpCanvas = cachedCanvases.getCanvas(\"mesh\", paddedWidth, paddedHeight, false);\n const tmpCtx = tmpCanvas.context;\n const data = tmpCtx.createImageData(width, height);\n\n if (backgroundColor) {\n const bytes = data.data;\n\n for (let i = 0, ii = bytes.length; i < ii; i += 4) {\n bytes[i] = backgroundColor[0];\n bytes[i + 1] = backgroundColor[1];\n bytes[i + 2] = backgroundColor[2];\n bytes[i + 3] = 255;\n }\n }\n\n for (const figure of this._figures) {\n drawFigure(data, figure, context);\n }\n\n tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n const canvas = tmpCanvas.canvas;\n return {\n canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX,\n scaleY\n };\n }\n\n getPattern(ctx, owner, inverse, pathType) {\n applyBoundingBox(ctx, this._bbox);\n let scale;\n\n if (pathType === PathType.SHADING) {\n scale = _util.Util.singularValueDecompose2dScale(ctx.mozCurrentTransform);\n } else {\n scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform);\n\n if (this.matrix) {\n const matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix);\n\n scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];\n }\n }\n\n const temporaryPatternCanvas = this._createMeshCanvas(scale, pathType === PathType.SHADING ? null : this._background, owner.cachedCanvases);\n\n if (pathType !== PathType.SHADING) {\n ctx.setTransform.apply(ctx, owner.baseTransform);\n\n if (this.matrix) {\n ctx.transform.apply(ctx, this.matrix);\n }\n }\n\n ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n }\n\n}\n\nclass DummyShadingPattern extends BaseShadingPattern {\n getPattern() {\n return \"hotpink\";\n }\n\n}\n\nfunction getShadingPattern(IR) {\n switch (IR[0]) {\n case \"RadialAxial\":\n return new RadialAxialShadingPattern(IR);\n\n case \"Mesh\":\n return new MeshShadingPattern(IR);\n\n case \"Dummy\":\n return new DummyShadingPattern();\n }\n\n throw new Error(`Unknown IR type: ${IR[0]}`);\n}\n\nconst PaintType = {\n COLORED: 1,\n UNCOLORED: 2\n};\n\nclass TilingPattern {\n static get MAX_PATTERN_SIZE() {\n return (0, _util.shadow)(this, \"MAX_PATTERN_SIZE\", 3000);\n }\n\n constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n this.operatorList = IR[2];\n this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];\n this.bbox = IR[4];\n this.xstep = IR[5];\n this.ystep = IR[6];\n this.paintType = IR[7];\n this.tilingType = IR[8];\n this.color = color;\n this.ctx = ctx;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n }\n\n createPatternCanvas(owner) {\n const operatorList = this.operatorList;\n const bbox = this.bbox;\n const xstep = this.xstep;\n const ystep = this.ystep;\n const paintType = this.paintType;\n const tilingType = this.tilingType;\n const color = this.color;\n const canvasGraphicsFactory = this.canvasGraphicsFactory;\n (0, _util.info)(\"TilingType: \" + tilingType);\n const x0 = bbox[0],\n y0 = bbox[1],\n x1 = bbox[2],\n y1 = bbox[3];\n\n const matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix);\n\n const curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform);\n\n const combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]];\n const dimx = this.getSizeAndScale(xstep, this.ctx.canvas.width, combinedScale[0]);\n const dimy = this.getSizeAndScale(ystep, this.ctx.canvas.height, combinedScale[1]);\n const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", dimx.size, dimy.size, true);\n const tmpCtx = tmpCanvas.context;\n const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n graphics.groupLevel = owner.groupLevel;\n this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n let adjustedX0 = x0;\n let adjustedY0 = y0;\n let adjustedX1 = x1;\n let adjustedY1 = y1;\n\n if (x0 < 0) {\n adjustedX0 = 0;\n adjustedX1 += Math.abs(x0);\n }\n\n if (y0 < 0) {\n adjustedY0 = 0;\n adjustedY1 += Math.abs(y0);\n }\n\n tmpCtx.translate(-(dimx.scale * adjustedX0), -(dimy.scale * adjustedY0));\n graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\n tmpCtx.save();\n this.clipBbox(graphics, adjustedX0, adjustedY0, adjustedX1, adjustedY1);\n graphics.baseTransform = graphics.ctx.mozCurrentTransform.slice();\n graphics.executeOperatorList(operatorList);\n graphics.endDrawing();\n return {\n canvas: tmpCanvas.canvas,\n scaleX: dimx.scale,\n scaleY: dimy.scale,\n offsetX: adjustedX0,\n offsetY: adjustedY0\n };\n }\n\n getSizeAndScale(step, realOutputSize, scale) {\n step = Math.abs(step);\n const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\n let size = Math.ceil(step * scale);\n\n if (size >= maxSize) {\n size = maxSize;\n } else {\n scale = size / step;\n }\n\n return {\n scale,\n size\n };\n }\n\n clipBbox(graphics, x0, y0, x1, y1) {\n const bboxWidth = x1 - x0;\n const bboxHeight = y1 - y0;\n graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n graphics.current.updateRectMinMax(graphics.ctx.mozCurrentTransform, [x0, y0, x1, y1]);\n graphics.clip();\n graphics.endPath();\n }\n\n setFillAndStrokeStyleToContext(graphics, paintType, color) {\n const context = graphics.ctx,\n current = graphics.current;\n\n switch (paintType) {\n case PaintType.COLORED:\n const ctx = this.ctx;\n context.fillStyle = ctx.fillStyle;\n context.strokeStyle = ctx.strokeStyle;\n current.fillColor = ctx.fillStyle;\n current.strokeColor = ctx.strokeStyle;\n break;\n\n case PaintType.UNCOLORED:\n const cssColor = _util.Util.makeHexColor(color[0], color[1], color[2]);\n\n context.fillStyle = cssColor;\n context.strokeStyle = cssColor;\n current.fillColor = cssColor;\n current.strokeColor = cssColor;\n break;\n\n default:\n throw new _util.FormatError(`Unsupported paint type: ${paintType}`);\n }\n }\n\n getPattern(ctx, owner, inverse, pathType) {\n let matrix = inverse;\n\n if (pathType !== PathType.SHADING) {\n matrix = _util.Util.transform(matrix, owner.baseTransform);\n\n if (this.matrix) {\n matrix = _util.Util.transform(matrix, this.matrix);\n }\n }\n\n const temporaryPatternCanvas = this.createPatternCanvas(owner);\n let domMatrix = new DOMMatrix(matrix);\n domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY);\n const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n\n try {\n pattern.setTransform(domMatrix);\n } catch (ex) {\n (0, _util.warn)(`TilingPattern.getPattern: \"${ex?.message}\".`);\n }\n\n return pattern;\n }\n\n}\n\nexports.TilingPattern = TilingPattern;\n\n/***/ }),\n/* 14 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.applyMaskImageData = applyMaskImageData;\n\nvar _util = __w_pdfjs_require__(1);\n\nfunction applyMaskImageData({\n src,\n srcPos = 0,\n dest,\n destPos = 0,\n width,\n height,\n inverseDecode = false\n}) {\n const opaque = _util.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n const [zeroMapping, oneMapping] = !inverseDecode ? [opaque, 0] : [0, opaque];\n const widthInSource = width >> 3;\n const widthRemainder = width & 7;\n const srcLength = src.length;\n dest = new Uint32Array(dest.buffer);\n\n for (let i = 0; i < height; i++) {\n for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {\n const elem = srcPos < srcLength ? src[srcPos] : 255;\n dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\n }\n\n if (widthRemainder === 0) {\n continue;\n }\n\n const elem = srcPos < srcLength ? src[srcPos++] : 255;\n\n for (let j = 0; j < widthRemainder; j++) {\n dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping;\n }\n }\n\n return {\n srcPos,\n destPos\n };\n}\n\n/***/ }),\n/* 15 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.GlobalWorkerOptions = void 0;\nconst GlobalWorkerOptions = Object.create(null);\nexports.GlobalWorkerOptions = GlobalWorkerOptions;\nGlobalWorkerOptions.workerPort = GlobalWorkerOptions.workerPort === undefined ? null : GlobalWorkerOptions.workerPort;\nGlobalWorkerOptions.workerSrc = GlobalWorkerOptions.workerSrc === undefined ? \"\" : GlobalWorkerOptions.workerSrc;\n\n/***/ }),\n/* 16 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.MessageHandler = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nconst CallbackKind = {\n UNKNOWN: 0,\n DATA: 1,\n ERROR: 2\n};\nconst StreamKind = {\n UNKNOWN: 0,\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8\n};\n\nfunction wrapReason(reason) {\n if (!(reason instanceof Error || typeof reason === \"object\" && reason !== null)) {\n (0, _util.unreachable)('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n }\n\n switch (reason.name) {\n case \"AbortException\":\n return new _util.AbortException(reason.message);\n\n case \"MissingPDFException\":\n return new _util.MissingPDFException(reason.message);\n\n case \"PasswordException\":\n return new _util.PasswordException(reason.message, reason.code);\n\n case \"UnexpectedResponseException\":\n return new _util.UnexpectedResponseException(reason.message, reason.status);\n\n case \"UnknownErrorException\":\n return new _util.UnknownErrorException(reason.message, reason.details);\n\n default:\n return new _util.UnknownErrorException(reason.message, reason.toString());\n }\n}\n\nclass MessageHandler {\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n\n this._onComObjOnMessage = event => {\n const data = event.data;\n\n if (data.targetName !== this.sourceName) {\n return;\n }\n\n if (data.stream) {\n this._processStreamMessage(data);\n\n return;\n }\n\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n\n delete this.callbackCapabilities[callbackId];\n\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n\n return;\n }\n\n const action = this.actionHandler[data.action];\n\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n\n if (data.callbackId) {\n const cbSourceName = this.sourceName;\n const cbTargetName = data.sourceName;\n new Promise(function (resolve) {\n resolve(action(data.data));\n }).then(function (result) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason)\n });\n });\n return;\n }\n\n if (data.streamId) {\n this._createStreamSink(data);\n\n return;\n }\n\n action(data.data);\n };\n\n comObj.addEventListener(\"message\", this._onComObjOnMessage);\n }\n\n on(actionName, handler) {\n const ah = this.actionHandler;\n\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n\n ah[actionName] = handler;\n }\n\n send(actionName, data, transfers) {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data\n }, transfers);\n }\n\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = (0, _util.createPromiseCapability)();\n this.callbackCapabilities[callbackId] = capability;\n\n try {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data\n }, transfers);\n } catch (ex) {\n capability.reject(ex);\n }\n\n return capability.promise;\n }\n\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++,\n sourceName = this.sourceName,\n targetName = this.targetName,\n comObj = this.comObj;\n return new ReadableStream({\n start: controller => {\n const startCapability = (0, _util.createPromiseCapability)();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false\n };\n comObj.postMessage({\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize\n }, transfers);\n return startCapability.promise;\n },\n pull: controller => {\n const pullCapability = (0, _util.createPromiseCapability)();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize\n });\n return pullCapability.promise;\n },\n cancel: reason => {\n (0, _util.assert)(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = (0, _util.createPromiseCapability)();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason)\n });\n return cancelCapability.promise;\n }\n }, queueingStrategy);\n }\n\n _createStreamSink(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const self = this,\n action = this.actionHandler[data.action];\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = (0, _util.createPromiseCapability)();\n this.ready = this.sinkCapability.promise;\n }\n\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk\n }, transfers);\n },\n\n close() {\n if (this.isCancelled) {\n return;\n }\n\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId\n });\n delete self.streamSinks[streamId];\n },\n\n error(reason) {\n (0, _util.assert)(reason instanceof Error, \"error must have a valid reason\");\n\n if (this.isCancelled) {\n return;\n }\n\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason)\n });\n },\n\n sinkCapability: (0, _util.createPromiseCapability)(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null\n };\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n new Promise(function (resolve) {\n resolve(action(data.data, streamSink));\n }).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n }\n\n _processStreamMessage(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const streamController = this.streamControllers[streamId],\n streamSink = this.streamSinks[streamId];\n\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n streamController.startCall.resolve();\n } else {\n streamController.startCall.reject(wrapReason(data.reason));\n }\n\n break;\n\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n\n break;\n\n case StreamKind.PULL:\n if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n break;\n }\n\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n\n streamSink.desiredSize = data.desiredSize;\n new Promise(function (resolve) {\n resolve(streamSink.onPull && streamSink.onPull());\n }).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n break;\n\n case StreamKind.ENQUEUE:\n (0, _util.assert)(streamController, \"enqueue should have stream controller\");\n\n if (streamController.isClosed) {\n break;\n }\n\n streamController.controller.enqueue(data.chunk);\n break;\n\n case StreamKind.CLOSE:\n (0, _util.assert)(streamController, \"close should have stream controller\");\n\n if (streamController.isClosed) {\n break;\n }\n\n streamController.isClosed = true;\n streamController.controller.close();\n\n this._deleteStreamController(streamController, streamId);\n\n break;\n\n case StreamKind.ERROR:\n (0, _util.assert)(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n\n this._deleteStreamController(streamController, streamId);\n\n break;\n\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n\n this._deleteStreamController(streamController, streamId);\n\n break;\n\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n\n new Promise(function (resolve) {\n resolve(streamSink.onCancel && streamSink.onCancel(wrapReason(data.reason)));\n }).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n streamSink.sinkCapability.reject(wrapReason(data.reason));\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n\n async _deleteStreamController(streamController, streamId) {\n await Promise.allSettled([streamController.startCall && streamController.startCall.promise, streamController.pullCall && streamController.pullCall.promise, streamController.cancelCall && streamController.cancelCall.promise]);\n delete this.streamControllers[streamId];\n }\n\n destroy() {\n this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n }\n\n}\n\nexports.MessageHandler = MessageHandler;\n\n/***/ }),\n/* 17 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.Metadata = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nclass Metadata {\n #metadataMap;\n #data;\n\n constructor({\n parsedData,\n rawData\n }) {\n this.#metadataMap = parsedData;\n this.#data = rawData;\n }\n\n getRaw() {\n return this.#data;\n }\n\n get(name) {\n return this.#metadataMap.get(name) ?? null;\n }\n\n getAll() {\n return (0, _util.objectFromMap)(this.#metadataMap);\n }\n\n has(name) {\n return this.#metadataMap.has(name);\n }\n\n}\n\nexports.Metadata = Metadata;\n\n/***/ }),\n/* 18 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.OptionalContentConfig = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nconst INTERNAL = Symbol(\"INTERNAL\");\n\nclass OptionalContentGroup {\n #visible = true;\n\n constructor(name, intent) {\n this.name = name;\n this.intent = intent;\n }\n\n get visible() {\n return this.#visible;\n }\n\n _setVisible(internal, visible) {\n if (internal !== INTERNAL) {\n (0, _util.unreachable)(\"Internal method `_setVisible` called.\");\n }\n\n this.#visible = visible;\n }\n\n}\n\nclass OptionalContentConfig {\n #cachedHasInitialVisibility = true;\n #groups = new Map();\n #initialVisibility = null;\n #order = null;\n\n constructor(data) {\n this.name = null;\n this.creator = null;\n\n if (data === null) {\n return;\n }\n\n this.name = data.name;\n this.creator = data.creator;\n this.#order = data.order;\n\n for (const group of data.groups) {\n this.#groups.set(group.id, new OptionalContentGroup(group.name, group.intent));\n }\n\n if (data.baseState === \"OFF\") {\n for (const group of this.#groups.values()) {\n group._setVisible(INTERNAL, false);\n }\n }\n\n for (const on of data.on) {\n this.#groups.get(on)._setVisible(INTERNAL, true);\n }\n\n for (const off of data.off) {\n this.#groups.get(off)._setVisible(INTERNAL, false);\n }\n\n this.#initialVisibility = new Map();\n\n for (const [id, group] of this.#groups) {\n this.#initialVisibility.set(id, group.visible);\n }\n }\n\n __evaluateVisibilityExpression(array) {\n const length = array.length;\n\n if (length < 2) {\n return true;\n }\n\n const operator = array[0];\n\n for (let i = 1; i < length; i++) {\n const element = array[i];\n let state;\n\n if (Array.isArray(element)) {\n state = this.__evaluateVisibilityExpression(element);\n } else if (this.#groups.has(element)) {\n state = this.#groups.get(element).visible;\n } else {\n (0, _util.warn)(`Optional content group not found: ${element}`);\n return true;\n }\n\n switch (operator) {\n case \"And\":\n if (!state) {\n return false;\n }\n\n break;\n\n case \"Or\":\n if (state) {\n return true;\n }\n\n break;\n\n case \"Not\":\n return !state;\n\n default:\n return true;\n }\n }\n\n return operator === \"And\";\n }\n\n isVisible(group) {\n if (this.#groups.size === 0) {\n return true;\n }\n\n if (!group) {\n (0, _util.warn)(\"Optional content group not defined.\");\n return true;\n }\n\n if (group.type === \"OCG\") {\n if (!this.#groups.has(group.id)) {\n (0, _util.warn)(`Optional content group not found: ${group.id}`);\n return true;\n }\n\n return this.#groups.get(group.id).visible;\n } else if (group.type === \"OCMD\") {\n if (group.expression) {\n return this.__evaluateVisibilityExpression(group.expression);\n }\n\n if (!group.policy || group.policy === \"AnyOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n (0, _util.warn)(`Optional content group not found: ${id}`);\n return true;\n }\n\n if (this.#groups.get(id).visible) {\n return true;\n }\n }\n\n return false;\n } else if (group.policy === \"AllOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n (0, _util.warn)(`Optional content group not found: ${id}`);\n return true;\n }\n\n if (!this.#groups.get(id).visible) {\n return false;\n }\n }\n\n return true;\n } else if (group.policy === \"AnyOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n (0, _util.warn)(`Optional content group not found: ${id}`);\n return true;\n }\n\n if (!this.#groups.get(id).visible) {\n return true;\n }\n }\n\n return false;\n } else if (group.policy === \"AllOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n (0, _util.warn)(`Optional content group not found: ${id}`);\n return true;\n }\n\n if (this.#groups.get(id).visible) {\n return false;\n }\n }\n\n return true;\n }\n\n (0, _util.warn)(`Unknown optional content policy ${group.policy}.`);\n return true;\n }\n\n (0, _util.warn)(`Unknown group type ${group.type}.`);\n return true;\n }\n\n setVisibility(id, visible = true) {\n if (!this.#groups.has(id)) {\n (0, _util.warn)(`Optional content group not found: ${id}`);\n return;\n }\n\n this.#groups.get(id)._setVisible(INTERNAL, !!visible);\n\n this.#cachedHasInitialVisibility = null;\n }\n\n get hasInitialVisibility() {\n if (this.#cachedHasInitialVisibility !== null) {\n return this.#cachedHasInitialVisibility;\n }\n\n for (const [id, group] of this.#groups) {\n const visible = this.#initialVisibility.get(id);\n\n if (group.visible !== visible) {\n return this.#cachedHasInitialVisibility = false;\n }\n }\n\n return this.#cachedHasInitialVisibility = true;\n }\n\n getOrder() {\n if (!this.#groups.size) {\n return null;\n }\n\n if (this.#order) {\n return this.#order.slice();\n }\n\n return [...this.#groups.keys()];\n }\n\n getGroups() {\n return this.#groups.size > 0 ? (0, _util.objectFromMap)(this.#groups) : null;\n }\n\n getGroup(id) {\n return this.#groups.get(id) || null;\n }\n\n}\n\nexports.OptionalContentConfig = OptionalContentConfig;\n\n/***/ }),\n/* 19 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.PDFDataTransportStream = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _display_utils = __w_pdfjs_require__(4);\n\nclass PDFDataTransportStream {\n constructor(params, pdfDataRangeTransport) {\n (0, _util.assert)(pdfDataRangeTransport, 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.');\n this._queuedChunks = [];\n this._progressiveDone = params.progressiveDone || false;\n this._contentDispositionFilename = params.contentDispositionFilename || null;\n const initialData = params.initialData;\n\n if (initialData?.length > 0) {\n const buffer = new Uint8Array(initialData).buffer;\n\n this._queuedChunks.push(buffer);\n }\n\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isStreamingSupported = !params.disableStream;\n this._isRangeSupported = !params.disableRange;\n this._contentLength = params.length;\n this._fullRequestReader = null;\n this._rangeReaders = [];\n\n this._pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n this._onReceiveData({\n begin,\n chunk\n });\n });\n\n this._pdfDataRangeTransport.addProgressListener((loaded, total) => {\n this._onProgress({\n loaded,\n total\n });\n });\n\n this._pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n this._onReceiveData({\n chunk\n });\n });\n\n this._pdfDataRangeTransport.addProgressiveDoneListener(() => {\n this._onProgressiveDone();\n });\n\n this._pdfDataRangeTransport.transportReady();\n }\n\n _onReceiveData(args) {\n const buffer = new Uint8Array(args.chunk).buffer;\n\n if (args.begin === undefined) {\n if (this._fullRequestReader) {\n this._fullRequestReader._enqueue(buffer);\n } else {\n this._queuedChunks.push(buffer);\n }\n } else {\n const found = this._rangeReaders.some(function (rangeReader) {\n if (rangeReader._begin !== args.begin) {\n return false;\n }\n\n rangeReader._enqueue(buffer);\n\n return true;\n });\n\n (0, _util.assert)(found, \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\");\n }\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n\n _onProgress(evt) {\n if (evt.total === undefined) {\n const firstReader = this._rangeReaders[0];\n\n if (firstReader?.onProgress) {\n firstReader.onProgress({\n loaded: evt.loaded\n });\n }\n } else {\n const fullReader = this._fullRequestReader;\n\n if (fullReader?.onProgress) {\n fullReader.onProgress({\n loaded: evt.loaded,\n total: evt.total\n });\n }\n }\n }\n\n _onProgressiveDone() {\n if (this._fullRequestReader) {\n this._fullRequestReader.progressiveDone();\n }\n\n this._progressiveDone = true;\n }\n\n _removeRangeReader(reader) {\n const i = this._rangeReaders.indexOf(reader);\n\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n }\n\n getFullReader() {\n (0, _util.assert)(!this._fullRequestReader, \"PDFDataTransportStream.getFullReader can only be called once.\");\n const queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone, this._contentDispositionFilename);\n }\n\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n\n const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n\n this._pdfDataRangeTransport.requestDataRange(begin, end);\n\n this._rangeReaders.push(reader);\n\n return reader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n\n for (const reader of this._rangeReaders.slice(0)) {\n reader.cancel(reason);\n }\n\n this._pdfDataRangeTransport.abort();\n }\n\n}\n\nexports.PDFDataTransportStream = PDFDataTransportStream;\n\nclass PDFDataTransportStreamReader {\n constructor(stream, queuedChunks, progressiveDone = false, contentDispositionFilename = null) {\n this._stream = stream;\n this._done = progressiveDone || false;\n this._filename = (0, _display_utils.isPdfFile)(contentDispositionFilename) ? contentDispositionFilename : null;\n this._queuedChunks = queuedChunks || [];\n this._loaded = 0;\n\n for (const chunk of this._queuedChunks) {\n this._loaded += chunk.byteLength;\n }\n\n this._requests = [];\n this._headersReady = Promise.resolve();\n stream._fullRequestReader = this;\n this.onProgress = null;\n }\n\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunks.push(chunk);\n }\n\n this._loaded += chunk.byteLength;\n }\n\n get headersReady() {\n return this._headersReady;\n }\n\n get filename() {\n return this._filename;\n }\n\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n }\n\n get contentLength() {\n return this._stream._contentLength;\n }\n\n async read() {\n if (this._queuedChunks.length > 0) {\n const chunk = this._queuedChunks.shift();\n\n return {\n value: chunk,\n done: false\n };\n }\n\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n\n const requestCapability = (0, _util.createPromiseCapability)();\n\n this._requests.push(requestCapability);\n\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n\n this._requests.length = 0;\n }\n\n progressiveDone() {\n if (this._done) {\n return;\n }\n\n this._done = true;\n }\n\n}\n\nclass PDFDataTransportStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._begin = begin;\n this._end = end;\n this._queuedChunk = null;\n this._requests = [];\n this._done = false;\n this.onProgress = null;\n }\n\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n const requestsCapability = this._requests.shift();\n\n requestsCapability.resolve({\n value: chunk,\n done: false\n });\n\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n\n this._requests.length = 0;\n }\n\n this._done = true;\n\n this._stream._removeRangeReader(this);\n }\n\n get isStreamingSupported() {\n return false;\n }\n\n async read() {\n if (this._queuedChunk) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n\n const requestCapability = (0, _util.createPromiseCapability)();\n\n this._requests.push(requestCapability);\n\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n\n this._requests.length = 0;\n\n this._stream._removeRangeReader(this);\n }\n\n}\n\n/***/ }),\n/* 20 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.XfaText = void 0;\n\nclass XfaText {\n static textContent(xfa) {\n const items = [];\n const output = {\n items,\n styles: Object.create(null)\n };\n\n function walk(node) {\n if (!node) {\n return;\n }\n\n let str = null;\n const name = node.name;\n\n if (name === \"#text\") {\n str = node.value;\n } else if (!XfaText.shouldBuildText(name)) {\n return;\n } else if (node?.attributes?.textContent) {\n str = node.attributes.textContent;\n } else if (node.value) {\n str = node.value;\n }\n\n if (str !== null) {\n items.push({\n str\n });\n }\n\n if (!node.children) {\n return;\n }\n\n for (const child of node.children) {\n walk(child);\n }\n }\n\n walk(xfa);\n return output;\n }\n\n static shouldBuildText(name) {\n return !(name === \"textarea\" || name === \"input\" || name === \"option\" || name === \"select\");\n }\n\n}\n\nexports.XfaText = XfaText;\n\n/***/ }),\n/* 21 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.NodeStandardFontDataFactory = exports.NodeCanvasFactory = exports.NodeCMapReaderFactory = void 0;\n\nvar _base_factory = __w_pdfjs_require__(5);\n\n;\n\nconst fetchData = function (url) {\n return new Promise((resolve, reject) => {\n const fs = require(\"fs\");\n\n fs.readFile(url, (error, data) => {\n if (error || !data) {\n reject(new Error(error));\n return;\n }\n\n resolve(new Uint8Array(data));\n });\n });\n};\n\nclass NodeCanvasFactory extends _base_factory.BaseCanvasFactory {\n _createCanvas(width, height) {\n const Canvas = require(\"canvas\");\n\n return Canvas.createCanvas(width, height);\n }\n\n}\n\nexports.NodeCanvasFactory = NodeCanvasFactory;\n\nclass NodeCMapReaderFactory extends _base_factory.BaseCMapReaderFactory {\n _fetchData(url, compressionType) {\n return fetchData(url).then(data => {\n return {\n cMapData: data,\n compressionType\n };\n });\n }\n\n}\n\nexports.NodeCMapReaderFactory = NodeCMapReaderFactory;\n\nclass NodeStandardFontDataFactory extends _base_factory.BaseStandardFontDataFactory {\n _fetchData(url) {\n return fetchData(url);\n }\n\n}\n\nexports.NodeStandardFontDataFactory = NodeStandardFontDataFactory;\n\n/***/ }),\n/* 22 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.AnnotationEditorLayer = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _tools = __w_pdfjs_require__(9);\n\nvar _display_utils = __w_pdfjs_require__(4);\n\nvar _freetext = __w_pdfjs_require__(23);\n\nvar _ink = __w_pdfjs_require__(24);\n\nclass AnnotationEditorLayer {\n #allowClick = false;\n #boundPointerup = this.pointerup.bind(this);\n #boundPointerdown = this.pointerdown.bind(this);\n #editors = new Map();\n #isCleaningUp = false;\n #textLayerMap = new WeakMap();\n #textNodes = new Map();\n #uiManager;\n #waitingEditors = new Set();\n static _initialized = false;\n\n constructor(options) {\n if (!AnnotationEditorLayer._initialized) {\n AnnotationEditorLayer._initialized = true;\n\n _freetext.FreeTextEditor.initialize(options.l10n);\n\n _ink.InkEditor.initialize(options.l10n);\n\n options.uiManager.registerEditorTypes([_freetext.FreeTextEditor, _ink.InkEditor]);\n }\n\n this.#uiManager = options.uiManager;\n this.annotationStorage = options.annotationStorage;\n this.pageIndex = options.pageIndex;\n this.div = options.div;\n this.#uiManager.addLayer(this);\n }\n\n get textLayerElements() {\n const textLayer = this.div.parentNode.getElementsByClassName(\"textLayer\").item(0);\n\n if (!textLayer) {\n return (0, _util.shadow)(this, \"textLayerElements\", null);\n }\n\n let textChildren = this.#textLayerMap.get(textLayer);\n\n if (textChildren) {\n return textChildren;\n }\n\n textChildren = textLayer.querySelectorAll(`span[role=\"presentation\"]`);\n\n if (textChildren.length === 0) {\n return (0, _util.shadow)(this, \"textLayerElements\", null);\n }\n\n textChildren = Array.from(textChildren);\n textChildren.sort(AnnotationEditorLayer.__compareElementPositions);\n this.#textLayerMap.set(textLayer, textChildren);\n return textChildren;\n }\n\n get __hasTextLayer() {\n return !!this.div.parentNode.querySelector(\".textLayer .endOfContent\");\n }\n\n updateToolbar(mode) {\n this.#uiManager.updateToolbar(mode);\n }\n\n updateMode(mode = this.#uiManager.getMode()) {\n this.__cleanup();\n\n if (mode === _util.AnnotationEditorType.INK) {\n this.addInkEditorIfNeeded(false);\n this.disableClick();\n } else {\n this.enableClick();\n }\n\n this.#uiManager.unselectAll();\n }\n\n addInkEditorIfNeeded(isCommitting) {\n if (!isCommitting && this.#uiManager.getMode() !== _util.AnnotationEditorType.INK) {\n return;\n }\n\n if (!isCommitting) {\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.setInBackground();\n return;\n }\n }\n }\n\n const editor = this.__createAndAddNewEditor({\n offsetX: 0,\n offsetY: 0\n });\n editor.setInBackground();\n }\n\n setEditingState(isEditing) {\n this.#uiManager.setEditingState(isEditing);\n }\n\n addCommands(params) {\n this.#uiManager.addCommands(params);\n }\n\n enable() {\n this.div.style.pointerEvents = \"auto\";\n\n for (const editor of this.#editors.values()) {\n editor.enableEditing();\n }\n }\n\n disable() {\n this.div.style.pointerEvents = \"none\";\n\n for (const editor of this.#editors.values()) {\n editor.disableEditing();\n }\n }\n\n setActiveEditor(editor) {\n const currentActive = this.#uiManager.getActive();\n\n if (currentActive === editor) {\n return;\n }\n\n this.#uiManager.setActiveEditor(editor);\n }\n\n enableClick() {\n this.div.addEventListener(\"pointerdown\", this.#boundPointerdown);\n this.div.addEventListener(\"pointerup\", this.#boundPointerup);\n }\n\n disableClick() {\n this.div.removeEventListener(\"pointerdown\", this.#boundPointerdown);\n this.div.removeEventListener(\"pointerup\", this.#boundPointerup);\n }\n\n attach(editor) {\n this.#editors.set(editor.id, editor);\n }\n\n detach(editor) {\n this.#editors.delete(editor.id);\n this.removePointerInTextLayer(editor);\n }\n\n remove(editor) {\n this.#uiManager.removeEditor(editor);\n this.detach(editor);\n this.annotationStorage.removeKey(editor.id);\n editor.div.style.display = \"none\";\n setTimeout(() => {\n editor.div.style.display = \"\";\n editor.div.remove();\n editor.isAttachedToDOM = false;\n\n if (document.activeElement === document.body) {\n this.#uiManager.focusMainContainer();\n }\n }, 0);\n\n if (!this.#isCleaningUp) {\n this.addInkEditorIfNeeded(false);\n }\n }\n\n __changeParent(editor) {\n if (editor.parent === this) {\n return;\n }\n\n this.attach(editor);\n editor.pageIndex = this.pageIndex;\n editor.parent?.detach(editor);\n editor.parent = this;\n\n if (editor.div && editor.isAttachedToDOM) {\n editor.div.remove();\n this.div.append(editor.div);\n }\n }\n\n static __compareElementPositions(e1, e2) {\n const rect1 = e1.getBoundingClientRect();\n const rect2 = e2.getBoundingClientRect();\n\n if (rect1.y + rect1.height <= rect2.y) {\n return -1;\n }\n\n if (rect2.y + rect2.height <= rect1.y) {\n return +1;\n }\n\n const centerX1 = rect1.x + rect1.width / 2;\n const centerX2 = rect2.x + rect2.width / 2;\n return centerX1 - centerX2;\n }\n\n onTextLayerRendered() {\n this.#textNodes.clear();\n\n for (const editor of this.#waitingEditors) {\n if (editor.isAttachedToDOM) {\n this.addPointerInTextLayer(editor);\n }\n }\n\n this.#waitingEditors.clear();\n }\n\n removePointerInTextLayer(editor) {\n if (!this.__hasTextLayer) {\n this.#waitingEditors.delete(editor);\n return;\n }\n\n const {\n id\n } = editor;\n const node = this.#textNodes.get(id);\n\n if (!node) {\n return;\n }\n\n this.#textNodes.delete(id);\n let owns = node.getAttribute(\"aria-owns\");\n\n if (owns?.includes(id)) {\n owns = owns.split(\" \").filter(x => x !== id).join(\" \");\n\n if (owns) {\n node.setAttribute(\"aria-owns\", owns);\n } else {\n node.removeAttribute(\"aria-owns\");\n node.setAttribute(\"role\", \"presentation\");\n }\n }\n }\n\n addPointerInTextLayer(editor) {\n if (!this.__hasTextLayer) {\n this.#waitingEditors.add(editor);\n return;\n }\n\n this.removePointerInTextLayer(editor);\n const children = this.textLayerElements;\n\n if (!children) {\n return;\n }\n\n const {\n contentDiv\n } = editor;\n const id = editor.getIdForTextLayer();\n const index = (0, _display_utils.binarySearchFirstItem)(children, node => AnnotationEditorLayer.__compareElementPositions(contentDiv, node) < 0);\n const node = children[Math.max(0, index - 1)];\n const owns = node.getAttribute(\"aria-owns\");\n\n if (!owns?.includes(id)) {\n node.setAttribute(\"aria-owns\", owns ? `${owns} ${id}` : id);\n }\n\n node.removeAttribute(\"role\");\n this.#textNodes.set(id, node);\n }\n\n moveDivInDOM(editor) {\n this.addPointerInTextLayer(editor);\n const {\n div,\n contentDiv\n } = editor;\n\n if (!this.div.hasChildNodes()) {\n this.div.append(div);\n return;\n }\n\n const children = Array.from(this.div.childNodes).filter(node => node !== div);\n\n if (children.length === 0) {\n return;\n }\n\n const index = (0, _display_utils.binarySearchFirstItem)(children, node => AnnotationEditorLayer.__compareElementPositions(contentDiv, node) < 0);\n\n if (index === 0) {\n children[0].before(div);\n } else {\n children[index - 1].after(div);\n }\n }\n\n add(editor) {\n this.__changeParent(editor);\n this.addToAnnotationStorage(editor);\n this.#uiManager.addEditor(editor);\n this.attach(editor);\n\n if (!editor.isAttachedToDOM) {\n const div = editor.render();\n this.div.append(div);\n editor.isAttachedToDOM = true;\n }\n\n this.moveDivInDOM(editor);\n editor.onceAdded();\n }\n\n addToAnnotationStorage(editor) {\n if (!editor.isEmpty() && !this.annotationStorage.has(editor.id)) {\n this.annotationStorage.setValue(editor.id, editor);\n }\n }\n\n addOrRebuild(editor) {\n if (editor.needsToBeRebuilt()) {\n editor.rebuild();\n } else {\n this.add(editor);\n }\n }\n\n addANewEditor(editor) {\n const cmd = () => {\n this.addOrRebuild(editor);\n };\n\n const undo = () => {\n editor.remove();\n };\n\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n\n addUndoableEditor(editor) {\n const cmd = () => {\n this.addOrRebuild(editor);\n };\n\n const undo = () => {\n editor.remove();\n };\n\n this.addCommands({\n cmd,\n undo,\n mustExec: false\n });\n }\n\n getNextId() {\n return this.#uiManager.getId();\n }\n\n __createNewEditor(params) {\n switch (this.#uiManager.getMode()) {\n case _util.AnnotationEditorType.FREETEXT:\n return new _freetext.FreeTextEditor(params);\n\n case _util.AnnotationEditorType.INK:\n return new _ink.InkEditor(params);\n }\n\n return null;\n }\n\n deserialize(data) {\n switch (data.annotationType) {\n case _util.AnnotationEditorType.FREETEXT:\n return _freetext.FreeTextEditor.deserialize(data, this);\n\n case _util.AnnotationEditorType.INK:\n return _ink.InkEditor.deserialize(data, this);\n }\n\n return null;\n }\n\n __createAndAddNewEditor(event) {\n const id = this.getNextId();\n const editor = this.__createNewEditor({\n parent: this,\n id,\n x: event.offsetX,\n y: event.offsetY\n });\n\n if (editor) {\n this.add(editor);\n }\n\n return editor;\n }\n\n setSelected(editor) {\n this.#uiManager.setSelected(editor);\n }\n\n toggleSelected(editor) {\n this.#uiManager.toggleSelected(editor);\n }\n\n isSelected(editor) {\n return this.#uiManager.isSelected(editor);\n }\n\n unselect(editor) {\n this.#uiManager.unselect(editor);\n }\n\n pointerup(event) {\n const isMac = _tools.KeyboardManager.platform.isMac;\n\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n\n if (event.target !== this.div) {\n return;\n }\n\n if (!this.#allowClick) {\n this.#allowClick = true;\n return;\n }\n\n this.__createAndAddNewEditor(event);\n }\n\n pointerdown(event) {\n const isMac = _tools.KeyboardManager.platform.isMac;\n\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n\n if (event.target !== this.div) {\n return;\n }\n\n const editor = this.#uiManager.getActive();\n this.#allowClick = !editor || editor.isEmpty();\n }\n\n drop(event) {\n const id = event.dataTransfer.getData(\"text/plain\");\n const editor = this.#uiManager.getEditor(id);\n\n if (!editor) {\n return;\n }\n\n event.preventDefault();\n event.dataTransfer.dropEffect = \"move\";\n this.__changeParent(editor);\n const rect = this.div.getBoundingClientRect();\n const endX = event.clientX - rect.x;\n const endY = event.clientY - rect.y;\n editor.translate(endX - editor.startX, endY - editor.startY);\n this.moveDivInDOM(editor);\n editor.div.focus();\n }\n\n dragover(event) {\n event.preventDefault();\n }\n\n destroy() {\n if (this.#uiManager.getActive()?.parent === this) {\n this.#uiManager.setActiveEditor(null);\n }\n\n for (const editor of this.#editors.values()) {\n this.removePointerInTextLayer(editor);\n editor.isAttachedToDOM = false;\n editor.div.remove();\n editor.parent = null;\n }\n\n this.#textNodes.clear();\n this.div = null;\n this.#editors.clear();\n this.#waitingEditors.clear();\n this.#uiManager.removeLayer(this);\n }\n\n __cleanup() {\n this.#isCleaningUp = true;\n\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.remove();\n }\n }\n\n this.#isCleaningUp = false;\n }\n\n render(parameters) {\n this.viewport = parameters.viewport;\n (0, _tools.bindEvents)(this, this.div, [\"dragover\", \"drop\"]);\n this.setDimensions();\n\n for (const editor of this.#uiManager.getEditors(this.pageIndex)) {\n this.add(editor);\n }\n\n this.updateMode();\n }\n\n update(parameters) {\n this.viewport = parameters.viewport;\n this.setDimensions();\n this.updateMode();\n }\n\n get scaleFactor() {\n return this.viewport.scale;\n }\n\n get pageDimensions() {\n const [pageLLx, pageLLy, pageURx, pageURy] = this.viewport.viewBox;\n const width = pageURx - pageLLx;\n const height = pageURy - pageLLy;\n return [width, height];\n }\n\n get viewportBaseDimensions() {\n const {\n width,\n height,\n rotation\n } = this.viewport;\n return rotation % 180 === 0 ? [width, height] : [height, width];\n }\n\n setDimensions() {\n const {\n width,\n height,\n rotation\n } = this.viewport;\n const flipOrientation = rotation % 180 !== 0,\n widthStr = Math.floor(width) + \"px\",\n heightStr = Math.floor(height) + \"px\";\n this.div.style.width = flipOrientation ? heightStr : widthStr;\n this.div.style.height = flipOrientation ? widthStr : heightStr;\n this.div.setAttribute(\"data-main-rotation\", rotation);\n }\n\n}\n\nexports.AnnotationEditorLayer = AnnotationEditorLayer;\n\n/***/ }),\n/* 23 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.FreeTextEditor = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _tools = __w_pdfjs_require__(9);\n\nvar _editor = __w_pdfjs_require__(8);\n\nclass FreeTextEditor extends _editor.AnnotationEditor {\n #boundEditorDivBlur = this.editorDivBlur.bind(this);\n #boundEditorDivFocus = this.editorDivFocus.bind(this);\n #boundEditorDivKeydown = this.editorDivKeydown.bind(this);\n #color;\n #content = \"\";\n #contentHTML = \"\";\n #hasAlreadyBeenCommitted = false;\n #fontSize;\n static _freeTextDefaultContent = \"\";\n static _l10nPromise;\n static _internalPadding = 0;\n static _defaultColor = null;\n static _defaultFontSize = 10;\n static _keyboardManager = new _tools.KeyboardManager([[[\"ctrl+Enter\", \"mac+meta+Enter\", \"Escape\", \"mac+Escape\"], FreeTextEditor.prototype.commitOrRemove]]);\n\n constructor(params) {\n super({ ...params,\n name: \"freeTextEditor\"\n });\n this.#color = params.color || FreeTextEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor;\n this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;\n }\n\n static initialize(l10n) {\n this._l10nPromise = new Map([\"free_text_default_content\", \"editor_free_text_aria_label\"].map(str => [str, l10n.get(str)]));\n const style = getComputedStyle(document.documentElement);\n this._internalPadding = parseFloat(style.getPropertyValue(\"--freetext-padding\"));\n }\n\n static updateDefaultParams(type, value) {\n switch (type) {\n case _util.AnnotationEditorParamsType.FREETEXT_SIZE:\n FreeTextEditor._defaultFontSize = value;\n break;\n\n case _util.AnnotationEditorParamsType.FREETEXT_COLOR:\n FreeTextEditor._defaultColor = value;\n break;\n }\n }\n\n updateParams(type, value) {\n switch (type) {\n case _util.AnnotationEditorParamsType.FREETEXT_SIZE:\n this.__updateFontSize(value);\n break;\n\n case _util.AnnotationEditorParamsType.FREETEXT_COLOR:\n this.__updateColor(value);\n break;\n }\n }\n\n static get defaultPropertiesToUpdate() {\n return [[_util.AnnotationEditorParamsType.FREETEXT_SIZE, FreeTextEditor._defaultFontSize], [_util.AnnotationEditorParamsType.FREETEXT_COLOR, FreeTextEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor]];\n }\n\n get propertiesToUpdate() {\n return [[_util.AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize], [_util.AnnotationEditorParamsType.FREETEXT_COLOR, this.#color]];\n }\n\n __updateFontSize(fontSize) {\n const setFontsize = size => {\n this.editorDiv.style.fontSize = `calc(${size}px * var(--scale-factor))`;\n this.translate(0, -(size - this.#fontSize) * this.parent.scaleFactor);\n this.#fontSize = size;\n this.__setEditorDimensions();\n };\n\n const savedFontsize = this.#fontSize;\n this.parent.addCommands({\n cmd: () => {\n setFontsize(fontSize);\n },\n undo: () => {\n setFontsize(savedFontsize);\n },\n mustExec: true,\n type: _util.AnnotationEditorParamsType.FREETEXT_SIZE,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n\n __updateColor(color) {\n const savedColor = this.#color;\n this.parent.addCommands({\n cmd: () => {\n this.#color = color;\n this.editorDiv.style.color = color;\n },\n undo: () => {\n this.#color = savedColor;\n this.editorDiv.style.color = savedColor;\n },\n mustExec: true,\n type: _util.AnnotationEditorParamsType.FREETEXT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n\n getInitialTranslation() {\n return [-FreeTextEditor._internalPadding * this.parent.scaleFactor, -(FreeTextEditor._internalPadding + this.#fontSize) * this.parent.scaleFactor];\n }\n\n rebuild() {\n super.rebuild();\n\n if (this.div === null) {\n return;\n }\n\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n\n enableEditMode() {\n if (this.isInEditMode()) {\n return;\n }\n\n this.parent.setEditingState(false);\n this.parent.updateToolbar(_util.AnnotationEditorType.FREETEXT);\n super.enableEditMode();\n this.overlayDiv.classList.remove(\"enabled\");\n this.editorDiv.contentEditable = true;\n this.div.draggable = false;\n this.editorDiv.addEventListener(\"keydown\", this.#boundEditorDivKeydown);\n this.editorDiv.addEventListener(\"focus\", this.#boundEditorDivFocus);\n this.editorDiv.addEventListener(\"blur\", this.#boundEditorDivBlur);\n }\n\n disableEditMode() {\n if (!this.isInEditMode()) {\n return;\n }\n\n this.parent.setEditingState(true);\n super.disableEditMode();\n this.overlayDiv.classList.add(\"enabled\");\n this.editorDiv.contentEditable = false;\n this.div.draggable = true;\n this.editorDiv.removeEventListener(\"keydown\", this.#boundEditorDivKeydown);\n this.editorDiv.removeEventListener(\"focus\", this.#boundEditorDivFocus);\n this.editorDiv.removeEventListener(\"blur\", this.#boundEditorDivBlur);\n this.div.focus();\n this.isEditing = false;\n }\n\n focusin(event) {\n super.focusin(event);\n\n if (event.target !== this.editorDiv) {\n this.editorDiv.focus();\n }\n }\n\n onceAdded() {\n if (this.width) {\n return;\n }\n\n this.enableEditMode();\n this.editorDiv.focus();\n }\n\n isEmpty() {\n return !this.editorDiv || this.editorDiv.innerText.trim() === \"\";\n }\n\n remove() {\n this.isEditing = false;\n this.parent.setEditingState(true);\n super.remove();\n }\n\n __extractText() {\n const divs = this.editorDiv.getElementsByTagName(\"div\");\n\n if (divs.length === 0) {\n return this.editorDiv.innerText;\n }\n\n const buffer = [];\n\n for (let i = 0, ii = divs.length; i < ii; i++) {\n const div = divs[i];\n const first = div.firstChild;\n\n if (first?.nodeName === \"#text\") {\n buffer.push(first.data);\n } else {\n buffer.push(\"\");\n }\n }\n\n return buffer.join(\"\\n\");\n }\n\n __setEditorDimensions() {\n const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions;\n const rect = this.div.getBoundingClientRect();\n this.width = rect.width / parentWidth;\n this.height = rect.height / parentHeight;\n }\n\n commit() {\n super.commit();\n\n if (!this.#hasAlreadyBeenCommitted) {\n this.#hasAlreadyBeenCommitted = true;\n this.parent.addUndoableEditor(this);\n }\n\n this.disableEditMode();\n this.#contentHTML = this.editorDiv.innerHTML;\n this.#content = this.__extractText().trimEnd();\n this.__setEditorDimensions();\n }\n\n shouldGetKeyboardEvents() {\n return this.isInEditMode();\n }\n\n dblclick(event) {\n this.enableEditMode();\n this.editorDiv.focus();\n }\n\n keydown(event) {\n if (event.target === this.div && event.key === \"Enter\") {\n this.enableEditMode();\n this.editorDiv.focus();\n }\n }\n\n editorDivKeydown(event) {\n FreeTextEditor._keyboardManager.exec(this, event);\n }\n\n editorDivFocus(event) {\n this.isEditing = true;\n }\n\n editorDivBlur(event) {\n this.isEditing = false;\n }\n\n disableEditing() {\n this.editorDiv.setAttribute(\"role\", \"comment\");\n this.editorDiv.removeAttribute(\"aria-multiline\");\n }\n\n enableEditing() {\n this.editorDiv.setAttribute(\"role\", \"textbox\");\n this.editorDiv.setAttribute(\"aria-multiline\", true);\n }\n\n getIdForTextLayer() {\n return this.editorDiv.id;\n }\n\n render() {\n if (this.div) {\n return this.div;\n }\n\n let baseX, baseY;\n\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n\n super.render();\n this.editorDiv = document.createElement(\"div\");\n this.editorDiv.className = \"internal\";\n this.editorDiv.setAttribute(\"id\", `${this.id}-editor`);\n this.enableEditing();\n\n FreeTextEditor._l10nPromise.get(\"editor_free_text_aria_label\").then(msg => this.editorDiv?.setAttribute(\"aria-label\", msg));\n\n FreeTextEditor._l10nPromise.get(\"free_text_default_content\").then(msg => this.editorDiv?.setAttribute(\"default-content\", msg));\n\n this.editorDiv.contentEditable = true;\n const {\n style\n } = this.editorDiv;\n style.fontSize = `calc(${this.#fontSize}px * var(--scale-factor))`;\n style.color = this.#color;\n this.div.append(this.editorDiv);\n this.overlayDiv = document.createElement(\"div\");\n this.overlayDiv.classList.add(\"overlay\", \"enabled\");\n this.div.append(this.overlayDiv);\n (0, _tools.bindEvents)(this, this.div, [\"dblclick\", \"keydown\"]);\n\n if (this.width) {\n const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions;\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n this.editorDiv.innerHTML = this.#contentHTML;\n this.div.draggable = true;\n this.editorDiv.contentEditable = false;\n } else {\n this.div.draggable = false;\n this.editorDiv.contentEditable = true;\n }\n\n return this.div;\n }\n\n get contentDiv() {\n return this.editorDiv;\n }\n\n static deserialize(data, parent) {\n const editor = super.deserialize(data, parent);\n editor.#fontSize = data.fontSize;\n editor.#color = _util.Util.makeHexColor(...data.color);\n editor.#content = data.value;\n editor.#contentHTML = data.value.split(\"\\n\").map(line => `<div>${line}</div>`).join(\"\");\n return editor;\n }\n\n serialize() {\n if (this.isEmpty()) {\n return null;\n }\n\n const padding = FreeTextEditor._internalPadding * this.parent.scaleFactor;\n const rect = this.getRect(padding, padding);\n\n const color = _editor.AnnotationEditor._colorManager.convert(getComputedStyle(this.editorDiv).color);\n\n return {\n annotationType: _util.AnnotationEditorType.FREETEXT,\n color,\n fontSize: this.#fontSize,\n value: this.#content,\n pageIndex: this.parent.pageIndex,\n rect,\n rotation: this.rotation\n };\n }\n\n}\n\nexports.FreeTextEditor = FreeTextEditor;\n\n/***/ }),\n/* 24 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.InkEditor = void 0;\nObject.defineProperty(exports, \"fitCurve\", ({\n enumerable: true,\n get: function () {\n return _pdfjsFitCurve.fitCurve;\n }\n}));\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _editor = __w_pdfjs_require__(8);\n\nvar _pdfjsFitCurve = __w_pdfjs_require__(25);\n\nvar _tools = __w_pdfjs_require__(9);\n\nconst RESIZER_SIZE = 16;\n\nclass InkEditor extends _editor.AnnotationEditor {\n #aspectRatio = 0;\n #baseHeight = 0;\n #baseWidth = 0;\n #boundCanvasPointermove = this.canvasPointermove.bind(this);\n #boundCanvasPointerleave = this.canvasPointerleave.bind(this);\n #boundCanvasPointerup = this.canvasPointerup.bind(this);\n #boundCanvasPointerdown = this.canvasPointerdown.bind(this);\n #disableEditing = false;\n #isCanvasInitialized = false;\n #lastPoint = null;\n #observer = null;\n #realWidth = 0;\n #realHeight = 0;\n #requestFrameCallback = null;\n static _defaultColor = null;\n static _defaultOpacity = 1;\n static _defaultThickness = 1;\n static _l10nPromise;\n\n constructor(params) {\n super({ ...params,\n name: \"inkEditor\"\n });\n this.color = params.color || null;\n this.thickness = params.thickness || null;\n this.opacity = params.opacity || null;\n this.paths = [];\n this.bezierPath2D = [];\n this.currentPath = [];\n this.scaleFactor = 1;\n this.translationX = this.translationY = 0;\n this.x = 0;\n this.y = 0;\n }\n\n static initialize(l10n) {\n this._l10nPromise = new Map([\"editor_ink_canvas_aria_label\", \"editor_ink_aria_label\"].map(str => [str, l10n.get(str)]));\n }\n\n static updateDefaultParams(type, value) {\n switch (type) {\n case _util.AnnotationEditorParamsType.INK_THICKNESS:\n InkEditor._defaultThickness = value;\n break;\n\n case _util.AnnotationEditorParamsType.INK_COLOR:\n InkEditor._defaultColor = value;\n break;\n\n case _util.AnnotationEditorParamsType.INK_OPACITY:\n InkEditor._defaultOpacity = value / 100;\n break;\n }\n }\n\n updateParams(type, value) {\n switch (type) {\n case _util.AnnotationEditorParamsType.INK_THICKNESS:\n this.__updateThickness(value);\n break;\n\n case _util.AnnotationEditorParamsType.INK_COLOR:\n this.__updateColor(value);\n break;\n\n case _util.AnnotationEditorParamsType.INK_OPACITY:\n this.__updateOpacity(value);\n break;\n }\n }\n\n static get defaultPropertiesToUpdate() {\n return [[_util.AnnotationEditorParamsType.INK_THICKNESS, InkEditor._defaultThickness], [_util.AnnotationEditorParamsType.INK_COLOR, InkEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor], [_util.AnnotationEditorParamsType.INK_OPACITY, Math.round(InkEditor._defaultOpacity * 100)]];\n }\n\n get propertiesToUpdate() {\n return [[_util.AnnotationEditorParamsType.INK_THICKNESS, this.thickness || InkEditor._defaultThickness], [_util.AnnotationEditorParamsType.INK_COLOR, this.color || InkEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor], [_util.AnnotationEditorParamsType.INK_OPACITY, Math.round(100 * (this.opacity ?? InkEditor._defaultOpacity))]];\n }\n\n __updateThickness(thickness) {\n const savedThickness = this.thickness;\n this.parent.addCommands({\n cmd: () => {\n this.thickness = thickness;\n this.__fitToContent();\n },\n undo: () => {\n this.thickness = savedThickness;\n this.__fitToContent();\n },\n mustExec: true,\n type: _util.AnnotationEditorParamsType.INK_THICKNESS,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n\n __updateColor(color) {\n const savedColor = this.color;\n this.parent.addCommands({\n cmd: () => {\n this.color = color;\n this.__redraw();\n },\n undo: () => {\n this.color = savedColor;\n this.__redraw();\n },\n mustExec: true,\n type: _util.AnnotationEditorParamsType.INK_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n\n __updateOpacity(opacity) {\n opacity /= 100;\n const savedOpacity = this.opacity;\n this.parent.addCommands({\n cmd: () => {\n this.opacity = opacity;\n this.__redraw();\n },\n undo: () => {\n this.opacity = savedOpacity;\n this.__redraw();\n },\n mustExec: true,\n type: _util.AnnotationEditorParamsType.INK_OPACITY,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n\n rebuild() {\n super.rebuild();\n\n if (this.div === null) {\n return;\n }\n\n if (!this.canvas) {\n this.__createCanvas();\n this.__createObserver();\n }\n\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n this.__setCanvasDims();\n }\n\n this.__fitToContent();\n }\n\n remove() {\n if (this.canvas === null) {\n return;\n }\n\n if (!this.isEmpty()) {\n this.commit();\n }\n\n this.canvas.width = this.canvas.height = 0;\n this.canvas.remove();\n this.canvas = null;\n this.#observer.disconnect();\n this.#observer = null;\n super.remove();\n }\n\n enableEditMode() {\n if (this.#disableEditing || this.canvas === null) {\n return;\n }\n\n super.enableEditMode();\n this.div.draggable = false;\n this.canvas.addEventListener(\"pointerdown\", this.#boundCanvasPointerdown);\n this.canvas.addEventListener(\"pointerup\", this.#boundCanvasPointerup);\n }\n\n disableEditMode() {\n if (!this.isInEditMode() || this.canvas === null) {\n return;\n }\n\n super.disableEditMode();\n this.div.draggable = !this.isEmpty();\n this.div.classList.remove(\"editing\");\n this.canvas.removeEventListener(\"pointerdown\", this.#boundCanvasPointerdown);\n this.canvas.removeEventListener(\"pointerup\", this.#boundCanvasPointerup);\n }\n\n onceAdded() {\n this.div.draggable = !this.isEmpty();\n }\n\n isEmpty() {\n return this.paths.length === 0 || this.paths.length === 1 && this.paths[0].length === 0;\n }\n\n __getInitialBBox() {\n const {\n width,\n height,\n rotation\n } = this.parent.viewport;\n\n switch (rotation) {\n case 90:\n return [0, width, width, height];\n\n case 180:\n return [width, height, width, height];\n\n case 270:\n return [height, 0, width, height];\n\n default:\n return [0, 0, width, height];\n }\n }\n\n __setStroke() {\n this.ctx.lineWidth = this.thickness * this.parent.scaleFactor / this.scaleFactor;\n this.ctx.lineCap = \"round\";\n this.ctx.lineJoin = \"round\";\n this.ctx.miterLimit = 10;\n this.ctx.strokeStyle = `${this.color}${(0, _tools.opacityToHex)(this.opacity)}`;\n }\n\n __startDrawing(x, y) {\n this.isEditing = true;\n\n if (!this.#isCanvasInitialized) {\n this.#isCanvasInitialized = true;\n this.__setCanvasDims();\n this.thickness ||= InkEditor._defaultThickness;\n this.color ||= InkEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor;\n this.opacity ??= InkEditor._defaultOpacity;\n }\n\n this.currentPath.push([x, y]);\n this.#lastPoint = null;\n this.__setStroke();\n this.ctx.beginPath();\n this.ctx.moveTo(x, y);\n\n this.#requestFrameCallback = () => {\n if (!this.#requestFrameCallback) {\n return;\n }\n\n if (this.#lastPoint) {\n if (this.isEmpty()) {\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n } else {\n this.__redraw();\n }\n\n this.ctx.lineTo(...this.#lastPoint);\n this.#lastPoint = null;\n this.ctx.stroke();\n }\n\n window.requestAnimationFrame(this.#requestFrameCallback);\n };\n\n window.requestAnimationFrame(this.#requestFrameCallback);\n }\n\n __draw(x, y) {\n const [lastX, lastY] = this.currentPath.at(-1);\n\n if (x === lastX && y === lastY) {\n return;\n }\n\n this.currentPath.push([x, y]);\n this.#lastPoint = [x, y];\n }\n\n __stopDrawing(x, y) {\n this.ctx.closePath();\n this.#requestFrameCallback = null;\n x = Math.min(Math.max(x, 0), this.canvas.width);\n y = Math.min(Math.max(y, 0), this.canvas.height);\n const [lastX, lastY] = this.currentPath.at(-1);\n\n if (x !== lastX || y !== lastY) {\n this.currentPath.push([x, y]);\n }\n\n let bezier;\n\n if (this.currentPath.length !== 1) {\n bezier = (0, _pdfjsFitCurve.fitCurve)(this.currentPath, 30, null);\n } else {\n const xy = [x, y];\n bezier = [[xy, xy.slice(), xy.slice(), xy]];\n }\n\n const path2D = InkEditor.__buildPath2D(bezier);\n this.currentPath.length = 0;\n\n const cmd = () => {\n this.paths.push(bezier);\n this.bezierPath2D.push(path2D);\n this.rebuild();\n };\n\n const undo = () => {\n this.paths.pop();\n this.bezierPath2D.pop();\n\n if (this.paths.length === 0) {\n this.remove();\n } else {\n if (!this.canvas) {\n this.__createCanvas();\n this.__createObserver();\n }\n\n this.__fitToContent();\n }\n };\n\n this.parent.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n\n __redraw() {\n if (this.isEmpty()) {\n this.__updateTransform();\n return;\n }\n\n this.__setStroke();\n const {\n canvas,\n ctx\n } = this;\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n this.__updateTransform();\n\n for (const path of this.bezierPath2D) {\n ctx.stroke(path);\n }\n }\n\n commit() {\n if (this.#disableEditing) {\n return;\n }\n\n super.commit();\n this.isEditing = false;\n this.disableEditMode();\n this.setInForeground();\n this.#disableEditing = true;\n this.div.classList.add(\"disabled\");\n this.__fitToContent(true);\n this.parent.addInkEditorIfNeeded(true);\n this.parent.moveDivInDOM(this);\n this.div.focus();\n }\n\n focusin(event) {\n super.focusin(event);\n this.enableEditMode();\n }\n\n canvasPointerdown(event) {\n if (event.button !== 0 || !this.isInEditMode() || this.#disableEditing) {\n return;\n }\n\n this.setInForeground();\n\n if (event.type !== \"mouse\") {\n this.div.focus();\n }\n\n event.stopPropagation();\n this.canvas.addEventListener(\"pointerleave\", this.#boundCanvasPointerleave);\n this.canvas.addEventListener(\"pointermove\", this.#boundCanvasPointermove);\n this.__startDrawing(event.offsetX, event.offsetY);\n }\n\n canvasPointermove(event) {\n event.stopPropagation();\n this.__draw(event.offsetX, event.offsetY);\n }\n\n canvasPointerup(event) {\n if (event.button !== 0) {\n return;\n }\n\n if (this.isInEditMode() && this.currentPath.length !== 0) {\n event.stopPropagation();\n this.__endDrawing(event);\n this.setInBackground();\n }\n }\n\n canvasPointerleave(event) {\n this.__endDrawing(event);\n this.setInBackground();\n }\n\n __endDrawing(event) {\n this.__stopDrawing(event.offsetX, event.offsetY);\n this.canvas.removeEventListener(\"pointerleave\", this.#boundCanvasPointerleave);\n this.canvas.removeEventListener(\"pointermove\", this.#boundCanvasPointermove);\n this.parent.addToAnnotationStorage(this);\n }\n\n __createCanvas() {\n this.canvas = document.createElement(\"canvas\");\n this.canvas.width = this.canvas.height = 0;\n this.canvas.className = \"inkEditorCanvas\";\n\n InkEditor._l10nPromise.get(\"editor_ink_canvas_aria_label\").then(msg => this.canvas?.setAttribute(\"aria-label\", msg));\n\n this.div.append(this.canvas);\n this.ctx = this.canvas.getContext(\"2d\");\n }\n\n __createObserver() {\n this.#observer = new ResizeObserver(entries => {\n const rect = entries[0].contentRect;\n\n if (rect.width && rect.height) {\n this.setDimensions(rect.width, rect.height);\n }\n });\n this.#observer.observe(this.div);\n }\n\n render() {\n if (this.div) {\n return this.div;\n }\n\n let baseX, baseY;\n\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n\n super.render();\n\n InkEditor._l10nPromise.get(\"editor_ink_aria_label\").then(msg => this.div?.setAttribute(\"aria-label\", msg));\n\n const [x, y, w, h] = this.__getInitialBBox();\n this.setAt(x, y, 0, 0);\n this.setDims(w, h);\n this.__createCanvas();\n\n if (this.width) {\n const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions;\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n this.#isCanvasInitialized = true;\n this.__setCanvasDims();\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n this.__redraw();\n this.__setMinDims();\n this.div.classList.add(\"disabled\");\n } else {\n this.div.classList.add(\"editing\");\n this.enableEditMode();\n }\n\n this.__createObserver();\n return this.div;\n }\n\n __setCanvasDims() {\n if (!this.#isCanvasInitialized) {\n return;\n }\n\n const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions;\n this.canvas.width = Math.ceil(this.width * parentWidth);\n this.canvas.height = Math.ceil(this.height * parentHeight);\n this.__updateTransform();\n }\n\n setDimensions(width, height) {\n const roundedWidth = Math.round(width);\n const roundedHeight = Math.round(height);\n\n if (this.#realWidth === roundedWidth && this.#realHeight === roundedHeight) {\n return;\n }\n\n this.#realWidth = roundedWidth;\n this.#realHeight = roundedHeight;\n this.canvas.style.visibility = \"hidden\";\n\n if (this.#aspectRatio && Math.abs(this.#aspectRatio - width / height) > 1e-2) {\n height = Math.ceil(width / this.#aspectRatio);\n this.setDims(width, height);\n }\n\n const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n\n if (this.#disableEditing) {\n this.__setScaleFactor(width, height);\n }\n\n this.__setCanvasDims();\n this.__redraw();\n this.canvas.style.visibility = \"visible\";\n }\n\n __setScaleFactor(width, height) {\n const padding = this.__getPadding();\n const scaleFactorW = (width - padding) / this.#baseWidth;\n const scaleFactorH = (height - padding) / this.#baseHeight;\n this.scaleFactor = Math.min(scaleFactorW, scaleFactorH);\n }\n\n __updateTransform() {\n const padding = this.__getPadding() / 2;\n this.ctx.setTransform(this.scaleFactor, 0, 0, this.scaleFactor, this.translationX * this.scaleFactor + padding, this.translationY * this.scaleFactor + padding);\n }\n\n static __buildPath2D(bezier) {\n const path2D = new Path2D();\n\n for (let i = 0, ii = bezier.length; i < ii; i++) {\n const [first, control1, control2, second] = bezier[i];\n\n if (i === 0) {\n path2D.moveTo(...first);\n }\n\n path2D.bezierCurveTo(control1[0], control1[1], control2[0], control2[1], second[0], second[1]);\n }\n\n return path2D;\n }\n\n __serializePaths(s, tx, ty, h) {\n const NUMBER_OF_POINTS_ON_BEZIER_CURVE = 4;\n const paths = [];\n const padding = this.thickness / 2;\n let buffer, points;\n\n for (const bezier of this.paths) {\n buffer = [];\n points = [];\n\n for (let i = 0, ii = bezier.length; i < ii; i++) {\n const [first, control1, control2, second] = bezier[i];\n const p10 = s * (first[0] + tx) + padding;\n const p11 = h - s * (first[1] + ty) - padding;\n const p20 = s * (control1[0] + tx) + padding;\n const p21 = h - s * (control1[1] + ty) - padding;\n const p30 = s * (control2[0] + tx) + padding;\n const p31 = h - s * (control2[1] + ty) - padding;\n const p40 = s * (second[0] + tx) + padding;\n const p41 = h - s * (second[1] + ty) - padding;\n\n if (i === 0) {\n buffer.push(p10, p11);\n points.push(p10, p11);\n }\n\n buffer.push(p20, p21, p30, p31, p40, p41);\n this.__extractPointsOnBezier(p10, p11, p20, p21, p30, p31, p40, p41, NUMBER_OF_POINTS_ON_BEZIER_CURVE, points);\n }\n\n paths.push({\n bezier: buffer,\n points\n });\n }\n\n return paths;\n }\n\n __extractPointsOnBezier(p10, p11, p20, p21, p30, p31, p40, p41, n, points) {\n if (this.__isAlmostFlat(p10, p11, p20, p21, p30, p31, p40, p41)) {\n points.push(p40, p41);\n return;\n }\n\n for (let i = 1; i < n - 1; i++) {\n const t = i / n;\n const mt = 1 - t;\n let q10 = t * p10 + mt * p20;\n let q11 = t * p11 + mt * p21;\n let q20 = t * p20 + mt * p30;\n let q21 = t * p21 + mt * p31;\n const q30 = t * p30 + mt * p40;\n const q31 = t * p31 + mt * p41;\n q10 = t * q10 + mt * q20;\n q11 = t * q11 + mt * q21;\n q20 = t * q20 + mt * q30;\n q21 = t * q21 + mt * q31;\n q10 = t * q10 + mt * q20;\n q11 = t * q11 + mt * q21;\n points.push(q10, q11);\n }\n\n points.push(p40, p41);\n }\n\n __isAlmostFlat(p10, p11, p20, p21, p30, p31, p40, p41) {\n const tol = 10;\n const ax = (3 * p20 - 2 * p10 - p40) ** 2;\n const ay = (3 * p21 - 2 * p11 - p41) ** 2;\n const bx = (3 * p30 - p10 - 2 * p40) ** 2;\n const by = (3 * p31 - p11 - 2 * p41) ** 2;\n return Math.max(ax, bx) + Math.max(ay, by) <= tol;\n }\n\n __getBbox() {\n let xMin = Infinity;\n let xMax = -Infinity;\n let yMin = Infinity;\n let yMax = -Infinity;\n\n for (const path of this.paths) {\n for (const [first, control1, control2, second] of path) {\n const bbox = _util.Util.bezierBoundingBox(...first, ...control1, ...control2, ...second);\n\n xMin = Math.min(xMin, bbox[0]);\n yMin = Math.min(yMin, bbox[1]);\n xMax = Math.max(xMax, bbox[2]);\n yMax = Math.max(yMax, bbox[3]);\n }\n }\n\n return [xMin, yMin, xMax, yMax];\n }\n\n __getPadding() {\n return this.#disableEditing ? Math.ceil(this.thickness * this.parent.scaleFactor) : 0;\n }\n\n __fitToContent(firstTime = false) {\n if (this.isEmpty()) {\n return;\n }\n\n if (!this.#disableEditing) {\n this.__redraw();\n return;\n }\n\n const bbox = this.__getBbox();\n const padding = this.__getPadding();\n this.#baseWidth = Math.max(RESIZER_SIZE, bbox[2] - bbox[0]);\n this.#baseHeight = Math.max(RESIZER_SIZE, bbox[3] - bbox[1]);\n const width = Math.ceil(padding + this.#baseWidth * this.scaleFactor);\n const height = Math.ceil(padding + this.#baseHeight * this.scaleFactor);\n const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n this.#aspectRatio = width / height;\n this.__setMinDims();\n const prevTranslationX = this.translationX;\n const prevTranslationY = this.translationY;\n this.translationX = -bbox[0];\n this.translationY = -bbox[1];\n this.__setCanvasDims();\n this.__redraw();\n this.#realWidth = width;\n this.#realHeight = height;\n this.setDims(width, height);\n const unscaledPadding = firstTime ? padding / this.scaleFactor / 2 : 0;\n this.translate(prevTranslationX - this.translationX - unscaledPadding, prevTranslationY - this.translationY - unscaledPadding);\n }\n\n __setMinDims() {\n const {\n style\n } = this.div;\n\n if (this.#aspectRatio >= 1) {\n style.minHeight = `${RESIZER_SIZE}px`;\n style.minWidth = `${Math.round(this.#aspectRatio * RESIZER_SIZE)}px`;\n } else {\n style.minWidth = `${RESIZER_SIZE}px`;\n style.minHeight = `${Math.round(RESIZER_SIZE / this.#aspectRatio)}px`;\n }\n }\n\n static deserialize(data, parent) {\n const editor = super.deserialize(data, parent);\n editor.thickness = data.thickness;\n editor.color = _util.Util.makeHexColor(...data.color);\n editor.opacity = data.opacity;\n const [pageWidth, pageHeight] = parent.pageDimensions;\n const width = editor.width * pageWidth;\n const height = editor.height * pageHeight;\n const scaleFactor = parent.scaleFactor;\n const padding = data.thickness / 2;\n editor.#aspectRatio = width / height;\n editor.#disableEditing = true;\n editor.#realWidth = Math.round(width);\n editor.#realHeight = Math.round(height);\n\n for (const {\n bezier\n } of data.paths) {\n const path = [];\n editor.paths.push(path);\n let p0 = scaleFactor * (bezier[0] - padding);\n let p1 = scaleFactor * (height - bezier[1] - padding);\n\n for (let i = 2, ii = bezier.length; i < ii; i += 6) {\n const p10 = scaleFactor * (bezier[i] - padding);\n const p11 = scaleFactor * (height - bezier[i + 1] - padding);\n const p20 = scaleFactor * (bezier[i + 2] - padding);\n const p21 = scaleFactor * (height - bezier[i + 3] - padding);\n const p30 = scaleFactor * (bezier[i + 4] - padding);\n const p31 = scaleFactor * (height - bezier[i + 5] - padding);\n path.push([[p0, p1], [p10, p11], [p20, p21], [p30, p31]]);\n p0 = p30;\n p1 = p31;\n }\n\n const path2D = this.__buildPath2D(path);\n editor.bezierPath2D.push(path2D);\n }\n\n const bbox = editor.__getBbox();\n editor.#baseWidth = bbox[2] - bbox[0];\n editor.#baseHeight = bbox[3] - bbox[1];\n editor.__setScaleFactor(width, height);\n return editor;\n }\n\n serialize() {\n if (this.isEmpty()) {\n return null;\n }\n\n const rect = this.getRect(0, 0);\n const height = this.rotation % 180 === 0 ? rect[3] - rect[1] : rect[2] - rect[0];\n\n const color = _editor.AnnotationEditor._colorManager.convert(this.ctx.strokeStyle);\n\n return {\n annotationType: _util.AnnotationEditorType.INK,\n color,\n thickness: this.thickness,\n opacity: this.opacity,\n paths: this.__serializePaths(this.scaleFactor / this.parent.scaleFactor, this.translationX, this.translationY, height),\n pageIndex: this.parent.pageIndex,\n rect,\n rotation: this.rotation\n };\n }\n\n}\n\nexports.InkEditor = InkEditor;\n\n/***/ }),\n/* 25 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.fitCurve = void 0;\n\nconst fitCurve = __w_pdfjs_require__(26);\n\nexports.fitCurve = fitCurve;\n\n/***/ }),\n/* 26 */\n/***/ ((module) => {\n\n\n\nfunction fitCurve(points, maxError, progressCallback) {\n if (!Array.isArray(points)) {\n throw new TypeError(\"First argument should be an array\");\n }\n\n points.forEach(point => {\n if (!Array.isArray(point) || point.some(item => typeof item !== 'number') || point.length !== points[0].length) {\n throw Error(\"Each point should be an array of numbers. Each point should have the same amount of numbers.\");\n }\n });\n points = points.filter((point, i) => i === 0 || !point.every((val, j) => val === points[i - 1][j]));\n\n if (points.length < 2) {\n return [];\n }\n\n const len = points.length;\n const leftTangent = createTangent(points[1], points[0]);\n const rightTangent = createTangent(points[len - 2], points[len - 1]);\n return fitCubic(points, leftTangent, rightTangent, maxError, progressCallback);\n}\n\nfunction fitCubic(points, leftTangent, rightTangent, error, progressCallback) {\n const MaxIterations = 20;\n var bezCurve, u, uPrime, maxError, prevErr, splitPoint, prevSplit, centerVector, toCenterTangent, fromCenterTangent, beziers, dist, i;\n\n if (points.length === 2) {\n dist = maths.vectorLen(maths.subtract(points[0], points[1])) / 3.0;\n bezCurve = [points[0], maths.addArrays(points[0], maths.mulItems(leftTangent, dist)), maths.addArrays(points[1], maths.mulItems(rightTangent, dist)), points[1]];\n return [bezCurve];\n }\n\n u = chordLengthParameterize(points);\n [bezCurve, maxError, splitPoint] = generateAndReport(points, u, u, leftTangent, rightTangent, progressCallback);\n\n if (maxError === 0 || maxError < error) {\n return [bezCurve];\n }\n\n if (maxError < error * error) {\n uPrime = u;\n prevErr = maxError;\n prevSplit = splitPoint;\n\n for (i = 0; i < MaxIterations; i++) {\n uPrime = reparameterize(bezCurve, points, uPrime);\n [bezCurve, maxError, splitPoint] = generateAndReport(points, u, uPrime, leftTangent, rightTangent, progressCallback);\n\n if (maxError < error) {\n return [bezCurve];\n } else if (splitPoint === prevSplit) {\n let errChange = maxError / prevErr;\n\n if (errChange > .9999 && errChange < 1.0001) {\n break;\n }\n }\n\n prevErr = maxError;\n prevSplit = splitPoint;\n }\n }\n\n beziers = [];\n centerVector = maths.subtract(points[splitPoint - 1], points[splitPoint + 1]);\n\n if (centerVector.every(val => val === 0)) {\n centerVector = maths.subtract(points[splitPoint - 1], points[splitPoint]);\n [centerVector[0], centerVector[1]] = [-centerVector[1], centerVector[0]];\n }\n\n toCenterTangent = maths.normalize(centerVector);\n fromCenterTangent = maths.mulItems(toCenterTangent, -1);\n beziers = beziers.concat(fitCubic(points.slice(0, splitPoint + 1), leftTangent, toCenterTangent, error, progressCallback));\n beziers = beziers.concat(fitCubic(points.slice(splitPoint), fromCenterTangent, rightTangent, error, progressCallback));\n return beziers;\n}\n\n;\n\nfunction generateAndReport(points, paramsOrig, paramsPrime, leftTangent, rightTangent, progressCallback) {\n var bezCurve, maxError, splitPoint;\n bezCurve = generateBezier(points, paramsPrime, leftTangent, rightTangent, progressCallback);\n [maxError, splitPoint] = computeMaxError(points, bezCurve, paramsOrig);\n\n if (progressCallback) {\n progressCallback({\n bez: bezCurve,\n points: points,\n params: paramsOrig,\n maxErr: maxError,\n maxPoint: splitPoint\n });\n }\n\n return [bezCurve, maxError, splitPoint];\n}\n\nfunction generateBezier(points, parameters, leftTangent, rightTangent) {\n var bezCurve,\n A,\n a,\n C,\n X,\n det_C0_C1,\n det_C0_X,\n det_X_C1,\n alpha_l,\n alpha_r,\n epsilon,\n segLength,\n i,\n len,\n tmp,\n u,\n ux,\n firstPoint = points[0],\n lastPoint = points[points.length - 1];\n bezCurve = [firstPoint, null, null, lastPoint];\n A = maths.zeros_Xx2x2(parameters.length);\n\n for (i = 0, len = parameters.length; i < len; i++) {\n u = parameters[i];\n ux = 1 - u;\n a = A[i];\n a[0] = maths.mulItems(leftTangent, 3 * u * (ux * ux));\n a[1] = maths.mulItems(rightTangent, 3 * ux * (u * u));\n }\n\n C = [[0, 0], [0, 0]];\n X = [0, 0];\n\n for (i = 0, len = points.length; i < len; i++) {\n u = parameters[i];\n a = A[i];\n C[0][0] += maths.dot(a[0], a[0]);\n C[0][1] += maths.dot(a[0], a[1]);\n C[1][0] += maths.dot(a[0], a[1]);\n C[1][1] += maths.dot(a[1], a[1]);\n tmp = maths.subtract(points[i], bezier.q([firstPoint, firstPoint, lastPoint, lastPoint], u));\n X[0] += maths.dot(a[0], tmp);\n X[1] += maths.dot(a[1], tmp);\n }\n\n det_C0_C1 = C[0][0] * C[1][1] - C[1][0] * C[0][1];\n det_C0_X = C[0][0] * X[1] - C[1][0] * X[0];\n det_X_C1 = X[0] * C[1][1] - X[1] * C[0][1];\n alpha_l = det_C0_C1 === 0 ? 0 : det_X_C1 / det_C0_C1;\n alpha_r = det_C0_C1 === 0 ? 0 : det_C0_X / det_C0_C1;\n segLength = maths.vectorLen(maths.subtract(firstPoint, lastPoint));\n epsilon = 1.0e-6 * segLength;\n\n if (alpha_l < epsilon || alpha_r < epsilon) {\n bezCurve[1] = maths.addArrays(firstPoint, maths.mulItems(leftTangent, segLength / 3.0));\n bezCurve[2] = maths.addArrays(lastPoint, maths.mulItems(rightTangent, segLength / 3.0));\n } else {\n bezCurve[1] = maths.addArrays(firstPoint, maths.mulItems(leftTangent, alpha_l));\n bezCurve[2] = maths.addArrays(lastPoint, maths.mulItems(rightTangent, alpha_r));\n }\n\n return bezCurve;\n}\n\n;\n\nfunction reparameterize(bezier, points, parameters) {\n return parameters.map((p, i) => newtonRaphsonRootFind(bezier, points[i], p));\n}\n\n;\n\nfunction newtonRaphsonRootFind(bez, point, u) {\n var d = maths.subtract(bezier.q(bez, u), point),\n qprime = bezier.qprime(bez, u),\n numerator = maths.mulMatrix(d, qprime),\n denominator = maths.sum(maths.squareItems(qprime)) + 2 * maths.mulMatrix(d, bezier.qprimeprime(bez, u));\n\n if (denominator === 0) {\n return u;\n } else {\n return u - numerator / denominator;\n }\n}\n\n;\n\nfunction chordLengthParameterize(points) {\n var u = [],\n currU,\n prevU,\n prevP;\n points.forEach((p, i) => {\n currU = i ? prevU + maths.vectorLen(maths.subtract(p, prevP)) : 0;\n u.push(currU);\n prevU = currU;\n prevP = p;\n });\n u = u.map(x => x / prevU);\n return u;\n}\n\n;\n\nfunction computeMaxError(points, bez, parameters) {\n var dist, maxDist, splitPoint, v, i, count, point, t;\n maxDist = 0;\n splitPoint = Math.floor(points.length / 2);\n const t_distMap = mapTtoRelativeDistances(bez, 10);\n\n for (i = 0, count = points.length; i < count; i++) {\n point = points[i];\n t = find_t(bez, parameters[i], t_distMap, 10);\n v = maths.subtract(bezier.q(bez, t), point);\n dist = v[0] * v[0] + v[1] * v[1];\n\n if (dist > maxDist) {\n maxDist = dist;\n splitPoint = i;\n }\n }\n\n return [maxDist, splitPoint];\n}\n\n;\n\nvar mapTtoRelativeDistances = function (bez, B_parts) {\n var B_t_curr;\n var B_t_dist = [0];\n var B_t_prev = bez[0];\n var sumLen = 0;\n\n for (var i = 1; i <= B_parts; i++) {\n B_t_curr = bezier.q(bez, i / B_parts);\n sumLen += maths.vectorLen(maths.subtract(B_t_curr, B_t_prev));\n B_t_dist.push(sumLen);\n B_t_prev = B_t_curr;\n }\n\n B_t_dist = B_t_dist.map(x => x / sumLen);\n return B_t_dist;\n};\n\nfunction find_t(bez, param, t_distMap, B_parts) {\n if (param < 0) {\n return 0;\n }\n\n if (param > 1) {\n return 1;\n }\n\n var lenMax, lenMin, tMax, tMin, t;\n\n for (var i = 1; i <= B_parts; i++) {\n if (param <= t_distMap[i]) {\n tMin = (i - 1) / B_parts;\n tMax = i / B_parts;\n lenMin = t_distMap[i - 1];\n lenMax = t_distMap[i];\n t = (param - lenMin) / (lenMax - lenMin) * (tMax - tMin) + tMin;\n break;\n }\n }\n\n return t;\n}\n\nfunction createTangent(pointA, pointB) {\n return maths.normalize(maths.subtract(pointA, pointB));\n}\n\nclass maths {\n static zeros_Xx2x2(x) {\n var zs = [];\n\n while (x--) {\n zs.push([0, 0]);\n }\n\n return zs;\n }\n\n static mulItems(items, multiplier) {\n return items.map(x => x * multiplier);\n }\n\n static mulMatrix(m1, m2) {\n return m1.reduce((sum, x1, i) => sum + x1 * m2[i], 0);\n }\n\n static subtract(arr1, arr2) {\n return arr1.map((x1, i) => x1 - arr2[i]);\n }\n\n static addArrays(arr1, arr2) {\n return arr1.map((x1, i) => x1 + arr2[i]);\n }\n\n static addItems(items, addition) {\n return items.map(x => x + addition);\n }\n\n static sum(items) {\n return items.reduce((sum, x) => sum + x);\n }\n\n static dot(m1, m2) {\n return maths.mulMatrix(m1, m2);\n }\n\n static vectorLen(v) {\n return Math.hypot(...v);\n }\n\n static divItems(items, divisor) {\n return items.map(x => x / divisor);\n }\n\n static squareItems(items) {\n return items.map(x => x * x);\n }\n\n static normalize(v) {\n return this.divItems(v, this.vectorLen(v));\n }\n\n}\n\nclass bezier {\n static q(ctrlPoly, t) {\n var tx = 1.0 - t;\n var pA = maths.mulItems(ctrlPoly[0], tx * tx * tx),\n pB = maths.mulItems(ctrlPoly[1], 3 * tx * tx * t),\n pC = maths.mulItems(ctrlPoly[2], 3 * tx * t * t),\n pD = maths.mulItems(ctrlPoly[3], t * t * t);\n return maths.addArrays(maths.addArrays(pA, pB), maths.addArrays(pC, pD));\n }\n\n static qprime(ctrlPoly, t) {\n var tx = 1.0 - t;\n var pA = maths.mulItems(maths.subtract(ctrlPoly[1], ctrlPoly[0]), 3 * tx * tx),\n pB = maths.mulItems(maths.subtract(ctrlPoly[2], ctrlPoly[1]), 6 * tx * t),\n pC = maths.mulItems(maths.subtract(ctrlPoly[3], ctrlPoly[2]), 3 * t * t);\n return maths.addArrays(maths.addArrays(pA, pB), pC);\n }\n\n static qprimeprime(ctrlPoly, t) {\n return maths.addArrays(maths.mulItems(maths.addArrays(maths.subtract(ctrlPoly[2], maths.mulItems(ctrlPoly[1], 2)), ctrlPoly[0]), 6 * (1.0 - t)), maths.mulItems(maths.addArrays(maths.subtract(ctrlPoly[3], maths.mulItems(ctrlPoly[2], 2)), ctrlPoly[1]), 6 * t));\n }\n\n}\n\nmodule.exports = fitCurve;\nmodule.exports.fitCubic = fitCubic;\nmodule.exports.createTangent = createTangent;\n\n/***/ }),\n/* 27 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.AnnotationLayer = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _display_utils = __w_pdfjs_require__(4);\n\nvar _annotation_storage = __w_pdfjs_require__(7);\n\nvar _scripting_utils = __w_pdfjs_require__(28);\n\nvar _xfa_layer = __w_pdfjs_require__(29);\n\nconst DEFAULT_TAB_INDEX = 1000;\nconst DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\n\nfunction getRectDims(rect) {\n return {\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n}\n\nclass AnnotationElementFactory {\n static create(parameters) {\n const subtype = parameters.data.annotationType;\n\n switch (subtype) {\n case _util.AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n\n case _util.AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n\n case _util.AnnotationType.WIDGET:\n const fieldType = parameters.data.fieldType;\n\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotationElement(parameters);\n\n case \"Btn\":\n if (parameters.data.radioButton) {\n return new RadioButtonWidgetAnnotationElement(parameters);\n } else if (parameters.data.checkBox) {\n return new CheckboxWidgetAnnotationElement(parameters);\n }\n\n return new PushButtonWidgetAnnotationElement(parameters);\n\n case \"Ch\":\n return new ChoiceWidgetAnnotationElement(parameters);\n }\n\n return new WidgetAnnotationElement(parameters);\n\n case _util.AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n\n case _util.AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n\n case _util.AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n\n case _util.AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n\n case _util.AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n\n case _util.AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n\n case _util.AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n\n case _util.AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n\n case _util.AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n\n case _util.AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n\n case _util.AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n\n case _util.AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n\n case _util.AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n\n case _util.AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n\n case _util.AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n\n default:\n return new AnnotationElement(parameters);\n }\n }\n\n}\n\nclass AnnotationElement {\n constructor(parameters, {\n isRenderable = false,\n ignoreBorder = false,\n createQuadrilaterals = false\n } = {}) {\n this.isRenderable = isRenderable;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.page = parameters.page;\n this.viewport = parameters.viewport;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.renderForms = parameters.renderForms;\n this.svgFactory = parameters.svgFactory;\n this.annotationStorage = parameters.annotationStorage;\n this.enableScripting = parameters.enableScripting;\n this.hasJSActions = parameters.hasJSActions;\n this._fieldObjects = parameters.fieldObjects;\n this._mouseState = parameters.mouseState;\n\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n\n if (createQuadrilaterals) {\n this.quadrilaterals = this._createQuadrilaterals(ignoreBorder);\n }\n }\n\n _createContainer(ignoreBorder = false) {\n const data = this.data,\n page = this.page,\n viewport = this.viewport;\n const container = document.createElement(\"section\");\n const {\n width,\n height\n } = getRectDims(data.rect);\n const [pageLLx, pageLLy, pageURx, pageURy] = viewport.viewBox;\n const pageWidth = pageURx - pageLLx;\n const pageHeight = pageURy - pageLLy;\n container.setAttribute(\"data-annotation-id\", data.id);\n\n const rect = _util.Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);\n\n if (!ignoreBorder && data.borderStyle.width > 0) {\n container.style.borderWidth = `${data.borderStyle.width}px`;\n const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n const verticalRadius = data.borderStyle.verticalCornerRadius;\n\n if (horizontalRadius > 0 || verticalRadius > 0) {\n const radius = `calc(${horizontalRadius}px * var(--scale-factor)) / calc(${verticalRadius}px * var(--scale-factor))`;\n container.style.borderRadius = radius;\n }\n\n switch (data.borderStyle.style) {\n case _util.AnnotationBorderStyleType.SOLID:\n container.style.borderStyle = \"solid\";\n break;\n\n case _util.AnnotationBorderStyleType.DASHED:\n container.style.borderStyle = \"dashed\";\n break;\n\n case _util.AnnotationBorderStyleType.BEVELED:\n (0, _util.warn)(\"Unimplemented border style: beveled\");\n break;\n\n case _util.AnnotationBorderStyleType.INSET:\n (0, _util.warn)(\"Unimplemented border style: inset\");\n break;\n\n case _util.AnnotationBorderStyleType.UNDERLINE:\n container.style.borderBottomStyle = \"solid\";\n break;\n\n default:\n break;\n }\n\n const borderColor = data.borderColor || null;\n\n if (borderColor) {\n container.style.borderColor = _util.Util.makeHexColor(borderColor[0] | 0, borderColor[1] | 0, borderColor[2] | 0);\n } else {\n container.style.borderWidth = 0;\n }\n }\n\n container.style.left = `${100 * (rect[0] - pageLLx) / pageWidth}%`;\n container.style.top = `${100 * (rect[1] - pageLLy) / pageHeight}%`;\n const {\n rotation\n } = data;\n\n if (data.hasOwnCanvas || rotation === 0) {\n container.style.width = `${100 * width / pageWidth}%`;\n container.style.height = `${100 * height / pageHeight}%`;\n } else {\n this.setRotation(rotation, container);\n }\n\n return container;\n }\n\n setRotation(angle, container = this.container) {\n const [pageLLx, pageLLy, pageURx, pageURy] = this.viewport.viewBox;\n const pageWidth = pageURx - pageLLx;\n const pageHeight = pageURy - pageLLy;\n const {\n width,\n height\n } = getRectDims(this.data.rect);\n let elementWidth, elementHeight;\n\n if (angle % 180 === 0) {\n elementWidth = 100 * width / pageWidth;\n elementHeight = 100 * height / pageHeight;\n } else {\n elementWidth = 100 * height / pageWidth;\n elementHeight = 100 * width / pageHeight;\n }\n\n container.style.width = `${elementWidth}%`;\n container.style.height = `${elementHeight}%`;\n container.setAttribute(\"data-main-rotation\", (360 - angle) % 360);\n }\n\n get _commonActions() {\n const setColor = (jsName, styleName, event) => {\n const color = event.detail[jsName];\n event.target.style[styleName] = _scripting_utils.ColorConverters[`${color[0]}_HTML`](color.slice(1));\n };\n\n return (0, _util.shadow)(this, \"_commonActions\", {\n display: event => {\n const hidden = event.detail.display % 2 === 1;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n hidden,\n print: event.detail.display === 0 || event.detail.display === 3\n });\n },\n print: event => {\n this.annotationStorage.setValue(this.data.id, {\n print: event.detail.print\n });\n },\n hidden: event => {\n this.container.style.visibility = event.detail.hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n hidden: event.detail.hidden\n });\n },\n focus: event => {\n setTimeout(() => event.target.focus({\n preventScroll: false\n }), 0);\n },\n userName: event => {\n event.target.title = event.detail.userName;\n },\n readonly: event => {\n if (event.detail.readonly) {\n event.target.setAttribute(\"readonly\", \"\");\n } else {\n event.target.removeAttribute(\"readonly\");\n }\n },\n required: event => {\n this._setRequired(event.target, event.detail.required);\n },\n bgColor: event => {\n setColor(\"bgColor\", \"backgroundColor\", event);\n },\n fillColor: event => {\n setColor(\"fillColor\", \"backgroundColor\", event);\n },\n fgColor: event => {\n setColor(\"fgColor\", \"color\", event);\n },\n textColor: event => {\n setColor(\"textColor\", \"color\", event);\n },\n borderColor: event => {\n setColor(\"borderColor\", \"borderColor\", event);\n },\n strokeColor: event => {\n setColor(\"strokeColor\", \"borderColor\", event);\n },\n rotation: event => {\n const angle = event.detail.rotation;\n this.setRotation(angle);\n this.annotationStorage.setValue(this.data.id, {\n rotation: angle\n });\n }\n });\n }\n\n _dispatchEventFromSandbox(actions, jsEvent) {\n const commonActions = this._commonActions;\n\n for (const name of Object.keys(jsEvent.detail)) {\n const action = actions[name] || commonActions[name];\n\n if (action) {\n action(jsEvent);\n }\n }\n }\n\n _setDefaultPropertiesFromJS(element) {\n if (!this.enableScripting) {\n return;\n }\n\n const storedData = this.annotationStorage.getRawValue(this.data.id);\n\n if (!storedData) {\n return;\n }\n\n const commonActions = this._commonActions;\n\n for (const [actionName, detail] of Object.entries(storedData)) {\n const action = commonActions[actionName];\n\n if (action) {\n action({\n detail,\n target: element\n });\n delete storedData[actionName];\n }\n }\n }\n\n _createQuadrilaterals(ignoreBorder = false) {\n if (!this.data.quadPoints) {\n return null;\n }\n\n const quadrilaterals = [];\n const savedRect = this.data.rect;\n\n for (const quadPoint of this.data.quadPoints) {\n this.data.rect = [quadPoint[2].x, quadPoint[2].y, quadPoint[1].x, quadPoint[1].y];\n quadrilaterals.push(this._createContainer(ignoreBorder));\n }\n\n this.data.rect = savedRect;\n return quadrilaterals;\n }\n\n _createPopup(trigger, data) {\n let container = this.container;\n\n if (this.quadrilaterals) {\n trigger = trigger || this.quadrilaterals;\n container = this.quadrilaterals[0];\n }\n\n if (!trigger) {\n trigger = document.createElement(\"div\");\n trigger.className = \"popupTriggerArea\";\n container.append(trigger);\n }\n\n const popupElement = new PopupElement({\n container,\n trigger,\n color: data.color,\n titleObj: data.titleObj,\n modificationDate: data.modificationDate,\n contentsObj: data.contentsObj,\n richText: data.richText,\n hideWrapper: true\n });\n const popup = popupElement.render();\n popup.style.left = \"100%\";\n container.append(popup);\n }\n\n _renderQuadrilaterals(className) {\n for (const quadrilateral of this.quadrilaterals) {\n quadrilateral.className = className;\n }\n\n return this.quadrilaterals;\n }\n\n render() {\n (0, _util.unreachable)(\"Abstract method `AnnotationElement.render` called\");\n }\n\n _getElementsByName(name, skipId = null) {\n const fields = [];\n\n if (this._fieldObjects) {\n const fieldObj = this._fieldObjects[name];\n\n if (fieldObj) {\n for (const {\n page,\n id,\n exportValues\n } of fieldObj) {\n if (page === -1) {\n continue;\n }\n\n if (id === skipId) {\n continue;\n }\n\n const exportValue = typeof exportValues === \"string\" ? exportValues : null;\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n\n if (domElement && !GetElementsByNameSet.has(domElement)) {\n (0, _util.warn)(`_getElementsByName - element not allowed: ${id}`);\n continue;\n }\n\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n }\n\n return fields;\n }\n\n for (const domElement of document.getElementsByName(name)) {\n const {\n id,\n exportValue\n } = domElement;\n\n if (id === skipId) {\n continue;\n }\n\n if (!GetElementsByNameSet.has(domElement)) {\n continue;\n }\n\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n\n return fields;\n }\n\n static get platform() {\n const platform = typeof navigator !== \"undefined\" ? navigator.platform : \"\";\n return (0, _util.shadow)(this, \"platform\", {\n isWin: platform.includes(\"Win\"),\n isMac: platform.includes(\"Mac\")\n });\n }\n\n}\n\nclass LinkAnnotationElement extends AnnotationElement {\n constructor(parameters, options = null) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: !!options?.ignoreBorder,\n createQuadrilaterals: true\n });\n this.isTooltipOnly = parameters.data.isTooltipOnly;\n }\n\n render() {\n const {\n data,\n linkService\n } = this;\n const link = document.createElement(\"a\");\n link.setAttribute(\"data-element-id\", data.id);\n let isBound = false;\n\n if (data.url) {\n linkService.addLinkAttributes(link, data.url, data.newWindow);\n isBound = true;\n } else if (data.action) {\n this._bindNamedAction(link, data.action);\n\n isBound = true;\n } else if (data.dest) {\n this._bindLink(link, data.dest);\n\n isBound = true;\n } else {\n if (data.actions && (data.actions.Action || data.actions[\"Mouse Up\"] || data.actions[\"Mouse Down\"]) && this.enableScripting && this.hasJSActions) {\n this._bindJSAction(link, data);\n\n isBound = true;\n }\n\n if (data.resetForm) {\n this._bindResetFormAction(link, data.resetForm);\n\n isBound = true;\n } else if (this.isTooltipOnly && !isBound) {\n this._bindLink(link, \"\");\n\n isBound = true;\n }\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"linkAnnotation\").map((quadrilateral, index) => {\n const linkElement = index === 0 ? link : link.cloneNode();\n quadrilateral.append(linkElement);\n return quadrilateral;\n });\n }\n\n this.container.className = \"linkAnnotation\";\n\n if (isBound) {\n this.container.append(link);\n }\n\n return this.container;\n }\n\n _bindLink(link, destination) {\n link.href = this.linkService.getDestinationHash(destination);\n\n link.onclick = () => {\n if (destination) {\n this.linkService.goToDestination(destination);\n }\n\n return false;\n };\n\n if (destination || destination === \"\") {\n link.className = \"internalLink\";\n }\n }\n\n _bindNamedAction(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n\n link.className = \"internalLink\";\n }\n\n _bindJSAction(link, data) {\n link.href = this.linkService.getAnchorUrl(\"\");\n const map = new Map([[\"Action\", \"onclick\"], [\"Mouse Up\", \"onmouseup\"], [\"Mouse Down\", \"onmousedown\"]]);\n\n for (const name of Object.keys(data.actions)) {\n const jsName = map.get(name);\n\n if (!jsName) {\n continue;\n }\n\n link[jsName] = () => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: data.id,\n name\n }\n });\n return false;\n };\n }\n\n if (!link.onclick) {\n link.onclick = () => false;\n }\n\n link.className = \"internalLink\";\n }\n\n _bindResetFormAction(link, resetForm) {\n const otherClickAction = link.onclick;\n\n if (!otherClickAction) {\n link.href = this.linkService.getAnchorUrl(\"\");\n }\n\n link.className = \"internalLink\";\n\n if (!this._fieldObjects) {\n (0, _util.warn)(`_bindResetFormAction - \"resetForm\" action not supported, ` + \"ensure that the `fieldObjects` parameter is provided.\");\n\n if (!otherClickAction) {\n link.onclick = () => false;\n }\n\n return;\n }\n\n link.onclick = () => {\n if (otherClickAction) {\n otherClickAction();\n }\n\n const {\n fields: resetFormFields,\n refs: resetFormRefs,\n include\n } = resetForm;\n const allFields = [];\n\n if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\n const fieldIds = new Set(resetFormRefs);\n\n for (const fieldName of resetFormFields) {\n const fields = this._fieldObjects[fieldName] || [];\n\n for (const {\n id\n } of fields) {\n fieldIds.add(id);\n }\n }\n\n for (const fields of Object.values(this._fieldObjects)) {\n for (const field of fields) {\n if (fieldIds.has(field.id) === include) {\n allFields.push(field);\n }\n }\n }\n } else {\n for (const fields of Object.values(this._fieldObjects)) {\n allFields.push(...fields);\n }\n }\n\n const storage = this.annotationStorage;\n const allIds = [];\n\n for (const field of allFields) {\n const {\n id\n } = field;\n allIds.push(id);\n\n switch (field.type) {\n case \"text\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n\n case \"checkbox\":\n case \"radiobutton\":\n {\n const value = field.defaultValue === field.exportValues;\n storage.setValue(id, {\n value\n });\n break;\n }\n\n case \"combobox\":\n case \"listbox\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n\n default:\n continue;\n }\n\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n\n if (!domElement) {\n continue;\n } else if (!GetElementsByNameSet.has(domElement)) {\n (0, _util.warn)(`_bindResetFormAction - element not allowed: ${id}`);\n continue;\n }\n\n domElement.dispatchEvent(new Event(\"resetform\"));\n }\n\n if (this.enableScripting) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: \"app\",\n ids: allIds,\n name: \"ResetForm\"\n }\n });\n }\n\n return false;\n };\n }\n\n}\n\nclass TextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable\n });\n }\n\n render() {\n this.container.className = \"textAnnotation\";\n const image = document.createElement(\"img\");\n image.src = this.imageResourcesPath + \"annotation-\" + this.data.name.toLowerCase() + \".svg\";\n image.alt = \"[{{type}} Annotation]\";\n image.dataset.l10nId = \"text_annotation_type\";\n image.dataset.l10nArgs = JSON.stringify({\n type: this.data.name\n });\n\n if (!this.data.hasPopup) {\n this._createPopup(image, this.data);\n }\n\n this.container.append(image);\n return this.container;\n }\n\n}\n\nclass WidgetAnnotationElement extends AnnotationElement {\n render() {\n if (this.data.alternativeText) {\n this.container.title = this.data.alternativeText;\n }\n\n return this.container;\n }\n\n _getKeyModifier(event) {\n const {\n isWin,\n isMac\n } = AnnotationElement.platform;\n return isWin && event.ctrlKey || isMac && event.metaKey;\n }\n\n _setEventListener(element, baseName, eventName, valueGetter) {\n if (baseName.includes(\"mouse\")) {\n element.addEventListener(baseName, event => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event),\n shift: event.shiftKey,\n modifier: this._getKeyModifier(event)\n }\n });\n });\n } else {\n element.addEventListener(baseName, event => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event)\n }\n });\n });\n }\n }\n\n _setEventListeners(element, names, getter) {\n for (const [baseName, eventName] of names) {\n if (eventName === \"Action\" || this.data.actions?.[eventName]) {\n this._setEventListener(element, baseName, eventName, getter);\n }\n }\n }\n\n _setBackgroundColor(element) {\n const color = this.data.backgroundColor || null;\n element.style.backgroundColor = color === null ? \"transparent\" : _util.Util.makeHexColor(color[0], color[1], color[2]);\n }\n\n _setTextStyle(element) {\n const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n const {\n fontColor\n } = this.data.defaultAppearanceData;\n const fontSize = this.data.defaultAppearanceData.fontSize || DEFAULT_FONT_SIZE;\n const style = element.style;\n let computedFontSize;\n\n if (this.data.multiLine) {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1]);\n const numberOfLines = Math.round(height / (_util.LINE_FACTOR * fontSize)) || 1;\n const lineHeight = height / numberOfLines;\n computedFontSize = Math.min(fontSize, Math.round(lineHeight / _util.LINE_FACTOR));\n } else {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1]);\n computedFontSize = Math.min(fontSize, Math.round(height / _util.LINE_FACTOR));\n }\n\n style.fontSize = `calc(${computedFontSize}px * var(--scale-factor))`;\n style.color = _util.Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n\n if (this.data.textAlignment !== null) {\n style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n }\n\n _setRequired(element, isRequired) {\n if (isRequired) {\n element.setAttribute(\"required\", true);\n } else {\n element.removeAttribute(\"required\");\n }\n\n element.setAttribute(\"aria-required\", isRequired);\n }\n\n}\n\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n const isRenderable = parameters.renderForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue;\n super(parameters, {\n isRenderable\n });\n }\n\n setPropertyOnSiblings(base, key, value, keyInStorage) {\n const storage = this.annotationStorage;\n\n for (const element of this._getElementsByName(base.name, base.id)) {\n if (element.domElement) {\n element.domElement[key] = value;\n }\n\n storage.setValue(element.id, {\n [keyInStorage]: value\n });\n }\n }\n\n render() {\n const storage = this.annotationStorage;\n const id = this.data.id;\n this.container.className = \"textWidgetAnnotation\";\n let element = null;\n\n if (this.renderForms) {\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n const textContent = storedData.formattedValue || storedData.value || \"\";\n const elementData = {\n userValue: textContent,\n formattedValue: null,\n valueOnFocus: \"\"\n };\n\n if (this.data.multiLine) {\n element = document.createElement(\"textarea\");\n element.textContent = textContent;\n\n if (this.data.doNotScroll) {\n element.style.overflowY = \"hidden\";\n }\n } else {\n element = document.createElement(\"input\");\n element.type = \"text\";\n element.setAttribute(\"value\", textContent);\n\n if (this.data.doNotScroll) {\n element.style.overflowX = \"hidden\";\n }\n }\n\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = this.data.readOnly;\n element.name = this.data.fieldName;\n element.tabIndex = DEFAULT_TAB_INDEX;\n\n this._setRequired(element, this.data.required);\n\n element.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n this.setPropertyOnSiblings(element, \"value\", event.target.value, \"value\");\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue ?? \"\";\n element.value = elementData.userValue = defaultValue;\n elementData.formattedValue = null;\n });\n\n let blurListener = event => {\n const {\n formattedValue\n } = elementData;\n\n if (formattedValue !== null && formattedValue !== undefined) {\n event.target.value = formattedValue;\n }\n\n event.target.scrollLeft = 0;\n };\n\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"focus\", event => {\n if (elementData.userValue) {\n event.target.value = elementData.userValue;\n }\n\n elementData.valueOnFocus = event.target.value;\n });\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n elementData.userValue = event.detail.value ?? \"\";\n storage.setValue(id, {\n value: elementData.userValue.toString()\n });\n event.target.value = elementData.userValue;\n },\n\n formattedValue(event) {\n const {\n formattedValue\n } = event.detail;\n elementData.formattedValue = formattedValue;\n\n if (formattedValue !== null && formattedValue !== undefined && event.target !== document.activeElement) {\n event.target.value = formattedValue;\n }\n\n storage.setValue(id, {\n formattedValue\n });\n },\n\n selRange(event) {\n event.target.setSelectionRange(...event.detail.selRange);\n }\n\n };\n\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n element.addEventListener(\"keydown\", event => {\n let commitKey = -1;\n\n if (event.key === \"Escape\") {\n commitKey = 0;\n } else if (event.key === \"Enter\") {\n commitKey = 2;\n } else if (event.key === \"Tab\") {\n commitKey = 3;\n }\n\n if (commitKey === -1) {\n return;\n }\n\n const {\n value\n } = event.target;\n\n if (elementData.valueOnFocus === value) {\n return;\n }\n\n elementData.userValue = value;\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n });\n const _blurListener = blurListener;\n blurListener = null;\n element.addEventListener(\"blur\", event => {\n const {\n value\n } = event.target;\n elementData.userValue = value;\n\n if (this._mouseState.isDown && elementData.valueOnFocus !== value) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: 1,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n }\n\n _blurListener(event);\n });\n\n if (this.data.actions?.Keystroke) {\n element.addEventListener(\"beforeinput\", event => {\n const {\n data,\n target\n } = event;\n const {\n value,\n selectionStart,\n selectionEnd\n } = target;\n let selStart = selectionStart,\n selEnd = selectionEnd;\n\n switch (event.inputType) {\n case \"deleteWordBackward\":\n {\n const match = value.substring(0, selectionStart).match(/\\w*[^\\w]*$/);\n\n if (match) {\n selStart -= match[0].length;\n }\n\n break;\n }\n\n case \"deleteWordForward\":\n {\n const match = value.substring(selectionStart).match(/^[^\\w]*\\w*/);\n\n if (match) {\n selEnd += match[0].length;\n }\n\n break;\n }\n\n case \"deleteContentBackward\":\n if (selectionStart === selectionEnd) {\n selStart -= 1;\n }\n\n break;\n\n case \"deleteContentForward\":\n if (selectionStart === selectionEnd) {\n selEnd += 1;\n }\n\n break;\n }\n\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n change: data || \"\",\n willCommit: false,\n selStart,\n selEnd\n }\n });\n });\n }\n\n this._setEventListeners(element, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.value);\n }\n\n if (blurListener) {\n element.addEventListener(\"blur\", blurListener);\n }\n\n if (this.data.maxLen !== null) {\n element.maxLength = this.data.maxLen;\n }\n\n if (this.data.comb) {\n const fieldWidth = this.data.rect[2] - this.data.rect[0];\n const combWidth = fieldWidth / this.data.maxLen;\n element.classList.add(\"comb\");\n element.style.letterSpacing = `calc(${combWidth}px * var(--scale-factor) - 1ch)`;\n }\n } else {\n element = document.createElement(\"div\");\n element.textContent = this.data.fieldValue;\n element.style.verticalAlign = \"middle\";\n element.style.display = \"table-cell\";\n }\n\n this._setTextStyle(element);\n\n this._setBackgroundColor(element);\n\n this._setDefaultPropertiesFromJS(element);\n\n this.container.append(element);\n return this.container;\n }\n\n}\n\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n\n render() {\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.exportValue === data.fieldValue\n }).value;\n\n if (typeof value === \"string\") {\n value = value !== \"Off\";\n storage.setValue(id, {\n value\n });\n }\n\n this.container.className = \"buttonWidgetAnnotation checkBox\";\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n\n this._setRequired(element, this.data.required);\n\n element.type = \"checkbox\";\n element.name = data.fieldName;\n\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n\n element.setAttribute(\"exportValue\", data.exportValue);\n element.tabIndex = DEFAULT_TAB_INDEX;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n\n for (const checkbox of this._getElementsByName(name, id)) {\n const curChecked = checked && checkbox.exportValue === data.exportValue;\n\n if (checkbox.domElement) {\n checkbox.domElement.checked = curChecked;\n }\n\n storage.setValue(checkbox.id, {\n value: curChecked\n });\n }\n\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue || \"Off\";\n event.target.checked = defaultValue === data.exportValue;\n });\n\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n event.target.checked = event.detail.value !== \"Off\";\n storage.setValue(id, {\n value: event.target.checked\n });\n }\n\n };\n\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n this._setEventListeners(element, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n\n this._setBackgroundColor(element);\n\n this._setDefaultPropertiesFromJS(element);\n\n this.container.append(element);\n return this.container;\n }\n\n}\n\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n\n render() {\n this.container.className = \"buttonWidgetAnnotation radioButton\";\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.fieldValue === data.buttonValue\n }).value;\n\n if (typeof value === \"string\") {\n value = value !== data.buttonValue;\n storage.setValue(id, {\n value\n });\n }\n\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n\n this._setRequired(element, this.data.required);\n\n element.type = \"radio\";\n element.name = data.fieldName;\n\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n\n element.tabIndex = DEFAULT_TAB_INDEX;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n\n for (const radio of this._getElementsByName(name, id)) {\n storage.setValue(radio.id, {\n value: false\n });\n }\n\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue;\n event.target.checked = defaultValue !== null && defaultValue !== undefined && defaultValue === data.buttonValue;\n });\n\n if (this.enableScripting && this.hasJSActions) {\n const pdfButtonValue = data.buttonValue;\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value: event => {\n const checked = pdfButtonValue === event.detail.value;\n\n for (const radio of this._getElementsByName(event.target.name)) {\n const curChecked = checked && radio.id === id;\n\n if (radio.domElement) {\n radio.domElement.checked = curChecked;\n }\n\n storage.setValue(radio.id, {\n value: curChecked\n });\n }\n }\n };\n\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n this._setEventListeners(element, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n\n this._setBackgroundColor(element);\n\n this._setDefaultPropertiesFromJS(element);\n\n this.container.append(element);\n return this.container;\n }\n\n}\n\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n ignoreBorder: parameters.data.hasAppearance\n });\n }\n\n render() {\n const container = super.render();\n container.className = \"buttonWidgetAnnotation pushButton\";\n\n if (this.data.alternativeText) {\n container.title = this.data.alternativeText;\n }\n\n const linkElement = container.lastChild;\n\n if (this.enableScripting && this.hasJSActions && linkElement) {\n this._setDefaultPropertiesFromJS(linkElement);\n\n linkElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n this._dispatchEventFromSandbox({}, jsEvent);\n });\n }\n\n return container;\n }\n\n}\n\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n\n render() {\n this.container.className = \"choiceWidgetAnnotation\";\n const storage = this.annotationStorage;\n const id = this.data.id;\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n const selectElement = document.createElement(\"select\");\n GetElementsByNameSet.add(selectElement);\n selectElement.setAttribute(\"data-element-id\", id);\n selectElement.disabled = this.data.readOnly;\n\n this._setRequired(selectElement, this.data.required);\n\n selectElement.name = this.data.fieldName;\n selectElement.tabIndex = DEFAULT_TAB_INDEX;\n let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\n\n if (!this.data.combo) {\n selectElement.size = this.data.options.length;\n\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n\n selectElement.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue;\n\n for (const option of selectElement.options) {\n option.selected = option.value === defaultValue;\n }\n });\n\n for (const option of this.data.options) {\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = option.displayValue;\n optionElement.value = option.exportValue;\n\n if (storedData.value.includes(option.exportValue)) {\n optionElement.setAttribute(\"selected\", true);\n addAnEmptyEntry = false;\n }\n\n selectElement.append(optionElement);\n }\n\n let removeEmptyEntry = null;\n\n if (addAnEmptyEntry) {\n const noneOptionElement = document.createElement(\"option\");\n noneOptionElement.value = \" \";\n noneOptionElement.setAttribute(\"hidden\", true);\n noneOptionElement.setAttribute(\"selected\", true);\n selectElement.prepend(noneOptionElement);\n\n removeEmptyEntry = () => {\n noneOptionElement.remove();\n selectElement.removeEventListener(\"input\", removeEmptyEntry);\n removeEmptyEntry = null;\n };\n\n selectElement.addEventListener(\"input\", removeEmptyEntry);\n }\n\n const getValue = (event, isExport) => {\n const name = isExport ? \"value\" : \"textContent\";\n const options = event.target.options;\n\n if (!event.target.multiple) {\n return options.selectedIndex === -1 ? null : options[options.selectedIndex][name];\n }\n\n return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]);\n };\n\n const getItems = event => {\n const options = event.target.options;\n return Array.prototype.map.call(options, option => {\n return {\n displayValue: option.textContent,\n exportValue: option.value\n };\n });\n };\n\n if (this.enableScripting && this.hasJSActions) {\n selectElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n removeEmptyEntry?.();\n const value = event.detail.value;\n const values = new Set(Array.isArray(value) ? value : [value]);\n\n for (const option of selectElement.options) {\n option.selected = values.has(option.value);\n }\n\n storage.setValue(id, {\n value: getValue(event, true)\n });\n },\n\n multipleSelection(event) {\n selectElement.multiple = true;\n },\n\n remove(event) {\n const options = selectElement.options;\n const index = event.detail.remove;\n options[index].selected = false;\n selectElement.remove(index);\n\n if (options.length > 0) {\n const i = Array.prototype.findIndex.call(options, option => option.selected);\n\n if (i === -1) {\n options[0].selected = true;\n }\n }\n\n storage.setValue(id, {\n value: getValue(event, true),\n items: getItems(event)\n });\n },\n\n clear(event) {\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n\n storage.setValue(id, {\n value: null,\n items: []\n });\n },\n\n insert(event) {\n const {\n index,\n displayValue,\n exportValue\n } = event.detail.insert;\n const selectChild = selectElement.children[index];\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n\n if (selectChild) {\n selectChild.before(optionElement);\n } else {\n selectElement.append(optionElement);\n }\n\n storage.setValue(id, {\n value: getValue(event, true),\n items: getItems(event)\n });\n },\n\n items(event) {\n const {\n items\n } = event.detail;\n\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n\n for (const item of items) {\n const {\n displayValue,\n exportValue\n } = item;\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n selectElement.append(optionElement);\n }\n\n if (selectElement.options.length > 0) {\n selectElement.options[0].selected = true;\n }\n\n storage.setValue(id, {\n value: getValue(event, true),\n items: getItems(event)\n });\n },\n\n indices(event) {\n const indices = new Set(event.detail.indices);\n\n for (const option of event.target.options) {\n option.selected = indices.has(option.index);\n }\n\n storage.setValue(id, {\n value: getValue(event, true)\n });\n },\n\n editable(event) {\n event.target.disabled = !event.detail.editable;\n }\n\n };\n\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n selectElement.addEventListener(\"input\", event => {\n const exportValue = getValue(event, true);\n const value = getValue(event, false);\n storage.setValue(id, {\n value: exportValue\n });\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n changeEx: exportValue,\n willCommit: true,\n commitKey: 1,\n keyDown: false\n }\n });\n });\n\n this._setEventListeners(selectElement, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"], [\"input\", \"Action\"]], event => event.target.checked);\n } else {\n selectElement.addEventListener(\"input\", function (event) {\n storage.setValue(id, {\n value: getValue(event, true)\n });\n });\n }\n\n if (this.data.combo) {\n this._setTextStyle(selectElement);\n } else {}\n\n this._setBackgroundColor(selectElement);\n\n this._setDefaultPropertiesFromJS(selectElement);\n\n this.container.append(selectElement);\n return this.container;\n }\n\n}\n\nclass PopupAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable\n });\n }\n\n render() {\n const IGNORE_TYPES = [\"Line\", \"Square\", \"Circle\", \"PolyLine\", \"Polygon\", \"Ink\"];\n this.container.className = \"popupAnnotation\";\n\n if (IGNORE_TYPES.includes(this.data.parentType)) {\n return this.container;\n }\n\n const selector = `[data-annotation-id=\"${this.data.parentId}\"]`;\n const parentElements = this.layer.querySelectorAll(selector);\n\n if (parentElements.length === 0) {\n return this.container;\n }\n\n const popup = new PopupElement({\n container: this.container,\n trigger: Array.from(parentElements),\n color: this.data.color,\n titleObj: this.data.titleObj,\n modificationDate: this.data.modificationDate,\n contentsObj: this.data.contentsObj,\n richText: this.data.richText\n });\n const page = this.page;\n\n const rect = _util.Util.normalizeRect([this.data.parentRect[0], page.view[3] - this.data.parentRect[1] + page.view[1], this.data.parentRect[2], page.view[3] - this.data.parentRect[3] + page.view[1]]);\n\n const popupLeft = rect[0] + this.data.parentRect[2] - this.data.parentRect[0];\n const popupTop = rect[1];\n const [pageLLx, pageLLy, pageURx, pageURy] = this.viewport.viewBox;\n const pageWidth = pageURx - pageLLx;\n const pageHeight = pageURy - pageLLy;\n this.container.style.left = `${100 * (popupLeft - pageLLx) / pageWidth}%`;\n this.container.style.top = `${100 * (popupTop - pageLLy) / pageHeight}%`;\n this.container.append(popup.render());\n return this.container;\n }\n\n}\n\nclass PopupElement {\n constructor(parameters) {\n this.container = parameters.container;\n this.trigger = parameters.trigger;\n this.color = parameters.color;\n this.titleObj = parameters.titleObj;\n this.modificationDate = parameters.modificationDate;\n this.contentsObj = parameters.contentsObj;\n this.richText = parameters.richText;\n this.hideWrapper = parameters.hideWrapper || false;\n this.pinned = false;\n }\n\n render() {\n const BACKGROUND_ENLIGHT = 0.7;\n const wrapper = document.createElement(\"div\");\n wrapper.className = \"popupWrapper\";\n this.hideElement = this.hideWrapper ? wrapper : this.container;\n this.hideElement.hidden = true;\n const popup = document.createElement(\"div\");\n popup.className = \"popup\";\n const color = this.color;\n\n if (color) {\n const r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0];\n const g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1];\n const b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2];\n popup.style.backgroundColor = _util.Util.makeHexColor(r | 0, g | 0, b | 0);\n }\n\n const title = document.createElement(\"h1\");\n title.dir = this.titleObj.dir;\n title.textContent = this.titleObj.str;\n popup.append(title);\n\n const dateObject = _display_utils.PDFDateString.toDateObject(this.modificationDate);\n\n if (dateObject) {\n const modificationDate = document.createElement(\"span\");\n modificationDate.className = \"popupDate\";\n modificationDate.textContent = \"{{date}}, {{time}}\";\n modificationDate.dataset.l10nId = \"annotation_date_string\";\n modificationDate.dataset.l10nArgs = JSON.stringify({\n date: dateObject.toLocaleDateString(),\n time: dateObject.toLocaleTimeString()\n });\n popup.append(modificationDate);\n }\n\n if (this.richText?.str && (!this.contentsObj?.str || this.contentsObj.str === this.richText.str)) {\n _xfa_layer.XfaLayer.render({\n xfaHtml: this.richText.html,\n intent: \"richText\",\n div: popup\n });\n\n popup.lastChild.className = \"richText popupContent\";\n } else {\n const contents = this._formatContents(this.contentsObj);\n\n popup.append(contents);\n }\n\n if (!Array.isArray(this.trigger)) {\n this.trigger = [this.trigger];\n }\n\n for (const element of this.trigger) {\n element.addEventListener(\"click\", this._toggle.bind(this));\n element.addEventListener(\"mouseover\", this._show.bind(this, false));\n element.addEventListener(\"mouseout\", this._hide.bind(this, false));\n }\n\n popup.addEventListener(\"click\", this._hide.bind(this, true));\n wrapper.append(popup);\n return wrapper;\n }\n\n _formatContents({\n str,\n dir\n }) {\n const p = document.createElement(\"p\");\n p.className = \"popupContent\";\n p.dir = dir;\n const lines = str.split(/(?:\\r\\n?|\\n)/);\n\n for (let i = 0, ii = lines.length; i < ii; ++i) {\n const line = lines[i];\n p.append(document.createTextNode(line));\n\n if (i < ii - 1) {\n p.append(document.createElement(\"br\"));\n }\n }\n\n return p;\n }\n\n _toggle() {\n if (this.pinned) {\n this._hide(true);\n } else {\n this._show(true);\n }\n }\n\n _show(pin = false) {\n if (pin) {\n this.pinned = true;\n }\n\n if (this.hideElement.hidden) {\n this.hideElement.hidden = false;\n this.container.style.zIndex += 1;\n }\n }\n\n _hide(unpin = true) {\n if (unpin) {\n this.pinned = false;\n }\n\n if (!this.hideElement.hidden && !this.pinned) {\n this.hideElement.hidden = true;\n this.container.style.zIndex -= 1;\n }\n }\n\n}\n\nclass FreeTextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable,\n ignoreBorder: true\n });\n }\n\n render() {\n this.container.className = \"freeTextAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n return this.container;\n }\n\n}\n\nclass LineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable,\n ignoreBorder: true\n });\n }\n\n render() {\n this.container.className = \"lineAnnotation\";\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n const line = this.svgFactory.createElement(\"svg:line\");\n line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n line.setAttribute(\"stroke\", \"transparent\");\n line.setAttribute(\"fill\", \"transparent\");\n svg.append(line);\n this.container.append(svg);\n\n this._createPopup(line, data);\n\n return this.container;\n }\n\n}\n\nclass SquareAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable,\n ignoreBorder: true\n });\n }\n\n render() {\n this.container.className = \"squareAnnotation\";\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const square = this.svgFactory.createElement(\"svg:rect\");\n square.setAttribute(\"x\", borderWidth / 2);\n square.setAttribute(\"y\", borderWidth / 2);\n square.setAttribute(\"width\", width - borderWidth);\n square.setAttribute(\"height\", height - borderWidth);\n square.setAttribute(\"stroke-width\", borderWidth || 1);\n square.setAttribute(\"stroke\", \"transparent\");\n square.setAttribute(\"fill\", \"transparent\");\n svg.append(square);\n this.container.append(svg);\n\n this._createPopup(square, data);\n\n return this.container;\n }\n\n}\n\nclass CircleAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable,\n ignoreBorder: true\n });\n }\n\n render() {\n this.container.className = \"circleAnnotation\";\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const circle = this.svgFactory.createElement(\"svg:ellipse\");\n circle.setAttribute(\"cx\", width / 2);\n circle.setAttribute(\"cy\", height / 2);\n circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n circle.setAttribute(\"stroke-width\", borderWidth || 1);\n circle.setAttribute(\"stroke\", \"transparent\");\n circle.setAttribute(\"fill\", \"transparent\");\n svg.append(circle);\n this.container.append(svg);\n\n this._createPopup(circle, data);\n\n return this.container;\n }\n\n}\n\nclass PolylineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable,\n ignoreBorder: true\n });\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n\n render() {\n this.container.className = this.containerClassName;\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n let points = [];\n\n for (const coordinate of data.vertices) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(x + \",\" + y);\n }\n\n points = points.join(\" \");\n const polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n svg.append(polyline);\n this.container.append(svg);\n\n this._createPopup(polyline, data);\n\n return this.container;\n }\n\n}\n\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n super(parameters);\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n\n}\n\nclass CaretAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable,\n ignoreBorder: true\n });\n }\n\n render() {\n this.container.className = \"caretAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n return this.container;\n }\n\n}\n\nclass InkAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable,\n ignoreBorder: true\n });\n this.containerClassName = \"inkAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n\n render() {\n this.container.className = this.containerClassName;\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n\n for (const inkList of data.inkLists) {\n let points = [];\n\n for (const coordinate of inkList) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(`${x},${y}`);\n }\n\n points = points.join(\" \");\n const polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n\n this._createPopup(polyline, data);\n\n svg.append(polyline);\n }\n\n this.container.append(svg);\n return this.container;\n }\n\n}\n\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n\n render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"highlightAnnotation\");\n }\n\n this.container.className = \"highlightAnnotation\";\n return this.container;\n }\n\n}\n\nclass UnderlineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n\n render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"underlineAnnotation\");\n }\n\n this.container.className = \"underlineAnnotation\";\n return this.container;\n }\n\n}\n\nclass SquigglyAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n\n render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"squigglyAnnotation\");\n }\n\n this.container.className = \"squigglyAnnotation\";\n return this.container;\n }\n\n}\n\nclass StrikeOutAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n\n render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"strikeoutAnnotation\");\n }\n\n this.container.className = \"strikeoutAnnotation\";\n return this.container;\n }\n\n}\n\nclass StampAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable,\n ignoreBorder: true\n });\n }\n\n render() {\n this.container.className = \"stampAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n return this.container;\n }\n\n}\n\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n const {\n filename,\n content\n } = this.data.file;\n this.filename = (0, _display_utils.getFilenameFromUrl)(filename);\n this.content = content;\n this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n source: this,\n filename,\n content\n });\n }\n\n render() {\n this.container.className = \"fileAttachmentAnnotation\";\n const trigger = document.createElement(\"div\");\n trigger.className = \"popupTriggerArea\";\n trigger.addEventListener(\"dblclick\", this._download.bind(this));\n\n if (!this.data.hasPopup && (this.data.titleObj?.str || this.data.contentsObj?.str || this.data.richText)) {\n this._createPopup(trigger, this.data);\n }\n\n this.container.append(trigger);\n return this.container;\n }\n\n _download() {\n this.downloadManager?.openOrDownloadData(this.container, this.content, this.filename);\n }\n\n}\n\nclass AnnotationLayer {\n static render(parameters) {\n const {\n annotations,\n div,\n viewport\n } = parameters;\n this.#setDimensions(div, viewport);\n const sortedAnnotations = [],\n popupAnnotations = [];\n\n for (const data of annotations) {\n if (!data) {\n continue;\n }\n\n if (data.annotationType === _util.AnnotationType.POPUP) {\n popupAnnotations.push(data);\n continue;\n }\n\n const {\n width,\n height\n } = getRectDims(data.rect);\n\n if (width <= 0 || height <= 0) {\n continue;\n }\n\n sortedAnnotations.push(data);\n }\n\n if (popupAnnotations.length) {\n sortedAnnotations.push(...popupAnnotations);\n }\n\n for (const data of sortedAnnotations) {\n const element = AnnotationElementFactory.create({\n data,\n layer: div,\n page: parameters.page,\n viewport,\n linkService: parameters.linkService,\n downloadManager: parameters.downloadManager,\n imageResourcesPath: parameters.imageResourcesPath || \"\",\n renderForms: parameters.renderForms !== false,\n svgFactory: new _display_utils.DOMSVGFactory(),\n annotationStorage: parameters.annotationStorage || new _annotation_storage.AnnotationStorage(),\n enableScripting: parameters.enableScripting,\n hasJSActions: parameters.hasJSActions,\n fieldObjects: parameters.fieldObjects,\n mouseState: parameters.mouseState || {\n isDown: false\n }\n });\n\n if (element.isRenderable) {\n const rendered = element.render();\n\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n\n if (Array.isArray(rendered)) {\n for (const renderedElement of rendered) {\n div.append(renderedElement);\n }\n } else {\n if (element instanceof PopupAnnotationElement) {\n div.prepend(rendered);\n } else {\n div.append(rendered);\n }\n }\n }\n }\n\n this.#setAnnotationCanvasMap(div, parameters.annotationCanvasMap);\n }\n\n static update(parameters) {\n const {\n annotationCanvasMap,\n div,\n viewport\n } = parameters;\n this.#setDimensions(div, viewport);\n this.#setAnnotationCanvasMap(div, annotationCanvasMap);\n div.hidden = false;\n }\n\n static #setDimensions(div, {\n width,\n height,\n rotation\n }) {\n const {\n style\n } = div;\n const flipOrientation = rotation % 180 !== 0,\n widthStr = Math.floor(width) + \"px\",\n heightStr = Math.floor(height) + \"px\";\n style.width = flipOrientation ? heightStr : widthStr;\n style.height = flipOrientation ? widthStr : heightStr;\n div.setAttribute(\"data-main-rotation\", rotation);\n }\n\n static #setAnnotationCanvasMap(div, annotationCanvasMap) {\n if (!annotationCanvasMap) {\n return;\n }\n\n for (const [id, canvas] of annotationCanvasMap) {\n const element = div.querySelector(`[data-annotation-id=\"${id}\"]`);\n\n if (!element) {\n continue;\n }\n\n const {\n firstChild\n } = element;\n\n if (!firstChild) {\n element.append(canvas);\n } else if (firstChild.nodeName === \"CANVAS\") {\n firstChild.replaceWith(canvas);\n } else {\n firstChild.before(canvas);\n }\n }\n\n annotationCanvasMap.clear();\n }\n\n}\n\nexports.AnnotationLayer = AnnotationLayer;\n\n/***/ }),\n/* 28 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.ColorConverters = void 0;\n\nfunction makeColorComp(n) {\n return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, \"0\");\n}\n\nclass ColorConverters {\n static CMYK_G([c, y, m, k]) {\n return [\"G\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n }\n\n static G_CMYK([g]) {\n return [\"CMYK\", 0, 0, 0, 1 - g];\n }\n\n static G_RGB([g]) {\n return [\"RGB\", g, g, g];\n }\n\n static G_HTML([g]) {\n const G = makeColorComp(g);\n return `#${G}${G}${G}`;\n }\n\n static RGB_G([r, g, b]) {\n return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n\n static RGB_HTML([r, g, b]) {\n const R = makeColorComp(r);\n const G = makeColorComp(g);\n const B = makeColorComp(b);\n return `#${R}${G}${B}`;\n }\n\n static T_HTML() {\n return \"#00000000\";\n }\n\n static CMYK_RGB([c, y, m, k]) {\n return [\"RGB\", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];\n }\n\n static CMYK_HTML(components) {\n const rgb = this.CMYK_RGB(components).slice(1);\n return this.RGB_HTML(rgb);\n }\n\n static RGB_CMYK([r, g, b]) {\n const c = 1 - r;\n const m = 1 - g;\n const y = 1 - b;\n const k = Math.min(c, m, y);\n return [\"CMYK\", c, m, y, k];\n }\n\n}\n\nexports.ColorConverters = ColorConverters;\n\n/***/ }),\n/* 29 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.XfaLayer = void 0;\n\nvar _xfa_text = __w_pdfjs_require__(20);\n\nclass XfaLayer {\n static setupStorage(html, id, element, storage, intent) {\n const storedData = storage.getValue(id, {\n value: null\n });\n\n switch (element.name) {\n case \"textarea\":\n if (storedData.value !== null) {\n html.textContent = storedData.value;\n }\n\n if (intent === \"print\") {\n break;\n }\n\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n break;\n\n case \"input\":\n if (element.attributes.type === \"radio\" || element.attributes.type === \"checkbox\") {\n if (storedData.value === element.attributes.xfaOn) {\n html.setAttribute(\"checked\", true);\n } else if (storedData.value === element.attributes.xfaOff) {\n html.removeAttribute(\"checked\");\n }\n\n if (intent === \"print\") {\n break;\n }\n\n html.addEventListener(\"change\", event => {\n storage.setValue(id, {\n value: event.target.checked ? event.target.getAttribute(\"xfaOn\") : event.target.getAttribute(\"xfaOff\")\n });\n });\n } else {\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n }\n\n if (intent === \"print\") {\n break;\n }\n\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n }\n\n break;\n\n case \"select\":\n if (storedData.value !== null) {\n for (const option of element.children) {\n if (option.attributes.value === storedData.value) {\n option.attributes.selected = true;\n }\n }\n }\n\n html.addEventListener(\"input\", event => {\n const options = event.target.options;\n const value = options.selectedIndex === -1 ? \"\" : options[options.selectedIndex].value;\n storage.setValue(id, {\n value\n });\n });\n break;\n }\n }\n\n static setAttributes({\n html,\n element,\n storage = null,\n intent,\n linkService\n }) {\n const {\n attributes\n } = element;\n const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n\n if (attributes.type === \"radio\") {\n attributes.name = `${attributes.name}-${intent}`;\n }\n\n for (const [key, value] of Object.entries(attributes)) {\n if (value === null || value === undefined) {\n continue;\n }\n\n switch (key) {\n case \"class\":\n if (value.length) {\n html.setAttribute(key, value.join(\" \"));\n }\n\n break;\n\n case \"dataId\":\n break;\n\n case \"id\":\n html.setAttribute(\"data-element-id\", value);\n break;\n\n case \"style\":\n Object.assign(html.style, value);\n break;\n\n case \"textContent\":\n html.textContent = value;\n break;\n\n default:\n if (!isHTMLAnchorElement || key !== \"href\" && key !== \"newWindow\") {\n html.setAttribute(key, value);\n }\n\n }\n }\n\n if (isHTMLAnchorElement) {\n linkService.addLinkAttributes(html, attributes.href, attributes.newWindow);\n }\n\n if (storage && attributes.dataId) {\n this.setupStorage(html, attributes.dataId, element, storage);\n }\n }\n\n static render(parameters) {\n const storage = parameters.annotationStorage;\n const linkService = parameters.linkService;\n const root = parameters.xfaHtml;\n const intent = parameters.intent || \"display\";\n const rootHtml = document.createElement(root.name);\n\n if (root.attributes) {\n this.setAttributes({\n html: rootHtml,\n element: root,\n intent,\n linkService\n });\n }\n\n const stack = [[root, -1, rootHtml]];\n const rootDiv = parameters.div;\n rootDiv.append(rootHtml);\n\n if (parameters.viewport) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n rootDiv.style.transform = transform;\n }\n\n if (intent !== \"richText\") {\n rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n }\n\n const textDivs = [];\n\n while (stack.length > 0) {\n const [parent, i, html] = stack.at(-1);\n\n if (i + 1 === parent.children.length) {\n stack.pop();\n continue;\n }\n\n const child = parent.children[++stack.at(-1)[1]];\n\n if (child === null) {\n continue;\n }\n\n const {\n name\n } = child;\n\n if (name === \"#text\") {\n const node = document.createTextNode(child.value);\n textDivs.push(node);\n html.append(node);\n continue;\n }\n\n let childHtml;\n\n if (child?.attributes?.xmlns) {\n childHtml = document.createElementNS(child.attributes.xmlns, name);\n } else {\n childHtml = document.createElement(name);\n }\n\n html.append(childHtml);\n\n if (child.attributes) {\n this.setAttributes({\n html: childHtml,\n element: child,\n storage,\n intent,\n linkService\n });\n }\n\n if (child.children && child.children.length > 0) {\n stack.push([child, -1, childHtml]);\n } else if (child.value) {\n const node = document.createTextNode(child.value);\n\n if (_xfa_text.XfaText.shouldBuildText(name)) {\n textDivs.push(node);\n }\n\n childHtml.append(node);\n }\n }\n\n for (const el of rootDiv.querySelectorAll(\".xfaNonInteractive input, .xfaNonInteractive textarea\")) {\n el.setAttribute(\"readOnly\", true);\n }\n\n return {\n textDivs\n };\n }\n\n static update(parameters) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n parameters.div.style.transform = transform;\n parameters.div.hidden = false;\n }\n\n}\n\nexports.XfaLayer = XfaLayer;\n\n/***/ }),\n/* 30 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.TextLayerRenderTask = void 0;\nexports.renderTextLayer = renderTextLayer;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _display_utils = __w_pdfjs_require__(4);\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\nconst DEFAULT_FONT_ASCENT = 0.8;\nconst ascentCache = new Map();\nconst AllWhitespaceRegexp = /^\\s+$/g;\n\nfunction getAscent(fontFamily, ctx) {\n const cachedAscent = ascentCache.get(fontFamily);\n\n if (cachedAscent) {\n return cachedAscent;\n }\n\n ctx.save();\n ctx.font = `${DEFAULT_FONT_SIZE}px ${fontFamily}`;\n const metrics = ctx.measureText(\"\");\n let ascent = metrics.fontBoundingBoxAscent;\n let descent = Math.abs(metrics.fontBoundingBoxDescent);\n\n if (ascent) {\n ctx.restore();\n const ratio = ascent / (ascent + descent);\n ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n\n ctx.strokeStyle = \"red\";\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"g\", 0, 0);\n let pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n descent = 0;\n\n for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) {\n if (pixels[i] > 0) {\n descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"A\", 0, DEFAULT_FONT_SIZE);\n pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n ascent = 0;\n\n for (let i = 0, ii = pixels.length; i < ii; i += 4) {\n if (pixels[i] > 0) {\n ascent = DEFAULT_FONT_SIZE - Math.floor(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n\n ctx.restore();\n\n if (ascent) {\n const ratio = ascent / (ascent + descent);\n ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n\n ascentCache.set(fontFamily, DEFAULT_FONT_ASCENT);\n return DEFAULT_FONT_ASCENT;\n}\n\nfunction appendText(task, geom, styles, ctx) {\n const textDiv = document.createElement(\"span\");\n const textDivProperties = task._enhanceTextSelection ? {\n angle: 0,\n canvasWidth: 0,\n hasText: geom.str !== \"\",\n hasEOL: geom.hasEOL,\n originalTransform: null,\n paddingBottom: 0,\n paddingLeft: 0,\n paddingRight: 0,\n paddingTop: 0,\n scale: 1,\n fontSize: 0\n } : {\n angle: 0,\n canvasWidth: 0,\n hasText: geom.str !== \"\",\n hasEOL: geom.hasEOL,\n fontSize: 0\n };\n\n task._textDivs.push(textDiv);\n\n const tx = _util.Util.transform(task._viewport.transform, geom.transform);\n\n let angle = Math.atan2(tx[1], tx[0]);\n const style = styles[geom.fontName];\n\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n\n const fontHeight = Math.hypot(tx[2], tx[3]);\n const fontAscent = fontHeight * getAscent(style.fontFamily, ctx);\n let left, top;\n\n if (angle === 0) {\n left = tx[4];\n top = tx[5] - fontAscent;\n } else {\n left = tx[4] + fontAscent * Math.sin(angle);\n top = tx[5] - fontAscent * Math.cos(angle);\n }\n\n textDiv.style.left = `${left}px`;\n textDiv.style.top = `${top}px`;\n textDiv.style.fontSize = `${fontHeight}px`;\n textDiv.style.fontFamily = style.fontFamily;\n textDivProperties.fontSize = fontHeight;\n textDiv.setAttribute(\"role\", \"presentation\");\n textDiv.textContent = geom.str;\n textDiv.dir = geom.dir;\n\n if (task._fontInspectorEnabled) {\n textDiv.dataset.fontName = geom.fontName;\n }\n\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n\n let shouldScaleText = false;\n\n if (geom.str.length > 1 || task._enhanceTextSelection && AllWhitespaceRegexp.test(geom.str)) {\n shouldScaleText = true;\n } else if (geom.str !== \" \" && geom.transform[0] !== geom.transform[3]) {\n const absScaleX = Math.abs(geom.transform[0]),\n absScaleY = Math.abs(geom.transform[3]);\n\n if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) {\n shouldScaleText = true;\n }\n }\n\n if (shouldScaleText) {\n if (style.vertical) {\n textDivProperties.canvasWidth = geom.height * task._viewport.scale;\n } else {\n textDivProperties.canvasWidth = geom.width * task._viewport.scale;\n }\n }\n\n task._textDivProperties.set(textDiv, textDivProperties);\n\n if (task._textContentStream) {\n task._layoutText(textDiv);\n }\n\n if (task._enhanceTextSelection && textDivProperties.hasText) {\n let angleCos = 1,\n angleSin = 0;\n\n if (angle !== 0) {\n angleCos = Math.cos(angle);\n angleSin = Math.sin(angle);\n }\n\n const divWidth = (style.vertical ? geom.height : geom.width) * task._viewport.scale;\n const divHeight = fontHeight;\n let m, b;\n\n if (angle !== 0) {\n m = [angleCos, angleSin, -angleSin, angleCos, left, top];\n b = _util.Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m);\n } else {\n b = [left, top, left + divWidth, top + divHeight];\n }\n\n task._bounds.push({\n left: b[0],\n top: b[1],\n right: b[2],\n bottom: b[3],\n div: textDiv,\n size: [divWidth, divHeight],\n m\n });\n }\n}\n\nfunction render(task) {\n if (task._canceled) {\n return;\n }\n\n const textDivs = task._textDivs;\n const capability = task._capability;\n const textDivsLength = textDivs.length;\n\n if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {\n task._renderingDone = true;\n capability.resolve();\n return;\n }\n\n if (!task._textContentStream) {\n for (let i = 0; i < textDivsLength; i++) {\n task._layoutText(textDivs[i]);\n }\n }\n\n task._renderingDone = true;\n capability.resolve();\n}\n\nfunction findPositiveMin(ts, offset, count) {\n let result = 0;\n\n for (let i = 0; i < count; i++) {\n const t = ts[offset++];\n\n if (t > 0) {\n result = result ? Math.min(t, result) : t;\n }\n }\n\n return result;\n}\n\nfunction expand(task) {\n const bounds = task._bounds;\n const viewport = task._viewport;\n const expanded = expandBounds(viewport.width, viewport.height, bounds);\n\n for (let i = 0; i < expanded.length; i++) {\n const div = bounds[i].div;\n\n const divProperties = task._textDivProperties.get(div);\n\n if (divProperties.angle === 0) {\n divProperties.paddingLeft = bounds[i].left - expanded[i].left;\n divProperties.paddingTop = bounds[i].top - expanded[i].top;\n divProperties.paddingRight = expanded[i].right - bounds[i].right;\n divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom;\n\n task._textDivProperties.set(div, divProperties);\n\n continue;\n }\n\n const e = expanded[i],\n b = bounds[i];\n const m = b.m,\n c = m[0],\n s = m[1];\n const points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size];\n const ts = new Float64Array(64);\n\n for (let j = 0, jj = points.length; j < jj; j++) {\n const t = _util.Util.applyTransform(points[j], m);\n\n ts[j + 0] = c && (e.left - t[0]) / c;\n ts[j + 4] = s && (e.top - t[1]) / s;\n ts[j + 8] = c && (e.right - t[0]) / c;\n ts[j + 12] = s && (e.bottom - t[1]) / s;\n ts[j + 16] = s && (e.left - t[0]) / -s;\n ts[j + 20] = c && (e.top - t[1]) / c;\n ts[j + 24] = s && (e.right - t[0]) / -s;\n ts[j + 28] = c && (e.bottom - t[1]) / c;\n ts[j + 32] = c && (e.left - t[0]) / -c;\n ts[j + 36] = s && (e.top - t[1]) / -s;\n ts[j + 40] = c && (e.right - t[0]) / -c;\n ts[j + 44] = s && (e.bottom - t[1]) / -s;\n ts[j + 48] = s && (e.left - t[0]) / s;\n ts[j + 52] = c && (e.top - t[1]) / -c;\n ts[j + 56] = s && (e.right - t[0]) / s;\n ts[j + 60] = c && (e.bottom - t[1]) / -c;\n }\n\n const boxScale = 1 + Math.min(Math.abs(c), Math.abs(s));\n divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale;\n divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale;\n divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale;\n divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale;\n\n task._textDivProperties.set(div, divProperties);\n }\n}\n\nfunction expandBounds(width, height, boxes) {\n const bounds = boxes.map(function (box, i) {\n return {\n x1: box.left,\n y1: box.top,\n x2: box.right,\n y2: box.bottom,\n index: i,\n x1New: undefined,\n x2New: undefined\n };\n });\n expandBoundsLTR(width, bounds);\n const expanded = new Array(boxes.length);\n\n for (const b of bounds) {\n const i = b.index;\n expanded[i] = {\n left: b.x1New,\n top: 0,\n right: b.x2New,\n bottom: 0\n };\n }\n\n boxes.map(function (box, i) {\n const e = expanded[i],\n b = bounds[i];\n b.x1 = box.top;\n b.y1 = width - e.right;\n b.x2 = box.bottom;\n b.y2 = width - e.left;\n b.index = i;\n b.x1New = undefined;\n b.x2New = undefined;\n });\n expandBoundsLTR(height, bounds);\n\n for (const b of bounds) {\n const i = b.index;\n expanded[i].top = b.x1New;\n expanded[i].bottom = b.x2New;\n }\n\n return expanded;\n}\n\nfunction expandBoundsLTR(width, bounds) {\n bounds.sort(function (a, b) {\n return a.x1 - b.x1 || a.index - b.index;\n });\n const fakeBoundary = {\n x1: -Infinity,\n y1: -Infinity,\n x2: 0,\n y2: Infinity,\n index: -1,\n x1New: 0,\n x2New: 0\n };\n const horizon = [{\n start: -Infinity,\n end: Infinity,\n boundary: fakeBoundary\n }];\n\n for (const boundary of bounds) {\n let i = 0;\n\n while (i < horizon.length && horizon[i].end <= boundary.y1) {\n i++;\n }\n\n let j = horizon.length - 1;\n\n while (j >= 0 && horizon[j].start >= boundary.y2) {\n j--;\n }\n\n let horizonPart, affectedBoundary;\n let q,\n k,\n maxXNew = -Infinity;\n\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n let xNew;\n\n if (affectedBoundary.x2 > boundary.x1) {\n xNew = affectedBoundary.index > boundary.index ? affectedBoundary.x1New : boundary.x1;\n } else if (affectedBoundary.x2New === undefined) {\n xNew = (affectedBoundary.x2 + boundary.x1) / 2;\n } else {\n xNew = affectedBoundary.x2New;\n }\n\n if (xNew > maxXNew) {\n maxXNew = xNew;\n }\n }\n\n boundary.x1New = maxXNew;\n\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n\n if (affectedBoundary.x2New === undefined) {\n if (affectedBoundary.x2 > boundary.x1) {\n if (affectedBoundary.index > boundary.index) {\n affectedBoundary.x2New = affectedBoundary.x2;\n }\n } else {\n affectedBoundary.x2New = maxXNew;\n }\n } else if (affectedBoundary.x2New > maxXNew) {\n affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2);\n }\n }\n\n const changedHorizon = [];\n let lastBoundary = null;\n\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n const useBoundary = affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary;\n\n if (lastBoundary === useBoundary) {\n changedHorizon.at(-1).end = horizonPart.end;\n } else {\n changedHorizon.push({\n start: horizonPart.start,\n end: horizonPart.end,\n boundary: useBoundary\n });\n lastBoundary = useBoundary;\n }\n }\n\n if (horizon[i].start < boundary.y1) {\n changedHorizon[0].start = boundary.y1;\n changedHorizon.unshift({\n start: horizon[i].start,\n end: boundary.y1,\n boundary: horizon[i].boundary\n });\n }\n\n if (boundary.y2 < horizon[j].end) {\n changedHorizon.at(-1).end = boundary.y2;\n changedHorizon.push({\n start: boundary.y2,\n end: horizon[j].end,\n boundary: horizon[j].boundary\n });\n }\n\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n\n if (affectedBoundary.x2New !== undefined) {\n continue;\n }\n\n let used = false;\n\n for (k = i - 1; !used && k >= 0 && horizon[k].start >= affectedBoundary.y1; k--) {\n used = horizon[k].boundary === affectedBoundary;\n }\n\n for (k = j + 1; !used && k < horizon.length && horizon[k].end <= affectedBoundary.y2; k++) {\n used = horizon[k].boundary === affectedBoundary;\n }\n\n for (k = 0; !used && k < changedHorizon.length; k++) {\n used = changedHorizon[k].boundary === affectedBoundary;\n }\n\n if (!used) {\n affectedBoundary.x2New = maxXNew;\n }\n }\n\n Array.prototype.splice.apply(horizon, [i, j - i + 1, ...changedHorizon]);\n }\n\n for (const horizonPart of horizon) {\n const affectedBoundary = horizonPart.boundary;\n\n if (affectedBoundary.x2New === undefined) {\n affectedBoundary.x2New = Math.max(width, affectedBoundary.x2);\n }\n }\n}\n\nclass TextLayerRenderTask {\n constructor({\n textContent,\n textContentStream,\n container,\n viewport,\n textDivs,\n textContentItemsStr,\n enhanceTextSelection\n }) {\n if (enhanceTextSelection) {\n (0, _display_utils.deprecated)(\"The `enhanceTextSelection` functionality will be removed in the future.\");\n }\n\n this._textContent = textContent;\n this._textContentStream = textContentStream;\n this._container = container;\n this._document = container.ownerDocument;\n this._viewport = viewport;\n this._textDivs = textDivs || [];\n this._textContentItemsStr = textContentItemsStr || [];\n this._enhanceTextSelection = !!enhanceTextSelection;\n this._fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n this._reader = null;\n this._layoutTextLastFontSize = null;\n this._layoutTextLastFontFamily = null;\n this._layoutTextCtx = null;\n this._textDivProperties = new WeakMap();\n this._renderingDone = false;\n this._canceled = false;\n this._capability = (0, _util.createPromiseCapability)();\n this._renderTimer = null;\n this._bounds = [];\n this._devicePixelRatio = globalThis.devicePixelRatio || 1;\n\n this._capability.promise.finally(() => {\n if (!this._enhanceTextSelection) {\n this._textDivProperties = null;\n }\n\n if (this._layoutTextCtx) {\n this._layoutTextCtx.canvas.width = 0;\n this._layoutTextCtx.canvas.height = 0;\n this._layoutTextCtx = null;\n }\n }).catch(() => {});\n }\n\n get promise() {\n return this._capability.promise;\n }\n\n cancel() {\n this._canceled = true;\n\n if (this._reader) {\n this._reader.cancel(new _util.AbortException(\"TextLayer task cancelled.\")).catch(() => {});\n\n this._reader = null;\n }\n\n if (this._renderTimer !== null) {\n clearTimeout(this._renderTimer);\n this._renderTimer = null;\n }\n\n this._capability.reject(new Error(\"TextLayer task cancelled.\"));\n }\n\n _processItems(items, styleCache) {\n for (let i = 0, len = items.length; i < len; i++) {\n if (items[i].str === undefined) {\n if (items[i].type === \"beginMarkedContentProps\" || items[i].type === \"beginMarkedContent\") {\n const parent = this._container;\n this._container = document.createElement(\"span\");\n\n this._container.classList.add(\"markedContent\");\n\n if (items[i].id !== null) {\n this._container.setAttribute(\"id\", `${items[i].id}`);\n }\n\n parent.append(this._container);\n } else if (items[i].type === \"endMarkedContent\") {\n this._container = this._container.parentNode;\n }\n\n continue;\n }\n\n this._textContentItemsStr.push(items[i].str);\n\n appendText(this, items[i], styleCache, this._layoutTextCtx);\n }\n }\n\n _layoutText(textDiv) {\n const textDivProperties = this._textDivProperties.get(textDiv);\n\n let transform = \"\";\n\n if (textDivProperties.canvasWidth !== 0 && textDivProperties.hasText) {\n const {\n fontFamily\n } = textDiv.style;\n const {\n fontSize\n } = textDivProperties;\n\n if (fontSize !== this._layoutTextLastFontSize || fontFamily !== this._layoutTextLastFontFamily) {\n this._layoutTextCtx.font = `${fontSize * this._devicePixelRatio}px ${fontFamily}`;\n this._layoutTextLastFontSize = fontSize;\n this._layoutTextLastFontFamily = fontFamily;\n }\n\n const {\n width\n } = this._layoutTextCtx.measureText(textDiv.textContent);\n\n if (width > 0) {\n const scale = this._devicePixelRatio * textDivProperties.canvasWidth / width;\n\n if (this._enhanceTextSelection) {\n textDivProperties.scale = scale;\n }\n\n transform = `scaleX(${scale})`;\n }\n }\n\n if (textDivProperties.angle !== 0) {\n transform = `rotate(${textDivProperties.angle}deg) ${transform}`;\n }\n\n if (transform.length > 0) {\n if (this._enhanceTextSelection) {\n textDivProperties.originalTransform = transform;\n }\n\n textDiv.style.transform = transform;\n }\n\n if (textDivProperties.hasText) {\n this._container.append(textDiv);\n }\n\n if (textDivProperties.hasEOL) {\n const br = document.createElement(\"br\");\n br.setAttribute(\"role\", \"presentation\");\n\n this._container.append(br);\n }\n }\n\n _render(timeout = 0) {\n const capability = (0, _util.createPromiseCapability)();\n let styleCache = Object.create(null);\n\n const canvas = this._document.createElement(\"canvas\");\n\n canvas.height = canvas.width = DEFAULT_FONT_SIZE;\n this._layoutTextCtx = canvas.getContext(\"2d\", {\n alpha: false\n });\n\n if (this._textContent) {\n const textItems = this._textContent.items;\n const textStyles = this._textContent.styles;\n\n this._processItems(textItems, textStyles);\n\n capability.resolve();\n } else if (this._textContentStream) {\n const pump = () => {\n this._reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n capability.resolve();\n return;\n }\n\n Object.assign(styleCache, value.styles);\n\n this._processItems(value.items, styleCache);\n\n pump();\n }, capability.reject);\n };\n\n this._reader = this._textContentStream.getReader();\n pump();\n } else {\n throw new Error('Neither \"textContent\" nor \"textContentStream\" parameters specified.');\n }\n\n capability.promise.then(() => {\n styleCache = null;\n\n if (!timeout) {\n render(this);\n } else {\n this._renderTimer = setTimeout(() => {\n render(this);\n this._renderTimer = null;\n }, timeout);\n }\n }, this._capability.reject);\n }\n\n expandTextDivs(expandDivs = false) {\n if (!this._enhanceTextSelection || !this._renderingDone) {\n return;\n }\n\n if (this._bounds !== null) {\n expand(this);\n this._bounds = null;\n }\n\n const transformBuf = [],\n paddingBuf = [];\n\n for (let i = 0, ii = this._textDivs.length; i < ii; i++) {\n const div = this._textDivs[i];\n\n const divProps = this._textDivProperties.get(div);\n\n if (!divProps.hasText) {\n continue;\n }\n\n if (expandDivs) {\n transformBuf.length = 0;\n paddingBuf.length = 0;\n\n if (divProps.originalTransform) {\n transformBuf.push(divProps.originalTransform);\n }\n\n if (divProps.paddingTop > 0) {\n paddingBuf.push(`${divProps.paddingTop}px`);\n transformBuf.push(`translateY(${-divProps.paddingTop}px)`);\n } else {\n paddingBuf.push(0);\n }\n\n if (divProps.paddingRight > 0) {\n paddingBuf.push(`${divProps.paddingRight / divProps.scale}px`);\n } else {\n paddingBuf.push(0);\n }\n\n if (divProps.paddingBottom > 0) {\n paddingBuf.push(`${divProps.paddingBottom}px`);\n } else {\n paddingBuf.push(0);\n }\n\n if (divProps.paddingLeft > 0) {\n paddingBuf.push(`${divProps.paddingLeft / divProps.scale}px`);\n transformBuf.push(`translateX(${-divProps.paddingLeft / divProps.scale}px)`);\n } else {\n paddingBuf.push(0);\n }\n\n div.style.padding = paddingBuf.join(\" \");\n\n if (transformBuf.length) {\n div.style.transform = transformBuf.join(\" \");\n }\n } else {\n div.style.padding = null;\n div.style.transform = divProps.originalTransform;\n }\n }\n }\n\n}\n\nexports.TextLayerRenderTask = TextLayerRenderTask;\n\nfunction renderTextLayer(renderParameters) {\n const task = new TextLayerRenderTask({\n textContent: renderParameters.textContent,\n textContentStream: renderParameters.textContentStream,\n container: renderParameters.container,\n viewport: renderParameters.viewport,\n textDivs: renderParameters.textDivs,\n textContentItemsStr: renderParameters.textContentItemsStr,\n enhanceTextSelection: renderParameters.enhanceTextSelection\n });\n\n task._render(renderParameters.timeout);\n\n return task;\n}\n\n/***/ }),\n/* 31 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.SVGGraphics = void 0;\n\nvar _display_utils = __w_pdfjs_require__(4);\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _is_node = __w_pdfjs_require__(3);\n\nlet SVGGraphics = class {\n constructor() {\n (0, _util.unreachable)(\"Not implemented: SVGGraphics\");\n }\n\n};\nexports.SVGGraphics = SVGGraphics;\n{\n const SVG_DEFAULTS = {\n fontStyle: \"normal\",\n fontWeight: \"normal\",\n fillColor: \"#000000\"\n };\n const XML_NS = \"http://www.w3.org/XML/1998/namespace\";\n const XLINK_NS = \"http://www.w3.org/1999/xlink\";\n const LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\n const LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\n\n const createObjectURL = function (data, contentType = \"\", forceDataSchema = false) {\n if (URL.createObjectURL && typeof Blob !== \"undefined\" && !forceDataSchema) {\n return URL.createObjectURL(new Blob([data], {\n type: contentType\n }));\n }\n\n const digits = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n let buffer = `data:${contentType};base64,`;\n\n for (let i = 0, ii = data.length; i < ii; i += 3) {\n const b1 = data[i] & 0xff;\n const b2 = data[i + 1] & 0xff;\n const b3 = data[i + 2] & 0xff;\n const d1 = b1 >> 2,\n d2 = (b1 & 3) << 4 | b2 >> 4;\n const d3 = i + 1 < ii ? (b2 & 0xf) << 2 | b3 >> 6 : 64;\n const d4 = i + 2 < ii ? b3 & 0x3f : 64;\n buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n }\n\n return buffer;\n };\n\n const convertImgDataToPng = function () {\n const PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);\n const CHUNK_WRAPPER_SIZE = 12;\n const crcTable = new Int32Array(256);\n\n for (let i = 0; i < 256; i++) {\n let c = i;\n\n for (let h = 0; h < 8; h++) {\n if (c & 1) {\n c = 0xedb88320 ^ c >> 1 & 0x7fffffff;\n } else {\n c = c >> 1 & 0x7fffffff;\n }\n }\n\n crcTable[i] = c;\n }\n\n function crc32(data, start, end) {\n let crc = -1;\n\n for (let i = start; i < end; i++) {\n const a = (crc ^ data[i]) & 0xff;\n const b = crcTable[a];\n crc = crc >>> 8 ^ b;\n }\n\n return crc ^ -1;\n }\n\n function writePngChunk(type, body, data, offset) {\n let p = offset;\n const len = body.length;\n data[p] = len >> 24 & 0xff;\n data[p + 1] = len >> 16 & 0xff;\n data[p + 2] = len >> 8 & 0xff;\n data[p + 3] = len & 0xff;\n p += 4;\n data[p] = type.charCodeAt(0) & 0xff;\n data[p + 1] = type.charCodeAt(1) & 0xff;\n data[p + 2] = type.charCodeAt(2) & 0xff;\n data[p + 3] = type.charCodeAt(3) & 0xff;\n p += 4;\n data.set(body, p);\n p += body.length;\n const crc = crc32(data, offset + 4, p);\n data[p] = crc >> 24 & 0xff;\n data[p + 1] = crc >> 16 & 0xff;\n data[p + 2] = crc >> 8 & 0xff;\n data[p + 3] = crc & 0xff;\n }\n\n function adler32(data, start, end) {\n let a = 1;\n let b = 0;\n\n for (let i = start; i < end; ++i) {\n a = (a + (data[i] & 0xff)) % 65521;\n b = (b + a) % 65521;\n }\n\n return b << 16 | a;\n }\n\n function deflateSync(literals) {\n if (!_is_node.isNodeJS) {\n return deflateSyncUncompressed(literals);\n }\n\n try {\n let input;\n\n if (parseInt(process.versions.node) >= 8) {\n input = literals;\n } else {\n input = Buffer.from(literals);\n }\n\n const output = require(\"zlib\").deflateSync(input, {\n level: 9\n });\n\n return output instanceof Uint8Array ? output : new Uint8Array(output);\n } catch (e) {\n (0, _util.warn)(\"Not compressing PNG because zlib.deflateSync is unavailable: \" + e);\n }\n\n return deflateSyncUncompressed(literals);\n }\n\n function deflateSyncUncompressed(literals) {\n let len = literals.length;\n const maxBlockLength = 0xffff;\n const deflateBlocks = Math.ceil(len / maxBlockLength);\n const idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4);\n let pi = 0;\n idat[pi++] = 0x78;\n idat[pi++] = 0x9c;\n let pos = 0;\n\n while (len > maxBlockLength) {\n idat[pi++] = 0x00;\n idat[pi++] = 0xff;\n idat[pi++] = 0xff;\n idat[pi++] = 0x00;\n idat[pi++] = 0x00;\n idat.set(literals.subarray(pos, pos + maxBlockLength), pi);\n pi += maxBlockLength;\n pos += maxBlockLength;\n len -= maxBlockLength;\n }\n\n idat[pi++] = 0x01;\n idat[pi++] = len & 0xff;\n idat[pi++] = len >> 8 & 0xff;\n idat[pi++] = ~len & 0xffff & 0xff;\n idat[pi++] = (~len & 0xffff) >> 8 & 0xff;\n idat.set(literals.subarray(pos), pi);\n pi += literals.length - pos;\n const adler = adler32(literals, 0, literals.length);\n idat[pi++] = adler >> 24 & 0xff;\n idat[pi++] = adler >> 16 & 0xff;\n idat[pi++] = adler >> 8 & 0xff;\n idat[pi++] = adler & 0xff;\n return idat;\n }\n\n function encode(imgData, kind, forceDataSchema, isMask) {\n const width = imgData.width;\n const height = imgData.height;\n let bitDepth, colorType, lineSize;\n const bytes = imgData.data;\n\n switch (kind) {\n case _util.ImageKind.GRAYSCALE_1BPP:\n colorType = 0;\n bitDepth = 1;\n lineSize = width + 7 >> 3;\n break;\n\n case _util.ImageKind.RGB_24BPP:\n colorType = 2;\n bitDepth = 8;\n lineSize = width * 3;\n break;\n\n case _util.ImageKind.RGBA_32BPP:\n colorType = 6;\n bitDepth = 8;\n lineSize = width * 4;\n break;\n\n default:\n throw new Error(\"invalid format\");\n }\n\n const literals = new Uint8Array((1 + lineSize) * height);\n let offsetLiterals = 0,\n offsetBytes = 0;\n\n for (let y = 0; y < height; ++y) {\n literals[offsetLiterals++] = 0;\n literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals);\n offsetBytes += lineSize;\n offsetLiterals += lineSize;\n }\n\n if (kind === _util.ImageKind.GRAYSCALE_1BPP && isMask) {\n offsetLiterals = 0;\n\n for (let y = 0; y < height; y++) {\n offsetLiterals++;\n\n for (let i = 0; i < lineSize; i++) {\n literals[offsetLiterals++] ^= 0xff;\n }\n }\n }\n\n const ihdr = new Uint8Array([width >> 24 & 0xff, width >> 16 & 0xff, width >> 8 & 0xff, width & 0xff, height >> 24 & 0xff, height >> 16 & 0xff, height >> 8 & 0xff, height & 0xff, bitDepth, colorType, 0x00, 0x00, 0x00]);\n const idat = deflateSync(literals);\n const pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length;\n const data = new Uint8Array(pngLength);\n let offset = 0;\n data.set(PNG_HEADER, offset);\n offset += PNG_HEADER.length;\n writePngChunk(\"IHDR\", ihdr, data, offset);\n offset += CHUNK_WRAPPER_SIZE + ihdr.length;\n writePngChunk(\"IDATA\", idat, data, offset);\n offset += CHUNK_WRAPPER_SIZE + idat.length;\n writePngChunk(\"IEND\", new Uint8Array(0), data, offset);\n return createObjectURL(data, \"image/png\", forceDataSchema);\n }\n\n return function convertImgDataToPng(imgData, forceDataSchema, isMask) {\n const kind = imgData.kind === undefined ? _util.ImageKind.GRAYSCALE_1BPP : imgData.kind;\n return encode(imgData, kind, forceDataSchema, isMask);\n };\n }();\n\n class SVGExtraState {\n constructor() {\n this.fontSizeScale = 1;\n this.fontWeight = SVG_DEFAULTS.fontWeight;\n this.fontSize = 0;\n this.textMatrix = _util.IDENTITY_MATRIX;\n this.fontMatrix = _util.FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.textRenderingMode = _util.TextRenderingMode.FILL;\n this.textMatrixScale = 1;\n this.x = 0;\n this.y = 0;\n this.lineX = 0;\n this.lineY = 0;\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRise = 0;\n this.fillColor = SVG_DEFAULTS.fillColor;\n this.strokeColor = \"#000000\";\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.lineJoin = \"\";\n this.lineCap = \"\";\n this.miterLimit = 0;\n this.dashArray = [];\n this.dashPhase = 0;\n this.dependencies = [];\n this.activeClipUrl = null;\n this.clipGroup = null;\n this.maskId = \"\";\n }\n\n clone() {\n return Object.create(this);\n }\n\n setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n\n }\n\n function opListToTree(opList) {\n let opTree = [];\n const tmp = [];\n\n for (const opListElement of opList) {\n if (opListElement.fn === \"save\") {\n opTree.push({\n fnId: 92,\n fn: \"group\",\n items: []\n });\n tmp.push(opTree);\n opTree = opTree.at(-1).items;\n continue;\n }\n\n if (opListElement.fn === \"restore\") {\n opTree = tmp.pop();\n } else {\n opTree.push(opListElement);\n }\n }\n\n return opTree;\n }\n\n function pf(value) {\n if (Number.isInteger(value)) {\n return value.toString();\n }\n\n const s = value.toFixed(10);\n let i = s.length - 1;\n\n if (s[i] !== \"0\") {\n return s;\n }\n\n do {\n i--;\n } while (s[i] === \"0\");\n\n return s.substring(0, s[i] === \".\" ? i : i + 1);\n }\n\n function pm(m) {\n if (m[4] === 0 && m[5] === 0) {\n if (m[1] === 0 && m[2] === 0) {\n if (m[0] === 1 && m[3] === 1) {\n return \"\";\n }\n\n return `scale(${pf(m[0])} ${pf(m[3])})`;\n }\n\n if (m[0] === m[3] && m[1] === -m[2]) {\n const a = Math.acos(m[0]) * 180 / Math.PI;\n return `rotate(${pf(a)})`;\n }\n } else {\n if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) {\n return `translate(${pf(m[4])} ${pf(m[5])})`;\n }\n }\n\n return `matrix(${pf(m[0])} ${pf(m[1])} ${pf(m[2])} ${pf(m[3])} ${pf(m[4])} ` + `${pf(m[5])})`;\n }\n\n let clipCount = 0;\n let maskCount = 0;\n let shadingCount = 0;\n exports.SVGGraphics = SVGGraphics = class {\n constructor(commonObjs, objs, forceDataSchema = false) {\n (0, _display_utils.deprecated)(\"The SVG back-end is no longer maintained and *may* be removed in the future.\");\n this.svgFactory = new _display_utils.DOMSVGFactory();\n this.current = new SVGExtraState();\n this.transformMatrix = _util.IDENTITY_MATRIX;\n this.transformStack = [];\n this.extraStack = [];\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.embedFonts = false;\n this.embeddedFonts = Object.create(null);\n this.cssStyle = null;\n this.forceDataSchema = !!forceDataSchema;\n this._operatorIdMapping = [];\n\n for (const op in _util.OPS) {\n this._operatorIdMapping[_util.OPS[op]] = op;\n }\n }\n\n save() {\n this.transformStack.push(this.transformMatrix);\n const old = this.current;\n this.extraStack.push(old);\n this.current = old.clone();\n }\n\n restore() {\n this.transformMatrix = this.transformStack.pop();\n this.current = this.extraStack.pop();\n this.pendingClip = null;\n this.tgrp = null;\n }\n\n group(items) {\n this.save();\n this.executeOpTree(items);\n this.restore();\n }\n\n loadDependencies(operatorList) {\n const fnArray = operatorList.fnArray;\n const argsArray = operatorList.argsArray;\n\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n if (fnArray[i] !== _util.OPS.dependency) {\n continue;\n }\n\n for (const obj of argsArray[i]) {\n const objsPool = obj.startsWith(\"g_\") ? this.commonObjs : this.objs;\n const promise = new Promise(resolve => {\n objsPool.get(obj, resolve);\n });\n this.current.dependencies.push(promise);\n }\n }\n\n return Promise.all(this.current.dependencies);\n }\n\n transform(a, b, c, d, e, f) {\n const transformMatrix = [a, b, c, d, e, f];\n this.transformMatrix = _util.Util.transform(this.transformMatrix, transformMatrix);\n this.tgrp = null;\n }\n\n getSVG(operatorList, viewport) {\n this.viewport = viewport;\n\n const svgElement = this._initialize(viewport);\n\n return this.loadDependencies(operatorList).then(() => {\n this.transformMatrix = _util.IDENTITY_MATRIX;\n this.executeOpTree(this.convertOpList(operatorList));\n return svgElement;\n });\n }\n\n convertOpList(operatorList) {\n const operatorIdMapping = this._operatorIdMapping;\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n const opList = [];\n\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n const fnId = fnArray[i];\n opList.push({\n fnId,\n fn: operatorIdMapping[fnId],\n args: argsArray[i]\n });\n }\n\n return opListToTree(opList);\n }\n\n executeOpTree(opTree) {\n for (const opTreeElement of opTree) {\n const fn = opTreeElement.fn;\n const fnId = opTreeElement.fnId;\n const args = opTreeElement.args;\n\n switch (fnId | 0) {\n case _util.OPS.beginText:\n this.beginText();\n break;\n\n case _util.OPS.dependency:\n break;\n\n case _util.OPS.setLeading:\n this.setLeading(args);\n break;\n\n case _util.OPS.setLeadingMoveText:\n this.setLeadingMoveText(args[0], args[1]);\n break;\n\n case _util.OPS.setFont:\n this.setFont(args);\n break;\n\n case _util.OPS.showText:\n this.showText(args[0]);\n break;\n\n case _util.OPS.showSpacedText:\n this.showText(args[0]);\n break;\n\n case _util.OPS.endText:\n this.endText();\n break;\n\n case _util.OPS.moveText:\n this.moveText(args[0], args[1]);\n break;\n\n case _util.OPS.setCharSpacing:\n this.setCharSpacing(args[0]);\n break;\n\n case _util.OPS.setWordSpacing:\n this.setWordSpacing(args[0]);\n break;\n\n case _util.OPS.setHScale:\n this.setHScale(args[0]);\n break;\n\n case _util.OPS.setTextMatrix:\n this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);\n break;\n\n case _util.OPS.setTextRise:\n this.setTextRise(args[0]);\n break;\n\n case _util.OPS.setTextRenderingMode:\n this.setTextRenderingMode(args[0]);\n break;\n\n case _util.OPS.setLineWidth:\n this.setLineWidth(args[0]);\n break;\n\n case _util.OPS.setLineJoin:\n this.setLineJoin(args[0]);\n break;\n\n case _util.OPS.setLineCap:\n this.setLineCap(args[0]);\n break;\n\n case _util.OPS.setMiterLimit:\n this.setMiterLimit(args[0]);\n break;\n\n case _util.OPS.setFillRGBColor:\n this.setFillRGBColor(args[0], args[1], args[2]);\n break;\n\n case _util.OPS.setStrokeRGBColor:\n this.setStrokeRGBColor(args[0], args[1], args[2]);\n break;\n\n case _util.OPS.setStrokeColorN:\n this.setStrokeColorN(args);\n break;\n\n case _util.OPS.setFillColorN:\n this.setFillColorN(args);\n break;\n\n case _util.OPS.shadingFill:\n this.shadingFill(args[0]);\n break;\n\n case _util.OPS.setDash:\n this.setDash(args[0], args[1]);\n break;\n\n case _util.OPS.setRenderingIntent:\n this.setRenderingIntent(args[0]);\n break;\n\n case _util.OPS.setFlatness:\n this.setFlatness(args[0]);\n break;\n\n case _util.OPS.setGState:\n this.setGState(args[0]);\n break;\n\n case _util.OPS.fill:\n this.fill();\n break;\n\n case _util.OPS.eoFill:\n this.eoFill();\n break;\n\n case _util.OPS.stroke:\n this.stroke();\n break;\n\n case _util.OPS.fillStroke:\n this.fillStroke();\n break;\n\n case _util.OPS.eoFillStroke:\n this.eoFillStroke();\n break;\n\n case _util.OPS.clip:\n this.clip(\"nonzero\");\n break;\n\n case _util.OPS.eoClip:\n this.clip(\"evenodd\");\n break;\n\n case _util.OPS.paintSolidColorImageMask:\n this.paintSolidColorImageMask();\n break;\n\n case _util.OPS.paintImageXObject:\n this.paintImageXObject(args[0]);\n break;\n\n case _util.OPS.paintInlineImageXObject:\n this.paintInlineImageXObject(args[0]);\n break;\n\n case _util.OPS.paintImageMaskXObject:\n this.paintImageMaskXObject(args[0]);\n break;\n\n case _util.OPS.paintFormXObjectBegin:\n this.paintFormXObjectBegin(args[0], args[1]);\n break;\n\n case _util.OPS.paintFormXObjectEnd:\n this.paintFormXObjectEnd();\n break;\n\n case _util.OPS.closePath:\n this.closePath();\n break;\n\n case _util.OPS.closeStroke:\n this.closeStroke();\n break;\n\n case _util.OPS.closeFillStroke:\n this.closeFillStroke();\n break;\n\n case _util.OPS.closeEOFillStroke:\n this.closeEOFillStroke();\n break;\n\n case _util.OPS.nextLine:\n this.nextLine();\n break;\n\n case _util.OPS.transform:\n this.transform(args[0], args[1], args[2], args[3], args[4], args[5]);\n break;\n\n case _util.OPS.constructPath:\n this.constructPath(args[0], args[1]);\n break;\n\n case _util.OPS.endPath:\n this.endPath();\n break;\n\n case 92:\n this.group(opTreeElement.items);\n break;\n\n default:\n (0, _util.warn)(`Unimplemented operator ${fn}`);\n break;\n }\n }\n }\n\n setWordSpacing(wordSpacing) {\n this.current.wordSpacing = wordSpacing;\n }\n\n setCharSpacing(charSpacing) {\n this.current.charSpacing = charSpacing;\n }\n\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n\n setTextMatrix(a, b, c, d, e, f) {\n const current = this.current;\n current.textMatrix = current.lineMatrix = [a, b, c, d, e, f];\n current.textMatrixScale = Math.hypot(a, b);\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n current.xcoords = [];\n current.ycoords = [];\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(null, \"font-size\", `${pf(current.fontSize)}px`);\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n current.txtElement = this.svgFactory.createElement(\"svg:text\");\n current.txtElement.append(current.tspan);\n }\n\n beginText() {\n const current = this.current;\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n current.textMatrix = _util.IDENTITY_MATRIX;\n current.lineMatrix = _util.IDENTITY_MATRIX;\n current.textMatrixScale = 1;\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.txtElement = this.svgFactory.createElement(\"svg:text\");\n current.txtgrp = this.svgFactory.createElement(\"svg:g\");\n current.xcoords = [];\n current.ycoords = [];\n }\n\n moveText(x, y) {\n const current = this.current;\n current.x = current.lineX += x;\n current.y = current.lineY += y;\n current.xcoords = [];\n current.ycoords = [];\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(null, \"font-size\", `${pf(current.fontSize)}px`);\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n }\n\n showText(glyphs) {\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n\n if (fontSize === 0) {\n return;\n }\n\n const fontSizeScale = current.fontSizeScale;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n let x = 0;\n\n for (const glyph of glyphs) {\n if (glyph === null) {\n x += fontDirection * wordSpacing;\n continue;\n } else if (typeof glyph === \"number\") {\n x += spacingDir * glyph * fontSize / 1000;\n continue;\n }\n\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n let scaledX, scaledY;\n let width = glyph.width;\n\n if (vertical) {\n let vx;\n const vmetric = glyph.vmetric || defaultVMetrics;\n vx = glyph.vmetric ? vmetric[1] : width * 0.5;\n vx = -vx * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n\n if (glyph.isInFont || font.missingFile) {\n current.xcoords.push(current.x + scaledX);\n\n if (vertical) {\n current.ycoords.push(-current.y + scaledY);\n }\n\n current.tspan.textContent += character;\n } else {}\n\n let charWidth;\n\n if (vertical) {\n charWidth = width * widthAdvanceScale - spacing * fontDirection;\n } else {\n charWidth = width * widthAdvanceScale + spacing * fontDirection;\n }\n\n x += charWidth;\n }\n\n current.tspan.setAttributeNS(null, \"x\", current.xcoords.map(pf).join(\" \"));\n\n if (vertical) {\n current.tspan.setAttributeNS(null, \"y\", current.ycoords.map(pf).join(\" \"));\n } else {\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n }\n\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(null, \"font-size\", `${pf(current.fontSize)}px`);\n\n if (current.fontStyle !== SVG_DEFAULTS.fontStyle) {\n current.tspan.setAttributeNS(null, \"font-style\", current.fontStyle);\n }\n\n if (current.fontWeight !== SVG_DEFAULTS.fontWeight) {\n current.tspan.setAttributeNS(null, \"font-weight\", current.fontWeight);\n }\n\n const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;\n\n if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n if (current.fillColor !== SVG_DEFAULTS.fillColor) {\n current.tspan.setAttributeNS(null, \"fill\", current.fillColor);\n }\n\n if (current.fillAlpha < 1) {\n current.tspan.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n }\n } else if (current.textRenderingMode === _util.TextRenderingMode.ADD_TO_PATH) {\n current.tspan.setAttributeNS(null, \"fill\", \"transparent\");\n } else {\n current.tspan.setAttributeNS(null, \"fill\", \"none\");\n }\n\n if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n const lineWidthScale = 1 / (current.textMatrixScale || 1);\n\n this._setStrokeAttributes(current.tspan, lineWidthScale);\n }\n\n let textMatrix = current.textMatrix;\n\n if (current.textRise !== 0) {\n textMatrix = textMatrix.slice();\n textMatrix[5] += current.textRise;\n }\n\n current.txtElement.setAttributeNS(null, \"transform\", `${pm(textMatrix)} scale(${pf(textHScale)}, -1)`);\n current.txtElement.setAttributeNS(XML_NS, \"xml:space\", \"preserve\");\n current.txtElement.append(current.tspan);\n current.txtgrp.append(current.txtElement);\n\n this._ensureTransformGroup().append(current.txtElement);\n }\n\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n\n addFontStyle(fontObj) {\n if (!fontObj.data) {\n throw new Error(\"addFontStyle: No font data available, \" + 'ensure that the \"fontExtraProperties\" API parameter is set.');\n }\n\n if (!this.cssStyle) {\n this.cssStyle = this.svgFactory.createElement(\"svg:style\");\n this.cssStyle.setAttributeNS(null, \"type\", \"text/css\");\n this.defs.append(this.cssStyle);\n }\n\n const url = createObjectURL(fontObj.data, fontObj.mimetype, this.forceDataSchema);\n this.cssStyle.textContent += `@font-face { font-family: \"${fontObj.loadedName}\";` + ` src: url(${url}); }\\n`;\n }\n\n setFont(details) {\n const current = this.current;\n const fontObj = this.commonObjs.get(details[0]);\n let size = details[1];\n current.font = fontObj;\n\n if (this.embedFonts && !fontObj.missingFile && !this.embeddedFonts[fontObj.loadedName]) {\n this.addFontStyle(fontObj);\n this.embeddedFonts[fontObj.loadedName] = fontObj;\n }\n\n current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX;\n let bold = \"normal\";\n\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n\n current.fontSize = size;\n current.fontFamily = fontObj.loadedName;\n current.fontWeight = bold;\n current.fontStyle = italic;\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n current.xcoords = [];\n current.ycoords = [];\n }\n\n endText() {\n const current = this.current;\n\n if (current.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG && current.txtElement?.hasChildNodes()) {\n current.element = current.txtElement;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n\n setLineWidth(width) {\n if (width > 0) {\n this.current.lineWidth = width;\n }\n }\n\n setLineCap(style) {\n this.current.lineCap = LINE_CAP_STYLES[style];\n }\n\n setLineJoin(style) {\n this.current.lineJoin = LINE_JOIN_STYLES[style];\n }\n\n setMiterLimit(limit) {\n this.current.miterLimit = limit;\n }\n\n setStrokeAlpha(strokeAlpha) {\n this.current.strokeAlpha = strokeAlpha;\n }\n\n setStrokeRGBColor(r, g, b) {\n this.current.strokeColor = _util.Util.makeHexColor(r, g, b);\n }\n\n setFillAlpha(fillAlpha) {\n this.current.fillAlpha = fillAlpha;\n }\n\n setFillRGBColor(r, g, b) {\n this.current.fillColor = _util.Util.makeHexColor(r, g, b);\n this.current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n this.current.xcoords = [];\n this.current.ycoords = [];\n }\n\n setStrokeColorN(args) {\n this.current.strokeColor = this._makeColorN_Pattern(args);\n }\n\n setFillColorN(args) {\n this.current.fillColor = this._makeColorN_Pattern(args);\n }\n\n shadingFill(args) {\n const width = this.viewport.width;\n const height = this.viewport.height;\n\n const inv = _util.Util.inverseTransform(this.transformMatrix);\n\n const bl = _util.Util.applyTransform([0, 0], inv);\n\n const br = _util.Util.applyTransform([0, height], inv);\n\n const ul = _util.Util.applyTransform([width, 0], inv);\n\n const ur = _util.Util.applyTransform([width, height], inv);\n\n const x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n const y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n const x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n const y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", x0);\n rect.setAttributeNS(null, \"y\", y0);\n rect.setAttributeNS(null, \"width\", x1 - x0);\n rect.setAttributeNS(null, \"height\", y1 - y0);\n rect.setAttributeNS(null, \"fill\", this._makeShadingPattern(args));\n\n if (this.current.fillAlpha < 1) {\n rect.setAttributeNS(null, \"fill-opacity\", this.current.fillAlpha);\n }\n\n this._ensureTransformGroup().append(rect);\n }\n\n _makeColorN_Pattern(args) {\n if (args[0] === \"TilingPattern\") {\n return this._makeTilingPattern(args);\n }\n\n return this._makeShadingPattern(args);\n }\n\n _makeTilingPattern(args) {\n const color = args[1];\n const operatorList = args[2];\n const matrix = args[3] || _util.IDENTITY_MATRIX;\n const [x0, y0, x1, y1] = args[4];\n const xstep = args[5];\n const ystep = args[6];\n const paintType = args[7];\n const tilingId = `shading${shadingCount++}`;\n\n const [tx0, ty0, tx1, ty1] = _util.Util.normalizeRect([..._util.Util.applyTransform([x0, y0], matrix), ..._util.Util.applyTransform([x1, y1], matrix)]);\n\n const [xscale, yscale] = _util.Util.singularValueDecompose2dScale(matrix);\n\n const txstep = xstep * xscale;\n const tystep = ystep * yscale;\n const tiling = this.svgFactory.createElement(\"svg:pattern\");\n tiling.setAttributeNS(null, \"id\", tilingId);\n tiling.setAttributeNS(null, \"patternUnits\", \"userSpaceOnUse\");\n tiling.setAttributeNS(null, \"width\", txstep);\n tiling.setAttributeNS(null, \"height\", tystep);\n tiling.setAttributeNS(null, \"x\", `${tx0}`);\n tiling.setAttributeNS(null, \"y\", `${ty0}`);\n const svg = this.svg;\n const transformMatrix = this.transformMatrix;\n const fillColor = this.current.fillColor;\n const strokeColor = this.current.strokeColor;\n const bbox = this.svgFactory.create(tx1 - tx0, ty1 - ty0);\n this.svg = bbox;\n this.transformMatrix = matrix;\n\n if (paintType === 2) {\n const cssColor = _util.Util.makeHexColor(...color);\n\n this.current.fillColor = cssColor;\n this.current.strokeColor = cssColor;\n }\n\n this.executeOpTree(this.convertOpList(operatorList));\n this.svg = svg;\n this.transformMatrix = transformMatrix;\n this.current.fillColor = fillColor;\n this.current.strokeColor = strokeColor;\n tiling.append(bbox.childNodes[0]);\n this.defs.append(tiling);\n return `url(#${tilingId})`;\n }\n\n _makeShadingPattern(args) {\n if (typeof args === \"string\") {\n args = this.objs.get(args);\n }\n\n switch (args[0]) {\n case \"RadialAxial\":\n const shadingId = `shading${shadingCount++}`;\n const colorStops = args[3];\n let gradient;\n\n switch (args[1]) {\n case \"axial\":\n const point0 = args[4];\n const point1 = args[5];\n gradient = this.svgFactory.createElement(\"svg:linearGradient\");\n gradient.setAttributeNS(null, \"id\", shadingId);\n gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttributeNS(null, \"x1\", point0[0]);\n gradient.setAttributeNS(null, \"y1\", point0[1]);\n gradient.setAttributeNS(null, \"x2\", point1[0]);\n gradient.setAttributeNS(null, \"y2\", point1[1]);\n break;\n\n case \"radial\":\n const focalPoint = args[4];\n const circlePoint = args[5];\n const focalRadius = args[6];\n const circleRadius = args[7];\n gradient = this.svgFactory.createElement(\"svg:radialGradient\");\n gradient.setAttributeNS(null, \"id\", shadingId);\n gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttributeNS(null, \"cx\", circlePoint[0]);\n gradient.setAttributeNS(null, \"cy\", circlePoint[1]);\n gradient.setAttributeNS(null, \"r\", circleRadius);\n gradient.setAttributeNS(null, \"fx\", focalPoint[0]);\n gradient.setAttributeNS(null, \"fy\", focalPoint[1]);\n gradient.setAttributeNS(null, \"fr\", focalRadius);\n break;\n\n default:\n throw new Error(`Unknown RadialAxial type: ${args[1]}`);\n }\n\n for (const colorStop of colorStops) {\n const stop = this.svgFactory.createElement(\"svg:stop\");\n stop.setAttributeNS(null, \"offset\", colorStop[0]);\n stop.setAttributeNS(null, \"stop-color\", colorStop[1]);\n gradient.append(stop);\n }\n\n this.defs.append(gradient);\n return `url(#${shadingId})`;\n\n case \"Mesh\":\n (0, _util.warn)(\"Unimplemented pattern Mesh\");\n return null;\n\n case \"Dummy\":\n return \"hotpink\";\n\n default:\n throw new Error(`Unknown IR type: ${args[0]}`);\n }\n }\n\n setDash(dashArray, dashPhase) {\n this.current.dashArray = dashArray;\n this.current.dashPhase = dashPhase;\n }\n\n constructPath(ops, args) {\n const current = this.current;\n let x = current.x,\n y = current.y;\n let d = [];\n let j = 0;\n\n for (const op of ops) {\n switch (op | 0) {\n case _util.OPS.rectangle:\n x = args[j++];\n y = args[j++];\n const width = args[j++];\n const height = args[j++];\n const xw = x + width;\n const yh = y + height;\n d.push(\"M\", pf(x), pf(y), \"L\", pf(xw), pf(y), \"L\", pf(xw), pf(yh), \"L\", pf(x), pf(yh), \"Z\");\n break;\n\n case _util.OPS.moveTo:\n x = args[j++];\n y = args[j++];\n d.push(\"M\", pf(x), pf(y));\n break;\n\n case _util.OPS.lineTo:\n x = args[j++];\n y = args[j++];\n d.push(\"L\", pf(x), pf(y));\n break;\n\n case _util.OPS.curveTo:\n x = args[j + 4];\n y = args[j + 5];\n d.push(\"C\", pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y));\n j += 6;\n break;\n\n case _util.OPS.curveTo2:\n d.push(\"C\", pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]));\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n\n case _util.OPS.curveTo3:\n x = args[j + 2];\n y = args[j + 3];\n d.push(\"C\", pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y));\n j += 4;\n break;\n\n case _util.OPS.closePath:\n d.push(\"Z\");\n break;\n }\n }\n\n d = d.join(\" \");\n\n if (current.path && ops.length > 0 && ops[0] !== _util.OPS.rectangle && ops[0] !== _util.OPS.moveTo) {\n d = current.path.getAttributeNS(null, \"d\") + d;\n } else {\n current.path = this.svgFactory.createElement(\"svg:path\");\n\n this._ensureTransformGroup().append(current.path);\n }\n\n current.path.setAttributeNS(null, \"d\", d);\n current.path.setAttributeNS(null, \"fill\", \"none\");\n current.element = current.path;\n current.setCurrentPoint(x, y);\n }\n\n endPath() {\n const current = this.current;\n current.path = null;\n\n if (!this.pendingClip) {\n return;\n }\n\n if (!current.element) {\n this.pendingClip = null;\n return;\n }\n\n const clipId = `clippath${clipCount++}`;\n const clipPath = this.svgFactory.createElement(\"svg:clipPath\");\n clipPath.setAttributeNS(null, \"id\", clipId);\n clipPath.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n const clipElement = current.element.cloneNode(true);\n\n if (this.pendingClip === \"evenodd\") {\n clipElement.setAttributeNS(null, \"clip-rule\", \"evenodd\");\n } else {\n clipElement.setAttributeNS(null, \"clip-rule\", \"nonzero\");\n }\n\n this.pendingClip = null;\n clipPath.append(clipElement);\n this.defs.append(clipPath);\n\n if (current.activeClipUrl) {\n current.clipGroup = null;\n\n for (const prev of this.extraStack) {\n prev.clipGroup = null;\n }\n\n clipPath.setAttributeNS(null, \"clip-path\", current.activeClipUrl);\n }\n\n current.activeClipUrl = `url(#${clipId})`;\n this.tgrp = null;\n }\n\n clip(type) {\n this.pendingClip = type;\n }\n\n closePath() {\n const current = this.current;\n\n if (current.path) {\n const d = `${current.path.getAttributeNS(null, \"d\")}Z`;\n current.path.setAttributeNS(null, \"d\", d);\n }\n }\n\n setLeading(leading) {\n this.current.leading = -leading;\n }\n\n setTextRise(textRise) {\n this.current.textRise = textRise;\n }\n\n setTextRenderingMode(textRenderingMode) {\n this.current.textRenderingMode = textRenderingMode;\n }\n\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n\n setRenderingIntent(intent) {}\n\n setFlatness(flatness) {}\n\n setGState(states) {\n for (const [key, value] of states) {\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n\n case \"LC\":\n this.setLineCap(value);\n break;\n\n case \"LJ\":\n this.setLineJoin(value);\n break;\n\n case \"ML\":\n this.setMiterLimit(value);\n break;\n\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n\n case \"FL\":\n this.setFlatness(value);\n break;\n\n case \"Font\":\n this.setFont(value);\n break;\n\n case \"CA\":\n this.setStrokeAlpha(value);\n break;\n\n case \"ca\":\n this.setFillAlpha(value);\n break;\n\n default:\n (0, _util.warn)(`Unimplemented graphic state operator ${key}`);\n break;\n }\n }\n }\n\n fill() {\n const current = this.current;\n\n if (current.element) {\n current.element.setAttributeNS(null, \"fill\", current.fillColor);\n current.element.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n this.endPath();\n }\n }\n\n stroke() {\n const current = this.current;\n\n if (current.element) {\n this._setStrokeAttributes(current.element);\n\n current.element.setAttributeNS(null, \"fill\", \"none\");\n this.endPath();\n }\n }\n\n _setStrokeAttributes(element, lineWidthScale = 1) {\n const current = this.current;\n let dashArray = current.dashArray;\n\n if (lineWidthScale !== 1 && dashArray.length > 0) {\n dashArray = dashArray.map(function (value) {\n return lineWidthScale * value;\n });\n }\n\n element.setAttributeNS(null, \"stroke\", current.strokeColor);\n element.setAttributeNS(null, \"stroke-opacity\", current.strokeAlpha);\n element.setAttributeNS(null, \"stroke-miterlimit\", pf(current.miterLimit));\n element.setAttributeNS(null, \"stroke-linecap\", current.lineCap);\n element.setAttributeNS(null, \"stroke-linejoin\", current.lineJoin);\n element.setAttributeNS(null, \"stroke-width\", pf(lineWidthScale * current.lineWidth) + \"px\");\n element.setAttributeNS(null, \"stroke-dasharray\", dashArray.map(pf).join(\" \"));\n element.setAttributeNS(null, \"stroke-dashoffset\", pf(lineWidthScale * current.dashPhase) + \"px\");\n }\n\n eoFill() {\n if (this.current.element) {\n this.current.element.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n }\n\n this.fill();\n }\n\n fillStroke() {\n this.stroke();\n this.fill();\n }\n\n eoFillStroke() {\n if (this.current.element) {\n this.current.element.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n }\n\n this.fillStroke();\n }\n\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n\n closeEOFillStroke() {\n this.closePath();\n this.eoFillStroke();\n }\n\n paintSolidColorImageMask() {\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", \"0\");\n rect.setAttributeNS(null, \"y\", \"0\");\n rect.setAttributeNS(null, \"width\", \"1px\");\n rect.setAttributeNS(null, \"height\", \"1px\");\n rect.setAttributeNS(null, \"fill\", this.current.fillColor);\n\n this._ensureTransformGroup().append(rect);\n }\n\n paintImageXObject(objId) {\n const imgData = objId.startsWith(\"g_\") ? this.commonObjs.get(objId) : this.objs.get(objId);\n\n if (!imgData) {\n (0, _util.warn)(`Dependent image with object ID ${objId} is not ready yet`);\n return;\n }\n\n this.paintInlineImageXObject(imgData);\n }\n\n paintInlineImageXObject(imgData, mask) {\n const width = imgData.width;\n const height = imgData.height;\n const imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask);\n const cliprect = this.svgFactory.createElement(\"svg:rect\");\n cliprect.setAttributeNS(null, \"x\", \"0\");\n cliprect.setAttributeNS(null, \"y\", \"0\");\n cliprect.setAttributeNS(null, \"width\", pf(width));\n cliprect.setAttributeNS(null, \"height\", pf(height));\n this.current.element = cliprect;\n this.clip(\"nonzero\");\n const imgEl = this.svgFactory.createElement(\"svg:image\");\n imgEl.setAttributeNS(XLINK_NS, \"xlink:href\", imgSrc);\n imgEl.setAttributeNS(null, \"x\", \"0\");\n imgEl.setAttributeNS(null, \"y\", pf(-height));\n imgEl.setAttributeNS(null, \"width\", pf(width) + \"px\");\n imgEl.setAttributeNS(null, \"height\", pf(height) + \"px\");\n imgEl.setAttributeNS(null, \"transform\", `scale(${pf(1 / width)} ${pf(-1 / height)})`);\n\n if (mask) {\n mask.append(imgEl);\n } else {\n this._ensureTransformGroup().append(imgEl);\n }\n }\n\n paintImageMaskXObject(imgData) {\n const current = this.current;\n const width = imgData.width;\n const height = imgData.height;\n const fillColor = current.fillColor;\n current.maskId = `mask${maskCount++}`;\n const mask = this.svgFactory.createElement(\"svg:mask\");\n mask.setAttributeNS(null, \"id\", current.maskId);\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", \"0\");\n rect.setAttributeNS(null, \"y\", \"0\");\n rect.setAttributeNS(null, \"width\", pf(width));\n rect.setAttributeNS(null, \"height\", pf(height));\n rect.setAttributeNS(null, \"fill\", fillColor);\n rect.setAttributeNS(null, \"mask\", `url(#${current.maskId})`);\n this.defs.append(mask);\n\n this._ensureTransformGroup().append(rect);\n\n this.paintInlineImageXObject(imgData, mask);\n }\n\n paintFormXObjectBegin(matrix, bbox) {\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);\n }\n\n if (bbox) {\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n const cliprect = this.svgFactory.createElement(\"svg:rect\");\n cliprect.setAttributeNS(null, \"x\", bbox[0]);\n cliprect.setAttributeNS(null, \"y\", bbox[1]);\n cliprect.setAttributeNS(null, \"width\", pf(width));\n cliprect.setAttributeNS(null, \"height\", pf(height));\n this.current.element = cliprect;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n\n paintFormXObjectEnd() {}\n\n _initialize(viewport) {\n const svg = this.svgFactory.create(viewport.width, viewport.height);\n const definitions = this.svgFactory.createElement(\"svg:defs\");\n svg.append(definitions);\n this.defs = definitions;\n const rootGroup = this.svgFactory.createElement(\"svg:g\");\n rootGroup.setAttributeNS(null, \"transform\", pm(viewport.transform));\n svg.append(rootGroup);\n this.svg = rootGroup;\n return svg;\n }\n\n _ensureClipGroup() {\n if (!this.current.clipGroup) {\n const clipGroup = this.svgFactory.createElement(\"svg:g\");\n clipGroup.setAttributeNS(null, \"clip-path\", this.current.activeClipUrl);\n this.svg.append(clipGroup);\n this.current.clipGroup = clipGroup;\n }\n\n return this.current.clipGroup;\n }\n\n _ensureTransformGroup() {\n if (!this.tgrp) {\n this.tgrp = this.svgFactory.createElement(\"svg:g\");\n this.tgrp.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n\n if (this.current.activeClipUrl) {\n this._ensureClipGroup().append(this.tgrp);\n } else {\n this.svg.append(this.tgrp);\n }\n }\n\n return this.tgrp;\n }\n\n };\n}\n\n/***/ }),\n/* 32 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.PDFNodeStream = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _network_utils = __w_pdfjs_require__(33);\n\n;\n\nconst fs = require(\"fs\");\n\nconst http = require(\"http\");\n\nconst https = require(\"https\");\n\nconst url = require(\"url\");\n\nconst fileUriRegex = /^file:\\/\\/\\/[a-zA-Z]:\\//;\n\nfunction parseUrl(sourceUrl) {\n const parsedUrl = url.parse(sourceUrl);\n\n if (parsedUrl.protocol === \"file:\" || parsedUrl.host) {\n return parsedUrl;\n }\n\n if (/^[a-z]:[/\\\\]/i.test(sourceUrl)) {\n return url.parse(`file:///${sourceUrl}`);\n }\n\n if (!parsedUrl.host) {\n parsedUrl.protocol = \"file:\";\n }\n\n return parsedUrl;\n}\n\nclass PDFNodeStream {\n constructor(source) {\n this.source = source;\n this.url = parseUrl(source.url);\n this.isHttp = this.url.protocol === \"http:\" || this.url.protocol === \"https:\";\n this.isFsUrl = this.url.protocol === \"file:\";\n this.httpHeaders = this.isHttp && source.httpHeaders || {};\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n\n getFullReader() {\n (0, _util.assert)(!this._fullRequestReader, \"PDFNodeStream.getFullReader can only be called once.\");\n this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this);\n return this._fullRequestReader;\n }\n\n getRangeReader(start, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n\n const rangeReader = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, start, end) : new PDFNodeStreamRangeReader(this, start, end);\n\n this._rangeRequestReaders.push(rangeReader);\n\n return rangeReader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n\n}\n\nexports.PDFNodeStream = PDFNodeStream;\n\nclass BaseFullReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n const source = stream.source;\n this._contentLength = source.length;\n this._loaded = 0;\n this._filename = null;\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n this._readableStream = null;\n this._readCapability = (0, _util.createPromiseCapability)();\n this._headersCapability = (0, _util.createPromiseCapability)();\n }\n\n get headersReady() {\n return this._headersCapability.promise;\n }\n\n get filename() {\n return this._filename;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n\n if (this._storedError) {\n throw this._storedError;\n }\n\n const chunk = this._readableStream.read();\n\n if (chunk === null) {\n this._readCapability = (0, _util.createPromiseCapability)();\n return this.read();\n }\n\n this._loaded += chunk.length;\n\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded,\n total: this._contentLength\n });\n }\n\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n\n return;\n }\n\n this._readableStream.destroy(reason);\n }\n\n _error(reason) {\n this._storedError = reason;\n\n this._readCapability.resolve();\n }\n\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this._error(new _util.AbortException(\"streaming is disabled\"));\n }\n\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n\n}\n\nclass BaseRangeReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n this._loaded = 0;\n this._readableStream = null;\n this._readCapability = (0, _util.createPromiseCapability)();\n const source = stream.source;\n this._isStreamingSupported = !source.disableStream;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n\n if (this._storedError) {\n throw this._storedError;\n }\n\n const chunk = this._readableStream.read();\n\n if (chunk === null) {\n this._readCapability = (0, _util.createPromiseCapability)();\n return this.read();\n }\n\n this._loaded += chunk.length;\n\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded\n });\n }\n\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n\n return;\n }\n\n this._readableStream.destroy(reason);\n }\n\n _error(reason) {\n this._storedError = reason;\n\n this._readCapability.resolve();\n }\n\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n\n}\n\nfunction createRequestOptions(parsedUrl, headers) {\n return {\n protocol: parsedUrl.protocol,\n auth: parsedUrl.auth,\n host: parsedUrl.hostname,\n port: parsedUrl.port,\n path: parsedUrl.path,\n method: \"GET\",\n headers\n };\n}\n\nclass PDFNodeStreamFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new _util.MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n\n this._headersCapability.reject(error);\n\n return;\n }\n\n this._headersCapability.resolve();\n\n this._setReadableStream(response);\n\n const getResponseHeader = name => {\n return this._readableStream.headers[name.toLowerCase()];\n };\n\n const {\n allowRangeRequests,\n suggestedLength\n } = (0, _network_utils.validateRangeRequestCapabilities)({\n getResponseHeader,\n isHttp: stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = allowRangeRequests;\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);\n };\n\n this._request = null;\n\n if (this._url.protocol === \"http:\") {\n this._request = http.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse);\n } else {\n this._request = https.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse);\n }\n\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n\n this._headersCapability.reject(reason);\n });\n\n this._request.end();\n }\n\n}\n\nclass PDFNodeStreamRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n this._httpHeaders = {};\n\n for (const property in stream.httpHeaders) {\n const value = stream.httpHeaders[property];\n\n if (typeof value === \"undefined\") {\n continue;\n }\n\n this._httpHeaders[property] = value;\n }\n\n this._httpHeaders.Range = `bytes=${start}-${end - 1}`;\n\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new _util.MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n return;\n }\n\n this._setReadableStream(response);\n };\n\n this._request = null;\n\n if (this._url.protocol === \"http:\") {\n this._request = http.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);\n } else {\n this._request = https.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);\n }\n\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n });\n\n this._request.end();\n }\n\n}\n\nclass PDFNodeStreamFsFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n let path = decodeURIComponent(this._url.path);\n\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n\n fs.lstat(path, (error, stat) => {\n if (error) {\n if (error.code === \"ENOENT\") {\n error = new _util.MissingPDFException(`Missing PDF \"${path}\".`);\n }\n\n this._storedError = error;\n\n this._headersCapability.reject(error);\n\n return;\n }\n\n this._contentLength = stat.size;\n\n this._setReadableStream(fs.createReadStream(path));\n\n this._headersCapability.resolve();\n });\n }\n\n}\n\nclass PDFNodeStreamFsRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n let path = decodeURIComponent(this._url.path);\n\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n\n this._setReadableStream(fs.createReadStream(path, {\n start,\n end: end - 1\n }));\n }\n\n}\n\n/***/ }),\n/* 33 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.createResponseStatusError = createResponseStatusError;\nexports.extractFilenameFromHeader = extractFilenameFromHeader;\nexports.validateRangeRequestCapabilities = validateRangeRequestCapabilities;\nexports.validateResponseStatus = validateResponseStatus;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _content_disposition = __w_pdfjs_require__(34);\n\nvar _display_utils = __w_pdfjs_require__(4);\n\nfunction validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp,\n rangeChunkSize,\n disableRange\n}) {\n const returnValues = {\n allowRangeRequests: false,\n suggestedLength: undefined\n };\n const length = parseInt(getResponseHeader(\"Content-Length\"), 10);\n\n if (!Number.isInteger(length)) {\n return returnValues;\n }\n\n returnValues.suggestedLength = length;\n\n if (length <= 2 * rangeChunkSize) {\n return returnValues;\n }\n\n if (disableRange || !isHttp) {\n return returnValues;\n }\n\n if (getResponseHeader(\"Accept-Ranges\") !== \"bytes\") {\n return returnValues;\n }\n\n const contentEncoding = getResponseHeader(\"Content-Encoding\") || \"identity\";\n\n if (contentEncoding !== \"identity\") {\n return returnValues;\n }\n\n returnValues.allowRangeRequests = true;\n return returnValues;\n}\n\nfunction extractFilenameFromHeader(getResponseHeader) {\n const contentDisposition = getResponseHeader(\"Content-Disposition\");\n\n if (contentDisposition) {\n let filename = (0, _content_disposition.getFilenameFromContentDispositionHeader)(contentDisposition);\n\n if (filename.includes(\"%\")) {\n try {\n filename = decodeURIComponent(filename);\n } catch (ex) {}\n }\n\n if ((0, _display_utils.isPdfFile)(filename)) {\n return filename;\n }\n }\n\n return null;\n}\n\nfunction createResponseStatusError(status, url) {\n if (status === 404 || status === 0 && url.startsWith(\"file:\")) {\n return new _util.MissingPDFException('Missing PDF \"' + url + '\".');\n }\n\n return new _util.UnexpectedResponseException(`Unexpected server response (${status}) while retrieving PDF \"${url}\".`, status);\n}\n\nfunction validateResponseStatus(status) {\n return status === 200 || status === 206;\n}\n\n/***/ }),\n/* 34 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.getFilenameFromContentDispositionHeader = getFilenameFromContentDispositionHeader;\n\nvar _util = __w_pdfjs_require__(1);\n\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n let needsEncodingFixup = true;\n let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = unescape(filename);\n filename = rfc5987decode(filename);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n\n tmp = rfc2231getparam(contentDisposition);\n\n if (tmp) {\n const filename = rfc2047decode(tmp);\n return fixupEncoding(filename);\n }\n\n tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n\n function toParamRegExp(attributePattern, flags) {\n return new RegExp(\"(?:^|;)\\\\s*\" + attributePattern + \"\\\\s*=\\\\s*\" + \"(\" + '[^\";\\\\s][^;\\\\s]*' + \"|\" + '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' + \")\", flags);\n }\n\n function textdecode(encoding, value) {\n if (encoding) {\n if (!/^[\\x00-\\xFF]+$/.test(value)) {\n return value;\n }\n\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = (0, _util.stringToBytes)(value);\n value = decoder.decode(buffer);\n needsEncodingFixup = false;\n } catch (e) {}\n }\n\n return value;\n }\n\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n value = textdecode(\"utf-8\", value);\n\n if (needsEncodingFixup) {\n value = textdecode(\"iso-8859-1\", value);\n }\n }\n\n return value;\n }\n\n function rfc2231getparam(contentDispositionStr) {\n const matches = [];\n let match;\n const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n\n while ((match = iter.exec(contentDispositionStr)) !== null) {\n let [, n, quot, part] = match;\n n = parseInt(n, 10);\n\n if (n in matches) {\n if (n === 0) {\n break;\n }\n\n continue;\n }\n\n matches[n] = [quot, part];\n }\n\n const parts = [];\n\n for (let n = 0; n < matches.length; ++n) {\n if (!(n in matches)) {\n break;\n }\n\n let [quot, part] = matches[n];\n part = rfc2616unquote(part);\n\n if (quot) {\n part = unescape(part);\n\n if (n === 0) {\n part = rfc5987decode(part);\n }\n }\n\n parts.push(part);\n }\n\n return parts.join(\"\");\n }\n\n function rfc2616unquote(value) {\n if (value.startsWith('\"')) {\n const parts = value.slice(1).split('\\\\\"');\n\n for (let i = 0; i < parts.length; ++i) {\n const quotindex = parts[i].indexOf('\"');\n\n if (quotindex !== -1) {\n parts[i] = parts[i].slice(0, quotindex);\n parts.length = i + 1;\n }\n\n parts[i] = parts[i].replace(/\\\\(.)/g, \"$1\");\n }\n\n value = parts.join('\"');\n }\n\n return value;\n }\n\n function rfc5987decode(extvalue) {\n const encodingend = extvalue.indexOf(\"'\");\n\n if (encodingend === -1) {\n return extvalue;\n }\n\n const encoding = extvalue.slice(0, encodingend);\n const langvalue = extvalue.slice(encodingend + 1);\n const value = langvalue.replace(/^[^']*'/, \"\");\n return textdecode(encoding, value);\n }\n\n function rfc2047decode(value) {\n if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n\n return value.replace(/=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g, function (matches, charset, encoding, text) {\n if (encoding === \"q\" || encoding === \"Q\") {\n text = text.replace(/_/g, \" \");\n text = text.replace(/=([0-9a-fA-F]{2})/g, function (match, hex) {\n return String.fromCharCode(parseInt(hex, 16));\n });\n return textdecode(charset, text);\n }\n\n try {\n text = atob(text);\n } catch (e) {}\n\n return textdecode(charset, text);\n });\n }\n\n return \"\";\n}\n\n/***/ }),\n/* 35 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.PDFNetworkStream = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _network_utils = __w_pdfjs_require__(33);\n\n;\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\n\nfunction getArrayBuffer(xhr) {\n const data = xhr.response;\n\n if (typeof data !== \"string\") {\n return data;\n }\n\n const array = (0, _util.stringToBytes)(data);\n return array.buffer;\n}\n\nclass NetworkManager {\n constructor(url, args = {}) {\n this.url = url;\n this.isHttp = /^https?:/i.test(url);\n this.httpHeaders = this.isHttp && args.httpHeaders || Object.create(null);\n this.withCredentials = args.withCredentials || false;\n\n this.getXhr = args.getXhr || function NetworkManager_getXhr() {\n return new XMLHttpRequest();\n };\n\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n }\n\n requestRange(begin, end, listeners) {\n const args = {\n begin,\n end\n };\n\n for (const prop in listeners) {\n args[prop] = listeners[prop];\n }\n\n return this.request(args);\n }\n\n requestFull(listeners) {\n return this.request(listeners);\n }\n\n request(args) {\n const xhr = this.getXhr();\n const xhrId = this.currXhrId++;\n const pendingRequest = this.pendingRequests[xhrId] = {\n xhr\n };\n xhr.open(\"GET\", this.url);\n xhr.withCredentials = this.withCredentials;\n\n for (const property in this.httpHeaders) {\n const value = this.httpHeaders[property];\n\n if (typeof value === \"undefined\") {\n continue;\n }\n\n xhr.setRequestHeader(property, value);\n }\n\n if (this.isHttp && \"begin\" in args && \"end\" in args) {\n xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\n } else {\n pendingRequest.expectedStatus = OK_RESPONSE;\n }\n\n xhr.responseType = \"arraybuffer\";\n\n if (args.onError) {\n xhr.onerror = function (evt) {\n args.onError(xhr.status);\n };\n }\n\n xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n xhr.onprogress = this.onProgress.bind(this, xhrId);\n pendingRequest.onHeadersReceived = args.onHeadersReceived;\n pendingRequest.onDone = args.onDone;\n pendingRequest.onError = args.onError;\n pendingRequest.onProgress = args.onProgress;\n xhr.send(null);\n return xhrId;\n }\n\n onProgress(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n\n if (!pendingRequest) {\n return;\n }\n\n pendingRequest.onProgress?.(evt);\n }\n\n onStateChange(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n\n if (!pendingRequest) {\n return;\n }\n\n const xhr = pendingRequest.xhr;\n\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n\n if (xhr.readyState !== 4) {\n return;\n }\n\n if (!(xhrId in this.pendingRequests)) {\n return;\n }\n\n delete this.pendingRequests[xhrId];\n\n if (xhr.status === 0 && this.isHttp) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n\n const xhrStatus = xhr.status || OK_RESPONSE;\n const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n\n if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n\n const chunk = getArrayBuffer(xhr);\n\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n const matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n pendingRequest.onDone({\n begin: parseInt(matches[1], 10),\n chunk\n });\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk\n });\n } else {\n pendingRequest.onError?.(xhr.status);\n }\n }\n\n getRequestXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n }\n\n isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n }\n\n abortRequest(xhrId) {\n const xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n }\n\n}\n\nclass PDFNetworkStream {\n constructor(source) {\n this._source = source;\n this._manager = new NetworkManager(source.url, {\n httpHeaders: source.httpHeaders,\n withCredentials: source.withCredentials\n });\n this._rangeChunkSize = source.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n _onRangeRequestReaderClosed(reader) {\n const i = this._rangeRequestReaders.indexOf(reader);\n\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n }\n\n getFullReader() {\n (0, _util.assert)(!this._fullRequestReader, \"PDFNetworkStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);\n return this._fullRequestReader;\n }\n\n getRangeReader(begin, end) {\n const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end);\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n\n this._rangeRequestReaders.push(reader);\n\n return reader;\n }\n\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n\n}\n\nexports.PDFNetworkStream = PDFNetworkStream;\n\nclass PDFNetworkStreamFullRequestReader {\n constructor(manager, source) {\n this._manager = manager;\n const args = {\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n };\n this._url = source.url;\n this._fullRequestId = manager.requestFull(args);\n this._headersReceivedCapability = (0, _util.createPromiseCapability)();\n this._disableRange = source.disableRange || false;\n this._contentLength = source.length;\n this._rangeChunkSize = source.rangeChunkSize;\n\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._isStreamingSupported = false;\n this._isRangeSupported = false;\n this._cachedChunks = [];\n this._requests = [];\n this._done = false;\n this._storedError = undefined;\n this._filename = null;\n this.onProgress = null;\n }\n\n _onHeadersReceived() {\n const fullRequestXhrId = this._fullRequestId;\n\n const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n\n const getResponseHeader = name => {\n return fullRequestXhr.getResponseHeader(name);\n };\n\n const {\n allowRangeRequests,\n suggestedLength\n } = (0, _network_utils.validateRangeRequestCapabilities)({\n getResponseHeader,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n\n if (allowRangeRequests) {\n this._isRangeSupported = true;\n }\n\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);\n\n if (this._isRangeSupported) {\n this._manager.abortRequest(fullRequestXhrId);\n }\n\n this._headersReceivedCapability.resolve();\n }\n\n _onDone(data) {\n if (data) {\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n\n requestCapability.resolve({\n value: data.chunk,\n done: false\n });\n } else {\n this._cachedChunks.push(data.chunk);\n }\n }\n\n this._done = true;\n\n if (this._cachedChunks.length > 0) {\n return;\n }\n\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n\n this._requests.length = 0;\n }\n\n _onError(status) {\n this._storedError = (0, _network_utils.createResponseStatusError)(status, this._url);\n\n this._headersReceivedCapability.reject(this._storedError);\n\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n\n this._requests.length = 0;\n this._cachedChunks.length = 0;\n }\n\n _onProgress(evt) {\n this.onProgress?.({\n loaded: evt.loaded,\n total: evt.lengthComputable ? evt.total : this._contentLength\n });\n }\n\n get filename() {\n return this._filename;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get headersReady() {\n return this._headersReceivedCapability.promise;\n }\n\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n\n if (this._cachedChunks.length > 0) {\n const chunk = this._cachedChunks.shift();\n\n return {\n value: chunk,\n done: false\n };\n }\n\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n\n const requestCapability = (0, _util.createPromiseCapability)();\n\n this._requests.push(requestCapability);\n\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n\n this._headersReceivedCapability.reject(reason);\n\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n\n this._requests.length = 0;\n\n if (this._manager.isPendingRequest(this._fullRequestId)) {\n this._manager.abortRequest(this._fullRequestId);\n }\n\n this._fullRequestReader = null;\n }\n\n}\n\nclass PDFNetworkStreamRangeRequestReader {\n constructor(manager, begin, end) {\n this._manager = manager;\n const args = {\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n };\n this._url = manager.url;\n this._requestId = manager.requestRange(begin, end, args);\n this._requests = [];\n this._queuedChunk = null;\n this._done = false;\n this._storedError = undefined;\n this.onProgress = null;\n this.onClosed = null;\n }\n\n _close() {\n this.onClosed?.(this);\n }\n\n _onDone(data) {\n const chunk = data.chunk;\n\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunk = chunk;\n }\n\n this._done = true;\n\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n\n this._requests.length = 0;\n\n this._close();\n }\n\n _onError(status) {\n this._storedError = (0, _network_utils.createResponseStatusError)(status, this._url);\n\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n\n this._requests.length = 0;\n this._queuedChunk = null;\n }\n\n _onProgress(evt) {\n if (!this.isStreamingSupported) {\n this.onProgress?.({\n loaded: evt.loaded\n });\n }\n }\n\n get isStreamingSupported() {\n return false;\n }\n\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n\n if (this._queuedChunk !== null) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n\n const requestCapability = (0, _util.createPromiseCapability)();\n\n this._requests.push(requestCapability);\n\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n\n this._requests.length = 0;\n\n if (this._manager.isPendingRequest(this._requestId)) {\n this._manager.abortRequest(this._requestId);\n }\n\n this._close();\n }\n\n}\n\n/***/ }),\n/* 36 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.PDFFetchStream = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _network_utils = __w_pdfjs_require__(33);\n\n;\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n return {\n method: \"GET\",\n headers,\n signal: abortController?.signal,\n mode: \"cors\",\n credentials: withCredentials ? \"include\" : \"same-origin\",\n redirect: \"follow\"\n };\n}\n\nfunction createHeaders(httpHeaders) {\n const headers = new Headers();\n\n for (const property in httpHeaders) {\n const value = httpHeaders[property];\n\n if (typeof value === \"undefined\") {\n continue;\n }\n\n headers.append(property, value);\n }\n\n return headers;\n}\n\nclass PDFFetchStream {\n constructor(source) {\n this.source = source;\n this.isHttp = /^https?:/i.test(source.url);\n this.httpHeaders = this.isHttp && source.httpHeaders || {};\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n\n getFullReader() {\n (0, _util.assert)(!this._fullRequestReader, \"PDFFetchStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\n }\n\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n\n const reader = new PDFFetchStreamRangeReader(this, begin, end);\n\n this._rangeRequestReaders.push(reader);\n\n return reader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n\n}\n\nexports.PDFFetchStream = PDFFetchStream;\n\nclass PDFFetchStreamReader {\n constructor(stream) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n this._filename = null;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._contentLength = source.length;\n this._headersCapability = (0, _util.createPromiseCapability)();\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n if (typeof AbortController !== \"undefined\") {\n this._abortController = new AbortController();\n }\n\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n this._headers = createHeaders(this._stream.httpHeaders);\n const url = source.url;\n fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => {\n if (!(0, _network_utils.validateResponseStatus)(response.status)) {\n throw (0, _network_utils.createResponseStatusError)(response.status, url);\n }\n\n this._reader = response.body.getReader();\n\n this._headersCapability.resolve();\n\n const getResponseHeader = name => {\n return response.headers.get(name);\n };\n\n const {\n allowRangeRequests,\n suggestedLength\n } = (0, _network_utils.validateRangeRequestCapabilities)({\n getResponseHeader,\n isHttp: this._stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = allowRangeRequests;\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);\n\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new _util.AbortException(\"Streaming is disabled.\"));\n }\n }).catch(this._headersCapability.reject);\n this.onProgress = null;\n }\n\n get headersReady() {\n return this._headersCapability.promise;\n }\n\n get filename() {\n return this._filename;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._headersCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n\n if (done) {\n return {\n value,\n done\n };\n }\n\n this._loaded += value.byteLength;\n\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded,\n total: this._contentLength\n });\n }\n\n const buffer = new Uint8Array(value).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n\n cancel(reason) {\n if (this._reader) {\n this._reader.cancel(reason);\n }\n\n if (this._abortController) {\n this._abortController.abort();\n }\n }\n\n}\n\nclass PDFFetchStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._readCapability = (0, _util.createPromiseCapability)();\n this._isStreamingSupported = !source.disableStream;\n\n if (typeof AbortController !== \"undefined\") {\n this._abortController = new AbortController();\n }\n\n this._headers = createHeaders(this._stream.httpHeaders);\n\n this._headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n\n const url = source.url;\n fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => {\n if (!(0, _network_utils.validateResponseStatus)(response.status)) {\n throw (0, _network_utils.createResponseStatusError)(response.status, url);\n }\n\n this._readCapability.resolve();\n\n this._reader = response.body.getReader();\n }).catch(this._readCapability.reject);\n this.onProgress = null;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n\n if (done) {\n return {\n value,\n done\n };\n }\n\n this._loaded += value.byteLength;\n\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded\n });\n }\n\n const buffer = new Uint8Array(value).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n\n cancel(reason) {\n if (this._reader) {\n this._reader.cancel(reason);\n }\n\n if (this._abortController) {\n this._abortController.abort();\n }\n }\n\n}\n\n/***/ })\n/******/ \t]);\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __w_pdfjs_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.\n(() => {\nvar exports = __webpack_exports__;\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"AnnotationEditorLayer\", ({\n enumerable: true,\n get: function () {\n return _annotation_editor_layer.AnnotationEditorLayer;\n }\n}));\nObject.defineProperty(exports, \"AnnotationEditorParamsType\", ({\n enumerable: true,\n get: function () {\n return _util.AnnotationEditorParamsType;\n }\n}));\nObject.defineProperty(exports, \"AnnotationEditorType\", ({\n enumerable: true,\n get: function () {\n return _util.AnnotationEditorType;\n }\n}));\nObject.defineProperty(exports, \"AnnotationEditorUIManager\", ({\n enumerable: true,\n get: function () {\n return _tools.AnnotationEditorUIManager;\n }\n}));\nObject.defineProperty(exports, \"AnnotationLayer\", ({\n enumerable: true,\n get: function () {\n return _annotation_layer.AnnotationLayer;\n }\n}));\nObject.defineProperty(exports, \"AnnotationMode\", ({\n enumerable: true,\n get: function () {\n return _util.AnnotationMode;\n }\n}));\nObject.defineProperty(exports, \"CMapCompressionType\", ({\n enumerable: true,\n get: function () {\n return _util.CMapCompressionType;\n }\n}));\nObject.defineProperty(exports, \"GlobalWorkerOptions\", ({\n enumerable: true,\n get: function () {\n return _worker_options.GlobalWorkerOptions;\n }\n}));\nObject.defineProperty(exports, \"InvalidPDFException\", ({\n enumerable: true,\n get: function () {\n return _util.InvalidPDFException;\n }\n}));\nObject.defineProperty(exports, \"LoopbackPort\", ({\n enumerable: true,\n get: function () {\n return _api.LoopbackPort;\n }\n}));\nObject.defineProperty(exports, \"MissingPDFException\", ({\n enumerable: true,\n get: function () {\n return _util.MissingPDFException;\n }\n}));\nObject.defineProperty(exports, \"OPS\", ({\n enumerable: true,\n get: function () {\n return _util.OPS;\n }\n}));\nObject.defineProperty(exports, \"PDFDataRangeTransport\", ({\n enumerable: true,\n get: function () {\n return _api.PDFDataRangeTransport;\n }\n}));\nObject.defineProperty(exports, \"PDFDateString\", ({\n enumerable: true,\n get: function () {\n return _display_utils.PDFDateString;\n }\n}));\nObject.defineProperty(exports, \"PDFWorker\", ({\n enumerable: true,\n get: function () {\n return _api.PDFWorker;\n }\n}));\nObject.defineProperty(exports, \"PasswordResponses\", ({\n enumerable: true,\n get: function () {\n return _util.PasswordResponses;\n }\n}));\nObject.defineProperty(exports, \"PermissionFlag\", ({\n enumerable: true,\n get: function () {\n return _util.PermissionFlag;\n }\n}));\nObject.defineProperty(exports, \"PixelsPerInch\", ({\n enumerable: true,\n get: function () {\n return _display_utils.PixelsPerInch;\n }\n}));\nObject.defineProperty(exports, \"RenderingCancelledException\", ({\n enumerable: true,\n get: function () {\n return _display_utils.RenderingCancelledException;\n }\n}));\nObject.defineProperty(exports, \"SVGGraphics\", ({\n enumerable: true,\n get: function () {\n return _svg.SVGGraphics;\n }\n}));\nObject.defineProperty(exports, \"UNSUPPORTED_FEATURES\", ({\n enumerable: true,\n get: function () {\n return _util.UNSUPPORTED_FEATURES;\n }\n}));\nObject.defineProperty(exports, \"UnexpectedResponseException\", ({\n enumerable: true,\n get: function () {\n return _util.UnexpectedResponseException;\n }\n}));\nObject.defineProperty(exports, \"Util\", ({\n enumerable: true,\n get: function () {\n return _util.Util;\n }\n}));\nObject.defineProperty(exports, \"VerbosityLevel\", ({\n enumerable: true,\n get: function () {\n return _util.VerbosityLevel;\n }\n}));\nObject.defineProperty(exports, \"XfaLayer\", ({\n enumerable: true,\n get: function () {\n return _xfa_layer.XfaLayer;\n }\n}));\nObject.defineProperty(exports, \"binarySearchFirstItem\", ({\n enumerable: true,\n get: function () {\n return _display_utils.binarySearchFirstItem;\n }\n}));\nObject.defineProperty(exports, \"build\", ({\n enumerable: true,\n get: function () {\n return _api.build;\n }\n}));\nObject.defineProperty(exports, \"createPromiseCapability\", ({\n enumerable: true,\n get: function () {\n return _util.createPromiseCapability;\n }\n}));\nObject.defineProperty(exports, \"createValidAbsoluteUrl\", ({\n enumerable: true,\n get: function () {\n return _util.createValidAbsoluteUrl;\n }\n}));\nObject.defineProperty(exports, \"getDocument\", ({\n enumerable: true,\n get: function () {\n return _api.getDocument;\n }\n}));\nObject.defineProperty(exports, \"getFilenameFromUrl\", ({\n enumerable: true,\n get: function () {\n return _display_utils.getFilenameFromUrl;\n }\n}));\nObject.defineProperty(exports, \"getPdfFilenameFromUrl\", ({\n enumerable: true,\n get: function () {\n return _display_utils.getPdfFilenameFromUrl;\n }\n}));\nObject.defineProperty(exports, \"getXfaPageViewport\", ({\n enumerable: true,\n get: function () {\n return _display_utils.getXfaPageViewport;\n }\n}));\nObject.defineProperty(exports, \"isPdfFile\", ({\n enumerable: true,\n get: function () {\n return _display_utils.isPdfFile;\n }\n}));\nObject.defineProperty(exports, \"loadScript\", ({\n enumerable: true,\n get: function () {\n return _display_utils.loadScript;\n }\n}));\nObject.defineProperty(exports, \"renderTextLayer\", ({\n enumerable: true,\n get: function () {\n return _text_layer.renderTextLayer;\n }\n}));\nObject.defineProperty(exports, \"shadow\", ({\n enumerable: true,\n get: function () {\n return _util.shadow;\n }\n}));\nObject.defineProperty(exports, \"version\", ({\n enumerable: true,\n get: function () {\n return _api.version;\n }\n}));\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _display_utils = __w_pdfjs_require__(4);\n\nvar _api = __w_pdfjs_require__(6);\n\nvar _annotation_editor_layer = __w_pdfjs_require__(22);\n\nvar _tools = __w_pdfjs_require__(9);\n\nvar _annotation_layer = __w_pdfjs_require__(27);\n\nvar _worker_options = __w_pdfjs_require__(15);\n\nvar _is_node = __w_pdfjs_require__(3);\n\nvar _text_layer = __w_pdfjs_require__(30);\n\nvar _svg = __w_pdfjs_require__(31);\n\nvar _xfa_layer = __w_pdfjs_require__(29);\n\nconst pdfjsVersion = '2.15.349';\nconst pdfjsBuild = 'b8aa9c622';\n{\n if (_is_node.isNodeJS) {\n const {\n PDFNodeStream\n } = __w_pdfjs_require__(32);\n\n (0, _api.setPDFNetworkStreamFactory)(params => {\n return new PDFNodeStream(params);\n });\n } else {\n const {\n PDFNetworkStream\n } = __w_pdfjs_require__(35);\n\n const {\n PDFFetchStream\n } = __w_pdfjs_require__(36);\n\n (0, _api.setPDFNetworkStreamFactory)(params => {\n if ((0, _display_utils.isValidFetchUrl)(params.url)) {\n return new PDFFetchStream(params);\n }\n\n return new PDFNetworkStream(params);\n });\n }\n}\n})();\n\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});\n//# sourceMappingURL=pdf.js.map","export function format(first: string, middle: string, last: string): string {\n return (first || '') + (middle ? ` ${middle}` : '') + (last ? ` ${last}` : '');\n}\n\nexport const integerSequence = (start: number, count: number): number[] =>\n Array(count)\n .fill(1)\n .map((_, index) => index + start);\n","@import '../../../theme.scss';\n\nverdocs-view {\n font-family: $verdocs-primary-font;\n display: flex;\n min-height: 600px;\n position: relative;\n padding: 0 0 20px 0;\n box-sizing: border-box;\n flex-direction: column;\n\n div,\n canvas {\n box-sizing: border-box;\n }\n\n .container {\n display: flex;\n align-items: center;\n flex-direction: column;\n }\n\n button.test {\n color: #fff;\n cursor: pointer;\n padding: 5px 10px;\n border-radius: 4px;\n background: #5a5767;\n border: 1px solid #ccc;\n }\n\n .load-progress {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 6px;\n z-index: 2000;\n background: #000;\n\n .bar {\n height: 6px;\n background: #50be80;\n }\n }\n}\n\n#verdocs-pdf-viewer-container {\n display: flex;\n align-items: center;\n flex-direction: column;\n\n canvas {\n background: white;\n max-width: 100%;\n // To avoid performance problems in some browsers with getClientBoundingRect() we hard-code the calculations for canvas offsets.\n // If you change the margin here you need to adjust the code as well.\n margin: 0 0 15px 0;\n }\n}\n","import pdf from 'pdfjs-dist';\nimport {VerdocsEndpoint} from '@verdocs/js-sdk';\nimport {PDFDocumentProxy, VerbosityLevel, version as PDFJSversion} from 'pdfjs-dist';\nimport {Component, h, Element, Event, Prop, Watch, EventEmitter, State} from '@stencil/core';\nimport {DocumentInitParameters, OnProgressParameters} from 'pdfjs-dist/types/src/display/api';\nimport {integerSequence} from '../../../utils/utils';\n\nconst CANVAS_MARGIN = 15;\nconst PDF_WORKER_URL = `https://cdnjs.cloudflare.com/ajax/libs/pdf.js/${PDFJSversion}/pdf.worker.min.js`;\nconst CMAPS_URL = `https://unpkg.com/pdfjs-dist@${PDFJSversion}/cmaps/`;\n// https://unpkg.com/pdfjs-dist@2.0.550/cmaps/78-EUC-H.bcmap\n\nconsole.log('[VIEW] Loading PDF-JS', {PDF_WORKER_URL, CMAPS_URL});\n\n// pdf.GlobalWorkerOptions.workerSrc = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.6.347/pdf.worker.min.js';\npdf.GlobalWorkerOptions.workerSrc = PDF_WORKER_URL;\n\nexport interface IPDFPageInfo {\n height: number;\n width: number;\n originalHeight: number;\n originalWidth: number;\n xRatio: number;\n yRatio: number;\n pageNumber: number;\n canvasTop: number;\n canvasRight: number;\n canvasLeft: number;\n canvasBottom: number;\n}\n\nexport interface IPDFRenderEvent {\n numRendered: number;\n numPages: number;\n pages: IPDFPageInfo[];\n canvasContainer: HTMLDivElement;\n}\n\n@Component({\n tag: 'verdocs-view',\n styleUrl: 'verdocs-view.scss',\n shadow: false,\n})\nexport class VerdocsView {\n @Element() component: HTMLElement;\n\n private pdfDocument: any;\n private pdfContainer: HTMLDivElement;\n private numPages = 1;\n private fingerprint = null as string | null;\n\n /**\n * The endpoint to use to communicate with Verdocs. If not set, the default endpoint will be used.\n */\n @Prop() endpoint: VerdocsEndpoint = VerdocsEndpoint.getDefault();\n\n /**\n * Rotate the PDF in degrees\n */\n @Prop() rotation: 0 | 90 | 180 | 270 = 0;\n\n /**\n * Src of the PDF to load and render\n */\n @Prop() source: string;\n\n /**\n * Listen for changes to src\n */\n @Watch('source')\n doSrc(newValue: string | null, oldValue: string | null): void {\n if (newValue === oldValue) {\n return;\n }\n this.loadAndRender(newValue);\n }\n\n /**\n * Fired when a page has been rendered\n */\n @Event() pageRendered: EventEmitter<IPDFRenderEvent>;\n\n /**\n * Fired when a page has been changed\n */\n @Event() pageLoaded: EventEmitter<number>;\n\n /**\n * Fired when a page has been changed\n */\n @Event() pageChange: EventEmitter<number>;\n\n /**\n * Fired when a page has been initialized\n */\n @Event() pageInit: EventEmitter<number>;\n\n /**\n * Fired when a page has been scaled\n */\n @Event() scaleChange: EventEmitter<number>;\n\n /**\n * Fired when the document has completed rendered. The event will include the rendered page count.\n */\n @Event() documentRendered: EventEmitter<IPDFRenderEvent>;\n\n @State() loadProgress = 0;\n\n pagesRendered: IPDFPageInfo[] = [];\n\n isRotated(rotation) {\n return rotation !== 0 && rotation % 180 !== 0;\n }\n\n async renderPages(): Promise<void> {\n const pageNumbersToRender = integerSequence(1, this.numPages);\n\n for await (let pageNumber of pageNumbersToRender) {\n const index = pageNumber - 1;\n\n console.log('[VIEW] Rendering page', pageNumber);\n const page = await this.pdfDocument.getPage(pageNumber);\n const [pageX0, pageY0, pageX1, pageY1] = page.view;\n const rotation = page.rotate;\n\n const viewport = page.getViewport({scale: 1 / 0.75});\n // const viewport = page.getViewport({scale: 1.5});\n const canvas = document.createElement('canvas');\n const canvasContext = canvas.getContext('2d');\n canvas.height = viewport.height;\n canvas.width = viewport.width;\n\n await page.render({canvasContext, viewport});\n this.pdfContainer.appendChild(canvas);\n\n const canvasWidth = canvas.width;\n const canvasHeight = canvas.height;\n const pageWidth = pageX1 - pageX0;\n const pageHeight = pageY1 - pageY0;\n\n this.pagesRendered.sort((a, b) => a.pageNumber - b.pageNumber);\n const previousSibling = this.pagesRendered.filter(page => page.pageNumber < pageNumber).pop();\n const canvasTop = (previousSibling?.canvasBottom || 0) + CANVAS_MARGIN;\n\n const pageDetails = {\n pageNumber,\n width: canvasWidth,\n height: canvasHeight,\n originalWidth: this.isRotated(rotation) ? pageHeight : pageWidth,\n originalHeight: this.isRotated(rotation) ? pageWidth : pageHeight,\n xRatio: canvasWidth / pageWidth,\n yRatio: canvasHeight / pageHeight,\n canvasTop: canvasTop,\n canvasLeft: CANVAS_MARGIN,\n canvasRight: CANVAS_MARGIN + canvasWidth,\n canvasBottom: canvasTop + canvasHeight,\n } as IPDFPageInfo;\n\n if (this.pagesRendered[index]) {\n this.pagesRendered[index] = pageDetails;\n } else {\n this.pagesRendered.push(pageDetails);\n }\n\n const eventData = {pages: this.pagesRendered, numPages: this.numPages, numRendered: this.pagesRendered.length, canvasContainer: this.pdfContainer} as IPDFRenderEvent;\n this.pageRendered.emit(eventData);\n\n if (pageNumber >= this.numPages) {\n console.log('[VIEW] Done rendering');\n this.pagesRendered.sort((a, b) => a.pageNumber - b.pageNumber);\n this.documentRendered.emit(eventData);\n }\n }\n }\n\n componentDidLoad(): void {\n this.pdfContainer = document.getElementById('verdocs-pdf-viewer-container') as HTMLDivElement;\n\n if (this.source) {\n this.loadAndRender(this.source);\n }\n }\n\n onProgress(progress: OnProgressParameters) {\n this.loadProgress = Math.floor((100 * progress.loaded) / progress.total);\n }\n\n loadAndRender(src: string): void {\n console.log('[VIEW] Loading', src);\n console.log('this', this);\n const token = this.endpoint.getToken();\n const httpHeaders = token ? {Authorization: `Bearer ${token}`} : {};\n\n const source = {\n url: src,\n withCredentials: true,\n cMapUrl: CMAPS_URL,\n cMapPacked: true,\n verbosity: VerbosityLevel.WARNINGS,\n httpHeaders,\n } as DocumentInitParameters;\n\n // @ts-ignore\n const loadingTask = pdf.getDocument(source, null, null, this.onProgress);\n loadingTask.onProgress = this.onProgress;\n loadingTask.promise.then((pdfDocument: PDFDocumentProxy) => {\n this.loadProgress = 100;\n this.numPages = pdfDocument.numPages;\n this.fingerprint = pdfDocument.fingerprints[0];\n console.log(`[VIEW] Got PDF document fingerprint \"${this.fingerprint}, ${this.numPages} pages`, pdfDocument);\n\n this.pdfDocument = pdfDocument;\n this.renderPages().catch(e => console.log('Rendering error', e));\n });\n }\n\n render() {\n return (\n <div class=\"container\">\n {this.loadProgress < 100 ? <verdocs-loader /> : <div style={{display: 'none'}} />}\n <div id=\"verdocs-pdf-viewer-container\" />\n </div>\n );\n }\n}\n"]}