@poe-platform/safe-bash 0.1.803 → 0.1.804

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 (696) hide show
  1. package/README.md +56 -31
  2. package/dist/image-ast/ast.d.ts +1 -0
  3. package/dist/image-ast/browser/ast.d.ts +1 -0
  4. package/dist/image-ast/browser/codecs/jpeg.d.ts +2 -2
  5. package/dist/image-ast/codecs/jpeg.d.ts +2 -2
  6. package/dist/image-ast/index.browser.js +692 -8364
  7. package/dist/image-ast/index.js +692 -8364
  8. package/dist/mp4-ast/codecs.d.ts +7 -2
  9. package/dist/safe-bash/chunks/{chunk-CHYGPFVM.js → chunk-22SX3F2R.js} +1 -1
  10. package/dist/safe-bash/chunks/{chunk-FBUCWVTE.js → chunk-2IVBJTBD.js} +1 -1
  11. package/dist/safe-bash/chunks/chunk-2POETUMB.js +190 -0
  12. package/dist/safe-bash/chunks/{chunk-XVOSKJE2.js → chunk-47D7WBJK.js} +1 -1
  13. package/dist/safe-bash/chunks/{chunk-VKNVHEX3.js → chunk-4ESI236Y.js} +1 -1
  14. package/dist/safe-bash/chunks/{chunk-74GHTNJA.js → chunk-4KTMKD5W.js} +1 -1
  15. package/dist/safe-bash/chunks/{chunk-55YJASTN.js → chunk-4T53AERN.js} +1 -1
  16. package/dist/safe-bash/chunks/{chunk-DQP3VHSB.js → chunk-5XIFJVOO.js} +1 -1
  17. package/dist/safe-bash/chunks/{chunk-5OHX7C2V.js → chunk-62BOHHJT.js} +1 -1
  18. package/dist/safe-bash/chunks/{chunk-HZAMGT5I.js → chunk-67WIFM3N.js} +17 -6
  19. package/dist/safe-bash/chunks/{chunk-4D4N7IU2.js → chunk-6LNFRPW5.js} +2 -2
  20. package/dist/safe-bash/chunks/{chunk-6O77NL2S.js → chunk-6SMICPI3.js} +1 -1
  21. package/dist/safe-bash/chunks/{chunk-4BSJLKNM.js → chunk-7O76UFQD.js} +1 -1
  22. package/dist/safe-bash/chunks/{chunk-PNBBUWSM.js → chunk-AW5KIT6V.js} +3488 -39
  23. package/dist/safe-bash/chunks/{chunk-JMMEIDPF.js → chunk-B2Z73HTZ.js} +52 -28
  24. package/dist/safe-bash/chunks/chunk-B3ZMOJVM.js +319 -0
  25. package/dist/safe-bash/chunks/{chunk-7ZBU7KYV.js → chunk-CFAWS3O4.js} +1 -1
  26. package/dist/safe-bash/chunks/{chunk-I5HZ4FGE.js → chunk-CL2FCTTO.js} +1 -1
  27. package/dist/safe-bash/chunks/{chunk-2LSAMQER.js → chunk-CTXNARJH.js} +1 -1
  28. package/dist/safe-bash/chunks/{chunk-TFIBK2GI.js → chunk-D5Q7NFWI.js} +1 -1
  29. package/dist/safe-bash/chunks/{chunk-OQRVVGR6.js → chunk-DSOOVZ6Q.js} +1 -1
  30. package/dist/safe-bash/chunks/{chunk-VTH3MLDU.js → chunk-DUTAG6ZD.js} +1 -1
  31. package/dist/safe-bash/chunks/{chunk-XAQMU6OY.js → chunk-EE5YGFIZ.js} +1 -1
  32. package/dist/safe-bash/chunks/{chunk-FZE4HW6G.js → chunk-EJOYT2ME.js} +1 -1
  33. package/dist/safe-bash/chunks/chunk-FAAIR6EJ.js +887 -0
  34. package/dist/safe-bash/chunks/{chunk-OV6IHKO6.js → chunk-FOB2FZR4.js} +2 -2
  35. package/dist/safe-bash/chunks/chunk-G6V4RRSQ.js +14 -0
  36. package/dist/safe-bash/chunks/{chunk-UTBUUFDM.js → chunk-GGQAGQXQ.js} +1 -1
  37. package/dist/safe-bash/chunks/{chunk-K6VCD7IY.js → chunk-HIIYIJ5G.js} +2 -4
  38. package/dist/safe-bash/chunks/{chunk-VBTDHOWC.js → chunk-IOHH2GTI.js} +4 -3
  39. package/dist/safe-bash/chunks/{chunk-CTVWDACF.js → chunk-IQW34XQT.js} +1 -1
  40. package/dist/safe-bash/chunks/{chunk-HZ7BWKQ3.js → chunk-IS572AAT.js} +1 -1
  41. package/dist/safe-bash/chunks/{chunk-AUSNDQTJ.js → chunk-JPSUHHOA.js} +1 -1
  42. package/dist/safe-bash/chunks/{chunk-ZVD5IS4V.js → chunk-KBZ4UB2O.js} +2 -2
  43. package/dist/safe-bash/chunks/{chunk-AM5ESLPH.js → chunk-KU5CVWKA.js} +1 -1
  44. package/dist/safe-bash/chunks/{chunk-RYFQ3LZG.js → chunk-LPOVNKNB.js} +173 -153
  45. package/dist/safe-bash/chunks/{chunk-46Z5E5EV.js → chunk-MBOC3LZ4.js} +1 -1
  46. package/dist/safe-bash/chunks/{chunk-6PAVEFT3.js → chunk-N4BQFD3P.js} +1 -1
  47. package/dist/safe-bash/chunks/{chunk-CS4MNM6I.js → chunk-NGKCVNWS.js} +1 -1
  48. package/dist/safe-bash/chunks/{chunk-7R5BDCG7.js → chunk-OHML2BEU.js} +1 -1
  49. package/dist/safe-bash/chunks/{chunk-C5OWC2TL.js → chunk-OQ3AGYCZ.js} +1 -1
  50. package/dist/safe-bash/chunks/{chunk-B7TAL7S5.js → chunk-PTAEWLSE.js} +0 -2
  51. package/dist/safe-bash/chunks/{chunk-LVOBFF4D.js → chunk-Q4FNLOTI.js} +1 -1
  52. package/dist/safe-bash/chunks/chunk-Q5XO3NAS.js +1036 -0
  53. package/dist/safe-bash/chunks/{chunk-GEG3BWGE.js → chunk-RHFRJIWQ.js} +1 -1
  54. package/dist/safe-bash/chunks/chunk-RUR6J33T.js +11 -0
  55. package/dist/safe-bash/chunks/{chunk-EEEWOYEG.js → chunk-S4RFUUXO.js} +839 -24
  56. package/dist/safe-bash/chunks/{chunk-RRR7AQ24.js → chunk-SD2ISU5L.js} +1 -1
  57. package/dist/safe-bash/chunks/{chunk-3NDIFSNM.js → chunk-SUJ3NTMH.js} +3 -3
  58. package/dist/safe-bash/chunks/{chunk-R3NAKOED.js → chunk-SZRUU5HS.js} +2 -2
  59. package/dist/safe-bash/chunks/{chunk-PH63PLPZ.js → chunk-TC3F4UFF.js} +1 -1
  60. package/dist/safe-bash/chunks/{chunk-3R3AANOR.js → chunk-TCKYOLUE.js} +1 -1
  61. package/dist/safe-bash/chunks/{chunk-D3ANYGMC.js → chunk-UV4X32QU.js} +1 -1
  62. package/dist/safe-bash/chunks/{chunk-E7OYNDGL.js → chunk-V7QT2RWC.js} +1 -1
  63. package/dist/safe-bash/chunks/{chunk-B7PIL77G.js → chunk-W2IYOVHK.js} +804 -1195
  64. package/dist/safe-bash/chunks/{chunk-3HQU4OJO.js → chunk-XNGVOSGI.js} +1 -1
  65. package/dist/safe-bash/chunks/{chunk-J42RIHHJ.js → chunk-XQWCQSRN.js} +1 -1
  66. package/dist/safe-bash/chunks/{chunk-A7XEHALN.js → chunk-Y7FW6GLT.js} +6 -6
  67. package/dist/safe-bash/chunks/{chunk-QGUV42T5.js → chunk-YL3GBUG4.js} +1 -1
  68. package/dist/safe-bash/chunks/chunk-YOXUCJER.js +389 -0
  69. package/dist/safe-bash/chunks/{chunk-HBCN24ZA.js → chunk-Z2AAYYJN.js} +2 -2
  70. package/dist/safe-bash/chunks/chunk-ZKYKJCZZ.js +30 -0
  71. package/dist/safe-bash/chunks/core-IE3AFIDX.js +85806 -0
  72. package/dist/safe-bash/chunks/{ffmpeg-WTC3TEFI.js → ffmpeg-YANDK6HU.js} +2 -2
  73. package/dist/safe-bash/chunks/{gh-6WU6PXL4.js → gh-4MBJ2S5V.js} +2 -2
  74. package/dist/safe-bash/chunks/{git-EFZIGJW4.js → git-2QONJNRQ.js} +2 -2
  75. package/dist/safe-bash/chunks/{imagemagick-EIEYGWPF.js → imagemagick-JLEHGYSN.js} +2 -2
  76. package/dist/safe-bash/chunks/{mmdc-ROQJT5HQ.js → mmdc-6LD7A6ND.js} +2 -2
  77. package/dist/safe-bash/chunks/{pdfimages-DW7LWXFI.js → pdfimages-RSHL7LOP.js} +2 -2
  78. package/dist/safe-bash/chunks/{pdfinfo-TIP6XLUQ.js → pdfinfo-L3SGWPNG.js} +2 -2
  79. package/dist/safe-bash/chunks/{pdftk-DMG22ITZ.js → pdftk-LFBJNU5A.js} +2 -2
  80. package/dist/safe-bash/chunks/{pdftoppm-WNDYR72T.js → pdftoppm-NXXFUIHG.js} +2 -2
  81. package/dist/safe-bash/chunks/{pdftotext-5IPZ4NI7.js → pdftotext-4IHNWT6F.js} +2 -2
  82. package/dist/safe-bash/chunks/{qpdf-TTX2DIUA.js → qpdf-ZEIREV63.js} +2 -2
  83. package/dist/safe-bash/chunks/read-builtin-A4QKAT45.js +9 -0
  84. package/dist/safe-bash/chunks/{sips-XYS46JPJ.js → sips-D5YBG2V3.js} +2 -2
  85. package/dist/safe-bash/chunks/{soffice-TU73E5KL.js → soffice-RAJU3JUT.js} +2 -2
  86. package/dist/safe-bash/chunks/source-files-3XWRRHFA.js +7 -0
  87. package/dist/safe-bash/chunks/{wkhtmltopdf-FSZ2CHGE.js → wkhtmltopdf-7UE4FORZ.js} +2 -2
  88. package/dist/safe-bash/command-chunks/{chunk-7KWZXKY6.js → chunk-26RTBV2I.js} +1 -0
  89. package/dist/safe-bash/command-chunks/{chunk-AQJ2ROJO.js → chunk-2WYNMZR2.js} +10 -8
  90. package/dist/safe-bash/command-chunks/{chunk-BDSMROQZ.js → chunk-36GFRF2N.js} +2 -1
  91. package/dist/safe-bash/command-chunks/{chunk-GC5TJZOF.js → chunk-3VIA2IA7.js} +114 -31
  92. package/dist/safe-bash/command-chunks/{chunk-NKFYQSES.js → chunk-4CTI3ZTX.js} +1 -0
  93. package/dist/safe-bash/command-chunks/{chunk-WH627NJL.js → chunk-4MYP2FX4.js} +2 -1
  94. package/dist/safe-bash/command-chunks/{chunk-ZDN7MJE6.js → chunk-4R5ADJM5.js} +11 -1
  95. package/dist/safe-bash/command-chunks/{chunk-P2N33UMN.js → chunk-5MIKM54M.js} +4 -4
  96. package/dist/safe-bash/command-chunks/{chunk-DB453IE6.js → chunk-6FZQUOSJ.js} +1 -1
  97. package/dist/safe-bash/command-chunks/{chunk-PICVQ6B5.js → chunk-6GKYHPJG.js} +1 -1
  98. package/dist/safe-bash/command-chunks/{chunk-7K6JYKPJ.js → chunk-6M2ELGEN.js} +17 -15
  99. package/dist/safe-bash/command-chunks/{chunk-PXEIT2O4.js → chunk-6UR7V3ET.js} +8 -1
  100. package/dist/safe-bash/command-chunks/{chunk-6KJ3LPI2.js → chunk-6XBS5B46.js} +26 -3
  101. package/dist/safe-bash/command-chunks/{chunk-5PWJG2UK.js → chunk-6YXLZX7L.js} +2 -2
  102. package/dist/safe-bash/command-chunks/{chunk-EK6YNAXT.js → chunk-753YOR54.js} +31 -5
  103. package/dist/safe-bash/command-chunks/{chunk-RMWQAAO5.js → chunk-7IR4NRNE.js} +2 -2
  104. package/dist/safe-bash/command-chunks/{chunk-FZTK4MFI.js → chunk-7NM73SVK.js} +8 -8
  105. package/dist/safe-bash/command-chunks/{chunk-NXEQ3ESQ.js → chunk-7QD5YY4F.js} +6 -11
  106. package/dist/safe-bash/command-chunks/{chunk-EMPU65ZK.js → chunk-A5LBSJGH.js} +1 -0
  107. package/dist/safe-bash/command-chunks/{chunk-4FEVBOL5.js → chunk-ARZMP2L2.js} +2 -2
  108. package/dist/safe-bash/command-chunks/{chunk-NKIELG7Y.js → chunk-BAKFZ477.js} +40 -19
  109. package/dist/safe-bash/command-chunks/{chunk-QRRYN2KO.js → chunk-BC7BK6R6.js} +0 -2424
  110. package/dist/safe-bash/command-chunks/{chunk-CQHP3I66.js → chunk-BOEOJS2Q.js} +1 -1
  111. package/dist/safe-bash/command-chunks/{chunk-XS72HTMA.js → chunk-BWGGLYEB.js} +5 -22
  112. package/dist/safe-bash/command-chunks/{chunk-PMBFZXTK.js → chunk-C5ZZKP7V.js} +1 -1
  113. package/dist/safe-bash/command-chunks/{chunk-LHIOAFWW.js → chunk-C7SEB6WU.js} +1 -1
  114. package/dist/safe-bash/command-chunks/{chunk-XPT2UGBF.js → chunk-CHJKFRT7.js} +1 -1
  115. package/dist/safe-bash/command-chunks/{chunk-TIOCQVUQ.js → chunk-CON26Q2O.js} +1 -1
  116. package/dist/safe-bash/command-chunks/{chunk-E55UKBIE.js → chunk-DBAT3IK2.js} +1 -1
  117. package/dist/safe-bash/command-chunks/{chunk-Z45N42QC.js → chunk-DPAYAVMS.js} +15 -1
  118. package/dist/safe-bash/command-chunks/chunk-DS3NXVUM.js +368 -0
  119. package/dist/safe-bash/command-chunks/{chunk-5ZMZ573Q.js → chunk-DSJ3VRL3.js} +16 -4
  120. package/dist/safe-bash/command-chunks/{chunk-K2GDEMEU.js → chunk-EFRCFWVR.js} +4 -4
  121. package/dist/safe-bash/command-chunks/{chunk-DZCY63VJ.js → chunk-EV6HIJ5H.js} +6 -5
  122. package/dist/safe-bash/command-chunks/{chunk-JDYXY44P.js → chunk-FJURV46Y.js} +3 -3
  123. package/dist/safe-bash/command-chunks/{chunk-TZZ4WUKH.js → chunk-FZAWGKSE.js} +6 -4
  124. package/dist/safe-bash/command-chunks/{chunk-YHFXOX6U.js → chunk-GOCFQ6XV.js} +4 -4
  125. package/dist/safe-bash/command-chunks/{chunk-QVOS4YXL.js → chunk-HH5O7DJI.js} +1 -1
  126. package/dist/safe-bash/command-chunks/{chunk-3HHCU5YU.js → chunk-HK7F5SDC.js} +13 -0
  127. package/dist/safe-bash/command-chunks/{chunk-JNZ3CVAE.js → chunk-HQBXIZC7.js} +8 -3
  128. package/dist/safe-bash/command-chunks/{chunk-V4K2JDYU.js → chunk-I63DBZXZ.js} +2 -2
  129. package/dist/safe-bash/command-chunks/{chunk-WNE7FPVR.js → chunk-I64TLTIW.js} +24 -16
  130. package/dist/safe-bash/command-chunks/{chunk-GFC2NTDG.js → chunk-ICANWOXH.js} +5 -29
  131. package/dist/safe-bash/command-chunks/{chunk-SQRQW3CT.js → chunk-IJ6LGLXM.js} +1 -1
  132. package/dist/safe-bash/command-chunks/{chunk-TGSNCQSR.js → chunk-JT4RYCA6.js} +1771 -1663
  133. package/dist/safe-bash/command-chunks/{chunk-II77KPZN.js → chunk-JWW6FYBN.js} +2 -2
  134. package/dist/safe-bash/command-chunks/{chunk-ZYXH3B66.js → chunk-LCJWKTCJ.js} +250 -203
  135. package/dist/safe-bash/command-chunks/chunk-LU4HBPP2.js +97 -0
  136. package/dist/safe-bash/command-chunks/{chunk-XJXU3VVH.js → chunk-LWOE65OE.js} +20 -5
  137. package/dist/safe-bash/command-chunks/{chunk-GMIHJYDG.js → chunk-M32HFSX7.js} +22 -6
  138. package/dist/safe-bash/command-chunks/{chunk-YG4EPFWC.js → chunk-M3NINRDU.js} +2880 -172
  139. package/dist/safe-bash/command-chunks/chunk-MQREDAL6.js +164 -0
  140. package/dist/safe-bash/command-chunks/{chunk-LWS62ISU.js → chunk-N6DIASO2.js} +1 -1
  141. package/dist/safe-bash/command-chunks/chunk-NGL7YK7O.js +188 -0
  142. package/dist/safe-bash/command-chunks/{chunk-EARHPPPJ.js → chunk-NJYHWKIL.js} +39 -9
  143. package/dist/safe-bash/command-chunks/{chunk-6JSIFWYT.js → chunk-OJQRSCBP.js} +1 -1
  144. package/dist/safe-bash/command-chunks/{chunk-OQU6UT6X.js → chunk-OV3XREFN.js} +11 -0
  145. package/dist/safe-bash/command-chunks/{chunk-MIXBO6U7.js → chunk-PTZLF456.js} +2 -2
  146. package/dist/safe-bash/command-chunks/{chunk-ALDC4XP4.js → chunk-QILLRNES.js} +34 -10
  147. package/dist/safe-bash/command-chunks/{chunk-L22T3H7L.js → chunk-QR25JLKO.js} +1 -1
  148. package/dist/safe-bash/command-chunks/{chunk-NASVPT6F.js → chunk-R7C4MGZ5.js} +17 -224
  149. package/dist/safe-bash/command-chunks/{chunk-LCF3OB7P.js → chunk-RBME3JEH.js} +1 -1
  150. package/dist/safe-bash/command-chunks/{chunk-2KG2QLJE.js → chunk-RFWGYT7G.js} +3 -0
  151. package/dist/safe-bash/command-chunks/{chunk-5TBUOBDE.js → chunk-RZMVRT26.js} +27 -13
  152. package/dist/safe-bash/command-chunks/chunk-TFR6B3WB.js +44 -0
  153. package/dist/safe-bash/command-chunks/chunk-TOH3OF3O.js +179 -0
  154. package/dist/safe-bash/command-chunks/chunk-TT4DAFBT.js +13621 -0
  155. package/dist/safe-bash/command-chunks/{chunk-LWSBAWLT.js → chunk-TXI64OAG.js} +1 -1
  156. package/dist/safe-bash/command-chunks/{chunk-GIRNFXP3.js → chunk-TZRI7BJZ.js} +45 -15
  157. package/dist/safe-bash/command-chunks/{chunk-QOKBZFFD.js → chunk-U3MMODA5.js} +2 -7
  158. package/dist/safe-bash/command-chunks/{chunk-ZYHTWNAE.js → chunk-UAW423ZL.js} +11 -11
  159. package/dist/safe-bash/command-chunks/{chunk-C5YYCQHW.js → chunk-UXEEUGOV.js} +222 -12
  160. package/dist/safe-bash/command-chunks/{chunk-GY3BWK7K.js → chunk-VOZPMJRX.js} +87 -80
  161. package/dist/safe-bash/command-chunks/{chunk-ILX2NOLF.js → chunk-WPANOB4A.js} +20 -20
  162. package/dist/safe-bash/command-chunks/{chunk-Y2WBSJG6.js → chunk-X4QZQI5Q.js} +65 -64
  163. package/dist/safe-bash/command-chunks/{chunk-HDCNKOIX.js → chunk-XGI57GCN.js} +1 -1
  164. package/dist/safe-bash/command-chunks/{chunk-5UBXNSFZ.js → chunk-XUCU7QQT.js} +1281 -1278
  165. package/dist/safe-bash/command-chunks/chunk-Y22VXJBD.js +296 -0
  166. package/dist/safe-bash/command-chunks/{chunk-WVHONVZ4.js → chunk-YMFUUPDX.js} +5 -3
  167. package/dist/safe-bash/command-chunks/{chunk-IR2BY7EL.js → chunk-YYGIBXFZ.js} +2 -2
  168. package/dist/safe-bash/command-chunks/{chunk-MSFXC3OC.js → chunk-Z4FO6OHE.js} +2 -2
  169. package/dist/safe-bash/command-chunks/{chunk-WWIBP2ET.js → chunk-Z5ZZVDUD.js} +143 -22
  170. package/dist/safe-bash/command-chunks/{chunk-LOICUCHG.js → chunk-ZHN3QDCI.js} +1 -1
  171. package/dist/safe-bash/commands/alias/index.d.ts +2 -0
  172. package/dist/safe-bash/commands/alias/index.js +2 -0
  173. package/dist/safe-bash/commands/apply-patch/index.browser.js +2 -3
  174. package/dist/safe-bash/commands/apply-patch/index.d.ts +0 -1
  175. package/dist/safe-bash/commands/apply-patch/index.js +0 -1
  176. package/dist/safe-bash/commands/archive/index.browser.js +2 -3
  177. package/dist/safe-bash/commands/archive/index.d.ts +0 -1
  178. package/dist/safe-bash/commands/archive/index.js +0 -1
  179. package/dist/safe-bash/commands/bytes/index.js +2 -1
  180. package/dist/safe-bash/commands/chmod/index.browser.js +1 -1
  181. package/dist/safe-bash/commands/column/index.browser.js +2 -3
  182. package/dist/safe-bash/commands/column/index.d.ts +0 -1
  183. package/dist/safe-bash/commands/column/index.js +0 -1
  184. package/dist/safe-bash/commands/copy-source.js +1 -0
  185. package/dist/safe-bash/commands/csplit/index.browser.js +2 -2
  186. package/dist/safe-bash/commands/csvkit/index.browser.js +72 -0
  187. package/dist/safe-bash/commands/csvkit/index.d.ts +0 -5
  188. package/dist/safe-bash/commands/csvkit/index.js +0 -50
  189. package/dist/safe-bash/commands/docx/index.browser.js +5 -7
  190. package/dist/safe-bash/commands/du/index.browser.js +2 -3
  191. package/dist/safe-bash/commands/du/index.d.ts +0 -1
  192. package/dist/safe-bash/commands/du/index.js +0 -1
  193. package/dist/safe-bash/commands/expr/index.browser.js +2 -3
  194. package/dist/safe-bash/commands/expr/index.d.ts +0 -1
  195. package/dist/safe-bash/commands/expr/index.js +0 -1
  196. package/dist/safe-bash/commands/factor/index.browser.js +2 -2
  197. package/dist/safe-bash/commands/file/index.browser.js +2 -3
  198. package/dist/safe-bash/commands/file/index.d.ts +0 -1
  199. package/dist/safe-bash/commands/file/index.js +0 -1
  200. package/dist/safe-bash/commands/filesystem.js +1 -1
  201. package/dist/safe-bash/commands/getopt/index.browser.js +2 -2
  202. package/dist/safe-bash/commands/grep-aliases/index.browser.js +3 -3
  203. package/dist/safe-bash/commands/hexdump/index.browser.js +2 -2
  204. package/dist/safe-bash/commands/html-to-markdown/index.browser.js +2 -3
  205. package/dist/safe-bash/commands/html-to-markdown/index.d.ts +0 -1
  206. package/dist/safe-bash/commands/html-to-markdown/index.js +0 -1
  207. package/dist/safe-bash/commands/htmlq/index.d.ts +1 -5
  208. package/dist/safe-bash/commands/htmlq/index.js +1 -143
  209. package/dist/safe-bash/commands/iconv/index.browser.js +2 -2
  210. package/dist/safe-bash/commands/line-endings/index.browser.js +2 -2
  211. package/dist/safe-bash/commands/llm/index.browser.js +2 -2
  212. package/dist/safe-bash/commands/llm/providers/index.browser.js +1 -1
  213. package/dist/safe-bash/commands/mdq/index.browser.js +3 -3
  214. package/dist/safe-bash/commands/media/index.browser.js +4 -16314
  215. package/dist/safe-bash/commands/media/index.d.ts +1 -5
  216. package/dist/safe-bash/commands/media/index.js +1 -3
  217. package/dist/safe-bash/commands/media/plugin.d.ts +1 -18
  218. package/dist/safe-bash/commands/media/plugin.js +1 -90
  219. package/dist/safe-bash/commands/media/remote.d.ts +1 -63
  220. package/dist/safe-bash/commands/media/remote.js +1 -405
  221. package/dist/safe-bash/commands/media/settings.d.ts +1 -4
  222. package/dist/safe-bash/commands/media/settings.js +1 -26
  223. package/dist/safe-bash/commands/metadata/index.browser.js +3 -4
  224. package/dist/safe-bash/commands/metadata/index.d.ts +0 -1
  225. package/dist/safe-bash/commands/metadata/index.js +2 -2
  226. package/dist/safe-bash/commands/mktemp/index.browser.js +1 -1
  227. package/dist/safe-bash/commands/network/curl.js +1 -3
  228. package/dist/safe-bash/commands/network/index.browser.js +3 -4
  229. package/dist/safe-bash/commands/network/public.d.ts +0 -1
  230. package/dist/safe-bash/commands/network/public.js +0 -1
  231. package/dist/safe-bash/commands/network/transport.js +2 -1
  232. package/dist/safe-bash/commands/network/wget.js +1 -3
  233. package/dist/safe-bash/commands/node/browser.d.ts +0 -1
  234. package/dist/safe-bash/commands/node/browser.js +0 -1
  235. package/dist/safe-bash/commands/node/default-runtime.d.ts +3 -0
  236. package/dist/safe-bash/commands/node/default-runtime.js +15 -0
  237. package/dist/safe-bash/commands/node/index.browser.js +7 -8
  238. package/dist/safe-bash/commands/node/index.js +3 -3
  239. package/dist/safe-bash/commands/node/path.js +1 -1
  240. package/dist/safe-bash/commands/node/preload.d.ts +1 -1
  241. package/dist/safe-bash/commands/node/preload.js +4 -1
  242. package/dist/safe-bash/commands/node/quickjs.d.ts +2 -0
  243. package/dist/safe-bash/commands/node/quickjs.js +2 -0
  244. package/dist/safe-bash/commands/node/safejs.js +26 -12
  245. package/dist/safe-bash/commands/op/index.browser.js +2 -3
  246. package/dist/safe-bash/commands/op/index.d.ts +0 -11
  247. package/dist/safe-bash/commands/op/index.js +0 -84
  248. package/dist/safe-bash/commands/pandoc/index.browser.js +44 -0
  249. package/dist/safe-bash/commands/pandoc/index.d.ts +0 -1
  250. package/dist/safe-bash/commands/pandoc/index.js +0 -1
  251. package/dist/safe-bash/commands/pr/index.browser.js +2 -2
  252. package/dist/safe-bash/commands/python/docker-runner.js +4 -3
  253. package/dist/safe-bash/commands/python/docker.d.ts +1 -0
  254. package/dist/safe-bash/commands/python/docker.js +5 -2
  255. package/dist/safe-bash/commands/python/index.browser.js +17 -13
  256. package/dist/safe-bash/commands/python/index.d.ts +2 -1
  257. package/dist/safe-bash/commands/python/index.js +10 -8
  258. package/dist/safe-bash/commands/python/llm-capability.js +65 -2
  259. package/dist/safe-bash/commands/python/llm-dependencies.d.ts +27 -0
  260. package/dist/safe-bash/commands/python/llm-dependencies.js +66 -0
  261. package/dist/safe-bash/commands/python/llm-module.js +6 -4
  262. package/dist/safe-bash/commands/python/llm-reference-module.d.ts +3 -0
  263. package/dist/safe-bash/commands/python/llm-reference-module.js +690 -0
  264. package/dist/safe-bash/commands/python/worker.browser.js +2 -3
  265. package/dist/safe-bash/commands/python/worker.d.ts +0 -1
  266. package/dist/safe-bash/commands/python/worker.js +0 -1
  267. package/dist/safe-bash/commands/regex-execution/ere/transport/wire-engine.d.ts +1 -1
  268. package/dist/safe-bash/commands/regex-execution/ere/transport/wire-engine.js +3 -3
  269. package/dist/safe-bash/commands/regex-execution/public.browser.js +7 -7
  270. package/dist/safe-bash/commands/safejs/options.js +5 -1
  271. package/dist/safe-bash/commands/safejs/runtime.d.ts +1 -0
  272. package/dist/safe-bash/commands/safejs/runtime.js +1 -1
  273. package/dist/safe-bash/commands/split/index.browser.js +2 -3
  274. package/dist/safe-bash/commands/split/index.d.ts +0 -1
  275. package/dist/safe-bash/commands/split/index.js +0 -1
  276. package/dist/safe-bash/commands/ssconvert/index.browser.js +98 -0
  277. package/dist/safe-bash/commands/stat/index.browser.js +1 -1
  278. package/dist/safe-bash/commands/stream-format/index.browser.js +3 -4
  279. package/dist/safe-bash/commands/stream-format/index.d.ts +0 -1
  280. package/dist/safe-bash/commands/stream-format/index.js +0 -1
  281. package/dist/safe-bash/commands/stream-inspection/index.browser.js +3 -4
  282. package/dist/safe-bash/commands/stream-inspection/index.d.ts +0 -1
  283. package/dist/safe-bash/commands/stream-inspection/index.js +0 -1
  284. package/dist/safe-bash/commands/streams.js +2 -1
  285. package/dist/safe-bash/commands/table-text/index.browser.js +3 -4
  286. package/dist/safe-bash/commands/table-text/index.d.ts +0 -1
  287. package/dist/safe-bash/commands/table-text/index.js +0 -1
  288. package/dist/safe-bash/commands/text.js +28 -24
  289. package/dist/safe-bash/commands/time-env/index.browser.js +3 -4
  290. package/dist/safe-bash/commands/time-env/index.d.ts +0 -1
  291. package/dist/safe-bash/commands/time-env/index.js +0 -1
  292. package/dist/safe-bash/commands/tree/index.browser.js +2 -3
  293. package/dist/safe-bash/commands/tree/index.d.ts +0 -1
  294. package/dist/safe-bash/commands/tree/index.js +0 -1
  295. package/dist/safe-bash/commands/tsort/index.browser.js +2 -2
  296. package/dist/safe-bash/commands/unalias/index.d.ts +2 -0
  297. package/dist/safe-bash/commands/unalias/index.js +2 -0
  298. package/dist/safe-bash/commands/xml/index.browser.js +2 -2
  299. package/dist/safe-bash/commands/yq/index.browser.js +2 -2
  300. package/dist/safe-bash/core.browser.js +2 -2
  301. package/dist/safe-bash/core.d.ts +7 -1
  302. package/dist/safe-bash/core.js +7 -1
  303. package/dist/safe-bash/execution-runtime.js +2 -1
  304. package/dist/safe-bash/fs/s3/http/index.d.ts +2 -2
  305. package/dist/safe-bash/fs/s3/http/index.js +1 -1
  306. package/dist/safe-bash/full-core.browser.js +283 -945
  307. package/dist/safe-bash/internal/op/types.d.ts +1 -0
  308. package/dist/safe-bash/jobs.browser.js +5 -5
  309. package/dist/safe-bash/lazy-optional.d.ts +3 -3
  310. package/dist/safe-bash/lazy-optional.js +1 -1
  311. package/dist/safe-bash/opt-in/commands/cmp/index.js +7 -6
  312. package/dist/safe-bash/opt-in/commands/dd/index.js +1 -1
  313. package/dist/safe-bash/opt-in/commands/dd/io.js +51 -5
  314. package/dist/safe-bash/opt-in/commands/truncate/index.js +2 -2
  315. package/dist/safe-bash/opt-in/commands/yq/native-work.js +2 -0
  316. package/dist/safe-bash/opt-in/optional/commands/shuf/input.js +2 -1
  317. package/dist/safe-bash/opt-in/optional/commands/shuf/shuf.js +4 -2
  318. package/dist/safe-bash/opt-in/optional.d.ts +1 -1
  319. package/dist/safe-bash/opt-in/optional.js +1 -1
  320. package/dist/safe-bash/opt-in/shell/extensions/read/index.js +2 -344
  321. package/dist/safe-bash/optional-host.browser.js +23 -18
  322. package/dist/safe-bash/optional-host.d.ts +1 -0
  323. package/dist/safe-bash/optional-host.js +1 -0
  324. package/dist/safe-bash/playwright/controller.js +41 -3
  325. package/dist/safe-bash/playwright/native-storage-targets.js +4 -2
  326. package/dist/safe-bash/plugins/base.d.ts +1 -1
  327. package/dist/safe-bash/plugins/base.js +3 -3
  328. package/dist/safe-bash/plugins/composition.d.ts +5 -2
  329. package/dist/safe-bash/plugins/composition.js +10 -7
  330. package/dist/safe-bash/plugins/index.browser.js +44 -41
  331. package/dist/safe-bash/plugins/index.js +3 -2
  332. package/dist/safe-bash/plugins/portable-commands.d.ts +3 -0
  333. package/dist/safe-bash/plugins/portable-commands.js +31 -0
  334. package/dist/safe-bash/registry-entry.browser.js +41 -42
  335. package/dist/safe-bash/search.browser.js +32 -33
  336. package/dist/safe-bash/shell/arithmetic.js +19 -6
  337. package/dist/safe-bash/shell/arrays/state.js +1 -1
  338. package/dist/safe-bash/shell/arrays/syntax.js +4 -3
  339. package/dist/safe-bash/shell/index.d.ts +0 -1
  340. package/dist/safe-bash/shell/index.js +0 -1
  341. package/dist/safe-bash/shell/parser.d.ts +2 -2
  342. package/dist/safe-bash/shell/parser.js +268 -64
  343. package/dist/safe-bash/shell/read-builtin.d.ts +3 -0
  344. package/dist/safe-bash/shell/read-builtin.js +344 -0
  345. package/dist/safe-bash/shell/runtime.d.ts +21 -4
  346. package/dist/safe-bash/shell/runtime.js +373 -412
  347. package/dist/safe-bash/shell/session-state.js +25 -0
  348. package/dist/safe-bash/shell/shell.js +76 -154
  349. package/dist/safe-bash/shell/tilde-expansion.d.ts +1 -1
  350. package/dist/safe-bash/shell/tilde-expansion.js +2 -2
  351. package/dist/safe-bash/shell/types.d.ts +5 -0
  352. package/dist/safe-bash/shell/value-state.js +1 -1
  353. package/dist/safe-bash/shell-entry.browser.js +32 -33
  354. package/dist/safe-bash/trap.browser.js +4 -4
  355. package/dist/safe-bash/yq-browser/index.js +1 -1
  356. package/dist/safe-bash-calendar-engine/time-env/calendar.d.ts +1 -1
  357. package/dist/safe-bash-calendar-engine/time-env/calendar.js +1 -1
  358. package/dist/safe-bash-calendar-engine/time-env/format.js +1 -1
  359. package/dist/safe-bash-command-alias/index.d.ts +13 -0
  360. package/dist/safe-bash-command-alias/index.js +88 -0
  361. package/dist/safe-bash-command-apply-patch/apply.js +3 -3
  362. package/dist/safe-bash-command-apply-patch/index.js +3 -3
  363. package/dist/safe-bash-command-apply-patch/matcher.js +1 -1
  364. package/dist/safe-bash-command-apply-patch/parser.js +1 -1
  365. package/dist/safe-bash-command-awk/awk-pipes.js +2 -2
  366. package/dist/safe-bash-command-awk/awk-reader.js +1 -1
  367. package/dist/safe-bash-command-awk/awk-runtime.js +3 -3
  368. package/dist/safe-bash-command-awk/awk.js +5 -5
  369. package/dist/safe-bash-command-awk/index.js +5 -5
  370. package/dist/safe-bash-command-bc/index.js +206 -60
  371. package/dist/safe-bash-command-cmp/index.js +7 -6
  372. package/dist/safe-bash-command-column/column.js +3 -3
  373. package/dist/safe-bash-command-column/index.js +3 -3
  374. package/dist/safe-bash-command-column/layout.js +2 -2
  375. package/dist/safe-bash-command-csvkit/index.d.ts +1 -0
  376. package/dist/safe-bash-command-csvkit/index.js +1505 -7
  377. package/dist/safe-bash-command-csvkit/sync-support.js +2 -7
  378. package/dist/safe-bash-command-curl/curl.js +1 -1
  379. package/dist/safe-bash-command-curl/index.js +1 -1
  380. package/dist/safe-bash-command-date/date.js +1 -1
  381. package/dist/safe-bash-command-date/index.js +1 -1
  382. package/dist/safe-bash-command-dd/index.js +1 -1
  383. package/dist/safe-bash-command-dd/io.js +51 -5
  384. package/dist/safe-bash-command-diff/diff.js +1 -1
  385. package/dist/safe-bash-command-diff/index.js +1 -1
  386. package/dist/safe-bash-command-diff3/index.js +10 -13
  387. package/dist/safe-bash-command-exiftool/index.js +278 -50
  388. package/dist/safe-bash-command-exiftool/registry.d.ts +4 -2
  389. package/dist/safe-bash-command-factor/command.js +2 -2
  390. package/dist/safe-bash-command-factor/index.js +2 -2
  391. package/dist/safe-bash-command-fd/arguments.d.ts +2 -0
  392. package/dist/safe-bash-command-fd/index.js +42 -12
  393. package/dist/safe-bash-command-ffmpeg/index.js +356 -66
  394. package/dist/safe-bash-command-find/find-format.d.ts +3 -0
  395. package/dist/safe-bash-command-find/find-format.js +1 -1
  396. package/dist/safe-bash-command-find/find.js +2 -2
  397. package/dist/safe-bash-command-find/index.js +2 -2
  398. package/dist/safe-bash-command-fmt/index.js +1 -4
  399. package/dist/safe-bash-command-fold/engine.d.ts +1 -1
  400. package/dist/safe-bash-command-fold/family.js +2 -2
  401. package/dist/safe-bash-command-fold/index.js +1 -1
  402. package/dist/safe-bash-command-hexdump/command.js +2 -2
  403. package/dist/safe-bash-command-hexdump/index.js +2 -2
  404. package/dist/safe-bash-command-html-to-markdown/entities.js +1 -1
  405. package/dist/safe-bash-command-html-to-markdown/index.js +4 -4
  406. package/dist/safe-bash-command-html-to-markdown/input.js +3 -3
  407. package/dist/safe-bash-command-html-to-markdown/parser.js +2 -2
  408. package/dist/safe-bash-command-html-to-markdown/render.js +3 -3
  409. package/dist/safe-bash-command-htmlq/contracts.d.ts +5 -2
  410. package/dist/safe-bash-command-htmlq/index.d.ts +2 -1
  411. package/dist/safe-bash-command-htmlq/index.js +175 -49
  412. package/dist/safe-bash-command-htmlq/sync.d.ts +1 -0
  413. package/dist/safe-bash-command-imagemagick/index.js +56 -6
  414. package/dist/safe-bash-command-install/arguments.d.ts +27 -0
  415. package/dist/safe-bash-command-install/arguments.js +224 -0
  416. package/dist/safe-bash-command-install/index.d.ts +7 -0
  417. package/dist/safe-bash-command-install/index.js +942 -0
  418. package/dist/safe-bash-command-install/mode.d.ts +6 -0
  419. package/dist/safe-bash-command-install/mode.js +71 -0
  420. package/dist/safe-bash-command-install/options.d.ts +40 -0
  421. package/dist/safe-bash-command-install/options.js +27 -0
  422. package/dist/safe-bash-command-jq/index.js +1 -1
  423. package/dist/safe-bash-command-jq/jq.js +1 -1
  424. package/dist/safe-bash-command-less/index.js +37 -61
  425. package/dist/safe-bash-command-llm/command.js +1 -1
  426. package/dist/safe-bash-command-llm/elevenlabs.js +2 -2
  427. package/dist/safe-bash-command-llm/index.js +4 -4
  428. package/dist/safe-bash-command-llm/openai.js +2 -2
  429. package/dist/safe-bash-command-llm/providers/elevenlabs.js +2 -2
  430. package/dist/safe-bash-command-llm/providers/index.js +3 -3
  431. package/dist/safe-bash-command-llm/providers/openai.js +2 -2
  432. package/dist/safe-bash-command-llm/providers/shared.js +1 -1
  433. package/dist/{safe-bash-mcp → safe-bash-command-mcp}/index.browser.d.ts +463 -46
  434. package/dist/safe-bash-command-mcp/index.browser.js +19308 -0
  435. package/dist/{safe-bash-mcp → safe-bash-command-mcp}/index.d.ts +15 -6
  436. package/dist/{safe-bash-mcp → safe-bash-command-mcp}/index.js +2804 -2771
  437. package/dist/safe-bash-command-media/LICENSE +21 -0
  438. package/dist/safe-bash-command-media/index.d.ts +6 -0
  439. package/dist/safe-bash-command-media/index.js +30 -0
  440. package/dist/safe-bash-command-media/plugin.d.ts +18 -0
  441. package/dist/safe-bash-command-media/plugin.js +11 -0
  442. package/dist/safe-bash-command-media/remote.d.ts +63 -0
  443. package/dist/safe-bash-command-media/remote.js +11 -0
  444. package/dist/safe-bash-command-media/settings.d.ts +4 -0
  445. package/dist/safe-bash-command-media/settings.js +41 -0
  446. package/dist/safe-bash-command-mktemp/command.js +1 -1
  447. package/dist/safe-bash-command-mktemp/index.js +1 -1
  448. package/dist/safe-bash-command-mmdc/arguments.d.ts +1 -0
  449. package/dist/safe-bash-command-mmdc/command.d.ts +2 -0
  450. package/dist/safe-bash-command-mmdc/contracts.d.ts +8 -1
  451. package/dist/safe-bash-command-mmdc/index.js +359 -7
  452. package/dist/safe-bash-command-nl/index.js +1 -1
  453. package/dist/safe-bash-command-nl/nl.js +1 -1
  454. package/dist/safe-bash-command-node/LICENSE +21 -0
  455. package/dist/safe-bash-command-node/index.d.ts +17 -0
  456. package/dist/safe-bash-command-node/index.js +328 -0
  457. package/dist/safe-bash-command-numfmt/index.js +1 -0
  458. package/dist/safe-bash-command-od/index.js +10 -6
  459. package/dist/safe-bash-command-op/index.js +39 -32
  460. package/dist/safe-bash-command-op/types.d.ts +1 -0
  461. package/dist/safe-bash-command-pandoc/command.js +3 -3
  462. package/dist/safe-bash-command-pandoc/index.d.ts +1 -0
  463. package/dist/safe-bash-command-pandoc/index.js +5 -3
  464. package/dist/safe-bash-command-pandoc/sync.d.ts +1 -0
  465. package/dist/safe-bash-command-patch/index.js +4 -4
  466. package/dist/safe-bash-command-patch/patch.js +4 -4
  467. package/dist/safe-bash-command-pdfimages/index.js +1 -1
  468. package/dist/safe-bash-command-pdfinfo/index.js +30 -5
  469. package/dist/safe-bash-command-pdftk/index.js +21 -23
  470. package/dist/safe-bash-command-pdftoppm/index.js +17 -4
  471. package/dist/safe-bash-command-pdftotext/index.js +11 -14
  472. package/dist/safe-bash-command-qpdf/index.d.ts +1 -0
  473. package/dist/safe-bash-command-qpdf/index.js +9 -6
  474. package/dist/safe-bash-command-rg/index.js +1 -1
  475. package/dist/safe-bash-command-rg/rg-command.js +1 -1
  476. package/dist/safe-bash-command-sed/index.js +1 -1
  477. package/dist/safe-bash-command-sed/sed.js +1 -1
  478. package/dist/safe-bash-command-shuf/input.d.ts +2 -2
  479. package/dist/safe-bash-command-shuf/input.js +2 -1
  480. package/dist/safe-bash-command-shuf/shuf.js +4 -2
  481. package/dist/safe-bash-command-sips/index.js +2 -2
  482. package/dist/safe-bash-command-soffice/index.js +97 -12
  483. package/dist/safe-bash-command-sponge/index.js +4 -1
  484. package/dist/safe-bash-command-sqlite3/engine.d.ts +1 -0
  485. package/dist/safe-bash-command-sqlite3/index.js +510 -70
  486. package/dist/safe-bash-command-ssconvert/formats/xlsx.js +2 -2
  487. package/dist/safe-bash-command-ssconvert/index.js +44 -22
  488. package/dist/safe-bash-command-stat/command.js +1 -1
  489. package/dist/safe-bash-command-stat/index.js +1 -1
  490. package/dist/safe-bash-command-tar/create.d.ts +1 -0
  491. package/dist/safe-bash-command-tar/create.js +2 -2
  492. package/dist/safe-bash-command-tar/extract.js +2 -2
  493. package/dist/safe-bash-command-tar/index.js +4 -4
  494. package/dist/safe-bash-command-tar/modes.js +4 -4
  495. package/dist/safe-bash-command-tar/options.js +1 -1
  496. package/dist/safe-bash-command-truncate/index.js +2 -2
  497. package/dist/safe-bash-command-tsort/command.js +2 -2
  498. package/dist/safe-bash-command-tsort/index.js +2 -2
  499. package/dist/safe-bash-command-unalias/index.d.ts +12 -0
  500. package/dist/safe-bash-command-unalias/index.js +67 -0
  501. package/dist/safe-bash-command-unrtf/index.js +26 -4
  502. package/dist/safe-bash-command-xan/argv.d.ts +1 -1
  503. package/dist/safe-bash-command-xan/argv.js +2 -2
  504. package/dist/safe-bash-command-xan/budget.d.ts +0 -1
  505. package/dist/safe-bash-command-xan/budget.js +1 -1
  506. package/dist/safe-bash-command-xan/commands.js +6 -6
  507. package/dist/safe-bash-command-xan/csv.js +2 -2
  508. package/dist/safe-bash-command-xan/index.js +8 -9
  509. package/dist/safe-bash-command-xan/io.js +4 -4
  510. package/dist/safe-bash-command-xan/options.js +1 -1
  511. package/dist/safe-bash-command-xan/selector.js +2 -2
  512. package/dist/safe-bash-command-xmllint/index.js +45 -23
  513. package/dist/safe-bash-command-xxd/index.js +41 -10
  514. package/dist/safe-bash-command-yq/accounting.js +1 -1
  515. package/dist/safe-bash-command-yq/index.js +3 -2
  516. package/dist/safe-bash-command-yq/native-work.js +2 -0
  517. package/dist/safe-bash-command-yq/parser.js +2 -2
  518. package/dist/safe-bash-command-yq/query.js +5 -5
  519. package/dist/safe-bash-command-yq/toml.js +2 -2
  520. package/dist/safe-bash-command-zip/index.js +3 -3
  521. package/dist/safe-bash-compression-engine/bounded-codec.js +2 -2
  522. package/dist/safe-bash-compression-engine/codec-loader.js +1 -1
  523. package/dist/safe-bash-compression-engine/files.js +5 -5
  524. package/dist/safe-bash-compression-engine/index.js +4 -4
  525. package/dist/safe-bash-compression-engine/operand.js +5 -5
  526. package/dist/safe-bash-compression-engine/stream.js +4 -4
  527. package/dist/safe-bash-compression-engine/zstd-decode.js +3 -3
  528. package/dist/safe-bash-contracts/command.js +3 -3
  529. package/dist/safe-bash-contracts/default-executor.js +2 -2
  530. package/dist/safe-bash-contracts/diagnostics.js +3 -3
  531. package/dist/safe-bash-contracts/escaping.js +6 -6
  532. package/dist/safe-bash-contracts/filesystem-descriptor.js +3 -3
  533. package/dist/safe-bash-contracts/filesystem-output.js +5 -5
  534. package/dist/safe-bash-contracts/http.d.ts +7 -0
  535. package/dist/safe-bash-contracts/index.js +8 -8
  536. package/dist/safe-bash-contracts/io.js +2 -2
  537. package/dist/safe-bash-contracts/output.js +3 -3
  538. package/dist/safe-bash-contracts/runtime-control.d.ts +2 -2
  539. package/dist/safe-bash-contracts/runtime-control.js +4 -2
  540. package/dist/safe-bash-contracts/signals.d.ts +2 -0
  541. package/dist/safe-bash-contracts/signals.js +3 -1
  542. package/dist/safe-bash-contracts/yield.js +1 -1
  543. package/dist/safe-bash-csv-engine/index.d.ts +2 -1
  544. package/dist/safe-bash-csv-engine/index.js +21 -15
  545. package/dist/safe-bash-io-engine/commands/search/requirements.js +2 -2
  546. package/dist/safe-bash-io-engine/commands/text-programs/shared.js +6 -6
  547. package/dist/safe-bash-io-engine/internal.js +1 -1
  548. package/dist/safe-bash-io-engine/shell/pattern.js +38 -18
  549. package/dist/safe-bash-line-ending-engine/convert.js +9 -204
  550. package/dist/safe-bash-line-ending-engine/encoding.js +9 -42
  551. package/dist/safe-bash-line-ending-engine/index.js +48 -0
  552. package/dist/safe-bash-line-ending-engine/info.js +9 -90
  553. package/dist/safe-bash-line-ending-engine/internal.js +15 -160
  554. package/dist/safe-bash-line-ending-engine/io.js +12 -289
  555. package/dist/safe-bash-line-ending-engine/stage.js +10 -160
  556. package/dist/safe-bash-markdown-engine/index.js +3 -3
  557. package/dist/safe-bash-network-engine/args.d.ts +6 -0
  558. package/dist/safe-bash-network-engine/args.js +4 -2
  559. package/dist/safe-bash-network-engine/body.js +1 -1
  560. package/dist/safe-bash-network-engine/fetch-transport.js +3 -1
  561. package/dist/safe-bash-network-engine/index.js +3 -1
  562. package/dist/safe-bash-network-engine/input.js +2 -2
  563. package/dist/safe-bash-network-engine/platform-portable.js +3 -1
  564. package/dist/safe-bash-query-engine/dates.d.ts +1 -1
  565. package/dist/safe-bash-query-engine/dates.js +1 -1
  566. package/dist/safe-bash-query-engine/index.js +6 -6
  567. package/dist/safe-bash-query-engine/interpreter.js +4 -4
  568. package/dist/safe-bash-query-engine/parser.js +1 -1
  569. package/dist/safe-bash-query-engine/query-core.js +6 -6
  570. package/dist/safe-bash-regex-engine/execution/bounded-provider.js +10 -0
  571. package/dist/safe-bash-regex-engine/index.js +1 -1
  572. package/dist/safe-bash-regex-engine/text/regex.d.ts +1 -1
  573. package/dist/safe-bash-regex-engine/text/regex.js +1 -1
  574. package/dist/safe-bash-search-engine/ergonomic-regex.d.ts +1 -0
  575. package/dist/safe-bash-search-engine/ergonomic-regex.js +1 -1
  576. package/dist/safe-bash-search-engine/grep.js +16 -9
  577. package/dist/safe-bash-search-engine/matcher.d.ts +2 -2
  578. package/dist/safe-bash-search-engine/matcher.js +12 -8
  579. package/dist/safe-bash-search-engine/shared.js +1 -1
  580. package/dist/safe-bash-search-engine/walk.js +13 -1
  581. package/dist/safe-bash-text-stream-engine/stream-format/shared.d.ts +1 -1
  582. package/dist/safe-bash-text-stream-engine/stream-format/shared.js +2 -1
  583. package/dist/safe-bash-xml-engine/document.js +3 -3
  584. package/dist/safe-bash-xml-engine/evaluate.js +2 -2
  585. package/dist/safe-bash-xml-engine/index.js +4 -4
  586. package/dist/safe-bash-xml-engine/io.js +7 -2
  587. package/dist/safe-bash-xml-engine/limits.d.ts +0 -2
  588. package/dist/safe-bash-xml-engine/limits.js +1 -1
  589. package/dist/safe-bash-xml-engine/query.js +3 -3
  590. package/dist/safe-bash-zip-engine/index.js +3 -3
  591. package/dist/safe-bash-zip-engine/zip/repair.js +3 -3
  592. package/dist/safe-bash-zip-engine/zip/safety.js +1 -1
  593. package/dist/safe-bash-zip-engine/zip/sfx.js +3 -3
  594. package/dist/safe-bash-zip-engine/zip/volumes.js +1 -1
  595. package/dist/safe-bash-zip-engine/zip-format.js +3 -3
  596. package/dist/safe-playwright-cloudflare/browser-socket-closure.js +18 -3
  597. package/dist/safe-playwright-cloudflare/shell-browser-resource.js +1 -1
  598. package/dist/xlsx-ast/xlsx.js +6 -5
  599. package/package.json +86 -98
  600. package/dist/media-cli/bytes.d.ts +0 -8
  601. package/dist/media-cli/bytes.js +0 -40
  602. package/dist/media-cli/concat.d.ts +0 -30
  603. package/dist/media-cli/concat.js +0 -197
  604. package/dist/media-cli/content.js +0 -66
  605. package/dist/media-cli/dependency-grammars.d.ts +0 -12
  606. package/dist/media-cli/dependency-grammars.js +0 -557
  607. package/dist/media-cli/discover.js +0 -286
  608. package/dist/media-cli/engine.js +0 -190
  609. package/dist/media-cli/filename-expression.js +0 -147
  610. package/dist/media-cli/filesystem.js +0 -35
  611. package/dist/media-cli/frontend-contract.js +0 -8
  612. package/dist/media-cli/frontend-issues.d.ts +0 -6
  613. package/dist/media-cli/frontend-issues.js +0 -9
  614. package/dist/media-cli/imagemagick-operand.d.ts +0 -42
  615. package/dist/media-cli/imagemagick-operand.js +0 -229
  616. package/dist/media-cli/imagemagick-references.d.ts +0 -7
  617. package/dist/media-cli/imagemagick-references.js +0 -42
  618. package/dist/media-cli/imagemagick.generated.js +0 -3254
  619. package/dist/media-cli/imagemagick.js +0 -615
  620. package/dist/media-cli/index.js +0 -12
  621. package/dist/media-cli/mvg.d.ts +0 -10
  622. package/dist/media-cli/mvg.js +0 -102
  623. package/dist/media-cli/network.js +0 -78
  624. package/dist/media-cli/options.generated.js +0 -3312
  625. package/dist/media-cli/preset.d.ts +0 -11
  626. package/dist/media-cli/preset.js +0 -57
  627. package/dist/media-cli/resolution-path.d.ts +0 -23
  628. package/dist/media-cli/resolution-path.js +0 -217
  629. package/dist/media-cli/resolver.js +0 -494
  630. package/dist/media-cli/resources.d.ts +0 -16
  631. package/dist/media-cli/resources.js +0 -187
  632. package/dist/media-cli/shim.js +0 -52
  633. package/dist/media-cli/tee.d.ts +0 -6
  634. package/dist/media-cli/tee.js +0 -38
  635. package/dist/office-package/zip-sync.js +0 -111
  636. package/dist/remote-execution/binary.js +0 -178
  637. package/dist/remote-execution/callback-result.js +0 -26
  638. package/dist/remote-execution/canonical-capabilities.d.ts +0 -5
  639. package/dist/remote-execution/canonical-capabilities.js +0 -45
  640. package/dist/remote-execution/canonical-metadata.d.ts +0 -4
  641. package/dist/remote-execution/canonical-metadata.js +0 -32
  642. package/dist/remote-execution/client.js +0 -824
  643. package/dist/remote-execution/deployment.js +0 -131
  644. package/dist/remote-execution/descriptors.js +0 -267
  645. package/dist/remote-execution/effects.js +0 -357
  646. package/dist/remote-execution/endpoint.js +0 -224
  647. package/dist/remote-execution/files.js +0 -291
  648. package/dist/remote-execution/hosting-operation.js +0 -26
  649. package/dist/remote-execution/hosting-request.d.ts +0 -4
  650. package/dist/remote-execution/hosting-request.js +0 -12
  651. package/dist/remote-execution/hosting-stream.d.ts +0 -8
  652. package/dist/remote-execution/hosting-stream.js +0 -64
  653. package/dist/remote-execution/index.js +0 -18
  654. package/dist/remote-execution/invocation-admission.d.ts +0 -3
  655. package/dist/remote-execution/invocation-admission.js +0 -17
  656. package/dist/remote-execution/job-binding.js +0 -1269
  657. package/dist/remote-execution/materializations.js +0 -284
  658. package/dist/remote-execution/modal-driver.js +0 -90
  659. package/dist/remote-execution/native-result.d.ts +0 -3
  660. package/dist/remote-execution/native-result.js +0 -16
  661. package/dist/remote-execution/output-freshness.d.ts +0 -4
  662. package/dist/remote-execution/output-freshness.js +0 -19
  663. package/dist/remote-execution/output-retrieval.js +0 -474
  664. package/dist/remote-execution/process-http.js +0 -607
  665. package/dist/remote-execution/process.js +0 -577
  666. package/dist/remote-execution/protocol.js +0 -208
  667. package/dist/remote-execution/relay.js +0 -91
  668. package/dist/remote-execution/rest-driver.js +0 -93
  669. package/dist/remote-execution/upload-descriptor.js +0 -201
  670. package/dist/remote-execution/upload-protocol.js +0 -62
  671. package/dist/remote-execution/uploads.js +0 -324
  672. package/dist/remote-execution/wire-json.d.ts +0 -4
  673. package/dist/remote-execution/wire-json.js +0 -44
  674. package/dist/remote-execution/wire-validation.js +0 -131
  675. package/dist/remote-execution/wire.generated.js +0 -4224
  676. package/dist/safe-bash/chunks/chunk-GDYNCWRV.js +0 -161
  677. package/dist/safe-bash/chunks/chunk-IWDICZVK.js +0 -20
  678. package/dist/safe-bash/chunks/chunk-MHMMRCYC.js +0 -3464
  679. package/dist/safe-bash/chunks/chunk-UE5KZDEK.js +0 -77
  680. package/dist/safe-bash/chunks/csvkit-TACDU7FC.js +0 -1618
  681. package/dist/safe-bash/chunks/implementation-MLFHUQ5M.js +0 -133
  682. package/dist/safe-bash/commands/csvkit/sync.js +0 -1639
  683. package/dist/safe-bash/commands/node/unconfigured.d.ts +0 -3
  684. package/dist/safe-bash/commands/node/unconfigured.js +0 -10
  685. package/dist/safe-bash/commands/pandoc/implementation.d.ts +0 -8
  686. package/dist/safe-bash/commands/pandoc/implementation.js +0 -94
  687. package/dist/safe-bash-mcp/index.browser.js +0 -9167
  688. package/dist/safe-bash/command-chunks/{chunk-ZRRBXU3M.js → chunk-GIN5GUDP.js} +4 -4
  689. package/dist/safe-bash/command-chunks/{chunk-LAOM65EE.js → chunk-IEO4XVN6.js} +3 -3
  690. package/dist/safe-bash/command-chunks/{chunk-BXCXRYVU.js → chunk-JNANXVJV.js} +0 -0
  691. package/dist/safe-bash/command-chunks/{chunk-364TMWBT.js → chunk-MWREVL44.js} +6 -6
  692. package/dist/safe-bash/command-chunks/{chunk-464RVBGB.js → chunk-Q5TDKFHK.js} +3 -3
  693. package/dist/safe-bash/command-chunks/{chunk-AJR3AQYA.js → chunk-UKX3LZHR.js} +0 -0
  694. package/dist/safe-bash/command-chunks/{chunk-XIIBTGC5.js → chunk-XPXEQKRW.js} +9 -9
  695. package/dist/safe-bash/command-chunks/{chunk-FDBUV4HJ.js → chunk-Y4HGTG3E.js} +3 -3
  696. /package/dist/{safe-bash/commands/csvkit → safe-bash-command-csvkit}/sync.d.ts +0 -0
@@ -14,7 +14,13 @@ import {
14
14
  init_buffer
15
15
  } from "./chunk-HX3SHTCE.js";
16
16
 
17
- // packages/safe-bash-command-csvkit/src/csv.ts
17
+ // packages/safe-bash-command-csvkit/src/sync-support.ts
18
+ init_buffer();
19
+
20
+ // packages/safe-bash-command-csvkit/src/table/headers.ts
21
+ init_buffer();
22
+
23
+ // packages/safe-bash-command-csvkit/src/diagnostics/index.ts
18
24
  init_buffer();
19
25
 
20
26
  // packages/safe-bash-command-csvkit/src/cli/lexical.ts
@@ -64,1390 +70,1309 @@ function integer(text, maxDigits = Infinity) {
64
70
  return Number.isSafeInteger(number) ? number : big;
65
71
  }
66
72
 
67
- // packages/safe-bash-command-csvkit/src/csv.ts
68
- function numericField(field) {
69
- const invalid = () => {
70
- throw new CsvkitDiagnostic(`ValueError: could not convert string to float: ${repr(field)}`);
73
+ // packages/safe-bash-command-csvkit/src/python-text.ts
74
+ init_buffer();
75
+
76
+ // packages/safe-bash-command-csvkit/src/unicode-lower-profile.ts
77
+ init_buffer();
78
+ var lowerMappings = [[65, "a"], [66, "b"], [67, "c"], [68, "d"], [69, "e"], [70, "f"], [71, "g"], [72, "h"], [73, "i"], [74, "j"], [75, "k"], [76, "l"], [77, "m"], [78, "n"], [79, "o"], [80, "p"], [81, "q"], [82, "r"], [83, "s"], [84, "t"], [85, "u"], [86, "v"], [87, "w"], [88, "x"], [89, "y"], [90, "z"], [192, "\xE0"], [193, "\xE1"], [194, "\xE2"], [195, "\xE3"], [196, "\xE4"], [197, "\xE5"], [198, "\xE6"], [199, "\xE7"], [200, "\xE8"], [201, "\xE9"], [202, "\xEA"], [203, "\xEB"], [204, "\xEC"], [205, "\xED"], [206, "\xEE"], [207, "\xEF"], [208, "\xF0"], [209, "\xF1"], [210, "\xF2"], [211, "\xF3"], [212, "\xF4"], [213, "\xF5"], [214, "\xF6"], [216, "\xF8"], [217, "\xF9"], [218, "\xFA"], [219, "\xFB"], [220, "\xFC"], [221, "\xFD"], [222, "\xFE"], [256, "\u0101"], [258, "\u0103"], [260, "\u0105"], [262, "\u0107"], [264, "\u0109"], [266, "\u010B"], [268, "\u010D"], [270, "\u010F"], [272, "\u0111"], [274, "\u0113"], [276, "\u0115"], [278, "\u0117"], [280, "\u0119"], [282, "\u011B"], [284, "\u011D"], [286, "\u011F"], [288, "\u0121"], [290, "\u0123"], [292, "\u0125"], [294, "\u0127"], [296, "\u0129"], [298, "\u012B"], [300, "\u012D"], [302, "\u012F"], [304, "i\u0307"], [306, "\u0133"], [308, "\u0135"], [310, "\u0137"], [313, "\u013A"], [315, "\u013C"], [317, "\u013E"], [319, "\u0140"], [321, "\u0142"], [323, "\u0144"], [325, "\u0146"], [327, "\u0148"], [330, "\u014B"], [332, "\u014D"], [334, "\u014F"], [336, "\u0151"], [338, "\u0153"], [340, "\u0155"], [342, "\u0157"], [344, "\u0159"], [346, "\u015B"], [348, "\u015D"], [350, "\u015F"], [352, "\u0161"], [354, "\u0163"], [356, "\u0165"], [358, "\u0167"], [360, "\u0169"], [362, "\u016B"], [364, "\u016D"], [366, "\u016F"], [368, "\u0171"], [370, "\u0173"], [372, "\u0175"], [374, "\u0177"], [376, "\xFF"], [377, "\u017A"], [379, "\u017C"], [381, "\u017E"], [385, "\u0253"], [386, "\u0183"], [388, "\u0185"], [390, "\u0254"], [391, "\u0188"], [393, "\u0256"], [394, "\u0257"], [395, "\u018C"], [398, "\u01DD"], [399, "\u0259"], [400, "\u025B"], [401, "\u0192"], [403, "\u0260"], [404, "\u0263"], [406, "\u0269"], [407, "\u0268"], [408, "\u0199"], [412, "\u026F"], [413, "\u0272"], [415, "\u0275"], [416, "\u01A1"], [418, "\u01A3"], [420, "\u01A5"], [422, "\u0280"], [423, "\u01A8"], [425, "\u0283"], [428, "\u01AD"], [430, "\u0288"], [431, "\u01B0"], [433, "\u028A"], [434, "\u028B"], [435, "\u01B4"], [437, "\u01B6"], [439, "\u0292"], [440, "\u01B9"], [444, "\u01BD"], [452, "\u01C6"], [453, "\u01C6"], [455, "\u01C9"], [456, "\u01C9"], [458, "\u01CC"], [459, "\u01CC"], [461, "\u01CE"], [463, "\u01D0"], [465, "\u01D2"], [467, "\u01D4"], [469, "\u01D6"], [471, "\u01D8"], [473, "\u01DA"], [475, "\u01DC"], [478, "\u01DF"], [480, "\u01E1"], [482, "\u01E3"], [484, "\u01E5"], [486, "\u01E7"], [488, "\u01E9"], [490, "\u01EB"], [492, "\u01ED"], [494, "\u01EF"], [497, "\u01F3"], [498, "\u01F3"], [500, "\u01F5"], [502, "\u0195"], [503, "\u01BF"], [504, "\u01F9"], [506, "\u01FB"], [508, "\u01FD"], [510, "\u01FF"], [512, "\u0201"], [514, "\u0203"], [516, "\u0205"], [518, "\u0207"], [520, "\u0209"], [522, "\u020B"], [524, "\u020D"], [526, "\u020F"], [528, "\u0211"], [530, "\u0213"], [532, "\u0215"], [534, "\u0217"], [536, "\u0219"], [538, "\u021B"], [540, "\u021D"], [542, "\u021F"], [544, "\u019E"], [546, "\u0223"], [548, "\u0225"], [550, "\u0227"], [552, "\u0229"], [554, "\u022B"], [556, "\u022D"], [558, "\u022F"], [560, "\u0231"], [562, "\u0233"], [570, "\u2C65"], [571, "\u023C"], [573, "\u019A"], [574, "\u2C66"], [577, "\u0242"], [579, "\u0180"], [580, "\u0289"], [581, "\u028C"], [582, "\u0247"], [584, "\u0249"], [586, "\u024B"], [588, "\u024D"], [590, "\u024F"], [880, "\u0371"], [882, "\u0373"], [886, "\u0377"], [895, "\u03F3"], [902, "\u03AC"], [904, "\u03AD"], [905, "\u03AE"], [906, "\u03AF"], [908, "\u03CC"], [910, "\u03CD"], [911, "\u03CE"], [913, "\u03B1"], [914, "\u03B2"], [915, "\u03B3"], [916, "\u03B4"], [917, "\u03B5"], [918, "\u03B6"], [919, "\u03B7"], [920, "\u03B8"], [921, "\u03B9"], [922, "\u03BA"], [923, "\u03BB"], [924, "\u03BC"], [925, "\u03BD"], [926, "\u03BE"], [927, "\u03BF"], [928, "\u03C0"], [929, "\u03C1"], [931, "\u03C3"], [932, "\u03C4"], [933, "\u03C5"], [934, "\u03C6"], [935, "\u03C7"], [936, "\u03C8"], [937, "\u03C9"], [938, "\u03CA"], [939, "\u03CB"], [975, "\u03D7"], [984, "\u03D9"], [986, "\u03DB"], [988, "\u03DD"], [990, "\u03DF"], [992, "\u03E1"], [994, "\u03E3"], [996, "\u03E5"], [998, "\u03E7"], [1e3, "\u03E9"], [1002, "\u03EB"], [1004, "\u03ED"], [1006, "\u03EF"], [1012, "\u03B8"], [1015, "\u03F8"], [1017, "\u03F2"], [1018, "\u03FB"], [1021, "\u037B"], [1022, "\u037C"], [1023, "\u037D"], [1024, "\u0450"], [1025, "\u0451"], [1026, "\u0452"], [1027, "\u0453"], [1028, "\u0454"], [1029, "\u0455"], [1030, "\u0456"], [1031, "\u0457"], [1032, "\u0458"], [1033, "\u0459"], [1034, "\u045A"], [1035, "\u045B"], [1036, "\u045C"], [1037, "\u045D"], [1038, "\u045E"], [1039, "\u045F"], [1040, "\u0430"], [1041, "\u0431"], [1042, "\u0432"], [1043, "\u0433"], [1044, "\u0434"], [1045, "\u0435"], [1046, "\u0436"], [1047, "\u0437"], [1048, "\u0438"], [1049, "\u0439"], [1050, "\u043A"], [1051, "\u043B"], [1052, "\u043C"], [1053, "\u043D"], [1054, "\u043E"], [1055, "\u043F"], [1056, "\u0440"], [1057, "\u0441"], [1058, "\u0442"], [1059, "\u0443"], [1060, "\u0444"], [1061, "\u0445"], [1062, "\u0446"], [1063, "\u0447"], [1064, "\u0448"], [1065, "\u0449"], [1066, "\u044A"], [1067, "\u044B"], [1068, "\u044C"], [1069, "\u044D"], [1070, "\u044E"], [1071, "\u044F"], [1120, "\u0461"], [1122, "\u0463"], [1124, "\u0465"], [1126, "\u0467"], [1128, "\u0469"], [1130, "\u046B"], [1132, "\u046D"], [1134, "\u046F"], [1136, "\u0471"], [1138, "\u0473"], [1140, "\u0475"], [1142, "\u0477"], [1144, "\u0479"], [1146, "\u047B"], [1148, "\u047D"], [1150, "\u047F"], [1152, "\u0481"], [1162, "\u048B"], [1164, "\u048D"], [1166, "\u048F"], [1168, "\u0491"], [1170, "\u0493"], [1172, "\u0495"], [1174, "\u0497"], [1176, "\u0499"], [1178, "\u049B"], [1180, "\u049D"], [1182, "\u049F"], [1184, "\u04A1"], [1186, "\u04A3"], [1188, "\u04A5"], [1190, "\u04A7"], [1192, "\u04A9"], [1194, "\u04AB"], [1196, "\u04AD"], [1198, "\u04AF"], [1200, "\u04B1"], [1202, "\u04B3"], [1204, "\u04B5"], [1206, "\u04B7"], [1208, "\u04B9"], [1210, "\u04BB"], [1212, "\u04BD"], [1214, "\u04BF"], [1216, "\u04CF"], [1217, "\u04C2"], [1219, "\u04C4"], [1221, "\u04C6"], [1223, "\u04C8"], [1225, "\u04CA"], [1227, "\u04CC"], [1229, "\u04CE"], [1232, "\u04D1"], [1234, "\u04D3"], [1236, "\u04D5"], [1238, "\u04D7"], [1240, "\u04D9"], [1242, "\u04DB"], [1244, "\u04DD"], [1246, "\u04DF"], [1248, "\u04E1"], [1250, "\u04E3"], [1252, "\u04E5"], [1254, "\u04E7"], [1256, "\u04E9"], [1258, "\u04EB"], [1260, "\u04ED"], [1262, "\u04EF"], [1264, "\u04F1"], [1266, "\u04F3"], [1268, "\u04F5"], [1270, "\u04F7"], [1272, "\u04F9"], [1274, "\u04FB"], [1276, "\u04FD"], [1278, "\u04FF"], [1280, "\u0501"], [1282, "\u0503"], [1284, "\u0505"], [1286, "\u0507"], [1288, "\u0509"], [1290, "\u050B"], [1292, "\u050D"], [1294, "\u050F"], [1296, "\u0511"], [1298, "\u0513"], [1300, "\u0515"], [1302, "\u0517"], [1304, "\u0519"], [1306, "\u051B"], [1308, "\u051D"], [1310, "\u051F"], [1312, "\u0521"], [1314, "\u0523"], [1316, "\u0525"], [1318, "\u0527"], [1320, "\u0529"], [1322, "\u052B"], [1324, "\u052D"], [1326, "\u052F"], [1329, "\u0561"], [1330, "\u0562"], [1331, "\u0563"], [1332, "\u0564"], [1333, "\u0565"], [1334, "\u0566"], [1335, "\u0567"], [1336, "\u0568"], [1337, "\u0569"], [1338, "\u056A"], [1339, "\u056B"], [1340, "\u056C"], [1341, "\u056D"], [1342, "\u056E"], [1343, "\u056F"], [1344, "\u0570"], [1345, "\u0571"], [1346, "\u0572"], [1347, "\u0573"], [1348, "\u0574"], [1349, "\u0575"], [1350, "\u0576"], [1351, "\u0577"], [1352, "\u0578"], [1353, "\u0579"], [1354, "\u057A"], [1355, "\u057B"], [1356, "\u057C"], [1357, "\u057D"], [1358, "\u057E"], [1359, "\u057F"], [1360, "\u0580"], [1361, "\u0581"], [1362, "\u0582"], [1363, "\u0583"], [1364, "\u0584"], [1365, "\u0585"], [1366, "\u0586"], [4256, "\u2D00"], [4257, "\u2D01"], [4258, "\u2D02"], [4259, "\u2D03"], [4260, "\u2D04"], [4261, "\u2D05"], [4262, "\u2D06"], [4263, "\u2D07"], [4264, "\u2D08"], [4265, "\u2D09"], [4266, "\u2D0A"], [4267, "\u2D0B"], [4268, "\u2D0C"], [4269, "\u2D0D"], [4270, "\u2D0E"], [4271, "\u2D0F"], [4272, "\u2D10"], [4273, "\u2D11"], [4274, "\u2D12"], [4275, "\u2D13"], [4276, "\u2D14"], [4277, "\u2D15"], [4278, "\u2D16"], [4279, "\u2D17"], [4280, "\u2D18"], [4281, "\u2D19"], [4282, "\u2D1A"], [4283, "\u2D1B"], [4284, "\u2D1C"], [4285, "\u2D1D"], [4286, "\u2D1E"], [4287, "\u2D1F"], [4288, "\u2D20"], [4289, "\u2D21"], [4290, "\u2D22"], [4291, "\u2D23"], [4292, "\u2D24"], [4293, "\u2D25"], [4295, "\u2D27"], [4301, "\u2D2D"], [5024, "\uAB70"], [5025, "\uAB71"], [5026, "\uAB72"], [5027, "\uAB73"], [5028, "\uAB74"], [5029, "\uAB75"], [5030, "\uAB76"], [5031, "\uAB77"], [5032, "\uAB78"], [5033, "\uAB79"], [5034, "\uAB7A"], [5035, "\uAB7B"], [5036, "\uAB7C"], [5037, "\uAB7D"], [5038, "\uAB7E"], [5039, "\uAB7F"], [5040, "\uAB80"], [5041, "\uAB81"], [5042, "\uAB82"], [5043, "\uAB83"], [5044, "\uAB84"], [5045, "\uAB85"], [5046, "\uAB86"], [5047, "\uAB87"], [5048, "\uAB88"], [5049, "\uAB89"], [5050, "\uAB8A"], [5051, "\uAB8B"], [5052, "\uAB8C"], [5053, "\uAB8D"], [5054, "\uAB8E"], [5055, "\uAB8F"], [5056, "\uAB90"], [5057, "\uAB91"], [5058, "\uAB92"], [5059, "\uAB93"], [5060, "\uAB94"], [5061, "\uAB95"], [5062, "\uAB96"], [5063, "\uAB97"], [5064, "\uAB98"], [5065, "\uAB99"], [5066, "\uAB9A"], [5067, "\uAB9B"], [5068, "\uAB9C"], [5069, "\uAB9D"], [5070, "\uAB9E"], [5071, "\uAB9F"], [5072, "\uABA0"], [5073, "\uABA1"], [5074, "\uABA2"], [5075, "\uABA3"], [5076, "\uABA4"], [5077, "\uABA5"], [5078, "\uABA6"], [5079, "\uABA7"], [5080, "\uABA8"], [5081, "\uABA9"], [5082, "\uABAA"], [5083, "\uABAB"], [5084, "\uABAC"], [5085, "\uABAD"], [5086, "\uABAE"], [5087, "\uABAF"], [5088, "\uABB0"], [5089, "\uABB1"], [5090, "\uABB2"], [5091, "\uABB3"], [5092, "\uABB4"], [5093, "\uABB5"], [5094, "\uABB6"], [5095, "\uABB7"], [5096, "\uABB8"], [5097, "\uABB9"], [5098, "\uABBA"], [5099, "\uABBB"], [5100, "\uABBC"], [5101, "\uABBD"], [5102, "\uABBE"], [5103, "\uABBF"], [5104, "\u13F8"], [5105, "\u13F9"], [5106, "\u13FA"], [5107, "\u13FB"], [5108, "\u13FC"], [5109, "\u13FD"], [7305, "\u1C8A"], [7312, "\u10D0"], [7313, "\u10D1"], [7314, "\u10D2"], [7315, "\u10D3"], [7316, "\u10D4"], [7317, "\u10D5"], [7318, "\u10D6"], [7319, "\u10D7"], [7320, "\u10D8"], [7321, "\u10D9"], [7322, "\u10DA"], [7323, "\u10DB"], [7324, "\u10DC"], [7325, "\u10DD"], [7326, "\u10DE"], [7327, "\u10DF"], [7328, "\u10E0"], [7329, "\u10E1"], [7330, "\u10E2"], [7331, "\u10E3"], [7332, "\u10E4"], [7333, "\u10E5"], [7334, "\u10E6"], [7335, "\u10E7"], [7336, "\u10E8"], [7337, "\u10E9"], [7338, "\u10EA"], [7339, "\u10EB"], [7340, "\u10EC"], [7341, "\u10ED"], [7342, "\u10EE"], [7343, "\u10EF"], [7344, "\u10F0"], [7345, "\u10F1"], [7346, "\u10F2"], [7347, "\u10F3"], [7348, "\u10F4"], [7349, "\u10F5"], [7350, "\u10F6"], [7351, "\u10F7"], [7352, "\u10F8"], [7353, "\u10F9"], [7354, "\u10FA"], [7357, "\u10FD"], [7358, "\u10FE"], [7359, "\u10FF"], [7680, "\u1E01"], [7682, "\u1E03"], [7684, "\u1E05"], [7686, "\u1E07"], [7688, "\u1E09"], [7690, "\u1E0B"], [7692, "\u1E0D"], [7694, "\u1E0F"], [7696, "\u1E11"], [7698, "\u1E13"], [7700, "\u1E15"], [7702, "\u1E17"], [7704, "\u1E19"], [7706, "\u1E1B"], [7708, "\u1E1D"], [7710, "\u1E1F"], [7712, "\u1E21"], [7714, "\u1E23"], [7716, "\u1E25"], [7718, "\u1E27"], [7720, "\u1E29"], [7722, "\u1E2B"], [7724, "\u1E2D"], [7726, "\u1E2F"], [7728, "\u1E31"], [7730, "\u1E33"], [7732, "\u1E35"], [7734, "\u1E37"], [7736, "\u1E39"], [7738, "\u1E3B"], [7740, "\u1E3D"], [7742, "\u1E3F"], [7744, "\u1E41"], [7746, "\u1E43"], [7748, "\u1E45"], [7750, "\u1E47"], [7752, "\u1E49"], [7754, "\u1E4B"], [7756, "\u1E4D"], [7758, "\u1E4F"], [7760, "\u1E51"], [7762, "\u1E53"], [7764, "\u1E55"], [7766, "\u1E57"], [7768, "\u1E59"], [7770, "\u1E5B"], [7772, "\u1E5D"], [7774, "\u1E5F"], [7776, "\u1E61"], [7778, "\u1E63"], [7780, "\u1E65"], [7782, "\u1E67"], [7784, "\u1E69"], [7786, "\u1E6B"], [7788, "\u1E6D"], [7790, "\u1E6F"], [7792, "\u1E71"], [7794, "\u1E73"], [7796, "\u1E75"], [7798, "\u1E77"], [7800, "\u1E79"], [7802, "\u1E7B"], [7804, "\u1E7D"], [7806, "\u1E7F"], [7808, "\u1E81"], [7810, "\u1E83"], [7812, "\u1E85"], [7814, "\u1E87"], [7816, "\u1E89"], [7818, "\u1E8B"], [7820, "\u1E8D"], [7822, "\u1E8F"], [7824, "\u1E91"], [7826, "\u1E93"], [7828, "\u1E95"], [7838, "\xDF"], [7840, "\u1EA1"], [7842, "\u1EA3"], [7844, "\u1EA5"], [7846, "\u1EA7"], [7848, "\u1EA9"], [7850, "\u1EAB"], [7852, "\u1EAD"], [7854, "\u1EAF"], [7856, "\u1EB1"], [7858, "\u1EB3"], [7860, "\u1EB5"], [7862, "\u1EB7"], [7864, "\u1EB9"], [7866, "\u1EBB"], [7868, "\u1EBD"], [7870, "\u1EBF"], [7872, "\u1EC1"], [7874, "\u1EC3"], [7876, "\u1EC5"], [7878, "\u1EC7"], [7880, "\u1EC9"], [7882, "\u1ECB"], [7884, "\u1ECD"], [7886, "\u1ECF"], [7888, "\u1ED1"], [7890, "\u1ED3"], [7892, "\u1ED5"], [7894, "\u1ED7"], [7896, "\u1ED9"], [7898, "\u1EDB"], [7900, "\u1EDD"], [7902, "\u1EDF"], [7904, "\u1EE1"], [7906, "\u1EE3"], [7908, "\u1EE5"], [7910, "\u1EE7"], [7912, "\u1EE9"], [7914, "\u1EEB"], [7916, "\u1EED"], [7918, "\u1EEF"], [7920, "\u1EF1"], [7922, "\u1EF3"], [7924, "\u1EF5"], [7926, "\u1EF7"], [7928, "\u1EF9"], [7930, "\u1EFB"], [7932, "\u1EFD"], [7934, "\u1EFF"], [7944, "\u1F00"], [7945, "\u1F01"], [7946, "\u1F02"], [7947, "\u1F03"], [7948, "\u1F04"], [7949, "\u1F05"], [7950, "\u1F06"], [7951, "\u1F07"], [7960, "\u1F10"], [7961, "\u1F11"], [7962, "\u1F12"], [7963, "\u1F13"], [7964, "\u1F14"], [7965, "\u1F15"], [7976, "\u1F20"], [7977, "\u1F21"], [7978, "\u1F22"], [7979, "\u1F23"], [7980, "\u1F24"], [7981, "\u1F25"], [7982, "\u1F26"], [7983, "\u1F27"], [7992, "\u1F30"], [7993, "\u1F31"], [7994, "\u1F32"], [7995, "\u1F33"], [7996, "\u1F34"], [7997, "\u1F35"], [7998, "\u1F36"], [7999, "\u1F37"], [8008, "\u1F40"], [8009, "\u1F41"], [8010, "\u1F42"], [8011, "\u1F43"], [8012, "\u1F44"], [8013, "\u1F45"], [8025, "\u1F51"], [8027, "\u1F53"], [8029, "\u1F55"], [8031, "\u1F57"], [8040, "\u1F60"], [8041, "\u1F61"], [8042, "\u1F62"], [8043, "\u1F63"], [8044, "\u1F64"], [8045, "\u1F65"], [8046, "\u1F66"], [8047, "\u1F67"], [8072, "\u1F80"], [8073, "\u1F81"], [8074, "\u1F82"], [8075, "\u1F83"], [8076, "\u1F84"], [8077, "\u1F85"], [8078, "\u1F86"], [8079, "\u1F87"], [8088, "\u1F90"], [8089, "\u1F91"], [8090, "\u1F92"], [8091, "\u1F93"], [8092, "\u1F94"], [8093, "\u1F95"], [8094, "\u1F96"], [8095, "\u1F97"], [8104, "\u1FA0"], [8105, "\u1FA1"], [8106, "\u1FA2"], [8107, "\u1FA3"], [8108, "\u1FA4"], [8109, "\u1FA5"], [8110, "\u1FA6"], [8111, "\u1FA7"], [8120, "\u1FB0"], [8121, "\u1FB1"], [8122, "\u1F70"], [8123, "\u1F71"], [8124, "\u1FB3"], [8136, "\u1F72"], [8137, "\u1F73"], [8138, "\u1F74"], [8139, "\u1F75"], [8140, "\u1FC3"], [8152, "\u1FD0"], [8153, "\u1FD1"], [8154, "\u1F76"], [8155, "\u1F77"], [8168, "\u1FE0"], [8169, "\u1FE1"], [8170, "\u1F7A"], [8171, "\u1F7B"], [8172, "\u1FE5"], [8184, "\u1F78"], [8185, "\u1F79"], [8186, "\u1F7C"], [8187, "\u1F7D"], [8188, "\u1FF3"], [8486, "\u03C9"], [8490, "k"], [8491, "\xE5"], [8498, "\u214E"], [8544, "\u2170"], [8545, "\u2171"], [8546, "\u2172"], [8547, "\u2173"], [8548, "\u2174"], [8549, "\u2175"], [8550, "\u2176"], [8551, "\u2177"], [8552, "\u2178"], [8553, "\u2179"], [8554, "\u217A"], [8555, "\u217B"], [8556, "\u217C"], [8557, "\u217D"], [8558, "\u217E"], [8559, "\u217F"], [8579, "\u2184"], [9398, "\u24D0"], [9399, "\u24D1"], [9400, "\u24D2"], [9401, "\u24D3"], [9402, "\u24D4"], [9403, "\u24D5"], [9404, "\u24D6"], [9405, "\u24D7"], [9406, "\u24D8"], [9407, "\u24D9"], [9408, "\u24DA"], [9409, "\u24DB"], [9410, "\u24DC"], [9411, "\u24DD"], [9412, "\u24DE"], [9413, "\u24DF"], [9414, "\u24E0"], [9415, "\u24E1"], [9416, "\u24E2"], [9417, "\u24E3"], [9418, "\u24E4"], [9419, "\u24E5"], [9420, "\u24E6"], [9421, "\u24E7"], [9422, "\u24E8"], [9423, "\u24E9"], [11264, "\u2C30"], [11265, "\u2C31"], [11266, "\u2C32"], [11267, "\u2C33"], [11268, "\u2C34"], [11269, "\u2C35"], [11270, "\u2C36"], [11271, "\u2C37"], [11272, "\u2C38"], [11273, "\u2C39"], [11274, "\u2C3A"], [11275, "\u2C3B"], [11276, "\u2C3C"], [11277, "\u2C3D"], [11278, "\u2C3E"], [11279, "\u2C3F"], [11280, "\u2C40"], [11281, "\u2C41"], [11282, "\u2C42"], [11283, "\u2C43"], [11284, "\u2C44"], [11285, "\u2C45"], [11286, "\u2C46"], [11287, "\u2C47"], [11288, "\u2C48"], [11289, "\u2C49"], [11290, "\u2C4A"], [11291, "\u2C4B"], [11292, "\u2C4C"], [11293, "\u2C4D"], [11294, "\u2C4E"], [11295, "\u2C4F"], [11296, "\u2C50"], [11297, "\u2C51"], [11298, "\u2C52"], [11299, "\u2C53"], [11300, "\u2C54"], [11301, "\u2C55"], [11302, "\u2C56"], [11303, "\u2C57"], [11304, "\u2C58"], [11305, "\u2C59"], [11306, "\u2C5A"], [11307, "\u2C5B"], [11308, "\u2C5C"], [11309, "\u2C5D"], [11310, "\u2C5E"], [11311, "\u2C5F"], [11360, "\u2C61"], [11362, "\u026B"], [11363, "\u1D7D"], [11364, "\u027D"], [11367, "\u2C68"], [11369, "\u2C6A"], [11371, "\u2C6C"], [11373, "\u0251"], [11374, "\u0271"], [11375, "\u0250"], [11376, "\u0252"], [11378, "\u2C73"], [11381, "\u2C76"], [11390, "\u023F"], [11391, "\u0240"], [11392, "\u2C81"], [11394, "\u2C83"], [11396, "\u2C85"], [11398, "\u2C87"], [11400, "\u2C89"], [11402, "\u2C8B"], [11404, "\u2C8D"], [11406, "\u2C8F"], [11408, "\u2C91"], [11410, "\u2C93"], [11412, "\u2C95"], [11414, "\u2C97"], [11416, "\u2C99"], [11418, "\u2C9B"], [11420, "\u2C9D"], [11422, "\u2C9F"], [11424, "\u2CA1"], [11426, "\u2CA3"], [11428, "\u2CA5"], [11430, "\u2CA7"], [11432, "\u2CA9"], [11434, "\u2CAB"], [11436, "\u2CAD"], [11438, "\u2CAF"], [11440, "\u2CB1"], [11442, "\u2CB3"], [11444, "\u2CB5"], [11446, "\u2CB7"], [11448, "\u2CB9"], [11450, "\u2CBB"], [11452, "\u2CBD"], [11454, "\u2CBF"], [11456, "\u2CC1"], [11458, "\u2CC3"], [11460, "\u2CC5"], [11462, "\u2CC7"], [11464, "\u2CC9"], [11466, "\u2CCB"], [11468, "\u2CCD"], [11470, "\u2CCF"], [11472, "\u2CD1"], [11474, "\u2CD3"], [11476, "\u2CD5"], [11478, "\u2CD7"], [11480, "\u2CD9"], [11482, "\u2CDB"], [11484, "\u2CDD"], [11486, "\u2CDF"], [11488, "\u2CE1"], [11490, "\u2CE3"], [11499, "\u2CEC"], [11501, "\u2CEE"], [11506, "\u2CF3"], [42560, "\uA641"], [42562, "\uA643"], [42564, "\uA645"], [42566, "\uA647"], [42568, "\uA649"], [42570, "\uA64B"], [42572, "\uA64D"], [42574, "\uA64F"], [42576, "\uA651"], [42578, "\uA653"], [42580, "\uA655"], [42582, "\uA657"], [42584, "\uA659"], [42586, "\uA65B"], [42588, "\uA65D"], [42590, "\uA65F"], [42592, "\uA661"], [42594, "\uA663"], [42596, "\uA665"], [42598, "\uA667"], [42600, "\uA669"], [42602, "\uA66B"], [42604, "\uA66D"], [42624, "\uA681"], [42626, "\uA683"], [42628, "\uA685"], [42630, "\uA687"], [42632, "\uA689"], [42634, "\uA68B"], [42636, "\uA68D"], [42638, "\uA68F"], [42640, "\uA691"], [42642, "\uA693"], [42644, "\uA695"], [42646, "\uA697"], [42648, "\uA699"], [42650, "\uA69B"], [42786, "\uA723"], [42788, "\uA725"], [42790, "\uA727"], [42792, "\uA729"], [42794, "\uA72B"], [42796, "\uA72D"], [42798, "\uA72F"], [42802, "\uA733"], [42804, "\uA735"], [42806, "\uA737"], [42808, "\uA739"], [42810, "\uA73B"], [42812, "\uA73D"], [42814, "\uA73F"], [42816, "\uA741"], [42818, "\uA743"], [42820, "\uA745"], [42822, "\uA747"], [42824, "\uA749"], [42826, "\uA74B"], [42828, "\uA74D"], [42830, "\uA74F"], [42832, "\uA751"], [42834, "\uA753"], [42836, "\uA755"], [42838, "\uA757"], [42840, "\uA759"], [42842, "\uA75B"], [42844, "\uA75D"], [42846, "\uA75F"], [42848, "\uA761"], [42850, "\uA763"], [42852, "\uA765"], [42854, "\uA767"], [42856, "\uA769"], [42858, "\uA76B"], [42860, "\uA76D"], [42862, "\uA76F"], [42873, "\uA77A"], [42875, "\uA77C"], [42877, "\u1D79"], [42878, "\uA77F"], [42880, "\uA781"], [42882, "\uA783"], [42884, "\uA785"], [42886, "\uA787"], [42891, "\uA78C"], [42893, "\u0265"], [42896, "\uA791"], [42898, "\uA793"], [42902, "\uA797"], [42904, "\uA799"], [42906, "\uA79B"], [42908, "\uA79D"], [42910, "\uA79F"], [42912, "\uA7A1"], [42914, "\uA7A3"], [42916, "\uA7A5"], [42918, "\uA7A7"], [42920, "\uA7A9"], [42922, "\u0266"], [42923, "\u025C"], [42924, "\u0261"], [42925, "\u026C"], [42926, "\u026A"], [42928, "\u029E"], [42929, "\u0287"], [42930, "\u029D"], [42931, "\uAB53"], [42932, "\uA7B5"], [42934, "\uA7B7"], [42936, "\uA7B9"], [42938, "\uA7BB"], [42940, "\uA7BD"], [42942, "\uA7BF"], [42944, "\uA7C1"], [42946, "\uA7C3"], [42948, "\uA794"], [42949, "\u0282"], [42950, "\u1D8E"], [42951, "\uA7C8"], [42953, "\uA7CA"], [42955, "\u0264"], [42956, "\uA7CD"], [42960, "\uA7D1"], [42966, "\uA7D7"], [42968, "\uA7D9"], [42970, "\uA7DB"], [42972, "\u019B"], [42997, "\uA7F6"], [65313, "\uFF41"], [65314, "\uFF42"], [65315, "\uFF43"], [65316, "\uFF44"], [65317, "\uFF45"], [65318, "\uFF46"], [65319, "\uFF47"], [65320, "\uFF48"], [65321, "\uFF49"], [65322, "\uFF4A"], [65323, "\uFF4B"], [65324, "\uFF4C"], [65325, "\uFF4D"], [65326, "\uFF4E"], [65327, "\uFF4F"], [65328, "\uFF50"], [65329, "\uFF51"], [65330, "\uFF52"], [65331, "\uFF53"], [65332, "\uFF54"], [65333, "\uFF55"], [65334, "\uFF56"], [65335, "\uFF57"], [65336, "\uFF58"], [65337, "\uFF59"], [65338, "\uFF5A"], [66560, "\u{10428}"], [66561, "\u{10429}"], [66562, "\u{1042A}"], [66563, "\u{1042B}"], [66564, "\u{1042C}"], [66565, "\u{1042D}"], [66566, "\u{1042E}"], [66567, "\u{1042F}"], [66568, "\u{10430}"], [66569, "\u{10431}"], [66570, "\u{10432}"], [66571, "\u{10433}"], [66572, "\u{10434}"], [66573, "\u{10435}"], [66574, "\u{10436}"], [66575, "\u{10437}"], [66576, "\u{10438}"], [66577, "\u{10439}"], [66578, "\u{1043A}"], [66579, "\u{1043B}"], [66580, "\u{1043C}"], [66581, "\u{1043D}"], [66582, "\u{1043E}"], [66583, "\u{1043F}"], [66584, "\u{10440}"], [66585, "\u{10441}"], [66586, "\u{10442}"], [66587, "\u{10443}"], [66588, "\u{10444}"], [66589, "\u{10445}"], [66590, "\u{10446}"], [66591, "\u{10447}"], [66592, "\u{10448}"], [66593, "\u{10449}"], [66594, "\u{1044A}"], [66595, "\u{1044B}"], [66596, "\u{1044C}"], [66597, "\u{1044D}"], [66598, "\u{1044E}"], [66599, "\u{1044F}"], [66736, "\u{104D8}"], [66737, "\u{104D9}"], [66738, "\u{104DA}"], [66739, "\u{104DB}"], [66740, "\u{104DC}"], [66741, "\u{104DD}"], [66742, "\u{104DE}"], [66743, "\u{104DF}"], [66744, "\u{104E0}"], [66745, "\u{104E1}"], [66746, "\u{104E2}"], [66747, "\u{104E3}"], [66748, "\u{104E4}"], [66749, "\u{104E5}"], [66750, "\u{104E6}"], [66751, "\u{104E7}"], [66752, "\u{104E8}"], [66753, "\u{104E9}"], [66754, "\u{104EA}"], [66755, "\u{104EB}"], [66756, "\u{104EC}"], [66757, "\u{104ED}"], [66758, "\u{104EE}"], [66759, "\u{104EF}"], [66760, "\u{104F0}"], [66761, "\u{104F1}"], [66762, "\u{104F2}"], [66763, "\u{104F3}"], [66764, "\u{104F4}"], [66765, "\u{104F5}"], [66766, "\u{104F6}"], [66767, "\u{104F7}"], [66768, "\u{104F8}"], [66769, "\u{104F9}"], [66770, "\u{104FA}"], [66771, "\u{104FB}"], [66928, "\u{10597}"], [66929, "\u{10598}"], [66930, "\u{10599}"], [66931, "\u{1059A}"], [66932, "\u{1059B}"], [66933, "\u{1059C}"], [66934, "\u{1059D}"], [66935, "\u{1059E}"], [66936, "\u{1059F}"], [66937, "\u{105A0}"], [66938, "\u{105A1}"], [66940, "\u{105A3}"], [66941, "\u{105A4}"], [66942, "\u{105A5}"], [66943, "\u{105A6}"], [66944, "\u{105A7}"], [66945, "\u{105A8}"], [66946, "\u{105A9}"], [66947, "\u{105AA}"], [66948, "\u{105AB}"], [66949, "\u{105AC}"], [66950, "\u{105AD}"], [66951, "\u{105AE}"], [66952, "\u{105AF}"], [66953, "\u{105B0}"], [66954, "\u{105B1}"], [66956, "\u{105B3}"], [66957, "\u{105B4}"], [66958, "\u{105B5}"], [66959, "\u{105B6}"], [66960, "\u{105B7}"], [66961, "\u{105B8}"], [66962, "\u{105B9}"], [66964, "\u{105BB}"], [66965, "\u{105BC}"], [68736, "\u{10CC0}"], [68737, "\u{10CC1}"], [68738, "\u{10CC2}"], [68739, "\u{10CC3}"], [68740, "\u{10CC4}"], [68741, "\u{10CC5}"], [68742, "\u{10CC6}"], [68743, "\u{10CC7}"], [68744, "\u{10CC8}"], [68745, "\u{10CC9}"], [68746, "\u{10CCA}"], [68747, "\u{10CCB}"], [68748, "\u{10CCC}"], [68749, "\u{10CCD}"], [68750, "\u{10CCE}"], [68751, "\u{10CCF}"], [68752, "\u{10CD0}"], [68753, "\u{10CD1}"], [68754, "\u{10CD2}"], [68755, "\u{10CD3}"], [68756, "\u{10CD4}"], [68757, "\u{10CD5}"], [68758, "\u{10CD6}"], [68759, "\u{10CD7}"], [68760, "\u{10CD8}"], [68761, "\u{10CD9}"], [68762, "\u{10CDA}"], [68763, "\u{10CDB}"], [68764, "\u{10CDC}"], [68765, "\u{10CDD}"], [68766, "\u{10CDE}"], [68767, "\u{10CDF}"], [68768, "\u{10CE0}"], [68769, "\u{10CE1}"], [68770, "\u{10CE2}"], [68771, "\u{10CE3}"], [68772, "\u{10CE4}"], [68773, "\u{10CE5}"], [68774, "\u{10CE6}"], [68775, "\u{10CE7}"], [68776, "\u{10CE8}"], [68777, "\u{10CE9}"], [68778, "\u{10CEA}"], [68779, "\u{10CEB}"], [68780, "\u{10CEC}"], [68781, "\u{10CED}"], [68782, "\u{10CEE}"], [68783, "\u{10CEF}"], [68784, "\u{10CF0}"], [68785, "\u{10CF1}"], [68786, "\u{10CF2}"], [68944, "\u{10D70}"], [68945, "\u{10D71}"], [68946, "\u{10D72}"], [68947, "\u{10D73}"], [68948, "\u{10D74}"], [68949, "\u{10D75}"], [68950, "\u{10D76}"], [68951, "\u{10D77}"], [68952, "\u{10D78}"], [68953, "\u{10D79}"], [68954, "\u{10D7A}"], [68955, "\u{10D7B}"], [68956, "\u{10D7C}"], [68957, "\u{10D7D}"], [68958, "\u{10D7E}"], [68959, "\u{10D7F}"], [68960, "\u{10D80}"], [68961, "\u{10D81}"], [68962, "\u{10D82}"], [68963, "\u{10D83}"], [68964, "\u{10D84}"], [68965, "\u{10D85}"], [71840, "\u{118C0}"], [71841, "\u{118C1}"], [71842, "\u{118C2}"], [71843, "\u{118C3}"], [71844, "\u{118C4}"], [71845, "\u{118C5}"], [71846, "\u{118C6}"], [71847, "\u{118C7}"], [71848, "\u{118C8}"], [71849, "\u{118C9}"], [71850, "\u{118CA}"], [71851, "\u{118CB}"], [71852, "\u{118CC}"], [71853, "\u{118CD}"], [71854, "\u{118CE}"], [71855, "\u{118CF}"], [71856, "\u{118D0}"], [71857, "\u{118D1}"], [71858, "\u{118D2}"], [71859, "\u{118D3}"], [71860, "\u{118D4}"], [71861, "\u{118D5}"], [71862, "\u{118D6}"], [71863, "\u{118D7}"], [71864, "\u{118D8}"], [71865, "\u{118D9}"], [71866, "\u{118DA}"], [71867, "\u{118DB}"], [71868, "\u{118DC}"], [71869, "\u{118DD}"], [71870, "\u{118DE}"], [71871, "\u{118DF}"], [93760, "\u{16E60}"], [93761, "\u{16E61}"], [93762, "\u{16E62}"], [93763, "\u{16E63}"], [93764, "\u{16E64}"], [93765, "\u{16E65}"], [93766, "\u{16E66}"], [93767, "\u{16E67}"], [93768, "\u{16E68}"], [93769, "\u{16E69}"], [93770, "\u{16E6A}"], [93771, "\u{16E6B}"], [93772, "\u{16E6C}"], [93773, "\u{16E6D}"], [93774, "\u{16E6E}"], [93775, "\u{16E6F}"], [93776, "\u{16E70}"], [93777, "\u{16E71}"], [93778, "\u{16E72}"], [93779, "\u{16E73}"], [93780, "\u{16E74}"], [93781, "\u{16E75}"], [93782, "\u{16E76}"], [93783, "\u{16E77}"], [93784, "\u{16E78}"], [93785, "\u{16E79}"], [93786, "\u{16E7A}"], [93787, "\u{16E7B}"], [93788, "\u{16E7C}"], [93789, "\u{16E7D}"], [93790, "\u{16E7E}"], [93791, "\u{16E7F}"], [125184, "\u{1E922}"], [125185, "\u{1E923}"], [125186, "\u{1E924}"], [125187, "\u{1E925}"], [125188, "\u{1E926}"], [125189, "\u{1E927}"], [125190, "\u{1E928}"], [125191, "\u{1E929}"], [125192, "\u{1E92A}"], [125193, "\u{1E92B}"], [125194, "\u{1E92C}"], [125195, "\u{1E92D}"], [125196, "\u{1E92E}"], [125197, "\u{1E92F}"], [125198, "\u{1E930}"], [125199, "\u{1E931}"], [125200, "\u{1E932}"], [125201, "\u{1E933}"], [125202, "\u{1E934}"], [125203, "\u{1E935}"], [125204, "\u{1E936}"], [125205, "\u{1E937}"], [125206, "\u{1E938}"], [125207, "\u{1E939}"], [125208, "\u{1E93A}"], [125209, "\u{1E93B}"], [125210, "\u{1E93C}"], [125211, "\u{1E93D}"], [125212, "\u{1E93E}"], [125213, "\u{1E93F}"], [125214, "\u{1E940}"], [125215, "\u{1E941}"], [125216, "\u{1E942}"], [125217, "\u{1E943}"]];
79
+ var sigmaCased = [[65, 90], [97, 122], [170, 170], [181, 181], [186, 186], [192, 214], [216, 246], [248, 442], [444, 447], [452, 659], [661, 687], [880, 883], [886, 887], [891, 893], [895, 895], [902, 902], [904, 906], [908, 908], [910, 929], [931, 1013], [1015, 1153], [1162, 1327], [1329, 1366], [1376, 1416], [4256, 4293], [4295, 4295], [4301, 4301], [4304, 4346], [4349, 4351], [5024, 5109], [5112, 5117], [7296, 7306], [7312, 7354], [7357, 7359], [7424, 7467], [7531, 7543], [7545, 7578], [7680, 7957], [7960, 7965], [7968, 8005], [8008, 8013], [8016, 8023], [8025, 8025], [8027, 8027], [8029, 8029], [8031, 8061], [8064, 8116], [8118, 8124], [8126, 8126], [8130, 8132], [8134, 8140], [8144, 8147], [8150, 8155], [8160, 8172], [8178, 8180], [8182, 8188], [8450, 8450], [8455, 8455], [8458, 8467], [8469, 8469], [8473, 8477], [8484, 8484], [8486, 8486], [8488, 8488], [8490, 8493], [8495, 8500], [8505, 8505], [8508, 8511], [8517, 8521], [8526, 8526], [8544, 8575], [8579, 8580], [9398, 9449], [11264, 11387], [11390, 11492], [11499, 11502], [11506, 11507], [11520, 11557], [11559, 11559], [11565, 11565], [42560, 42605], [42624, 42651], [42786, 42863], [42865, 42887], [42891, 42894], [42896, 42957], [42960, 42961], [42963, 42963], [42965, 42972], [42997, 42998], [43002, 43002], [43824, 43866], [43872, 43880], [43888, 43967], [64256, 64262], [64275, 64279], [65313, 65338], [65345, 65370], [66560, 66639], [66736, 66771], [66776, 66811], [66928, 66938], [66940, 66954], [66956, 66962], [66964, 66965], [66967, 66977], [66979, 66993], [66995, 67001], [67003, 67004], [68736, 68786], [68800, 68850], [68944, 68965], [68976, 68997], [71840, 71903], [93760, 93823], [119808, 119892], [119894, 119964], [119966, 119967], [119970, 119970], [119973, 119974], [119977, 119980], [119982, 119993], [119995, 119995], [119997, 120003], [120005, 120069], [120071, 120074], [120077, 120084], [120086, 120092], [120094, 120121], [120123, 120126], [120128, 120132], [120134, 120134], [120138, 120144], [120146, 120485], [120488, 120512], [120514, 120538], [120540, 120570], [120572, 120596], [120598, 120628], [120630, 120654], [120656, 120686], [120688, 120712], [120714, 120744], [120746, 120770], [120772, 120779], [122624, 122633], [122635, 122654], [122661, 122666], [125184, 125251], [127280, 127305], [127312, 127337], [127344, 127369]];
80
+ var sigmaIgnorable = [[39, 39], [46, 46], [58, 58], [94, 94], [96, 96], [168, 168], [173, 173], [175, 175], [180, 180], [183, 184], [688, 879], [884, 885], [890, 890], [900, 901], [903, 903], [1155, 1161], [1369, 1369], [1375, 1375], [1425, 1469], [1471, 1471], [1473, 1474], [1476, 1477], [1479, 1479], [1524, 1524], [1536, 1541], [1552, 1562], [1564, 1564], [1600, 1600], [1611, 1631], [1648, 1648], [1750, 1757], [1759, 1768], [1770, 1773], [1807, 1807], [1809, 1809], [1840, 1866], [1958, 1968], [2027, 2037], [2042, 2042], [2045, 2045], [2070, 2093], [2137, 2139], [2184, 2184], [2192, 2193], [2199, 2207], [2249, 2306], [2362, 2362], [2364, 2364], [2369, 2376], [2381, 2381], [2385, 2391], [2402, 2403], [2417, 2417], [2433, 2433], [2492, 2492], [2497, 2500], [2509, 2509], [2530, 2531], [2558, 2558], [2561, 2562], [2620, 2620], [2625, 2626], [2631, 2632], [2635, 2637], [2641, 2641], [2672, 2673], [2677, 2677], [2689, 2690], [2748, 2748], [2753, 2757], [2759, 2760], [2765, 2765], [2786, 2787], [2810, 2815], [2817, 2817], [2876, 2876], [2879, 2879], [2881, 2884], [2893, 2893], [2901, 2902], [2914, 2915], [2946, 2946], [3008, 3008], [3021, 3021], [3072, 3072], [3076, 3076], [3132, 3132], [3134, 3136], [3142, 3144], [3146, 3149], [3157, 3158], [3170, 3171], [3201, 3201], [3260, 3260], [3263, 3263], [3270, 3270], [3276, 3277], [3298, 3299], [3328, 3329], [3387, 3388], [3393, 3396], [3405, 3405], [3426, 3427], [3457, 3457], [3530, 3530], [3538, 3540], [3542, 3542], [3633, 3633], [3636, 3642], [3654, 3662], [3761, 3761], [3764, 3772], [3782, 3782], [3784, 3790], [3864, 3865], [3893, 3893], [3895, 3895], [3897, 3897], [3953, 3966], [3968, 3972], [3974, 3975], [3981, 3991], [3993, 4028], [4038, 4038], [4141, 4144], [4146, 4151], [4153, 4154], [4157, 4158], [4184, 4185], [4190, 4192], [4209, 4212], [4226, 4226], [4229, 4230], [4237, 4237], [4253, 4253], [4348, 4348], [4957, 4959], [5906, 5908], [5938, 5939], [5970, 5971], [6002, 6003], [6068, 6069], [6071, 6077], [6086, 6086], [6089, 6099], [6103, 6103], [6109, 6109], [6155, 6159], [6211, 6211], [6277, 6278], [6313, 6313], [6432, 6434], [6439, 6440], [6450, 6450], [6457, 6459], [6679, 6680], [6683, 6683], [6742, 6742], [6744, 6750], [6752, 6752], [6754, 6754], [6757, 6764], [6771, 6780], [6783, 6783], [6823, 6823], [6832, 6862], [6912, 6915], [6964, 6964], [6966, 6970], [6972, 6972], [6978, 6978], [7019, 7027], [7040, 7041], [7074, 7077], [7080, 7081], [7083, 7085], [7142, 7142], [7144, 7145], [7149, 7149], [7151, 7153], [7212, 7219], [7222, 7223], [7288, 7293], [7376, 7378], [7380, 7392], [7394, 7400], [7405, 7405], [7412, 7412], [7416, 7417], [7468, 7530], [7544, 7544], [7579, 7679], [8125, 8125], [8127, 8129], [8141, 8143], [8157, 8159], [8173, 8175], [8189, 8190], [8203, 8207], [8216, 8217], [8228, 8228], [8231, 8231], [8234, 8238], [8288, 8292], [8294, 8303], [8305, 8305], [8319, 8319], [8336, 8348], [8400, 8432], [11388, 11389], [11503, 11505], [11631, 11631], [11647, 11647], [11744, 11775], [11823, 11823], [12293, 12293], [12330, 12333], [12337, 12341], [12347, 12347], [12441, 12446], [12540, 12542], [40981, 40981], [42232, 42237], [42508, 42508], [42607, 42610], [42612, 42621], [42623, 42623], [42652, 42655], [42736, 42737], [42752, 42785], [42864, 42864], [42888, 42890], [42994, 42996], [43e3, 43001], [43010, 43010], [43014, 43014], [43019, 43019], [43045, 43046], [43052, 43052], [43204, 43205], [43232, 43249], [43263, 43263], [43302, 43309], [43335, 43345], [43392, 43394], [43443, 43443], [43446, 43449], [43452, 43453], [43471, 43471], [43493, 43494], [43561, 43566], [43569, 43570], [43573, 43574], [43587, 43587], [43596, 43596], [43632, 43632], [43644, 43644], [43696, 43696], [43698, 43700], [43703, 43704], [43710, 43711], [43713, 43713], [43741, 43741], [43756, 43757], [43763, 43764], [43766, 43766], [43867, 43871], [43881, 43883], [44005, 44005], [44008, 44008], [44013, 44013], [64286, 64286], [64434, 64450], [65024, 65039], [65043, 65043], [65056, 65071], [65106, 65106], [65109, 65109], [65279, 65279], [65287, 65287], [65294, 65294], [65306, 65306], [65342, 65342], [65344, 65344], [65392, 65392], [65438, 65439], [65507, 65507], [65529, 65531], [66045, 66045], [66272, 66272], [66422, 66426], [67456, 67461], [67463, 67504], [67506, 67514], [68097, 68099], [68101, 68102], [68108, 68111], [68152, 68154], [68159, 68159], [68325, 68326], [68900, 68903], [68942, 68942], [68969, 68973], [68975, 68975], [69291, 69292], [69372, 69375], [69446, 69456], [69506, 69509], [69633, 69633], [69688, 69702], [69744, 69744], [69747, 69748], [69759, 69761], [69811, 69814], [69817, 69818], [69821, 69821], [69826, 69826], [69837, 69837], [69888, 69890], [69927, 69931], [69933, 69940], [70003, 70003], [70016, 70017], [70070, 70078], [70089, 70092], [70095, 70095], [70191, 70193], [70196, 70196], [70198, 70199], [70206, 70206], [70209, 70209], [70367, 70367], [70371, 70378], [70400, 70401], [70459, 70460], [70464, 70464], [70502, 70508], [70512, 70516], [70587, 70592], [70606, 70606], [70608, 70608], [70610, 70610], [70625, 70626], [70712, 70719], [70722, 70724], [70726, 70726], [70750, 70750], [70835, 70840], [70842, 70842], [70847, 70848], [70850, 70851], [71090, 71093], [71100, 71101], [71103, 71104], [71132, 71133], [71219, 71226], [71229, 71229], [71231, 71232], [71339, 71339], [71341, 71341], [71344, 71349], [71351, 71351], [71453, 71453], [71455, 71455], [71458, 71461], [71463, 71467], [71727, 71735], [71737, 71738], [71995, 71996], [71998, 71998], [72003, 72003], [72148, 72151], [72154, 72155], [72160, 72160], [72193, 72202], [72243, 72248], [72251, 72254], [72263, 72263], [72273, 72278], [72281, 72283], [72330, 72342], [72344, 72345], [72752, 72758], [72760, 72765], [72767, 72767], [72850, 72871], [72874, 72880], [72882, 72883], [72885, 72886], [73009, 73014], [73018, 73018], [73020, 73021], [73023, 73029], [73031, 73031], [73104, 73105], [73109, 73109], [73111, 73111], [73459, 73460], [73472, 73473], [73526, 73530], [73536, 73536], [73538, 73538], [73562, 73562], [78896, 78912], [78919, 78933], [90398, 90409], [90413, 90415], [92912, 92916], [92976, 92982], [92992, 92995], [93504, 93506], [93547, 93548], [94031, 94031], [94095, 94111], [94176, 94177], [94179, 94180], [110576, 110579], [110581, 110587], [110589, 110590], [113821, 113822], [113824, 113827], [118528, 118573], [118576, 118598], [119143, 119145], [119155, 119170], [119173, 119179], [119210, 119213], [119362, 119364], [121344, 121398], [121403, 121452], [121461, 121461], [121476, 121476], [121499, 121503], [121505, 121519], [122880, 122886], [122888, 122904], [122907, 122913], [122915, 122916], [122918, 122922], [122928, 122989], [123023, 123023], [123184, 123197], [123566, 123566], [123628, 123631], [124139, 124143], [124398, 124399], [125136, 125142], [125252, 125259], [127995, 127999], [917505, 917505], [917536, 917631], [917760, 917999]];
81
+
82
+ // packages/safe-bash-command-csvkit/src/unicode-upper-profile.ts
83
+ init_buffer();
84
+ var upperMappings = [[97, "A"], [98, "B"], [99, "C"], [100, "D"], [101, "E"], [102, "F"], [103, "G"], [104, "H"], [105, "I"], [106, "J"], [107, "K"], [108, "L"], [109, "M"], [110, "N"], [111, "O"], [112, "P"], [113, "Q"], [114, "R"], [115, "S"], [116, "T"], [117, "U"], [118, "V"], [119, "W"], [120, "X"], [121, "Y"], [122, "Z"], [181, "\u039C"], [223, "SS"], [224, "\xC0"], [225, "\xC1"], [226, "\xC2"], [227, "\xC3"], [228, "\xC4"], [229, "\xC5"], [230, "\xC6"], [231, "\xC7"], [232, "\xC8"], [233, "\xC9"], [234, "\xCA"], [235, "\xCB"], [236, "\xCC"], [237, "\xCD"], [238, "\xCE"], [239, "\xCF"], [240, "\xD0"], [241, "\xD1"], [242, "\xD2"], [243, "\xD3"], [244, "\xD4"], [245, "\xD5"], [246, "\xD6"], [248, "\xD8"], [249, "\xD9"], [250, "\xDA"], [251, "\xDB"], [252, "\xDC"], [253, "\xDD"], [254, "\xDE"], [255, "\u0178"], [257, "\u0100"], [259, "\u0102"], [261, "\u0104"], [263, "\u0106"], [265, "\u0108"], [267, "\u010A"], [269, "\u010C"], [271, "\u010E"], [273, "\u0110"], [275, "\u0112"], [277, "\u0114"], [279, "\u0116"], [281, "\u0118"], [283, "\u011A"], [285, "\u011C"], [287, "\u011E"], [289, "\u0120"], [291, "\u0122"], [293, "\u0124"], [295, "\u0126"], [297, "\u0128"], [299, "\u012A"], [301, "\u012C"], [303, "\u012E"], [305, "I"], [307, "\u0132"], [309, "\u0134"], [311, "\u0136"], [314, "\u0139"], [316, "\u013B"], [318, "\u013D"], [320, "\u013F"], [322, "\u0141"], [324, "\u0143"], [326, "\u0145"], [328, "\u0147"], [329, "\u02BCN"], [331, "\u014A"], [333, "\u014C"], [335, "\u014E"], [337, "\u0150"], [339, "\u0152"], [341, "\u0154"], [343, "\u0156"], [345, "\u0158"], [347, "\u015A"], [349, "\u015C"], [351, "\u015E"], [353, "\u0160"], [355, "\u0162"], [357, "\u0164"], [359, "\u0166"], [361, "\u0168"], [363, "\u016A"], [365, "\u016C"], [367, "\u016E"], [369, "\u0170"], [371, "\u0172"], [373, "\u0174"], [375, "\u0176"], [378, "\u0179"], [380, "\u017B"], [382, "\u017D"], [383, "S"], [384, "\u0243"], [387, "\u0182"], [389, "\u0184"], [392, "\u0187"], [396, "\u018B"], [402, "\u0191"], [405, "\u01F6"], [409, "\u0198"], [410, "\u023D"], [411, "\uA7DC"], [414, "\u0220"], [417, "\u01A0"], [419, "\u01A2"], [421, "\u01A4"], [424, "\u01A7"], [429, "\u01AC"], [432, "\u01AF"], [436, "\u01B3"], [438, "\u01B5"], [441, "\u01B8"], [445, "\u01BC"], [447, "\u01F7"], [453, "\u01C4"], [454, "\u01C4"], [456, "\u01C7"], [457, "\u01C7"], [459, "\u01CA"], [460, "\u01CA"], [462, "\u01CD"], [464, "\u01CF"], [466, "\u01D1"], [468, "\u01D3"], [470, "\u01D5"], [472, "\u01D7"], [474, "\u01D9"], [476, "\u01DB"], [477, "\u018E"], [479, "\u01DE"], [481, "\u01E0"], [483, "\u01E2"], [485, "\u01E4"], [487, "\u01E6"], [489, "\u01E8"], [491, "\u01EA"], [493, "\u01EC"], [495, "\u01EE"], [496, "J\u030C"], [498, "\u01F1"], [499, "\u01F1"], [501, "\u01F4"], [505, "\u01F8"], [507, "\u01FA"], [509, "\u01FC"], [511, "\u01FE"], [513, "\u0200"], [515, "\u0202"], [517, "\u0204"], [519, "\u0206"], [521, "\u0208"], [523, "\u020A"], [525, "\u020C"], [527, "\u020E"], [529, "\u0210"], [531, "\u0212"], [533, "\u0214"], [535, "\u0216"], [537, "\u0218"], [539, "\u021A"], [541, "\u021C"], [543, "\u021E"], [547, "\u0222"], [549, "\u0224"], [551, "\u0226"], [553, "\u0228"], [555, "\u022A"], [557, "\u022C"], [559, "\u022E"], [561, "\u0230"], [563, "\u0232"], [572, "\u023B"], [575, "\u2C7E"], [576, "\u2C7F"], [578, "\u0241"], [583, "\u0246"], [585, "\u0248"], [587, "\u024A"], [589, "\u024C"], [591, "\u024E"], [592, "\u2C6F"], [593, "\u2C6D"], [594, "\u2C70"], [595, "\u0181"], [596, "\u0186"], [598, "\u0189"], [599, "\u018A"], [601, "\u018F"], [603, "\u0190"], [604, "\uA7AB"], [608, "\u0193"], [609, "\uA7AC"], [611, "\u0194"], [612, "\uA7CB"], [613, "\uA78D"], [614, "\uA7AA"], [616, "\u0197"], [617, "\u0196"], [618, "\uA7AE"], [619, "\u2C62"], [620, "\uA7AD"], [623, "\u019C"], [625, "\u2C6E"], [626, "\u019D"], [629, "\u019F"], [637, "\u2C64"], [640, "\u01A6"], [642, "\uA7C5"], [643, "\u01A9"], [647, "\uA7B1"], [648, "\u01AE"], [649, "\u0244"], [650, "\u01B1"], [651, "\u01B2"], [652, "\u0245"], [658, "\u01B7"], [669, "\uA7B2"], [670, "\uA7B0"], [837, "\u0399"], [881, "\u0370"], [883, "\u0372"], [887, "\u0376"], [891, "\u03FD"], [892, "\u03FE"], [893, "\u03FF"], [912, "\u0399\u0308\u0301"], [940, "\u0386"], [941, "\u0388"], [942, "\u0389"], [943, "\u038A"], [944, "\u03A5\u0308\u0301"], [945, "\u0391"], [946, "\u0392"], [947, "\u0393"], [948, "\u0394"], [949, "\u0395"], [950, "\u0396"], [951, "\u0397"], [952, "\u0398"], [953, "\u0399"], [954, "\u039A"], [955, "\u039B"], [956, "\u039C"], [957, "\u039D"], [958, "\u039E"], [959, "\u039F"], [960, "\u03A0"], [961, "\u03A1"], [962, "\u03A3"], [963, "\u03A3"], [964, "\u03A4"], [965, "\u03A5"], [966, "\u03A6"], [967, "\u03A7"], [968, "\u03A8"], [969, "\u03A9"], [970, "\u03AA"], [971, "\u03AB"], [972, "\u038C"], [973, "\u038E"], [974, "\u038F"], [976, "\u0392"], [977, "\u0398"], [981, "\u03A6"], [982, "\u03A0"], [983, "\u03CF"], [985, "\u03D8"], [987, "\u03DA"], [989, "\u03DC"], [991, "\u03DE"], [993, "\u03E0"], [995, "\u03E2"], [997, "\u03E4"], [999, "\u03E6"], [1001, "\u03E8"], [1003, "\u03EA"], [1005, "\u03EC"], [1007, "\u03EE"], [1008, "\u039A"], [1009, "\u03A1"], [1010, "\u03F9"], [1011, "\u037F"], [1013, "\u0395"], [1016, "\u03F7"], [1019, "\u03FA"], [1072, "\u0410"], [1073, "\u0411"], [1074, "\u0412"], [1075, "\u0413"], [1076, "\u0414"], [1077, "\u0415"], [1078, "\u0416"], [1079, "\u0417"], [1080, "\u0418"], [1081, "\u0419"], [1082, "\u041A"], [1083, "\u041B"], [1084, "\u041C"], [1085, "\u041D"], [1086, "\u041E"], [1087, "\u041F"], [1088, "\u0420"], [1089, "\u0421"], [1090, "\u0422"], [1091, "\u0423"], [1092, "\u0424"], [1093, "\u0425"], [1094, "\u0426"], [1095, "\u0427"], [1096, "\u0428"], [1097, "\u0429"], [1098, "\u042A"], [1099, "\u042B"], [1100, "\u042C"], [1101, "\u042D"], [1102, "\u042E"], [1103, "\u042F"], [1104, "\u0400"], [1105, "\u0401"], [1106, "\u0402"], [1107, "\u0403"], [1108, "\u0404"], [1109, "\u0405"], [1110, "\u0406"], [1111, "\u0407"], [1112, "\u0408"], [1113, "\u0409"], [1114, "\u040A"], [1115, "\u040B"], [1116, "\u040C"], [1117, "\u040D"], [1118, "\u040E"], [1119, "\u040F"], [1121, "\u0460"], [1123, "\u0462"], [1125, "\u0464"], [1127, "\u0466"], [1129, "\u0468"], [1131, "\u046A"], [1133, "\u046C"], [1135, "\u046E"], [1137, "\u0470"], [1139, "\u0472"], [1141, "\u0474"], [1143, "\u0476"], [1145, "\u0478"], [1147, "\u047A"], [1149, "\u047C"], [1151, "\u047E"], [1153, "\u0480"], [1163, "\u048A"], [1165, "\u048C"], [1167, "\u048E"], [1169, "\u0490"], [1171, "\u0492"], [1173, "\u0494"], [1175, "\u0496"], [1177, "\u0498"], [1179, "\u049A"], [1181, "\u049C"], [1183, "\u049E"], [1185, "\u04A0"], [1187, "\u04A2"], [1189, "\u04A4"], [1191, "\u04A6"], [1193, "\u04A8"], [1195, "\u04AA"], [1197, "\u04AC"], [1199, "\u04AE"], [1201, "\u04B0"], [1203, "\u04B2"], [1205, "\u04B4"], [1207, "\u04B6"], [1209, "\u04B8"], [1211, "\u04BA"], [1213, "\u04BC"], [1215, "\u04BE"], [1218, "\u04C1"], [1220, "\u04C3"], [1222, "\u04C5"], [1224, "\u04C7"], [1226, "\u04C9"], [1228, "\u04CB"], [1230, "\u04CD"], [1231, "\u04C0"], [1233, "\u04D0"], [1235, "\u04D2"], [1237, "\u04D4"], [1239, "\u04D6"], [1241, "\u04D8"], [1243, "\u04DA"], [1245, "\u04DC"], [1247, "\u04DE"], [1249, "\u04E0"], [1251, "\u04E2"], [1253, "\u04E4"], [1255, "\u04E6"], [1257, "\u04E8"], [1259, "\u04EA"], [1261, "\u04EC"], [1263, "\u04EE"], [1265, "\u04F0"], [1267, "\u04F2"], [1269, "\u04F4"], [1271, "\u04F6"], [1273, "\u04F8"], [1275, "\u04FA"], [1277, "\u04FC"], [1279, "\u04FE"], [1281, "\u0500"], [1283, "\u0502"], [1285, "\u0504"], [1287, "\u0506"], [1289, "\u0508"], [1291, "\u050A"], [1293, "\u050C"], [1295, "\u050E"], [1297, "\u0510"], [1299, "\u0512"], [1301, "\u0514"], [1303, "\u0516"], [1305, "\u0518"], [1307, "\u051A"], [1309, "\u051C"], [1311, "\u051E"], [1313, "\u0520"], [1315, "\u0522"], [1317, "\u0524"], [1319, "\u0526"], [1321, "\u0528"], [1323, "\u052A"], [1325, "\u052C"], [1327, "\u052E"], [1377, "\u0531"], [1378, "\u0532"], [1379, "\u0533"], [1380, "\u0534"], [1381, "\u0535"], [1382, "\u0536"], [1383, "\u0537"], [1384, "\u0538"], [1385, "\u0539"], [1386, "\u053A"], [1387, "\u053B"], [1388, "\u053C"], [1389, "\u053D"], [1390, "\u053E"], [1391, "\u053F"], [1392, "\u0540"], [1393, "\u0541"], [1394, "\u0542"], [1395, "\u0543"], [1396, "\u0544"], [1397, "\u0545"], [1398, "\u0546"], [1399, "\u0547"], [1400, "\u0548"], [1401, "\u0549"], [1402, "\u054A"], [1403, "\u054B"], [1404, "\u054C"], [1405, "\u054D"], [1406, "\u054E"], [1407, "\u054F"], [1408, "\u0550"], [1409, "\u0551"], [1410, "\u0552"], [1411, "\u0553"], [1412, "\u0554"], [1413, "\u0555"], [1414, "\u0556"], [1415, "\u0535\u0552"], [4304, "\u1C90"], [4305, "\u1C91"], [4306, "\u1C92"], [4307, "\u1C93"], [4308, "\u1C94"], [4309, "\u1C95"], [4310, "\u1C96"], [4311, "\u1C97"], [4312, "\u1C98"], [4313, "\u1C99"], [4314, "\u1C9A"], [4315, "\u1C9B"], [4316, "\u1C9C"], [4317, "\u1C9D"], [4318, "\u1C9E"], [4319, "\u1C9F"], [4320, "\u1CA0"], [4321, "\u1CA1"], [4322, "\u1CA2"], [4323, "\u1CA3"], [4324, "\u1CA4"], [4325, "\u1CA5"], [4326, "\u1CA6"], [4327, "\u1CA7"], [4328, "\u1CA8"], [4329, "\u1CA9"], [4330, "\u1CAA"], [4331, "\u1CAB"], [4332, "\u1CAC"], [4333, "\u1CAD"], [4334, "\u1CAE"], [4335, "\u1CAF"], [4336, "\u1CB0"], [4337, "\u1CB1"], [4338, "\u1CB2"], [4339, "\u1CB3"], [4340, "\u1CB4"], [4341, "\u1CB5"], [4342, "\u1CB6"], [4343, "\u1CB7"], [4344, "\u1CB8"], [4345, "\u1CB9"], [4346, "\u1CBA"], [4349, "\u1CBD"], [4350, "\u1CBE"], [4351, "\u1CBF"], [5112, "\u13F0"], [5113, "\u13F1"], [5114, "\u13F2"], [5115, "\u13F3"], [5116, "\u13F4"], [5117, "\u13F5"], [7296, "\u0412"], [7297, "\u0414"], [7298, "\u041E"], [7299, "\u0421"], [7300, "\u0422"], [7301, "\u0422"], [7302, "\u042A"], [7303, "\u0462"], [7304, "\uA64A"], [7306, "\u1C89"], [7545, "\uA77D"], [7549, "\u2C63"], [7566, "\uA7C6"], [7681, "\u1E00"], [7683, "\u1E02"], [7685, "\u1E04"], [7687, "\u1E06"], [7689, "\u1E08"], [7691, "\u1E0A"], [7693, "\u1E0C"], [7695, "\u1E0E"], [7697, "\u1E10"], [7699, "\u1E12"], [7701, "\u1E14"], [7703, "\u1E16"], [7705, "\u1E18"], [7707, "\u1E1A"], [7709, "\u1E1C"], [7711, "\u1E1E"], [7713, "\u1E20"], [7715, "\u1E22"], [7717, "\u1E24"], [7719, "\u1E26"], [7721, "\u1E28"], [7723, "\u1E2A"], [7725, "\u1E2C"], [7727, "\u1E2E"], [7729, "\u1E30"], [7731, "\u1E32"], [7733, "\u1E34"], [7735, "\u1E36"], [7737, "\u1E38"], [7739, "\u1E3A"], [7741, "\u1E3C"], [7743, "\u1E3E"], [7745, "\u1E40"], [7747, "\u1E42"], [7749, "\u1E44"], [7751, "\u1E46"], [7753, "\u1E48"], [7755, "\u1E4A"], [7757, "\u1E4C"], [7759, "\u1E4E"], [7761, "\u1E50"], [7763, "\u1E52"], [7765, "\u1E54"], [7767, "\u1E56"], [7769, "\u1E58"], [7771, "\u1E5A"], [7773, "\u1E5C"], [7775, "\u1E5E"], [7777, "\u1E60"], [7779, "\u1E62"], [7781, "\u1E64"], [7783, "\u1E66"], [7785, "\u1E68"], [7787, "\u1E6A"], [7789, "\u1E6C"], [7791, "\u1E6E"], [7793, "\u1E70"], [7795, "\u1E72"], [7797, "\u1E74"], [7799, "\u1E76"], [7801, "\u1E78"], [7803, "\u1E7A"], [7805, "\u1E7C"], [7807, "\u1E7E"], [7809, "\u1E80"], [7811, "\u1E82"], [7813, "\u1E84"], [7815, "\u1E86"], [7817, "\u1E88"], [7819, "\u1E8A"], [7821, "\u1E8C"], [7823, "\u1E8E"], [7825, "\u1E90"], [7827, "\u1E92"], [7829, "\u1E94"], [7830, "H\u0331"], [7831, "T\u0308"], [7832, "W\u030A"], [7833, "Y\u030A"], [7834, "A\u02BE"], [7835, "\u1E60"], [7841, "\u1EA0"], [7843, "\u1EA2"], [7845, "\u1EA4"], [7847, "\u1EA6"], [7849, "\u1EA8"], [7851, "\u1EAA"], [7853, "\u1EAC"], [7855, "\u1EAE"], [7857, "\u1EB0"], [7859, "\u1EB2"], [7861, "\u1EB4"], [7863, "\u1EB6"], [7865, "\u1EB8"], [7867, "\u1EBA"], [7869, "\u1EBC"], [7871, "\u1EBE"], [7873, "\u1EC0"], [7875, "\u1EC2"], [7877, "\u1EC4"], [7879, "\u1EC6"], [7881, "\u1EC8"], [7883, "\u1ECA"], [7885, "\u1ECC"], [7887, "\u1ECE"], [7889, "\u1ED0"], [7891, "\u1ED2"], [7893, "\u1ED4"], [7895, "\u1ED6"], [7897, "\u1ED8"], [7899, "\u1EDA"], [7901, "\u1EDC"], [7903, "\u1EDE"], [7905, "\u1EE0"], [7907, "\u1EE2"], [7909, "\u1EE4"], [7911, "\u1EE6"], [7913, "\u1EE8"], [7915, "\u1EEA"], [7917, "\u1EEC"], [7919, "\u1EEE"], [7921, "\u1EF0"], [7923, "\u1EF2"], [7925, "\u1EF4"], [7927, "\u1EF6"], [7929, "\u1EF8"], [7931, "\u1EFA"], [7933, "\u1EFC"], [7935, "\u1EFE"], [7936, "\u1F08"], [7937, "\u1F09"], [7938, "\u1F0A"], [7939, "\u1F0B"], [7940, "\u1F0C"], [7941, "\u1F0D"], [7942, "\u1F0E"], [7943, "\u1F0F"], [7952, "\u1F18"], [7953, "\u1F19"], [7954, "\u1F1A"], [7955, "\u1F1B"], [7956, "\u1F1C"], [7957, "\u1F1D"], [7968, "\u1F28"], [7969, "\u1F29"], [7970, "\u1F2A"], [7971, "\u1F2B"], [7972, "\u1F2C"], [7973, "\u1F2D"], [7974, "\u1F2E"], [7975, "\u1F2F"], [7984, "\u1F38"], [7985, "\u1F39"], [7986, "\u1F3A"], [7987, "\u1F3B"], [7988, "\u1F3C"], [7989, "\u1F3D"], [7990, "\u1F3E"], [7991, "\u1F3F"], [8e3, "\u1F48"], [8001, "\u1F49"], [8002, "\u1F4A"], [8003, "\u1F4B"], [8004, "\u1F4C"], [8005, "\u1F4D"], [8016, "\u03A5\u0313"], [8017, "\u1F59"], [8018, "\u03A5\u0313\u0300"], [8019, "\u1F5B"], [8020, "\u03A5\u0313\u0301"], [8021, "\u1F5D"], [8022, "\u03A5\u0313\u0342"], [8023, "\u1F5F"], [8032, "\u1F68"], [8033, "\u1F69"], [8034, "\u1F6A"], [8035, "\u1F6B"], [8036, "\u1F6C"], [8037, "\u1F6D"], [8038, "\u1F6E"], [8039, "\u1F6F"], [8048, "\u1FBA"], [8049, "\u1FBB"], [8050, "\u1FC8"], [8051, "\u1FC9"], [8052, "\u1FCA"], [8053, "\u1FCB"], [8054, "\u1FDA"], [8055, "\u1FDB"], [8056, "\u1FF8"], [8057, "\u1FF9"], [8058, "\u1FEA"], [8059, "\u1FEB"], [8060, "\u1FFA"], [8061, "\u1FFB"], [8064, "\u1F08\u0399"], [8065, "\u1F09\u0399"], [8066, "\u1F0A\u0399"], [8067, "\u1F0B\u0399"], [8068, "\u1F0C\u0399"], [8069, "\u1F0D\u0399"], [8070, "\u1F0E\u0399"], [8071, "\u1F0F\u0399"], [8072, "\u1F08\u0399"], [8073, "\u1F09\u0399"], [8074, "\u1F0A\u0399"], [8075, "\u1F0B\u0399"], [8076, "\u1F0C\u0399"], [8077, "\u1F0D\u0399"], [8078, "\u1F0E\u0399"], [8079, "\u1F0F\u0399"], [8080, "\u1F28\u0399"], [8081, "\u1F29\u0399"], [8082, "\u1F2A\u0399"], [8083, "\u1F2B\u0399"], [8084, "\u1F2C\u0399"], [8085, "\u1F2D\u0399"], [8086, "\u1F2E\u0399"], [8087, "\u1F2F\u0399"], [8088, "\u1F28\u0399"], [8089, "\u1F29\u0399"], [8090, "\u1F2A\u0399"], [8091, "\u1F2B\u0399"], [8092, "\u1F2C\u0399"], [8093, "\u1F2D\u0399"], [8094, "\u1F2E\u0399"], [8095, "\u1F2F\u0399"], [8096, "\u1F68\u0399"], [8097, "\u1F69\u0399"], [8098, "\u1F6A\u0399"], [8099, "\u1F6B\u0399"], [8100, "\u1F6C\u0399"], [8101, "\u1F6D\u0399"], [8102, "\u1F6E\u0399"], [8103, "\u1F6F\u0399"], [8104, "\u1F68\u0399"], [8105, "\u1F69\u0399"], [8106, "\u1F6A\u0399"], [8107, "\u1F6B\u0399"], [8108, "\u1F6C\u0399"], [8109, "\u1F6D\u0399"], [8110, "\u1F6E\u0399"], [8111, "\u1F6F\u0399"], [8112, "\u1FB8"], [8113, "\u1FB9"], [8114, "\u1FBA\u0399"], [8115, "\u0391\u0399"], [8116, "\u0386\u0399"], [8118, "\u0391\u0342"], [8119, "\u0391\u0342\u0399"], [8124, "\u0391\u0399"], [8126, "\u0399"], [8130, "\u1FCA\u0399"], [8131, "\u0397\u0399"], [8132, "\u0389\u0399"], [8134, "\u0397\u0342"], [8135, "\u0397\u0342\u0399"], [8140, "\u0397\u0399"], [8144, "\u1FD8"], [8145, "\u1FD9"], [8146, "\u0399\u0308\u0300"], [8147, "\u0399\u0308\u0301"], [8150, "\u0399\u0342"], [8151, "\u0399\u0308\u0342"], [8160, "\u1FE8"], [8161, "\u1FE9"], [8162, "\u03A5\u0308\u0300"], [8163, "\u03A5\u0308\u0301"], [8164, "\u03A1\u0313"], [8165, "\u1FEC"], [8166, "\u03A5\u0342"], [8167, "\u03A5\u0308\u0342"], [8178, "\u1FFA\u0399"], [8179, "\u03A9\u0399"], [8180, "\u038F\u0399"], [8182, "\u03A9\u0342"], [8183, "\u03A9\u0342\u0399"], [8188, "\u03A9\u0399"], [8526, "\u2132"], [8560, "\u2160"], [8561, "\u2161"], [8562, "\u2162"], [8563, "\u2163"], [8564, "\u2164"], [8565, "\u2165"], [8566, "\u2166"], [8567, "\u2167"], [8568, "\u2168"], [8569, "\u2169"], [8570, "\u216A"], [8571, "\u216B"], [8572, "\u216C"], [8573, "\u216D"], [8574, "\u216E"], [8575, "\u216F"], [8580, "\u2183"], [9424, "\u24B6"], [9425, "\u24B7"], [9426, "\u24B8"], [9427, "\u24B9"], [9428, "\u24BA"], [9429, "\u24BB"], [9430, "\u24BC"], [9431, "\u24BD"], [9432, "\u24BE"], [9433, "\u24BF"], [9434, "\u24C0"], [9435, "\u24C1"], [9436, "\u24C2"], [9437, "\u24C3"], [9438, "\u24C4"], [9439, "\u24C5"], [9440, "\u24C6"], [9441, "\u24C7"], [9442, "\u24C8"], [9443, "\u24C9"], [9444, "\u24CA"], [9445, "\u24CB"], [9446, "\u24CC"], [9447, "\u24CD"], [9448, "\u24CE"], [9449, "\u24CF"], [11312, "\u2C00"], [11313, "\u2C01"], [11314, "\u2C02"], [11315, "\u2C03"], [11316, "\u2C04"], [11317, "\u2C05"], [11318, "\u2C06"], [11319, "\u2C07"], [11320, "\u2C08"], [11321, "\u2C09"], [11322, "\u2C0A"], [11323, "\u2C0B"], [11324, "\u2C0C"], [11325, "\u2C0D"], [11326, "\u2C0E"], [11327, "\u2C0F"], [11328, "\u2C10"], [11329, "\u2C11"], [11330, "\u2C12"], [11331, "\u2C13"], [11332, "\u2C14"], [11333, "\u2C15"], [11334, "\u2C16"], [11335, "\u2C17"], [11336, "\u2C18"], [11337, "\u2C19"], [11338, "\u2C1A"], [11339, "\u2C1B"], [11340, "\u2C1C"], [11341, "\u2C1D"], [11342, "\u2C1E"], [11343, "\u2C1F"], [11344, "\u2C20"], [11345, "\u2C21"], [11346, "\u2C22"], [11347, "\u2C23"], [11348, "\u2C24"], [11349, "\u2C25"], [11350, "\u2C26"], [11351, "\u2C27"], [11352, "\u2C28"], [11353, "\u2C29"], [11354, "\u2C2A"], [11355, "\u2C2B"], [11356, "\u2C2C"], [11357, "\u2C2D"], [11358, "\u2C2E"], [11359, "\u2C2F"], [11361, "\u2C60"], [11365, "\u023A"], [11366, "\u023E"], [11368, "\u2C67"], [11370, "\u2C69"], [11372, "\u2C6B"], [11379, "\u2C72"], [11382, "\u2C75"], [11393, "\u2C80"], [11395, "\u2C82"], [11397, "\u2C84"], [11399, "\u2C86"], [11401, "\u2C88"], [11403, "\u2C8A"], [11405, "\u2C8C"], [11407, "\u2C8E"], [11409, "\u2C90"], [11411, "\u2C92"], [11413, "\u2C94"], [11415, "\u2C96"], [11417, "\u2C98"], [11419, "\u2C9A"], [11421, "\u2C9C"], [11423, "\u2C9E"], [11425, "\u2CA0"], [11427, "\u2CA2"], [11429, "\u2CA4"], [11431, "\u2CA6"], [11433, "\u2CA8"], [11435, "\u2CAA"], [11437, "\u2CAC"], [11439, "\u2CAE"], [11441, "\u2CB0"], [11443, "\u2CB2"], [11445, "\u2CB4"], [11447, "\u2CB6"], [11449, "\u2CB8"], [11451, "\u2CBA"], [11453, "\u2CBC"], [11455, "\u2CBE"], [11457, "\u2CC0"], [11459, "\u2CC2"], [11461, "\u2CC4"], [11463, "\u2CC6"], [11465, "\u2CC8"], [11467, "\u2CCA"], [11469, "\u2CCC"], [11471, "\u2CCE"], [11473, "\u2CD0"], [11475, "\u2CD2"], [11477, "\u2CD4"], [11479, "\u2CD6"], [11481, "\u2CD8"], [11483, "\u2CDA"], [11485, "\u2CDC"], [11487, "\u2CDE"], [11489, "\u2CE0"], [11491, "\u2CE2"], [11500, "\u2CEB"], [11502, "\u2CED"], [11507, "\u2CF2"], [11520, "\u10A0"], [11521, "\u10A1"], [11522, "\u10A2"], [11523, "\u10A3"], [11524, "\u10A4"], [11525, "\u10A5"], [11526, "\u10A6"], [11527, "\u10A7"], [11528, "\u10A8"], [11529, "\u10A9"], [11530, "\u10AA"], [11531, "\u10AB"], [11532, "\u10AC"], [11533, "\u10AD"], [11534, "\u10AE"], [11535, "\u10AF"], [11536, "\u10B0"], [11537, "\u10B1"], [11538, "\u10B2"], [11539, "\u10B3"], [11540, "\u10B4"], [11541, "\u10B5"], [11542, "\u10B6"], [11543, "\u10B7"], [11544, "\u10B8"], [11545, "\u10B9"], [11546, "\u10BA"], [11547, "\u10BB"], [11548, "\u10BC"], [11549, "\u10BD"], [11550, "\u10BE"], [11551, "\u10BF"], [11552, "\u10C0"], [11553, "\u10C1"], [11554, "\u10C2"], [11555, "\u10C3"], [11556, "\u10C4"], [11557, "\u10C5"], [11559, "\u10C7"], [11565, "\u10CD"], [42561, "\uA640"], [42563, "\uA642"], [42565, "\uA644"], [42567, "\uA646"], [42569, "\uA648"], [42571, "\uA64A"], [42573, "\uA64C"], [42575, "\uA64E"], [42577, "\uA650"], [42579, "\uA652"], [42581, "\uA654"], [42583, "\uA656"], [42585, "\uA658"], [42587, "\uA65A"], [42589, "\uA65C"], [42591, "\uA65E"], [42593, "\uA660"], [42595, "\uA662"], [42597, "\uA664"], [42599, "\uA666"], [42601, "\uA668"], [42603, "\uA66A"], [42605, "\uA66C"], [42625, "\uA680"], [42627, "\uA682"], [42629, "\uA684"], [42631, "\uA686"], [42633, "\uA688"], [42635, "\uA68A"], [42637, "\uA68C"], [42639, "\uA68E"], [42641, "\uA690"], [42643, "\uA692"], [42645, "\uA694"], [42647, "\uA696"], [42649, "\uA698"], [42651, "\uA69A"], [42787, "\uA722"], [42789, "\uA724"], [42791, "\uA726"], [42793, "\uA728"], [42795, "\uA72A"], [42797, "\uA72C"], [42799, "\uA72E"], [42803, "\uA732"], [42805, "\uA734"], [42807, "\uA736"], [42809, "\uA738"], [42811, "\uA73A"], [42813, "\uA73C"], [42815, "\uA73E"], [42817, "\uA740"], [42819, "\uA742"], [42821, "\uA744"], [42823, "\uA746"], [42825, "\uA748"], [42827, "\uA74A"], [42829, "\uA74C"], [42831, "\uA74E"], [42833, "\uA750"], [42835, "\uA752"], [42837, "\uA754"], [42839, "\uA756"], [42841, "\uA758"], [42843, "\uA75A"], [42845, "\uA75C"], [42847, "\uA75E"], [42849, "\uA760"], [42851, "\uA762"], [42853, "\uA764"], [42855, "\uA766"], [42857, "\uA768"], [42859, "\uA76A"], [42861, "\uA76C"], [42863, "\uA76E"], [42874, "\uA779"], [42876, "\uA77B"], [42879, "\uA77E"], [42881, "\uA780"], [42883, "\uA782"], [42885, "\uA784"], [42887, "\uA786"], [42892, "\uA78B"], [42897, "\uA790"], [42899, "\uA792"], [42900, "\uA7C4"], [42903, "\uA796"], [42905, "\uA798"], [42907, "\uA79A"], [42909, "\uA79C"], [42911, "\uA79E"], [42913, "\uA7A0"], [42915, "\uA7A2"], [42917, "\uA7A4"], [42919, "\uA7A6"], [42921, "\uA7A8"], [42933, "\uA7B4"], [42935, "\uA7B6"], [42937, "\uA7B8"], [42939, "\uA7BA"], [42941, "\uA7BC"], [42943, "\uA7BE"], [42945, "\uA7C0"], [42947, "\uA7C2"], [42952, "\uA7C7"], [42954, "\uA7C9"], [42957, "\uA7CC"], [42961, "\uA7D0"], [42967, "\uA7D6"], [42969, "\uA7D8"], [42971, "\uA7DA"], [42998, "\uA7F5"], [43859, "\uA7B3"], [43888, "\u13A0"], [43889, "\u13A1"], [43890, "\u13A2"], [43891, "\u13A3"], [43892, "\u13A4"], [43893, "\u13A5"], [43894, "\u13A6"], [43895, "\u13A7"], [43896, "\u13A8"], [43897, "\u13A9"], [43898, "\u13AA"], [43899, "\u13AB"], [43900, "\u13AC"], [43901, "\u13AD"], [43902, "\u13AE"], [43903, "\u13AF"], [43904, "\u13B0"], [43905, "\u13B1"], [43906, "\u13B2"], [43907, "\u13B3"], [43908, "\u13B4"], [43909, "\u13B5"], [43910, "\u13B6"], [43911, "\u13B7"], [43912, "\u13B8"], [43913, "\u13B9"], [43914, "\u13BA"], [43915, "\u13BB"], [43916, "\u13BC"], [43917, "\u13BD"], [43918, "\u13BE"], [43919, "\u13BF"], [43920, "\u13C0"], [43921, "\u13C1"], [43922, "\u13C2"], [43923, "\u13C3"], [43924, "\u13C4"], [43925, "\u13C5"], [43926, "\u13C6"], [43927, "\u13C7"], [43928, "\u13C8"], [43929, "\u13C9"], [43930, "\u13CA"], [43931, "\u13CB"], [43932, "\u13CC"], [43933, "\u13CD"], [43934, "\u13CE"], [43935, "\u13CF"], [43936, "\u13D0"], [43937, "\u13D1"], [43938, "\u13D2"], [43939, "\u13D3"], [43940, "\u13D4"], [43941, "\u13D5"], [43942, "\u13D6"], [43943, "\u13D7"], [43944, "\u13D8"], [43945, "\u13D9"], [43946, "\u13DA"], [43947, "\u13DB"], [43948, "\u13DC"], [43949, "\u13DD"], [43950, "\u13DE"], [43951, "\u13DF"], [43952, "\u13E0"], [43953, "\u13E1"], [43954, "\u13E2"], [43955, "\u13E3"], [43956, "\u13E4"], [43957, "\u13E5"], [43958, "\u13E6"], [43959, "\u13E7"], [43960, "\u13E8"], [43961, "\u13E9"], [43962, "\u13EA"], [43963, "\u13EB"], [43964, "\u13EC"], [43965, "\u13ED"], [43966, "\u13EE"], [43967, "\u13EF"], [64256, "FF"], [64257, "FI"], [64258, "FL"], [64259, "FFI"], [64260, "FFL"], [64261, "ST"], [64262, "ST"], [64275, "\u0544\u0546"], [64276, "\u0544\u0535"], [64277, "\u0544\u053B"], [64278, "\u054E\u0546"], [64279, "\u0544\u053D"], [65345, "\uFF21"], [65346, "\uFF22"], [65347, "\uFF23"], [65348, "\uFF24"], [65349, "\uFF25"], [65350, "\uFF26"], [65351, "\uFF27"], [65352, "\uFF28"], [65353, "\uFF29"], [65354, "\uFF2A"], [65355, "\uFF2B"], [65356, "\uFF2C"], [65357, "\uFF2D"], [65358, "\uFF2E"], [65359, "\uFF2F"], [65360, "\uFF30"], [65361, "\uFF31"], [65362, "\uFF32"], [65363, "\uFF33"], [65364, "\uFF34"], [65365, "\uFF35"], [65366, "\uFF36"], [65367, "\uFF37"], [65368, "\uFF38"], [65369, "\uFF39"], [65370, "\uFF3A"], [66600, "\u{10400}"], [66601, "\u{10401}"], [66602, "\u{10402}"], [66603, "\u{10403}"], [66604, "\u{10404}"], [66605, "\u{10405}"], [66606, "\u{10406}"], [66607, "\u{10407}"], [66608, "\u{10408}"], [66609, "\u{10409}"], [66610, "\u{1040A}"], [66611, "\u{1040B}"], [66612, "\u{1040C}"], [66613, "\u{1040D}"], [66614, "\u{1040E}"], [66615, "\u{1040F}"], [66616, "\u{10410}"], [66617, "\u{10411}"], [66618, "\u{10412}"], [66619, "\u{10413}"], [66620, "\u{10414}"], [66621, "\u{10415}"], [66622, "\u{10416}"], [66623, "\u{10417}"], [66624, "\u{10418}"], [66625, "\u{10419}"], [66626, "\u{1041A}"], [66627, "\u{1041B}"], [66628, "\u{1041C}"], [66629, "\u{1041D}"], [66630, "\u{1041E}"], [66631, "\u{1041F}"], [66632, "\u{10420}"], [66633, "\u{10421}"], [66634, "\u{10422}"], [66635, "\u{10423}"], [66636, "\u{10424}"], [66637, "\u{10425}"], [66638, "\u{10426}"], [66639, "\u{10427}"], [66776, "\u{104B0}"], [66777, "\u{104B1}"], [66778, "\u{104B2}"], [66779, "\u{104B3}"], [66780, "\u{104B4}"], [66781, "\u{104B5}"], [66782, "\u{104B6}"], [66783, "\u{104B7}"], [66784, "\u{104B8}"], [66785, "\u{104B9}"], [66786, "\u{104BA}"], [66787, "\u{104BB}"], [66788, "\u{104BC}"], [66789, "\u{104BD}"], [66790, "\u{104BE}"], [66791, "\u{104BF}"], [66792, "\u{104C0}"], [66793, "\u{104C1}"], [66794, "\u{104C2}"], [66795, "\u{104C3}"], [66796, "\u{104C4}"], [66797, "\u{104C5}"], [66798, "\u{104C6}"], [66799, "\u{104C7}"], [66800, "\u{104C8}"], [66801, "\u{104C9}"], [66802, "\u{104CA}"], [66803, "\u{104CB}"], [66804, "\u{104CC}"], [66805, "\u{104CD}"], [66806, "\u{104CE}"], [66807, "\u{104CF}"], [66808, "\u{104D0}"], [66809, "\u{104D1}"], [66810, "\u{104D2}"], [66811, "\u{104D3}"], [66967, "\u{10570}"], [66968, "\u{10571}"], [66969, "\u{10572}"], [66970, "\u{10573}"], [66971, "\u{10574}"], [66972, "\u{10575}"], [66973, "\u{10576}"], [66974, "\u{10577}"], [66975, "\u{10578}"], [66976, "\u{10579}"], [66977, "\u{1057A}"], [66979, "\u{1057C}"], [66980, "\u{1057D}"], [66981, "\u{1057E}"], [66982, "\u{1057F}"], [66983, "\u{10580}"], [66984, "\u{10581}"], [66985, "\u{10582}"], [66986, "\u{10583}"], [66987, "\u{10584}"], [66988, "\u{10585}"], [66989, "\u{10586}"], [66990, "\u{10587}"], [66991, "\u{10588}"], [66992, "\u{10589}"], [66993, "\u{1058A}"], [66995, "\u{1058C}"], [66996, "\u{1058D}"], [66997, "\u{1058E}"], [66998, "\u{1058F}"], [66999, "\u{10590}"], [67e3, "\u{10591}"], [67001, "\u{10592}"], [67003, "\u{10594}"], [67004, "\u{10595}"], [68800, "\u{10C80}"], [68801, "\u{10C81}"], [68802, "\u{10C82}"], [68803, "\u{10C83}"], [68804, "\u{10C84}"], [68805, "\u{10C85}"], [68806, "\u{10C86}"], [68807, "\u{10C87}"], [68808, "\u{10C88}"], [68809, "\u{10C89}"], [68810, "\u{10C8A}"], [68811, "\u{10C8B}"], [68812, "\u{10C8C}"], [68813, "\u{10C8D}"], [68814, "\u{10C8E}"], [68815, "\u{10C8F}"], [68816, "\u{10C90}"], [68817, "\u{10C91}"], [68818, "\u{10C92}"], [68819, "\u{10C93}"], [68820, "\u{10C94}"], [68821, "\u{10C95}"], [68822, "\u{10C96}"], [68823, "\u{10C97}"], [68824, "\u{10C98}"], [68825, "\u{10C99}"], [68826, "\u{10C9A}"], [68827, "\u{10C9B}"], [68828, "\u{10C9C}"], [68829, "\u{10C9D}"], [68830, "\u{10C9E}"], [68831, "\u{10C9F}"], [68832, "\u{10CA0}"], [68833, "\u{10CA1}"], [68834, "\u{10CA2}"], [68835, "\u{10CA3}"], [68836, "\u{10CA4}"], [68837, "\u{10CA5}"], [68838, "\u{10CA6}"], [68839, "\u{10CA7}"], [68840, "\u{10CA8}"], [68841, "\u{10CA9}"], [68842, "\u{10CAA}"], [68843, "\u{10CAB}"], [68844, "\u{10CAC}"], [68845, "\u{10CAD}"], [68846, "\u{10CAE}"], [68847, "\u{10CAF}"], [68848, "\u{10CB0}"], [68849, "\u{10CB1}"], [68850, "\u{10CB2}"], [68976, "\u{10D50}"], [68977, "\u{10D51}"], [68978, "\u{10D52}"], [68979, "\u{10D53}"], [68980, "\u{10D54}"], [68981, "\u{10D55}"], [68982, "\u{10D56}"], [68983, "\u{10D57}"], [68984, "\u{10D58}"], [68985, "\u{10D59}"], [68986, "\u{10D5A}"], [68987, "\u{10D5B}"], [68988, "\u{10D5C}"], [68989, "\u{10D5D}"], [68990, "\u{10D5E}"], [68991, "\u{10D5F}"], [68992, "\u{10D60}"], [68993, "\u{10D61}"], [68994, "\u{10D62}"], [68995, "\u{10D63}"], [68996, "\u{10D64}"], [68997, "\u{10D65}"], [71872, "\u{118A0}"], [71873, "\u{118A1}"], [71874, "\u{118A2}"], [71875, "\u{118A3}"], [71876, "\u{118A4}"], [71877, "\u{118A5}"], [71878, "\u{118A6}"], [71879, "\u{118A7}"], [71880, "\u{118A8}"], [71881, "\u{118A9}"], [71882, "\u{118AA}"], [71883, "\u{118AB}"], [71884, "\u{118AC}"], [71885, "\u{118AD}"], [71886, "\u{118AE}"], [71887, "\u{118AF}"], [71888, "\u{118B0}"], [71889, "\u{118B1}"], [71890, "\u{118B2}"], [71891, "\u{118B3}"], [71892, "\u{118B4}"], [71893, "\u{118B5}"], [71894, "\u{118B6}"], [71895, "\u{118B7}"], [71896, "\u{118B8}"], [71897, "\u{118B9}"], [71898, "\u{118BA}"], [71899, "\u{118BB}"], [71900, "\u{118BC}"], [71901, "\u{118BD}"], [71902, "\u{118BE}"], [71903, "\u{118BF}"], [93792, "\u{16E40}"], [93793, "\u{16E41}"], [93794, "\u{16E42}"], [93795, "\u{16E43}"], [93796, "\u{16E44}"], [93797, "\u{16E45}"], [93798, "\u{16E46}"], [93799, "\u{16E47}"], [93800, "\u{16E48}"], [93801, "\u{16E49}"], [93802, "\u{16E4A}"], [93803, "\u{16E4B}"], [93804, "\u{16E4C}"], [93805, "\u{16E4D}"], [93806, "\u{16E4E}"], [93807, "\u{16E4F}"], [93808, "\u{16E50}"], [93809, "\u{16E51}"], [93810, "\u{16E52}"], [93811, "\u{16E53}"], [93812, "\u{16E54}"], [93813, "\u{16E55}"], [93814, "\u{16E56}"], [93815, "\u{16E57}"], [93816, "\u{16E58}"], [93817, "\u{16E59}"], [93818, "\u{16E5A}"], [93819, "\u{16E5B}"], [93820, "\u{16E5C}"], [93821, "\u{16E5D}"], [93822, "\u{16E5E}"], [93823, "\u{16E5F}"], [125218, "\u{1E900}"], [125219, "\u{1E901}"], [125220, "\u{1E902}"], [125221, "\u{1E903}"], [125222, "\u{1E904}"], [125223, "\u{1E905}"], [125224, "\u{1E906}"], [125225, "\u{1E907}"], [125226, "\u{1E908}"], [125227, "\u{1E909}"], [125228, "\u{1E90A}"], [125229, "\u{1E90B}"], [125230, "\u{1E90C}"], [125231, "\u{1E90D}"], [125232, "\u{1E90E}"], [125233, "\u{1E90F}"], [125234, "\u{1E910}"], [125235, "\u{1E911}"], [125236, "\u{1E912}"], [125237, "\u{1E913}"], [125238, "\u{1E914}"], [125239, "\u{1E915}"], [125240, "\u{1E916}"], [125241, "\u{1E917}"], [125242, "\u{1E918}"], [125243, "\u{1E919}"], [125244, "\u{1E91A}"], [125245, "\u{1E91B}"], [125246, "\u{1E91C}"], [125247, "\u{1E91D}"], [125248, "\u{1E91E}"], [125249, "\u{1E91F}"], [125250, "\u{1E920}"], [125251, "\u{1E921}"]];
85
+
86
+ // packages/safe-bash-command-csvkit/src/python-text.ts
87
+ var upperMap = new Map(upperMappings);
88
+ function bytesRepr(value) {
89
+ const quote = value.includes(39) && !value.includes(34) ? '"' : "'";
90
+ let text = "b" + quote;
91
+ for (const byte of value) {
92
+ if (byte === 9) text += "\\t";
93
+ else if (byte === 10) text += "\\n";
94
+ else if (byte === 13) text += "\\r";
95
+ else if (byte === 92 || byte === quote.charCodeAt(0)) text += "\\" + String.fromCharCode(byte);
96
+ else if (byte >= 32 && byte < 127) text += String.fromCharCode(byte);
97
+ else text += "\\x" + byte.toString(16).padStart(2, "0");
98
+ }
99
+ return text + quote;
100
+ }
101
+ function upperText(value, step) {
102
+ let result = "";
103
+ for (const char of value) {
104
+ step();
105
+ result += upperMap.get(char.codePointAt(0)) ?? char;
106
+ }
107
+ return result;
108
+ }
109
+ function stripWhitespace(value) {
110
+ const len = value.length;
111
+ if (len === 0) return "";
112
+ const c0 = value.charCodeAt(0);
113
+ const cLast = value.charCodeAt(len - 1);
114
+ if (c0 > 32 && c0 < 127 && cLast > 32 && cLast < 127) return value;
115
+ const chars = Array.from(value);
116
+ const whitespace = (char) => {
117
+ const code = char.codePointAt(0);
118
+ return integerWhitespace.includes(code) || code >= 28 && code <= 31;
71
119
  };
72
- const chars = Array.from(field);
73
120
  let first = 0;
74
121
  let last = chars.length;
75
- while (first < last && integerWhitespace.includes(chars[first].codePointAt(0))) first++;
76
- while (last > first && integerWhitespace.includes(chars[last - 1].codePointAt(0))) last--;
77
- let value = "";
78
- for (let index2 = first; index2 < last; index2++) {
79
- const char = chars[index2];
80
- const code = char.codePointAt(0);
81
- const zero = decimalZeroes.find((start) => code >= start && code < start + 10);
82
- value += zero === void 0 ? char : String(code - zero);
83
- }
84
- const lower = value.toLowerCase();
85
- const unsigned = lower[0] === "+" || lower[0] === "-" ? lower.slice(1) : lower;
86
- if (unsigned === "inf" || unsigned === "infinity") return lower[0] === "-" ? -Infinity : Infinity;
87
- if (unsigned === "nan") return NaN;
88
- const digit = (char) => char !== void 0 && char >= "0" && char <= "9";
89
- let normalized = "";
90
- for (let index2 = 0; index2 < value.length; index2++) {
91
- if (value[index2] === "_") {
92
- if (!digit(value[index2 - 1]) || !digit(value[index2 + 1])) invalid();
93
- } else normalized += value[index2];
94
- }
95
- let index = normalized[0] === "+" || normalized[0] === "-" ? 1 : 0;
96
- let digits = 0;
97
- while (digit(normalized[index])) {
98
- index++;
99
- digits++;
100
- }
101
- if (normalized[index] === ".") {
102
- index++;
103
- while (digit(normalized[index])) {
104
- index++;
105
- digits++;
122
+ while (first < last && whitespace(chars[first])) first++;
123
+ while (last > first && whitespace(chars[last - 1])) last--;
124
+ return chars.slice(first, last).join("");
125
+ }
126
+ var lowerMap = new Map(lowerMappings);
127
+ function lowerText(value) {
128
+ let ascii = true;
129
+ let hasUpper = false;
130
+ for (let i = 0; i < value.length; i++) {
131
+ const c = value.charCodeAt(i);
132
+ if (c >= 128) {
133
+ ascii = false;
134
+ break;
106
135
  }
136
+ if (c >= 65 && c <= 90) hasUpper = true;
107
137
  }
108
- if (!digits) invalid();
109
- if (normalized[index] === "e" || normalized[index] === "E") {
110
- index++;
111
- if (normalized[index] === "+" || normalized[index] === "-") index++;
112
- const start = index;
113
- while (digit(normalized[index])) index++;
114
- if (index === start) invalid();
115
- }
116
- if (index !== normalized.length) invalid();
117
- return Number(normalized);
118
- }
119
- function character(value, fallback, name) {
120
- const result = value ?? fallback;
121
- if (Array.from(result).length !== 1) throw new CsvkitDiagnostic(`TypeError: "${name}" must be a unicode character${name === "delimiter" ? "" : " or None"}, not a string of length ${Array.from(result).length}`);
122
- return result;
138
+ if (ascii) return hasUpper ? value.toLowerCase() : value;
139
+ const chars = Array.from(value);
140
+ const within = (code, ranges) => {
141
+ let lo = 0;
142
+ let hi = ranges.length;
143
+ while (lo < hi) {
144
+ const mid = lo + hi >>> 1;
145
+ const range = ranges[mid];
146
+ if (code < range[0]) hi = mid;
147
+ else if (code > range[1]) lo = mid + 1;
148
+ else return true;
149
+ }
150
+ return false;
151
+ };
152
+ return chars.map((char, index) => {
153
+ const code = char.codePointAt(0);
154
+ if (code !== 931) return lowerMap.get(code) ?? char;
155
+ const cased = (direction) => {
156
+ for (let cursor = index + direction; cursor >= 0 && cursor < chars.length; cursor += direction) {
157
+ const neighbor = chars[cursor].codePointAt(0);
158
+ if (!within(neighbor, sigmaIgnorable)) return within(neighbor, sigmaCased);
159
+ }
160
+ return false;
161
+ };
162
+ return cased(-1) && !cased(1) ? "\u03C2" : "\u03C3";
163
+ }).join("");
123
164
  }
124
- function dialectCharacters(dialect) {
125
- const quoting = dialect.quoting ?? (dialect.quotechar === null ? 3 : 0);
126
- if (!Number.isInteger(quoting) || quoting < 0 || quoting > 5) throw new CsvkitDiagnostic('TypeError: bad "quoting" value');
127
- if (dialect.quotechar === null && quoting !== 3) throw new CsvkitDiagnostic("TypeError: quotechar must be set if quoting enabled");
128
- const delimiter = character(dialect.delimiter, ",", "delimiter");
129
- const quote = dialect.quotechar === null ? "" : character(dialect.quotechar, '"', "quotechar");
130
- const escape = dialect.escapechar === void 0 || dialect.escapechar === null ? void 0 : character(dialect.escapechar, "", "escapechar");
131
- for (const [name, value] of [["delimiter", delimiter], ["quotechar", quote], ["escapechar", escape]]) {
132
- if (value === "\r" || value === "\n" || name !== "delimiter" && value === " " && dialect.skipinitialspace)
133
- throw new CsvkitDiagnostic(`ValueError: bad ${name} value`);
165
+
166
+ // packages/safe-bash-command-csvkit/src/diagnostics/index.ts
167
+ function diagnosticReport(failure, verbose, encoding) {
168
+ let text = failure instanceof PythonException ? `${failure.exceptionClass}: ${failure.detail}` : failure.message;
169
+ if (!(failure instanceof CsvkitBlocked) && failure.status === 1) {
170
+ if (verbose) {
171
+ if (!(failure instanceof PythonException) || !failure.traceback?.profile || !failure.traceback.frames.length || failure.traceback.frames.some((frame) => !frame.path || !frame.function || !Number.isSafeInteger(frame.line) || frame.line < 1))
172
+ return { status: 78, stderr: "csvkit: unsupported or unqualified: frozen Python traceback frames and deployment identity\n" };
173
+ text = "Traceback (most recent call last):\n";
174
+ for (const frame of failure.traceback.frames) {
175
+ text += ` File "${frame.path}", line ${frame.line}, in ${frame.function}
176
+ `;
177
+ const source = frame.source === void 0 ? "" : stripWhitespace(frame.source);
178
+ if (source) text += ` ${source}
179
+ `;
180
+ }
181
+ text += `${failure.exceptionClass}: ${failure.detail}`;
182
+ } else if (failure instanceof PythonException && failure.exceptionClass === "UnicodeDecodeError") {
183
+ text = `Your file is not "${encoding}" encoded. Please specify the correct encoding with the --encoding flag. Use the -v flag to see the complete error.`;
184
+ }
134
185
  }
135
- if (delimiter === quote) throw new CsvkitDiagnostic("ValueError: bad delimiter or quotechar value");
136
- if (delimiter === escape) throw new CsvkitDiagnostic("ValueError: bad delimiter or escapechar value");
137
- if (escape === quote) throw new CsvkitDiagnostic("ValueError: bad escapechar or quotechar value");
138
- return { delimiter, quote, escape };
186
+ return { status: failure.status, stderr: text + "\n" };
139
187
  }
140
- function createCsvParser(dialect, step, preserveNewlines = false, physicalLine, admitRow = () => {
141
- }) {
142
- const { delimiter, quote, escape } = dialectCharacters(dialect);
143
- let state = "start";
144
- let field = "";
145
- let length = 0;
146
- let cells = [];
147
- let wasQuoted = false;
148
- let line = 1;
149
- let active = false;
150
- let previousCR = false;
151
- let rowStarted = false;
152
- let finished = false;
153
- const append = (char) => {
154
- if (cells.length >= (dialect.columnBudget ?? Infinity)) throw new CsvkitBlocked("column budget exceeded");
155
- length++;
156
- if (length > (dialect.fieldBudget ?? Infinity)) throw new CsvkitBlocked("field character budget exceeded");
157
- if (length > (dialect.fieldLimit ?? Infinity)) throw new CsvkitDiagnostic(`FieldSizeLimitError: CSV contains a field longer than the maximum length of ${dialect.fieldLimit} characters on line ${physicalLine?.() ?? line}. Try raising the maximum with the field_size_limit parameter, or try setting quoting=csv.QUOTE_NONE.`);
158
- field += char;
188
+ function fileException(failure, path) {
189
+ if (failure instanceof CsvkitDiagnostic || typeof failure !== "object" || failure === null) return failure;
190
+ const code = failure.code;
191
+ const identities = {
192
+ ENOENT: ["FileNotFoundError", 2, "No such file or directory"],
193
+ EACCES: ["PermissionError", 13, "Permission denied"],
194
+ EPERM: ["PermissionError", 1, "Operation not permitted"],
195
+ EISDIR: ["IsADirectoryError", 21, "Is a directory"],
196
+ ENOTDIR: ["NotADirectoryError", 20, "Not a directory"]
159
197
  };
160
- const finish = () => {
161
- if (cells.length >= (dialect.columnBudget ?? Infinity)) throw new CsvkitBlocked("column budget exceeded");
162
- const quoting = dialect.quoting ?? 0;
163
- cells.push(!wasQuoted && !field && (quoting === 4 || quoting === 5) ? null : !wasQuoted && field && (quoting === 2 || quoting === 4) ? numericField(field) : field);
164
- field = "";
165
- length = 0;
166
- state = "start";
167
- wasQuoted = false;
198
+ const identity = typeof code === "string" && Object.hasOwn(identities, code) ? identities[code] : void 0;
199
+ return identity ? new PythonException(identity[0], `[Errno ${identity[1]}] ${identity[2]}: ${repr(path)}`) : failure;
200
+ }
201
+ function warningText(warning) {
202
+ return `${warning.path}:${warning.line}: ${warning.category}: ${warning.message}
203
+ ` + (warning.source ? ` ${stripWhitespace(warning.source)}
204
+ ` : "");
205
+ }
206
+
207
+ // packages/safe-bash-command-csvkit/src/table/headers.ts
208
+ function defaultHeaders(count) {
209
+ return Array.from({ length: count }, (_, index) => {
210
+ let name = "";
211
+ do {
212
+ name = String.fromCharCode(97 + index % 26) + name;
213
+ index = Math.floor(index / 26) - 1;
214
+ } while (index >= 0);
215
+ return name;
216
+ });
217
+ }
218
+ var warningRegistries = /* @__PURE__ */ new WeakMap();
219
+ async function normalizeHeaders(headers, runtime) {
220
+ const generated = defaultHeaders(headers.length);
221
+ const final = [];
222
+ const seen = /* @__PURE__ */ new Set();
223
+ const emitted = warningRegistries.get(runtime) ?? /* @__PURE__ */ new Set();
224
+ warningRegistries.set(runtime, emitted);
225
+ const warn = async (category, message, line, source) => {
226
+ const profile = runtime.context.columnWarnings;
227
+ if (profile?.suppressWarnings) return;
228
+ if (!profile?.utilsPath) throw new CsvkitBlocked("Agate duplicate/unnamed column warning provenance");
229
+ const identity = category + message;
230
+ if (emitted.has(identity)) return;
231
+ runtime.retain(32 + identity.length * 2);
232
+ emitted.add(identity);
233
+ await runtime.write(warningText({ path: profile.utilsPath, category, message, line, source }), "stderr");
168
234
  };
169
- let lastChar = "";
170
- return {
171
- get done() {
172
- return finished;
173
- },
174
- isIdle() {
175
- return !finished && !rowStarted && state === "start" && !previousCR && !active && cells.length === 0 && field.length === 0;
176
- },
177
- advancePlainLine() {
178
- lastChar = "\n";
179
- line++;
180
- },
181
- feed(char) {
182
- if (finished) return void 0;
183
- if (char === null) {
184
- finished = true;
185
- if (active) {
186
- if (state === "escaped" || state === "quotedEscape") append("\n");
187
- finish();
188
- const rec = { cells, line: physicalLine?.() ?? line - (lastChar === "\n" || lastChar === "\r" ? 1 : 0) };
189
- cells = [];
190
- return rec;
191
- }
192
- return void 0;
193
- }
194
- if (char === void 0) {
195
- if (!rowStarted) {
196
- admitRow();
197
- rowStarted = true;
198
- }
199
- previousCR = false;
200
- if (state === "escaped" || state === "quotedEscape") {
201
- append("\n");
202
- state = state === "escaped" ? "plain" : "quoted";
203
- return void 0;
204
- }
205
- if (state === "escapedNewline") return void 0;
206
- if (state === "quoted") return void 0;
207
- if (active || cells.length || field) finish();
208
- const rec = { cells, line: physicalLine?.() ?? line };
209
- cells = [];
210
- state = "start";
211
- active = false;
212
- rowStarted = false;
213
- return rec;
214
- }
215
- lastChar = char;
216
- step();
217
- const pairedLF = previousCR && char === "\n";
218
- if (pairedLF && !preserveNewlines) {
219
- previousCR = false;
220
- return void 0;
221
- }
222
- if (!rowStarted) {
223
- admitRow();
224
- rowStarted = true;
225
- }
226
- previousCR = char === "\r";
227
- if (previousCR && !preserveNewlines) char = "\n";
228
- const wasActive = active;
229
- active = true;
230
- let emitted;
231
- if (state === "escaped" || state === "quotedEscape") {
232
- append(char);
233
- state = state === "escaped" ? char === "\n" || char === "\r" ? "escapedNewline" : "plain" : "quoted";
234
- } else if (state === "quoted") {
235
- if (char === escape) state = "quotedEscape";
236
- else if (char === quote) state = dialect.doublequote === false ? "plain" : "after";
237
- else append(char);
238
- } else if (state === "after" && char === quote) {
239
- append(char);
240
- state = "quoted";
241
- } else if (char === "\n" || char === "\r") {
242
- if (wasActive || cells.length || field) finish();
243
- emitted = { cells, line: physicalLine?.() ?? line };
244
- cells = [];
245
- state = "start";
246
- active = false;
247
- rowStarted = false;
248
- } else if (state === "start" && char === " " && dialect.skipinitialspace) {
249
- } else if (char === delimiter) finish();
250
- else if (state === "after") {
251
- append(char);
252
- state = "plain";
253
- } else if (char === escape) state = "escaped";
254
- else if (state === "start" && char === quote && dialect.quoting !== 3) {
255
- state = "quoted";
256
- wasQuoted = true;
257
- } else {
258
- append(char);
259
- if (state !== "escapedNewline") state = "plain";
260
- }
261
- if ((char === "\n" || char === "\r") && !pairedLF) line++;
262
- return emitted;
235
+ for (const [index, header] of headers.entries()) {
236
+ runtime.step();
237
+ const name = header || generated[index];
238
+ if (!header) await warn("UnnamedColumnWarning", `Column ${index} has no name. Using "${name}".`, 272, "warn_unnamed_column(i, new_value)");
239
+ let result = name;
240
+ let duplicates = 0;
241
+ while (seen.has(result)) {
242
+ runtime.step();
243
+ result = name + "_" + (++duplicates + 1);
263
244
  }
264
- };
265
- }
266
- function* readCsv(text, dialect = {}, step = () => {
267
- }) {
268
- const parser = createCsvParser(dialect, step);
269
- for (const char of text) {
270
- const next = parser.feed(char);
271
- if (next) yield next;
245
+ if (duplicates) await warn("DuplicateColumnWarning", `Column name "${name}" already exists in Table. Column will be renamed to "${result}".`, 288, "warn_duplicate_column(new_value, final_value)");
246
+ runtime.retain(32 + result.length * 2);
247
+ seen.add(result);
248
+ final.push(result);
272
249
  }
273
- const end = parser.feed(null);
274
- if (end) yield end;
250
+ return final;
275
251
  }
276
- function readCsvRecoverable(text, dialect, step) {
277
- let offset2 = 0;
278
- let lineEnd = 0;
279
- let line = 0;
280
- let done = false;
281
- let parser = createCsvParser(dialect, step, true, () => line);
282
- return {
283
- next() {
284
- if (done) return { done: true, value: void 0 };
285
- try {
286
- while (offset2 < text.length) {
287
- if (offset2 === lineEnd) {
288
- line++;
289
- lineEnd = offset2;
290
- while (lineEnd < text.length && text[lineEnd] !== "\n" && text[lineEnd] !== "\r") {
291
- step();
292
- lineEnd++;
293
- }
294
- if (text[lineEnd] === "\r") lineEnd++;
295
- if (text[lineEnd] === "\n") lineEnd++;
296
- }
297
- const char = String.fromCodePoint(text.codePointAt(offset2));
298
- offset2 += char.length;
299
- const next = parser.feed(char);
300
- if (next) {
301
- offset2 = lineEnd;
302
- return { done: false, value: next };
303
- }
304
- }
305
- done = true;
306
- const end = parser.feed(null);
307
- return end ? { done: false, value: end } : { done: true, value: void 0 };
308
- } catch (failure) {
309
- if (failure instanceof CsvkitDiagnostic && !(failure instanceof CsvkitBlocked)) {
310
- offset2 = lineEnd;
311
- parser = createCsvParser(dialect, step, true, () => line);
312
- } else done = true;
313
- throw failure;
314
- }
315
- },
316
- return() {
317
- done = true;
318
- return { done: true, value: void 0 };
252
+
253
+ // packages/safe-bash-command-csvkit/src/table/index.ts
254
+ init_buffer();
255
+
256
+ // packages/safe-bash-command-csvkit/src/table/types.ts
257
+ init_buffer();
258
+
259
+ // packages/safe-bash-command-csvkit/src/types/decimal.ts
260
+ init_buffer();
261
+ var DecimalTrap = class extends Error {
262
+ constructor(operation) {
263
+ super(operation);
264
+ this.operation = operation;
265
+ }
266
+ operation;
267
+ };
268
+ var Decimal = class _Decimal {
269
+ constructor(negative, coefficient, exponent, special, payload = "") {
270
+ this.negative = negative;
271
+ this.coefficient = coefficient;
272
+ this.exponent = exponent;
273
+ this.special = special;
274
+ this.payload = payload;
275
+ }
276
+ negative;
277
+ coefficient;
278
+ exponent;
279
+ special;
280
+ payload;
281
+ static parse(text) {
282
+ let ascii = "";
283
+ for (const char of stripWhitespace(text)) {
284
+ if (char === "_") continue;
285
+ const code = char.codePointAt(0);
286
+ const zero = decimalZeroes.find((start) => code >= start && code < start + 10);
287
+ ascii += zero === void 0 ? char : String(code - zero);
319
288
  }
320
- };
321
- }
322
- async function* readCsvStream(lines, dialect = {}, step = () => {
323
- }, admitRow = () => {
324
- }) {
325
- let physicalLine = 0;
326
- const parser = createCsvParser(dialect, step, true, () => physicalLine, admitRow);
327
- const { delimiter, quote, escape } = dialectCharacters(dialect);
328
- const quoting = dialect.quoting ?? (dialect.quotechar === null ? 3 : 0);
329
- const canFastPlain = (quoting === 0 || quoting === 1 || quoting === 3) && !dialect.skipinitialspace && escape === void 0 && delimiter.length === 1;
330
- const quoteCode = quote ? quote.charCodeAt(0) : -1;
331
- const colBudget = dialect.columnBudget ?? Infinity;
332
- const maxFieldLen = Math.min(dialect.fieldBudget ?? Infinity, dialect.fieldLimit ?? Infinity);
333
- try {
334
- for await (const text of lines) {
335
- physicalLine++;
336
- const len = text.length;
337
- if (canFastPlain && len >= 2 && len <= maxFieldLen && text.charCodeAt(len - 1) === 10 && parser.isIdle?.()) {
338
- let plainAscii = true;
339
- let fieldCount = 1;
340
- const delimCode = delimiter.charCodeAt(0);
341
- for (let i = 0; i < len - 1; i++) {
342
- const c = text.charCodeAt(i);
343
- if (c >= 128 || c === 13 || c === 10 || c === quoteCode) {
344
- plainAscii = false;
345
- break;
346
- }
347
- if (c === delimCode) fieldCount++;
348
- }
349
- if (plainAscii && fieldCount <= colBudget) {
350
- step();
351
- admitRow();
352
- for (let i = 1; i < len; i++) step();
353
- parser.advancePlainLine?.();
354
- yield { cells: text.slice(0, len - 1).split(delimiter), line: physicalLine };
355
- continue;
356
- }
357
- }
358
- let offset2 = 0;
359
- let completed = false;
360
- for (const char of text) {
361
- offset2 += char.length;
362
- const next = parser.feed(char);
363
- if (next) {
364
- for (const trailing of text.slice(offset2)) if (trailing !== "\n" && trailing !== "\r")
365
- throw new CsvkitDiagnostic("Error: new-line character seen in unquoted field - do you need to open the file with newline=''?");
366
- yield next;
367
- completed = true;
368
- break;
369
- }
289
+ text = ascii;
290
+ const special = /^([+-]?)(Infinity|Inf|sNaN|NaN)(\d*)$/i.exec(text);
291
+ if (special) {
292
+ const name = special[2].toLowerCase();
293
+ if (name.startsWith("inf") && special[3]) throw new DecimalTrap("InvalidOperation");
294
+ return new _Decimal(special[1] === "-", 0n, 0, name.startsWith("inf") ? "Infinity" : name === "snan" ? "sNaN" : "NaN", special[3].replace(/^0+/, ""));
295
+ }
296
+ const match2 = /^([+-]?)(?:(\d+)(?:\.(\d*))?|\.(\d+))(?:[eE]([+-]?\d+))?$/.exec(text);
297
+ if (!match2) throw new DecimalTrap("InvalidOperation");
298
+ const fraction = match2[3] ?? match2[4] ?? "";
299
+ const digits = (match2[2] ?? "") + fraction;
300
+ const exponent = BigInt(match2[5] ?? "0") - BigInt(fraction.length);
301
+ if (!Number.isSafeInteger(Number(exponent))) throw new DecimalTrap("InvalidOperation");
302
+ return new _Decimal(match2[1] === "-", BigInt(digits), Number(exponent));
303
+ }
304
+ static finite(negative, coefficient, exponent, precision = 28) {
305
+ let digits = coefficient.toString().length;
306
+ if (digits > precision) {
307
+ const cut = digits - precision;
308
+ const divisor = 10n ** BigInt(cut);
309
+ const rest = coefficient % divisor;
310
+ coefficient /= divisor;
311
+ if (rest * 2n > divisor || rest * 2n === divisor && coefficient % 2n !== 0n) coefficient++;
312
+ exponent += cut;
313
+ digits = coefficient.toString().length;
314
+ if (digits > precision) {
315
+ coefficient /= 10n;
316
+ exponent++;
370
317
  }
371
- if (!completed) {
372
- const boundary = parser.feed(void 0);
373
- if (boundary) {
374
- yield boundary;
375
- }
318
+ }
319
+ if (exponent + coefficient.toString().length - 1 > 999999) throw new DecimalTrap("Overflow");
320
+ if (!Number.isSafeInteger(exponent)) throw new DecimalTrap("InvalidOperation");
321
+ return new _Decimal(negative, coefficient, exponent);
322
+ }
323
+ nan(other) {
324
+ if (this.special === "sNaN" || other.special === "sNaN") throw new DecimalTrap("InvalidOperation");
325
+ const value = this.special === "NaN" ? this : other.special === "NaN" ? other : void 0;
326
+ return value && new _Decimal(value.negative, 0n, 0, "NaN", value.payload.slice(-28).replace(/^0+/, ""));
327
+ }
328
+ add(other) {
329
+ const nan = this.nan(other);
330
+ if (nan) return nan;
331
+ if (this.special === "Infinity" || other.special === "Infinity") {
332
+ if (this.special === other.special && this.negative !== other.negative) throw new DecimalTrap("InvalidOperation");
333
+ return this.special ? this : other;
334
+ }
335
+ const exponent = Math.min(this.exponent, other.exponent);
336
+ const a = this.coefficient * 10n ** BigInt(this.exponent - exponent) * (this.negative ? -1n : 1n);
337
+ const b = other.coefficient * 10n ** BigInt(other.exponent - exponent) * (other.negative ? -1n : 1n);
338
+ const sum = a + b;
339
+ return _Decimal.finite(sum < 0n || sum === 0n && this.negative && other.negative, sum < 0n ? -sum : sum, exponent);
340
+ }
341
+ multiply(other) {
342
+ const nan = this.nan(other);
343
+ if (nan) return nan;
344
+ const negative = this.negative !== other.negative;
345
+ if (this.special || other.special) {
346
+ if (!this.special && this.coefficient === 0n || !other.special && other.coefficient === 0n) throw new DecimalTrap("InvalidOperation");
347
+ return new _Decimal(negative, 0n, 0, "Infinity");
348
+ }
349
+ return _Decimal.finite(negative, this.coefficient * other.coefficient, this.exponent + other.exponent);
350
+ }
351
+ /** CPython mpdecimal integer power: precision + exponent digits + 2. */
352
+ square() {
353
+ const nan = this.nan(this);
354
+ if (nan) return nan;
355
+ if (this.special) return new _Decimal(false, 0n, 0, "Infinity");
356
+ if (this.coefficient === 0n) return new _Decimal(false, 0n, 0);
357
+ const working = _Decimal.finite(false, this.coefficient * this.coefficient, this.exponent * 2, 31);
358
+ return _Decimal.finite(false, working.coefficient, working.exponent);
359
+ }
360
+ divide(other) {
361
+ const nan = this.nan(other);
362
+ if (nan) return nan;
363
+ const negative = this.negative !== other.negative;
364
+ if (this.special && other.special) throw new DecimalTrap("InvalidOperation");
365
+ if (this.special) return new _Decimal(negative, 0n, 0, "Infinity");
366
+ if (other.special) return new _Decimal(negative, 0n, -1000026);
367
+ if (other.coefficient === 0n) throw new DecimalTrap(this.coefficient === 0n ? "InvalidOperation" : "DivisionByZero");
368
+ const preferred = this.exponent - other.exponent;
369
+ if (this.coefficient === 0n) return _Decimal.finite(negative, 0n, preferred);
370
+ const shift = Math.max(0, 29 + other.coefficient.toString().length - this.coefficient.toString().length);
371
+ const numerator = this.coefficient * 10n ** BigInt(shift);
372
+ let coefficient = numerator / other.coefficient;
373
+ const remainder = numerator % other.coefficient;
374
+ if (remainder !== 0n) coefficient = coefficient * 10n + 1n;
375
+ let result = _Decimal.finite(negative, coefficient, preferred - shift - (remainder !== 0n ? 1 : 0));
376
+ if (numerator % other.coefficient === 0n) {
377
+ coefficient = result.coefficient;
378
+ let exponent = result.exponent;
379
+ while (exponent < preferred && coefficient % 10n === 0n) {
380
+ coefficient /= 10n;
381
+ exponent++;
376
382
  }
383
+ result = new _Decimal(negative, coefficient, exponent);
377
384
  }
378
- const end = parser.feed(null);
379
- if (end) yield end;
380
- } finally {
385
+ return result;
381
386
  }
382
- }
383
- function pythonValueText(value) {
384
- if (value === null) return "";
385
- if (typeof value === "boolean") return value ? "True" : "False";
386
- if (typeof value === "number") {
387
- if (Number.isNaN(value)) return "nan";
388
- if (!Number.isFinite(value)) return value < 0 ? "-inf" : "inf";
389
- if (Object.is(value, -0)) return "-0.0";
387
+ compare(other) {
388
+ if (this.special === "NaN" || this.special === "sNaN" || other.special === "NaN" || other.special === "sNaN") throw new DecimalTrap("InvalidOperation");
389
+ if (this.special || other.special) {
390
+ if (this.special === other.special && this.negative === other.negative) return 0;
391
+ return this.special ? this.negative ? -1 : 1 : other.negative ? 1 : -1;
392
+ }
393
+ if (this.coefficient === 0n && other.coefficient === 0n) return 0;
394
+ if (this.negative !== other.negative) return this.negative ? -1 : 1;
395
+ const exponent = Math.min(this.exponent, other.exponent);
396
+ const a = this.coefficient * 10n ** BigInt(this.exponent - exponent);
397
+ const b = other.coefficient * 10n ** BigInt(other.exponent - exponent);
398
+ return (a === b ? 0 : a < b ? -1 : 1) * (this.negative ? -1 : 1);
390
399
  }
391
- if (typeof value !== "object") return String(value);
392
- if (value.kind !== "timedelta") return value.value;
393
- const day = 86400000000n;
394
- let days = value.microseconds / day;
395
- let remainder = value.microseconds % day;
396
- if (remainder < 0n) {
397
- days--;
398
- remainder += day;
400
+ normalized() {
401
+ const nan = this.nan(this);
402
+ if (nan) return nan;
403
+ if (this.special) return this;
404
+ const rounded = _Decimal.finite(this.negative, this.coefficient, this.exponent);
405
+ let coefficient = rounded.coefficient;
406
+ let exponent = rounded.exponent;
407
+ if (coefficient === 0n) return new _Decimal(this.negative, 0n, 0);
408
+ while (coefficient % 10n === 0n) {
409
+ coefficient /= 10n;
410
+ exponent++;
411
+ }
412
+ return new _Decimal(this.negative, coefficient, exponent);
399
413
  }
400
- if (days < -999999999n || days > 999999999n) throw new CsvkitDiagnostic("OverflowError: timedelta days out of range");
401
- const seconds = remainder / 1000000n;
402
- const micros = remainder % 1000000n;
403
- const time = `${seconds / 3600n}:${String(seconds / 60n % 60n).padStart(2, "0")}:${String(seconds % 60n).padStart(2, "0")}`;
404
- return (days ? `${days} day${days === 1n || days === -1n ? "" : "s"}, ` : "") + time + (micros ? `.${String(micros).padStart(6, "0")}` : "");
414
+ toString() {
415
+ const sign = this.negative ? "-" : "";
416
+ if (this.special) return sign + this.special + this.payload;
417
+ const digits = this.coefficient.toString();
418
+ const adjusted = this.exponent + digits.length - 1;
419
+ if (this.exponent > 0 || adjusted < -6) return sign + digits[0] + (digits.length > 1 ? "." + digits.slice(1) : "") + "E" + (adjusted >= 0 ? "+" : "") + adjusted;
420
+ const point = digits.length + this.exponent;
421
+ if (point > 0) return sign + digits.slice(0, point) + (point < digits.length ? "." + digits.slice(point) : "");
422
+ return sign + "0." + "0".repeat(-point) + digits;
423
+ }
424
+ };
425
+
426
+ // packages/safe-bash-command-csvkit/src/types/temporal.ts
427
+ init_buffer();
428
+ var TemporalCastError = class extends Error {
429
+ };
430
+ var months = ["january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "december"];
431
+ var weekdays = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"];
432
+ var leap = (year) => year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);
433
+ var monthDays = (year, month) => [31, leap(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month - 1] ?? 0;
434
+ var pad = (value, width = 2) => String(value).padStart(width, "0");
435
+ function valid(p) {
436
+ return p.year >= 1 && p.year <= 9999 && p.month >= 1 && p.month <= 12 && p.day >= 1 && p.day <= monthDays(p.year, p.month) && p.hour >= 0 && p.hour < 24 && p.minute >= 0 && p.minute < 60 && p.second >= 0 && p.second < 60;
405
437
  }
406
- function writeCsvRow(row, dialect = {}, normalizeStrings = true, admission) {
407
- const { delimiter, quote, escape } = dialectCharacters(dialect);
408
- const end = dialect.lineterminator ?? "\n";
409
- const quoting = dialect.quoting ?? (dialect.quotechar === null ? 3 : 0);
410
- function* fragments() {
411
- for (let index = 0; index < row.length; index++) {
412
- const value = row[index];
413
- const field = pythonValueText(value);
414
- const normalized = typeof value === "string" && normalizeStrings;
415
- const numeric = typeof value === "number" || typeof value === "bigint" || typeof value === "boolean" || typeof value === "object" && (value?.kind === "decimal" || value?.kind === "float");
416
- let quoted = quoting === 1 || quoting === 2 && !numeric || quoting === 4 && typeof value === "string" || quoting === 5 && value !== null;
417
- for (const original of field) {
418
- admission?.step();
419
- const char = normalized && original === "\r" ? "\n" : original;
420
- const special = char === delimiter || char === quote || char === escape || char === "\r" || char === "\n" || end.includes(char);
421
- let escaped = char === escape;
422
- if (special && quoting === 3) escaped = true;
423
- else if (char === quote) {
424
- if (dialect.doublequote === false) escaped = true;
425
- if (!escaped) quoted = true;
426
- } else if (special && !escaped) quoted = true;
427
- if (escaped) {
428
- if (escape === void 0) throw new CsvkitDiagnostic("Error: need to escape, but no escapechar set");
429
- }
430
- }
431
- if (field === "" && delimiter === " " && dialect.skipinitialspace) {
432
- if (quoting === 3 || value === null && (quoting === 4 || quoting === 5))
433
- throw new CsvkitDiagnostic("Error: empty field must be quoted if delimiter is a space and skipinitialspace is true");
434
- quoted = true;
435
- }
436
- if (row.length === 1 && field === "" && !quoted) {
437
- if (quoting === 3 || value === null && (quoting === 4 || quoting === 5)) throw new CsvkitDiagnostic("Error: single empty field record must be quoted");
438
- quoted = true;
438
+ function dateText(p) {
439
+ return `${pad(p.year, 4)}-${pad(p.month)}-${pad(p.day)}`;
440
+ }
441
+ function datetimeText(p) {
442
+ return `${dateText(p)} ${pad(p.hour)}:${pad(p.minute)}:${pad(p.second)}${p.microsecond ? "." + pad(p.microsecond, 6) : ""}${p.offset ?? ""}`;
443
+ }
444
+ function base(year = 1900, month = 1, day = 1) {
445
+ return { year, month, day, hour: 0, minute: 0, second: 0, microsecond: 0 };
446
+ }
447
+ function ordinal(year, month, day) {
448
+ const previous = year - 1;
449
+ let days = previous * 365 + Math.floor(previous / 4) - Math.floor(previous / 100) + Math.floor(previous / 400);
450
+ for (let index = 1; index < month; index++) days += monthDays(year, index);
451
+ return days + day;
452
+ }
453
+ function fromOrdinal(value) {
454
+ if (value < 1 || value > ordinal(9999, 12, 31)) throw new TemporalCastError();
455
+ let year = Math.min(9999, Math.floor((value - 1) / 365.2425) + 1);
456
+ while (ordinal(year, 1, 1) > value) year--;
457
+ while (year < 9999 && ordinal(year + 1, 1, 1) <= value) year++;
458
+ let month = 1;
459
+ while (month < 12 && ordinal(year, month + 1, 1) <= value) month++;
460
+ return base(year, month, value - ordinal(year, month, 1) + 1);
461
+ }
462
+ function offset(text) {
463
+ if (text === "Z") return "+00:00";
464
+ const m = /^([+-])(\d{2}):?(\d{2})(?::?(\d{2})(?:\.(\d{1,6}))?)?$/.exec(text);
465
+ if (!m || Number(m[2]) > 23 || Number(m[3]) > 59 || Number(m[4] ?? 0) > 59) throw new TemporalCastError();
466
+ const seconds = Number(m[4] ?? 0);
467
+ const micros = Number((m[5] ?? "").padEnd(6, "0"));
468
+ if (!Number(m[2]) && !Number(m[3]) && !seconds && !micros) return "+00:00";
469
+ return `${m[1]}${m[2]}:${m[3]}${seconds || micros ? ":" + pad(seconds) : ""}${micros ? "." + pad(micros, 6) : ""}`;
470
+ }
471
+ function strptime(text, format, step) {
472
+ const p = base();
473
+ let position = 0;
474
+ let ampm;
475
+ let twelve = false;
476
+ const seen = /* @__PURE__ */ new Set();
477
+ const consume = (pattern) => {
478
+ const match2 = pattern.exec(text.slice(position));
479
+ if (!match2) throw new TemporalCastError();
480
+ position += match2[0].length;
481
+ return match2[0];
482
+ };
483
+ for (let index = 0; index < format.length; index++) {
484
+ step();
485
+ const char = format[index];
486
+ if (!stripWhitespace(char)) {
487
+ while (index + 1 < format.length && !stripWhitespace(format[index + 1])) {
488
+ step();
489
+ index++;
439
490
  }
440
- if (index) yield delimiter;
441
- if (quoted) yield quote;
442
- for (const original of field) {
443
- admission?.step();
444
- const char = normalized && original === "\r" ? "\n" : original;
445
- const special = char === delimiter || char === quote || char === escape || char === "\r" || char === "\n" || end.includes(char);
446
- if (char === escape || special && quoting === 3 || char === quote && dialect.doublequote === false) yield escape;
447
- else if (char === quote) yield quote;
448
- yield char;
491
+ const start = position;
492
+ while (position < text.length && !stripWhitespace(text[position])) {
493
+ step();
494
+ position++;
449
495
  }
450
- if (quoted) yield quote;
496
+ if (start === position) throw new TemporalCastError();
497
+ continue;
451
498
  }
452
- yield end;
453
- }
454
- if (admission) {
455
- let bytes = 0, codeUnits = 0, high = false;
456
- for (const fragment of fragments()) {
457
- codeUnits += fragment.length;
458
- for (const char of fragment) {
459
- admission.step();
460
- const code = char.codePointAt(0);
461
- bytes += high && code >= 56320 && code <= 57343 ? 1 : code <= 127 ? 1 : code <= 2047 ? 2 : code <= 65535 ? 3 : 4;
462
- high = code >= 55296 && code <= 56319;
499
+ if (char !== "%") {
500
+ if (text[position++] !== char) throw new TemporalCastError();
501
+ continue;
502
+ }
503
+ const directive = format[++index];
504
+ if (!directive) throw new TemporalCastError();
505
+ if (seen.has(directive)) throw new CsvkitBlocked(`strptime duplicate group name '${directive}'`);
506
+ if (directive !== "%") seen.add(directive);
507
+ switch (directive) {
508
+ case "%":
509
+ if (text[position++] !== "%") throw new TemporalCastError();
510
+ break;
511
+ case "Y":
512
+ p.year = Number(consume(/^\d{4}/));
513
+ break;
514
+ case "y": {
515
+ const y = Number(consume(/^\d{2}/));
516
+ p.year = y >= 69 ? 1900 + y : 2e3 + y;
517
+ break;
518
+ }
519
+ case "m":
520
+ p.month = Number(consume(/^(?:1[0-2]|0[1-9]|[1-9])/));
521
+ break;
522
+ case "d":
523
+ p.day = Number(consume(/^(?:3[0-1]|[1-2]\d|0[1-9]|[1-9]| [1-9])/));
524
+ break;
525
+ case "H":
526
+ p.hour = Number(consume(/^(?:2[0-3]|[01]\d|\d| \d)/));
527
+ break;
528
+ case "I":
529
+ p.hour = Number(consume(/^(?:1[0-2]|0[1-9]|[1-9]| [1-9])/));
530
+ twelve = true;
531
+ if (p.hour < 1 || p.hour > 12) throw new TemporalCastError();
532
+ break;
533
+ case "M":
534
+ p.minute = Number(consume(/^(?:[0-5]\d|\d)/));
535
+ break;
536
+ case "S":
537
+ p.second = Number(consume(/^(?:6[01]|[0-5]\d|\d)/));
538
+ break;
539
+ case "f":
540
+ p.microsecond = Number(consume(/^\d{1,6}/).padEnd(6, "0"));
541
+ break;
542
+ case "p":
543
+ ampm = consume(/^(?:am|pm)/i).toLowerCase();
544
+ break;
545
+ case "b":
546
+ case "B": {
547
+ const name = consume(directive === "b" ? /^[a-z]{3}/i : /^[a-z]+/i).toLowerCase();
548
+ p.month = months.findIndex((item) => directive === "b" ? item.slice(0, 3) === name : item === name) + 1;
549
+ if (!p.month) throw new TemporalCastError();
550
+ break;
551
+ }
552
+ case "a":
553
+ case "A": {
554
+ const name = consume(directive === "a" ? /^[a-z]{3}/i : /^[a-z]+/i).toLowerCase();
555
+ if (!weekdays.some((item) => directive === "a" ? item.slice(0, 3) === name : item === name)) throw new TemporalCastError();
556
+ break;
463
557
  }
558
+ case "z":
559
+ p.offset = offset(consume(/^(?:Z|[+-]\d{2}:?\d{2}(?::?\d{2}(?:\.\d{1,6})?)?)/));
560
+ break;
561
+ case "Z":
562
+ consume(/^(?:UTC|GMT)/i);
563
+ break;
564
+ default:
565
+ throw new CsvkitBlocked(`strptime directive %${directive}`);
464
566
  }
465
- admission.admit(bytes, codeUnits);
466
567
  }
467
- let result = "";
468
- for (const fragment of fragments()) result += fragment;
469
- return result;
568
+ if (position !== text.length) throw new TemporalCastError();
569
+ if (twelve) p.hour = p.hour % 12 + (ampm === "pm" ? 12 : 0);
570
+ if (!valid(p)) throw new TemporalCastError();
571
+ return p;
470
572
  }
471
- var Writer = class {
472
- #rows = 0;
473
- #options;
474
- constructor(options = {}) {
475
- dialectCharacters(options);
476
- this.#options = Object.freeze({ ...options });
477
- }
478
- writerow(row) {
479
- const cells = this.#options.lineNumbers ? [this.#rows === 0 ? "line_number" : this.#rows, ...row] : row;
480
- if (this.#options.lineNumbers) this.#rows++;
481
- return writeCsvRow(cells, this.#options);
482
- }
483
- *writerows(rows) {
484
- for (const row of rows) yield this.writerow(row);
485
- }
486
- };
487
- var DictionaryWriter = class {
488
- #rows = 0;
489
- #fields;
490
- #options;
491
- constructor(fieldnames, options = {}) {
492
- const action = options.extrasaction ?? "raise";
493
- if (!["raise", "ignore"].includes(action.toLowerCase()))
494
- throw new CsvkitDiagnostic(`ValueError: extrasaction (${action}) must be 'raise' or 'ignore'`);
495
- dialectCharacters(options);
496
- this.#options = Object.freeze({ ...options, extrasaction: action.toLowerCase() });
497
- this.#fields = Object.freeze(options.lineNumbers ? ["line_number", ...fieldnames] : [...fieldnames]);
498
- }
499
- writeheader() {
500
- return this.writerow(Object.fromEntries(this.#fields.map((field) => [field, field])));
501
- }
502
- writerow(row) {
503
- const values = Object.fromEntries(Object.entries(row).map(([key, value]) => [key, typeof value === "string" ? value.split("\r").join("\n") : value]));
504
- if (this.#options.lineNumbers) {
505
- values.line_number = this.#rows === 0 ? "line_number" : this.#rows;
506
- this.#rows++;
507
- }
508
- if (this.#options.extrasaction === "raise") {
509
- const extra = Object.keys(values).filter((key) => !this.#fields.includes(key));
510
- if (extra.length) throw new CsvkitDiagnostic(`ValueError: dict contains fields not in fieldnames: ${extra.map(repr).join(", ")}`);
511
- }
512
- return writeCsvRow(this.#fields.map((field) => Object.hasOwn(values, field) ? values[field] : this.#options.restval === void 0 ? "" : this.#options.restval), this.#options, false);
573
+ function implicitDate(text, source, step) {
574
+ step();
575
+ let normalized = "";
576
+ for (const char of text) {
577
+ step();
578
+ const code = char.codePointAt(0);
579
+ if (integerWhitespace.includes(code) || code >= 28 && code <= 31) {
580
+ if (!normalized.endsWith(" ")) normalized += " ";
581
+ } else normalized += char;
513
582
  }
514
- *writerows(rows) {
515
- for (const row of rows) yield this.writerow(row);
583
+ text = normalized;
584
+ let m = /^(\d{4})-(\d{1,2})-(\d{1,2})$/.exec(text);
585
+ if (m) {
586
+ const first = Number(m[1]);
587
+ let year = first <= 31 ? Number(m[3]) : first;
588
+ year += year < 50 ? 2e3 : year < 100 ? 1900 : 0;
589
+ return base(year, first <= 31 ? first : Number(m[2]), first <= 31 ? Number(m[2]) : Number(m[3]));
516
590
  }
517
- };
518
-
519
- // packages/safe-bash-command-csvkit/src/diagnostics/index.ts
520
- init_buffer();
521
-
522
- // packages/safe-bash-command-csvkit/src/python-text.ts
523
- init_buffer();
524
-
525
- // packages/safe-bash-command-csvkit/src/unicode-lower-profile.ts
526
- init_buffer();
527
- var lowerMappings = [[65, "a"], [66, "b"], [67, "c"], [68, "d"], [69, "e"], [70, "f"], [71, "g"], [72, "h"], [73, "i"], [74, "j"], [75, "k"], [76, "l"], [77, "m"], [78, "n"], [79, "o"], [80, "p"], [81, "q"], [82, "r"], [83, "s"], [84, "t"], [85, "u"], [86, "v"], [87, "w"], [88, "x"], [89, "y"], [90, "z"], [192, "\xE0"], [193, "\xE1"], [194, "\xE2"], [195, "\xE3"], [196, "\xE4"], [197, "\xE5"], [198, "\xE6"], [199, "\xE7"], [200, "\xE8"], [201, "\xE9"], [202, "\xEA"], [203, "\xEB"], [204, "\xEC"], [205, "\xED"], [206, "\xEE"], [207, "\xEF"], [208, "\xF0"], [209, "\xF1"], [210, "\xF2"], [211, "\xF3"], [212, "\xF4"], [213, "\xF5"], [214, "\xF6"], [216, "\xF8"], [217, "\xF9"], [218, "\xFA"], [219, "\xFB"], [220, "\xFC"], [221, "\xFD"], [222, "\xFE"], [256, "\u0101"], [258, "\u0103"], [260, "\u0105"], [262, "\u0107"], [264, "\u0109"], [266, "\u010B"], [268, "\u010D"], [270, "\u010F"], [272, "\u0111"], [274, "\u0113"], [276, "\u0115"], [278, "\u0117"], [280, "\u0119"], [282, "\u011B"], [284, "\u011D"], [286, "\u011F"], [288, "\u0121"], [290, "\u0123"], [292, "\u0125"], [294, "\u0127"], [296, "\u0129"], [298, "\u012B"], [300, "\u012D"], [302, "\u012F"], [304, "i\u0307"], [306, "\u0133"], [308, "\u0135"], [310, "\u0137"], [313, "\u013A"], [315, "\u013C"], [317, "\u013E"], [319, "\u0140"], [321, "\u0142"], [323, "\u0144"], [325, "\u0146"], [327, "\u0148"], [330, "\u014B"], [332, "\u014D"], [334, "\u014F"], [336, "\u0151"], [338, "\u0153"], [340, "\u0155"], [342, "\u0157"], [344, "\u0159"], [346, "\u015B"], [348, "\u015D"], [350, "\u015F"], [352, "\u0161"], [354, "\u0163"], [356, "\u0165"], [358, "\u0167"], [360, "\u0169"], [362, "\u016B"], [364, "\u016D"], [366, "\u016F"], [368, "\u0171"], [370, "\u0173"], [372, "\u0175"], [374, "\u0177"], [376, "\xFF"], [377, "\u017A"], [379, "\u017C"], [381, "\u017E"], [385, "\u0253"], [386, "\u0183"], [388, "\u0185"], [390, "\u0254"], [391, "\u0188"], [393, "\u0256"], [394, "\u0257"], [395, "\u018C"], [398, "\u01DD"], [399, "\u0259"], [400, "\u025B"], [401, "\u0192"], [403, "\u0260"], [404, "\u0263"], [406, "\u0269"], [407, "\u0268"], [408, "\u0199"], [412, "\u026F"], [413, "\u0272"], [415, "\u0275"], [416, "\u01A1"], [418, "\u01A3"], [420, "\u01A5"], [422, "\u0280"], [423, "\u01A8"], [425, "\u0283"], [428, "\u01AD"], [430, "\u0288"], [431, "\u01B0"], [433, "\u028A"], [434, "\u028B"], [435, "\u01B4"], [437, "\u01B6"], [439, "\u0292"], [440, "\u01B9"], [444, "\u01BD"], [452, "\u01C6"], [453, "\u01C6"], [455, "\u01C9"], [456, "\u01C9"], [458, "\u01CC"], [459, "\u01CC"], [461, "\u01CE"], [463, "\u01D0"], [465, "\u01D2"], [467, "\u01D4"], [469, "\u01D6"], [471, "\u01D8"], [473, "\u01DA"], [475, "\u01DC"], [478, "\u01DF"], [480, "\u01E1"], [482, "\u01E3"], [484, "\u01E5"], [486, "\u01E7"], [488, "\u01E9"], [490, "\u01EB"], [492, "\u01ED"], [494, "\u01EF"], [497, "\u01F3"], [498, "\u01F3"], [500, "\u01F5"], [502, "\u0195"], [503, "\u01BF"], [504, "\u01F9"], [506, "\u01FB"], [508, "\u01FD"], [510, "\u01FF"], [512, "\u0201"], [514, "\u0203"], [516, "\u0205"], [518, "\u0207"], [520, "\u0209"], [522, "\u020B"], [524, "\u020D"], [526, "\u020F"], [528, "\u0211"], [530, "\u0213"], [532, "\u0215"], [534, "\u0217"], [536, "\u0219"], [538, "\u021B"], [540, "\u021D"], [542, "\u021F"], [544, "\u019E"], [546, "\u0223"], [548, "\u0225"], [550, "\u0227"], [552, "\u0229"], [554, "\u022B"], [556, "\u022D"], [558, "\u022F"], [560, "\u0231"], [562, "\u0233"], [570, "\u2C65"], [571, "\u023C"], [573, "\u019A"], [574, "\u2C66"], [577, "\u0242"], [579, "\u0180"], [580, "\u0289"], [581, "\u028C"], [582, "\u0247"], [584, "\u0249"], [586, "\u024B"], [588, "\u024D"], [590, "\u024F"], [880, "\u0371"], [882, "\u0373"], [886, "\u0377"], [895, "\u03F3"], [902, "\u03AC"], [904, "\u03AD"], [905, "\u03AE"], [906, "\u03AF"], [908, "\u03CC"], [910, "\u03CD"], [911, "\u03CE"], [913, "\u03B1"], [914, "\u03B2"], [915, "\u03B3"], [916, "\u03B4"], [917, "\u03B5"], [918, "\u03B6"], [919, "\u03B7"], [920, "\u03B8"], [921, "\u03B9"], [922, "\u03BA"], [923, "\u03BB"], [924, "\u03BC"], [925, "\u03BD"], [926, "\u03BE"], [927, "\u03BF"], [928, "\u03C0"], [929, "\u03C1"], [931, "\u03C3"], [932, "\u03C4"], [933, "\u03C5"], [934, "\u03C6"], [935, "\u03C7"], [936, "\u03C8"], [937, "\u03C9"], [938, "\u03CA"], [939, "\u03CB"], [975, "\u03D7"], [984, "\u03D9"], [986, "\u03DB"], [988, "\u03DD"], [990, "\u03DF"], [992, "\u03E1"], [994, "\u03E3"], [996, "\u03E5"], [998, "\u03E7"], [1e3, "\u03E9"], [1002, "\u03EB"], [1004, "\u03ED"], [1006, "\u03EF"], [1012, "\u03B8"], [1015, "\u03F8"], [1017, "\u03F2"], [1018, "\u03FB"], [1021, "\u037B"], [1022, "\u037C"], [1023, "\u037D"], [1024, "\u0450"], [1025, "\u0451"], [1026, "\u0452"], [1027, "\u0453"], [1028, "\u0454"], [1029, "\u0455"], [1030, "\u0456"], [1031, "\u0457"], [1032, "\u0458"], [1033, "\u0459"], [1034, "\u045A"], [1035, "\u045B"], [1036, "\u045C"], [1037, "\u045D"], [1038, "\u045E"], [1039, "\u045F"], [1040, "\u0430"], [1041, "\u0431"], [1042, "\u0432"], [1043, "\u0433"], [1044, "\u0434"], [1045, "\u0435"], [1046, "\u0436"], [1047, "\u0437"], [1048, "\u0438"], [1049, "\u0439"], [1050, "\u043A"], [1051, "\u043B"], [1052, "\u043C"], [1053, "\u043D"], [1054, "\u043E"], [1055, "\u043F"], [1056, "\u0440"], [1057, "\u0441"], [1058, "\u0442"], [1059, "\u0443"], [1060, "\u0444"], [1061, "\u0445"], [1062, "\u0446"], [1063, "\u0447"], [1064, "\u0448"], [1065, "\u0449"], [1066, "\u044A"], [1067, "\u044B"], [1068, "\u044C"], [1069, "\u044D"], [1070, "\u044E"], [1071, "\u044F"], [1120, "\u0461"], [1122, "\u0463"], [1124, "\u0465"], [1126, "\u0467"], [1128, "\u0469"], [1130, "\u046B"], [1132, "\u046D"], [1134, "\u046F"], [1136, "\u0471"], [1138, "\u0473"], [1140, "\u0475"], [1142, "\u0477"], [1144, "\u0479"], [1146, "\u047B"], [1148, "\u047D"], [1150, "\u047F"], [1152, "\u0481"], [1162, "\u048B"], [1164, "\u048D"], [1166, "\u048F"], [1168, "\u0491"], [1170, "\u0493"], [1172, "\u0495"], [1174, "\u0497"], [1176, "\u0499"], [1178, "\u049B"], [1180, "\u049D"], [1182, "\u049F"], [1184, "\u04A1"], [1186, "\u04A3"], [1188, "\u04A5"], [1190, "\u04A7"], [1192, "\u04A9"], [1194, "\u04AB"], [1196, "\u04AD"], [1198, "\u04AF"], [1200, "\u04B1"], [1202, "\u04B3"], [1204, "\u04B5"], [1206, "\u04B7"], [1208, "\u04B9"], [1210, "\u04BB"], [1212, "\u04BD"], [1214, "\u04BF"], [1216, "\u04CF"], [1217, "\u04C2"], [1219, "\u04C4"], [1221, "\u04C6"], [1223, "\u04C8"], [1225, "\u04CA"], [1227, "\u04CC"], [1229, "\u04CE"], [1232, "\u04D1"], [1234, "\u04D3"], [1236, "\u04D5"], [1238, "\u04D7"], [1240, "\u04D9"], [1242, "\u04DB"], [1244, "\u04DD"], [1246, "\u04DF"], [1248, "\u04E1"], [1250, "\u04E3"], [1252, "\u04E5"], [1254, "\u04E7"], [1256, "\u04E9"], [1258, "\u04EB"], [1260, "\u04ED"], [1262, "\u04EF"], [1264, "\u04F1"], [1266, "\u04F3"], [1268, "\u04F5"], [1270, "\u04F7"], [1272, "\u04F9"], [1274, "\u04FB"], [1276, "\u04FD"], [1278, "\u04FF"], [1280, "\u0501"], [1282, "\u0503"], [1284, "\u0505"], [1286, "\u0507"], [1288, "\u0509"], [1290, "\u050B"], [1292, "\u050D"], [1294, "\u050F"], [1296, "\u0511"], [1298, "\u0513"], [1300, "\u0515"], [1302, "\u0517"], [1304, "\u0519"], [1306, "\u051B"], [1308, "\u051D"], [1310, "\u051F"], [1312, "\u0521"], [1314, "\u0523"], [1316, "\u0525"], [1318, "\u0527"], [1320, "\u0529"], [1322, "\u052B"], [1324, "\u052D"], [1326, "\u052F"], [1329, "\u0561"], [1330, "\u0562"], [1331, "\u0563"], [1332, "\u0564"], [1333, "\u0565"], [1334, "\u0566"], [1335, "\u0567"], [1336, "\u0568"], [1337, "\u0569"], [1338, "\u056A"], [1339, "\u056B"], [1340, "\u056C"], [1341, "\u056D"], [1342, "\u056E"], [1343, "\u056F"], [1344, "\u0570"], [1345, "\u0571"], [1346, "\u0572"], [1347, "\u0573"], [1348, "\u0574"], [1349, "\u0575"], [1350, "\u0576"], [1351, "\u0577"], [1352, "\u0578"], [1353, "\u0579"], [1354, "\u057A"], [1355, "\u057B"], [1356, "\u057C"], [1357, "\u057D"], [1358, "\u057E"], [1359, "\u057F"], [1360, "\u0580"], [1361, "\u0581"], [1362, "\u0582"], [1363, "\u0583"], [1364, "\u0584"], [1365, "\u0585"], [1366, "\u0586"], [4256, "\u2D00"], [4257, "\u2D01"], [4258, "\u2D02"], [4259, "\u2D03"], [4260, "\u2D04"], [4261, "\u2D05"], [4262, "\u2D06"], [4263, "\u2D07"], [4264, "\u2D08"], [4265, "\u2D09"], [4266, "\u2D0A"], [4267, "\u2D0B"], [4268, "\u2D0C"], [4269, "\u2D0D"], [4270, "\u2D0E"], [4271, "\u2D0F"], [4272, "\u2D10"], [4273, "\u2D11"], [4274, "\u2D12"], [4275, "\u2D13"], [4276, "\u2D14"], [4277, "\u2D15"], [4278, "\u2D16"], [4279, "\u2D17"], [4280, "\u2D18"], [4281, "\u2D19"], [4282, "\u2D1A"], [4283, "\u2D1B"], [4284, "\u2D1C"], [4285, "\u2D1D"], [4286, "\u2D1E"], [4287, "\u2D1F"], [4288, "\u2D20"], [4289, "\u2D21"], [4290, "\u2D22"], [4291, "\u2D23"], [4292, "\u2D24"], [4293, "\u2D25"], [4295, "\u2D27"], [4301, "\u2D2D"], [5024, "\uAB70"], [5025, "\uAB71"], [5026, "\uAB72"], [5027, "\uAB73"], [5028, "\uAB74"], [5029, "\uAB75"], [5030, "\uAB76"], [5031, "\uAB77"], [5032, "\uAB78"], [5033, "\uAB79"], [5034, "\uAB7A"], [5035, "\uAB7B"], [5036, "\uAB7C"], [5037, "\uAB7D"], [5038, "\uAB7E"], [5039, "\uAB7F"], [5040, "\uAB80"], [5041, "\uAB81"], [5042, "\uAB82"], [5043, "\uAB83"], [5044, "\uAB84"], [5045, "\uAB85"], [5046, "\uAB86"], [5047, "\uAB87"], [5048, "\uAB88"], [5049, "\uAB89"], [5050, "\uAB8A"], [5051, "\uAB8B"], [5052, "\uAB8C"], [5053, "\uAB8D"], [5054, "\uAB8E"], [5055, "\uAB8F"], [5056, "\uAB90"], [5057, "\uAB91"], [5058, "\uAB92"], [5059, "\uAB93"], [5060, "\uAB94"], [5061, "\uAB95"], [5062, "\uAB96"], [5063, "\uAB97"], [5064, "\uAB98"], [5065, "\uAB99"], [5066, "\uAB9A"], [5067, "\uAB9B"], [5068, "\uAB9C"], [5069, "\uAB9D"], [5070, "\uAB9E"], [5071, "\uAB9F"], [5072, "\uABA0"], [5073, "\uABA1"], [5074, "\uABA2"], [5075, "\uABA3"], [5076, "\uABA4"], [5077, "\uABA5"], [5078, "\uABA6"], [5079, "\uABA7"], [5080, "\uABA8"], [5081, "\uABA9"], [5082, "\uABAA"], [5083, "\uABAB"], [5084, "\uABAC"], [5085, "\uABAD"], [5086, "\uABAE"], [5087, "\uABAF"], [5088, "\uABB0"], [5089, "\uABB1"], [5090, "\uABB2"], [5091, "\uABB3"], [5092, "\uABB4"], [5093, "\uABB5"], [5094, "\uABB6"], [5095, "\uABB7"], [5096, "\uABB8"], [5097, "\uABB9"], [5098, "\uABBA"], [5099, "\uABBB"], [5100, "\uABBC"], [5101, "\uABBD"], [5102, "\uABBE"], [5103, "\uABBF"], [5104, "\u13F8"], [5105, "\u13F9"], [5106, "\u13FA"], [5107, "\u13FB"], [5108, "\u13FC"], [5109, "\u13FD"], [7305, "\u1C8A"], [7312, "\u10D0"], [7313, "\u10D1"], [7314, "\u10D2"], [7315, "\u10D3"], [7316, "\u10D4"], [7317, "\u10D5"], [7318, "\u10D6"], [7319, "\u10D7"], [7320, "\u10D8"], [7321, "\u10D9"], [7322, "\u10DA"], [7323, "\u10DB"], [7324, "\u10DC"], [7325, "\u10DD"], [7326, "\u10DE"], [7327, "\u10DF"], [7328, "\u10E0"], [7329, "\u10E1"], [7330, "\u10E2"], [7331, "\u10E3"], [7332, "\u10E4"], [7333, "\u10E5"], [7334, "\u10E6"], [7335, "\u10E7"], [7336, "\u10E8"], [7337, "\u10E9"], [7338, "\u10EA"], [7339, "\u10EB"], [7340, "\u10EC"], [7341, "\u10ED"], [7342, "\u10EE"], [7343, "\u10EF"], [7344, "\u10F0"], [7345, "\u10F1"], [7346, "\u10F2"], [7347, "\u10F3"], [7348, "\u10F4"], [7349, "\u10F5"], [7350, "\u10F6"], [7351, "\u10F7"], [7352, "\u10F8"], [7353, "\u10F9"], [7354, "\u10FA"], [7357, "\u10FD"], [7358, "\u10FE"], [7359, "\u10FF"], [7680, "\u1E01"], [7682, "\u1E03"], [7684, "\u1E05"], [7686, "\u1E07"], [7688, "\u1E09"], [7690, "\u1E0B"], [7692, "\u1E0D"], [7694, "\u1E0F"], [7696, "\u1E11"], [7698, "\u1E13"], [7700, "\u1E15"], [7702, "\u1E17"], [7704, "\u1E19"], [7706, "\u1E1B"], [7708, "\u1E1D"], [7710, "\u1E1F"], [7712, "\u1E21"], [7714, "\u1E23"], [7716, "\u1E25"], [7718, "\u1E27"], [7720, "\u1E29"], [7722, "\u1E2B"], [7724, "\u1E2D"], [7726, "\u1E2F"], [7728, "\u1E31"], [7730, "\u1E33"], [7732, "\u1E35"], [7734, "\u1E37"], [7736, "\u1E39"], [7738, "\u1E3B"], [7740, "\u1E3D"], [7742, "\u1E3F"], [7744, "\u1E41"], [7746, "\u1E43"], [7748, "\u1E45"], [7750, "\u1E47"], [7752, "\u1E49"], [7754, "\u1E4B"], [7756, "\u1E4D"], [7758, "\u1E4F"], [7760, "\u1E51"], [7762, "\u1E53"], [7764, "\u1E55"], [7766, "\u1E57"], [7768, "\u1E59"], [7770, "\u1E5B"], [7772, "\u1E5D"], [7774, "\u1E5F"], [7776, "\u1E61"], [7778, "\u1E63"], [7780, "\u1E65"], [7782, "\u1E67"], [7784, "\u1E69"], [7786, "\u1E6B"], [7788, "\u1E6D"], [7790, "\u1E6F"], [7792, "\u1E71"], [7794, "\u1E73"], [7796, "\u1E75"], [7798, "\u1E77"], [7800, "\u1E79"], [7802, "\u1E7B"], [7804, "\u1E7D"], [7806, "\u1E7F"], [7808, "\u1E81"], [7810, "\u1E83"], [7812, "\u1E85"], [7814, "\u1E87"], [7816, "\u1E89"], [7818, "\u1E8B"], [7820, "\u1E8D"], [7822, "\u1E8F"], [7824, "\u1E91"], [7826, "\u1E93"], [7828, "\u1E95"], [7838, "\xDF"], [7840, "\u1EA1"], [7842, "\u1EA3"], [7844, "\u1EA5"], [7846, "\u1EA7"], [7848, "\u1EA9"], [7850, "\u1EAB"], [7852, "\u1EAD"], [7854, "\u1EAF"], [7856, "\u1EB1"], [7858, "\u1EB3"], [7860, "\u1EB5"], [7862, "\u1EB7"], [7864, "\u1EB9"], [7866, "\u1EBB"], [7868, "\u1EBD"], [7870, "\u1EBF"], [7872, "\u1EC1"], [7874, "\u1EC3"], [7876, "\u1EC5"], [7878, "\u1EC7"], [7880, "\u1EC9"], [7882, "\u1ECB"], [7884, "\u1ECD"], [7886, "\u1ECF"], [7888, "\u1ED1"], [7890, "\u1ED3"], [7892, "\u1ED5"], [7894, "\u1ED7"], [7896, "\u1ED9"], [7898, "\u1EDB"], [7900, "\u1EDD"], [7902, "\u1EDF"], [7904, "\u1EE1"], [7906, "\u1EE3"], [7908, "\u1EE5"], [7910, "\u1EE7"], [7912, "\u1EE9"], [7914, "\u1EEB"], [7916, "\u1EED"], [7918, "\u1EEF"], [7920, "\u1EF1"], [7922, "\u1EF3"], [7924, "\u1EF5"], [7926, "\u1EF7"], [7928, "\u1EF9"], [7930, "\u1EFB"], [7932, "\u1EFD"], [7934, "\u1EFF"], [7944, "\u1F00"], [7945, "\u1F01"], [7946, "\u1F02"], [7947, "\u1F03"], [7948, "\u1F04"], [7949, "\u1F05"], [7950, "\u1F06"], [7951, "\u1F07"], [7960, "\u1F10"], [7961, "\u1F11"], [7962, "\u1F12"], [7963, "\u1F13"], [7964, "\u1F14"], [7965, "\u1F15"], [7976, "\u1F20"], [7977, "\u1F21"], [7978, "\u1F22"], [7979, "\u1F23"], [7980, "\u1F24"], [7981, "\u1F25"], [7982, "\u1F26"], [7983, "\u1F27"], [7992, "\u1F30"], [7993, "\u1F31"], [7994, "\u1F32"], [7995, "\u1F33"], [7996, "\u1F34"], [7997, "\u1F35"], [7998, "\u1F36"], [7999, "\u1F37"], [8008, "\u1F40"], [8009, "\u1F41"], [8010, "\u1F42"], [8011, "\u1F43"], [8012, "\u1F44"], [8013, "\u1F45"], [8025, "\u1F51"], [8027, "\u1F53"], [8029, "\u1F55"], [8031, "\u1F57"], [8040, "\u1F60"], [8041, "\u1F61"], [8042, "\u1F62"], [8043, "\u1F63"], [8044, "\u1F64"], [8045, "\u1F65"], [8046, "\u1F66"], [8047, "\u1F67"], [8072, "\u1F80"], [8073, "\u1F81"], [8074, "\u1F82"], [8075, "\u1F83"], [8076, "\u1F84"], [8077, "\u1F85"], [8078, "\u1F86"], [8079, "\u1F87"], [8088, "\u1F90"], [8089, "\u1F91"], [8090, "\u1F92"], [8091, "\u1F93"], [8092, "\u1F94"], [8093, "\u1F95"], [8094, "\u1F96"], [8095, "\u1F97"], [8104, "\u1FA0"], [8105, "\u1FA1"], [8106, "\u1FA2"], [8107, "\u1FA3"], [8108, "\u1FA4"], [8109, "\u1FA5"], [8110, "\u1FA6"], [8111, "\u1FA7"], [8120, "\u1FB0"], [8121, "\u1FB1"], [8122, "\u1F70"], [8123, "\u1F71"], [8124, "\u1FB3"], [8136, "\u1F72"], [8137, "\u1F73"], [8138, "\u1F74"], [8139, "\u1F75"], [8140, "\u1FC3"], [8152, "\u1FD0"], [8153, "\u1FD1"], [8154, "\u1F76"], [8155, "\u1F77"], [8168, "\u1FE0"], [8169, "\u1FE1"], [8170, "\u1F7A"], [8171, "\u1F7B"], [8172, "\u1FE5"], [8184, "\u1F78"], [8185, "\u1F79"], [8186, "\u1F7C"], [8187, "\u1F7D"], [8188, "\u1FF3"], [8486, "\u03C9"], [8490, "k"], [8491, "\xE5"], [8498, "\u214E"], [8544, "\u2170"], [8545, "\u2171"], [8546, "\u2172"], [8547, "\u2173"], [8548, "\u2174"], [8549, "\u2175"], [8550, "\u2176"], [8551, "\u2177"], [8552, "\u2178"], [8553, "\u2179"], [8554, "\u217A"], [8555, "\u217B"], [8556, "\u217C"], [8557, "\u217D"], [8558, "\u217E"], [8559, "\u217F"], [8579, "\u2184"], [9398, "\u24D0"], [9399, "\u24D1"], [9400, "\u24D2"], [9401, "\u24D3"], [9402, "\u24D4"], [9403, "\u24D5"], [9404, "\u24D6"], [9405, "\u24D7"], [9406, "\u24D8"], [9407, "\u24D9"], [9408, "\u24DA"], [9409, "\u24DB"], [9410, "\u24DC"], [9411, "\u24DD"], [9412, "\u24DE"], [9413, "\u24DF"], [9414, "\u24E0"], [9415, "\u24E1"], [9416, "\u24E2"], [9417, "\u24E3"], [9418, "\u24E4"], [9419, "\u24E5"], [9420, "\u24E6"], [9421, "\u24E7"], [9422, "\u24E8"], [9423, "\u24E9"], [11264, "\u2C30"], [11265, "\u2C31"], [11266, "\u2C32"], [11267, "\u2C33"], [11268, "\u2C34"], [11269, "\u2C35"], [11270, "\u2C36"], [11271, "\u2C37"], [11272, "\u2C38"], [11273, "\u2C39"], [11274, "\u2C3A"], [11275, "\u2C3B"], [11276, "\u2C3C"], [11277, "\u2C3D"], [11278, "\u2C3E"], [11279, "\u2C3F"], [11280, "\u2C40"], [11281, "\u2C41"], [11282, "\u2C42"], [11283, "\u2C43"], [11284, "\u2C44"], [11285, "\u2C45"], [11286, "\u2C46"], [11287, "\u2C47"], [11288, "\u2C48"], [11289, "\u2C49"], [11290, "\u2C4A"], [11291, "\u2C4B"], [11292, "\u2C4C"], [11293, "\u2C4D"], [11294, "\u2C4E"], [11295, "\u2C4F"], [11296, "\u2C50"], [11297, "\u2C51"], [11298, "\u2C52"], [11299, "\u2C53"], [11300, "\u2C54"], [11301, "\u2C55"], [11302, "\u2C56"], [11303, "\u2C57"], [11304, "\u2C58"], [11305, "\u2C59"], [11306, "\u2C5A"], [11307, "\u2C5B"], [11308, "\u2C5C"], [11309, "\u2C5D"], [11310, "\u2C5E"], [11311, "\u2C5F"], [11360, "\u2C61"], [11362, "\u026B"], [11363, "\u1D7D"], [11364, "\u027D"], [11367, "\u2C68"], [11369, "\u2C6A"], [11371, "\u2C6C"], [11373, "\u0251"], [11374, "\u0271"], [11375, "\u0250"], [11376, "\u0252"], [11378, "\u2C73"], [11381, "\u2C76"], [11390, "\u023F"], [11391, "\u0240"], [11392, "\u2C81"], [11394, "\u2C83"], [11396, "\u2C85"], [11398, "\u2C87"], [11400, "\u2C89"], [11402, "\u2C8B"], [11404, "\u2C8D"], [11406, "\u2C8F"], [11408, "\u2C91"], [11410, "\u2C93"], [11412, "\u2C95"], [11414, "\u2C97"], [11416, "\u2C99"], [11418, "\u2C9B"], [11420, "\u2C9D"], [11422, "\u2C9F"], [11424, "\u2CA1"], [11426, "\u2CA3"], [11428, "\u2CA5"], [11430, "\u2CA7"], [11432, "\u2CA9"], [11434, "\u2CAB"], [11436, "\u2CAD"], [11438, "\u2CAF"], [11440, "\u2CB1"], [11442, "\u2CB3"], [11444, "\u2CB5"], [11446, "\u2CB7"], [11448, "\u2CB9"], [11450, "\u2CBB"], [11452, "\u2CBD"], [11454, "\u2CBF"], [11456, "\u2CC1"], [11458, "\u2CC3"], [11460, "\u2CC5"], [11462, "\u2CC7"], [11464, "\u2CC9"], [11466, "\u2CCB"], [11468, "\u2CCD"], [11470, "\u2CCF"], [11472, "\u2CD1"], [11474, "\u2CD3"], [11476, "\u2CD5"], [11478, "\u2CD7"], [11480, "\u2CD9"], [11482, "\u2CDB"], [11484, "\u2CDD"], [11486, "\u2CDF"], [11488, "\u2CE1"], [11490, "\u2CE3"], [11499, "\u2CEC"], [11501, "\u2CEE"], [11506, "\u2CF3"], [42560, "\uA641"], [42562, "\uA643"], [42564, "\uA645"], [42566, "\uA647"], [42568, "\uA649"], [42570, "\uA64B"], [42572, "\uA64D"], [42574, "\uA64F"], [42576, "\uA651"], [42578, "\uA653"], [42580, "\uA655"], [42582, "\uA657"], [42584, "\uA659"], [42586, "\uA65B"], [42588, "\uA65D"], [42590, "\uA65F"], [42592, "\uA661"], [42594, "\uA663"], [42596, "\uA665"], [42598, "\uA667"], [42600, "\uA669"], [42602, "\uA66B"], [42604, "\uA66D"], [42624, "\uA681"], [42626, "\uA683"], [42628, "\uA685"], [42630, "\uA687"], [42632, "\uA689"], [42634, "\uA68B"], [42636, "\uA68D"], [42638, "\uA68F"], [42640, "\uA691"], [42642, "\uA693"], [42644, "\uA695"], [42646, "\uA697"], [42648, "\uA699"], [42650, "\uA69B"], [42786, "\uA723"], [42788, "\uA725"], [42790, "\uA727"], [42792, "\uA729"], [42794, "\uA72B"], [42796, "\uA72D"], [42798, "\uA72F"], [42802, "\uA733"], [42804, "\uA735"], [42806, "\uA737"], [42808, "\uA739"], [42810, "\uA73B"], [42812, "\uA73D"], [42814, "\uA73F"], [42816, "\uA741"], [42818, "\uA743"], [42820, "\uA745"], [42822, "\uA747"], [42824, "\uA749"], [42826, "\uA74B"], [42828, "\uA74D"], [42830, "\uA74F"], [42832, "\uA751"], [42834, "\uA753"], [42836, "\uA755"], [42838, "\uA757"], [42840, "\uA759"], [42842, "\uA75B"], [42844, "\uA75D"], [42846, "\uA75F"], [42848, "\uA761"], [42850, "\uA763"], [42852, "\uA765"], [42854, "\uA767"], [42856, "\uA769"], [42858, "\uA76B"], [42860, "\uA76D"], [42862, "\uA76F"], [42873, "\uA77A"], [42875, "\uA77C"], [42877, "\u1D79"], [42878, "\uA77F"], [42880, "\uA781"], [42882, "\uA783"], [42884, "\uA785"], [42886, "\uA787"], [42891, "\uA78C"], [42893, "\u0265"], [42896, "\uA791"], [42898, "\uA793"], [42902, "\uA797"], [42904, "\uA799"], [42906, "\uA79B"], [42908, "\uA79D"], [42910, "\uA79F"], [42912, "\uA7A1"], [42914, "\uA7A3"], [42916, "\uA7A5"], [42918, "\uA7A7"], [42920, "\uA7A9"], [42922, "\u0266"], [42923, "\u025C"], [42924, "\u0261"], [42925, "\u026C"], [42926, "\u026A"], [42928, "\u029E"], [42929, "\u0287"], [42930, "\u029D"], [42931, "\uAB53"], [42932, "\uA7B5"], [42934, "\uA7B7"], [42936, "\uA7B9"], [42938, "\uA7BB"], [42940, "\uA7BD"], [42942, "\uA7BF"], [42944, "\uA7C1"], [42946, "\uA7C3"], [42948, "\uA794"], [42949, "\u0282"], [42950, "\u1D8E"], [42951, "\uA7C8"], [42953, "\uA7CA"], [42955, "\u0264"], [42956, "\uA7CD"], [42960, "\uA7D1"], [42966, "\uA7D7"], [42968, "\uA7D9"], [42970, "\uA7DB"], [42972, "\u019B"], [42997, "\uA7F6"], [65313, "\uFF41"], [65314, "\uFF42"], [65315, "\uFF43"], [65316, "\uFF44"], [65317, "\uFF45"], [65318, "\uFF46"], [65319, "\uFF47"], [65320, "\uFF48"], [65321, "\uFF49"], [65322, "\uFF4A"], [65323, "\uFF4B"], [65324, "\uFF4C"], [65325, "\uFF4D"], [65326, "\uFF4E"], [65327, "\uFF4F"], [65328, "\uFF50"], [65329, "\uFF51"], [65330, "\uFF52"], [65331, "\uFF53"], [65332, "\uFF54"], [65333, "\uFF55"], [65334, "\uFF56"], [65335, "\uFF57"], [65336, "\uFF58"], [65337, "\uFF59"], [65338, "\uFF5A"], [66560, "\u{10428}"], [66561, "\u{10429}"], [66562, "\u{1042A}"], [66563, "\u{1042B}"], [66564, "\u{1042C}"], [66565, "\u{1042D}"], [66566, "\u{1042E}"], [66567, "\u{1042F}"], [66568, "\u{10430}"], [66569, "\u{10431}"], [66570, "\u{10432}"], [66571, "\u{10433}"], [66572, "\u{10434}"], [66573, "\u{10435}"], [66574, "\u{10436}"], [66575, "\u{10437}"], [66576, "\u{10438}"], [66577, "\u{10439}"], [66578, "\u{1043A}"], [66579, "\u{1043B}"], [66580, "\u{1043C}"], [66581, "\u{1043D}"], [66582, "\u{1043E}"], [66583, "\u{1043F}"], [66584, "\u{10440}"], [66585, "\u{10441}"], [66586, "\u{10442}"], [66587, "\u{10443}"], [66588, "\u{10444}"], [66589, "\u{10445}"], [66590, "\u{10446}"], [66591, "\u{10447}"], [66592, "\u{10448}"], [66593, "\u{10449}"], [66594, "\u{1044A}"], [66595, "\u{1044B}"], [66596, "\u{1044C}"], [66597, "\u{1044D}"], [66598, "\u{1044E}"], [66599, "\u{1044F}"], [66736, "\u{104D8}"], [66737, "\u{104D9}"], [66738, "\u{104DA}"], [66739, "\u{104DB}"], [66740, "\u{104DC}"], [66741, "\u{104DD}"], [66742, "\u{104DE}"], [66743, "\u{104DF}"], [66744, "\u{104E0}"], [66745, "\u{104E1}"], [66746, "\u{104E2}"], [66747, "\u{104E3}"], [66748, "\u{104E4}"], [66749, "\u{104E5}"], [66750, "\u{104E6}"], [66751, "\u{104E7}"], [66752, "\u{104E8}"], [66753, "\u{104E9}"], [66754, "\u{104EA}"], [66755, "\u{104EB}"], [66756, "\u{104EC}"], [66757, "\u{104ED}"], [66758, "\u{104EE}"], [66759, "\u{104EF}"], [66760, "\u{104F0}"], [66761, "\u{104F1}"], [66762, "\u{104F2}"], [66763, "\u{104F3}"], [66764, "\u{104F4}"], [66765, "\u{104F5}"], [66766, "\u{104F6}"], [66767, "\u{104F7}"], [66768, "\u{104F8}"], [66769, "\u{104F9}"], [66770, "\u{104FA}"], [66771, "\u{104FB}"], [66928, "\u{10597}"], [66929, "\u{10598}"], [66930, "\u{10599}"], [66931, "\u{1059A}"], [66932, "\u{1059B}"], [66933, "\u{1059C}"], [66934, "\u{1059D}"], [66935, "\u{1059E}"], [66936, "\u{1059F}"], [66937, "\u{105A0}"], [66938, "\u{105A1}"], [66940, "\u{105A3}"], [66941, "\u{105A4}"], [66942, "\u{105A5}"], [66943, "\u{105A6}"], [66944, "\u{105A7}"], [66945, "\u{105A8}"], [66946, "\u{105A9}"], [66947, "\u{105AA}"], [66948, "\u{105AB}"], [66949, "\u{105AC}"], [66950, "\u{105AD}"], [66951, "\u{105AE}"], [66952, "\u{105AF}"], [66953, "\u{105B0}"], [66954, "\u{105B1}"], [66956, "\u{105B3}"], [66957, "\u{105B4}"], [66958, "\u{105B5}"], [66959, "\u{105B6}"], [66960, "\u{105B7}"], [66961, "\u{105B8}"], [66962, "\u{105B9}"], [66964, "\u{105BB}"], [66965, "\u{105BC}"], [68736, "\u{10CC0}"], [68737, "\u{10CC1}"], [68738, "\u{10CC2}"], [68739, "\u{10CC3}"], [68740, "\u{10CC4}"], [68741, "\u{10CC5}"], [68742, "\u{10CC6}"], [68743, "\u{10CC7}"], [68744, "\u{10CC8}"], [68745, "\u{10CC9}"], [68746, "\u{10CCA}"], [68747, "\u{10CCB}"], [68748, "\u{10CCC}"], [68749, "\u{10CCD}"], [68750, "\u{10CCE}"], [68751, "\u{10CCF}"], [68752, "\u{10CD0}"], [68753, "\u{10CD1}"], [68754, "\u{10CD2}"], [68755, "\u{10CD3}"], [68756, "\u{10CD4}"], [68757, "\u{10CD5}"], [68758, "\u{10CD6}"], [68759, "\u{10CD7}"], [68760, "\u{10CD8}"], [68761, "\u{10CD9}"], [68762, "\u{10CDA}"], [68763, "\u{10CDB}"], [68764, "\u{10CDC}"], [68765, "\u{10CDD}"], [68766, "\u{10CDE}"], [68767, "\u{10CDF}"], [68768, "\u{10CE0}"], [68769, "\u{10CE1}"], [68770, "\u{10CE2}"], [68771, "\u{10CE3}"], [68772, "\u{10CE4}"], [68773, "\u{10CE5}"], [68774, "\u{10CE6}"], [68775, "\u{10CE7}"], [68776, "\u{10CE8}"], [68777, "\u{10CE9}"], [68778, "\u{10CEA}"], [68779, "\u{10CEB}"], [68780, "\u{10CEC}"], [68781, "\u{10CED}"], [68782, "\u{10CEE}"], [68783, "\u{10CEF}"], [68784, "\u{10CF0}"], [68785, "\u{10CF1}"], [68786, "\u{10CF2}"], [68944, "\u{10D70}"], [68945, "\u{10D71}"], [68946, "\u{10D72}"], [68947, "\u{10D73}"], [68948, "\u{10D74}"], [68949, "\u{10D75}"], [68950, "\u{10D76}"], [68951, "\u{10D77}"], [68952, "\u{10D78}"], [68953, "\u{10D79}"], [68954, "\u{10D7A}"], [68955, "\u{10D7B}"], [68956, "\u{10D7C}"], [68957, "\u{10D7D}"], [68958, "\u{10D7E}"], [68959, "\u{10D7F}"], [68960, "\u{10D80}"], [68961, "\u{10D81}"], [68962, "\u{10D82}"], [68963, "\u{10D83}"], [68964, "\u{10D84}"], [68965, "\u{10D85}"], [71840, "\u{118C0}"], [71841, "\u{118C1}"], [71842, "\u{118C2}"], [71843, "\u{118C3}"], [71844, "\u{118C4}"], [71845, "\u{118C5}"], [71846, "\u{118C6}"], [71847, "\u{118C7}"], [71848, "\u{118C8}"], [71849, "\u{118C9}"], [71850, "\u{118CA}"], [71851, "\u{118CB}"], [71852, "\u{118CC}"], [71853, "\u{118CD}"], [71854, "\u{118CE}"], [71855, "\u{118CF}"], [71856, "\u{118D0}"], [71857, "\u{118D1}"], [71858, "\u{118D2}"], [71859, "\u{118D3}"], [71860, "\u{118D4}"], [71861, "\u{118D5}"], [71862, "\u{118D6}"], [71863, "\u{118D7}"], [71864, "\u{118D8}"], [71865, "\u{118D9}"], [71866, "\u{118DA}"], [71867, "\u{118DB}"], [71868, "\u{118DC}"], [71869, "\u{118DD}"], [71870, "\u{118DE}"], [71871, "\u{118DF}"], [93760, "\u{16E60}"], [93761, "\u{16E61}"], [93762, "\u{16E62}"], [93763, "\u{16E63}"], [93764, "\u{16E64}"], [93765, "\u{16E65}"], [93766, "\u{16E66}"], [93767, "\u{16E67}"], [93768, "\u{16E68}"], [93769, "\u{16E69}"], [93770, "\u{16E6A}"], [93771, "\u{16E6B}"], [93772, "\u{16E6C}"], [93773, "\u{16E6D}"], [93774, "\u{16E6E}"], [93775, "\u{16E6F}"], [93776, "\u{16E70}"], [93777, "\u{16E71}"], [93778, "\u{16E72}"], [93779, "\u{16E73}"], [93780, "\u{16E74}"], [93781, "\u{16E75}"], [93782, "\u{16E76}"], [93783, "\u{16E77}"], [93784, "\u{16E78}"], [93785, "\u{16E79}"], [93786, "\u{16E7A}"], [93787, "\u{16E7B}"], [93788, "\u{16E7C}"], [93789, "\u{16E7D}"], [93790, "\u{16E7E}"], [93791, "\u{16E7F}"], [125184, "\u{1E922}"], [125185, "\u{1E923}"], [125186, "\u{1E924}"], [125187, "\u{1E925}"], [125188, "\u{1E926}"], [125189, "\u{1E927}"], [125190, "\u{1E928}"], [125191, "\u{1E929}"], [125192, "\u{1E92A}"], [125193, "\u{1E92B}"], [125194, "\u{1E92C}"], [125195, "\u{1E92D}"], [125196, "\u{1E92E}"], [125197, "\u{1E92F}"], [125198, "\u{1E930}"], [125199, "\u{1E931}"], [125200, "\u{1E932}"], [125201, "\u{1E933}"], [125202, "\u{1E934}"], [125203, "\u{1E935}"], [125204, "\u{1E936}"], [125205, "\u{1E937}"], [125206, "\u{1E938}"], [125207, "\u{1E939}"], [125208, "\u{1E93A}"], [125209, "\u{1E93B}"], [125210, "\u{1E93C}"], [125211, "\u{1E93D}"], [125212, "\u{1E93E}"], [125213, "\u{1E93F}"], [125214, "\u{1E940}"], [125215, "\u{1E941}"], [125216, "\u{1E942}"], [125217, "\u{1E943}"]];
528
- var sigmaCased = [[65, 90], [97, 122], [170, 170], [181, 181], [186, 186], [192, 214], [216, 246], [248, 442], [444, 447], [452, 659], [661, 687], [880, 883], [886, 887], [891, 893], [895, 895], [902, 902], [904, 906], [908, 908], [910, 929], [931, 1013], [1015, 1153], [1162, 1327], [1329, 1366], [1376, 1416], [4256, 4293], [4295, 4295], [4301, 4301], [4304, 4346], [4349, 4351], [5024, 5109], [5112, 5117], [7296, 7306], [7312, 7354], [7357, 7359], [7424, 7467], [7531, 7543], [7545, 7578], [7680, 7957], [7960, 7965], [7968, 8005], [8008, 8013], [8016, 8023], [8025, 8025], [8027, 8027], [8029, 8029], [8031, 8061], [8064, 8116], [8118, 8124], [8126, 8126], [8130, 8132], [8134, 8140], [8144, 8147], [8150, 8155], [8160, 8172], [8178, 8180], [8182, 8188], [8450, 8450], [8455, 8455], [8458, 8467], [8469, 8469], [8473, 8477], [8484, 8484], [8486, 8486], [8488, 8488], [8490, 8493], [8495, 8500], [8505, 8505], [8508, 8511], [8517, 8521], [8526, 8526], [8544, 8575], [8579, 8580], [9398, 9449], [11264, 11387], [11390, 11492], [11499, 11502], [11506, 11507], [11520, 11557], [11559, 11559], [11565, 11565], [42560, 42605], [42624, 42651], [42786, 42863], [42865, 42887], [42891, 42894], [42896, 42957], [42960, 42961], [42963, 42963], [42965, 42972], [42997, 42998], [43002, 43002], [43824, 43866], [43872, 43880], [43888, 43967], [64256, 64262], [64275, 64279], [65313, 65338], [65345, 65370], [66560, 66639], [66736, 66771], [66776, 66811], [66928, 66938], [66940, 66954], [66956, 66962], [66964, 66965], [66967, 66977], [66979, 66993], [66995, 67001], [67003, 67004], [68736, 68786], [68800, 68850], [68944, 68965], [68976, 68997], [71840, 71903], [93760, 93823], [119808, 119892], [119894, 119964], [119966, 119967], [119970, 119970], [119973, 119974], [119977, 119980], [119982, 119993], [119995, 119995], [119997, 120003], [120005, 120069], [120071, 120074], [120077, 120084], [120086, 120092], [120094, 120121], [120123, 120126], [120128, 120132], [120134, 120134], [120138, 120144], [120146, 120485], [120488, 120512], [120514, 120538], [120540, 120570], [120572, 120596], [120598, 120628], [120630, 120654], [120656, 120686], [120688, 120712], [120714, 120744], [120746, 120770], [120772, 120779], [122624, 122633], [122635, 122654], [122661, 122666], [125184, 125251], [127280, 127305], [127312, 127337], [127344, 127369]];
529
- var sigmaIgnorable = [[39, 39], [46, 46], [58, 58], [94, 94], [96, 96], [168, 168], [173, 173], [175, 175], [180, 180], [183, 184], [688, 879], [884, 885], [890, 890], [900, 901], [903, 903], [1155, 1161], [1369, 1369], [1375, 1375], [1425, 1469], [1471, 1471], [1473, 1474], [1476, 1477], [1479, 1479], [1524, 1524], [1536, 1541], [1552, 1562], [1564, 1564], [1600, 1600], [1611, 1631], [1648, 1648], [1750, 1757], [1759, 1768], [1770, 1773], [1807, 1807], [1809, 1809], [1840, 1866], [1958, 1968], [2027, 2037], [2042, 2042], [2045, 2045], [2070, 2093], [2137, 2139], [2184, 2184], [2192, 2193], [2199, 2207], [2249, 2306], [2362, 2362], [2364, 2364], [2369, 2376], [2381, 2381], [2385, 2391], [2402, 2403], [2417, 2417], [2433, 2433], [2492, 2492], [2497, 2500], [2509, 2509], [2530, 2531], [2558, 2558], [2561, 2562], [2620, 2620], [2625, 2626], [2631, 2632], [2635, 2637], [2641, 2641], [2672, 2673], [2677, 2677], [2689, 2690], [2748, 2748], [2753, 2757], [2759, 2760], [2765, 2765], [2786, 2787], [2810, 2815], [2817, 2817], [2876, 2876], [2879, 2879], [2881, 2884], [2893, 2893], [2901, 2902], [2914, 2915], [2946, 2946], [3008, 3008], [3021, 3021], [3072, 3072], [3076, 3076], [3132, 3132], [3134, 3136], [3142, 3144], [3146, 3149], [3157, 3158], [3170, 3171], [3201, 3201], [3260, 3260], [3263, 3263], [3270, 3270], [3276, 3277], [3298, 3299], [3328, 3329], [3387, 3388], [3393, 3396], [3405, 3405], [3426, 3427], [3457, 3457], [3530, 3530], [3538, 3540], [3542, 3542], [3633, 3633], [3636, 3642], [3654, 3662], [3761, 3761], [3764, 3772], [3782, 3782], [3784, 3790], [3864, 3865], [3893, 3893], [3895, 3895], [3897, 3897], [3953, 3966], [3968, 3972], [3974, 3975], [3981, 3991], [3993, 4028], [4038, 4038], [4141, 4144], [4146, 4151], [4153, 4154], [4157, 4158], [4184, 4185], [4190, 4192], [4209, 4212], [4226, 4226], [4229, 4230], [4237, 4237], [4253, 4253], [4348, 4348], [4957, 4959], [5906, 5908], [5938, 5939], [5970, 5971], [6002, 6003], [6068, 6069], [6071, 6077], [6086, 6086], [6089, 6099], [6103, 6103], [6109, 6109], [6155, 6159], [6211, 6211], [6277, 6278], [6313, 6313], [6432, 6434], [6439, 6440], [6450, 6450], [6457, 6459], [6679, 6680], [6683, 6683], [6742, 6742], [6744, 6750], [6752, 6752], [6754, 6754], [6757, 6764], [6771, 6780], [6783, 6783], [6823, 6823], [6832, 6862], [6912, 6915], [6964, 6964], [6966, 6970], [6972, 6972], [6978, 6978], [7019, 7027], [7040, 7041], [7074, 7077], [7080, 7081], [7083, 7085], [7142, 7142], [7144, 7145], [7149, 7149], [7151, 7153], [7212, 7219], [7222, 7223], [7288, 7293], [7376, 7378], [7380, 7392], [7394, 7400], [7405, 7405], [7412, 7412], [7416, 7417], [7468, 7530], [7544, 7544], [7579, 7679], [8125, 8125], [8127, 8129], [8141, 8143], [8157, 8159], [8173, 8175], [8189, 8190], [8203, 8207], [8216, 8217], [8228, 8228], [8231, 8231], [8234, 8238], [8288, 8292], [8294, 8303], [8305, 8305], [8319, 8319], [8336, 8348], [8400, 8432], [11388, 11389], [11503, 11505], [11631, 11631], [11647, 11647], [11744, 11775], [11823, 11823], [12293, 12293], [12330, 12333], [12337, 12341], [12347, 12347], [12441, 12446], [12540, 12542], [40981, 40981], [42232, 42237], [42508, 42508], [42607, 42610], [42612, 42621], [42623, 42623], [42652, 42655], [42736, 42737], [42752, 42785], [42864, 42864], [42888, 42890], [42994, 42996], [43e3, 43001], [43010, 43010], [43014, 43014], [43019, 43019], [43045, 43046], [43052, 43052], [43204, 43205], [43232, 43249], [43263, 43263], [43302, 43309], [43335, 43345], [43392, 43394], [43443, 43443], [43446, 43449], [43452, 43453], [43471, 43471], [43493, 43494], [43561, 43566], [43569, 43570], [43573, 43574], [43587, 43587], [43596, 43596], [43632, 43632], [43644, 43644], [43696, 43696], [43698, 43700], [43703, 43704], [43710, 43711], [43713, 43713], [43741, 43741], [43756, 43757], [43763, 43764], [43766, 43766], [43867, 43871], [43881, 43883], [44005, 44005], [44008, 44008], [44013, 44013], [64286, 64286], [64434, 64450], [65024, 65039], [65043, 65043], [65056, 65071], [65106, 65106], [65109, 65109], [65279, 65279], [65287, 65287], [65294, 65294], [65306, 65306], [65342, 65342], [65344, 65344], [65392, 65392], [65438, 65439], [65507, 65507], [65529, 65531], [66045, 66045], [66272, 66272], [66422, 66426], [67456, 67461], [67463, 67504], [67506, 67514], [68097, 68099], [68101, 68102], [68108, 68111], [68152, 68154], [68159, 68159], [68325, 68326], [68900, 68903], [68942, 68942], [68969, 68973], [68975, 68975], [69291, 69292], [69372, 69375], [69446, 69456], [69506, 69509], [69633, 69633], [69688, 69702], [69744, 69744], [69747, 69748], [69759, 69761], [69811, 69814], [69817, 69818], [69821, 69821], [69826, 69826], [69837, 69837], [69888, 69890], [69927, 69931], [69933, 69940], [70003, 70003], [70016, 70017], [70070, 70078], [70089, 70092], [70095, 70095], [70191, 70193], [70196, 70196], [70198, 70199], [70206, 70206], [70209, 70209], [70367, 70367], [70371, 70378], [70400, 70401], [70459, 70460], [70464, 70464], [70502, 70508], [70512, 70516], [70587, 70592], [70606, 70606], [70608, 70608], [70610, 70610], [70625, 70626], [70712, 70719], [70722, 70724], [70726, 70726], [70750, 70750], [70835, 70840], [70842, 70842], [70847, 70848], [70850, 70851], [71090, 71093], [71100, 71101], [71103, 71104], [71132, 71133], [71219, 71226], [71229, 71229], [71231, 71232], [71339, 71339], [71341, 71341], [71344, 71349], [71351, 71351], [71453, 71453], [71455, 71455], [71458, 71461], [71463, 71467], [71727, 71735], [71737, 71738], [71995, 71996], [71998, 71998], [72003, 72003], [72148, 72151], [72154, 72155], [72160, 72160], [72193, 72202], [72243, 72248], [72251, 72254], [72263, 72263], [72273, 72278], [72281, 72283], [72330, 72342], [72344, 72345], [72752, 72758], [72760, 72765], [72767, 72767], [72850, 72871], [72874, 72880], [72882, 72883], [72885, 72886], [73009, 73014], [73018, 73018], [73020, 73021], [73023, 73029], [73031, 73031], [73104, 73105], [73109, 73109], [73111, 73111], [73459, 73460], [73472, 73473], [73526, 73530], [73536, 73536], [73538, 73538], [73562, 73562], [78896, 78912], [78919, 78933], [90398, 90409], [90413, 90415], [92912, 92916], [92976, 92982], [92992, 92995], [93504, 93506], [93547, 93548], [94031, 94031], [94095, 94111], [94176, 94177], [94179, 94180], [110576, 110579], [110581, 110587], [110589, 110590], [113821, 113822], [113824, 113827], [118528, 118573], [118576, 118598], [119143, 119145], [119155, 119170], [119173, 119179], [119210, 119213], [119362, 119364], [121344, 121398], [121403, 121452], [121461, 121461], [121476, 121476], [121499, 121503], [121505, 121519], [122880, 122886], [122888, 122904], [122907, 122913], [122915, 122916], [122918, 122922], [122928, 122989], [123023, 123023], [123184, 123197], [123566, 123566], [123628, 123631], [124139, 124143], [124398, 124399], [125136, 125142], [125252, 125259], [127995, 127999], [917505, 917505], [917536, 917631], [917760, 917999]];
530
-
531
- // packages/safe-bash-command-csvkit/src/unicode-upper-profile.ts
532
- init_buffer();
533
- var upperMappings = [[97, "A"], [98, "B"], [99, "C"], [100, "D"], [101, "E"], [102, "F"], [103, "G"], [104, "H"], [105, "I"], [106, "J"], [107, "K"], [108, "L"], [109, "M"], [110, "N"], [111, "O"], [112, "P"], [113, "Q"], [114, "R"], [115, "S"], [116, "T"], [117, "U"], [118, "V"], [119, "W"], [120, "X"], [121, "Y"], [122, "Z"], [181, "\u039C"], [223, "SS"], [224, "\xC0"], [225, "\xC1"], [226, "\xC2"], [227, "\xC3"], [228, "\xC4"], [229, "\xC5"], [230, "\xC6"], [231, "\xC7"], [232, "\xC8"], [233, "\xC9"], [234, "\xCA"], [235, "\xCB"], [236, "\xCC"], [237, "\xCD"], [238, "\xCE"], [239, "\xCF"], [240, "\xD0"], [241, "\xD1"], [242, "\xD2"], [243, "\xD3"], [244, "\xD4"], [245, "\xD5"], [246, "\xD6"], [248, "\xD8"], [249, "\xD9"], [250, "\xDA"], [251, "\xDB"], [252, "\xDC"], [253, "\xDD"], [254, "\xDE"], [255, "\u0178"], [257, "\u0100"], [259, "\u0102"], [261, "\u0104"], [263, "\u0106"], [265, "\u0108"], [267, "\u010A"], [269, "\u010C"], [271, "\u010E"], [273, "\u0110"], [275, "\u0112"], [277, "\u0114"], [279, "\u0116"], [281, "\u0118"], [283, "\u011A"], [285, "\u011C"], [287, "\u011E"], [289, "\u0120"], [291, "\u0122"], [293, "\u0124"], [295, "\u0126"], [297, "\u0128"], [299, "\u012A"], [301, "\u012C"], [303, "\u012E"], [305, "I"], [307, "\u0132"], [309, "\u0134"], [311, "\u0136"], [314, "\u0139"], [316, "\u013B"], [318, "\u013D"], [320, "\u013F"], [322, "\u0141"], [324, "\u0143"], [326, "\u0145"], [328, "\u0147"], [329, "\u02BCN"], [331, "\u014A"], [333, "\u014C"], [335, "\u014E"], [337, "\u0150"], [339, "\u0152"], [341, "\u0154"], [343, "\u0156"], [345, "\u0158"], [347, "\u015A"], [349, "\u015C"], [351, "\u015E"], [353, "\u0160"], [355, "\u0162"], [357, "\u0164"], [359, "\u0166"], [361, "\u0168"], [363, "\u016A"], [365, "\u016C"], [367, "\u016E"], [369, "\u0170"], [371, "\u0172"], [373, "\u0174"], [375, "\u0176"], [378, "\u0179"], [380, "\u017B"], [382, "\u017D"], [383, "S"], [384, "\u0243"], [387, "\u0182"], [389, "\u0184"], [392, "\u0187"], [396, "\u018B"], [402, "\u0191"], [405, "\u01F6"], [409, "\u0198"], [410, "\u023D"], [411, "\uA7DC"], [414, "\u0220"], [417, "\u01A0"], [419, "\u01A2"], [421, "\u01A4"], [424, "\u01A7"], [429, "\u01AC"], [432, "\u01AF"], [436, "\u01B3"], [438, "\u01B5"], [441, "\u01B8"], [445, "\u01BC"], [447, "\u01F7"], [453, "\u01C4"], [454, "\u01C4"], [456, "\u01C7"], [457, "\u01C7"], [459, "\u01CA"], [460, "\u01CA"], [462, "\u01CD"], [464, "\u01CF"], [466, "\u01D1"], [468, "\u01D3"], [470, "\u01D5"], [472, "\u01D7"], [474, "\u01D9"], [476, "\u01DB"], [477, "\u018E"], [479, "\u01DE"], [481, "\u01E0"], [483, "\u01E2"], [485, "\u01E4"], [487, "\u01E6"], [489, "\u01E8"], [491, "\u01EA"], [493, "\u01EC"], [495, "\u01EE"], [496, "J\u030C"], [498, "\u01F1"], [499, "\u01F1"], [501, "\u01F4"], [505, "\u01F8"], [507, "\u01FA"], [509, "\u01FC"], [511, "\u01FE"], [513, "\u0200"], [515, "\u0202"], [517, "\u0204"], [519, "\u0206"], [521, "\u0208"], [523, "\u020A"], [525, "\u020C"], [527, "\u020E"], [529, "\u0210"], [531, "\u0212"], [533, "\u0214"], [535, "\u0216"], [537, "\u0218"], [539, "\u021A"], [541, "\u021C"], [543, "\u021E"], [547, "\u0222"], [549, "\u0224"], [551, "\u0226"], [553, "\u0228"], [555, "\u022A"], [557, "\u022C"], [559, "\u022E"], [561, "\u0230"], [563, "\u0232"], [572, "\u023B"], [575, "\u2C7E"], [576, "\u2C7F"], [578, "\u0241"], [583, "\u0246"], [585, "\u0248"], [587, "\u024A"], [589, "\u024C"], [591, "\u024E"], [592, "\u2C6F"], [593, "\u2C6D"], [594, "\u2C70"], [595, "\u0181"], [596, "\u0186"], [598, "\u0189"], [599, "\u018A"], [601, "\u018F"], [603, "\u0190"], [604, "\uA7AB"], [608, "\u0193"], [609, "\uA7AC"], [611, "\u0194"], [612, "\uA7CB"], [613, "\uA78D"], [614, "\uA7AA"], [616, "\u0197"], [617, "\u0196"], [618, "\uA7AE"], [619, "\u2C62"], [620, "\uA7AD"], [623, "\u019C"], [625, "\u2C6E"], [626, "\u019D"], [629, "\u019F"], [637, "\u2C64"], [640, "\u01A6"], [642, "\uA7C5"], [643, "\u01A9"], [647, "\uA7B1"], [648, "\u01AE"], [649, "\u0244"], [650, "\u01B1"], [651, "\u01B2"], [652, "\u0245"], [658, "\u01B7"], [669, "\uA7B2"], [670, "\uA7B0"], [837, "\u0399"], [881, "\u0370"], [883, "\u0372"], [887, "\u0376"], [891, "\u03FD"], [892, "\u03FE"], [893, "\u03FF"], [912, "\u0399\u0308\u0301"], [940, "\u0386"], [941, "\u0388"], [942, "\u0389"], [943, "\u038A"], [944, "\u03A5\u0308\u0301"], [945, "\u0391"], [946, "\u0392"], [947, "\u0393"], [948, "\u0394"], [949, "\u0395"], [950, "\u0396"], [951, "\u0397"], [952, "\u0398"], [953, "\u0399"], [954, "\u039A"], [955, "\u039B"], [956, "\u039C"], [957, "\u039D"], [958, "\u039E"], [959, "\u039F"], [960, "\u03A0"], [961, "\u03A1"], [962, "\u03A3"], [963, "\u03A3"], [964, "\u03A4"], [965, "\u03A5"], [966, "\u03A6"], [967, "\u03A7"], [968, "\u03A8"], [969, "\u03A9"], [970, "\u03AA"], [971, "\u03AB"], [972, "\u038C"], [973, "\u038E"], [974, "\u038F"], [976, "\u0392"], [977, "\u0398"], [981, "\u03A6"], [982, "\u03A0"], [983, "\u03CF"], [985, "\u03D8"], [987, "\u03DA"], [989, "\u03DC"], [991, "\u03DE"], [993, "\u03E0"], [995, "\u03E2"], [997, "\u03E4"], [999, "\u03E6"], [1001, "\u03E8"], [1003, "\u03EA"], [1005, "\u03EC"], [1007, "\u03EE"], [1008, "\u039A"], [1009, "\u03A1"], [1010, "\u03F9"], [1011, "\u037F"], [1013, "\u0395"], [1016, "\u03F7"], [1019, "\u03FA"], [1072, "\u0410"], [1073, "\u0411"], [1074, "\u0412"], [1075, "\u0413"], [1076, "\u0414"], [1077, "\u0415"], [1078, "\u0416"], [1079, "\u0417"], [1080, "\u0418"], [1081, "\u0419"], [1082, "\u041A"], [1083, "\u041B"], [1084, "\u041C"], [1085, "\u041D"], [1086, "\u041E"], [1087, "\u041F"], [1088, "\u0420"], [1089, "\u0421"], [1090, "\u0422"], [1091, "\u0423"], [1092, "\u0424"], [1093, "\u0425"], [1094, "\u0426"], [1095, "\u0427"], [1096, "\u0428"], [1097, "\u0429"], [1098, "\u042A"], [1099, "\u042B"], [1100, "\u042C"], [1101, "\u042D"], [1102, "\u042E"], [1103, "\u042F"], [1104, "\u0400"], [1105, "\u0401"], [1106, "\u0402"], [1107, "\u0403"], [1108, "\u0404"], [1109, "\u0405"], [1110, "\u0406"], [1111, "\u0407"], [1112, "\u0408"], [1113, "\u0409"], [1114, "\u040A"], [1115, "\u040B"], [1116, "\u040C"], [1117, "\u040D"], [1118, "\u040E"], [1119, "\u040F"], [1121, "\u0460"], [1123, "\u0462"], [1125, "\u0464"], [1127, "\u0466"], [1129, "\u0468"], [1131, "\u046A"], [1133, "\u046C"], [1135, "\u046E"], [1137, "\u0470"], [1139, "\u0472"], [1141, "\u0474"], [1143, "\u0476"], [1145, "\u0478"], [1147, "\u047A"], [1149, "\u047C"], [1151, "\u047E"], [1153, "\u0480"], [1163, "\u048A"], [1165, "\u048C"], [1167, "\u048E"], [1169, "\u0490"], [1171, "\u0492"], [1173, "\u0494"], [1175, "\u0496"], [1177, "\u0498"], [1179, "\u049A"], [1181, "\u049C"], [1183, "\u049E"], [1185, "\u04A0"], [1187, "\u04A2"], [1189, "\u04A4"], [1191, "\u04A6"], [1193, "\u04A8"], [1195, "\u04AA"], [1197, "\u04AC"], [1199, "\u04AE"], [1201, "\u04B0"], [1203, "\u04B2"], [1205, "\u04B4"], [1207, "\u04B6"], [1209, "\u04B8"], [1211, "\u04BA"], [1213, "\u04BC"], [1215, "\u04BE"], [1218, "\u04C1"], [1220, "\u04C3"], [1222, "\u04C5"], [1224, "\u04C7"], [1226, "\u04C9"], [1228, "\u04CB"], [1230, "\u04CD"], [1231, "\u04C0"], [1233, "\u04D0"], [1235, "\u04D2"], [1237, "\u04D4"], [1239, "\u04D6"], [1241, "\u04D8"], [1243, "\u04DA"], [1245, "\u04DC"], [1247, "\u04DE"], [1249, "\u04E0"], [1251, "\u04E2"], [1253, "\u04E4"], [1255, "\u04E6"], [1257, "\u04E8"], [1259, "\u04EA"], [1261, "\u04EC"], [1263, "\u04EE"], [1265, "\u04F0"], [1267, "\u04F2"], [1269, "\u04F4"], [1271, "\u04F6"], [1273, "\u04F8"], [1275, "\u04FA"], [1277, "\u04FC"], [1279, "\u04FE"], [1281, "\u0500"], [1283, "\u0502"], [1285, "\u0504"], [1287, "\u0506"], [1289, "\u0508"], [1291, "\u050A"], [1293, "\u050C"], [1295, "\u050E"], [1297, "\u0510"], [1299, "\u0512"], [1301, "\u0514"], [1303, "\u0516"], [1305, "\u0518"], [1307, "\u051A"], [1309, "\u051C"], [1311, "\u051E"], [1313, "\u0520"], [1315, "\u0522"], [1317, "\u0524"], [1319, "\u0526"], [1321, "\u0528"], [1323, "\u052A"], [1325, "\u052C"], [1327, "\u052E"], [1377, "\u0531"], [1378, "\u0532"], [1379, "\u0533"], [1380, "\u0534"], [1381, "\u0535"], [1382, "\u0536"], [1383, "\u0537"], [1384, "\u0538"], [1385, "\u0539"], [1386, "\u053A"], [1387, "\u053B"], [1388, "\u053C"], [1389, "\u053D"], [1390, "\u053E"], [1391, "\u053F"], [1392, "\u0540"], [1393, "\u0541"], [1394, "\u0542"], [1395, "\u0543"], [1396, "\u0544"], [1397, "\u0545"], [1398, "\u0546"], [1399, "\u0547"], [1400, "\u0548"], [1401, "\u0549"], [1402, "\u054A"], [1403, "\u054B"], [1404, "\u054C"], [1405, "\u054D"], [1406, "\u054E"], [1407, "\u054F"], [1408, "\u0550"], [1409, "\u0551"], [1410, "\u0552"], [1411, "\u0553"], [1412, "\u0554"], [1413, "\u0555"], [1414, "\u0556"], [1415, "\u0535\u0552"], [4304, "\u1C90"], [4305, "\u1C91"], [4306, "\u1C92"], [4307, "\u1C93"], [4308, "\u1C94"], [4309, "\u1C95"], [4310, "\u1C96"], [4311, "\u1C97"], [4312, "\u1C98"], [4313, "\u1C99"], [4314, "\u1C9A"], [4315, "\u1C9B"], [4316, "\u1C9C"], [4317, "\u1C9D"], [4318, "\u1C9E"], [4319, "\u1C9F"], [4320, "\u1CA0"], [4321, "\u1CA1"], [4322, "\u1CA2"], [4323, "\u1CA3"], [4324, "\u1CA4"], [4325, "\u1CA5"], [4326, "\u1CA6"], [4327, "\u1CA7"], [4328, "\u1CA8"], [4329, "\u1CA9"], [4330, "\u1CAA"], [4331, "\u1CAB"], [4332, "\u1CAC"], [4333, "\u1CAD"], [4334, "\u1CAE"], [4335, "\u1CAF"], [4336, "\u1CB0"], [4337, "\u1CB1"], [4338, "\u1CB2"], [4339, "\u1CB3"], [4340, "\u1CB4"], [4341, "\u1CB5"], [4342, "\u1CB6"], [4343, "\u1CB7"], [4344, "\u1CB8"], [4345, "\u1CB9"], [4346, "\u1CBA"], [4349, "\u1CBD"], [4350, "\u1CBE"], [4351, "\u1CBF"], [5112, "\u13F0"], [5113, "\u13F1"], [5114, "\u13F2"], [5115, "\u13F3"], [5116, "\u13F4"], [5117, "\u13F5"], [7296, "\u0412"], [7297, "\u0414"], [7298, "\u041E"], [7299, "\u0421"], [7300, "\u0422"], [7301, "\u0422"], [7302, "\u042A"], [7303, "\u0462"], [7304, "\uA64A"], [7306, "\u1C89"], [7545, "\uA77D"], [7549, "\u2C63"], [7566, "\uA7C6"], [7681, "\u1E00"], [7683, "\u1E02"], [7685, "\u1E04"], [7687, "\u1E06"], [7689, "\u1E08"], [7691, "\u1E0A"], [7693, "\u1E0C"], [7695, "\u1E0E"], [7697, "\u1E10"], [7699, "\u1E12"], [7701, "\u1E14"], [7703, "\u1E16"], [7705, "\u1E18"], [7707, "\u1E1A"], [7709, "\u1E1C"], [7711, "\u1E1E"], [7713, "\u1E20"], [7715, "\u1E22"], [7717, "\u1E24"], [7719, "\u1E26"], [7721, "\u1E28"], [7723, "\u1E2A"], [7725, "\u1E2C"], [7727, "\u1E2E"], [7729, "\u1E30"], [7731, "\u1E32"], [7733, "\u1E34"], [7735, "\u1E36"], [7737, "\u1E38"], [7739, "\u1E3A"], [7741, "\u1E3C"], [7743, "\u1E3E"], [7745, "\u1E40"], [7747, "\u1E42"], [7749, "\u1E44"], [7751, "\u1E46"], [7753, "\u1E48"], [7755, "\u1E4A"], [7757, "\u1E4C"], [7759, "\u1E4E"], [7761, "\u1E50"], [7763, "\u1E52"], [7765, "\u1E54"], [7767, "\u1E56"], [7769, "\u1E58"], [7771, "\u1E5A"], [7773, "\u1E5C"], [7775, "\u1E5E"], [7777, "\u1E60"], [7779, "\u1E62"], [7781, "\u1E64"], [7783, "\u1E66"], [7785, "\u1E68"], [7787, "\u1E6A"], [7789, "\u1E6C"], [7791, "\u1E6E"], [7793, "\u1E70"], [7795, "\u1E72"], [7797, "\u1E74"], [7799, "\u1E76"], [7801, "\u1E78"], [7803, "\u1E7A"], [7805, "\u1E7C"], [7807, "\u1E7E"], [7809, "\u1E80"], [7811, "\u1E82"], [7813, "\u1E84"], [7815, "\u1E86"], [7817, "\u1E88"], [7819, "\u1E8A"], [7821, "\u1E8C"], [7823, "\u1E8E"], [7825, "\u1E90"], [7827, "\u1E92"], [7829, "\u1E94"], [7830, "H\u0331"], [7831, "T\u0308"], [7832, "W\u030A"], [7833, "Y\u030A"], [7834, "A\u02BE"], [7835, "\u1E60"], [7841, "\u1EA0"], [7843, "\u1EA2"], [7845, "\u1EA4"], [7847, "\u1EA6"], [7849, "\u1EA8"], [7851, "\u1EAA"], [7853, "\u1EAC"], [7855, "\u1EAE"], [7857, "\u1EB0"], [7859, "\u1EB2"], [7861, "\u1EB4"], [7863, "\u1EB6"], [7865, "\u1EB8"], [7867, "\u1EBA"], [7869, "\u1EBC"], [7871, "\u1EBE"], [7873, "\u1EC0"], [7875, "\u1EC2"], [7877, "\u1EC4"], [7879, "\u1EC6"], [7881, "\u1EC8"], [7883, "\u1ECA"], [7885, "\u1ECC"], [7887, "\u1ECE"], [7889, "\u1ED0"], [7891, "\u1ED2"], [7893, "\u1ED4"], [7895, "\u1ED6"], [7897, "\u1ED8"], [7899, "\u1EDA"], [7901, "\u1EDC"], [7903, "\u1EDE"], [7905, "\u1EE0"], [7907, "\u1EE2"], [7909, "\u1EE4"], [7911, "\u1EE6"], [7913, "\u1EE8"], [7915, "\u1EEA"], [7917, "\u1EEC"], [7919, "\u1EEE"], [7921, "\u1EF0"], [7923, "\u1EF2"], [7925, "\u1EF4"], [7927, "\u1EF6"], [7929, "\u1EF8"], [7931, "\u1EFA"], [7933, "\u1EFC"], [7935, "\u1EFE"], [7936, "\u1F08"], [7937, "\u1F09"], [7938, "\u1F0A"], [7939, "\u1F0B"], [7940, "\u1F0C"], [7941, "\u1F0D"], [7942, "\u1F0E"], [7943, "\u1F0F"], [7952, "\u1F18"], [7953, "\u1F19"], [7954, "\u1F1A"], [7955, "\u1F1B"], [7956, "\u1F1C"], [7957, "\u1F1D"], [7968, "\u1F28"], [7969, "\u1F29"], [7970, "\u1F2A"], [7971, "\u1F2B"], [7972, "\u1F2C"], [7973, "\u1F2D"], [7974, "\u1F2E"], [7975, "\u1F2F"], [7984, "\u1F38"], [7985, "\u1F39"], [7986, "\u1F3A"], [7987, "\u1F3B"], [7988, "\u1F3C"], [7989, "\u1F3D"], [7990, "\u1F3E"], [7991, "\u1F3F"], [8e3, "\u1F48"], [8001, "\u1F49"], [8002, "\u1F4A"], [8003, "\u1F4B"], [8004, "\u1F4C"], [8005, "\u1F4D"], [8016, "\u03A5\u0313"], [8017, "\u1F59"], [8018, "\u03A5\u0313\u0300"], [8019, "\u1F5B"], [8020, "\u03A5\u0313\u0301"], [8021, "\u1F5D"], [8022, "\u03A5\u0313\u0342"], [8023, "\u1F5F"], [8032, "\u1F68"], [8033, "\u1F69"], [8034, "\u1F6A"], [8035, "\u1F6B"], [8036, "\u1F6C"], [8037, "\u1F6D"], [8038, "\u1F6E"], [8039, "\u1F6F"], [8048, "\u1FBA"], [8049, "\u1FBB"], [8050, "\u1FC8"], [8051, "\u1FC9"], [8052, "\u1FCA"], [8053, "\u1FCB"], [8054, "\u1FDA"], [8055, "\u1FDB"], [8056, "\u1FF8"], [8057, "\u1FF9"], [8058, "\u1FEA"], [8059, "\u1FEB"], [8060, "\u1FFA"], [8061, "\u1FFB"], [8064, "\u1F08\u0399"], [8065, "\u1F09\u0399"], [8066, "\u1F0A\u0399"], [8067, "\u1F0B\u0399"], [8068, "\u1F0C\u0399"], [8069, "\u1F0D\u0399"], [8070, "\u1F0E\u0399"], [8071, "\u1F0F\u0399"], [8072, "\u1F08\u0399"], [8073, "\u1F09\u0399"], [8074, "\u1F0A\u0399"], [8075, "\u1F0B\u0399"], [8076, "\u1F0C\u0399"], [8077, "\u1F0D\u0399"], [8078, "\u1F0E\u0399"], [8079, "\u1F0F\u0399"], [8080, "\u1F28\u0399"], [8081, "\u1F29\u0399"], [8082, "\u1F2A\u0399"], [8083, "\u1F2B\u0399"], [8084, "\u1F2C\u0399"], [8085, "\u1F2D\u0399"], [8086, "\u1F2E\u0399"], [8087, "\u1F2F\u0399"], [8088, "\u1F28\u0399"], [8089, "\u1F29\u0399"], [8090, "\u1F2A\u0399"], [8091, "\u1F2B\u0399"], [8092, "\u1F2C\u0399"], [8093, "\u1F2D\u0399"], [8094, "\u1F2E\u0399"], [8095, "\u1F2F\u0399"], [8096, "\u1F68\u0399"], [8097, "\u1F69\u0399"], [8098, "\u1F6A\u0399"], [8099, "\u1F6B\u0399"], [8100, "\u1F6C\u0399"], [8101, "\u1F6D\u0399"], [8102, "\u1F6E\u0399"], [8103, "\u1F6F\u0399"], [8104, "\u1F68\u0399"], [8105, "\u1F69\u0399"], [8106, "\u1F6A\u0399"], [8107, "\u1F6B\u0399"], [8108, "\u1F6C\u0399"], [8109, "\u1F6D\u0399"], [8110, "\u1F6E\u0399"], [8111, "\u1F6F\u0399"], [8112, "\u1FB8"], [8113, "\u1FB9"], [8114, "\u1FBA\u0399"], [8115, "\u0391\u0399"], [8116, "\u0386\u0399"], [8118, "\u0391\u0342"], [8119, "\u0391\u0342\u0399"], [8124, "\u0391\u0399"], [8126, "\u0399"], [8130, "\u1FCA\u0399"], [8131, "\u0397\u0399"], [8132, "\u0389\u0399"], [8134, "\u0397\u0342"], [8135, "\u0397\u0342\u0399"], [8140, "\u0397\u0399"], [8144, "\u1FD8"], [8145, "\u1FD9"], [8146, "\u0399\u0308\u0300"], [8147, "\u0399\u0308\u0301"], [8150, "\u0399\u0342"], [8151, "\u0399\u0308\u0342"], [8160, "\u1FE8"], [8161, "\u1FE9"], [8162, "\u03A5\u0308\u0300"], [8163, "\u03A5\u0308\u0301"], [8164, "\u03A1\u0313"], [8165, "\u1FEC"], [8166, "\u03A5\u0342"], [8167, "\u03A5\u0308\u0342"], [8178, "\u1FFA\u0399"], [8179, "\u03A9\u0399"], [8180, "\u038F\u0399"], [8182, "\u03A9\u0342"], [8183, "\u03A9\u0342\u0399"], [8188, "\u03A9\u0399"], [8526, "\u2132"], [8560, "\u2160"], [8561, "\u2161"], [8562, "\u2162"], [8563, "\u2163"], [8564, "\u2164"], [8565, "\u2165"], [8566, "\u2166"], [8567, "\u2167"], [8568, "\u2168"], [8569, "\u2169"], [8570, "\u216A"], [8571, "\u216B"], [8572, "\u216C"], [8573, "\u216D"], [8574, "\u216E"], [8575, "\u216F"], [8580, "\u2183"], [9424, "\u24B6"], [9425, "\u24B7"], [9426, "\u24B8"], [9427, "\u24B9"], [9428, "\u24BA"], [9429, "\u24BB"], [9430, "\u24BC"], [9431, "\u24BD"], [9432, "\u24BE"], [9433, "\u24BF"], [9434, "\u24C0"], [9435, "\u24C1"], [9436, "\u24C2"], [9437, "\u24C3"], [9438, "\u24C4"], [9439, "\u24C5"], [9440, "\u24C6"], [9441, "\u24C7"], [9442, "\u24C8"], [9443, "\u24C9"], [9444, "\u24CA"], [9445, "\u24CB"], [9446, "\u24CC"], [9447, "\u24CD"], [9448, "\u24CE"], [9449, "\u24CF"], [11312, "\u2C00"], [11313, "\u2C01"], [11314, "\u2C02"], [11315, "\u2C03"], [11316, "\u2C04"], [11317, "\u2C05"], [11318, "\u2C06"], [11319, "\u2C07"], [11320, "\u2C08"], [11321, "\u2C09"], [11322, "\u2C0A"], [11323, "\u2C0B"], [11324, "\u2C0C"], [11325, "\u2C0D"], [11326, "\u2C0E"], [11327, "\u2C0F"], [11328, "\u2C10"], [11329, "\u2C11"], [11330, "\u2C12"], [11331, "\u2C13"], [11332, "\u2C14"], [11333, "\u2C15"], [11334, "\u2C16"], [11335, "\u2C17"], [11336, "\u2C18"], [11337, "\u2C19"], [11338, "\u2C1A"], [11339, "\u2C1B"], [11340, "\u2C1C"], [11341, "\u2C1D"], [11342, "\u2C1E"], [11343, "\u2C1F"], [11344, "\u2C20"], [11345, "\u2C21"], [11346, "\u2C22"], [11347, "\u2C23"], [11348, "\u2C24"], [11349, "\u2C25"], [11350, "\u2C26"], [11351, "\u2C27"], [11352, "\u2C28"], [11353, "\u2C29"], [11354, "\u2C2A"], [11355, "\u2C2B"], [11356, "\u2C2C"], [11357, "\u2C2D"], [11358, "\u2C2E"], [11359, "\u2C2F"], [11361, "\u2C60"], [11365, "\u023A"], [11366, "\u023E"], [11368, "\u2C67"], [11370, "\u2C69"], [11372, "\u2C6B"], [11379, "\u2C72"], [11382, "\u2C75"], [11393, "\u2C80"], [11395, "\u2C82"], [11397, "\u2C84"], [11399, "\u2C86"], [11401, "\u2C88"], [11403, "\u2C8A"], [11405, "\u2C8C"], [11407, "\u2C8E"], [11409, "\u2C90"], [11411, "\u2C92"], [11413, "\u2C94"], [11415, "\u2C96"], [11417, "\u2C98"], [11419, "\u2C9A"], [11421, "\u2C9C"], [11423, "\u2C9E"], [11425, "\u2CA0"], [11427, "\u2CA2"], [11429, "\u2CA4"], [11431, "\u2CA6"], [11433, "\u2CA8"], [11435, "\u2CAA"], [11437, "\u2CAC"], [11439, "\u2CAE"], [11441, "\u2CB0"], [11443, "\u2CB2"], [11445, "\u2CB4"], [11447, "\u2CB6"], [11449, "\u2CB8"], [11451, "\u2CBA"], [11453, "\u2CBC"], [11455, "\u2CBE"], [11457, "\u2CC0"], [11459, "\u2CC2"], [11461, "\u2CC4"], [11463, "\u2CC6"], [11465, "\u2CC8"], [11467, "\u2CCA"], [11469, "\u2CCC"], [11471, "\u2CCE"], [11473, "\u2CD0"], [11475, "\u2CD2"], [11477, "\u2CD4"], [11479, "\u2CD6"], [11481, "\u2CD8"], [11483, "\u2CDA"], [11485, "\u2CDC"], [11487, "\u2CDE"], [11489, "\u2CE0"], [11491, "\u2CE2"], [11500, "\u2CEB"], [11502, "\u2CED"], [11507, "\u2CF2"], [11520, "\u10A0"], [11521, "\u10A1"], [11522, "\u10A2"], [11523, "\u10A3"], [11524, "\u10A4"], [11525, "\u10A5"], [11526, "\u10A6"], [11527, "\u10A7"], [11528, "\u10A8"], [11529, "\u10A9"], [11530, "\u10AA"], [11531, "\u10AB"], [11532, "\u10AC"], [11533, "\u10AD"], [11534, "\u10AE"], [11535, "\u10AF"], [11536, "\u10B0"], [11537, "\u10B1"], [11538, "\u10B2"], [11539, "\u10B3"], [11540, "\u10B4"], [11541, "\u10B5"], [11542, "\u10B6"], [11543, "\u10B7"], [11544, "\u10B8"], [11545, "\u10B9"], [11546, "\u10BA"], [11547, "\u10BB"], [11548, "\u10BC"], [11549, "\u10BD"], [11550, "\u10BE"], [11551, "\u10BF"], [11552, "\u10C0"], [11553, "\u10C1"], [11554, "\u10C2"], [11555, "\u10C3"], [11556, "\u10C4"], [11557, "\u10C5"], [11559, "\u10C7"], [11565, "\u10CD"], [42561, "\uA640"], [42563, "\uA642"], [42565, "\uA644"], [42567, "\uA646"], [42569, "\uA648"], [42571, "\uA64A"], [42573, "\uA64C"], [42575, "\uA64E"], [42577, "\uA650"], [42579, "\uA652"], [42581, "\uA654"], [42583, "\uA656"], [42585, "\uA658"], [42587, "\uA65A"], [42589, "\uA65C"], [42591, "\uA65E"], [42593, "\uA660"], [42595, "\uA662"], [42597, "\uA664"], [42599, "\uA666"], [42601, "\uA668"], [42603, "\uA66A"], [42605, "\uA66C"], [42625, "\uA680"], [42627, "\uA682"], [42629, "\uA684"], [42631, "\uA686"], [42633, "\uA688"], [42635, "\uA68A"], [42637, "\uA68C"], [42639, "\uA68E"], [42641, "\uA690"], [42643, "\uA692"], [42645, "\uA694"], [42647, "\uA696"], [42649, "\uA698"], [42651, "\uA69A"], [42787, "\uA722"], [42789, "\uA724"], [42791, "\uA726"], [42793, "\uA728"], [42795, "\uA72A"], [42797, "\uA72C"], [42799, "\uA72E"], [42803, "\uA732"], [42805, "\uA734"], [42807, "\uA736"], [42809, "\uA738"], [42811, "\uA73A"], [42813, "\uA73C"], [42815, "\uA73E"], [42817, "\uA740"], [42819, "\uA742"], [42821, "\uA744"], [42823, "\uA746"], [42825, "\uA748"], [42827, "\uA74A"], [42829, "\uA74C"], [42831, "\uA74E"], [42833, "\uA750"], [42835, "\uA752"], [42837, "\uA754"], [42839, "\uA756"], [42841, "\uA758"], [42843, "\uA75A"], [42845, "\uA75C"], [42847, "\uA75E"], [42849, "\uA760"], [42851, "\uA762"], [42853, "\uA764"], [42855, "\uA766"], [42857, "\uA768"], [42859, "\uA76A"], [42861, "\uA76C"], [42863, "\uA76E"], [42874, "\uA779"], [42876, "\uA77B"], [42879, "\uA77E"], [42881, "\uA780"], [42883, "\uA782"], [42885, "\uA784"], [42887, "\uA786"], [42892, "\uA78B"], [42897, "\uA790"], [42899, "\uA792"], [42900, "\uA7C4"], [42903, "\uA796"], [42905, "\uA798"], [42907, "\uA79A"], [42909, "\uA79C"], [42911, "\uA79E"], [42913, "\uA7A0"], [42915, "\uA7A2"], [42917, "\uA7A4"], [42919, "\uA7A6"], [42921, "\uA7A8"], [42933, "\uA7B4"], [42935, "\uA7B6"], [42937, "\uA7B8"], [42939, "\uA7BA"], [42941, "\uA7BC"], [42943, "\uA7BE"], [42945, "\uA7C0"], [42947, "\uA7C2"], [42952, "\uA7C7"], [42954, "\uA7C9"], [42957, "\uA7CC"], [42961, "\uA7D0"], [42967, "\uA7D6"], [42969, "\uA7D8"], [42971, "\uA7DA"], [42998, "\uA7F5"], [43859, "\uA7B3"], [43888, "\u13A0"], [43889, "\u13A1"], [43890, "\u13A2"], [43891, "\u13A3"], [43892, "\u13A4"], [43893, "\u13A5"], [43894, "\u13A6"], [43895, "\u13A7"], [43896, "\u13A8"], [43897, "\u13A9"], [43898, "\u13AA"], [43899, "\u13AB"], [43900, "\u13AC"], [43901, "\u13AD"], [43902, "\u13AE"], [43903, "\u13AF"], [43904, "\u13B0"], [43905, "\u13B1"], [43906, "\u13B2"], [43907, "\u13B3"], [43908, "\u13B4"], [43909, "\u13B5"], [43910, "\u13B6"], [43911, "\u13B7"], [43912, "\u13B8"], [43913, "\u13B9"], [43914, "\u13BA"], [43915, "\u13BB"], [43916, "\u13BC"], [43917, "\u13BD"], [43918, "\u13BE"], [43919, "\u13BF"], [43920, "\u13C0"], [43921, "\u13C1"], [43922, "\u13C2"], [43923, "\u13C3"], [43924, "\u13C4"], [43925, "\u13C5"], [43926, "\u13C6"], [43927, "\u13C7"], [43928, "\u13C8"], [43929, "\u13C9"], [43930, "\u13CA"], [43931, "\u13CB"], [43932, "\u13CC"], [43933, "\u13CD"], [43934, "\u13CE"], [43935, "\u13CF"], [43936, "\u13D0"], [43937, "\u13D1"], [43938, "\u13D2"], [43939, "\u13D3"], [43940, "\u13D4"], [43941, "\u13D5"], [43942, "\u13D6"], [43943, "\u13D7"], [43944, "\u13D8"], [43945, "\u13D9"], [43946, "\u13DA"], [43947, "\u13DB"], [43948, "\u13DC"], [43949, "\u13DD"], [43950, "\u13DE"], [43951, "\u13DF"], [43952, "\u13E0"], [43953, "\u13E1"], [43954, "\u13E2"], [43955, "\u13E3"], [43956, "\u13E4"], [43957, "\u13E5"], [43958, "\u13E6"], [43959, "\u13E7"], [43960, "\u13E8"], [43961, "\u13E9"], [43962, "\u13EA"], [43963, "\u13EB"], [43964, "\u13EC"], [43965, "\u13ED"], [43966, "\u13EE"], [43967, "\u13EF"], [64256, "FF"], [64257, "FI"], [64258, "FL"], [64259, "FFI"], [64260, "FFL"], [64261, "ST"], [64262, "ST"], [64275, "\u0544\u0546"], [64276, "\u0544\u0535"], [64277, "\u0544\u053B"], [64278, "\u054E\u0546"], [64279, "\u0544\u053D"], [65345, "\uFF21"], [65346, "\uFF22"], [65347, "\uFF23"], [65348, "\uFF24"], [65349, "\uFF25"], [65350, "\uFF26"], [65351, "\uFF27"], [65352, "\uFF28"], [65353, "\uFF29"], [65354, "\uFF2A"], [65355, "\uFF2B"], [65356, "\uFF2C"], [65357, "\uFF2D"], [65358, "\uFF2E"], [65359, "\uFF2F"], [65360, "\uFF30"], [65361, "\uFF31"], [65362, "\uFF32"], [65363, "\uFF33"], [65364, "\uFF34"], [65365, "\uFF35"], [65366, "\uFF36"], [65367, "\uFF37"], [65368, "\uFF38"], [65369, "\uFF39"], [65370, "\uFF3A"], [66600, "\u{10400}"], [66601, "\u{10401}"], [66602, "\u{10402}"], [66603, "\u{10403}"], [66604, "\u{10404}"], [66605, "\u{10405}"], [66606, "\u{10406}"], [66607, "\u{10407}"], [66608, "\u{10408}"], [66609, "\u{10409}"], [66610, "\u{1040A}"], [66611, "\u{1040B}"], [66612, "\u{1040C}"], [66613, "\u{1040D}"], [66614, "\u{1040E}"], [66615, "\u{1040F}"], [66616, "\u{10410}"], [66617, "\u{10411}"], [66618, "\u{10412}"], [66619, "\u{10413}"], [66620, "\u{10414}"], [66621, "\u{10415}"], [66622, "\u{10416}"], [66623, "\u{10417}"], [66624, "\u{10418}"], [66625, "\u{10419}"], [66626, "\u{1041A}"], [66627, "\u{1041B}"], [66628, "\u{1041C}"], [66629, "\u{1041D}"], [66630, "\u{1041E}"], [66631, "\u{1041F}"], [66632, "\u{10420}"], [66633, "\u{10421}"], [66634, "\u{10422}"], [66635, "\u{10423}"], [66636, "\u{10424}"], [66637, "\u{10425}"], [66638, "\u{10426}"], [66639, "\u{10427}"], [66776, "\u{104B0}"], [66777, "\u{104B1}"], [66778, "\u{104B2}"], [66779, "\u{104B3}"], [66780, "\u{104B4}"], [66781, "\u{104B5}"], [66782, "\u{104B6}"], [66783, "\u{104B7}"], [66784, "\u{104B8}"], [66785, "\u{104B9}"], [66786, "\u{104BA}"], [66787, "\u{104BB}"], [66788, "\u{104BC}"], [66789, "\u{104BD}"], [66790, "\u{104BE}"], [66791, "\u{104BF}"], [66792, "\u{104C0}"], [66793, "\u{104C1}"], [66794, "\u{104C2}"], [66795, "\u{104C3}"], [66796, "\u{104C4}"], [66797, "\u{104C5}"], [66798, "\u{104C6}"], [66799, "\u{104C7}"], [66800, "\u{104C8}"], [66801, "\u{104C9}"], [66802, "\u{104CA}"], [66803, "\u{104CB}"], [66804, "\u{104CC}"], [66805, "\u{104CD}"], [66806, "\u{104CE}"], [66807, "\u{104CF}"], [66808, "\u{104D0}"], [66809, "\u{104D1}"], [66810, "\u{104D2}"], [66811, "\u{104D3}"], [66967, "\u{10570}"], [66968, "\u{10571}"], [66969, "\u{10572}"], [66970, "\u{10573}"], [66971, "\u{10574}"], [66972, "\u{10575}"], [66973, "\u{10576}"], [66974, "\u{10577}"], [66975, "\u{10578}"], [66976, "\u{10579}"], [66977, "\u{1057A}"], [66979, "\u{1057C}"], [66980, "\u{1057D}"], [66981, "\u{1057E}"], [66982, "\u{1057F}"], [66983, "\u{10580}"], [66984, "\u{10581}"], [66985, "\u{10582}"], [66986, "\u{10583}"], [66987, "\u{10584}"], [66988, "\u{10585}"], [66989, "\u{10586}"], [66990, "\u{10587}"], [66991, "\u{10588}"], [66992, "\u{10589}"], [66993, "\u{1058A}"], [66995, "\u{1058C}"], [66996, "\u{1058D}"], [66997, "\u{1058E}"], [66998, "\u{1058F}"], [66999, "\u{10590}"], [67e3, "\u{10591}"], [67001, "\u{10592}"], [67003, "\u{10594}"], [67004, "\u{10595}"], [68800, "\u{10C80}"], [68801, "\u{10C81}"], [68802, "\u{10C82}"], [68803, "\u{10C83}"], [68804, "\u{10C84}"], [68805, "\u{10C85}"], [68806, "\u{10C86}"], [68807, "\u{10C87}"], [68808, "\u{10C88}"], [68809, "\u{10C89}"], [68810, "\u{10C8A}"], [68811, "\u{10C8B}"], [68812, "\u{10C8C}"], [68813, "\u{10C8D}"], [68814, "\u{10C8E}"], [68815, "\u{10C8F}"], [68816, "\u{10C90}"], [68817, "\u{10C91}"], [68818, "\u{10C92}"], [68819, "\u{10C93}"], [68820, "\u{10C94}"], [68821, "\u{10C95}"], [68822, "\u{10C96}"], [68823, "\u{10C97}"], [68824, "\u{10C98}"], [68825, "\u{10C99}"], [68826, "\u{10C9A}"], [68827, "\u{10C9B}"], [68828, "\u{10C9C}"], [68829, "\u{10C9D}"], [68830, "\u{10C9E}"], [68831, "\u{10C9F}"], [68832, "\u{10CA0}"], [68833, "\u{10CA1}"], [68834, "\u{10CA2}"], [68835, "\u{10CA3}"], [68836, "\u{10CA4}"], [68837, "\u{10CA5}"], [68838, "\u{10CA6}"], [68839, "\u{10CA7}"], [68840, "\u{10CA8}"], [68841, "\u{10CA9}"], [68842, "\u{10CAA}"], [68843, "\u{10CAB}"], [68844, "\u{10CAC}"], [68845, "\u{10CAD}"], [68846, "\u{10CAE}"], [68847, "\u{10CAF}"], [68848, "\u{10CB0}"], [68849, "\u{10CB1}"], [68850, "\u{10CB2}"], [68976, "\u{10D50}"], [68977, "\u{10D51}"], [68978, "\u{10D52}"], [68979, "\u{10D53}"], [68980, "\u{10D54}"], [68981, "\u{10D55}"], [68982, "\u{10D56}"], [68983, "\u{10D57}"], [68984, "\u{10D58}"], [68985, "\u{10D59}"], [68986, "\u{10D5A}"], [68987, "\u{10D5B}"], [68988, "\u{10D5C}"], [68989, "\u{10D5D}"], [68990, "\u{10D5E}"], [68991, "\u{10D5F}"], [68992, "\u{10D60}"], [68993, "\u{10D61}"], [68994, "\u{10D62}"], [68995, "\u{10D63}"], [68996, "\u{10D64}"], [68997, "\u{10D65}"], [71872, "\u{118A0}"], [71873, "\u{118A1}"], [71874, "\u{118A2}"], [71875, "\u{118A3}"], [71876, "\u{118A4}"], [71877, "\u{118A5}"], [71878, "\u{118A6}"], [71879, "\u{118A7}"], [71880, "\u{118A8}"], [71881, "\u{118A9}"], [71882, "\u{118AA}"], [71883, "\u{118AB}"], [71884, "\u{118AC}"], [71885, "\u{118AD}"], [71886, "\u{118AE}"], [71887, "\u{118AF}"], [71888, "\u{118B0}"], [71889, "\u{118B1}"], [71890, "\u{118B2}"], [71891, "\u{118B3}"], [71892, "\u{118B4}"], [71893, "\u{118B5}"], [71894, "\u{118B6}"], [71895, "\u{118B7}"], [71896, "\u{118B8}"], [71897, "\u{118B9}"], [71898, "\u{118BA}"], [71899, "\u{118BB}"], [71900, "\u{118BC}"], [71901, "\u{118BD}"], [71902, "\u{118BE}"], [71903, "\u{118BF}"], [93792, "\u{16E40}"], [93793, "\u{16E41}"], [93794, "\u{16E42}"], [93795, "\u{16E43}"], [93796, "\u{16E44}"], [93797, "\u{16E45}"], [93798, "\u{16E46}"], [93799, "\u{16E47}"], [93800, "\u{16E48}"], [93801, "\u{16E49}"], [93802, "\u{16E4A}"], [93803, "\u{16E4B}"], [93804, "\u{16E4C}"], [93805, "\u{16E4D}"], [93806, "\u{16E4E}"], [93807, "\u{16E4F}"], [93808, "\u{16E50}"], [93809, "\u{16E51}"], [93810, "\u{16E52}"], [93811, "\u{16E53}"], [93812, "\u{16E54}"], [93813, "\u{16E55}"], [93814, "\u{16E56}"], [93815, "\u{16E57}"], [93816, "\u{16E58}"], [93817, "\u{16E59}"], [93818, "\u{16E5A}"], [93819, "\u{16E5B}"], [93820, "\u{16E5C}"], [93821, "\u{16E5D}"], [93822, "\u{16E5E}"], [93823, "\u{16E5F}"], [125218, "\u{1E900}"], [125219, "\u{1E901}"], [125220, "\u{1E902}"], [125221, "\u{1E903}"], [125222, "\u{1E904}"], [125223, "\u{1E905}"], [125224, "\u{1E906}"], [125225, "\u{1E907}"], [125226, "\u{1E908}"], [125227, "\u{1E909}"], [125228, "\u{1E90A}"], [125229, "\u{1E90B}"], [125230, "\u{1E90C}"], [125231, "\u{1E90D}"], [125232, "\u{1E90E}"], [125233, "\u{1E90F}"], [125234, "\u{1E910}"], [125235, "\u{1E911}"], [125236, "\u{1E912}"], [125237, "\u{1E913}"], [125238, "\u{1E914}"], [125239, "\u{1E915}"], [125240, "\u{1E916}"], [125241, "\u{1E917}"], [125242, "\u{1E918}"], [125243, "\u{1E919}"], [125244, "\u{1E91A}"], [125245, "\u{1E91B}"], [125246, "\u{1E91C}"], [125247, "\u{1E91D}"], [125248, "\u{1E91E}"], [125249, "\u{1E91F}"], [125250, "\u{1E920}"], [125251, "\u{1E921}"]];
534
-
535
- // packages/safe-bash-command-csvkit/src/python-text.ts
536
- var upperMap = new Map(upperMappings);
537
- function bytesRepr(value) {
538
- const quote = value.includes(39) && !value.includes(34) ? '"' : "'";
539
- let text = "b" + quote;
540
- for (const byte of value) {
541
- if (byte === 9) text += "\\t";
542
- else if (byte === 10) text += "\\n";
543
- else if (byte === 13) text += "\\r";
544
- else if (byte === 92 || byte === quote.charCodeAt(0)) text += "\\" + String.fromCharCode(byte);
545
- else if (byte >= 32 && byte < 127) text += String.fromCharCode(byte);
546
- else text += "\\x" + byte.toString(16).padStart(2, "0");
591
+ m = /^(\d{1,2})\/(\d{1,2})(?:\/(\d{2}|\d{4}))?$/.exec(text);
592
+ if (m) {
593
+ let year = m[3] ? Number(m[3]) : source.year;
594
+ if (m[3]?.length === 2) year += year >= 50 ? 1900 : 2e3;
595
+ const month = Number(m[1]);
596
+ const day = Number(m[2]);
597
+ if (!m[3] && (month < source.month || month === source.month && day < source.day)) year++;
598
+ if (!m[3] && year < 100) year += 2e3;
599
+ return base(year, month, day);
547
600
  }
548
- return text + quote;
549
- }
550
- function upperText(value, step) {
551
- let result = "";
552
- for (const char of value) {
553
- step();
554
- result += upperMap.get(char.codePointAt(0)) ?? char;
601
+ m = /^([a-z]+) (\d{1,2})(?:,? (\d{4}))?$/i.exec(text);
602
+ if (m && months.some((name) => name === m[1].toLowerCase() || name.slice(0, 3) === m[1].toLowerCase())) {
603
+ const month = months.findIndex((name) => name === m[1].toLowerCase() || name.slice(0, 3) === m[1].toLowerCase()) + 1;
604
+ let year = m[3] ? Number(m[3]) : source.year;
605
+ if (!m[3] && (month < source.month || month === source.month && Number(m[2]) < source.day)) year++;
606
+ return base(year, month, Number(m[2]));
555
607
  }
556
- return result;
557
- }
558
- function stripWhitespace(value) {
559
- const len = value.length;
560
- if (len === 0) return "";
561
- const c0 = value.charCodeAt(0);
562
- const cLast = value.charCodeAt(len - 1);
563
- if (c0 > 32 && c0 < 127 && cLast > 32 && cLast < 127) return value;
564
- const chars = Array.from(value);
565
- const whitespace = (char) => {
566
- const code = char.codePointAt(0);
567
- return integerWhitespace.includes(code) || code >= 28 && code <= 31;
568
- };
569
- let first = 0;
570
- let last = chars.length;
571
- while (first < last && whitespace(chars[first])) first++;
572
- while (last > first && whitespace(chars[last - 1])) last--;
573
- return chars.slice(first, last).join("");
608
+ const lower = text.toLowerCase();
609
+ const start = ordinal(source.year, source.month, source.day);
610
+ if (["today", "tomorrow", "yesterday"].includes(lower)) return fromOrdinal(start + (lower === "tomorrow" ? 1 : lower === "yesterday" ? -1 : 0));
611
+ const weekday = weekdays.indexOf(lower);
612
+ if (weekday >= 0) return fromOrdinal(start + ((weekday - (start - 1) % 7 + 7) % 7 || 7));
613
+ if (lower === "next week") return fromOrdinal(start + 7);
614
+ return void 0;
574
615
  }
575
- var lowerMap = new Map(lowerMappings);
576
- function lowerText(value) {
577
- let ascii = true;
578
- let hasUpper = false;
579
- for (let i = 0; i < value.length; i++) {
580
- const c = value.charCodeAt(i);
581
- if (c >= 128) {
582
- ascii = false;
583
- break;
584
- }
585
- if (c >= 65 && c <= 90) hasUpper = true;
586
- }
587
- if (ascii) return hasUpper ? value.toLowerCase() : value;
588
- const chars = Array.from(value);
589
- const within = (code, ranges) => {
590
- let lo = 0;
591
- let hi = ranges.length;
592
- while (lo < hi) {
593
- const mid = lo + hi >>> 1;
594
- const range = ranges[mid];
595
- if (code < range[0]) hi = mid;
596
- else if (code > range[1]) lo = mid + 1;
597
- else return true;
598
- }
599
- return false;
616
+ function temporalDate(type, text, options, step) {
617
+ const format = type === "Date" ? options.dateFormat : options.datetimeFormat;
618
+ let nlpAbsent;
619
+ const failure = () => {
620
+ throw new TemporalCastError(format || type === "Date" && nlpAbsent ? `Value "${text}" does not match date format.` : `Can not parse value "${text}" as ${type === "Date" ? "date" : "datetime"}.`);
600
621
  };
601
- return chars.map((char, index) => {
602
- const code = char.codePointAt(0);
603
- if (code !== 931) return lowerMap.get(code) ?? char;
604
- const cased = (direction) => {
605
- for (let cursor = index + direction; cursor >= 0 && cursor < chars.length; cursor += direction) {
606
- const neighbor = chars[cursor].codePointAt(0);
607
- if (!within(neighbor, sigmaIgnorable)) return within(neighbor, sigmaCased);
622
+ if (!format && ["second", "last"].includes(text.toLowerCase())) return failure();
623
+ if (format && options.locale && options.locale !== "en_US") throw new CsvkitBlocked(`LC_TIME strptime locale ${options.locale}`);
624
+ if (options.locale && !["en_US", "en_US.UTF-8"].includes(options.locale)) throw new CsvkitBlocked(`parsedatetime locale ${options.locale}`);
625
+ let p;
626
+ try {
627
+ if (format) p = strptime(text, format, step);
628
+ else {
629
+ if (/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)[eE][+-]?\d+$/.test(text)) throw new TemporalCastError();
630
+ if (/^[+-]?\d+ days?, \d{1,2}:\d{2}:\d{2}(?:\.\d{1,6})?$/.test(text)) throw new TemporalCastError();
631
+ if (/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)\s*(?:ms|us)$/i.test(text)) throw new TemporalCastError();
632
+ const unit = /\d\s*([a-zſıİK]+)$/iu.exec(text)?.[1];
633
+ if (unit) {
634
+ const folded = unit.replace(/[ſıİK]/gu, (char) => char === "\u017F" ? "s" : char === "\u212A" ? "k" : "i").toLowerCase();
635
+ const aliases = ["seconds", "minutes", "second", "minute", "months", "hours", "weeks", "month", "years", "secs", "mins", "hour", "days", "week", "year", "sec", "min", "day", "mth", "hr", "dy", "wk", "yr", "s", "m", "h", "d", "w", "y"];
636
+ if (type === "Date" && aliases.includes(folded) && /[ſı]/u.test(unit)) throw new CsvkitDiagnostic(`KeyError: ${repr(lowerText(unit))}`);
637
+ if (aliases.includes(folded) && (unit.includes("\u0130") || type === "DateTime" && /[ſı]/u.test(unit))) throw new TemporalCastError();
608
638
  }
609
- return false;
610
- };
611
- return cased(-1) && !cased(1) ? "\u03C2" : "\u03C3";
612
- }).join("");
613
- }
614
-
615
- // packages/safe-bash-command-csvkit/src/diagnostics/index.ts
616
- function diagnosticReport(failure, verbose, encoding) {
617
- let text = failure instanceof PythonException ? `${failure.exceptionClass}: ${failure.detail}` : failure.message;
618
- if (!(failure instanceof CsvkitBlocked) && failure.status === 1) {
619
- if (verbose) {
620
- if (!(failure instanceof PythonException) || !failure.traceback?.profile || !failure.traceback.frames.length || failure.traceback.frames.some((frame) => !frame.path || !frame.function || !Number.isSafeInteger(frame.line) || frame.line < 1))
621
- return { status: 78, stderr: "csvkit: unsupported or unqualified: frozen Python traceback frames and deployment identity\n" };
622
- text = "Traceback (most recent call last):\n";
623
- for (const frame of failure.traceback.frames) {
624
- text += ` File "${frame.path}", line ${frame.line}, in ${frame.function}
625
- `;
626
- const source = frame.source === void 0 ? "" : stripWhitespace(frame.source);
627
- if (source) text += ` ${source}
628
- `;
639
+ let source = base(1);
640
+ if (type === "DateTime") {
641
+ if (options.timezone && options.timezone !== "UTC") throw new CsvkitBlocked(`clock timezone ${options.timezone}`);
642
+ if (options.now === void 0 && /^(?:today|tomorrow|yesterday|next week|monday|tuesday|wednesday|thursday|friday|saturday|sunday|\d{1,2}\/\d{1,2}|[a-z]+ \d{1,2})$/i.test(text)) throw new CsvkitBlocked("DateTime injected clock");
643
+ if (options.now !== void 0 && !Number.isFinite(options.now)) throw new CsvkitBlocked("DateTime clock range");
644
+ source = fromOrdinal(Math.floor((options.now ?? 0) / 864e5) + ordinal(1970, 1, 1));
629
645
  }
630
- text += `${failure.exceptionClass}: ${failure.detail}`;
631
- } else if (failure instanceof PythonException && failure.exceptionClass === "UnicodeDecodeError") {
632
- text = `Your file is not "${encoding}" encoded. Please specify the correct encoding with the --encoding flag. Use the -v flag to see the complete error.`;
646
+ p = implicitDate(text, source, step);
647
+ const relative = /^([+-]?(?:\d+(?:\.\d*)?|\.\d+))\s*([a-zK]+)$/iu.exec(text);
648
+ if (!p && relative) {
649
+ const unit2 = lowerText(relative[2]);
650
+ if (["s", "sec", "secs", "second", "seconds", "m", "min", "mins", "minute", "minutes", "h", "hr", "hrs", "hour", "hours"].includes(unit2)) {
651
+ nlpAbsent = false;
652
+ throw new TemporalCastError();
653
+ }
654
+ if (["d", "dy", "dys", "day", "days", "w", "wk", "wks", "week", "weeks"].includes(unit2)) {
655
+ const days = Number(relative[1]) * (unit2.startsWith("w") ? 7 : 1);
656
+ if (!Number.isFinite(days)) throw new TemporalCastError();
657
+ nlpAbsent = false;
658
+ p = fromOrdinal(ordinal(source.year, source.month, source.day) + Math.floor(days));
659
+ }
660
+ }
661
+ nlpAbsent = !p && !/\d.*[-/:]|\b(?:today|tomorrow|yesterday|monday|tuesday|wednesday|thursday|friday|saturday|sunday)\b/i.test(text);
662
+ if (!p && type === "DateTime") {
663
+ const m = /^(\d{4})-(\d{2})-(\d{2})[T ](\d{2}):(\d{2})(?::(\d{2})(?:[.,](\d+))?)?(Z|[+-]\d{2}:?\d{2})?$/.exec(text);
664
+ if (m) {
665
+ p = { ...base(Number(m[1]), Number(m[2]), Number(m[3])), hour: Number(m[4]), minute: Number(m[5]), second: Number(m[6] ?? 0), microsecond: Number((m[7] ?? "").slice(0, 6).padEnd(6, "0")), ...m[8] ? { offset: offset(m[8]) } : {} };
666
+ }
667
+ }
668
+ if (!p && !/^\d{4}-\d{2}-\d{2}[T ]/.test(text) && /(?:\b(?:next|last|ago|week|month|year|day|hour|minute|second|noon|midnight|tonight)\b|\d.*[a-z])/i.test(text)) throw new CsvkitBlocked("parsedatetime expression " + repr(text));
633
669
  }
634
- }
635
- return { status: failure.status, stderr: text + "\n" };
636
- }
637
- function fileException(failure, path) {
638
- if (failure instanceof CsvkitDiagnostic || typeof failure !== "object" || failure === null) return failure;
639
- const code = failure.code;
640
- const identities = {
641
- ENOENT: ["FileNotFoundError", 2, "No such file or directory"],
642
- EACCES: ["PermissionError", 13, "Permission denied"],
643
- EPERM: ["PermissionError", 1, "Operation not permitted"],
644
- EISDIR: ["IsADirectoryError", 21, "Is a directory"],
645
- ENOTDIR: ["NotADirectoryError", 20, "Not a directory"]
646
- };
647
- const identity = typeof code === "string" && Object.hasOwn(identities, code) ? identities[code] : void 0;
648
- return identity ? new PythonException(identity[0], `[Errno ${identity[1]}] ${identity[2]}: ${repr(path)}`) : failure;
649
- }
650
- function warningText(warning) {
651
- return `${warning.path}:${warning.line}: ${warning.category}: ${warning.message}
652
- ` + (warning.source ? ` ${stripWhitespace(warning.source)}
653
- ` : "");
654
- }
655
-
656
- // packages/safe-bash-command-csvkit/src/table/headers.ts
657
- init_buffer();
658
- function defaultHeaders(count) {
659
- return Array.from({ length: count }, (_, index) => {
660
- let name = "";
661
- do {
662
- name = String.fromCharCode(97 + index % 26) + name;
663
- index = Math.floor(index / 26) - 1;
664
- } while (index >= 0);
665
- return name;
666
- });
667
- }
668
- var warningRegistries = /* @__PURE__ */ new WeakMap();
669
- async function normalizeHeaders(headers, runtime) {
670
- const generated = defaultHeaders(headers.length);
671
- const final = [];
672
- const seen = /* @__PURE__ */ new Set();
673
- const emitted = warningRegistries.get(runtime) ?? /* @__PURE__ */ new Set();
674
- warningRegistries.set(runtime, emitted);
675
- const warn = async (category, message, line, source) => {
676
- const profile = runtime.context.columnWarnings;
677
- if (profile?.suppressWarnings) return;
678
- if (!profile?.utilsPath) throw new CsvkitBlocked("Agate duplicate/unnamed column warning provenance");
679
- const identity = category + message;
680
- if (emitted.has(identity)) return;
681
- runtime.retain(32 + identity.length * 2);
682
- emitted.add(identity);
683
- await runtime.write(warningText({ path: profile.utilsPath, category, message, line, source }), "stderr");
684
- };
685
- for (const [index, header] of headers.entries()) {
686
- runtime.step();
687
- const name = header || generated[index];
688
- if (!header) await warn("UnnamedColumnWarning", `Column ${index} has no name. Using "${name}".`, 272, "warn_unnamed_column(i, new_value)");
689
- let result = name;
690
- let duplicates = 0;
691
- while (seen.has(result)) {
692
- runtime.step();
693
- result = name + "_" + (++duplicates + 1);
670
+ if (!p || !valid(p)) failure();
671
+ return { kind: type === "Date" ? "date" : "datetime", value: type === "Date" ? dateText(p) : datetimeText(p) };
672
+ } catch (error) {
673
+ if (error instanceof TemporalCastError) {
674
+ if (!format && !p && type === "Date" && nlpAbsent === void 0) nlpAbsent = true;
675
+ failure();
694
676
  }
695
- if (duplicates) await warn("DuplicateColumnWarning", `Column name "${name}" already exists in Table. Column will be renamed to "${result}".`, 288, "warn_duplicate_column(new_value, final_value)");
696
- runtime.retain(32 + result.length * 2);
697
- seen.add(result);
698
- final.push(result);
677
+ throw error;
699
678
  }
700
- return final;
701
- }
702
-
703
- // packages/safe-bash-command-csvkit/src/table/selectors.ts
704
- init_buffer();
705
- var digitRanges = [[178, 179], [185, 185], [4969, 4977], [6618, 6618], [8304, 8304], [8308, 8313], [8320, 8329], [9312, 9320], [9332, 9340], [9352, 9360], [9450, 9450], [9461, 9469], [9471, 9471], [10102, 10110], [10112, 10120], [10122, 10130], [68160, 68163], [69216, 69224], [69714, 69722], [127232, 127242]];
706
- function isDigit(token) {
707
- return token.length > 0 && Array.from(token).every((char) => {
708
- const point = char.codePointAt(0);
709
- return decimalZeroes.some((zero) => point >= zero && point <= zero + 9) || digitRanges.some(([first, last]) => point >= first && point <= last);
710
- });
711
- }
712
- function match(names, token, offset2 = 1, namesAreTuple = false) {
713
- if (typeof token === "string" && !isDigit(token) && names.includes(token)) return names.indexOf(token);
714
- const value = typeof token === "bigint" ? token : integer(token);
715
- if (value === void 0) throw new CsvkitDiagnostic(`ColumnIdentifierError: Column '${token}' is invalid. It is neither an integer nor a column name. Column names are: ${names.map(repr).join(", ")}${namesAreTuple && names.length === 1 ? "," : ""}`);
716
- const index = Number(value) - offset2;
717
- if (index < 0) throw new CsvkitDiagnostic(`ColumnIdentifierError: Column ${value} is invalid. Columns are 1-based.`);
718
- if (index >= names.length) throw new CsvkitDiagnostic(`ColumnIdentifierError: Column ${value} is invalid. The last column is '${names.at(-1)}' at index ${names.length - 1 + offset2}.`);
719
- return index;
720
679
  }
721
- function parseColumnIdentifiers(ids, names, offset2 = 1, excludedColumns, step = () => {
722
- }, namesAreTuple = false) {
723
- if (!names.length) return [];
724
- const columns = [];
725
- if (ids) {
726
- for (const token of ids.split(",")) {
727
- step();
728
- try {
729
- columns.push(match(names, token, offset2, namesAreTuple));
730
- } catch (failure) {
731
- if (!(failure instanceof CsvkitDiagnostic)) throw failure;
732
- const separator = token.includes(":") ? ":" : token.includes("-") ? "-" : void 0;
733
- if (!separator) throw failure;
734
- const index = token.indexOf(separator);
735
- const first = token.slice(0, index);
736
- const last = token.slice(index + 1);
737
- const start = first ? integer(first) : 1;
738
- const end = last ? integer(last) : names.length;
739
- if (start === void 0 || end === void 0) throw new CsvkitDiagnostic("ColumnIdentifierError: Invalid range %s. Ranges must be two integers separated by a - or : character.");
740
- for (let value = BigInt(start); value <= BigInt(end); value++) {
741
- step();
742
- columns.push(match(names, value, offset2));
743
- }
744
- }
680
+ var DURATION_UNITS = ["(?:w|wks?|weeks?)", "(?:d|dys?|days?)", "(?:h|hrs?|hours?)", "(?:m|mins?|minutes?)", "(?:s|secs?|seconds?)"];
681
+ var DURATION_NAMED = DURATION_UNITS.map((unit, index) => `(?:([\\d.]+)\\s*${unit}${index === 4 ? "" : "\\s*(?:[,/]\\s*)?"})?`).join("\\s*");
682
+ var DURATION_PATTERNS = [
683
+ new RegExp(`^\\s*${DURATION_NAMED}\\s*$`, "i"),
684
+ /^(\d{1,2}):(\d{2}(?:\.\d+)?)$/,
685
+ new RegExp(`^(?:([\\d.]+)\\s*${DURATION_UNITS[0]}\\s*(?:[,/]\\s*)?)?\\s*(?:([\\d.]+)\\s*${DURATION_UNITS[1]}\\s*(?:[,/]\\s*)?)?\\s*(\\d+):(\\d{2}):(\\d{2}(?:\\.\\d+)?)$`, "i"),
686
+ /^(\d+):(\d{2}):(\d{2}):(\d{2}(?:\.\d+)?)$/,
687
+ /^:(\d{2}(?:\.\d+)?)$/
688
+ ];
689
+ var DURATION_MULTIPLIERS = [604800, 86400, 3600, 60, 1];
690
+ function duration(text, step) {
691
+ step();
692
+ let allAscii = true;
693
+ for (let i = 0; i < text.length; i++) {
694
+ const c = text.charCodeAt(i);
695
+ if (c < 32 || c >= 127) {
696
+ allAscii = false;
697
+ break;
745
698
  }
699
+ }
700
+ let normalized;
701
+ if (allAscii) {
702
+ for (let i = 0; i < text.length; i++) step();
703
+ normalized = text;
746
704
  } else {
747
- for (let index = 0; index < names.length; index++) {
705
+ normalized = "";
706
+ for (const char of text) {
748
707
  step();
749
- columns.push(index);
708
+ const code = char.codePointAt(0);
709
+ const zero = decimalZeroes.find((start) => code >= start && code < start + 10);
710
+ normalized += zero !== void 0 ? String(code - zero) : integerWhitespace.includes(code) || code >= 28 && code <= 31 ? " " : char === "\u017F" ? "s" : char === "\u0130" || char === "\u0131" ? "i" : char === "\u212A" ? "k" : char;
750
711
  }
751
712
  }
752
- const excludes = /* @__PURE__ */ new Set();
753
- if (excludedColumns) {
754
- for (const token of excludedColumns.split(",")) {
755
- step();
756
- try {
757
- excludes.add(match(names, token, offset2, namesAreTuple));
758
- } catch (failure) {
759
- if (!(failure instanceof CsvkitDiagnostic)) throw failure;
760
- const separator = token.includes(":") ? ":" : token.includes("-") ? "-" : void 0;
761
- if (!separator) continue;
762
- const index = token.indexOf(separator);
763
- const first = token.slice(0, index);
764
- const last = token.slice(index + 1);
765
- const start = first ? integer(first) : 1;
766
- const end = last ? integer(last) : names.length - 1;
767
- if (start === void 0 || end === void 0) throw new CsvkitDiagnostic("ColumnIdentifierError: Invalid range %s. Ranges must be two integers separated by a - or : character.");
768
- for (let value = BigInt(start); value <= BigInt(end); value++) {
769
- step();
770
- excludes.add(match(names, value, offset2));
771
- }
772
- }
773
- }
713
+ const sign = normalized[0] === "-" ? -1 : 1;
714
+ const unsigned = stripWhitespace(["-", "+", "|"].includes(normalized[0] ?? "") ? normalized.slice(1) : normalized);
715
+ let fields;
716
+ for (let index = 0; index < DURATION_PATTERNS.length; index++) {
717
+ const pattern = DURATION_PATTERNS[index];
718
+ step();
719
+ const m = pattern.exec(unsigned);
720
+ if (!m || !m.slice(1).some(Boolean)) continue;
721
+ fields = index === 0 || index === 2 ? m.slice(1) : index === 1 ? [void 0, void 0, void 0, m[1], m[2]] : index === 3 ? [void 0, ...m.slice(1)] : [void 0, void 0, void 0, void 0, m[1]];
722
+ break;
723
+ }
724
+ if (!fields) throw new TemporalCastError(`Can not parse value "${text}" to as timedelta.`);
725
+ const multipliers = DURATION_MULTIPLIERS;
726
+ for (const field of fields) if (field && !/^\d+(?:\.\d*)?$|^\.\d+$/.test(field)) throw new CsvkitDiagnostic(`ValueError: could not convert string to float: ${repr(field)}`);
727
+ const integers = fields.every((value) => !value || /^\d+$/.test(value));
728
+ let micros;
729
+ if (integers) micros = BigInt(sign) * fields.reduce((total, field, index) => total + BigInt(field ?? 0) * BigInt(multipliers[index]), 0n) * 1000000n;
730
+ else {
731
+ let seconds;
732
+ if (!fields[4] || /^\d+$/.test(fields[4])) seconds = sign * Math.trunc(fields.slice(0, 4).reduce((total, field, index) => total + Number(field ?? 0) * multipliers[index], 0)) + Number(fields[4] ?? 0);
733
+ else seconds = sign * fields.reduce((total, field, index) => total + Number(field ?? 0) * multipliers[index], 0);
734
+ if (!Number.isFinite(seconds) || Math.abs(seconds * 1e6) > Number.MAX_SAFE_INTEGER) throw new CsvkitBlocked("timedelta float range");
735
+ const whole = Math.trunc(seconds);
736
+ const value = (seconds - whole) * 1e6;
737
+ const floor = Math.floor(value);
738
+ const fraction = value - floor;
739
+ micros = BigInt(whole) * 1000000n + BigInt(fraction > 0.5 || fraction === 0.5 && floor % 2 !== 0 ? floor + 1 : floor);
774
740
  }
775
- return columns.filter((index) => {
776
- step();
777
- return !excludes.has(index);
778
- });
741
+ const days = micros < 0n ? (micros - 86399999999n) / 86400000000n : micros / 86400000000n;
742
+ if (days < -999999999n || days > 999999999n) throw new CsvkitDiagnostic(`OverflowError: Python int too large to convert to C int`);
743
+ return { kind: "timedelta", microseconds: micros };
779
744
  }
780
-
781
- // packages/safe-bash-command-csvkit/src/types/decimal.ts
782
- init_buffer();
783
- var DecimalTrap = class extends Error {
784
- constructor(operation) {
785
- super(operation);
786
- this.operation = operation;
745
+ function temporalOrder(value) {
746
+ const m = /^(\d{4})-(\d{2})-(\d{2})(?: (\d{2}):(\d{2}):(\d{2})(?:\.(\d{6}))?([+-]\d{2}:\d{2}(?::\d{2}(?:\.\d{6})?)?)?)?$/.exec(value);
747
+ if (!m) throw new CsvkitBlocked("temporal ordering offset profile");
748
+ let result = BigInt(ordinal(Number(m[1]), Number(m[2]), Number(m[3]))) * 86400000000n + BigInt(Number(m[4] ?? 0) * 3600 + Number(m[5] ?? 0) * 60 + Number(m[6] ?? 0)) * 1000000n + BigInt(m[7] ?? 0);
749
+ if (m[8]) {
750
+ const zone = m[8];
751
+ const seconds = Number(zone.slice(1, 3)) * 3600 + Number(zone.slice(4, 6)) * 60 + Number(zone.slice(7, 9) || 0);
752
+ const micros = BigInt(seconds) * 1000000n + BigInt(zone.slice(10) || 0);
753
+ result -= (zone[0] === "-" ? -1n : 1n) * micros;
787
754
  }
788
- operation;
755
+ return result;
756
+ }
757
+
758
+ // packages/safe-bash-command-csvkit/src/table/types.ts
759
+ function columnTypeOrder(options) {
760
+ if (options.noInference) return ["Text"];
761
+ if (options.numberTextOnly) return ["Number", "Text"];
762
+ if (options.datetimeFormat) return ["Boolean", "TimeDelta", "Date", "DateTime", "Number", "Text"];
763
+ if (options.dateFormat) return ["Boolean", "TimeDelta", "Date", "Number", "DateTime", "Text"];
764
+ return ["Boolean", "Number", "TimeDelta", "Date", "DateTime", "Text"];
765
+ }
766
+ var CastError = class extends Error {
789
767
  };
790
- var Decimal = class _Decimal {
791
- constructor(negative, coefficient, exponent, special, payload = "") {
792
- this.negative = negative;
793
- this.coefficient = coefficient;
794
- this.exponent = exponent;
795
- this.special = special;
796
- this.payload = payload;
768
+ var DEFAULT_NULL_SET = /* @__PURE__ */ new Set(["", "na", "n/a", "none", "null", "."]);
769
+ var CURRENCY_SYMBOLS = ["\u060B", "$", "\u0192", "\u17DB", "\xA5", "\u20A1", "\u20B1", "\xA3", "\u20AC", "\xA2", "\uFDFC", "\u20AA", "\u20A9", "\u20AD", "\u20AE", "\u20A6", "\u0E3F", "\u20A4", "\u20AB"];
770
+ var BOOLEAN_TRUE_SET = /* @__PURE__ */ new Set(["yes", "y", "true", "t", "1"]);
771
+ var BOOLEAN_FALSE_SET = /* @__PURE__ */ new Set(["no", "n", "false", "f", "0"]);
772
+ function decimal(text, options, step) {
773
+ let allAscii = true;
774
+ for (let i = 0; i < text.length; i++) {
775
+ if (text.charCodeAt(i) >= 128) {
776
+ allAscii = false;
777
+ break;
778
+ }
797
779
  }
798
- negative;
799
- coefficient;
800
- exponent;
801
- special;
802
- payload;
803
- static parse(text) {
804
- let ascii = "";
805
- for (const char of stripWhitespace(text)) {
806
- if (char === "_") continue;
780
+ let ascii;
781
+ if (allAscii) {
782
+ for (let i = 0; i < text.length; i++) step();
783
+ ascii = stripWhitespace(text);
784
+ if (ascii.includes("_")) ascii = ascii.replaceAll("_", "");
785
+ } else {
786
+ ascii = "";
787
+ for (const char of text) {
788
+ step();
807
789
  const code = char.codePointAt(0);
808
790
  const zero = decimalZeroes.find((start) => code >= start && code < start + 10);
809
791
  ascii += zero === void 0 ? char : String(code - zero);
810
792
  }
811
- text = ascii;
812
- const special = /^([+-]?)(Infinity|Inf|sNaN|NaN)(\d*)$/i.exec(text);
813
- if (special) {
814
- const name = special[2].toLowerCase();
815
- if (name.startsWith("inf") && special[3]) throw new DecimalTrap("InvalidOperation");
816
- return new _Decimal(special[1] === "-", 0n, 0, name.startsWith("inf") ? "Infinity" : name === "snan" ? "sNaN" : "NaN", special[3].replace(/^0+/, ""));
817
- }
818
- const match2 = /^([+-]?)(?:(\d+)(?:\.(\d*))?|\.(\d+))(?:[eE]([+-]?\d+))?$/.exec(text);
819
- if (!match2) throw new DecimalTrap("InvalidOperation");
820
- const fraction = match2[3] ?? match2[4] ?? "";
821
- const digits = (match2[2] ?? "") + fraction;
822
- const exponent = BigInt(match2[5] ?? "0") - BigInt(fraction.length);
823
- if (!Number.isSafeInteger(Number(exponent))) throw new DecimalTrap("InvalidOperation");
824
- return new _Decimal(match2[1] === "-", BigInt(digits), Number(exponent));
793
+ ascii = stripWhitespace(ascii).replaceAll("_", "");
825
794
  }
826
- static finite(negative, coefficient, exponent, precision = 28) {
827
- let digits = coefficient.toString().length;
828
- if (digits > precision) {
829
- const cut = digits - precision;
830
- const divisor = 10n ** BigInt(cut);
831
- const rest = coefficient % divisor;
832
- coefficient /= divisor;
833
- if (rest * 2n > divisor || rest * 2n === divisor && coefficient % 2n !== 0n) coefficient++;
834
- exponent += cut;
835
- digits = coefficient.toString().length;
836
- if (digits > precision) {
837
- coefficient /= 10n;
838
- exponent++;
839
- }
795
+ if (/^[+-]?(inf(inity)?)$/i.test(ascii)) return ascii.startsWith("-") ? "-Infinity" : "Infinity";
796
+ const nan = /^[+-]?nan(\d*)$/i.exec(ascii);
797
+ if (nan) {
798
+ if (nan[1].length > (options.maxDecimalDigits ?? Infinity)) throw new CsvkitBlocked("Decimal admission budget exceeded");
799
+ return (ascii.startsWith("-") ? "-" : "") + "NaN" + nan[1].slice(-28).replace(/^0+/, "");
800
+ }
801
+ if (/^[+-]?snan\d*$/i.test(ascii)) throw new CastError();
802
+ const match2 = /^([+-]?)(?:(\d+)(?:\.(\d*))?|\.(\d+))(?:[eE]([+-]?\d+))?$/.exec(ascii);
803
+ if (!match2) throw new CastError();
804
+ const fraction = match2[3] ?? match2[4] ?? "";
805
+ if ((match2[2]?.length ?? 0) + fraction.length > (options.maxDecimalDigits ?? Infinity) || Math.abs(Number(match2[5] ?? 0)) > (options.maxDecimalExponent ?? Infinity)) throw new CsvkitBlocked("Decimal admission budget exceeded");
806
+ if (match2[2] !== void 0 && fraction.length === 0 && match2[5] === void 0 && !ascii.includes(".") && match2[2].length <= 27 && (match2[2].length === 1 || match2[2].charCodeAt(0) !== 48)) {
807
+ if (match2[2] === "0") return match2[1] === "-" ? "-0" : "0";
808
+ return (match2[1] === "-" ? "-" : "") + match2[2];
809
+ }
810
+ return Decimal.parse(ascii).multiply(Decimal.parse("1")).toString();
811
+ }
812
+ function castValue(type, value, options, step = () => {
813
+ }) {
814
+ step();
815
+ if (value === null) return null;
816
+ if (type === "Text" && (!options.nullValues || options.nullValues.length === 0)) {
817
+ if (options.blanks) return value;
818
+ const len = value.length;
819
+ if (len > 4) {
820
+ const c0 = value.charCodeAt(0);
821
+ const cLast = value.charCodeAt(len - 1);
822
+ if (c0 > 32 && c0 < 128 && cLast > 32 && cLast < 128) return value;
840
823
  }
841
- if (exponent + coefficient.toString().length - 1 > 999999) throw new DecimalTrap("Overflow");
842
- if (!Number.isSafeInteger(exponent)) throw new DecimalTrap("InvalidOperation");
843
- return new _Decimal(negative, coefficient, exponent);
844
824
  }
845
- nan(other) {
846
- if (this.special === "sNaN" || other.special === "sNaN") throw new DecimalTrap("InvalidOperation");
847
- const value = this.special === "NaN" ? this : other.special === "NaN" ? other : void 0;
848
- return value && new _Decimal(value.negative, 0n, 0, "NaN", value.payload.slice(-28).replace(/^0+/, ""));
825
+ let text = stripWhitespace(value);
826
+ if (type === "Boolean" && value.includes(",")) text = stripWhitespace(value.replaceAll(",", ""));
827
+ const lowered = lowerText(text);
828
+ if (!options.blanks && DEFAULT_NULL_SET.has(lowered)) return null;
829
+ if (options.nullValues && options.nullValues.length > 0 && options.nullValues.some((item) => lowerText(item) === lowered)) return null;
830
+ if (type === "Text") return value;
831
+ if (type === "Boolean") {
832
+ if (BOOLEAN_TRUE_SET.has(lowered)) return true;
833
+ if (BOOLEAN_FALSE_SET.has(lowered)) return false;
834
+ throw new CastError(`Can not convert value ${text} to bool.`);
849
835
  }
850
- add(other) {
851
- const nan = this.nan(other);
852
- if (nan) return nan;
853
- if (this.special === "Infinity" || other.special === "Infinity") {
854
- if (this.special === other.special && this.negative !== other.negative) throw new DecimalTrap("InvalidOperation");
855
- return this.special ? this : other;
836
+ const { locale: numberLocale, ...temporalOptions } = options;
837
+ if (type === "TimeDelta" || type === "Date" || type === "DateTime") {
838
+ try {
839
+ return type === "TimeDelta" ? duration(text, step) : temporalDate(type, text, temporalOptions, step);
840
+ } catch (error) {
841
+ if (error instanceof TemporalCastError) throw new CastError(error.message);
842
+ throw error;
856
843
  }
857
- const exponent = Math.min(this.exponent, other.exponent);
858
- const a = this.coefficient * 10n ** BigInt(this.exponent - exponent) * (this.negative ? -1n : 1n);
859
- const b = other.coefficient * 10n ** BigInt(other.exponent - exponent) * (other.negative ? -1n : 1n);
860
- const sum = a + b;
861
- return _Decimal.finite(sum < 0n || sum === 0n && this.negative && other.negative, sum < 0n ? -sum : sum, exponent);
862
844
  }
863
- multiply(other) {
864
- const nan = this.nan(other);
865
- if (nan) return nan;
866
- const negative = this.negative !== other.negative;
867
- if (this.special || other.special) {
868
- if (!this.special && this.coefficient === 0n || !other.special && other.coefficient === 0n) throw new DecimalTrap("InvalidOperation");
869
- return new _Decimal(negative, 0n, 0, "Infinity");
845
+ const separators = { en_US: { group: ",", decimal: "." }, de_DE: { group: ".", decimal: "," } };
846
+ const locale = numberLocale ?? "en_US";
847
+ const symbols = separators[locale];
848
+ if (!symbols) throw new CsvkitBlocked(`Agate Number locale ${locale}`);
849
+ if (text.startsWith("%") || text.endsWith("%")) text = text.replace(/^%+|%+$/g, "");
850
+ const negative = text.startsWith("-");
851
+ if (negative) text = text.slice(1);
852
+ if (text.length > 0) {
853
+ const fCode = text.charCodeAt(0);
854
+ const lCode = text.charCodeAt(text.length - 1);
855
+ if (fCode < 48 || fCode > 57 || lCode < 48 || lCode > 57) {
856
+ for (const symbol of CURRENCY_SYMBOLS) {
857
+ while (text.startsWith(symbol)) {
858
+ step();
859
+ text = text.slice(symbol.length);
860
+ }
861
+ while (text.endsWith(symbol)) {
862
+ step();
863
+ text = text.slice(0, -symbol.length);
864
+ }
865
+ }
870
866
  }
871
- return _Decimal.finite(negative, this.coefficient * other.coefficient, this.exponent + other.exponent);
872
867
  }
873
- /** CPython mpdecimal integer power: precision + exponent digits + 2. */
874
- square() {
875
- const nan = this.nan(this);
876
- if (nan) return nan;
877
- if (this.special) return new _Decimal(false, 0n, 0, "Infinity");
878
- if (this.coefficient === 0n) return new _Decimal(false, 0n, 0);
879
- const working = _Decimal.finite(false, this.coefficient * this.coefficient, this.exponent * 2, 31);
880
- return _Decimal.finite(false, working.coefficient, working.exponent);
868
+ if (text.includes(symbols.group)) text = text.replaceAll(symbols.group, "");
869
+ if (symbols.decimal !== "." && text.includes(symbols.decimal)) text = text.replaceAll(symbols.decimal, ".");
870
+ if (options.noLeadingZeroes && text.length > 1 && text[0] === "0" && text[1] !== ".") throw new CastError(`Can not parse value "${text}" as Decimal without leading zeroes`);
871
+ try {
872
+ let value2 = decimal(text, options, step);
873
+ if (negative && !value2.includes("NaN")) value2 = value2.startsWith("-") ? value2.slice(1) : "-" + value2;
874
+ return { kind: "decimal", value: value2 };
875
+ } catch (error) {
876
+ if (!(error instanceof CastError)) throw error;
877
+ throw new CastError(`Can not parse value "${text}" as Decimal.`);
881
878
  }
882
- divide(other) {
883
- const nan = this.nan(other);
884
- if (nan) return nan;
885
- const negative = this.negative !== other.negative;
886
- if (this.special && other.special) throw new DecimalTrap("InvalidOperation");
887
- if (this.special) return new _Decimal(negative, 0n, 0, "Infinity");
888
- if (other.special) return new _Decimal(negative, 0n, -1000026);
889
- if (other.coefficient === 0n) throw new DecimalTrap(this.coefficient === 0n ? "InvalidOperation" : "DivisionByZero");
890
- const preferred = this.exponent - other.exponent;
891
- if (this.coefficient === 0n) return _Decimal.finite(negative, 0n, preferred);
892
- const shift = Math.max(0, 29 + other.coefficient.toString().length - this.coefficient.toString().length);
893
- const numerator = this.coefficient * 10n ** BigInt(shift);
894
- let coefficient = numerator / other.coefficient;
895
- const remainder = numerator % other.coefficient;
896
- if (remainder !== 0n) coefficient = coefficient * 10n + 1n;
897
- let result = _Decimal.finite(negative, coefficient, preferred - shift - (remainder !== 0n ? 1 : 0));
898
- if (numerator % other.coefficient === 0n) {
899
- coefficient = result.coefficient;
900
- let exponent = result.exponent;
901
- while (exponent < preferred && coefficient % 10n === 0n) {
902
- coefficient /= 10n;
903
- exponent++;
879
+ }
880
+ function inferTable(headers, rows, options = {}, step = () => {
881
+ }) {
882
+ if (headers.some((name) => !name) || new Set(headers).size !== headers.length || !headers.length && rows.length) throw new CsvkitBlocked("Agate duplicate/unnamed column warning provenance");
883
+ const order = options.limit === 0 ? ["Text"] : columnTypeOrder(options);
884
+ const sample = options.limit ? rows.slice(0, options.limit) : rows;
885
+ const hypotheses = headers.map(() => new Set(order));
886
+ for (const row of sample) {
887
+ for (const [index, candidates] of hypotheses.entries()) {
888
+ step();
889
+ if (candidates.size === 1 || row.length <= index) continue;
890
+ for (const type of candidates) {
891
+ if (type === "Text") {
892
+ step();
893
+ continue;
894
+ }
895
+ try {
896
+ castValue(type, row[index], options, step);
897
+ } catch (error) {
898
+ if (!(error instanceof CastError)) throw error;
899
+ candidates.delete(type);
900
+ }
904
901
  }
905
- result = new _Decimal(negative, coefficient, exponent);
906
902
  }
907
- return result;
908
903
  }
909
- compare(other) {
910
- if (this.special === "NaN" || this.special === "sNaN" || other.special === "NaN" || other.special === "sNaN") throw new DecimalTrap("InvalidOperation");
911
- if (this.special || other.special) {
912
- if (this.special === other.special && this.negative === other.negative) return 0;
913
- return this.special ? this.negative ? -1 : 1 : other.negative ? 1 : -1;
904
+ const columns = headers.map((name, index) => {
905
+ for (const type of order) {
906
+ if (hypotheses[index].has(type)) return { name, type };
914
907
  }
915
- if (this.coefficient === 0n && other.coefficient === 0n) return 0;
916
- if (this.negative !== other.negative) return this.negative ? -1 : 1;
917
- const exponent = Math.min(this.exponent, other.exponent);
918
- const a = this.coefficient * 10n ** BigInt(this.exponent - exponent);
919
- const b = other.coefficient * 10n ** BigInt(other.exponent - exponent);
920
- return (a === b ? 0 : a < b ? -1 : 1) * (this.negative ? -1 : 1);
908
+ throw new CsvkitBlocked("no compatible Agate column type");
909
+ });
910
+ const typedRows = rows.map((row, rowIndex) => {
911
+ if (row.length > headers.length) throw new CsvkitDiagnostic(`ValueError: Row ${rowIndex} has ${row.length} values, but Table only has ${headers.length} columns.`);
912
+ return columns.map((column, index) => {
913
+ try {
914
+ return castValue(column.type, row[index] ?? null, options.limit === 0 ? {} : options, step);
915
+ } catch (error) {
916
+ if (!(error instanceof CastError)) throw error;
917
+ throw new CsvkitDiagnostic(`CastError: ${error.message} Error at row ${rowIndex} column ${column.name}.`);
918
+ }
919
+ });
920
+ });
921
+ return { headers, columns, rows: typedRows, rawRows: rows };
922
+ }
923
+
924
+ // packages/safe-bash-command-csvkit/src/csv.ts
925
+ init_buffer();
926
+ function numericField(field) {
927
+ const invalid = () => {
928
+ throw new CsvkitDiagnostic(`ValueError: could not convert string to float: ${repr(field)}`);
929
+ };
930
+ const chars = Array.from(field);
931
+ let first = 0;
932
+ let last = chars.length;
933
+ while (first < last && integerWhitespace.includes(chars[first].codePointAt(0))) first++;
934
+ while (last > first && integerWhitespace.includes(chars[last - 1].codePointAt(0))) last--;
935
+ let value = "";
936
+ for (let index2 = first; index2 < last; index2++) {
937
+ const char = chars[index2];
938
+ const code = char.codePointAt(0);
939
+ const zero = decimalZeroes.find((start) => code >= start && code < start + 10);
940
+ value += zero === void 0 ? char : String(code - zero);
921
941
  }
922
- normalized() {
923
- const nan = this.nan(this);
924
- if (nan) return nan;
925
- if (this.special) return this;
926
- const rounded = _Decimal.finite(this.negative, this.coefficient, this.exponent);
927
- let coefficient = rounded.coefficient;
928
- let exponent = rounded.exponent;
929
- if (coefficient === 0n) return new _Decimal(this.negative, 0n, 0);
930
- while (coefficient % 10n === 0n) {
931
- coefficient /= 10n;
932
- exponent++;
942
+ const lower = value.toLowerCase();
943
+ const unsigned = lower[0] === "+" || lower[0] === "-" ? lower.slice(1) : lower;
944
+ if (unsigned === "inf" || unsigned === "infinity") return lower[0] === "-" ? -Infinity : Infinity;
945
+ if (unsigned === "nan") return NaN;
946
+ const digit = (char) => char !== void 0 && char >= "0" && char <= "9";
947
+ let normalized = "";
948
+ for (let index2 = 0; index2 < value.length; index2++) {
949
+ if (value[index2] === "_") {
950
+ if (!digit(value[index2 - 1]) || !digit(value[index2 + 1])) invalid();
951
+ } else normalized += value[index2];
952
+ }
953
+ let index = normalized[0] === "+" || normalized[0] === "-" ? 1 : 0;
954
+ let digits = 0;
955
+ while (digit(normalized[index])) {
956
+ index++;
957
+ digits++;
958
+ }
959
+ if (normalized[index] === ".") {
960
+ index++;
961
+ while (digit(normalized[index])) {
962
+ index++;
963
+ digits++;
933
964
  }
934
- return new _Decimal(this.negative, coefficient, exponent);
935
965
  }
936
- toString() {
937
- const sign = this.negative ? "-" : "";
938
- if (this.special) return sign + this.special + this.payload;
939
- const digits = this.coefficient.toString();
940
- const adjusted = this.exponent + digits.length - 1;
941
- if (this.exponent > 0 || adjusted < -6) return sign + digits[0] + (digits.length > 1 ? "." + digits.slice(1) : "") + "E" + (adjusted >= 0 ? "+" : "") + adjusted;
942
- const point = digits.length + this.exponent;
943
- if (point > 0) return sign + digits.slice(0, point) + (point < digits.length ? "." + digits.slice(point) : "");
944
- return sign + "0." + "0".repeat(-point) + digits;
966
+ if (!digits) invalid();
967
+ if (normalized[index] === "e" || normalized[index] === "E") {
968
+ index++;
969
+ if (normalized[index] === "+" || normalized[index] === "-") index++;
970
+ const start = index;
971
+ while (digit(normalized[index])) index++;
972
+ if (index === start) invalid();
945
973
  }
946
- };
947
-
948
- // packages/safe-bash-command-csvkit/src/table/types.ts
949
- init_buffer();
950
-
951
- // packages/safe-bash-command-csvkit/src/types/temporal.ts
952
- init_buffer();
953
- var TemporalCastError = class extends Error {
954
- };
955
- var months = ["january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "december"];
956
- var weekdays = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"];
957
- var leap = (year) => year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);
958
- var monthDays = (year, month) => [31, leap(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month - 1] ?? 0;
959
- var pad = (value, width = 2) => String(value).padStart(width, "0");
960
- function valid(p) {
961
- return p.year >= 1 && p.year <= 9999 && p.month >= 1 && p.month <= 12 && p.day >= 1 && p.day <= monthDays(p.year, p.month) && p.hour >= 0 && p.hour < 24 && p.minute >= 0 && p.minute < 60 && p.second >= 0 && p.second < 60;
962
- }
963
- function dateText(p) {
964
- return `${pad(p.year, 4)}-${pad(p.month)}-${pad(p.day)}`;
965
- }
966
- function datetimeText(p) {
967
- return `${dateText(p)} ${pad(p.hour)}:${pad(p.minute)}:${pad(p.second)}${p.microsecond ? "." + pad(p.microsecond, 6) : ""}${p.offset ?? ""}`;
968
- }
969
- function base(year = 1900, month = 1, day = 1) {
970
- return { year, month, day, hour: 0, minute: 0, second: 0, microsecond: 0 };
971
- }
972
- function ordinal(year, month, day) {
973
- const previous = year - 1;
974
- let days = previous * 365 + Math.floor(previous / 4) - Math.floor(previous / 100) + Math.floor(previous / 400);
975
- for (let index = 1; index < month; index++) days += monthDays(year, index);
976
- return days + day;
974
+ if (index !== normalized.length) invalid();
975
+ return Number(normalized);
977
976
  }
978
- function fromOrdinal(value) {
979
- if (value < 1 || value > ordinal(9999, 12, 31)) throw new TemporalCastError();
980
- let year = Math.min(9999, Math.floor((value - 1) / 365.2425) + 1);
981
- while (ordinal(year, 1, 1) > value) year--;
982
- while (year < 9999 && ordinal(year + 1, 1, 1) <= value) year++;
983
- let month = 1;
984
- while (month < 12 && ordinal(year, month + 1, 1) <= value) month++;
985
- return base(year, month, value - ordinal(year, month, 1) + 1);
977
+ function character(value, fallback, name) {
978
+ const result = value ?? fallback;
979
+ if (Array.from(result).length !== 1) throw new CsvkitDiagnostic(`TypeError: "${name}" must be a unicode character${name === "delimiter" ? "" : " or None"}, not a string of length ${Array.from(result).length}`);
980
+ return result;
986
981
  }
987
- function offset(text) {
988
- if (text === "Z") return "+00:00";
989
- const m = /^([+-])(\d{2}):?(\d{2})(?::?(\d{2})(?:\.(\d{1,6}))?)?$/.exec(text);
990
- if (!m || Number(m[2]) > 23 || Number(m[3]) > 59 || Number(m[4] ?? 0) > 59) throw new TemporalCastError();
991
- const seconds = Number(m[4] ?? 0);
992
- const micros = Number((m[5] ?? "").padEnd(6, "0"));
993
- if (!Number(m[2]) && !Number(m[3]) && !seconds && !micros) return "+00:00";
994
- return `${m[1]}${m[2]}:${m[3]}${seconds || micros ? ":" + pad(seconds) : ""}${micros ? "." + pad(micros, 6) : ""}`;
982
+ function dialectCharacters(dialect) {
983
+ const quoting = dialect.quoting ?? (dialect.quotechar === null ? 3 : 0);
984
+ if (!Number.isInteger(quoting) || quoting < 0 || quoting > 5) throw new CsvkitDiagnostic('TypeError: bad "quoting" value');
985
+ if (dialect.quotechar === null && quoting !== 3) throw new CsvkitDiagnostic("TypeError: quotechar must be set if quoting enabled");
986
+ const delimiter = character(dialect.delimiter, ",", "delimiter");
987
+ const quote = dialect.quotechar === null ? "" : character(dialect.quotechar, '"', "quotechar");
988
+ const escape = dialect.escapechar === void 0 || dialect.escapechar === null ? void 0 : character(dialect.escapechar, "", "escapechar");
989
+ for (const [name, value] of [["delimiter", delimiter], ["quotechar", quote], ["escapechar", escape]]) {
990
+ if (value === "\r" || value === "\n" || name !== "delimiter" && value === " " && dialect.skipinitialspace)
991
+ throw new CsvkitDiagnostic(`ValueError: bad ${name} value`);
992
+ }
993
+ if (delimiter === quote) throw new CsvkitDiagnostic("ValueError: bad delimiter or quotechar value");
994
+ if (delimiter === escape) throw new CsvkitDiagnostic("ValueError: bad delimiter or escapechar value");
995
+ if (escape === quote) throw new CsvkitDiagnostic("ValueError: bad escapechar or quotechar value");
996
+ return { delimiter, quote, escape };
995
997
  }
996
- function strptime(text, format, step) {
997
- const p = base();
998
- let position = 0;
999
- let ampm;
1000
- let twelve = false;
1001
- const seen = /* @__PURE__ */ new Set();
1002
- const consume = (pattern) => {
1003
- const match2 = pattern.exec(text.slice(position));
1004
- if (!match2) throw new TemporalCastError();
1005
- position += match2[0].length;
1006
- return match2[0];
998
+ function createCsvParser(dialect, step, preserveNewlines = false, physicalLine, admitRow = () => {
999
+ }) {
1000
+ const { delimiter, quote, escape } = dialectCharacters(dialect);
1001
+ let state = "start";
1002
+ let field = "";
1003
+ let length = 0;
1004
+ let cells = [];
1005
+ let wasQuoted = false;
1006
+ let line = 1;
1007
+ let active = false;
1008
+ let previousCR = false;
1009
+ let rowStarted = false;
1010
+ let finished = false;
1011
+ const append = (char) => {
1012
+ if (cells.length >= (dialect.columnBudget ?? Infinity)) throw new CsvkitBlocked("column budget exceeded");
1013
+ length++;
1014
+ if (length > (dialect.fieldBudget ?? Infinity)) throw new CsvkitBlocked("field character budget exceeded");
1015
+ if (length > (dialect.fieldLimit ?? Infinity)) throw new CsvkitDiagnostic(`FieldSizeLimitError: CSV contains a field longer than the maximum length of ${dialect.fieldLimit} characters on line ${physicalLine?.() ?? line}. Try raising the maximum with the field_size_limit parameter, or try setting quoting=csv.QUOTE_NONE.`);
1016
+ field += char;
1007
1017
  };
1008
- for (let index = 0; index < format.length; index++) {
1009
- step();
1010
- const char = format[index];
1011
- if (!stripWhitespace(char)) {
1012
- while (index + 1 < format.length && !stripWhitespace(format[index + 1])) {
1013
- step();
1014
- index++;
1018
+ const finish = () => {
1019
+ if (cells.length >= (dialect.columnBudget ?? Infinity)) throw new CsvkitBlocked("column budget exceeded");
1020
+ const quoting = dialect.quoting ?? 0;
1021
+ cells.push(!wasQuoted && !field && (quoting === 4 || quoting === 5) ? null : !wasQuoted && field && (quoting === 2 || quoting === 4) ? numericField(field) : field);
1022
+ field = "";
1023
+ length = 0;
1024
+ state = "start";
1025
+ wasQuoted = false;
1026
+ };
1027
+ let lastChar = "";
1028
+ return {
1029
+ get done() {
1030
+ return finished;
1031
+ },
1032
+ isIdle() {
1033
+ return !finished && !rowStarted && state === "start" && !previousCR && !active && cells.length === 0 && field.length === 0;
1034
+ },
1035
+ advancePlainLine() {
1036
+ lastChar = "\n";
1037
+ line++;
1038
+ },
1039
+ feed(char) {
1040
+ if (finished) return void 0;
1041
+ if (char === null) {
1042
+ finished = true;
1043
+ if (active) {
1044
+ if (state === "escaped" || state === "quotedEscape") append("\n");
1045
+ finish();
1046
+ const rec = { cells, line: physicalLine?.() ?? line - (lastChar === "\n" || lastChar === "\r" ? 1 : 0) };
1047
+ cells = [];
1048
+ return rec;
1049
+ }
1050
+ return void 0;
1015
1051
  }
1016
- const start = position;
1017
- while (position < text.length && !stripWhitespace(text[position])) {
1018
- step();
1019
- position++;
1052
+ if (char === void 0) {
1053
+ if (!rowStarted) {
1054
+ admitRow();
1055
+ rowStarted = true;
1056
+ }
1057
+ previousCR = false;
1058
+ if (state === "escaped" || state === "quotedEscape") {
1059
+ append("\n");
1060
+ state = state === "escaped" ? "plain" : "quoted";
1061
+ return void 0;
1062
+ }
1063
+ if (state === "escapedNewline") return void 0;
1064
+ if (state === "quoted") return void 0;
1065
+ if (active || cells.length || field) finish();
1066
+ const rec = { cells, line: physicalLine?.() ?? line };
1067
+ cells = [];
1068
+ state = "start";
1069
+ active = false;
1070
+ rowStarted = false;
1071
+ return rec;
1020
1072
  }
1021
- if (start === position) throw new TemporalCastError();
1022
- continue;
1023
- }
1024
- if (char !== "%") {
1025
- if (text[position++] !== char) throw new TemporalCastError();
1026
- continue;
1027
- }
1028
- const directive = format[++index];
1029
- if (!directive) throw new TemporalCastError();
1030
- if (seen.has(directive)) throw new CsvkitBlocked(`strptime duplicate group name '${directive}'`);
1031
- if (directive !== "%") seen.add(directive);
1032
- switch (directive) {
1033
- case "%":
1034
- if (text[position++] !== "%") throw new TemporalCastError();
1035
- break;
1036
- case "Y":
1037
- p.year = Number(consume(/^\d{4}/));
1038
- break;
1039
- case "y": {
1040
- const y = Number(consume(/^\d{2}/));
1041
- p.year = y >= 69 ? 1900 + y : 2e3 + y;
1042
- break;
1073
+ lastChar = char;
1074
+ step();
1075
+ const pairedLF = previousCR && char === "\n";
1076
+ if (pairedLF && !preserveNewlines) {
1077
+ previousCR = false;
1078
+ return void 0;
1043
1079
  }
1044
- case "m":
1045
- p.month = Number(consume(/^(?:1[0-2]|0[1-9]|[1-9])/));
1046
- break;
1047
- case "d":
1048
- p.day = Number(consume(/^(?:3[0-1]|[1-2]\d|0[1-9]|[1-9]| [1-9])/));
1049
- break;
1050
- case "H":
1051
- p.hour = Number(consume(/^(?:2[0-3]|[01]\d|\d| \d)/));
1052
- break;
1053
- case "I":
1054
- p.hour = Number(consume(/^(?:1[0-2]|0[1-9]|[1-9]| [1-9])/));
1055
- twelve = true;
1056
- if (p.hour < 1 || p.hour > 12) throw new TemporalCastError();
1057
- break;
1058
- case "M":
1059
- p.minute = Number(consume(/^(?:[0-5]\d|\d)/));
1060
- break;
1061
- case "S":
1062
- p.second = Number(consume(/^(?:6[01]|[0-5]\d|\d)/));
1063
- break;
1064
- case "f":
1065
- p.microsecond = Number(consume(/^\d{1,6}/).padEnd(6, "0"));
1066
- break;
1067
- case "p":
1068
- ampm = consume(/^(?:am|pm)/i).toLowerCase();
1069
- break;
1070
- case "b":
1071
- case "B": {
1072
- const name = consume(directive === "b" ? /^[a-z]{3}/i : /^[a-z]+/i).toLowerCase();
1073
- p.month = months.findIndex((item) => directive === "b" ? item.slice(0, 3) === name : item === name) + 1;
1074
- if (!p.month) throw new TemporalCastError();
1075
- break;
1080
+ if (!rowStarted) {
1081
+ admitRow();
1082
+ rowStarted = true;
1076
1083
  }
1077
- case "a":
1078
- case "A": {
1079
- const name = consume(directive === "a" ? /^[a-z]{3}/i : /^[a-z]+/i).toLowerCase();
1080
- if (!weekdays.some((item) => directive === "a" ? item.slice(0, 3) === name : item === name)) throw new TemporalCastError();
1081
- break;
1084
+ previousCR = char === "\r";
1085
+ if (previousCR && !preserveNewlines) char = "\n";
1086
+ const wasActive = active;
1087
+ active = true;
1088
+ let emitted;
1089
+ if (state === "escaped" || state === "quotedEscape") {
1090
+ append(char);
1091
+ state = state === "escaped" ? char === "\n" || char === "\r" ? "escapedNewline" : "plain" : "quoted";
1092
+ } else if (state === "quoted") {
1093
+ if (char === escape) state = "quotedEscape";
1094
+ else if (char === quote) state = dialect.doublequote === false ? "plain" : "after";
1095
+ else append(char);
1096
+ } else if (state === "after" && char === quote) {
1097
+ append(char);
1098
+ state = "quoted";
1099
+ } else if (char === "\n" || char === "\r") {
1100
+ if (wasActive || cells.length || field) finish();
1101
+ emitted = { cells, line: physicalLine?.() ?? line };
1102
+ cells = [];
1103
+ state = "start";
1104
+ active = false;
1105
+ rowStarted = false;
1106
+ } else if (state === "start" && char === " " && dialect.skipinitialspace) {
1107
+ } else if (char === delimiter) finish();
1108
+ else if (state === "after") {
1109
+ append(char);
1110
+ state = "plain";
1111
+ } else if (char === escape) state = "escaped";
1112
+ else if (state === "start" && char === quote && dialect.quoting !== 3) {
1113
+ state = "quoted";
1114
+ wasQuoted = true;
1115
+ } else {
1116
+ append(char);
1117
+ if (state !== "escapedNewline") state = "plain";
1082
1118
  }
1083
- case "z":
1084
- p.offset = offset(consume(/^(?:Z|[+-]\d{2}:?\d{2}(?::?\d{2}(?:\.\d{1,6})?)?)/));
1085
- break;
1086
- case "Z":
1087
- consume(/^(?:UTC|GMT)/i);
1088
- break;
1089
- default:
1090
- throw new CsvkitBlocked(`strptime directive %${directive}`);
1119
+ if ((char === "\n" || char === "\r") && !pairedLF) line++;
1120
+ return emitted;
1091
1121
  }
1092
- }
1093
- if (position !== text.length) throw new TemporalCastError();
1094
- if (twelve) p.hour = p.hour % 12 + (ampm === "pm" ? 12 : 0);
1095
- if (!valid(p)) throw new TemporalCastError();
1096
- return p;
1122
+ };
1097
1123
  }
1098
- function implicitDate(text, source, step) {
1099
- step();
1100
- let normalized = "";
1124
+ function* readCsv(text, dialect = {}, step = () => {
1125
+ }) {
1126
+ const parser = createCsvParser(dialect, step);
1101
1127
  for (const char of text) {
1102
- step();
1103
- const code = char.codePointAt(0);
1104
- if (integerWhitespace.includes(code) || code >= 28 && code <= 31) {
1105
- if (!normalized.endsWith(" ")) normalized += " ";
1106
- } else normalized += char;
1107
- }
1108
- text = normalized;
1109
- let m = /^(\d{4})-(\d{1,2})-(\d{1,2})$/.exec(text);
1110
- if (m) {
1111
- const first = Number(m[1]);
1112
- let year = first <= 31 ? Number(m[3]) : first;
1113
- year += year < 50 ? 2e3 : year < 100 ? 1900 : 0;
1114
- return base(year, first <= 31 ? first : Number(m[2]), first <= 31 ? Number(m[2]) : Number(m[3]));
1115
- }
1116
- m = /^(\d{1,2})\/(\d{1,2})(?:\/(\d{2}|\d{4}))?$/.exec(text);
1117
- if (m) {
1118
- let year = m[3] ? Number(m[3]) : source.year;
1119
- if (m[3]?.length === 2) year += year >= 50 ? 1900 : 2e3;
1120
- const month = Number(m[1]);
1121
- const day = Number(m[2]);
1122
- if (!m[3] && (month < source.month || month === source.month && day < source.day)) year++;
1123
- if (!m[3] && year < 100) year += 2e3;
1124
- return base(year, month, day);
1125
- }
1126
- m = /^([a-z]+) (\d{1,2})(?:,? (\d{4}))?$/i.exec(text);
1127
- if (m && months.some((name) => name === m[1].toLowerCase() || name.slice(0, 3) === m[1].toLowerCase())) {
1128
- const month = months.findIndex((name) => name === m[1].toLowerCase() || name.slice(0, 3) === m[1].toLowerCase()) + 1;
1129
- let year = m[3] ? Number(m[3]) : source.year;
1130
- if (!m[3] && (month < source.month || month === source.month && Number(m[2]) < source.day)) year++;
1131
- return base(year, month, Number(m[2]));
1128
+ const next = parser.feed(char);
1129
+ if (next) yield next;
1132
1130
  }
1133
- const lower = text.toLowerCase();
1134
- const start = ordinal(source.year, source.month, source.day);
1135
- if (["today", "tomorrow", "yesterday"].includes(lower)) return fromOrdinal(start + (lower === "tomorrow" ? 1 : lower === "yesterday" ? -1 : 0));
1136
- const weekday = weekdays.indexOf(lower);
1137
- if (weekday >= 0) return fromOrdinal(start + ((weekday - (start - 1) % 7 + 7) % 7 || 7));
1138
- if (lower === "next week") return fromOrdinal(start + 7);
1139
- return void 0;
1131
+ const end = parser.feed(null);
1132
+ if (end) yield end;
1140
1133
  }
1141
- function temporalDate(type, text, options, step) {
1142
- const format = type === "Date" ? options.dateFormat : options.datetimeFormat;
1143
- let nlpAbsent;
1144
- const failure = () => {
1145
- throw new TemporalCastError(format || type === "Date" && nlpAbsent ? `Value "${text}" does not match date format.` : `Can not parse value "${text}" as ${type === "Date" ? "date" : "datetime"}.`);
1146
- };
1147
- if (!format && ["second", "last"].includes(text.toLowerCase())) return failure();
1148
- if (format && options.locale && options.locale !== "en_US") throw new CsvkitBlocked(`LC_TIME strptime locale ${options.locale}`);
1149
- if (options.locale && !["en_US", "en_US.UTF-8"].includes(options.locale)) throw new CsvkitBlocked(`parsedatetime locale ${options.locale}`);
1150
- let p;
1151
- try {
1152
- if (format) p = strptime(text, format, step);
1153
- else {
1154
- if (/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)[eE][+-]?\d+$/.test(text)) throw new TemporalCastError();
1155
- if (/^[+-]?\d+ days?, \d{1,2}:\d{2}:\d{2}(?:\.\d{1,6})?$/.test(text)) throw new TemporalCastError();
1156
- if (/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)\s*(?:ms|us)$/i.test(text)) throw new TemporalCastError();
1157
- const unit = /\d\s*([a-zſıİK]+)$/iu.exec(text)?.[1];
1158
- if (unit) {
1159
- const folded = unit.replace(/[ſıİK]/gu, (char) => char === "\u017F" ? "s" : char === "\u212A" ? "k" : "i").toLowerCase();
1160
- const aliases = ["seconds", "minutes", "second", "minute", "months", "hours", "weeks", "month", "years", "secs", "mins", "hour", "days", "week", "year", "sec", "min", "day", "mth", "hr", "dy", "wk", "yr", "s", "m", "h", "d", "w", "y"];
1161
- if (type === "Date" && aliases.includes(folded) && /[ſı]/u.test(unit)) throw new CsvkitDiagnostic(`KeyError: ${repr(lowerText(unit))}`);
1162
- if (aliases.includes(folded) && (unit.includes("\u0130") || type === "DateTime" && /[ſı]/u.test(unit))) throw new TemporalCastError();
1163
- }
1164
- let source = base(1);
1165
- if (type === "DateTime") {
1166
- if (options.timezone && options.timezone !== "UTC") throw new CsvkitBlocked(`clock timezone ${options.timezone}`);
1167
- if (options.now === void 0 && /^(?:today|tomorrow|yesterday|next week|monday|tuesday|wednesday|thursday|friday|saturday|sunday|\d{1,2}\/\d{1,2}|[a-z]+ \d{1,2})$/i.test(text)) throw new CsvkitBlocked("DateTime injected clock");
1168
- if (options.now !== void 0 && !Number.isFinite(options.now)) throw new CsvkitBlocked("DateTime clock range");
1169
- source = fromOrdinal(Math.floor((options.now ?? 0) / 864e5) + ordinal(1970, 1, 1));
1134
+ function readCsvRecoverable(text, dialect, step) {
1135
+ let offset2 = 0;
1136
+ let lineEnd = 0;
1137
+ let line = 0;
1138
+ let done = false;
1139
+ let parser = createCsvParser(dialect, step, true, () => line);
1140
+ return {
1141
+ next() {
1142
+ if (done) return { done: true, value: void 0 };
1143
+ try {
1144
+ while (offset2 < text.length) {
1145
+ if (offset2 === lineEnd) {
1146
+ line++;
1147
+ lineEnd = offset2;
1148
+ while (lineEnd < text.length && text[lineEnd] !== "\n" && text[lineEnd] !== "\r") {
1149
+ step();
1150
+ lineEnd++;
1151
+ }
1152
+ if (text[lineEnd] === "\r") lineEnd++;
1153
+ if (text[lineEnd] === "\n") lineEnd++;
1154
+ }
1155
+ const char = String.fromCodePoint(text.codePointAt(offset2));
1156
+ offset2 += char.length;
1157
+ const next = parser.feed(char);
1158
+ if (next) {
1159
+ offset2 = lineEnd;
1160
+ return { done: false, value: next };
1161
+ }
1162
+ }
1163
+ done = true;
1164
+ const end = parser.feed(null);
1165
+ return end ? { done: false, value: end } : { done: true, value: void 0 };
1166
+ } catch (failure) {
1167
+ if (failure instanceof CsvkitDiagnostic && !(failure instanceof CsvkitBlocked)) {
1168
+ offset2 = lineEnd;
1169
+ parser = createCsvParser(dialect, step, true, () => line);
1170
+ } else done = true;
1171
+ throw failure;
1170
1172
  }
1171
- p = implicitDate(text, source, step);
1172
- const relative = /^([+-]?(?:\d+(?:\.\d*)?|\.\d+))\s*([a-zK]+)$/iu.exec(text);
1173
- if (!p && relative) {
1174
- const unit2 = lowerText(relative[2]);
1175
- if (["s", "sec", "secs", "second", "seconds", "m", "min", "mins", "minute", "minutes", "h", "hr", "hrs", "hour", "hours"].includes(unit2)) {
1176
- nlpAbsent = false;
1177
- throw new TemporalCastError();
1173
+ },
1174
+ return() {
1175
+ done = true;
1176
+ return { done: true, value: void 0 };
1177
+ }
1178
+ };
1179
+ }
1180
+ async function* readCsvStream(lines, dialect = {}, step = () => {
1181
+ }, admitRow = () => {
1182
+ }) {
1183
+ let physicalLine = 0;
1184
+ const parser = createCsvParser(dialect, step, true, () => physicalLine, admitRow);
1185
+ const { delimiter, quote, escape } = dialectCharacters(dialect);
1186
+ const quoting = dialect.quoting ?? (dialect.quotechar === null ? 3 : 0);
1187
+ const canFastPlain = (quoting === 0 || quoting === 1 || quoting === 3) && !dialect.skipinitialspace && escape === void 0 && delimiter.length === 1;
1188
+ const quoteCode = quote ? quote.charCodeAt(0) : -1;
1189
+ const colBudget = dialect.columnBudget ?? Infinity;
1190
+ const maxFieldLen = Math.min(dialect.fieldBudget ?? Infinity, dialect.fieldLimit ?? Infinity);
1191
+ try {
1192
+ for await (const text of lines) {
1193
+ physicalLine++;
1194
+ const len = text.length;
1195
+ if (canFastPlain && len >= 2 && len <= maxFieldLen && text.charCodeAt(len - 1) === 10 && parser.isIdle?.()) {
1196
+ let plainAscii = true;
1197
+ let fieldCount = 1;
1198
+ const delimCode = delimiter.charCodeAt(0);
1199
+ for (let i = 0; i < len - 1; i++) {
1200
+ const c = text.charCodeAt(i);
1201
+ if (c >= 128 || c === 13 || c === 10 || c === quoteCode) {
1202
+ plainAscii = false;
1203
+ break;
1204
+ }
1205
+ if (c === delimCode) fieldCount++;
1178
1206
  }
1179
- if (["d", "dy", "dys", "day", "days", "w", "wk", "wks", "week", "weeks"].includes(unit2)) {
1180
- const days = Number(relative[1]) * (unit2.startsWith("w") ? 7 : 1);
1181
- if (!Number.isFinite(days)) throw new TemporalCastError();
1182
- nlpAbsent = false;
1183
- p = fromOrdinal(ordinal(source.year, source.month, source.day) + Math.floor(days));
1207
+ if (plainAscii && fieldCount <= colBudget) {
1208
+ step();
1209
+ admitRow();
1210
+ for (let i = 1; i < len; i++) step();
1211
+ parser.advancePlainLine?.();
1212
+ yield { cells: text.slice(0, len - 1).split(delimiter), line: physicalLine };
1213
+ continue;
1184
1214
  }
1185
1215
  }
1186
- nlpAbsent = !p && !/\d.*[-/:]|\b(?:today|tomorrow|yesterday|monday|tuesday|wednesday|thursday|friday|saturday|sunday)\b/i.test(text);
1187
- if (!p && type === "DateTime") {
1188
- const m = /^(\d{4})-(\d{2})-(\d{2})[T ](\d{2}):(\d{2})(?::(\d{2})(?:[.,](\d+))?)?(Z|[+-]\d{2}:?\d{2})?$/.exec(text);
1189
- if (m) {
1190
- p = { ...base(Number(m[1]), Number(m[2]), Number(m[3])), hour: Number(m[4]), minute: Number(m[5]), second: Number(m[6] ?? 0), microsecond: Number((m[7] ?? "").slice(0, 6).padEnd(6, "0")), ...m[8] ? { offset: offset(m[8]) } : {} };
1216
+ let offset2 = 0;
1217
+ let completed = false;
1218
+ for (const char of text) {
1219
+ offset2 += char.length;
1220
+ const next = parser.feed(char);
1221
+ if (next) {
1222
+ for (const trailing of text.slice(offset2)) if (trailing !== "\n" && trailing !== "\r")
1223
+ throw new CsvkitDiagnostic("Error: new-line character seen in unquoted field - do you need to open the file with newline=''?");
1224
+ yield next;
1225
+ completed = true;
1226
+ break;
1227
+ }
1228
+ }
1229
+ if (!completed) {
1230
+ const boundary = parser.feed(void 0);
1231
+ if (boundary) {
1232
+ yield boundary;
1191
1233
  }
1192
1234
  }
1193
- if (!p && !/^\d{4}-\d{2}-\d{2}[T ]/.test(text) && /(?:\b(?:next|last|ago|week|month|year|day|hour|minute|second|noon|midnight|tonight)\b|\d.*[a-z])/i.test(text)) throw new CsvkitBlocked("parsedatetime expression " + repr(text));
1194
- }
1195
- if (!p || !valid(p)) failure();
1196
- return { kind: type === "Date" ? "date" : "datetime", value: type === "Date" ? dateText(p) : datetimeText(p) };
1197
- } catch (error) {
1198
- if (error instanceof TemporalCastError) {
1199
- if (!format && !p && type === "Date" && nlpAbsent === void 0) nlpAbsent = true;
1200
- failure();
1201
1235
  }
1202
- throw error;
1236
+ const end = parser.feed(null);
1237
+ if (end) yield end;
1238
+ } finally {
1203
1239
  }
1204
1240
  }
1205
- var DURATION_UNITS = ["(?:w|wks?|weeks?)", "(?:d|dys?|days?)", "(?:h|hrs?|hours?)", "(?:m|mins?|minutes?)", "(?:s|secs?|seconds?)"];
1206
- var DURATION_NAMED = DURATION_UNITS.map((unit, index) => `(?:([\\d.]+)\\s*${unit}${index === 4 ? "" : "\\s*(?:[,/]\\s*)?"})?`).join("\\s*");
1207
- var DURATION_PATTERNS = [
1208
- new RegExp(`^\\s*${DURATION_NAMED}\\s*$`, "i"),
1209
- /^(\d{1,2}):(\d{2}(?:\.\d+)?)$/,
1210
- new RegExp(`^(?:([\\d.]+)\\s*${DURATION_UNITS[0]}\\s*(?:[,/]\\s*)?)?\\s*(?:([\\d.]+)\\s*${DURATION_UNITS[1]}\\s*(?:[,/]\\s*)?)?\\s*(\\d+):(\\d{2}):(\\d{2}(?:\\.\\d+)?)$`, "i"),
1211
- /^(\d+):(\d{2}):(\d{2}):(\d{2}(?:\.\d+)?)$/,
1212
- /^:(\d{2}(?:\.\d+)?)$/
1213
- ];
1214
- var DURATION_MULTIPLIERS = [604800, 86400, 3600, 60, 1];
1215
- function duration(text, step) {
1216
- step();
1217
- let allAscii = true;
1218
- for (let i = 0; i < text.length; i++) {
1219
- const c = text.charCodeAt(i);
1220
- if (c < 32 || c >= 127) {
1221
- allAscii = false;
1222
- break;
1223
- }
1224
- }
1225
- let normalized;
1226
- if (allAscii) {
1227
- for (let i = 0; i < text.length; i++) step();
1228
- normalized = text;
1229
- } else {
1230
- normalized = "";
1231
- for (const char of text) {
1232
- step();
1233
- const code = char.codePointAt(0);
1234
- const zero = decimalZeroes.find((start) => code >= start && code < start + 10);
1235
- normalized += zero !== void 0 ? String(code - zero) : integerWhitespace.includes(code) || code >= 28 && code <= 31 ? " " : char === "\u017F" ? "s" : char === "\u0130" || char === "\u0131" ? "i" : char === "\u212A" ? "k" : char;
1236
- }
1237
- }
1238
- const sign = normalized[0] === "-" ? -1 : 1;
1239
- const unsigned = stripWhitespace(["-", "+", "|"].includes(normalized[0] ?? "") ? normalized.slice(1) : normalized);
1240
- let fields;
1241
- for (let index = 0; index < DURATION_PATTERNS.length; index++) {
1242
- const pattern = DURATION_PATTERNS[index];
1243
- step();
1244
- const m = pattern.exec(unsigned);
1245
- if (!m || !m.slice(1).some(Boolean)) continue;
1246
- fields = index === 0 || index === 2 ? m.slice(1) : index === 1 ? [void 0, void 0, void 0, m[1], m[2]] : index === 3 ? [void 0, ...m.slice(1)] : [void 0, void 0, void 0, void 0, m[1]];
1247
- break;
1248
- }
1249
- if (!fields) throw new TemporalCastError(`Can not parse value "${text}" to as timedelta.`);
1250
- const multipliers = DURATION_MULTIPLIERS;
1251
- for (const field of fields) if (field && !/^\d+(?:\.\d*)?$|^\.\d+$/.test(field)) throw new CsvkitDiagnostic(`ValueError: could not convert string to float: ${repr(field)}`);
1252
- const integers = fields.every((value) => !value || /^\d+$/.test(value));
1253
- let micros;
1254
- if (integers) micros = BigInt(sign) * fields.reduce((total, field, index) => total + BigInt(field ?? 0) * BigInt(multipliers[index]), 0n) * 1000000n;
1255
- else {
1256
- let seconds;
1257
- if (!fields[4] || /^\d+$/.test(fields[4])) seconds = sign * Math.trunc(fields.slice(0, 4).reduce((total, field, index) => total + Number(field ?? 0) * multipliers[index], 0)) + Number(fields[4] ?? 0);
1258
- else seconds = sign * fields.reduce((total, field, index) => total + Number(field ?? 0) * multipliers[index], 0);
1259
- if (!Number.isFinite(seconds) || Math.abs(seconds * 1e6) > Number.MAX_SAFE_INTEGER) throw new CsvkitBlocked("timedelta float range");
1260
- const whole = Math.trunc(seconds);
1261
- const value = (seconds - whole) * 1e6;
1262
- const floor = Math.floor(value);
1263
- const fraction = value - floor;
1264
- micros = BigInt(whole) * 1000000n + BigInt(fraction > 0.5 || fraction === 0.5 && floor % 2 !== 0 ? floor + 1 : floor);
1241
+ function pythonValueText(value) {
1242
+ if (value === null) return "";
1243
+ if (typeof value === "boolean") return value ? "True" : "False";
1244
+ if (typeof value === "number") {
1245
+ if (Number.isNaN(value)) return "nan";
1246
+ if (!Number.isFinite(value)) return value < 0 ? "-inf" : "inf";
1247
+ if (Object.is(value, -0)) return "-0.0";
1265
1248
  }
1266
- const days = micros < 0n ? (micros - 86399999999n) / 86400000000n : micros / 86400000000n;
1267
- if (days < -999999999n || days > 999999999n) throw new CsvkitDiagnostic(`OverflowError: Python int too large to convert to C int`);
1268
- return { kind: "timedelta", microseconds: micros };
1269
- }
1270
- function temporalOrder(value) {
1271
- const m = /^(\d{4})-(\d{2})-(\d{2})(?: (\d{2}):(\d{2}):(\d{2})(?:\.(\d{6}))?([+-]\d{2}:\d{2}(?::\d{2}(?:\.\d{6})?)?)?)?$/.exec(value);
1272
- if (!m) throw new CsvkitBlocked("temporal ordering offset profile");
1273
- let result = BigInt(ordinal(Number(m[1]), Number(m[2]), Number(m[3]))) * 86400000000n + BigInt(Number(m[4] ?? 0) * 3600 + Number(m[5] ?? 0) * 60 + Number(m[6] ?? 0)) * 1000000n + BigInt(m[7] ?? 0);
1274
- if (m[8]) {
1275
- const zone = m[8];
1276
- const seconds = Number(zone.slice(1, 3)) * 3600 + Number(zone.slice(4, 6)) * 60 + Number(zone.slice(7, 9) || 0);
1277
- const micros = BigInt(seconds) * 1000000n + BigInt(zone.slice(10) || 0);
1278
- result -= (zone[0] === "-" ? -1n : 1n) * micros;
1249
+ if (typeof value !== "object") return String(value);
1250
+ if (value.kind !== "timedelta") return value.value;
1251
+ const day = 86400000000n;
1252
+ let days = value.microseconds / day;
1253
+ let remainder = value.microseconds % day;
1254
+ if (remainder < 0n) {
1255
+ days--;
1256
+ remainder += day;
1279
1257
  }
1280
- return result;
1281
- }
1282
-
1283
- // packages/safe-bash-command-csvkit/src/table/types.ts
1284
- function columnTypeOrder(options) {
1285
- if (options.noInference) return ["Text"];
1286
- if (options.numberTextOnly) return ["Number", "Text"];
1287
- if (options.datetimeFormat) return ["Boolean", "TimeDelta", "Date", "DateTime", "Number", "Text"];
1288
- if (options.dateFormat) return ["Boolean", "TimeDelta", "Date", "Number", "DateTime", "Text"];
1289
- return ["Boolean", "Number", "TimeDelta", "Date", "DateTime", "Text"];
1258
+ if (days < -999999999n || days > 999999999n) throw new CsvkitDiagnostic("OverflowError: timedelta days out of range");
1259
+ const seconds = remainder / 1000000n;
1260
+ const micros = remainder % 1000000n;
1261
+ const time = `${seconds / 3600n}:${String(seconds / 60n % 60n).padStart(2, "0")}:${String(seconds % 60n).padStart(2, "0")}`;
1262
+ return (days ? `${days} day${days === 1n || days === -1n ? "" : "s"}, ` : "") + time + (micros ? `.${String(micros).padStart(6, "0")}` : "");
1290
1263
  }
1291
- var CastError = class extends Error {
1292
- };
1293
- var DEFAULT_NULL_SET = /* @__PURE__ */ new Set(["", "na", "n/a", "none", "null", "."]);
1294
- var CURRENCY_SYMBOLS = ["\u060B", "$", "\u0192", "\u17DB", "\xA5", "\u20A1", "\u20B1", "\xA3", "\u20AC", "\xA2", "\uFDFC", "\u20AA", "\u20A9", "\u20AD", "\u20AE", "\u20A6", "\u0E3F", "\u20A4", "\u20AB"];
1295
- var BOOLEAN_TRUE_SET = /* @__PURE__ */ new Set(["yes", "y", "true", "t", "1"]);
1296
- var BOOLEAN_FALSE_SET = /* @__PURE__ */ new Set(["no", "n", "false", "f", "0"]);
1297
- function decimal(text, options, step) {
1298
- let allAscii = true;
1299
- for (let i = 0; i < text.length; i++) {
1300
- if (text.charCodeAt(i) >= 128) {
1301
- allAscii = false;
1302
- break;
1303
- }
1304
- }
1305
- let ascii;
1306
- if (allAscii) {
1307
- for (let i = 0; i < text.length; i++) step();
1308
- ascii = stripWhitespace(text);
1309
- if (ascii.includes("_")) ascii = ascii.replaceAll("_", "");
1310
- } else {
1311
- ascii = "";
1312
- for (const char of text) {
1313
- step();
1314
- const code = char.codePointAt(0);
1315
- const zero = decimalZeroes.find((start) => code >= start && code < start + 10);
1316
- ascii += zero === void 0 ? char : String(code - zero);
1317
- }
1318
- ascii = stripWhitespace(ascii).replaceAll("_", "");
1319
- }
1320
- if (/^[+-]?(inf(inity)?)$/i.test(ascii)) return ascii.startsWith("-") ? "-Infinity" : "Infinity";
1321
- const nan = /^[+-]?nan(\d*)$/i.exec(ascii);
1322
- if (nan) {
1323
- if (nan[1].length > (options.maxDecimalDigits ?? Infinity)) throw new CsvkitBlocked("Decimal admission budget exceeded");
1324
- return (ascii.startsWith("-") ? "-" : "") + "NaN" + nan[1].slice(-28).replace(/^0+/, "");
1264
+ function writeCsvRow(row, dialect = {}, normalizeStrings = true, admission) {
1265
+ const { delimiter, quote, escape } = dialectCharacters(dialect);
1266
+ const end = dialect.lineterminator ?? "\n";
1267
+ const quoting = dialect.quoting ?? (dialect.quotechar === null ? 3 : 0);
1268
+ function* fragments() {
1269
+ for (let index = 0; index < row.length; index++) {
1270
+ const value = row[index];
1271
+ const field = pythonValueText(value);
1272
+ const normalized = typeof value === "string" && normalizeStrings;
1273
+ const numeric = typeof value === "number" || typeof value === "bigint" || typeof value === "boolean" || typeof value === "object" && (value?.kind === "decimal" || value?.kind === "float");
1274
+ let quoted = quoting === 1 || quoting === 2 && !numeric || quoting === 4 && typeof value === "string" || quoting === 5 && value !== null;
1275
+ for (const original of field) {
1276
+ admission?.step();
1277
+ const char = normalized && original === "\r" ? "\n" : original;
1278
+ const special = char === delimiter || char === quote || char === escape || char === "\r" || char === "\n" || end.includes(char);
1279
+ let escaped = char === escape;
1280
+ if (special && quoting === 3) escaped = true;
1281
+ else if (char === quote) {
1282
+ if (dialect.doublequote === false) escaped = true;
1283
+ if (!escaped) quoted = true;
1284
+ } else if (special && !escaped) quoted = true;
1285
+ if (escaped) {
1286
+ if (escape === void 0) throw new CsvkitDiagnostic("Error: need to escape, but no escapechar set");
1287
+ }
1288
+ }
1289
+ if (field === "" && delimiter === " " && dialect.skipinitialspace) {
1290
+ if (quoting === 3 || value === null && (quoting === 4 || quoting === 5))
1291
+ throw new CsvkitDiagnostic("Error: empty field must be quoted if delimiter is a space and skipinitialspace is true");
1292
+ quoted = true;
1293
+ }
1294
+ if (row.length === 1 && field === "" && !quoted) {
1295
+ if (quoting === 3 || value === null && (quoting === 4 || quoting === 5)) throw new CsvkitDiagnostic("Error: single empty field record must be quoted");
1296
+ quoted = true;
1297
+ }
1298
+ if (index) yield delimiter;
1299
+ if (quoted) yield quote;
1300
+ for (const original of field) {
1301
+ admission?.step();
1302
+ const char = normalized && original === "\r" ? "\n" : original;
1303
+ const special = char === delimiter || char === quote || char === escape || char === "\r" || char === "\n" || end.includes(char);
1304
+ if (char === escape || special && quoting === 3 || char === quote && dialect.doublequote === false) yield escape;
1305
+ else if (char === quote) yield quote;
1306
+ yield char;
1307
+ }
1308
+ if (quoted) yield quote;
1309
+ }
1310
+ yield end;
1325
1311
  }
1326
- if (/^[+-]?snan\d*$/i.test(ascii)) throw new CastError();
1327
- const match2 = /^([+-]?)(?:(\d+)(?:\.(\d*))?|\.(\d+))(?:[eE]([+-]?\d+))?$/.exec(ascii);
1328
- if (!match2) throw new CastError();
1329
- const fraction = match2[3] ?? match2[4] ?? "";
1330
- if ((match2[2]?.length ?? 0) + fraction.length > (options.maxDecimalDigits ?? Infinity) || Math.abs(Number(match2[5] ?? 0)) > (options.maxDecimalExponent ?? Infinity)) throw new CsvkitBlocked("Decimal admission budget exceeded");
1331
- if (match2[2] !== void 0 && fraction.length === 0 && match2[5] === void 0 && !ascii.includes(".") && match2[2].length <= 27 && (match2[2].length === 1 || match2[2].charCodeAt(0) !== 48)) {
1332
- if (match2[2] === "0") return match2[1] === "-" ? "-0" : "0";
1333
- return (match2[1] === "-" ? "-" : "") + match2[2];
1312
+ if (admission) {
1313
+ let bytes = 0, codeUnits = 0, high = false;
1314
+ for (const fragment of fragments()) {
1315
+ codeUnits += fragment.length;
1316
+ for (const char of fragment) {
1317
+ admission.step();
1318
+ const code = char.codePointAt(0);
1319
+ bytes += high && code >= 56320 && code <= 57343 ? 1 : code <= 127 ? 1 : code <= 2047 ? 2 : code <= 65535 ? 3 : 4;
1320
+ high = code >= 55296 && code <= 56319;
1321
+ }
1322
+ }
1323
+ admission.admit(bytes, codeUnits);
1334
1324
  }
1335
- return Decimal.parse(ascii).multiply(Decimal.parse("1")).toString();
1325
+ let result = "";
1326
+ for (const fragment of fragments()) result += fragment;
1327
+ return result;
1336
1328
  }
1337
- function castValue(type, value, options, step = () => {
1338
- }) {
1339
- step();
1340
- if (value === null) return null;
1341
- if (type === "Text" && (!options.nullValues || options.nullValues.length === 0)) {
1342
- if (options.blanks) return value;
1343
- const len = value.length;
1344
- if (len > 4) {
1345
- const c0 = value.charCodeAt(0);
1346
- const cLast = value.charCodeAt(len - 1);
1347
- if (c0 > 32 && c0 < 128 && cLast > 32 && cLast < 128) return value;
1348
- }
1329
+ var Writer = class {
1330
+ #rows = 0;
1331
+ #options;
1332
+ constructor(options = {}) {
1333
+ dialectCharacters(options);
1334
+ this.#options = Object.freeze({ ...options });
1349
1335
  }
1350
- let text = stripWhitespace(value);
1351
- if (type === "Boolean" && value.includes(",")) text = stripWhitespace(value.replaceAll(",", ""));
1352
- const lowered = lowerText(text);
1353
- if (!options.blanks && DEFAULT_NULL_SET.has(lowered)) return null;
1354
- if (options.nullValues && options.nullValues.length > 0 && options.nullValues.some((item) => lowerText(item) === lowered)) return null;
1355
- if (type === "Text") return value;
1356
- if (type === "Boolean") {
1357
- if (BOOLEAN_TRUE_SET.has(lowered)) return true;
1358
- if (BOOLEAN_FALSE_SET.has(lowered)) return false;
1359
- throw new CastError(`Can not convert value ${text} to bool.`);
1336
+ writerow(row) {
1337
+ const cells = this.#options.lineNumbers ? [this.#rows === 0 ? "line_number" : this.#rows, ...row] : row;
1338
+ if (this.#options.lineNumbers) this.#rows++;
1339
+ return writeCsvRow(cells, this.#options);
1360
1340
  }
1361
- const { locale: numberLocale, ...temporalOptions } = options;
1362
- if (type === "TimeDelta" || type === "Date" || type === "DateTime") {
1363
- try {
1364
- return type === "TimeDelta" ? duration(text, step) : temporalDate(type, text, temporalOptions, step);
1365
- } catch (error) {
1366
- if (error instanceof TemporalCastError) throw new CastError(error.message);
1367
- throw error;
1368
- }
1341
+ *writerows(rows) {
1342
+ for (const row of rows) yield this.writerow(row);
1369
1343
  }
1370
- const separators = { en_US: { group: ",", decimal: "." }, de_DE: { group: ".", decimal: "," } };
1371
- const locale = numberLocale ?? "en_US";
1372
- const symbols = separators[locale];
1373
- if (!symbols) throw new CsvkitBlocked(`Agate Number locale ${locale}`);
1374
- if (text.startsWith("%") || text.endsWith("%")) text = text.replace(/^%+|%+$/g, "");
1375
- const negative = text.startsWith("-");
1376
- if (negative) text = text.slice(1);
1377
- if (text.length > 0) {
1378
- const fCode = text.charCodeAt(0);
1379
- const lCode = text.charCodeAt(text.length - 1);
1380
- if (fCode < 48 || fCode > 57 || lCode < 48 || lCode > 57) {
1381
- for (const symbol of CURRENCY_SYMBOLS) {
1382
- while (text.startsWith(symbol)) {
1383
- step();
1384
- text = text.slice(symbol.length);
1385
- }
1386
- while (text.endsWith(symbol)) {
1387
- step();
1388
- text = text.slice(0, -symbol.length);
1389
- }
1390
- }
1391
- }
1344
+ };
1345
+ var DictionaryWriter = class {
1346
+ #rows = 0;
1347
+ #fields;
1348
+ #options;
1349
+ constructor(fieldnames, options = {}) {
1350
+ const action = options.extrasaction ?? "raise";
1351
+ if (!["raise", "ignore"].includes(action.toLowerCase()))
1352
+ throw new CsvkitDiagnostic(`ValueError: extrasaction (${action}) must be 'raise' or 'ignore'`);
1353
+ dialectCharacters(options);
1354
+ this.#options = Object.freeze({ ...options, extrasaction: action.toLowerCase() });
1355
+ this.#fields = Object.freeze(options.lineNumbers ? ["line_number", ...fieldnames] : [...fieldnames]);
1392
1356
  }
1393
- if (text.includes(symbols.group)) text = text.replaceAll(symbols.group, "");
1394
- if (symbols.decimal !== "." && text.includes(symbols.decimal)) text = text.replaceAll(symbols.decimal, ".");
1395
- if (options.noLeadingZeroes && text.length > 1 && text[0] === "0" && text[1] !== ".") throw new CastError(`Can not parse value "${text}" as Decimal without leading zeroes`);
1396
- try {
1397
- let value2 = decimal(text, options, step);
1398
- if (negative && !value2.includes("NaN")) value2 = value2.startsWith("-") ? value2.slice(1) : "-" + value2;
1399
- return { kind: "decimal", value: value2 };
1400
- } catch (error) {
1401
- if (!(error instanceof CastError)) throw error;
1402
- throw new CastError(`Can not parse value "${text}" as Decimal.`);
1357
+ writeheader() {
1358
+ return this.writerow(Object.fromEntries(this.#fields.map((field) => [field, field])));
1403
1359
  }
1404
- }
1405
- function inferTable(headers, rows, options = {}, step = () => {
1406
- }) {
1407
- if (headers.some((name) => !name) || new Set(headers).size !== headers.length || !headers.length && rows.length) throw new CsvkitBlocked("Agate duplicate/unnamed column warning provenance");
1408
- const order = options.limit === 0 ? ["Text"] : columnTypeOrder(options);
1409
- const sample = options.limit ? rows.slice(0, options.limit) : rows;
1410
- const hypotheses = headers.map(() => new Set(order));
1411
- for (const row of sample) {
1412
- for (const [index, candidates] of hypotheses.entries()) {
1413
- step();
1414
- if (candidates.size === 1 || row.length <= index) continue;
1415
- for (const type of candidates) {
1416
- if (type === "Text") {
1417
- step();
1418
- continue;
1419
- }
1420
- try {
1421
- castValue(type, row[index], options, step);
1422
- } catch (error) {
1423
- if (!(error instanceof CastError)) throw error;
1424
- candidates.delete(type);
1425
- }
1426
- }
1360
+ writerow(row) {
1361
+ const values = Object.fromEntries(Object.entries(row).map(([key, value]) => [key, typeof value === "string" ? value.split("\r").join("\n") : value]));
1362
+ if (this.#options.lineNumbers) {
1363
+ values.line_number = this.#rows === 0 ? "line_number" : this.#rows;
1364
+ this.#rows++;
1427
1365
  }
1428
- }
1429
- const columns = headers.map((name, index) => {
1430
- for (const type of order) {
1431
- if (hypotheses[index].has(type)) return { name, type };
1366
+ if (this.#options.extrasaction === "raise") {
1367
+ const extra = Object.keys(values).filter((key) => !this.#fields.includes(key));
1368
+ if (extra.length) throw new CsvkitDiagnostic(`ValueError: dict contains fields not in fieldnames: ${extra.map(repr).join(", ")}`);
1432
1369
  }
1433
- throw new CsvkitBlocked("no compatible Agate column type");
1434
- });
1435
- const typedRows = rows.map((row, rowIndex) => {
1436
- if (row.length > headers.length) throw new CsvkitDiagnostic(`ValueError: Row ${rowIndex} has ${row.length} values, but Table only has ${headers.length} columns.`);
1437
- return columns.map((column, index) => {
1438
- try {
1439
- return castValue(column.type, row[index] ?? null, options.limit === 0 ? {} : options, step);
1440
- } catch (error) {
1441
- if (!(error instanceof CastError)) throw error;
1442
- throw new CsvkitDiagnostic(`CastError: ${error.message} Error at row ${rowIndex} column ${column.name}.`);
1443
- }
1444
- });
1445
- });
1446
- return { headers, columns, rows: typedRows, rawRows: rows };
1447
- }
1448
-
1449
- // packages/safe-bash-command-csvkit/src/table/index.ts
1450
- init_buffer();
1370
+ return writeCsvRow(this.#fields.map((field) => Object.hasOwn(values, field) ? values[field] : this.#options.restval === void 0 ? "" : this.#options.restval), this.#options, false);
1371
+ }
1372
+ *writerows(rows) {
1373
+ for (const row of rows) yield this.writerow(row);
1374
+ }
1375
+ };
1451
1376
 
1452
1377
  // packages/safe-bash-command-csvkit/src/operations/input-cells.ts
1453
1378
  init_buffer();
@@ -1832,6 +1757,84 @@ function sniff(sample, step = () => {
1832
1757
  };
1833
1758
  }
1834
1759
 
1760
+ // packages/safe-bash-command-csvkit/src/table/selectors.ts
1761
+ init_buffer();
1762
+ var digitRanges = [[178, 179], [185, 185], [4969, 4977], [6618, 6618], [8304, 8304], [8308, 8313], [8320, 8329], [9312, 9320], [9332, 9340], [9352, 9360], [9450, 9450], [9461, 9469], [9471, 9471], [10102, 10110], [10112, 10120], [10122, 10130], [68160, 68163], [69216, 69224], [69714, 69722], [127232, 127242]];
1763
+ function isDigit(token) {
1764
+ return token.length > 0 && Array.from(token).every((char) => {
1765
+ const point = char.codePointAt(0);
1766
+ return decimalZeroes.some((zero) => point >= zero && point <= zero + 9) || digitRanges.some(([first, last]) => point >= first && point <= last);
1767
+ });
1768
+ }
1769
+ function match(names, token, offset2 = 1, namesAreTuple = false) {
1770
+ if (typeof token === "string" && !isDigit(token) && names.includes(token)) return names.indexOf(token);
1771
+ const value = typeof token === "bigint" ? token : integer(token);
1772
+ if (value === void 0) throw new CsvkitDiagnostic(`ColumnIdentifierError: Column '${token}' is invalid. It is neither an integer nor a column name. Column names are: ${names.map(repr).join(", ")}${namesAreTuple && names.length === 1 ? "," : ""}`);
1773
+ const index = Number(value) - offset2;
1774
+ if (index < 0) throw new CsvkitDiagnostic(`ColumnIdentifierError: Column ${value} is invalid. Columns are 1-based.`);
1775
+ if (index >= names.length) throw new CsvkitDiagnostic(`ColumnIdentifierError: Column ${value} is invalid. The last column is '${names.at(-1)}' at index ${names.length - 1 + offset2}.`);
1776
+ return index;
1777
+ }
1778
+ function parseColumnIdentifiers(ids, names, offset2 = 1, excludedColumns, step = () => {
1779
+ }, namesAreTuple = false) {
1780
+ if (!names.length) return [];
1781
+ const columns = [];
1782
+ if (ids) {
1783
+ for (const token of ids.split(",")) {
1784
+ step();
1785
+ try {
1786
+ columns.push(match(names, token, offset2, namesAreTuple));
1787
+ } catch (failure) {
1788
+ if (!(failure instanceof CsvkitDiagnostic)) throw failure;
1789
+ const separator = token.includes(":") ? ":" : token.includes("-") ? "-" : void 0;
1790
+ if (!separator) throw failure;
1791
+ const index = token.indexOf(separator);
1792
+ const first = token.slice(0, index);
1793
+ const last = token.slice(index + 1);
1794
+ const start = first ? integer(first) : 1;
1795
+ const end = last ? integer(last) : names.length;
1796
+ if (start === void 0 || end === void 0) throw new CsvkitDiagnostic("ColumnIdentifierError: Invalid range %s. Ranges must be two integers separated by a - or : character.");
1797
+ for (let value = BigInt(start); value <= BigInt(end); value++) {
1798
+ step();
1799
+ columns.push(match(names, value, offset2));
1800
+ }
1801
+ }
1802
+ }
1803
+ } else {
1804
+ for (let index = 0; index < names.length; index++) {
1805
+ step();
1806
+ columns.push(index);
1807
+ }
1808
+ }
1809
+ const excludes = /* @__PURE__ */ new Set();
1810
+ if (excludedColumns) {
1811
+ for (const token of excludedColumns.split(",")) {
1812
+ step();
1813
+ try {
1814
+ excludes.add(match(names, token, offset2, namesAreTuple));
1815
+ } catch (failure) {
1816
+ if (!(failure instanceof CsvkitDiagnostic)) throw failure;
1817
+ const separator = token.includes(":") ? ":" : token.includes("-") ? "-" : void 0;
1818
+ if (!separator) continue;
1819
+ const index = token.indexOf(separator);
1820
+ const first = token.slice(0, index);
1821
+ const last = token.slice(index + 1);
1822
+ const start = first ? integer(first) : 1;
1823
+ const end = last ? integer(last) : names.length - 1;
1824
+ if (start === void 0 || end === void 0) throw new CsvkitDiagnostic("ColumnIdentifierError: Invalid range %s. Ranges must be two integers separated by a - or : character.");
1825
+ for (let value = BigInt(start); value <= BigInt(end); value++) {
1826
+ step();
1827
+ excludes.add(match(names, value, offset2));
1828
+ }
1829
+ }
1830
+ }
1831
+ }
1832
+ return columns.filter((index) => {
1833
+ step();
1834
+ return !excludes.has(index);
1835
+ });
1836
+ }
1837
+
1835
1838
  export {
1836
1839
  repr,
1837
1840
  integer,