kordoc 4.2.9 → 4.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. package/README.md +922 -885
  2. package/dist/{-ECUCTQTR.js → -RH6BEVTT.js} +28 -20
  3. package/dist/{chunk-J2RZ444H.js → chunk-3FFPHTXD.js} +1 -1
  4. package/dist/chunk-3FFPHTXD.js.map +1 -0
  5. package/dist/{chunk-PATPZTH7.cjs → chunk-5F5UCACZ.cjs} +6 -6
  6. package/dist/chunk-5F5UCACZ.cjs.map +1 -0
  7. package/dist/{chunk-5RPYBC2Q.js → chunk-6GBLFQMA.js} +1 -1
  8. package/dist/chunk-6GBLFQMA.js.map +1 -0
  9. package/dist/{chunk-GEPINOL6.js → chunk-6XPXIG57.js} +2 -2
  10. package/dist/chunk-6XPXIG57.js.map +1 -0
  11. package/dist/{chunk-4ZWKFDUC.cjs → chunk-7DZPPUQD.cjs} +44 -13
  12. package/dist/chunk-7DZPPUQD.cjs.map +1 -0
  13. package/dist/{chunk-MHMVFI2N.js → chunk-BPJSTJBN.js} +4 -4
  14. package/dist/chunk-BPJSTJBN.js.map +1 -0
  15. package/dist/{chunk-XU4VWOKL.js → chunk-BYEQDLZS.js} +4 -3
  16. package/dist/chunk-BYEQDLZS.js.map +1 -0
  17. package/dist/{chunk-3PLF5UIS.js → chunk-CD5X6UG5.js} +37 -6
  18. package/dist/chunk-CD5X6UG5.js.map +1 -0
  19. package/dist/chunk-DCZVOIEO.cjs.map +1 -1
  20. package/dist/{chunk-STYN45MS.js → chunk-FUXDD36A.js} +4 -4
  21. package/dist/chunk-FUXDD36A.js.map +1 -0
  22. package/dist/chunk-GS7T56RP.cjs.map +1 -1
  23. package/dist/{chunk-YR4PF56B.js → chunk-GTPEKBN6.js} +2 -2
  24. package/dist/chunk-GTPEKBN6.js.map +1 -0
  25. package/dist/{chunk-27Z4PUZZ.js → chunk-HPRK67YB.js} +38 -7
  26. package/dist/chunk-HPRK67YB.js.map +1 -0
  27. package/dist/{chunk-NIISBGSR.js → chunk-HZU7Y22R.js} +71 -29
  28. package/dist/chunk-HZU7Y22R.js.map +1 -0
  29. package/dist/{chunk-7ZARSBQ3.js → chunk-LEC2HG7A.js} +4 -3
  30. package/dist/chunk-LEC2HG7A.js.map +1 -0
  31. package/dist/{chunk-H7OWEYH2.cjs → chunk-MGGU3ZRK.cjs} +1 -1
  32. package/dist/chunk-MGGU3ZRK.cjs.map +1 -0
  33. package/dist/chunk-MOL7MDBG.js +0 -0
  34. package/dist/{chunk-DZIXKL7E.js → chunk-O5EK52TG.js} +1 -1
  35. package/dist/chunk-O5EK52TG.js.map +1 -0
  36. package/dist/{chunk-LXE7OR6N.js → chunk-PV3NVBGL.js} +3 -3
  37. package/dist/chunk-PV3NVBGL.js.map +1 -0
  38. package/dist/{chunk-G3DMDTZI.js → chunk-RO4Y4BFI.js} +1511 -1135
  39. package/dist/chunk-RO4Y4BFI.js.map +1 -0
  40. package/dist/{chunk-WTT2KJOM.js → chunk-SA22NK56.js} +14 -10
  41. package/dist/chunk-SA22NK56.js.map +1 -0
  42. package/dist/{chunk-GZ7W64QU.cjs → chunk-VQB5P5KJ.cjs} +4 -3
  43. package/dist/chunk-VQB5P5KJ.cjs.map +1 -0
  44. package/dist/{chunk-7FCNOKOR.js → chunk-W34QSJFF.js} +1 -1
  45. package/dist/chunk-W34QSJFF.js.map +1 -0
  46. package/dist/{chunk-VEHC4EJL.js → chunk-YDCD4AV4.js} +5 -5
  47. package/dist/chunk-YDCD4AV4.js.map +1 -0
  48. package/dist/{chunk-NNDVFNMJ.js → chunk-YNJDNP44.js} +1 -1
  49. package/dist/chunk-YNJDNP44.js.map +1 -0
  50. package/dist/{chunk-3TSTZGCJ.js → chunk-ZJ75YDW7.js} +4 -3
  51. package/dist/chunk-ZJ75YDW7.js.map +1 -0
  52. package/dist/{chunk-6GM2QLM3.cjs → chunk-ZMKTKJZN.cjs} +21 -21
  53. package/dist/chunk-ZMKTKJZN.cjs.map +1 -0
  54. package/dist/{chunk-LM7C6HI2.js → chunk-ZSL6MQVE.js} +1 -1
  55. package/dist/chunk-ZSL6MQVE.js.map +1 -0
  56. package/dist/{chunk-KTPZYXN2.js → chunk-ZYYTU7NY.js} +2 -2
  57. package/dist/chunk-ZYYTU7NY.js.map +1 -0
  58. package/dist/chunks-JEYQWXIZ.js +10 -0
  59. package/dist/cli.js +75 -39
  60. package/dist/cli.js.map +1 -1
  61. package/dist/{formula-SXC6LRRC.js → formula-7ZPC54JO.js} +2 -2
  62. package/dist/formula-7ZPC54JO.js.map +1 -0
  63. package/dist/{formula-KSNAEBZ2.js → formula-EQRHSMYW.js} +2 -2
  64. package/dist/formula-EQRHSMYW.js.map +1 -0
  65. package/dist/{formula-SB3NHDUM.cjs → formula-IWV5IJ3Y.cjs} +8 -8
  66. package/dist/formula-IWV5IJ3Y.cjs.map +1 -0
  67. package/dist/{image-ocr-PS7XCV6K.js → image-ocr-6MO4FXJK.js} +8 -6
  68. package/dist/image-ocr-6MO4FXJK.js.map +1 -0
  69. package/dist/{image-ocr-J5656BEE.cjs → image-ocr-MGVXT6XD.cjs} +13 -11
  70. package/dist/image-ocr-MGVXT6XD.cjs.map +1 -0
  71. package/dist/{image-ocr-KZTNJ62U.js → image-ocr-TWUU2RNG.js} +10 -8
  72. package/dist/image-ocr-TWUU2RNG.js.map +1 -0
  73. package/dist/index.cjs +1993 -1845
  74. package/dist/index.cjs.map +1 -1
  75. package/dist/index.d.cts +75 -4
  76. package/dist/index.d.ts +75 -4
  77. package/dist/index.js +2128 -1980
  78. package/dist/index.js.map +1 -1
  79. package/dist/mcp.js +123 -78
  80. package/dist/mcp.js.map +1 -1
  81. package/dist/{models-KA4GLQK5.js → models-6VMAVZR6.js} +3 -3
  82. package/dist/page-range-737B4EZW.js +0 -0
  83. package/dist/page-range-P7SDW6LR.cjs.map +1 -1
  84. package/dist/{parser-CSYU3CAW.cjs → parser-JFGLN4DA.cjs} +25 -25
  85. package/dist/parser-JFGLN4DA.cjs.map +1 -0
  86. package/dist/{parser-WNFWMBSL.js → parser-VR2BTUT7.js} +8 -8
  87. package/dist/parser-VR2BTUT7.js.map +1 -0
  88. package/dist/{parser-A34NAYKA.js → parser-YA7HSSPK.js} +6 -6
  89. package/dist/parser-YA7HSSPK.js.map +1 -0
  90. package/dist/pdf-ocr-4LISPZEM.cjs +13 -0
  91. package/dist/pdf-ocr-4LISPZEM.cjs.map +1 -0
  92. package/dist/pdf-ocr-AIWB2QCS.js +12 -0
  93. package/dist/pdf-ocr-QMOKUMC2.js +15 -0
  94. package/dist/{profile-io-43MF52H6.js → profile-io-QPIMGVO3.js} +3 -3
  95. package/dist/{rasterize-OG7KXBJS.js → rasterize-AFYGNKXG.js} +2 -2
  96. package/dist/rasterize-AFYGNKXG.js.map +1 -0
  97. package/dist/{redact-7ILEAUTS.js → redact-W5K3ILQH.js} +2 -2
  98. package/dist/render-PSPTMZIZ.js +10 -0
  99. package/dist/seal-4XBJ7ISE.js +10 -0
  100. package/dist/{setup-GUQT5ELJ.js → setup-I4I75QJU.js} +1 -1
  101. package/dist/setup-I4I75QJU.js.map +1 -0
  102. package/dist/{watch-SOHQMZN2.js → watch-D3JJEOAB.js} +12 -14
  103. package/dist/watch-D3JJEOAB.js.map +1 -0
  104. package/package.json +101 -98
  105. package/templates//352/260/204/354/235/264/352/270/260/354/225/210/353/254/270_/354/204/234/354/213/235.hwpx +0 -0
  106. package/templates//352/260/204/354/235/264/352/270/260/354/225/210/353/254/270_/354/230/210/354/213/234/352/260/222.json +9 -0
  107. package/templates//354/235/274/353/260/230/352/270/260/354/225/210/353/254/270_/354/204/234/354/213/235.hwpx +0 -0
  108. package/templates//354/235/274/353/260/230/352/270/260/354/225/210/353/254/270_/354/230/210/354/213/234/352/260/222.json +25 -0
  109. package/dist/chunk-27Z4PUZZ.js.map +0 -1
  110. package/dist/chunk-3PLF5UIS.js.map +0 -1
  111. package/dist/chunk-3TSTZGCJ.js.map +0 -1
  112. package/dist/chunk-4ZWKFDUC.cjs.map +0 -1
  113. package/dist/chunk-5RPYBC2Q.js.map +0 -1
  114. package/dist/chunk-6GM2QLM3.cjs.map +0 -1
  115. package/dist/chunk-7FCNOKOR.js.map +0 -1
  116. package/dist/chunk-7ZARSBQ3.js.map +0 -1
  117. package/dist/chunk-DZIXKL7E.js.map +0 -1
  118. package/dist/chunk-G3DMDTZI.js.map +0 -1
  119. package/dist/chunk-GEPINOL6.js.map +0 -1
  120. package/dist/chunk-GZ7W64QU.cjs.map +0 -1
  121. package/dist/chunk-H7OWEYH2.cjs.map +0 -1
  122. package/dist/chunk-J2RZ444H.js.map +0 -1
  123. package/dist/chunk-KTPZYXN2.js.map +0 -1
  124. package/dist/chunk-LM7C6HI2.js.map +0 -1
  125. package/dist/chunk-LXE7OR6N.js.map +0 -1
  126. package/dist/chunk-MHMVFI2N.js.map +0 -1
  127. package/dist/chunk-NIISBGSR.js.map +0 -1
  128. package/dist/chunk-NNDVFNMJ.js.map +0 -1
  129. package/dist/chunk-PATPZTH7.cjs.map +0 -1
  130. package/dist/chunk-STYN45MS.js.map +0 -1
  131. package/dist/chunk-TCJRGFYY.js +0 -280
  132. package/dist/chunk-TCJRGFYY.js.map +0 -1
  133. package/dist/chunk-VEHC4EJL.js.map +0 -1
  134. package/dist/chunk-WTT2KJOM.js.map +0 -1
  135. package/dist/chunk-XU4VWOKL.js.map +0 -1
  136. package/dist/chunk-YR4PF56B.js.map +0 -1
  137. package/dist/chunks-VFIMYK36.js +0 -10
  138. package/dist/detect-FX2ZHKZP.js +0 -26
  139. package/dist/formula-KSNAEBZ2.js.map +0 -1
  140. package/dist/formula-SB3NHDUM.cjs.map +0 -1
  141. package/dist/formula-SXC6LRRC.js.map +0 -1
  142. package/dist/image-ocr-J5656BEE.cjs.map +0 -1
  143. package/dist/image-ocr-KZTNJ62U.js.map +0 -1
  144. package/dist/image-ocr-PS7XCV6K.js.map +0 -1
  145. package/dist/parser-A34NAYKA.js.map +0 -1
  146. package/dist/parser-CSYU3CAW.cjs.map +0 -1
  147. package/dist/parser-WNFWMBSL.js.map +0 -1
  148. package/dist/pdf-ocr-KBMWPG2L.js +0 -12
  149. package/dist/pdf-ocr-NPZG67FN.js +0 -15
  150. package/dist/pdf-ocr-O44DAGTY.cjs +0 -13
  151. package/dist/pdf-ocr-O44DAGTY.cjs.map +0 -1
  152. package/dist/rasterize-OG7KXBJS.js.map +0 -1
  153. package/dist/render-336CJHAS.js +0 -10
  154. package/dist/seal-TM2XCE2R.js +0 -10
  155. package/dist/seal-TM2XCE2R.js.map +0 -1
  156. package/dist/setup-GUQT5ELJ.js.map +0 -1
  157. package/dist/watch-SOHQMZN2.js.map +0 -1
  158. /package/dist/{-ECUCTQTR.js.map → -RH6BEVTT.js.map} +0 -0
  159. /package/dist/{chunks-VFIMYK36.js.map → chunks-JEYQWXIZ.js.map} +0 -0
  160. /package/dist/{detect-FX2ZHKZP.js.map → models-6VMAVZR6.js.map} +0 -0
  161. /package/dist/{models-KA4GLQK5.js.map → pdf-ocr-AIWB2QCS.js.map} +0 -0
  162. /package/dist/{pdf-ocr-KBMWPG2L.js.map → pdf-ocr-QMOKUMC2.js.map} +0 -0
  163. /package/dist/{pdf-ocr-NPZG67FN.js.map → profile-io-QPIMGVO3.js.map} +0 -0
  164. /package/dist/{profile-io-43MF52H6.js.map → redact-W5K3ILQH.js.map} +0 -0
  165. /package/dist/{redact-7ILEAUTS.js.map → render-PSPTMZIZ.js.map} +0 -0
  166. /package/dist/{render-336CJHAS.js.map → seal-4XBJ7ISE.js.map} +0 -0
@@ -1,11 +1,16 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
+ BUILTIN_TEMPLATES,
3
4
  HwpxSession,
4
5
  PRESET_ALIAS,
5
6
  ValueCursor,
6
7
  blocksToPdf,
7
8
  compare,
9
+ detectFormat,
10
+ detectOle2Format,
11
+ detectZipFormat,
8
12
  diffBlocks,
13
+ extractClickHereFields,
9
14
  extractFormFields,
10
15
  extractFormSchema,
11
16
  fillForm,
@@ -17,8 +22,12 @@ import {
17
22
  hwpxToProfile,
18
23
  incompatibleGongmunWarnings,
19
24
  inferFieldType,
25
+ isHwpxFile,
20
26
  isKnownFont,
21
27
  isLabelCell,
28
+ isOldHwpFile,
29
+ isPdfFile,
30
+ isZipFile,
22
31
  lintGongmunText,
23
32
  markdownToHwpx,
24
33
  markdownToPdf,
@@ -37,21 +46,15 @@ import {
37
46
  patchHwp,
38
47
  patchHwpx,
39
48
  patchHwpxBlocks,
49
+ readBuiltinTemplate,
50
+ readBuiltinTemplateSample,
40
51
  renderHtml,
52
+ resolveBuiltinTemplate,
41
53
  unknownFontWarnings,
42
54
  validateHwpx
43
- } from "./chunk-G3DMDTZI.js";
44
- import "./chunk-7FCNOKOR.js";
45
- import "./chunk-LM7C6HI2.js";
46
- import {
47
- detectFormat,
48
- detectOle2Format,
49
- detectZipFormat,
50
- isHwpxFile,
51
- isOldHwpFile,
52
- isPdfFile,
53
- isZipFile
54
- } from "./chunk-TCJRGFYY.js";
55
+ } from "./chunk-RO4Y4BFI.js";
56
+ import "./chunk-W34QSJFF.js";
57
+ import "./chunk-ZSL6MQVE.js";
55
58
  import "./chunk-MOL7MDBG.js";
56
59
  import {
57
60
  applySplices,
@@ -59,18 +62,18 @@ import {
59
62
  buildRangeSplices,
60
63
  placeSealHwpx,
61
64
  scanSectionXml
62
- } from "./chunk-XU4VWOKL.js";
65
+ } from "./chunk-BYEQDLZS.js";
63
66
  import {
64
67
  DEFAULT_REDACT_RULES,
65
68
  redactMarkdown,
66
69
  redactText
67
- } from "./chunk-DZIXKL7E.js";
70
+ } from "./chunk-O5EK52TG.js";
68
71
  import {
69
72
  blocksToChunks
70
- } from "./chunk-KTPZYXN2.js";
73
+ } from "./chunk-ZYYTU7NY.js";
71
74
  import {
72
75
  blocksToMarkdown
73
- } from "./chunk-MHMVFI2N.js";
76
+ } from "./chunk-BPJSTJBN.js";
74
77
  import {
75
78
  SPACE_EM_FIXED,
76
79
  SPACE_EM_FONT,
@@ -80,12 +83,13 @@ import {
80
83
  renderHwpxToSvg,
81
84
  simulateWrap,
82
85
  simulateWrapKeepWord
83
- } from "./chunk-WTT2KJOM.js";
84
- import "./chunk-NIISBGSR.js";
86
+ } from "./chunk-SA22NK56.js";
87
+ import "./chunk-HZU7Y22R.js";
85
88
  import {
86
89
  VERSION
87
- } from "./chunk-3TSTZGCJ.js";
90
+ } from "./chunk-ZJ75YDW7.js";
88
91
  export {
92
+ BUILTIN_TEMPLATES,
89
93
  DEFAULT_REDACT_RULES,
90
94
  HwpxSession,
91
95
  PRESET_ALIAS,
@@ -105,6 +109,7 @@ export {
105
109
  detectOle2Format,
106
110
  detectZipFormat,
107
111
  diffBlocks,
112
+ extractClickHereFields,
108
113
  extractFormFields,
109
114
  extractFormSchema,
110
115
  fillForm,
@@ -143,14 +148,17 @@ export {
143
148
  patchHwpx,
144
149
  patchHwpxBlocks,
145
150
  placeSealHwpx,
151
+ readBuiltinTemplate,
152
+ readBuiltinTemplateSample,
146
153
  redactMarkdown,
147
154
  redactText,
148
155
  renderHtml,
149
156
  renderHwpxToSvg,
157
+ resolveBuiltinTemplate,
150
158
  scanSectionXml,
151
159
  simulateWrap,
152
160
  simulateWrapKeepWord,
153
161
  unknownFontWarnings,
154
162
  validateHwpx
155
163
  };
156
- //# sourceMappingURL=-ECUCTQTR.js.map
164
+ //# sourceMappingURL=-RH6BEVTT.js.map
@@ -240,4 +240,4 @@ export {
240
240
  ensureFormulaModels,
241
241
  ensureSingleModel
242
242
  };
243
- //# sourceMappingURL=chunk-J2RZ444H.js.map
243
+ //# sourceMappingURL=chunk-3FFPHTXD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/pdf/formula/models.ts"],"sourcesContent":["/**\r\n * 수식 OCR 모델 자동 다운로드 + SHA-256 검증\r\n *\r\n * 캐시 위치: `~/.cache/kordoc/models/pix2text/`\r\n * 총 ~155MB (MFD 44MB + MFR encoder 87MB + MFR decoder 30MB + tokenizer 40KB)\r\n *\r\n * HF URL + SHA 는 Docufinder archive/rust-formula-ocr-wip 에서 검증 완료됨.\r\n * 모델 버전 갱신 시 URL + SHA 를 함께 갱신해야 한다.\r\n */\r\n\r\nimport { createHash } from \"crypto\"\r\nimport { createReadStream } from \"fs\"\r\nimport { mkdir, stat, unlink, rename } from \"fs/promises\"\r\nimport { createWriteStream } from \"fs\"\r\nimport { homedir } from \"os\"\r\nimport { join, dirname } from \"path\"\r\nimport { pipeline } from \"stream/promises\"\r\nimport { Readable } from \"stream\"\r\n\r\nexport interface ModelSpec {\r\n name: string\r\n filename: string\r\n url: string\r\n sha256: string\r\n sizeMb: number\r\n}\r\n\r\n/** 모델 스펙 (SHA-256 은 실제 다운로드로 검증됨 — 변경 금지) */\r\nexport const MFD_MODEL: ModelSpec = {\r\n name: \"Pix2Text MFD\",\r\n filename: \"mfd.onnx\",\r\n url: \"https://huggingface.co/breezedeus/pix2text-mfd/resolve/main/mfd-v20240618.onnx\",\r\n sha256: \"51a8854743b17ae654729af8db82a630c1ccfa06debf4856c8b28055f87d02c1\",\r\n sizeMb: 42,\r\n}\r\n\r\nexport const MFR_ENCODER_MODEL: ModelSpec = {\r\n name: \"Pix2Text MFR encoder\",\r\n filename: \"encoder_model.onnx\",\r\n url: \"https://huggingface.co/breezedeus/pix2text-mfr/resolve/main/encoder_model.onnx\",\r\n sha256: \"bd8d5c322792e9ec45793af5569e9748f82a3d728a9e00213dbfc56c1486f37d\",\r\n sizeMb: 87,\r\n}\r\n\r\nexport const MFR_DECODER_MODEL: ModelSpec = {\r\n name: \"Pix2Text MFR decoder\",\r\n filename: \"decoder_model.onnx\",\r\n url: \"https://huggingface.co/breezedeus/pix2text-mfr/resolve/main/decoder_model.onnx\",\r\n sha256: \"fd0f92d7a012f3dae41e1ac79421aea0ea888b5a66cb3f9a004e424f82f3daed\",\r\n sizeMb: 30,\r\n}\r\n\r\nexport const MFR_TOKENIZER: ModelSpec = {\r\n name: \"Pix2Text MFR tokenizer\",\r\n filename: \"tokenizer.json\",\r\n url: \"https://huggingface.co/breezedeus/pix2text-mfr/resolve/main/tokenizer.json\",\r\n sha256: \"3e2ab757277d22639bec28c9d7972e352d3d1dba223051fa674002dc5ab64df3\",\r\n sizeMb: 1,\r\n}\r\n\r\nexport const ALL_FORMULA_MODELS: ReadonlyArray<ModelSpec> = [\r\n MFD_MODEL,\r\n MFR_ENCODER_MODEL,\r\n MFR_DECODER_MODEL,\r\n MFR_TOKENIZER,\r\n]\r\n\r\n/**\r\n * 모델 캐시 하위 디렉토리 경로. 환경 변수 `KORDOC_MODEL_CACHE` 가 설정되면\r\n * 해당 경로를 우선 사용, 없으면 `~/.cache/kordoc/models/<subdir>/`.\r\n * (수식 OCR 외 텍스트 OCR 등 다른 모델군도 공용 — subdir 로 격리)\r\n */\r\nexport function getModelsDir(subdir: string): string {\r\n const override = process.env.KORDOC_MODEL_CACHE\r\n if (override && override.trim()) {\r\n return join(override, subdir)\r\n }\r\n return join(homedir(), \".cache\", \"kordoc\", \"models\", subdir)\r\n}\r\n\r\nexport function getFormulaModelsDir(): string {\r\n return getModelsDir(\"pix2text\")\r\n}\r\n\r\nexport interface ModelStatus {\r\n spec: ModelSpec\r\n localPath: string\r\n exists: boolean\r\n /** SHA 검증까지 끝났는가 (exists && valid) */\r\n verified: boolean\r\n /** 검증 실패 시 이유 */\r\n invalidReason?: string\r\n}\r\n\r\n/** 지정 모델군의 존재/유효성 상태 반환 (다운로드 없이 확인만) */\r\nexport async function getModelStatusIn(dir: string, specs: ReadonlyArray<ModelSpec>): Promise<ModelStatus[]> {\r\n const result: ModelStatus[] = []\r\n for (const spec of specs) {\r\n const localPath = join(dir, spec.filename)\r\n let exists = false\r\n try {\r\n const s = await stat(localPath)\r\n exists = s.isFile() && s.size > 0\r\n } catch {\r\n exists = false\r\n }\r\n if (!exists) {\r\n result.push({ spec, localPath, exists: false, verified: false })\r\n continue\r\n }\r\n try {\r\n const actual = await sha256OfFile(localPath)\r\n if (actual === spec.sha256) {\r\n result.push({ spec, localPath, exists: true, verified: true })\r\n } else {\r\n result.push({\r\n spec,\r\n localPath,\r\n exists: true,\r\n verified: false,\r\n invalidReason: `SHA256 mismatch: expected ${spec.sha256}, got ${actual}`,\r\n })\r\n }\r\n } catch (e) {\r\n result.push({\r\n spec,\r\n localPath,\r\n exists: true,\r\n verified: false,\r\n invalidReason: `SHA compute failed: ${(e as Error).message}`,\r\n })\r\n }\r\n }\r\n return result\r\n}\r\n\r\n/** 모든 수식 모델의 존재/유효성 상태 반환 (다운로드 없이 확인만) */\r\nexport async function getFormulaModelStatus(): Promise<ModelStatus[]> {\r\n return getModelStatusIn(getFormulaModelsDir(), ALL_FORMULA_MODELS)\r\n}\r\n\r\nexport interface DownloadProgress {\r\n spec: ModelSpec\r\n /** 현재까지 다운로드한 바이트 */\r\n downloaded: number\r\n /** 전체 바이트 (알 수 있으면) */\r\n total: number | null\r\n /** \"download\" | \"verify\" | \"done\" | \"skip\" */\r\n phase: \"download\" | \"verify\" | \"done\" | \"skip\" | \"error\"\r\n message?: string\r\n}\r\n\r\nexport type ProgressHandler = (p: DownloadProgress) => void\r\n\r\n/**\r\n * 지정 모델군을 다운로드/검증한다.\r\n * - 이미 있고 SHA 일치 → skip\r\n * - 없음 → 다운로드 후 SHA 검증. 실패 시 파일 삭제.\r\n */\r\nexport async function ensureModelsIn(dir: string, specs: ReadonlyArray<ModelSpec>, onProgress?: ProgressHandler): Promise<void> {\r\n await mkdir(dir, { recursive: true })\r\n\r\n for (const spec of specs) {\r\n const localPath = join(dir, spec.filename)\r\n\r\n if (await isExistingValid(localPath, spec.sha256)) {\r\n onProgress?.({\r\n spec,\r\n downloaded: 0,\r\n total: null,\r\n phase: \"skip\",\r\n message: \"이미 존재 + SHA 일치\",\r\n })\r\n continue\r\n }\r\n\r\n // 기존 파일 있지만 SHA 불일치 → 삭제\r\n try {\r\n await unlink(localPath)\r\n } catch {\r\n // 없을 수 있음\r\n }\r\n\r\n await downloadToFile(spec, localPath, onProgress)\r\n }\r\n}\r\n\r\n/** 필요한 모든 수식 모델을 다운로드/검증한다. */\r\nexport async function ensureFormulaModels(onProgress?: ProgressHandler): Promise<void> {\r\n return ensureModelsIn(getFormulaModelsDir(), ALL_FORMULA_MODELS, onProgress)\r\n}\r\n\r\n/** 단일 모델만 확인/다운로드 (진단 UI 에서 개별 상태 새로고침용) */\r\nexport async function ensureSingleModel(spec: ModelSpec, onProgress?: ProgressHandler): Promise<void> {\r\n const dir = getFormulaModelsDir()\r\n await mkdir(dir, { recursive: true })\r\n const localPath = join(dir, spec.filename)\r\n if (await isExistingValid(localPath, spec.sha256)) {\r\n onProgress?.({ spec, downloaded: 0, total: null, phase: \"skip\" })\r\n return\r\n }\r\n try {\r\n await unlink(localPath)\r\n } catch {\r\n // 재다운로드 전 손상/잔존 파일 정리 best-effort — 애초에 없으면 실패해도 무방\r\n }\r\n await downloadToFile(spec, localPath, onProgress)\r\n}\r\n\r\nasync function isExistingValid(localPath: string, sha256Expected: string): Promise<boolean> {\r\n try {\r\n const s = await stat(localPath)\r\n if (!s.isFile() || s.size === 0) return false\r\n } catch {\r\n return false\r\n }\r\n try {\r\n const actual = await sha256OfFile(localPath)\r\n return actual === sha256Expected\r\n } catch {\r\n return false\r\n }\r\n}\r\n\r\nasync function downloadToFile(\r\n spec: ModelSpec,\r\n localPath: string,\r\n onProgress?: ProgressHandler,\r\n): Promise<void> {\r\n // 먼저 .part 로 받고 검증 후 rename — 중단된 다운로드가 \"정상 파일\"로 오인되는 걸 방지\r\n const partPath = `${localPath}.part`\r\n await mkdir(dirname(localPath), { recursive: true })\r\n\r\n const resp = await fetch(spec.url, {\r\n headers: {\r\n // HF CDN 은 UA 없으면 가끔 403 을 뱉는다\r\n \"User-Agent\": \"kordoc-formula-ocr/1.0 (+https://github.com/chrisryugj/kordoc)\",\r\n },\r\n })\r\n if (!resp.ok || !resp.body) {\r\n throw new Error(\r\n `${spec.name} 다운로드 실패: HTTP ${resp.status} ${resp.statusText} (${spec.url})`,\r\n )\r\n }\r\n\r\n const lenHeader = resp.headers.get(\"content-length\")\r\n const total = lenHeader ? Number.parseInt(lenHeader, 10) : null\r\n let downloaded = 0\r\n\r\n const ws = createWriteStream(partPath)\r\n try {\r\n const reader = Readable.fromWeb(resp.body as unknown as import(\"stream/web\").ReadableStream)\r\n reader.on(\"data\", (chunk: Buffer | Uint8Array) => {\r\n downloaded += chunk.length\r\n onProgress?.({\r\n spec,\r\n downloaded,\r\n total,\r\n phase: \"download\",\r\n })\r\n })\r\n await pipeline(reader, ws)\r\n } catch (e) {\r\n try {\r\n await unlink(partPath)\r\n } catch {\r\n // .part 임시파일 정리 best-effort — 본 에러(스트리밍 실패)를 가리지 않도록 무시\r\n }\r\n throw new Error(`${spec.name} 스트리밍 실패: ${(e as Error).message}`)\r\n }\r\n\r\n onProgress?.({\r\n spec,\r\n downloaded,\r\n total,\r\n phase: \"verify\",\r\n })\r\n\r\n // SHA 검증\r\n let actual: string\r\n try {\r\n actual = await sha256OfFile(partPath)\r\n } catch (e) {\r\n try {\r\n await unlink(partPath)\r\n } catch {\r\n // .part 임시파일 정리 best-effort — 본 에러(SHA 계산 실패)를 가리지 않도록 무시\r\n }\r\n throw new Error(`${spec.name} SHA 계산 실패: ${(e as Error).message}`)\r\n }\r\n\r\n if (actual !== spec.sha256) {\r\n try {\r\n await unlink(partPath)\r\n } catch {\r\n // 오염된 .part 정리 best-effort — 본 에러(SHA mismatch)를 가리지 않도록 무시\r\n }\r\n throw new Error(\r\n `${spec.name} SHA256 mismatch: expected ${spec.sha256}, got ${actual} — 모델 URL 이 오염되었거나 전송 중 손상되었습니다.`,\r\n )\r\n }\r\n\r\n await rename(partPath, localPath)\r\n onProgress?.({\r\n spec,\r\n downloaded,\r\n total,\r\n phase: \"done\",\r\n })\r\n}\r\n\r\nasync function sha256OfFile(p: string): Promise<string> {\r\n const h = createHash(\"sha256\")\r\n const stream = createReadStream(p)\r\n await pipeline(stream, async function* (src) {\r\n for await (const chunk of src) {\r\n h.update(chunk)\r\n // yield 안 함 (소비만)\r\n }\r\n })\r\n return h.digest(\"hex\")\r\n}\r\n"],"mappings":"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","names":[]}
@@ -1,10 +1,10 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
3
 
4
- var _chunkH7OWEYH2cjs = require('./chunk-H7OWEYH2.cjs');
4
+ var _chunkMGGU3ZRKcjs = require('./chunk-MGGU3ZRK.cjs');
5
5
 
6
6
 
7
- var _chunk4ZWKFDUCcjs = require('./chunk-4ZWKFDUC.cjs');
7
+ var _chunk7DZPPUQDcjs = require('./chunk-7DZPPUQD.cjs');
8
8
 
9
9
  // src/ocr/ruling-lines.ts
10
10
  var INK_LUMA_MAX = 190;
@@ -148,10 +148,10 @@ var OCR_REC_DICT = {
148
148
  };
149
149
  var ALL_OCR_MODELS = [OCR_DET_MODEL, OCR_REC_MODEL, OCR_REC_DICT];
150
150
  function getOcrModelsDir() {
151
- return _chunkH7OWEYH2cjs.getModelsDir.call(void 0, "ppocr");
151
+ return _chunkMGGU3ZRKcjs.getModelsDir.call(void 0, "ppocr");
152
152
  }
153
153
  async function ensureOcrModels(onProgress) {
154
- return _chunkH7OWEYH2cjs.ensureModelsIn.call(void 0, getOcrModelsDir(), ALL_OCR_MODELS, onProgress);
154
+ return _chunkMGGU3ZRKcjs.ensureModelsIn.call(void 0, getOcrModelsDir(), ALL_OCR_MODELS, onProgress);
155
155
  }
156
156
  function parseCharacterDict(yml) {
157
157
  const lines = yml.split("\n");
@@ -512,7 +512,7 @@ function ocrItemsToBlocks(items, pageNumber, pdfW, pdfH, scale, extraLines) {
512
512
  isHidden: false
513
513
  };
514
514
  });
515
- return _chunk4ZWKFDUCcjs.extractPageBlocksWithLines.call(void 0, norm, pageNumber, { fnArray: [], argsArray: [] }, pdfW, pdfH, extraLines);
515
+ return _chunk7DZPPUQDcjs.extractPageBlocksWithLines.call(void 0, norm, pageNumber, { fnArray: [], argsArray: [] }, pdfW, pdfH, extraLines);
516
516
  }
517
517
  async function tryImport2(name, loader) {
518
518
  try {
@@ -557,4 +557,4 @@ function bgraToRgba(bgra) {
557
557
 
558
558
 
559
559
  exports.ensureOcrModels = ensureOcrModels; exports.getOcrEngine = getOcrEngine; exports.detectRulingLines = detectRulingLines; exports.rulingToPdfLines = rulingToPdfLines; exports.runPdfOcr = runPdfOcr; exports.ocrItemsToBlocks = ocrItemsToBlocks;
560
- //# sourceMappingURL=chunk-PATPZTH7.cjs.map
560
+ //# sourceMappingURL=chunk-5F5UCACZ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["c:\\github_project\\kordoc\\dist\\chunk-5F5UCACZ.cjs"],"names":[],"mappings":"AAAA;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;AACA,IAAI,aAAa,EAAE,GAAG;AACtB,IAAI,mBAAmB,EAAE,EAAE;AAC3B,IAAI,kBAAkB,EAAE,GAAG;AAC3B,IAAI,WAAW,EAAE,CAAC;AAClB,IAAI,mBAAmB,EAAE,GAAG;AAC5B,IAAI,mBAAmB,EAAE,IAAI;AAC7B,SAAS,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;AACvD,EAAE,MAAM,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC;AACzD,EAAE,MAAM,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;AACvE,EAAE,MAAM,IAAI,EAAE,IAAI,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC;AAC5C,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE;AACtD,IAAI,MAAM,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC;AACzE,IAAI,GAAG,CAAC,KAAK,GAAG,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;AAC9D,EAAE;AACF,EAAE,MAAM,YAAY,EAAE,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC;AAClF,EAAE,MAAM,UAAU,EAAE,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC;AAC/E,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC;AACnC;AACA,SAAS,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE;AAC1E,EAAE,MAAM,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM;AAC1C,EAAE,MAAM,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK;AACzC,EAAE,MAAM,GAAG,EAAE,UAAU,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC;AACxG,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;AAChB,EAAE,IAAI,KAAK,EAAE,CAAC,CAAC;AACf,EAAE,MAAM,iBAAiB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG;AACxC,IAAI,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,KAAK,GAAG,KAAK,EAAE,OAAO,CAAC;AAC3C,IAAI,IAAI,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;AAC3B,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,GAAG,CAAC,CAAC,EAAE,EAAE,IAAI,GAAG,CAAC,EAAE;AAChD,MAAM,KAAK,EAAE;AACb,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE;AACrC,IAAI;AACJ,IAAI,OAAO,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACvC,EAAE,CAAC;AACH,EAAE,MAAM,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG;AACtB,IAAI,MAAM,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AACtC,IAAI,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM;AAClC,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,mBAAmB,GAAG,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,kBAAkB,EAAE,MAAM;AAC/H,IAAI,MAAM,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;AACzC,IAAI,GAAG,CAAC,IAAI;AACZ,MAAM,UAAU,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;AACxJ,IAAI,CAAC;AACL,EAAE,CAAC;AACH,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;AAC3C,IAAI,MAAM,KAAK,EAAE,CAAC,CAAC;AACnB,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC;AACrB,IAAI,IAAI,IAAI,EAAE,CAAC;AACf,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE;AAC1C,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;AAClD,MAAM,GAAG,CAAC,EAAE,EAAE;AACd,QAAQ,GAAG,CAAC,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG;AACxC,QAAQ,IAAI,EAAE,CAAC;AACf,MAAM,EAAE,KAAK,GAAG,CAAC,SAAS,GAAG,CAAC,EAAE;AAChC,QAAQ,GAAG,CAAC,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,EAAE;AAC/C,UAAU,MAAM,GAAG,EAAE,IAAI,EAAE,GAAG;AAC9B,UAAU,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,GAAG,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;AAC5E,UAAU,SAAS,EAAE,CAAC,CAAC;AACvB,UAAU,IAAI,EAAE,CAAC;AACjB,QAAQ;AACR,MAAM;AACN,IAAI;AACJ,IAAI,MAAM,KAAK,EAAE,CAAC,CAAC;AACnB,IAAI,MAAM,KAAK,kBAAkB,IAAI,GAAG,CAAC,CAAC;AAC1C,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,IAAI,EAAE;AAC7B,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC,EAAE;AAClC,QAAQ,IAAI,CAAC,IAAI,CAAC;AAClB,QAAQ,QAAQ;AAChB,MAAM;AACN,MAAM,IAAI,OAAO,EAAE,KAAK;AACxB,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,QAAQ,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ;AACjC,QAAQ,MAAM,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAC3B,QAAQ,MAAM,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AACjF,QAAQ,MAAM,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AACxE,QAAQ,GAAG,CAAC,QAAQ,GAAG,QAAQ,EAAE,kBAAkB,EAAE;AACrD,UAAU,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC;AAC7C,UAAU,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC;AAC7C,UAAU,IAAI,CAAC,KAAK,EAAE,IAAI;AAC1B,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACzB,UAAU,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACrB,UAAU,OAAO,EAAE,IAAI;AACvB,UAAU,KAAK;AACf,QAAQ;AACR,MAAM;AACN,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;AAC7B,IAAI;AACJ,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAC9F,IAAI;AACJ,IAAI,KAAK,EAAE,IAAI;AACf,EAAE;AACF,EAAE,IAAI,CAAC,MAAM,KAAK,GAAG,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;AACrC,EAAE,OAAO,GAAG;AACZ;AACA,SAAS,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE;AACpD,EAAE,MAAM,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG;AACpD,IAAI,MAAM,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK;AACnD,IAAI,OAAO;AACX,MAAM,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK;AACtC,MAAM,EAAE,EAAE,CAAC;AACX,MAAM,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK;AACtC,MAAM,EAAE,EAAE,CAAC;AACX,MAAM,SAAS,EAAE,CAAC,CAAC,YAAY,EAAE;AACjC,IAAI,CAAC;AACL,EAAE,CAAC,CAAC;AACJ,EAAE,MAAM,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG;AAChD,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK;AACvC,IAAI,MAAM,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK;AACvD,IAAI,MAAM,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK;AACvD,IAAI,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,YAAY,EAAE,MAAM,CAAC;AAC7E,EAAE,CAAC,CAAC;AACJ,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC;AACnC;AACA;AACA;AACA,uCAAsC;AACtC,4BAA2B;AAC3B;AACA;AACA,IAAI,cAAc,EAAE;AACpB,EAAE,IAAI,EAAE,qBAAqB;AAC7B,EAAE,QAAQ,EAAE,UAAU;AACtB,EAAE,GAAG,EAAE,0FAA0F;AACjG,EAAE,MAAM,EAAE,kEAAkE;AAC5E,EAAE,MAAM,EAAE;AACV,CAAC;AACD,IAAI,cAAc,EAAE;AACpB,EAAE,IAAI,EAAE,qBAAqB;AAC7B,EAAE,QAAQ,EAAE,iBAAiB;AAC7B,EAAE,GAAG,EAAE,iGAAiG;AACxG,EAAE,MAAM,EAAE,kEAAkE;AAC5E,EAAE,MAAM,EAAE;AACV,CAAC;AACD,IAAI,aAAa,EAAE;AACnB,EAAE,IAAI,EAAE,sBAAsB;AAC9B,EAAE,QAAQ,EAAE,gBAAgB;AAC5B,EAAE,GAAG,EAAE,gGAAgG;AACvG,EAAE,MAAM,EAAE,kEAAkE;AAC5E,EAAE,MAAM,EAAE;AACV,CAAC;AACD,IAAI,eAAe,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,YAAY,CAAC;AACjE,SAAS,eAAe,CAAC,EAAE;AAC3B,EAAE,OAAO,4CAAY,OAAQ,CAAC;AAC9B;AACA,MAAM,SAAS,eAAe,CAAC,UAAU,EAAE;AAC3C,EAAE,OAAO,8CAAc,eAAgB,CAAC,CAAC,EAAE,cAAc,EAAE,UAAU,CAAC;AACtE;AACA,SAAS,kBAAkB,CAAC,GAAG,EAAE;AACjC,EAAE,MAAM,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;AAC/B,EAAE,MAAM,MAAM,EAAE,CAAC,CAAC;AAClB,EAAE,IAAI,OAAO,EAAE,KAAK;AACpB,EAAE,IAAI,WAAW,EAAE,CAAC,CAAC;AACrB,EAAE,IAAI,CAAC,MAAM,KAAK,GAAG,KAAK,EAAE;AAC5B,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE;AACjB,MAAM,MAAM,GAAG,EAAE,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC;AACvD,MAAM,GAAG,CAAC,EAAE,EAAE;AACd,QAAQ,OAAO,EAAE,IAAI;AACrB,QAAQ,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM;AACjC,MAAM;AACN,MAAM,QAAQ;AACd,IAAI;AACJ,IAAI,MAAM,EAAE,EAAE,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AACxC,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,UAAU,EAAE;AACxC,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAClB,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3G,QAAQ,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AAC9C,MAAM;AACN,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AACnB,MAAM,QAAQ;AACd,IAAI;AACJ,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK;AACjC,EAAE;AACF,EAAE,OAAO,KAAK;AACd;AACA;AACA;AACA,IAAI,cAAc,EAAE,GAAG;AACvB,IAAI,WAAW,EAAE,GAAG;AACpB,IAAI,eAAe,EAAE,GAAG;AACxB,IAAI,iBAAiB,EAAE,GAAG;AAC1B,IAAI,aAAa,EAAE,CAAC;AACpB,IAAI,cAAc,EAAE,GAAG;AACvB,IAAI,WAAW,EAAE,EAAE;AACnB,IAAI,cAAc,EAAE,GAAG;AACvB,IAAI,cAAc,EAAE,IAAI;AACxB,IAAI,WAAW,EAAE,GAAG;AACpB,IAAI,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;AACpC,IAAI,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;AACnC,IAAI,UAAU,EAAE,MAAM,WAAW;AACjC,EAAE;AACF,EAAE;AACF,EAAE;AACF,EAAE;AACF,EAAE;AACF,EAAE,WAAW,CAAC,KAAK,EAAE;AACrB,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG;AACxB,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG;AACxB,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI;AAC1B,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG;AACxB,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK;AAC5B,EAAE;AACF,EAAE,OAAO,MAAM,MAAM,CAAC,EAAE;AACxB,IAAI,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC;AACpD,MAAM,SAAS,CAAC,kBAAkB,EAAE,CAAC,EAAE,GAAG,4DAAM,CAAC,kBAAkB,GAAC,CAAC;AACrE,MAAM,SAAS;AACf,QAAQ,OAAO;AACf,QAAQ,CAAC,EAAE,GAAG,4DAAM,CAAC,OAAO;AAC5B,MAAM;AACN,IAAI,CAAC,CAAC;AACN,IAAI,MAAM,SAAS,EAAE,WAAW;AAChC,IAAI,MAAM,SAAS,EAAE,OAAO,SAAS,IAAI,WAAW,EAAE,SAAS,mBAAE,QAAQ,CAAC,OAAQ,UAAG,UAAQ;AAC7F,IAAI,MAAM,IAAI,EAAE,eAAe,CAAC,CAAC;AACjC,IAAI,MAAM,YAAY,EAAE;AACxB,MAAM,sBAAsB,EAAE,KAAK;AACnC,MAAM,kBAAkB,EAAE,CAAC,KAAK,CAAC;AACjC,MAAM,gBAAgB,EAAE;AACxB;AACA,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC;AAClD,MAAM,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,wBAAI,GAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC;AACpF,MAAM,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,wBAAI,GAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC;AACpF,MAAM,gCAAQ,wBAAK,GAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,EAAE,OAAO;AACxD,IAAI,CAAC,CAAC;AACN,IAAI,MAAM,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC;AAC5C,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE,MAAM,IAAI,KAAK,CAAC,wJAAwJ,CAAC;AACpM,IAAI,OAAO,IAAI,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;AAC3E,EAAE;AACF;AACA,EAAE,MAAM,OAAO,CAAC,EAAE;AAClB,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE;AAC1C,MAAM,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO;AAC3B,MAAM,GAAG,CAAC,OAAO,IAAI,IAAI,UAAU,EAAE;AACrC,QAAQ,IAAI;AACZ,UAAU,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3B,QAAQ,EAAE,WAAM;AAChB,QAAQ;AACR,MAAM;AACN,IAAI;AACJ,EAAE;AACF;AACA;AACA;AACA;AACA,EAAE,MAAM,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;AAC3C,IAAI,GAAG,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;AAChE,IAAI,MAAM,MAAM,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC;AACxD,IAAI,MAAM,MAAM,EAAE,CAAC,CAAC;AACpB,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,EAAE;AAC3B,MAAM,MAAM,EAAE,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;AAChE,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,WAAW,GAAG,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AACzE,IAAI;AACJ,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAChD,IAAI,OAAO,KAAK;AAChB,EAAE;AACF;AACA,EAAE,MAAM,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;AACpC,IAAI,MAAM,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC;AACzD,IAAI,MAAM,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAChE,IAAI,MAAM,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACjE,IAAI,MAAM,IAAI,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC9I,IAAI,MAAM,MAAM,EAAE,GAAG,EAAE,EAAE;AACzB,IAAI,MAAM,MAAM,EAAE,IAAI,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC;AAC7C,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;AACpC,MAAM,MAAM,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG;AAChC,MAAM,MAAM,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG;AACpC,MAAM,MAAM,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG;AACpC,MAAM,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;AAC/C,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;AACvD,MAAM,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;AAC3D,IAAI;AACJ,IAAI,MAAM,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACxE,IAAI,MAAM,IAAI,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACxE,IAAI,MAAM,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AACrD,IAAI,MAAM,SAAS,EAAE,cAAc,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC;AACpD,IAAI,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE;AACzB,IAAI,MAAM,GAAG,EAAE,OAAO,EAAE,EAAE;AAC1B,IAAI,MAAM,MAAM,EAAE,CAAC,CAAC;AACpB,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE;AACvD,MAAM,MAAM,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;AAClC,MAAM,MAAM,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;AAClC,MAAM,MAAM,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,iBAAiB,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAChE,MAAM,MAAM,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;AAC9D,MAAM,MAAM,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;AAC9D,MAAM,MAAM,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;AACrE,MAAM,MAAM,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;AACtE,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,aAAa,GAAG,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,QAAQ;AACpE,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC1D,IAAI;AACJ,IAAI,OAAO,KAAK;AAChB,EAAE;AACF;AACA,EAAE,MAAM,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE;AAChD,IAAI,MAAM,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5F,IAAI,MAAM,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC;AAC9C,IAAI,MAAM,IAAI,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AACxN,IAAI,MAAM,MAAM,EAAE,OAAO,EAAE,UAAU;AACrC,IAAI,MAAM,MAAM,EAAE,IAAI,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC;AAC7C,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE;AACzC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;AACnC,QAAQ,MAAM,IAAI,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;AACpC,QAAQ,MAAM,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;AAClC,QAAQ,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACjD,QAAQ,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACzD,QAAQ,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACzD,MAAM;AACN,IAAI;AACJ,IAAI,MAAM,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;AACpF,IAAI,MAAM,IAAI,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACxE,IAAI,MAAM,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC/C,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI;AAChC,IAAI,MAAM,KAAK,EAAE,MAAM,CAAC,IAAI;AAC5B,IAAI,MAAM,QAAQ,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC;AACpD,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,IAAI;AAC7B,IAAI,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC;AACzG,EAAE;AACF,CAAC;AACD,SAAS,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE;AACrC,EAAE,IAAI,KAAK,EAAE,EAAE;AACf,EAAE,IAAI,QAAQ,EAAE,CAAC;AACjB,EAAE,IAAI,UAAU,EAAE,CAAC;AACnB,EAAE,IAAI,KAAK,EAAE,CAAC,CAAC;AACf,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AAC9B,IAAI,MAAM,IAAI,EAAE,EAAE,EAAE,CAAC;AACrB,IAAI,IAAI,KAAK,EAAE,CAAC;AAChB,IAAI,IAAI,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC;AACzB,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AAChC,MAAM,MAAM,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC7B,MAAM,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE;AACrB,QAAQ,MAAM,EAAE,CAAC;AACjB,QAAQ,KAAK,EAAE,CAAC;AAChB,MAAM;AACN,IAAI;AACJ,IAAI,MAAM,OAAO,EAAE,KAAK,IAAI,IAAI;AAChC,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,MAAM,EAAE,QAAQ;AACtC,IAAI,IAAI,EAAE,EAAE,KAAK;AACjB,IAAI,GAAG,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,CAAC,EAAE;AAC7B,MAAM,IAAI,MAAM,EAAE,CAAC;AACnB,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC;AAC1E,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK;AACnB,IAAI;AACJ,IAAI,QAAQ,GAAG,CAAC;AAChB,IAAI,SAAS,EAAE;AACf,IAAI,GAAG,CAAC,KAAK,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAChE,IAAI,KAAK,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,GAAG,GAAG;AAClD,EAAE;AACF,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,OAAO,IAAI;AACxB,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC;AACtE;AACA,SAAS,cAAc,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;AACpC,EAAE,MAAM,QAAQ,EAAE,IAAI,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;AACvC,EAAE,MAAM,MAAM,EAAE,CAAC,CAAC;AAClB,EAAE,MAAM,MAAM,EAAE,CAAC,CAAC;AAClB,EAAE,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE;AAC9C,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,UAAU,EAAE,QAAQ;AAC7D,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE;AAC5D,IAAI,IAAI,IAAI,EAAE,CAAC;AACf,IAAI,IAAI,MAAM,EAAE,CAAC;AACjB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;AACpB,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AACrB,IAAI,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AACtB,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;AACzB,MAAM,MAAM,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AAC3B,MAAM,MAAM,GAAG,EAAE,EAAE,EAAE,CAAC;AACtB,MAAM,MAAM,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;AACpB,MAAM,KAAK,EAAE;AACb,MAAM,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE;AAC1B,MAAM,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE;AAC1B,MAAM,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE;AAC1B,MAAM,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE;AAC1B,MAAM,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE;AACjE,QAAQ,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;AAC1B,QAAQ,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AACzB,MAAM;AACN,MAAM,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE;AACrE,QAAQ,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;AAC1B,QAAQ,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AACzB,MAAM;AACN,MAAM,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE;AACjE,QAAQ,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;AAC1B,QAAQ,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AACzB,MAAM;AACN,MAAM,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE;AACrE,QAAQ,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;AAC1B,QAAQ,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AACzB,MAAM;AACN,IAAI;AACJ,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,aAAa,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,YAAY,EAAE,QAAQ;AAC1E,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACtD,EAAE;AACF,EAAE,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;AAClG;AACA,MAAM,SAAS,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE;AACvC,EAAE,IAAI;AACN,IAAI,OAAO,MAAM,MAAM,CAAC,CAAC;AACzB,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE;AACd,IAAI,MAAM,IAAI,KAAK;AACnB,MAAM,CAAC,4EAA4E,EAAE,IAAI,CAAC,uDAAuD,EAAE,IAAI,CAAC,qEAAqE,EAAE,CAAC,CAAC,OAAO,CAAC;AACzO,IAAA;AACA,EAAA;AACA;AACA;AACA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,sBAAA;AACA,MAAA;AACA,QAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,QAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"C:\\github_project\\kordoc\\dist\\chunk-5F5UCACZ.cjs","sourcesContent":[null]}
@@ -85,4 +85,4 @@ export {
85
85
  APPROVAL_MAX,
86
86
  buildGongmunOptions
87
87
  };
88
- //# sourceMappingURL=chunk-5RPYBC2Q.js.map
88
+ //# sourceMappingURL=chunk-6GBLFQMA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hwpx/gongmun-surface.ts"],"sourcesContent":["/**\r\n * 공문서 옵션 표면 SSOT (v4.0.4, 인벤토리 영역1-1) — CLI(commander)와 MCP(zod)가\r\n * 각자 손배선하던 GongmunOptions 조립을 한 곳으로 모은다.\r\n *\r\n * 실측 드리프트의 뿌리는 두 가지였다:\r\n * 1. 값 집합(열거·중첩 키 목록·범위)이 세 곳(gongmun.ts 타입 / commander 검증 /\r\n * zod shape)에 각자 사경 — line_spacing이 MCP에 빠지고 sizes.bodyTitle이\r\n * zod에 누락되는 식. → 여기의 상수에서 양쪽이 파생한다.\r\n * 2. 조립 의미론(cover 우선순위, 조건부 대입)이 두 벌 복붙. → buildGongmunOptions\r\n * 하나로 통일 — 옵션 신설 시 이 파일과 표면별 플래그/파라미터 선언만 만지면 된다.\r\n *\r\n * 표면 문법(플래그 이름·설명문·kv 파싱)은 각 표면의 것 — 여기는 값과 의미만 담는다.\r\n */\r\n\r\nimport type { GongmunOptions, GongmunPreset } from \"./gongmun.js\"\r\n\r\n// ─── 값 집합 (CLI 검증·MCP zod 공통 파생원) ──────────────\r\n\r\nexport const BODY_FONTS = [\"myeongjo\", \"gothic\"] as const\r\nexport const H2_MARKERS = [\"box\", \"number\", \"none\"] as const\r\nexport const BULLET2_CHARS = [\"ㅇ\", \"○\"] as const\r\n\r\n/** 요소별 글꼴 오버라이드 역할 키 (GongmunOptions.fonts) */\r\nexport const FONT_ROLE_KEYS = [\"body\", \"heading\", \"ref\", \"table\"] as const\r\n/** 개조식 요소별 크기 키 (gaejosik.ts GaejosikSizeOverrides와 정합 — 드리프트 시 컴파일 에러) */\r\nexport const SIZE_KEYS = [\r\n \"dae\", \"cham\", \"chapter\", \"coverTitle\", \"coverSub\",\r\n \"tocLabel\", \"tocRoman\", \"tocItem\", \"table\", \"bodyTitle\",\r\n] as const\r\n/** 기안문 두문 키 (별지 제1호서식) */\r\nexport const DOC_HEAD_KEYS = [\"org\", \"to\", \"via\", \"title\"] as const\r\n/** 기안문 결문 키 */\r\nexport const DOC_FOOT_KEYS = [\r\n \"sender\", \"drafter\", \"reviewer\", \"approver\", \"cooperator\", \"docNum\", \"receive\",\r\n \"address\", \"site\", \"phone\", \"fax\", \"email\", \"disclosure\",\r\n] as const\r\n/** 공고문 두문·결문 키 */\r\nexport const NOTICE_HEAD_KEYS = [\"no\", \"date\", \"sender\"] as const\r\n/** 보도자료 담당 표 키 */\r\nexport const PRESS_CONTACT_KEYS = [\"dept\", \"manager\", \"phone\"] as const\r\n\r\n/** 수치 범위 — MCP zod와 문서화가 공유 (라이브러리 검증은 gongmun.ts 방어선) */\r\nexport const BODY_PT_RANGE = { min: 6, max: 40 } as const\r\nexport const LINE_SPACING_RANGE = { min: 50, max: 300 } as const\r\nexport const SIZE_PT_RANGE = { min: 6, max: 60 } as const\r\nexport const APPROVAL_MAX = 6\r\n\r\n// SIZE_KEYS ⊆ GaejosikSizeOverrides 컴파일 타임 잠금 — gaejosik.ts에 키가 늘면\r\n// 여기(와 이를 파생하는 MCP zod·CLI 안내문)도 갱신을 강제한다\r\ntype SizeKey = (typeof SIZE_KEYS)[number]\r\ntype _SizeKeysMatch = SizeKey extends keyof NonNullable<GongmunOptions[\"sizes\"]>\r\n ? (keyof NonNullable<GongmunOptions[\"sizes\"]> extends SizeKey ? true : never)\r\n : never\r\nconst _sizeKeysLock: _SizeKeysMatch = true\r\nvoid _sizeKeysLock\r\n\r\n// ─── 조립 (두 표면 공통 의미론) ──────────────────────────\r\n\r\n/**\r\n * 표면 중립 입력 — CLI는 플래그·kv 파싱 결과를, MCP는 zod 통과 파라미터를 이 모양으로\r\n * 넘긴다. 모든 필드가 \"명시된 것만 정의\"(미지정 undefined) 규약 — --no-x 기본값 같은\r\n * 표면 고유 사정은 어댑터가 undefined로 정돈해서 넘겨야 한다.\r\n */\r\nexport interface GongmunSurfaceInput {\r\n preset: GongmunPreset\r\n font?: (typeof BODY_FONTS)[number]\r\n bodyPt?: number\r\n lineSpacing?: number\r\n org?: string\r\n date?: string\r\n cover?: boolean\r\n toc?: boolean\r\n approval?: string[]\r\n pageNumbers?: boolean\r\n endMark?: boolean\r\n bodyTitleBox?: boolean\r\n h2Marker?: (typeof H2_MARKERS)[number]\r\n fonts?: NonNullable<GongmunOptions[\"fonts\"]>\r\n sizes?: NonNullable<GongmunOptions[\"sizes\"]>\r\n bullet2?: (typeof BULLET2_CHARS)[number]\r\n suppressSingle?: boolean\r\n docHead?: NonNullable<GongmunOptions[\"docHead\"]>\r\n docFoot?: NonNullable<GongmunOptions[\"docFoot\"]>\r\n reportInfo?: string\r\n noticeHead?: NonNullable<GongmunOptions[\"noticeHead\"]>\r\n press?: NonNullable<GongmunOptions[\"press\"]>\r\n}\r\n\r\n/**\r\n * 중립 입력 → GongmunOptions. 종전 CLI(cli.ts:535~612)·MCP(mcp.ts:792~814) 복붙\r\n * 두 벌의 의미론을 그대로 보존한 단일 조립:\r\n * - cover: false(끄기)가 최우선 → org/date 지정 시 객체(=켜짐) → true(강제 켜기)\r\n * → 미지정이면 프리셋 기본(resolveGongmun)\r\n * - 나머지는 \"명시된 것만 대입\" — 프리셋 기본값을 undefined로 덮지 않는다\r\n */\r\nexport function buildGongmunOptions(input: GongmunSurfaceInput): GongmunOptions {\r\n const g: GongmunOptions = { preset: input.preset }\r\n if (input.font) g.bodyFont = input.font\r\n // NaN도 대입 — CLI의 비숫자 플래그(--pt abc)가 라이브러리 방어선(assertFiniteRange)\r\n // 에서 명시적 에러로 죽는 기존 경로 보존 (truthiness로 거르면 무증상 폐기가 된다)\r\n if (input.bodyPt !== undefined) g.bodyPt = input.bodyPt\r\n if (input.lineSpacing !== undefined) g.lineSpacing = input.lineSpacing\r\n if (input.cover === false) {\r\n g.cover = false\r\n } else if (input.org || input.date) {\r\n g.cover = { ...(input.org ? { org: input.org } : {}), ...(input.date ? { date: input.date } : {}) }\r\n } else if (input.cover === true) {\r\n g.cover = true\r\n }\r\n if (input.toc !== undefined) g.toc = input.toc\r\n if (input.approval && input.approval.length > 0) g.approval = input.approval\r\n if (input.pageNumbers !== undefined) g.pageNumbers = input.pageNumbers\r\n if (input.endMark !== undefined) g.endMark = input.endMark\r\n if (input.bodyTitleBox !== undefined) g.bodyTitleBox = input.bodyTitleBox\r\n if (input.h2Marker) g.h2Marker = input.h2Marker\r\n if (input.fonts) g.fonts = input.fonts\r\n if (input.sizes) g.sizes = input.sizes\r\n if (input.bullet2) g.bullet2 = input.bullet2\r\n if (input.suppressSingle !== undefined) g.suppressSingle = input.suppressSingle\r\n if (input.docHead) g.docHead = input.docHead\r\n if (input.docFoot) g.docFoot = input.docFoot\r\n if (input.reportInfo) g.reportInfo = input.reportInfo\r\n if (input.noticeHead) g.noticeHead = input.noticeHead\r\n if (input.press) g.press = input.press\r\n return g\r\n}\r\n"],"mappings":";;;AAkBO,IAAM,aAAa,CAAC,YAAY,QAAQ;AACxC,IAAM,aAAa,CAAC,OAAO,UAAU,MAAM;AAC3C,IAAM,gBAAgB,CAAC,UAAK,QAAG;AAG/B,IAAM,iBAAiB,CAAC,QAAQ,WAAW,OAAO,OAAO;AAEzD,IAAM,YAAY;AAAA,EACvB;AAAA,EAAO;AAAA,EAAQ;AAAA,EAAW;AAAA,EAAc;AAAA,EACxC;AAAA,EAAY;AAAA,EAAY;AAAA,EAAW;AAAA,EAAS;AAC9C;AAEO,IAAM,gBAAgB,CAAC,OAAO,MAAM,OAAO,OAAO;AAElD,IAAM,gBAAgB;AAAA,EAC3B;AAAA,EAAU;AAAA,EAAW;AAAA,EAAY;AAAA,EAAY;AAAA,EAAc;AAAA,EAAU;AAAA,EACrE;AAAA,EAAW;AAAA,EAAQ;AAAA,EAAS;AAAA,EAAO;AAAA,EAAS;AAC9C;AAEO,IAAM,mBAAmB,CAAC,MAAM,QAAQ,QAAQ;AAEhD,IAAM,qBAAqB,CAAC,QAAQ,WAAW,OAAO;AAGtD,IAAM,gBAAgB,EAAE,KAAK,GAAG,KAAK,GAAG;AACxC,IAAM,qBAAqB,EAAE,KAAK,IAAI,KAAK,IAAI;AAC/C,IAAM,gBAAgB,EAAE,KAAK,GAAG,KAAK,GAAG;AACxC,IAAM,eAAe;AAkDrB,SAAS,oBAAoB,OAA4C;AAC9E,QAAM,IAAoB,EAAE,QAAQ,MAAM,OAAO;AACjD,MAAI,MAAM,KAAM,GAAE,WAAW,MAAM;AAGnC,MAAI,MAAM,WAAW,OAAW,GAAE,SAAS,MAAM;AACjD,MAAI,MAAM,gBAAgB,OAAW,GAAE,cAAc,MAAM;AAC3D,MAAI,MAAM,UAAU,OAAO;AACzB,MAAE,QAAQ;AAAA,EACZ,WAAW,MAAM,OAAO,MAAM,MAAM;AAClC,MAAE,QAAQ,EAAE,GAAI,MAAM,MAAM,EAAE,KAAK,MAAM,IAAI,IAAI,CAAC,GAAI,GAAI,MAAM,OAAO,EAAE,MAAM,MAAM,KAAK,IAAI,CAAC,EAAG;AAAA,EACpG,WAAW,MAAM,UAAU,MAAM;AAC/B,MAAE,QAAQ;AAAA,EACZ;AACA,MAAI,MAAM,QAAQ,OAAW,GAAE,MAAM,MAAM;AAC3C,MAAI,MAAM,YAAY,MAAM,SAAS,SAAS,EAAG,GAAE,WAAW,MAAM;AACpE,MAAI,MAAM,gBAAgB,OAAW,GAAE,cAAc,MAAM;AAC3D,MAAI,MAAM,YAAY,OAAW,GAAE,UAAU,MAAM;AACnD,MAAI,MAAM,iBAAiB,OAAW,GAAE,eAAe,MAAM;AAC7D,MAAI,MAAM,SAAU,GAAE,WAAW,MAAM;AACvC,MAAI,MAAM,MAAO,GAAE,QAAQ,MAAM;AACjC,MAAI,MAAM,MAAO,GAAE,QAAQ,MAAM;AACjC,MAAI,MAAM,QAAS,GAAE,UAAU,MAAM;AACrC,MAAI,MAAM,mBAAmB,OAAW,GAAE,iBAAiB,MAAM;AACjE,MAAI,MAAM,QAAS,GAAE,UAAU,MAAM;AACrC,MAAI,MAAM,QAAS,GAAE,UAAU,MAAM;AACrC,MAAI,MAAM,WAAY,GAAE,aAAa,MAAM;AAC3C,MAAI,MAAM,WAAY,GAAE,aAAa,MAAM;AAC3C,MAAI,MAAM,MAAO,GAAE,QAAQ,MAAM;AACjC,SAAO;AACT;","names":[]}
@@ -3,7 +3,7 @@ import {
3
3
  ensureModelsIn,
4
4
  getModelStatusIn,
5
5
  getModelsDir
6
- } from "./chunk-NNDVFNMJ.js";
6
+ } from "./chunk-YNJDNP44.js";
7
7
 
8
8
  // src/ocr/models.ts
9
9
  import { join } from "path";
@@ -80,4 +80,4 @@ export {
80
80
  parseCharacterDict,
81
81
  ocrModelPath
82
82
  };
83
- //# sourceMappingURL=chunk-GEPINOL6.js.map
83
+ //# sourceMappingURL=chunk-6XPXIG57.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ocr/models.ts"],"sourcesContent":["/**\r\n * 내장 텍스트 OCR 모델 (PP-OCRv5 korean) 스펙 + 다운로드/검증.\r\n *\r\n * 캐시 위치: `~/.cache/kordoc/models/ppocr/` — 총 ~18MB (det 4.6 + rec 12.8 + dict 0.1)\r\n * 다운로드 인프라는 수식 OCR 과 공용 (formula/models.ts ensureModelsIn).\r\n *\r\n * 모델 출처: PaddlePaddle 공식 HuggingFace org 의 ONNX 변환본 (Apache-2.0).\r\n * SHA-256 은 실제 다운로드 + HF API lfs.oid 대조로 검증됨 — 변경 금지.\r\n * 한국어 사전은 rec 리포의 inference.yml `PostProcess.character_dict` 에\r\n * 내장 (11,945자 — 완성형 한글 11,172 음절 전량 + 자모/라틴/기호).\r\n */\r\n\r\nimport { join } from \"path\"\r\nimport {\r\n type ModelSpec,\r\n type ModelStatus,\r\n type ProgressHandler,\r\n ensureModelsIn,\r\n getModelStatusIn,\r\n getModelsDir,\r\n} from \"../pdf/formula/models.js\"\r\n\r\nexport const OCR_DET_MODEL: ModelSpec = {\r\n name: \"PP-OCRv5 mobile det\",\r\n filename: \"det.onnx\",\r\n url: \"https://huggingface.co/PaddlePaddle/PP-OCRv5_mobile_det_onnx/resolve/main/inference.onnx\",\r\n sha256: \"a431985659dc921974177a95adcfbb90fd9e51989a5e04d70d0b75f597b6e61d\",\r\n sizeMb: 5,\r\n}\r\n\r\nexport const OCR_REC_MODEL: ModelSpec = {\r\n name: \"PP-OCRv5 korean rec\",\r\n filename: \"rec_korean.onnx\",\r\n url: \"https://huggingface.co/PaddlePaddle/korean_PP-OCRv5_mobile_rec_onnx/resolve/main/inference.onnx\",\r\n sha256: \"92f0b7785e64fc9090106a241cf4c1eb97472824558272751b88a2a4476d3a08\",\r\n sizeMb: 13,\r\n}\r\n\r\nexport const OCR_REC_DICT: ModelSpec = {\r\n name: \"PP-OCRv5 korean dict\",\r\n filename: \"rec_korean.yml\",\r\n url: \"https://huggingface.co/PaddlePaddle/korean_PP-OCRv5_mobile_rec_onnx/resolve/main/inference.yml\",\r\n sha256: \"f757fa1c40e99edcf27e9cce879b93eb2a51fa46f5ef39095689b8c37dd75998\",\r\n sizeMb: 1,\r\n}\r\n\r\nexport const ALL_OCR_MODELS: ReadonlyArray<ModelSpec> = [OCR_DET_MODEL, OCR_REC_MODEL, OCR_REC_DICT]\r\n\r\nexport function getOcrModelsDir(): string {\r\n return getModelsDir(\"ppocr\")\r\n}\r\n\r\n/** 모든 텍스트 OCR 모델 다운로드/검증 (있으면 skip) */\r\nexport async function ensureOcrModels(onProgress?: ProgressHandler): Promise<void> {\r\n return ensureModelsIn(getOcrModelsDir(), ALL_OCR_MODELS, onProgress)\r\n}\r\n\r\n/** 텍스트 OCR 모델 상태 (다운로드 없이 확인만) */\r\nexport async function getOcrModelStatus(): Promise<ModelStatus[]> {\r\n return getModelStatusIn(getOcrModelsDir(), ALL_OCR_MODELS)\r\n}\r\n\r\n/**\r\n * inference.yml 에서 `PostProcess.character_dict` 리스트를 추출.\r\n * 전체 YAML 파서 없이 해당 블록의 `- <char>` 라인만 순서대로 읽는다\r\n * (공식 yml 구조 고정 — 들여쓰기 2칸, 한 줄 한 글자).\r\n *\r\n * CTC 클래스 배열: index 0 = blank, 1..N = 사전 순서, N+1(마지막) = space.\r\n */\r\nexport function parseCharacterDict(yml: string): string[] {\r\n const lines = yml.split(\"\\n\")\r\n const chars: string[] = []\r\n let inDict = false\r\n let dictIndent = -1\r\n for (const line of lines) {\r\n if (!inDict) {\r\n const m = /^(\\s*)character_dict:\\s*$/.exec(line)\r\n if (m) {\r\n inDict = true\r\n dictIndent = m[1].length\r\n }\r\n continue\r\n }\r\n // 리스트 항목 — YAML 은 키와 같은 들여쓰기의 \"- x\" 도 허용 (공식 yml 실측: 둘 다 2칸)\r\n const m = /^(\\s*)- (.*)$/.exec(line)\r\n if (m && m[1].length >= dictIndent) {\r\n let v = m[2]\r\n // YAML 인용 문자 처리 ('#' 같은 예약 문자는 인용됨)\r\n if (v.length >= 2 && ((v.startsWith(\"'\") && v.endsWith(\"'\")) || (v.startsWith('\"') && v.endsWith('\"')))) {\r\n v = v.slice(1, -1).replace(/''/g, \"'\")\r\n }\r\n chars.push(v)\r\n continue\r\n }\r\n // 들여쓰기가 얕아지면 블록 종료 (빈 줄은 통과)\r\n if (line.trim() !== \"\") break\r\n }\r\n return chars\r\n}\r\n\r\nexport function ocrModelPath(spec: ModelSpec): string {\r\n return join(getOcrModelsDir(), spec.filename)\r\n}\r\n"],"mappings":";;;;;;;;AAYA,SAAS,YAAY;AAUd,IAAM,gBAA2B;AAAA,EACtC,MAAM;AAAA,EACN,UAAU;AAAA,EACV,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,QAAQ;AACV;AAEO,IAAM,gBAA2B;AAAA,EACtC,MAAM;AAAA,EACN,UAAU;AAAA,EACV,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,QAAQ;AACV;AAEO,IAAM,eAA0B;AAAA,EACrC,MAAM;AAAA,EACN,UAAU;AAAA,EACV,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,QAAQ;AACV;AAEO,IAAM,iBAA2C,CAAC,eAAe,eAAe,YAAY;AAE5F,SAAS,kBAA0B;AACxC,SAAO,aAAa,OAAO;AAC7B;AAGA,eAAsB,gBAAgB,YAA6C;AACjF,SAAO,eAAe,gBAAgB,GAAG,gBAAgB,UAAU;AACrE;AAGA,eAAsB,oBAA4C;AAChE,SAAO,iBAAiB,gBAAgB,GAAG,cAAc;AAC3D;AASO,SAAS,mBAAmB,KAAuB;AACxD,QAAM,QAAQ,IAAI,MAAM,IAAI;AAC5B,QAAM,QAAkB,CAAC;AACzB,MAAI,SAAS;AACb,MAAI,aAAa;AACjB,aAAW,QAAQ,OAAO;AACxB,QAAI,CAAC,QAAQ;AACX,YAAMA,KAAI,4BAA4B,KAAK,IAAI;AAC/C,UAAIA,IAAG;AACL,iBAAS;AACT,qBAAaA,GAAE,CAAC,EAAE;AAAA,MACpB;AACA;AAAA,IACF;AAEA,UAAM,IAAI,gBAAgB,KAAK,IAAI;AACnC,QAAI,KAAK,EAAE,CAAC,EAAE,UAAU,YAAY;AAClC,UAAI,IAAI,EAAE,CAAC;AAEX,UAAI,EAAE,UAAU,MAAO,EAAE,WAAW,GAAG,KAAK,EAAE,SAAS,GAAG,KAAO,EAAE,WAAW,GAAG,KAAK,EAAE,SAAS,GAAG,IAAK;AACvG,YAAI,EAAE,MAAM,GAAG,EAAE,EAAE,QAAQ,OAAO,GAAG;AAAA,MACvC;AACA,YAAM,KAAK,CAAC;AACZ;AAAA,IACF;AAEA,QAAI,KAAK,KAAK,MAAM,GAAI;AAAA,EAC1B;AACA,SAAO;AACT;AAEO,SAAS,aAAa,MAAyB;AACpD,SAAO,KAAK,gBAAgB,GAAG,KAAK,QAAQ;AAC9C;","names":["m"]}
@@ -4,7 +4,7 @@
4
4
 
5
5
 
6
6
 
7
- var _chunkGZ7W64QUcjs = require('./chunk-GZ7W64QU.cjs');
7
+ var _chunkVQB5P5KJcjs = require('./chunk-VQB5P5KJ.cjs');
8
8
 
9
9
  // src/pdf/image-regions.ts
10
10
  var _pdfmjs = require('pdfjs-dist/legacy/build/pdf.mjs');
@@ -557,11 +557,24 @@ var CUT_INTERIOR_MATCH_TOL = 8;
557
557
  var CUT_MAX_INTERIOR_OVERLAP = 0.5;
558
558
  var CUT_VCHAIN_X_TOL = 1.5;
559
559
  var CUT_VCHAIN_GAP = 1;
560
+ var VERTEX_BUCKET_CELL = 100;
560
561
  function buildVertices(horizontals, verticals) {
561
562
  const vertices = [];
562
563
  const tol = CONNECT_TOL;
564
+ const buckets = /* @__PURE__ */ new Map();
565
+ for (const v of verticals) {
566
+ const b1 = Math.floor((v.y1 - tol) / VERTEX_BUCKET_CELL);
567
+ const b2 = Math.floor((v.y2 + tol) / VERTEX_BUCKET_CELL);
568
+ for (let b = b1; b <= b2; b++) {
569
+ const arr = buckets.get(b);
570
+ if (arr) arr.push(v);
571
+ else buckets.set(b, [v]);
572
+ }
573
+ }
563
574
  for (const h of horizontals) {
564
- for (const v of verticals) {
575
+ const cand = buckets.get(Math.floor(h.y1 / VERTEX_BUCKET_CELL));
576
+ if (!cand) continue;
577
+ for (const v of cand) {
565
578
  if (v.x1 >= h.x1 - tol && v.x1 <= h.x2 + tol && h.y1 >= v.y1 - tol && h.y1 <= v.y2 + tol) {
566
579
  const radius = Math.max(h.lineWidth, v.lineWidth, 1);
567
580
  vertices.push({ x: v.x1, y: h.y1, radius });
@@ -635,6 +648,17 @@ function buildTableGrids(horizontals, verticals) {
635
648
  for (const b of bands) groups.push({ lines: b, fromSplit: bands.length > 1 });
636
649
  }
637
650
  const grids = [];
651
+ const byY = [...vertices].sort((a, b) => a.y - b.y);
652
+ const vertexYs = byY.map((v) => v.y);
653
+ const lowerBoundY = (key) => {
654
+ let lo = 0, hi = vertexYs.length;
655
+ while (lo < hi) {
656
+ const mid = lo + hi >> 1;
657
+ if (vertexYs[mid] < key) lo = mid + 1;
658
+ else hi = mid;
659
+ }
660
+ return lo;
661
+ };
638
662
  for (const { lines: group, fromSplit } of groups) {
639
663
  const hLines = group.filter((l) => l.type === "h");
640
664
  const vLines = group.filter((l) => l.type === "v");
@@ -654,9 +678,16 @@ function buildTableGrids(horizontals, verticals) {
654
678
  x2: gx2 + CONNECT_TOL,
655
679
  y2: gy2 + CONNECT_TOL
656
680
  };
657
- const groupVertices = fromSplit ? mergeVertices(buildVertices(hLines, vLines)) : vertices.filter(
658
- (v) => v.x >= groupBbox.x1 && v.x <= groupBbox.x2 && v.y >= groupBbox.y1 && v.y <= groupBbox.y2
659
- );
681
+ let groupVertices;
682
+ if (fromSplit) {
683
+ groupVertices = mergeVertices(buildVertices(hLines, vLines));
684
+ } else {
685
+ groupVertices = [];
686
+ for (let k = lowerBoundY(groupBbox.y1); k < byY.length && vertexYs[k] <= groupBbox.y2; k++) {
687
+ const v = byY[k];
688
+ if (v.x >= groupBbox.x1 && v.x <= groupBbox.x2) groupVertices.push(v);
689
+ }
690
+ }
660
691
  const groupRadius = groupVertices.length > 0 ? groupVertices.reduce((max, v) => Math.max(max, v.radius), 1) : globalRadius;
661
692
  const coordMergeTol = Math.max(VERTEX_MERGE_FACTOR * groupRadius, MIN_COORD_MERGE_TOL);
662
693
  const rawYs = [
@@ -1536,9 +1567,9 @@ function detectHeadings(blocks, medianFontSize) {
1536
1567
  if (/^\d+$/.test(text)) continue;
1537
1568
  const ratio = block.style.fontSize / medianFontSize;
1538
1569
  let level = 0;
1539
- if (ratio >= _chunkGZ7W64QUcjs.HEADING_RATIO_H1) level = 1;
1540
- else if (ratio >= _chunkGZ7W64QUcjs.HEADING_RATIO_H2) level = 2;
1541
- else if (ratio >= _chunkGZ7W64QUcjs.HEADING_RATIO_H3) level = 3;
1570
+ if (ratio >= _chunkVQB5P5KJcjs.HEADING_RATIO_H1) level = 1;
1571
+ else if (ratio >= _chunkVQB5P5KJcjs.HEADING_RATIO_H2) level = 2;
1572
+ else if (ratio >= _chunkVQB5P5KJcjs.HEADING_RATIO_H3) level = 3;
1542
1573
  if (level > 0) {
1543
1574
  block.type = "heading";
1544
1575
  block.level = level;
@@ -2658,14 +2689,14 @@ function isProseSpread(items) {
2658
2689
  for (let i = 1; i < sorted.length; i++) {
2659
2690
  gaps.push(sorted[i].x - (sorted[i - 1].x + sorted[i - 1].w));
2660
2691
  }
2661
- const maxGap = _chunkGZ7W64QUcjs.safeMax.call(void 0, gaps);
2692
+ const maxGap = _chunkVQB5P5KJcjs.safeMax.call(void 0, gaps);
2662
2693
  const avgLen = items.reduce((s, i) => s + i.text.length, 0) / items.length;
2663
2694
  return maxGap < 40 && avgLen < 5;
2664
2695
  }
2665
2696
  function detectColumns(yLines) {
2666
2697
  const allItems = yLines.flat();
2667
2698
  if (allItems.length === 0) return null;
2668
- const pageWidth = _chunkGZ7W64QUcjs.safeMax.call(void 0, allItems.map((i) => i.x + i.w)) - _chunkGZ7W64QUcjs.safeMin.call(void 0, allItems.map((i) => i.x));
2699
+ const pageWidth = _chunkVQB5P5KJcjs.safeMax.call(void 0, allItems.map((i) => i.x + i.w)) - _chunkVQB5P5KJcjs.safeMin.call(void 0, allItems.map((i) => i.x));
2669
2700
  if (pageWidth < 100) return null;
2670
2701
  let bigoLineIdx = -1;
2671
2702
  for (let i = 0; i < yLines.length; i++) {
@@ -3113,7 +3144,7 @@ function extractBlocksWithGrids(items, pageNum, grids, horizontals, verticals) {
3113
3144
  let finalTextBlocks = [];
3114
3145
  if (remaining.length > 0) {
3115
3146
  const allY = remaining.map((i) => i.y);
3116
- const pageH = _chunkGZ7W64QUcjs.safeMax.call(void 0, allY) - _chunkGZ7W64QUcjs.safeMin.call(void 0, allY);
3147
+ const pageH = _chunkVQB5P5KJcjs.safeMax.call(void 0, allY) - _chunkVQB5P5KJcjs.safeMin.call(void 0, allY);
3117
3148
  const groups = xyCutOrder(remaining, Math.max(15, pageH * 0.03));
3118
3149
  const textBlocks = [];
3119
3150
  for (const group of groups) {
@@ -3301,7 +3332,7 @@ function extractPageBlocksFallback(items, pageNum, fullPage = false) {
3301
3332
  blocks.push({ type: "paragraph", text: tableText, pageNumber: pageNum, bbox, style: dominantStyle(items) });
3302
3333
  } else {
3303
3334
  const allY = items.map((i) => i.y);
3304
- const pageHeight = _chunkGZ7W64QUcjs.safeMax.call(void 0, allY) - _chunkGZ7W64QUcjs.safeMin.call(void 0, allY);
3335
+ const pageHeight = _chunkVQB5P5KJcjs.safeMax.call(void 0, allY) - _chunkVQB5P5KJcjs.safeMin.call(void 0, allY);
3305
3336
  const gapThreshold = Math.max(15, pageHeight * 0.03);
3306
3337
  const orderedGroups = proseCutX !== null ? splitTwoColumnProse(items, proseCutX) : xyCutOrder(items, gapThreshold);
3307
3338
  for (const group of orderedGroups) {
@@ -3340,4 +3371,4 @@ function extractPageBlocksFallback(items, pageNum, fullPage = false) {
3340
3371
 
3341
3372
 
3342
3373
  exports.extractImageRegions = extractImageRegions; exports.filterHiddenText = filterHiddenText; exports.collapseEvenSpacing = collapseEvenSpacing; exports.normalizeItems = normalizeItems; exports.computeMedianFontSizeFromFreq = computeMedianFontSizeFromFreq; exports.detectHeadings = detectHeadings; exports.detectMarkerHeadings = detectMarkerHeadings; exports.detectTableCaptions = detectTableCaptions; exports.detectKoreanListBlocks = detectKoreanListBlocks; exports.removeHeaderFooterBlocks = removeHeaderFooterBlocks; exports.extractPageBlocksWithLines = extractPageBlocksWithLines; exports.mergeCrossPageTables = mergeCrossPageTables;
3343
- //# sourceMappingURL=chunk-4ZWKFDUC.cjs.map
3374
+ //# sourceMappingURL=chunk-7DZPPUQD.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["c:\\github_project\\kordoc\\dist\\chunk-7DZPPUQD.cjs"],"names":[],"mappings":"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QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,UAAA;AACA,YAAA;AACA,YAAA;AACA,UAAA;AACA,UAAA;AACA,YAAA;AACA,YAAA;AACA,UAAA;AACA,UAAA;AACA,QAAA;AACA,QAAA;AACA,UAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,QAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,UAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,YAAA;AACA,YAAA;AACA,YAAA;AACA,YAAA;AACA,UAAA;AACA,UAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,UAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,UAAA;AACA,YAAA;AACA,YAAA;AACA,UAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,UAAA;AACA,YAAA;AACA,YAAA;AACA,UAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,UAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,MAAA;AACA,QAAA;AACA,MAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,UAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,UAAA;AACA,UAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,QAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,UAAA;AACA,YAAA;AACA,YAAA;AACA,YAAA;AACA,UAAA;AACA,QAAA;AACA,UAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,UAAA;AACA,YAAA;AACA,YAAA;AACA,YAAA;AACA,UAAA;AACA,UAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,UAAA;AACA,UAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,YAAA;AACA,YAAA;AACA,UAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,QAAA;AACA,QAAA;AACA,UAAA;AACA,UAAA;AACA,YAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,YAAA;AACA,YAAA;AACA,UAAA;AACA,UAAA;AACA,YAAA;AACA,YAAA;AACA,YAAA;AACA,YAAA;AACA,cAAA;AACA,cAAA;AACA,cAAA;AACA,cAAA;AACA,cAAA;AACA,cAAA;AACA,cAAA;AACA,YAAA;AACA,YAAA;AACA,YAAA;AACA,YAAA;AACA,YAAA;AACA,UAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,UAAA;AACA,UAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,MAAA;AACA,QAAA;AACA,UAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,UAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,UAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,UAAA;AACA,UAAA;AACA,YAAA;AACA,YAAA;AACA,YAAA;AACA,UAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,UAAA;AACA,UAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,QAAA;AACA,UAAA;AACA,YAAA;AACA,YAAA;AACA,YAAA;AACA,YAAA;AACA,UAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"C:\\github_project\\kordoc\\dist\\chunk-7DZPPUQD.cjs","sourcesContent":[null]}
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  sanitizeHref
4
- } from "./chunk-3TSTZGCJ.js";
4
+ } from "./chunk-ZJ75YDW7.js";
5
5
 
6
6
  // src/shared/pua.ts
7
7
  var BMP_SYMBOL_MAP = {
@@ -184,7 +184,7 @@ function buildTable(rows, options) {
184
184
  const cell = rows[rowIdx][cellIdx];
185
185
  anchorCols.add(colIdx);
186
186
  grid[rowIdx][colIdx] = {
187
- text: cell.text.trim(),
187
+ text: options?.keepEmptyParagraphs ? cell.text : cell.text.trim(),
188
188
  colSpan: cell.colSpan,
189
189
  rowSpan: cell.rowSpan
190
190
  };
@@ -220,7 +220,7 @@ function buildTableDirect(rows, numRows, options) {
220
220
  const c = cell.colAddr ?? 0;
221
221
  if (r >= numRows || c >= maxCols || r < 0 || c < 0) continue;
222
222
  anchorCols.add(c);
223
- grid[r][c] = { text: cell.text.trim(), colSpan: cell.colSpan, rowSpan: cell.rowSpan };
223
+ grid[r][c] = { text: options?.keepEmptyParagraphs ? cell.text : cell.text.trim(), colSpan: cell.colSpan, rowSpan: cell.rowSpan };
224
224
  for (let dr = 0; dr < cell.rowSpan; dr++) {
225
225
  for (let dc = 0; dc < cell.colSpan; dc++) {
226
226
  if (dr === 0 && dc === 0) continue;
@@ -613,4 +613,4 @@ export {
613
613
  dedupeRunningHeaders,
614
614
  blocksToMarkdown
615
615
  };
616
- //# sourceMappingURL=chunk-MHMVFI2N.js.map
616
+ //# sourceMappingURL=chunk-BPJSTJBN.js.map