7zip-native 0.0.0-stage → 0.0.5

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 (1327) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +293 -2
  3. package/THIRD_PARTY_NOTICES.md +23 -0
  4. package/bench/args.mts +69 -0
  5. package/bench/benchmark.mts +102 -0
  6. package/bench/compare.mts +546 -0
  7. package/bench/concurrency.mts +196 -0
  8. package/binding.gyp +51 -0
  9. package/dist/index.cjs +528 -0
  10. package/dist/index.d.cts +63 -0
  11. package/dist/index.d.mts +63 -0
  12. package/dist/index.d.ts +63 -0
  13. package/dist/index.mjs +524 -0
  14. package/docs/architecture.md +112 -0
  15. package/examples/basic.mts +19 -0
  16. package/native/addon.cpp +2154 -0
  17. package/package.json +85 -5
  18. package/prebuilds/darwin-arm64/7zip_native.node +0 -0
  19. package/prebuilds/darwin-arm64/lib7z.dylib +0 -0
  20. package/prebuilds/darwin-x64/7zip_native.node +0 -0
  21. package/prebuilds/darwin-x64/lib7z.dylib +0 -0
  22. package/prebuilds/linux-arm/7z.so +0 -0
  23. package/prebuilds/linux-arm/7zip_native.node +0 -0
  24. package/prebuilds/linux-arm64/7z.so +0 -0
  25. package/prebuilds/linux-arm64/7zip_native.node +0 -0
  26. package/prebuilds/linux-ia32/7z.so +0 -0
  27. package/prebuilds/linux-ia32/7zip_native.node +0 -0
  28. package/prebuilds/linux-x64/7z.so +0 -0
  29. package/prebuilds/linux-x64/7zip_native.node +0 -0
  30. package/prebuilds/win32-arm64/7z.dll +0 -0
  31. package/prebuilds/win32-arm64/7zip_native.node +0 -0
  32. package/prebuilds/win32-x64/7z.dll +0 -0
  33. package/prebuilds/win32-x64/7zip_native.node +0 -0
  34. package/vendor/7zip/.gitattributes +2 -0
  35. package/vendor/7zip/Asm/arm/7zCrcOpt.asm +100 -0
  36. package/vendor/7zip/Asm/arm64/7zAsm.S +187 -0
  37. package/vendor/7zip/Asm/arm64/LzmaDecOpt.S +1487 -0
  38. package/vendor/7zip/Asm/x86/7zAsm.asm +341 -0
  39. package/vendor/7zip/Asm/x86/7zCrcOpt.asm +258 -0
  40. package/vendor/7zip/Asm/x86/AesOpt.asm +742 -0
  41. package/vendor/7zip/Asm/x86/LzFindOpt.asm +540 -0
  42. package/vendor/7zip/Asm/x86/LzmaDecOpt.asm +1339 -0
  43. package/vendor/7zip/Asm/x86/Sha1Opt.asm +263 -0
  44. package/vendor/7zip/Asm/x86/Sha256Opt.asm +275 -0
  45. package/vendor/7zip/Asm/x86/Sort.asm +860 -0
  46. package/vendor/7zip/Asm/x86/XzCrc64Opt.asm +523 -0
  47. package/vendor/7zip/C/7z.h +204 -0
  48. package/vendor/7zip/C/7zAlloc.c +89 -0
  49. package/vendor/7zip/C/7zAlloc.h +19 -0
  50. package/vendor/7zip/C/7zArcIn.c +1701 -0
  51. package/vendor/7zip/C/7zBuf.c +36 -0
  52. package/vendor/7zip/C/7zBuf.h +35 -0
  53. package/vendor/7zip/C/7zBuf2.c +52 -0
  54. package/vendor/7zip/C/7zCrc.c +420 -0
  55. package/vendor/7zip/C/7zCrc.h +28 -0
  56. package/vendor/7zip/C/7zCrcOpt.c +199 -0
  57. package/vendor/7zip/C/7zDec.c +672 -0
  58. package/vendor/7zip/C/7zFile.c +443 -0
  59. package/vendor/7zip/C/7zFile.h +91 -0
  60. package/vendor/7zip/C/7zStream.c +199 -0
  61. package/vendor/7zip/C/7zTypes.h +600 -0
  62. package/vendor/7zip/C/7zVersion.h +27 -0
  63. package/vendor/7zip/C/7zVersion.rc +55 -0
  64. package/vendor/7zip/C/7zWindows.h +107 -0
  65. package/vendor/7zip/C/7zip_gcc_c.mak +366 -0
  66. package/vendor/7zip/C/Aes.c +429 -0
  67. package/vendor/7zip/C/Aes.h +60 -0
  68. package/vendor/7zip/C/AesOpt.c +1002 -0
  69. package/vendor/7zip/C/Alloc.c +774 -0
  70. package/vendor/7zip/C/Alloc.h +76 -0
  71. package/vendor/7zip/C/Asm_c.mak +12 -0
  72. package/vendor/7zip/C/Bcj2.c +290 -0
  73. package/vendor/7zip/C/Bcj2.h +332 -0
  74. package/vendor/7zip/C/Bcj2Enc.c +509 -0
  75. package/vendor/7zip/C/Blake2.h +105 -0
  76. package/vendor/7zip/C/Blake2s.c +2672 -0
  77. package/vendor/7zip/C/Bra.c +709 -0
  78. package/vendor/7zip/C/Bra.h +105 -0
  79. package/vendor/7zip/C/Bra86.c +187 -0
  80. package/vendor/7zip/C/BraIA64.c +14 -0
  81. package/vendor/7zip/C/BwtSort.c +630 -0
  82. package/vendor/7zip/C/BwtSort.h +27 -0
  83. package/vendor/7zip/C/Compiler.h +287 -0
  84. package/vendor/7zip/C/CpuArch.c +970 -0
  85. package/vendor/7zip/C/CpuArch.h +719 -0
  86. package/vendor/7zip/C/Delta.c +169 -0
  87. package/vendor/7zip/C/Delta.h +19 -0
  88. package/vendor/7zip/C/DllSecur.c +99 -0
  89. package/vendor/7zip/C/DllSecur.h +20 -0
  90. package/vendor/7zip/C/HuffEnc.c +361 -0
  91. package/vendor/7zip/C/HuffEnc.h +23 -0
  92. package/vendor/7zip/C/LzFind.c +1746 -0
  93. package/vendor/7zip/C/LzFind.h +160 -0
  94. package/vendor/7zip/C/LzFindMt.c +1422 -0
  95. package/vendor/7zip/C/LzFindMt.h +114 -0
  96. package/vendor/7zip/C/LzFindOpt.c +578 -0
  97. package/vendor/7zip/C/LzHash.h +34 -0
  98. package/vendor/7zip/C/Lzma2Dec.c +493 -0
  99. package/vendor/7zip/C/Lzma2Dec.h +121 -0
  100. package/vendor/7zip/C/Lzma2DecMt.c +1095 -0
  101. package/vendor/7zip/C/Lzma2DecMt.h +81 -0
  102. package/vendor/7zip/C/Lzma2Enc.c +799 -0
  103. package/vendor/7zip/C/Lzma2Enc.h +58 -0
  104. package/vendor/7zip/C/Lzma86.h +111 -0
  105. package/vendor/7zip/C/Lzma86Dec.c +53 -0
  106. package/vendor/7zip/C/Lzma86Enc.c +103 -0
  107. package/vendor/7zip/C/LzmaDec.c +1367 -0
  108. package/vendor/7zip/C/LzmaDec.h +237 -0
  109. package/vendor/7zip/C/LzmaEnc.c +3154 -0
  110. package/vendor/7zip/C/LzmaEnc.h +85 -0
  111. package/vendor/7zip/C/LzmaLib.c +42 -0
  112. package/vendor/7zip/C/LzmaLib.h +138 -0
  113. package/vendor/7zip/C/Md5.c +206 -0
  114. package/vendor/7zip/C/Md5.h +34 -0
  115. package/vendor/7zip/C/MtCoder.c +604 -0
  116. package/vendor/7zip/C/MtCoder.h +144 -0
  117. package/vendor/7zip/C/MtDec.c +1124 -0
  118. package/vendor/7zip/C/MtDec.h +202 -0
  119. package/vendor/7zip/C/Ppmd.h +169 -0
  120. package/vendor/7zip/C/Ppmd7.c +1131 -0
  121. package/vendor/7zip/C/Ppmd7.h +181 -0
  122. package/vendor/7zip/C/Ppmd7Dec.c +312 -0
  123. package/vendor/7zip/C/Ppmd7Enc.c +340 -0
  124. package/vendor/7zip/C/Ppmd7aDec.c +295 -0
  125. package/vendor/7zip/C/Ppmd8.c +1574 -0
  126. package/vendor/7zip/C/Ppmd8.h +181 -0
  127. package/vendor/7zip/C/Ppmd8Dec.c +295 -0
  128. package/vendor/7zip/C/Ppmd8Enc.c +337 -0
  129. package/vendor/7zip/C/Precomp.h +127 -0
  130. package/vendor/7zip/C/RotateDefs.h +50 -0
  131. package/vendor/7zip/C/Sha1.c +441 -0
  132. package/vendor/7zip/C/Sha1.h +86 -0
  133. package/vendor/7zip/C/Sha1Opt.c +424 -0
  134. package/vendor/7zip/C/Sha256.c +492 -0
  135. package/vendor/7zip/C/Sha256.h +86 -0
  136. package/vendor/7zip/C/Sha256Opt.c +451 -0
  137. package/vendor/7zip/C/Sha3.c +359 -0
  138. package/vendor/7zip/C/Sha3.h +36 -0
  139. package/vendor/7zip/C/Sha512.c +711 -0
  140. package/vendor/7zip/C/Sha512.h +86 -0
  141. package/vendor/7zip/C/Sha512Opt.c +395 -0
  142. package/vendor/7zip/C/Sort.c +268 -0
  143. package/vendor/7zip/C/Sort.h +15 -0
  144. package/vendor/7zip/C/SwapBytes.c +835 -0
  145. package/vendor/7zip/C/SwapBytes.h +17 -0
  146. package/vendor/7zip/C/Threads.c +826 -0
  147. package/vendor/7zip/C/Threads.h +260 -0
  148. package/vendor/7zip/C/Util/7z/7z.dsp +249 -0
  149. package/vendor/7zip/C/Util/7z/7z.dsw +29 -0
  150. package/vendor/7zip/C/Util/7z/7zMain.c +1210 -0
  151. package/vendor/7zip/C/Util/7z/Precomp.c +4 -0
  152. package/vendor/7zip/C/Util/7z/Precomp.h +13 -0
  153. package/vendor/7zip/C/Util/7z/makefile +44 -0
  154. package/vendor/7zip/C/Util/7z/makefile.gcc +32 -0
  155. package/vendor/7zip/C/Util/7zipInstall/7zip.ico +0 -0
  156. package/vendor/7zip/C/Util/7zipInstall/7zipInstall.c +1699 -0
  157. package/vendor/7zip/C/Util/7zipInstall/7zipInstall.dsp +248 -0
  158. package/vendor/7zip/C/Util/7zipInstall/7zipInstall.dsw +29 -0
  159. package/vendor/7zip/C/Util/7zipInstall/7zipInstall.manifest +18 -0
  160. package/vendor/7zip/C/Util/7zipInstall/Precomp.c +4 -0
  161. package/vendor/7zip/C/Util/7zipInstall/Precomp.h +13 -0
  162. package/vendor/7zip/C/Util/7zipInstall/makefile +47 -0
  163. package/vendor/7zip/C/Util/7zipInstall/resource.h +9 -0
  164. package/vendor/7zip/C/Util/7zipInstall/resource.rc +48 -0
  165. package/vendor/7zip/C/Util/7zipUninstall/7zipUninstall.c +1234 -0
  166. package/vendor/7zip/C/Util/7zipUninstall/7zipUninstall.dsp +132 -0
  167. package/vendor/7zip/C/Util/7zipUninstall/7zipUninstall.dsw +29 -0
  168. package/vendor/7zip/C/Util/7zipUninstall/7zipUninstall.ico +0 -0
  169. package/vendor/7zip/C/Util/7zipUninstall/7zipUninstall.manifest +18 -0
  170. package/vendor/7zip/C/Util/7zipUninstall/Precomp.c +4 -0
  171. package/vendor/7zip/C/Util/7zipUninstall/Precomp.h +13 -0
  172. package/vendor/7zip/C/Util/7zipUninstall/makefile +18 -0
  173. package/vendor/7zip/C/Util/7zipUninstall/resource.h +9 -0
  174. package/vendor/7zip/C/Util/7zipUninstall/resource.rc +48 -0
  175. package/vendor/7zip/C/Util/Lzma/LzmaUtil.c +313 -0
  176. package/vendor/7zip/C/Util/Lzma/LzmaUtil.dsp +192 -0
  177. package/vendor/7zip/C/Util/Lzma/LzmaUtil.dsw +29 -0
  178. package/vendor/7zip/C/Util/Lzma/Precomp.h +13 -0
  179. package/vendor/7zip/C/Util/Lzma/makefile +30 -0
  180. package/vendor/7zip/C/Util/Lzma/makefile.gcc +21 -0
  181. package/vendor/7zip/C/Util/LzmaLib/LzmaLib.def +4 -0
  182. package/vendor/7zip/C/Util/LzmaLib/LzmaLib.dsp +206 -0
  183. package/vendor/7zip/C/Util/LzmaLib/LzmaLib.dsw +29 -0
  184. package/vendor/7zip/C/Util/LzmaLib/LzmaLibExports.c +15 -0
  185. package/vendor/7zip/C/Util/LzmaLib/Precomp.c +4 -0
  186. package/vendor/7zip/C/Util/LzmaLib/Precomp.h +13 -0
  187. package/vendor/7zip/C/Util/LzmaLib/makefile +59 -0
  188. package/vendor/7zip/C/Util/LzmaLib/resource.rc +3 -0
  189. package/vendor/7zip/C/Util/SfxSetup/Precomp.c +4 -0
  190. package/vendor/7zip/C/Util/SfxSetup/Precomp.h +13 -0
  191. package/vendor/7zip/C/Util/SfxSetup/SfxSetup.c +657 -0
  192. package/vendor/7zip/C/Util/SfxSetup/SfxSetup.dsp +231 -0
  193. package/vendor/7zip/C/Util/SfxSetup/SfxSetup.dsw +29 -0
  194. package/vendor/7zip/C/Util/SfxSetup/makefile +44 -0
  195. package/vendor/7zip/C/Util/SfxSetup/makefile_con +40 -0
  196. package/vendor/7zip/C/Util/SfxSetup/resource.rc +5 -0
  197. package/vendor/7zip/C/Util/SfxSetup/setup.ico +0 -0
  198. package/vendor/7zip/C/Xxh64.c +389 -0
  199. package/vendor/7zip/C/Xxh64.h +50 -0
  200. package/vendor/7zip/C/Xz.c +92 -0
  201. package/vendor/7zip/C/Xz.h +542 -0
  202. package/vendor/7zip/C/XzCrc64.c +140 -0
  203. package/vendor/7zip/C/XzCrc64.h +26 -0
  204. package/vendor/7zip/C/XzCrc64Opt.c +261 -0
  205. package/vendor/7zip/C/XzDec.c +2865 -0
  206. package/vendor/7zip/C/XzEnc.c +1374 -0
  207. package/vendor/7zip/C/XzEnc.h +62 -0
  208. package/vendor/7zip/C/XzIn.c +385 -0
  209. package/vendor/7zip/C/ZstdDec.c +4067 -0
  210. package/vendor/7zip/C/ZstdDec.h +173 -0
  211. package/vendor/7zip/C/var_clang.mak +11 -0
  212. package/vendor/7zip/C/var_clang_arm64.mak +12 -0
  213. package/vendor/7zip/C/var_clang_x64.mak +11 -0
  214. package/vendor/7zip/C/var_clang_x86.mak +11 -0
  215. package/vendor/7zip/C/var_gcc.mak +12 -0
  216. package/vendor/7zip/C/var_gcc_arm64.mak +12 -0
  217. package/vendor/7zip/C/var_gcc_x64.mak +10 -0
  218. package/vendor/7zip/C/var_gcc_x86.mak +10 -0
  219. package/vendor/7zip/C/var_mac_arm64.mak +13 -0
  220. package/vendor/7zip/C/var_mac_x64.mak +13 -0
  221. package/vendor/7zip/C/warn_clang.mak +1 -0
  222. package/vendor/7zip/C/warn_clang_mac.mak +1 -0
  223. package/vendor/7zip/C/warn_gcc.mak +51 -0
  224. package/vendor/7zip/CPP/7zip/7zip.mak +240 -0
  225. package/vendor/7zip/CPP/7zip/7zip_gcc.mak +1376 -0
  226. package/vendor/7zip/CPP/7zip/Aes.mak +10 -0
  227. package/vendor/7zip/CPP/7zip/Archive/7z/7z.dsp +650 -0
  228. package/vendor/7zip/CPP/7zip/Archive/7z/7z.dsw +29 -0
  229. package/vendor/7zip/CPP/7zip/Archive/7z/7zCompressionMode.cpp +3 -0
  230. package/vendor/7zip/CPP/7zip/Archive/7z/7zCompressionMode.h +92 -0
  231. package/vendor/7zip/CPP/7zip/Archive/7z/7zDecode.cpp +599 -0
  232. package/vendor/7zip/CPP/7zip/Archive/7z/7zDecode.h +73 -0
  233. package/vendor/7zip/CPP/7zip/Archive/7z/7zEncode.cpp +702 -0
  234. package/vendor/7zip/CPP/7zip/Archive/7z/7zEncode.h +95 -0
  235. package/vendor/7zip/CPP/7zip/Archive/7z/7zExtract.cpp +444 -0
  236. package/vendor/7zip/CPP/7zip/Archive/7z/7zFolderInStream.cpp +264 -0
  237. package/vendor/7zip/CPP/7zip/Archive/7z/7zFolderInStream.h +101 -0
  238. package/vendor/7zip/CPP/7zip/Archive/7z/7zHandler.cpp +800 -0
  239. package/vendor/7zip/CPP/7zip/Archive/7z/7zHandler.h +178 -0
  240. package/vendor/7zip/CPP/7zip/Archive/7z/7zHandlerOut.cpp +1162 -0
  241. package/vendor/7zip/CPP/7zip/Archive/7z/7zHeader.cpp +19 -0
  242. package/vendor/7zip/CPP/7zip/Archive/7z/7zHeader.h +156 -0
  243. package/vendor/7zip/CPP/7zip/Archive/7z/7zIn.cpp +1815 -0
  244. package/vendor/7zip/CPP/7zip/Archive/7z/7zIn.h +454 -0
  245. package/vendor/7zip/CPP/7zip/Archive/7z/7zItem.h +207 -0
  246. package/vendor/7zip/CPP/7zip/Archive/7z/7zOut.cpp +1026 -0
  247. package/vendor/7zip/CPP/7zip/Archive/7z/7zOut.h +346 -0
  248. package/vendor/7zip/CPP/7zip/Archive/7z/7zProperties.cpp +182 -0
  249. package/vendor/7zip/CPP/7zip/Archive/7z/7zProperties.h +26 -0
  250. package/vendor/7zip/CPP/7zip/Archive/7z/7zRegister.cpp +27 -0
  251. package/vendor/7zip/CPP/7zip/Archive/7z/7zSpecStream.cpp +31 -0
  252. package/vendor/7zip/CPP/7zip/Archive/7z/7zSpecStream.h +49 -0
  253. package/vendor/7zip/CPP/7zip/Archive/7z/7zUpdate.cpp +3087 -0
  254. package/vendor/7zip/CPP/7zip/Archive/7z/7zUpdate.h +167 -0
  255. package/vendor/7zip/CPP/7zip/Archive/7z/StdAfx.cpp +3 -0
  256. package/vendor/7zip/CPP/7zip/Archive/7z/StdAfx.h +11 -0
  257. package/vendor/7zip/CPP/7zip/Archive/7z/makefile +81 -0
  258. package/vendor/7zip/CPP/7zip/Archive/7z/resource.rc +11 -0
  259. package/vendor/7zip/CPP/7zip/Archive/ApfsHandler.cpp +4470 -0
  260. package/vendor/7zip/CPP/7zip/Archive/ApmHandler.cpp +420 -0
  261. package/vendor/7zip/CPP/7zip/Archive/ArHandler.cpp +844 -0
  262. package/vendor/7zip/CPP/7zip/Archive/Archive.def +15 -0
  263. package/vendor/7zip/CPP/7zip/Archive/Archive2.def +22 -0
  264. package/vendor/7zip/CPP/7zip/Archive/ArchiveExports.cpp +158 -0
  265. package/vendor/7zip/CPP/7zip/Archive/ArjHandler.cpp +977 -0
  266. package/vendor/7zip/CPP/7zip/Archive/AvbHandler.cpp +616 -0
  267. package/vendor/7zip/CPP/7zip/Archive/Base64Handler.cpp +488 -0
  268. package/vendor/7zip/CPP/7zip/Archive/Bz2Handler.cpp +482 -0
  269. package/vendor/7zip/CPP/7zip/Archive/Cab/CabBlockInStream.cpp +122 -0
  270. package/vendor/7zip/CPP/7zip/Archive/Cab/CabBlockInStream.h +28 -0
  271. package/vendor/7zip/CPP/7zip/Archive/Cab/CabHandler.cpp +1270 -0
  272. package/vendor/7zip/CPP/7zip/Archive/Cab/CabHandler.h +29 -0
  273. package/vendor/7zip/CPP/7zip/Archive/Cab/CabHeader.cpp +15 -0
  274. package/vendor/7zip/CPP/7zip/Archive/Cab/CabHeader.h +41 -0
  275. package/vendor/7zip/CPP/7zip/Archive/Cab/CabIn.cpp +485 -0
  276. package/vendor/7zip/CPP/7zip/Archive/Cab/CabIn.h +169 -0
  277. package/vendor/7zip/CPP/7zip/Archive/Cab/CabItem.h +69 -0
  278. package/vendor/7zip/CPP/7zip/Archive/Cab/CabRegister.cpp +19 -0
  279. package/vendor/7zip/CPP/7zip/Archive/Cab/StdAfx.h +11 -0
  280. package/vendor/7zip/CPP/7zip/Archive/Chm/ChmHandler.cpp +790 -0
  281. package/vendor/7zip/CPP/7zip/Archive/Chm/ChmHandler.h +27 -0
  282. package/vendor/7zip/CPP/7zip/Archive/Chm/ChmIn.cpp +1026 -0
  283. package/vendor/7zip/CPP/7zip/Archive/Chm/ChmIn.h +282 -0
  284. package/vendor/7zip/CPP/7zip/Archive/Chm/StdAfx.h +11 -0
  285. package/vendor/7zip/CPP/7zip/Archive/ComHandler.cpp +1449 -0
  286. package/vendor/7zip/CPP/7zip/Archive/Common/CoderMixer2.cpp +1144 -0
  287. package/vendor/7zip/CPP/7zip/Archive/Common/CoderMixer2.h +447 -0
  288. package/vendor/7zip/CPP/7zip/Archive/Common/DummyOutStream.cpp +17 -0
  289. package/vendor/7zip/CPP/7zip/Archive/Common/DummyOutStream.h +23 -0
  290. package/vendor/7zip/CPP/7zip/Archive/Common/FindSignature.cpp +90 -0
  291. package/vendor/7zip/CPP/7zip/Archive/Common/FindSignature.h +12 -0
  292. package/vendor/7zip/CPP/7zip/Archive/Common/HandlerOut.cpp +315 -0
  293. package/vendor/7zip/CPP/7zip/Archive/Common/HandlerOut.h +169 -0
  294. package/vendor/7zip/CPP/7zip/Archive/Common/InStreamWithCRC.cpp +57 -0
  295. package/vendor/7zip/CPP/7zip/Archive/Common/InStreamWithCRC.h +64 -0
  296. package/vendor/7zip/CPP/7zip/Archive/Common/ItemNameUtils.cpp +140 -0
  297. package/vendor/7zip/CPP/7zip/Archive/Common/ItemNameUtils.h +33 -0
  298. package/vendor/7zip/CPP/7zip/Archive/Common/MultiStream.cpp +193 -0
  299. package/vendor/7zip/CPP/7zip/Archive/Common/MultiStream.h +86 -0
  300. package/vendor/7zip/CPP/7zip/Archive/Common/OutStreamWithCRC.cpp +18 -0
  301. package/vendor/7zip/CPP/7zip/Archive/Common/OutStreamWithCRC.h +35 -0
  302. package/vendor/7zip/CPP/7zip/Archive/Common/OutStreamWithSha1.cpp +29 -0
  303. package/vendor/7zip/CPP/7zip/Archive/Common/OutStreamWithSha1.h +61 -0
  304. package/vendor/7zip/CPP/7zip/Archive/Common/ParseProperties.cpp +3 -0
  305. package/vendor/7zip/CPP/7zip/Archive/Common/ParseProperties.h +6 -0
  306. package/vendor/7zip/CPP/7zip/Archive/Common/StdAfx.h +11 -0
  307. package/vendor/7zip/CPP/7zip/Archive/CpioHandler.cpp +1110 -0
  308. package/vendor/7zip/CPP/7zip/Archive/CramfsHandler.cpp +784 -0
  309. package/vendor/7zip/CPP/7zip/Archive/DeflateProps.cpp +3 -0
  310. package/vendor/7zip/CPP/7zip/Archive/DeflateProps.h +6 -0
  311. package/vendor/7zip/CPP/7zip/Archive/DllExports.cpp +96 -0
  312. package/vendor/7zip/CPP/7zip/Archive/DllExports2.cpp +184 -0
  313. package/vendor/7zip/CPP/7zip/Archive/DmgHandler.cpp +2336 -0
  314. package/vendor/7zip/CPP/7zip/Archive/ElfHandler.cpp +1284 -0
  315. package/vendor/7zip/CPP/7zip/Archive/ExtHandler.cpp +2860 -0
  316. package/vendor/7zip/CPP/7zip/Archive/FatHandler.cpp +1325 -0
  317. package/vendor/7zip/CPP/7zip/Archive/FlvHandler.cpp +521 -0
  318. package/vendor/7zip/CPP/7zip/Archive/GptHandler.cpp +473 -0
  319. package/vendor/7zip/CPP/7zip/Archive/GzHandler.cpp +1200 -0
  320. package/vendor/7zip/CPP/7zip/Archive/HandlerCont.cpp +320 -0
  321. package/vendor/7zip/CPP/7zip/Archive/HandlerCont.h +134 -0
  322. package/vendor/7zip/CPP/7zip/Archive/HfsHandler.cpp +2631 -0
  323. package/vendor/7zip/CPP/7zip/Archive/HfsHandler.h +87 -0
  324. package/vendor/7zip/CPP/7zip/Archive/IArchive.h +755 -0
  325. package/vendor/7zip/CPP/7zip/Archive/Icons/7z.ico +0 -0
  326. package/vendor/7zip/CPP/7zip/Archive/Icons/apfs.ico +0 -0
  327. package/vendor/7zip/CPP/7zip/Archive/Icons/arj.ico +0 -0
  328. package/vendor/7zip/CPP/7zip/Archive/Icons/bz2.ico +0 -0
  329. package/vendor/7zip/CPP/7zip/Archive/Icons/cab.ico +0 -0
  330. package/vendor/7zip/CPP/7zip/Archive/Icons/cpio.ico +0 -0
  331. package/vendor/7zip/CPP/7zip/Archive/Icons/deb.ico +0 -0
  332. package/vendor/7zip/CPP/7zip/Archive/Icons/dmg.ico +0 -0
  333. package/vendor/7zip/CPP/7zip/Archive/Icons/fat.ico +0 -0
  334. package/vendor/7zip/CPP/7zip/Archive/Icons/gz.ico +0 -0
  335. package/vendor/7zip/CPP/7zip/Archive/Icons/hfs.ico +0 -0
  336. package/vendor/7zip/CPP/7zip/Archive/Icons/iso.ico +0 -0
  337. package/vendor/7zip/CPP/7zip/Archive/Icons/lzh.ico +0 -0
  338. package/vendor/7zip/CPP/7zip/Archive/Icons/lzma.ico +0 -0
  339. package/vendor/7zip/CPP/7zip/Archive/Icons/ntfs.ico +0 -0
  340. package/vendor/7zip/CPP/7zip/Archive/Icons/rar.ico +0 -0
  341. package/vendor/7zip/CPP/7zip/Archive/Icons/rpm.ico +0 -0
  342. package/vendor/7zip/CPP/7zip/Archive/Icons/split.ico +0 -0
  343. package/vendor/7zip/CPP/7zip/Archive/Icons/squashfs.ico +0 -0
  344. package/vendor/7zip/CPP/7zip/Archive/Icons/tar.ico +0 -0
  345. package/vendor/7zip/CPP/7zip/Archive/Icons/vhd.ico +0 -0
  346. package/vendor/7zip/CPP/7zip/Archive/Icons/wim.ico +0 -0
  347. package/vendor/7zip/CPP/7zip/Archive/Icons/xar.ico +0 -0
  348. package/vendor/7zip/CPP/7zip/Archive/Icons/xz.ico +0 -0
  349. package/vendor/7zip/CPP/7zip/Archive/Icons/z.ico +0 -0
  350. package/vendor/7zip/CPP/7zip/Archive/Icons/zip.ico +0 -0
  351. package/vendor/7zip/CPP/7zip/Archive/Icons/zst.ico +0 -0
  352. package/vendor/7zip/CPP/7zip/Archive/IhexHandler.cpp +493 -0
  353. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoHandler.cpp +498 -0
  354. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoHandler.h +24 -0
  355. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoHeader.cpp +12 -0
  356. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoHeader.h +64 -0
  357. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoIn.cpp +801 -0
  358. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoIn.h +328 -0
  359. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoItem.h +316 -0
  360. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoRegister.cpp +21 -0
  361. package/vendor/7zip/CPP/7zip/Archive/Iso/StdAfx.h +11 -0
  362. package/vendor/7zip/CPP/7zip/Archive/LpHandler.cpp +1172 -0
  363. package/vendor/7zip/CPP/7zip/Archive/LvmHandler.cpp +1108 -0
  364. package/vendor/7zip/CPP/7zip/Archive/LzhHandler.cpp +719 -0
  365. package/vendor/7zip/CPP/7zip/Archive/LzmaHandler.cpp +606 -0
  366. package/vendor/7zip/CPP/7zip/Archive/MachoHandler.cpp +1075 -0
  367. package/vendor/7zip/CPP/7zip/Archive/MbrHandler.cpp +648 -0
  368. package/vendor/7zip/CPP/7zip/Archive/MslzHandler.cpp +389 -0
  369. package/vendor/7zip/CPP/7zip/Archive/MubHandler.cpp +248 -0
  370. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisDecode.cpp +295 -0
  371. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisDecode.h +97 -0
  372. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisHandler.cpp +703 -0
  373. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisHandler.h +30 -0
  374. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisIn.cpp +6231 -0
  375. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisIn.h +462 -0
  376. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisRegister.cpp +20 -0
  377. package/vendor/7zip/CPP/7zip/Archive/Nsis/StdAfx.h +11 -0
  378. package/vendor/7zip/CPP/7zip/Archive/NtfsHandler.cpp +2944 -0
  379. package/vendor/7zip/CPP/7zip/Archive/PeHandler.cpp +3427 -0
  380. package/vendor/7zip/CPP/7zip/Archive/PpmdHandler.cpp +414 -0
  381. package/vendor/7zip/CPP/7zip/Archive/QcowHandler.cpp +713 -0
  382. package/vendor/7zip/CPP/7zip/Archive/Rar/Rar5Handler.cpp +3483 -0
  383. package/vendor/7zip/CPP/7zip/Archive/Rar/Rar5Handler.h +527 -0
  384. package/vendor/7zip/CPP/7zip/Archive/Rar/RarHandler.cpp +1775 -0
  385. package/vendor/7zip/CPP/7zip/Archive/Rar/RarHandler.h +115 -0
  386. package/vendor/7zip/CPP/7zip/Archive/Rar/RarHeader.h +209 -0
  387. package/vendor/7zip/CPP/7zip/Archive/Rar/RarItem.h +97 -0
  388. package/vendor/7zip/CPP/7zip/Archive/Rar/RarVol.h +136 -0
  389. package/vendor/7zip/CPP/7zip/Archive/Rar/StdAfx.cpp +3 -0
  390. package/vendor/7zip/CPP/7zip/Archive/Rar/StdAfx.h +11 -0
  391. package/vendor/7zip/CPP/7zip/Archive/RpmHandler.cpp +775 -0
  392. package/vendor/7zip/CPP/7zip/Archive/SparseHandler.cpp +558 -0
  393. package/vendor/7zip/CPP/7zip/Archive/SplitHandler.cpp +353 -0
  394. package/vendor/7zip/CPP/7zip/Archive/SquashfsHandler.cpp +2373 -0
  395. package/vendor/7zip/CPP/7zip/Archive/StdAfx.h +11 -0
  396. package/vendor/7zip/CPP/7zip/Archive/SwfHandler.cpp +996 -0
  397. package/vendor/7zip/CPP/7zip/Archive/Tar/StdAfx.h +11 -0
  398. package/vendor/7zip/CPP/7zip/Archive/Tar/TarHandler.cpp +1105 -0
  399. package/vendor/7zip/CPP/7zip/Archive/Tar/TarHandler.h +57 -0
  400. package/vendor/7zip/CPP/7zip/Archive/Tar/TarHandlerOut.cpp +332 -0
  401. package/vendor/7zip/CPP/7zip/Archive/Tar/TarHeader.cpp +99 -0
  402. package/vendor/7zip/CPP/7zip/Archive/Tar/TarHeader.h +90 -0
  403. package/vendor/7zip/CPP/7zip/Archive/Tar/TarIn.cpp +1151 -0
  404. package/vendor/7zip/CPP/7zip/Archive/Tar/TarIn.h +151 -0
  405. package/vendor/7zip/CPP/7zip/Archive/Tar/TarItem.h +365 -0
  406. package/vendor/7zip/CPP/7zip/Archive/Tar/TarOut.cpp +644 -0
  407. package/vendor/7zip/CPP/7zip/Archive/Tar/TarOut.h +53 -0
  408. package/vendor/7zip/CPP/7zip/Archive/Tar/TarRegister.cpp +31 -0
  409. package/vendor/7zip/CPP/7zip/Archive/Tar/TarUpdate.cpp +563 -0
  410. package/vendor/7zip/CPP/7zip/Archive/Tar/TarUpdate.h +74 -0
  411. package/vendor/7zip/CPP/7zip/Archive/Udf/StdAfx.h +11 -0
  412. package/vendor/7zip/CPP/7zip/Archive/Udf/UdfHandler.cpp +427 -0
  413. package/vendor/7zip/CPP/7zip/Archive/Udf/UdfHandler.h +32 -0
  414. package/vendor/7zip/CPP/7zip/Archive/Udf/UdfIn.cpp +1756 -0
  415. package/vendor/7zip/CPP/7zip/Archive/Udf/UdfIn.h +508 -0
  416. package/vendor/7zip/CPP/7zip/Archive/UefiHandler.cpp +1884 -0
  417. package/vendor/7zip/CPP/7zip/Archive/VdiHandler.cpp +433 -0
  418. package/vendor/7zip/CPP/7zip/Archive/VhdHandler.cpp +1106 -0
  419. package/vendor/7zip/CPP/7zip/Archive/VhdxHandler.cpp +2085 -0
  420. package/vendor/7zip/CPP/7zip/Archive/VmdkHandler.cpp +1530 -0
  421. package/vendor/7zip/CPP/7zip/Archive/Wim/StdAfx.h +11 -0
  422. package/vendor/7zip/CPP/7zip/Archive/Wim/WimHandler.cpp +1291 -0
  423. package/vendor/7zip/CPP/7zip/Archive/Wim/WimHandler.h +117 -0
  424. package/vendor/7zip/CPP/7zip/Archive/Wim/WimHandlerOut.cpp +2008 -0
  425. package/vendor/7zip/CPP/7zip/Archive/Wim/WimIn.cpp +2104 -0
  426. package/vendor/7zip/CPP/7zip/Archive/Wim/WimIn.h +719 -0
  427. package/vendor/7zip/CPP/7zip/Archive/Wim/WimRegister.cpp +29 -0
  428. package/vendor/7zip/CPP/7zip/Archive/XarHandler.cpp +1316 -0
  429. package/vendor/7zip/CPP/7zip/Archive/XzHandler.cpp +1452 -0
  430. package/vendor/7zip/CPP/7zip/Archive/XzHandler.h +11 -0
  431. package/vendor/7zip/CPP/7zip/Archive/ZHandler.cpp +208 -0
  432. package/vendor/7zip/CPP/7zip/Archive/Zip/StdAfx.h +11 -0
  433. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipAddCommon.cpp +484 -0
  434. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipAddCommon.h +76 -0
  435. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipCompressionMode.h +62 -0
  436. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipHandler.cpp +1679 -0
  437. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipHandler.h +94 -0
  438. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipHandlerOut.cpp +626 -0
  439. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipHeader.h +201 -0
  440. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipIn.cpp +3474 -0
  441. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipIn.h +456 -0
  442. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipItem.cpp +464 -0
  443. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipItem.h +356 -0
  444. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipOut.cpp +428 -0
  445. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipOut.h +103 -0
  446. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipRegister.cpp +38 -0
  447. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipUpdate.cpp +2165 -0
  448. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipUpdate.h +107 -0
  449. package/vendor/7zip/CPP/7zip/Archive/ZstdHandler.cpp +1147 -0
  450. package/vendor/7zip/CPP/7zip/Archive/makefile +23 -0
  451. package/vendor/7zip/CPP/7zip/Asm.mak +12 -0
  452. package/vendor/7zip/CPP/7zip/Bundles/Alone/Alone.dsp +3324 -0
  453. package/vendor/7zip/CPP/7zip/Bundles/Alone/Alone.dsw +29 -0
  454. package/vendor/7zip/CPP/7zip/Bundles/Alone/StdAfx.cpp +3 -0
  455. package/vendor/7zip/CPP/7zip/Bundles/Alone/StdAfx.h +11 -0
  456. package/vendor/7zip/CPP/7zip/Bundles/Alone/makefile +245 -0
  457. package/vendor/7zip/CPP/7zip/Bundles/Alone/makefile.gcc +354 -0
  458. package/vendor/7zip/CPP/7zip/Bundles/Alone/resource.rc +7 -0
  459. package/vendor/7zip/CPP/7zip/Bundles/Alone2/StdAfx.cpp +3 -0
  460. package/vendor/7zip/CPP/7zip/Bundles/Alone2/StdAfx.h +11 -0
  461. package/vendor/7zip/CPP/7zip/Bundles/Alone2/makefile +31 -0
  462. package/vendor/7zip/CPP/7zip/Bundles/Alone2/makefile.gcc +108 -0
  463. package/vendor/7zip/CPP/7zip/Bundles/Alone2/resource.rc +7 -0
  464. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/Alone.dsp +2090 -0
  465. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/Alone.dsw +29 -0
  466. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/StdAfx.cpp +3 -0
  467. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/StdAfx.h +11 -0
  468. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/makefile +168 -0
  469. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/makefile.gcc +276 -0
  470. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/resource.rc +7 -0
  471. package/vendor/7zip/CPP/7zip/Bundles/Fm/FM.dsp +2275 -0
  472. package/vendor/7zip/CPP/7zip/Bundles/Fm/FM.dsw +29 -0
  473. package/vendor/7zip/CPP/7zip/Bundles/Fm/StdAfx.cpp +3 -0
  474. package/vendor/7zip/CPP/7zip/Bundles/Fm/StdAfx.h +6 -0
  475. package/vendor/7zip/CPP/7zip/Bundles/Fm/makefile +82 -0
  476. package/vendor/7zip/CPP/7zip/Bundles/Fm/resource.rc +7 -0
  477. package/vendor/7zip/CPP/7zip/Bundles/Format7z/StdAfx.cpp +3 -0
  478. package/vendor/7zip/CPP/7zip/Bundles/Format7z/StdAfx.h +11 -0
  479. package/vendor/7zip/CPP/7zip/Bundles/Format7z/makefile +148 -0
  480. package/vendor/7zip/CPP/7zip/Bundles/Format7z/resource.rc +5 -0
  481. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtract/StdAfx.cpp +3 -0
  482. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtract/StdAfx.h +11 -0
  483. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtract/makefile +116 -0
  484. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtract/resource.rc +5 -0
  485. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtractR/StdAfx.cpp +3 -0
  486. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtractR/StdAfx.h +11 -0
  487. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtractR/makefile +98 -0
  488. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtractR/resource.rc +5 -0
  489. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/Arc.mak +310 -0
  490. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/Arc_gcc.mak +395 -0
  491. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/Format7z.dsp +3486 -0
  492. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/Format7z.dsw +29 -0
  493. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/StdAfx.cpp +3 -0
  494. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/StdAfx.h +11 -0
  495. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/makefile +20 -0
  496. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/makefile.gcc +55 -0
  497. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/resource.rc +39 -0
  498. package/vendor/7zip/CPP/7zip/Bundles/Format7zR/StdAfx.cpp +3 -0
  499. package/vendor/7zip/CPP/7zip/Bundles/Format7zR/StdAfx.h +11 -0
  500. package/vendor/7zip/CPP/7zip/Bundles/Format7zR/makefile +121 -0
  501. package/vendor/7zip/CPP/7zip/Bundles/Format7zR/resource.rc +5 -0
  502. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/LzmaAlone.cpp +815 -0
  503. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/LzmaCon.dsp +540 -0
  504. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/LzmaCon.dsw +29 -0
  505. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/StdAfx.cpp +3 -0
  506. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/StdAfx.h +11 -0
  507. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/makefile +68 -0
  508. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/makefile.gcc +131 -0
  509. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/resource.rc +3 -0
  510. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/7z.ico +0 -0
  511. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/SFXCon.dsp +1017 -0
  512. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/SFXCon.dsw +29 -0
  513. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/SfxCon.cpp +521 -0
  514. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/StdAfx.cpp +3 -0
  515. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/StdAfx.h +11 -0
  516. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/makefile +137 -0
  517. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/makefile.gcc +215 -0
  518. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/resource.rc +9 -0
  519. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/ExtractCallbackSfx.cpp +246 -0
  520. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/ExtractCallbackSfx.h +83 -0
  521. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/ExtractEngine.cpp +135 -0
  522. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/ExtractEngine.h +11 -0
  523. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/SFXSetup.dsp +872 -0
  524. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/SFXSetup.dsw +29 -0
  525. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/SfxSetup.cpp +359 -0
  526. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/StdAfx.cpp +3 -0
  527. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/StdAfx.h +6 -0
  528. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/makefile +121 -0
  529. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/resource.h +6 -0
  530. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/resource.rc +16 -0
  531. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/setup.ico +0 -0
  532. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/7z.ico +0 -0
  533. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/SFXWin.dsp +1074 -0
  534. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/SFXWin.dsw +29 -0
  535. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/SfxWin.cpp +268 -0
  536. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/StdAfx.cpp +3 -0
  537. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/StdAfx.h +6 -0
  538. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/makefile +159 -0
  539. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/resource.h +1 -0
  540. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/resource.rc +55 -0
  541. package/vendor/7zip/CPP/7zip/Bundles/makefile +19 -0
  542. package/vendor/7zip/CPP/7zip/Common/CWrappers.cpp +358 -0
  543. package/vendor/7zip/CPP/7zip/Common/CWrappers.h +182 -0
  544. package/vendor/7zip/CPP/7zip/Common/CreateCoder.cpp +548 -0
  545. package/vendor/7zip/CPP/7zip/Common/CreateCoder.h +200 -0
  546. package/vendor/7zip/CPP/7zip/Common/FilePathAutoRename.cpp +46 -0
  547. package/vendor/7zip/CPP/7zip/Common/FilePathAutoRename.h +10 -0
  548. package/vendor/7zip/CPP/7zip/Common/FileStreams.cpp +923 -0
  549. package/vendor/7zip/CPP/7zip/Common/FileStreams.h +205 -0
  550. package/vendor/7zip/CPP/7zip/Common/FilterCoder.cpp +582 -0
  551. package/vendor/7zip/CPP/7zip/Common/FilterCoder.h +201 -0
  552. package/vendor/7zip/CPP/7zip/Common/InBuffer.cpp +182 -0
  553. package/vendor/7zip/CPP/7zip/Common/InBuffer.h +121 -0
  554. package/vendor/7zip/CPP/7zip/Common/InOutTempBuffer.cpp +237 -0
  555. package/vendor/7zip/CPP/7zip/Common/InOutTempBuffer.h +45 -0
  556. package/vendor/7zip/CPP/7zip/Common/LimitedStreams.cpp +395 -0
  557. package/vendor/7zip/CPP/7zip/Common/LimitedStreams.h +221 -0
  558. package/vendor/7zip/CPP/7zip/Common/LockedStream.cpp +3 -0
  559. package/vendor/7zip/CPP/7zip/Common/LockedStream.h +6 -0
  560. package/vendor/7zip/CPP/7zip/Common/MemBlocks.cpp +215 -0
  561. package/vendor/7zip/CPP/7zip/Common/MemBlocks.h +72 -0
  562. package/vendor/7zip/CPP/7zip/Common/MethodId.cpp +3 -0
  563. package/vendor/7zip/CPP/7zip/Common/MethodId.h +10 -0
  564. package/vendor/7zip/CPP/7zip/Common/MethodProps.cpp +765 -0
  565. package/vendor/7zip/CPP/7zip/Common/MethodProps.h +348 -0
  566. package/vendor/7zip/CPP/7zip/Common/MultiOutStream.cpp +855 -0
  567. package/vendor/7zip/CPP/7zip/Common/MultiOutStream.h +160 -0
  568. package/vendor/7zip/CPP/7zip/Common/OffsetStream.cpp +37 -0
  569. package/vendor/7zip/CPP/7zip/Common/OffsetStream.h +22 -0
  570. package/vendor/7zip/CPP/7zip/Common/OutBuffer.cpp +111 -0
  571. package/vendor/7zip/CPP/7zip/Common/OutBuffer.h +133 -0
  572. package/vendor/7zip/CPP/7zip/Common/OutMemStream.cpp +158 -0
  573. package/vendor/7zip/CPP/7zip/Common/OutMemStream.h +104 -0
  574. package/vendor/7zip/CPP/7zip/Common/ProgressMt.cpp +53 -0
  575. package/vendor/7zip/CPP/7zip/Common/ProgressMt.h +43 -0
  576. package/vendor/7zip/CPP/7zip/Common/ProgressUtils.cpp +51 -0
  577. package/vendor/7zip/CPP/7zip/Common/ProgressUtils.h +33 -0
  578. package/vendor/7zip/CPP/7zip/Common/PropId.cpp +115 -0
  579. package/vendor/7zip/CPP/7zip/Common/RegisterArc.h +80 -0
  580. package/vendor/7zip/CPP/7zip/Common/RegisterCodec.h +106 -0
  581. package/vendor/7zip/CPP/7zip/Common/StdAfx.h +11 -0
  582. package/vendor/7zip/CPP/7zip/Common/StreamBinder.cpp +151 -0
  583. package/vendor/7zip/CPP/7zip/Common/StreamBinder.h +78 -0
  584. package/vendor/7zip/CPP/7zip/Common/StreamObjects.cpp +290 -0
  585. package/vendor/7zip/CPP/7zip/Common/StreamObjects.h +146 -0
  586. package/vendor/7zip/CPP/7zip/Common/StreamUtils.cpp +101 -0
  587. package/vendor/7zip/CPP/7zip/Common/StreamUtils.h +31 -0
  588. package/vendor/7zip/CPP/7zip/Common/UniqBlocks.cpp +57 -0
  589. package/vendor/7zip/CPP/7zip/Common/UniqBlocks.h +41 -0
  590. package/vendor/7zip/CPP/7zip/Common/VirtThread.cpp +47 -0
  591. package/vendor/7zip/CPP/7zip/Common/VirtThread.h +24 -0
  592. package/vendor/7zip/CPP/7zip/Compress/BZip2Const.h +71 -0
  593. package/vendor/7zip/CPP/7zip/Compress/BZip2Crc.cpp +28 -0
  594. package/vendor/7zip/CPP/7zip/Compress/BZip2Crc.h +31 -0
  595. package/vendor/7zip/CPP/7zip/Compress/BZip2Decoder.cpp +1777 -0
  596. package/vendor/7zip/CPP/7zip/Compress/BZip2Decoder.h +388 -0
  597. package/vendor/7zip/CPP/7zip/Compress/BZip2Encoder.cpp +1116 -0
  598. package/vendor/7zip/CPP/7zip/Compress/BZip2Encoder.h +273 -0
  599. package/vendor/7zip/CPP/7zip/Compress/BZip2Register.cpp +25 -0
  600. package/vendor/7zip/CPP/7zip/Compress/Bcj2Coder.cpp +867 -0
  601. package/vendor/7zip/CPP/7zip/Compress/Bcj2Coder.h +127 -0
  602. package/vendor/7zip/CPP/7zip/Compress/Bcj2Register.cpp +24 -0
  603. package/vendor/7zip/CPP/7zip/Compress/BcjCoder.cpp +24 -0
  604. package/vendor/7zip/CPP/7zip/Compress/BcjCoder.h +37 -0
  605. package/vendor/7zip/CPP/7zip/Compress/BcjRegister.cpp +17 -0
  606. package/vendor/7zip/CPP/7zip/Compress/BitlDecoder.cpp +32 -0
  607. package/vendor/7zip/CPP/7zip/Compress/BitlDecoder.h +225 -0
  608. package/vendor/7zip/CPP/7zip/Compress/BitlEncoder.h +57 -0
  609. package/vendor/7zip/CPP/7zip/Compress/BitmDecoder.h +106 -0
  610. package/vendor/7zip/CPP/7zip/Compress/BitmEncoder.h +90 -0
  611. package/vendor/7zip/CPP/7zip/Compress/BranchMisc.cpp +106 -0
  612. package/vendor/7zip/CPP/7zip/Compress/BranchMisc.h +59 -0
  613. package/vendor/7zip/CPP/7zip/Compress/BranchRegister.cpp +58 -0
  614. package/vendor/7zip/CPP/7zip/Compress/ByteSwap.cpp +91 -0
  615. package/vendor/7zip/CPP/7zip/Compress/Codec.def +7 -0
  616. package/vendor/7zip/CPP/7zip/Compress/CodecExports.cpp +378 -0
  617. package/vendor/7zip/CPP/7zip/Compress/CopyCoder.cpp +153 -0
  618. package/vendor/7zip/CPP/7zip/Compress/CopyCoder.h +34 -0
  619. package/vendor/7zip/CPP/7zip/Compress/CopyRegister.cpp +15 -0
  620. package/vendor/7zip/CPP/7zip/Compress/Deflate64Register.cpp +25 -0
  621. package/vendor/7zip/CPP/7zip/Compress/DeflateConst.h +131 -0
  622. package/vendor/7zip/CPP/7zip/Compress/DeflateDecoder.cpp +566 -0
  623. package/vendor/7zip/CPP/7zip/Compress/DeflateDecoder.h +154 -0
  624. package/vendor/7zip/CPP/7zip/Compress/DeflateEncoder.cpp +1045 -0
  625. package/vendor/7zip/CPP/7zip/Compress/DeflateEncoder.h +203 -0
  626. package/vendor/7zip/CPP/7zip/Compress/DeflateRegister.cpp +25 -0
  627. package/vendor/7zip/CPP/7zip/Compress/DeltaFilter.cpp +126 -0
  628. package/vendor/7zip/CPP/7zip/Compress/DllExports2Compress.cpp +38 -0
  629. package/vendor/7zip/CPP/7zip/Compress/DllExportsCompress.cpp +59 -0
  630. package/vendor/7zip/CPP/7zip/Compress/HuffmanDecoder.h +528 -0
  631. package/vendor/7zip/CPP/7zip/Compress/ImplodeDecoder.cpp +250 -0
  632. package/vendor/7zip/CPP/7zip/Compress/ImplodeDecoder.h +61 -0
  633. package/vendor/7zip/CPP/7zip/Compress/ImplodeHuffmanDecoder.cpp +3 -0
  634. package/vendor/7zip/CPP/7zip/Compress/ImplodeHuffmanDecoder.h +6 -0
  635. package/vendor/7zip/CPP/7zip/Compress/LzOutWindow.cpp +14 -0
  636. package/vendor/7zip/CPP/7zip/Compress/LzOutWindow.h +102 -0
  637. package/vendor/7zip/CPP/7zip/Compress/LzfseDecoder.cpp +950 -0
  638. package/vendor/7zip/CPP/7zip/Compress/LzfseDecoder.h +63 -0
  639. package/vendor/7zip/CPP/7zip/Compress/LzhDecoder.cpp +220 -0
  640. package/vendor/7zip/CPP/7zip/Compress/LzhDecoder.h +68 -0
  641. package/vendor/7zip/CPP/7zip/Compress/Lzma2Decoder.cpp +267 -0
  642. package/vendor/7zip/CPP/7zip/Compress/Lzma2Decoder.h +87 -0
  643. package/vendor/7zip/CPP/7zip/Compress/Lzma2Encoder.cpp +134 -0
  644. package/vendor/7zip/CPP/7zip/Compress/Lzma2Encoder.h +30 -0
  645. package/vendor/7zip/CPP/7zip/Compress/Lzma2Register.cpp +22 -0
  646. package/vendor/7zip/CPP/7zip/Compress/LzmaDecoder.cpp +350 -0
  647. package/vendor/7zip/CPP/7zip/Compress/LzmaDecoder.h +113 -0
  648. package/vendor/7zip/CPP/7zip/Compress/LzmaEncoder.cpp +374 -0
  649. package/vendor/7zip/CPP/7zip/Compress/LzmaEncoder.h +45 -0
  650. package/vendor/7zip/CPP/7zip/Compress/LzmaRegister.cpp +22 -0
  651. package/vendor/7zip/CPP/7zip/Compress/LzmsDecoder.cpp +619 -0
  652. package/vendor/7zip/CPP/7zip/Compress/LzmsDecoder.h +209 -0
  653. package/vendor/7zip/CPP/7zip/Compress/Lzx.h +61 -0
  654. package/vendor/7zip/CPP/7zip/Compress/LzxDecoder.cpp +1517 -0
  655. package/vendor/7zip/CPP/7zip/Compress/LzxDecoder.h +106 -0
  656. package/vendor/7zip/CPP/7zip/Compress/Mtf8.h +225 -0
  657. package/vendor/7zip/CPP/7zip/Compress/PpmdDecoder.cpp +219 -0
  658. package/vendor/7zip/CPP/7zip/Compress/PpmdDecoder.h +87 -0
  659. package/vendor/7zip/CPP/7zip/Compress/PpmdEncoder.cpp +193 -0
  660. package/vendor/7zip/CPP/7zip/Compress/PpmdEncoder.h +49 -0
  661. package/vendor/7zip/CPP/7zip/Compress/PpmdRegister.cpp +22 -0
  662. package/vendor/7zip/CPP/7zip/Compress/PpmdZip.cpp +309 -0
  663. package/vendor/7zip/CPP/7zip/Compress/PpmdZip.h +78 -0
  664. package/vendor/7zip/CPP/7zip/Compress/QuantumDecoder.cpp +355 -0
  665. package/vendor/7zip/CPP/7zip/Compress/QuantumDecoder.h +60 -0
  666. package/vendor/7zip/CPP/7zip/Compress/Rar1Decoder.cpp +518 -0
  667. package/vendor/7zip/CPP/7zip/Compress/Rar1Decoder.h +70 -0
  668. package/vendor/7zip/CPP/7zip/Compress/Rar2Decoder.cpp +472 -0
  669. package/vendor/7zip/CPP/7zip/Compress/Rar2Decoder.h +111 -0
  670. package/vendor/7zip/CPP/7zip/Compress/Rar3Decoder.cpp +939 -0
  671. package/vendor/7zip/CPP/7zip/Compress/Rar3Decoder.h +283 -0
  672. package/vendor/7zip/CPP/7zip/Compress/Rar3Vm.cpp +1153 -0
  673. package/vendor/7zip/CPP/7zip/Compress/Rar3Vm.h +195 -0
  674. package/vendor/7zip/CPP/7zip/Compress/Rar5Decoder.cpp +2060 -0
  675. package/vendor/7zip/CPP/7zip/Compress/Rar5Decoder.h +132 -0
  676. package/vendor/7zip/CPP/7zip/Compress/RarCodecsRegister.cpp +33 -0
  677. package/vendor/7zip/CPP/7zip/Compress/ShrinkDecoder.cpp +290 -0
  678. package/vendor/7zip/CPP/7zip/Compress/ShrinkDecoder.h +38 -0
  679. package/vendor/7zip/CPP/7zip/Compress/StdAfx.h +11 -0
  680. package/vendor/7zip/CPP/7zip/Compress/XpressDecoder.cpp +399 -0
  681. package/vendor/7zip/CPP/7zip/Compress/XpressDecoder.h +18 -0
  682. package/vendor/7zip/CPP/7zip/Compress/XzDecoder.cpp +151 -0
  683. package/vendor/7zip/CPP/7zip/Compress/XzDecoder.h +86 -0
  684. package/vendor/7zip/CPP/7zip/Compress/XzEncoder.cpp +243 -0
  685. package/vendor/7zip/CPP/7zip/Compress/XzEncoder.h +35 -0
  686. package/vendor/7zip/CPP/7zip/Compress/ZDecoder.cpp +392 -0
  687. package/vendor/7zip/CPP/7zip/Compress/ZDecoder.h +41 -0
  688. package/vendor/7zip/CPP/7zip/Compress/ZlibDecoder.cpp +136 -0
  689. package/vendor/7zip/CPP/7zip/Compress/ZlibDecoder.h +78 -0
  690. package/vendor/7zip/CPP/7zip/Compress/ZlibEncoder.cpp +61 -0
  691. package/vendor/7zip/CPP/7zip/Compress/ZlibEncoder.h +42 -0
  692. package/vendor/7zip/CPP/7zip/Compress/ZstdDecoder.cpp +437 -0
  693. package/vendor/7zip/CPP/7zip/Compress/ZstdDecoder.h +98 -0
  694. package/vendor/7zip/CPP/7zip/Compress/makefile +7 -0
  695. package/vendor/7zip/CPP/7zip/Crc.mak +8 -0
  696. package/vendor/7zip/CPP/7zip/Crc64.mak +8 -0
  697. package/vendor/7zip/CPP/7zip/Crypto/7zAes.cpp +315 -0
  698. package/vendor/7zip/CPP/7zip/Crypto/7zAes.h +130 -0
  699. package/vendor/7zip/CPP/7zip/Crypto/7zAesRegister.cpp +17 -0
  700. package/vendor/7zip/CPP/7zip/Crypto/Codec.def +4 -0
  701. package/vendor/7zip/CPP/7zip/Crypto/HmacSha1.cpp +94 -0
  702. package/vendor/7zip/CPP/7zip/Crypto/HmacSha1.h +31 -0
  703. package/vendor/7zip/CPP/7zip/Crypto/HmacSha256.cpp +53 -0
  704. package/vendor/7zip/CPP/7zip/Crypto/HmacSha256.h +27 -0
  705. package/vendor/7zip/CPP/7zip/Crypto/MyAes.cpp +277 -0
  706. package/vendor/7zip/CPP/7zip/Crypto/MyAes.h +122 -0
  707. package/vendor/7zip/CPP/7zip/Crypto/MyAesReg.cpp +29 -0
  708. package/vendor/7zip/CPP/7zip/Crypto/Pbkdf2HmacSha1.cpp +48 -0
  709. package/vendor/7zip/CPP/7zip/Crypto/Pbkdf2HmacSha1.h +19 -0
  710. package/vendor/7zip/CPP/7zip/Crypto/RandGen.cpp +242 -0
  711. package/vendor/7zip/CPP/7zip/Crypto/RandGen.h +41 -0
  712. package/vendor/7zip/CPP/7zip/Crypto/Rar20Crypto.cpp +130 -0
  713. package/vendor/7zip/CPP/7zip/Crypto/Rar20Crypto.h +54 -0
  714. package/vendor/7zip/CPP/7zip/Crypto/Rar5Aes.cpp +273 -0
  715. package/vendor/7zip/CPP/7zip/Crypto/Rar5Aes.h +97 -0
  716. package/vendor/7zip/CPP/7zip/Crypto/RarAes.cpp +202 -0
  717. package/vendor/7zip/CPP/7zip/Crypto/RarAes.h +54 -0
  718. package/vendor/7zip/CPP/7zip/Crypto/Sha1Cls.h +37 -0
  719. package/vendor/7zip/CPP/7zip/Crypto/StdAfx.h +11 -0
  720. package/vendor/7zip/CPP/7zip/Crypto/WzAes.cpp +231 -0
  721. package/vendor/7zip/CPP/7zip/Crypto/WzAes.h +161 -0
  722. package/vendor/7zip/CPP/7zip/Crypto/ZipCrypto.cpp +114 -0
  723. package/vendor/7zip/CPP/7zip/Crypto/ZipCrypto.h +80 -0
  724. package/vendor/7zip/CPP/7zip/Crypto/ZipStrong.cpp +265 -0
  725. package/vendor/7zip/CPP/7zip/Crypto/ZipStrong.h +73 -0
  726. package/vendor/7zip/CPP/7zip/GuiCommon.rc +119 -0
  727. package/vendor/7zip/CPP/7zip/Guid.txt +243 -0
  728. package/vendor/7zip/CPP/7zip/ICoder.h +480 -0
  729. package/vendor/7zip/CPP/7zip/IDecl.h +76 -0
  730. package/vendor/7zip/CPP/7zip/IPassword.h +54 -0
  731. package/vendor/7zip/CPP/7zip/IProgress.h +20 -0
  732. package/vendor/7zip/CPP/7zip/IStream.h +210 -0
  733. package/vendor/7zip/CPP/7zip/LzFindOpt.mak +7 -0
  734. package/vendor/7zip/CPP/7zip/LzmaDec.mak +7 -0
  735. package/vendor/7zip/CPP/7zip/LzmaDec_gcc.mak +14 -0
  736. package/vendor/7zip/CPP/7zip/MyVersion.h +2 -0
  737. package/vendor/7zip/CPP/7zip/MyVersionInfo.rc +2 -0
  738. package/vendor/7zip/CPP/7zip/PropID.h +178 -0
  739. package/vendor/7zip/CPP/7zip/Sha1.mak +13 -0
  740. package/vendor/7zip/CPP/7zip/Sha256.mak +13 -0
  741. package/vendor/7zip/CPP/7zip/Sort.mak +6 -0
  742. package/vendor/7zip/CPP/7zip/SubBuild.mak +3 -0
  743. package/vendor/7zip/CPP/7zip/UI/Agent/Agent.cpp +2003 -0
  744. package/vendor/7zip/CPP/7zip/UI/Agent/Agent.h +365 -0
  745. package/vendor/7zip/CPP/7zip/UI/Agent/AgentOut.cpp +776 -0
  746. package/vendor/7zip/CPP/7zip/UI/Agent/AgentProxy.cpp +1098 -0
  747. package/vendor/7zip/CPP/7zip/UI/Agent/AgentProxy.h +198 -0
  748. package/vendor/7zip/CPP/7zip/UI/Agent/ArchiveFolder.cpp +57 -0
  749. package/vendor/7zip/CPP/7zip/UI/Agent/ArchiveFolderOpen.cpp +243 -0
  750. package/vendor/7zip/CPP/7zip/UI/Agent/ArchiveFolderOut.cpp +457 -0
  751. package/vendor/7zip/CPP/7zip/UI/Agent/IFolderArchive.h +123 -0
  752. package/vendor/7zip/CPP/7zip/UI/Agent/StdAfx.h +11 -0
  753. package/vendor/7zip/CPP/7zip/UI/Agent/UpdateCallbackAgent.cpp +208 -0
  754. package/vendor/7zip/CPP/7zip/UI/Agent/UpdateCallbackAgent.h +22 -0
  755. package/vendor/7zip/CPP/7zip/UI/Client7z/Client7z.cpp +1145 -0
  756. package/vendor/7zip/CPP/7zip/UI/Client7z/Client7z.dsp +331 -0
  757. package/vendor/7zip/CPP/7zip/UI/Client7z/Client7z.dsw +29 -0
  758. package/vendor/7zip/CPP/7zip/UI/Client7z/StdAfx.cpp +3 -0
  759. package/vendor/7zip/CPP/7zip/UI/Client7z/StdAfx.h +11 -0
  760. package/vendor/7zip/CPP/7zip/UI/Client7z/makefile +29 -0
  761. package/vendor/7zip/CPP/7zip/UI/Client7z/makefile.gcc +72 -0
  762. package/vendor/7zip/CPP/7zip/UI/Client7z/resource.rc +3 -0
  763. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveCommandLine.cpp +1913 -0
  764. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveCommandLine.h +170 -0
  765. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveExtractCallback.cpp +3243 -0
  766. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveExtractCallback.h +640 -0
  767. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveName.cpp +176 -0
  768. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveName.h +16 -0
  769. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveOpenCallback.cpp +403 -0
  770. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveOpenCallback.h +182 -0
  771. package/vendor/7zip/CPP/7zip/UI/Common/Bench.cpp +5036 -0
  772. package/vendor/7zip/CPP/7zip/UI/Common/Bench.h +121 -0
  773. package/vendor/7zip/CPP/7zip/UI/Common/CompressCall.cpp +343 -0
  774. package/vendor/7zip/CPP/7zip/UI/Common/CompressCall.h +28 -0
  775. package/vendor/7zip/CPP/7zip/UI/Common/CompressCall2.cpp +327 -0
  776. package/vendor/7zip/CPP/7zip/UI/Common/DefaultName.cpp +37 -0
  777. package/vendor/7zip/CPP/7zip/UI/Common/DefaultName.h +11 -0
  778. package/vendor/7zip/CPP/7zip/UI/Common/DirItem.h +407 -0
  779. package/vendor/7zip/CPP/7zip/UI/Common/EnumDirItems.cpp +1637 -0
  780. package/vendor/7zip/CPP/7zip/UI/Common/EnumDirItems.h +38 -0
  781. package/vendor/7zip/CPP/7zip/UI/Common/ExitCode.h +27 -0
  782. package/vendor/7zip/CPP/7zip/UI/Common/Extract.cpp +593 -0
  783. package/vendor/7zip/CPP/7zip/UI/Common/Extract.h +118 -0
  784. package/vendor/7zip/CPP/7zip/UI/Common/ExtractMode.h +44 -0
  785. package/vendor/7zip/CPP/7zip/UI/Common/ExtractingFilePath.cpp +299 -0
  786. package/vendor/7zip/CPP/7zip/UI/Common/ExtractingFilePath.h +31 -0
  787. package/vendor/7zip/CPP/7zip/UI/Common/HashCalc.cpp +2273 -0
  788. package/vendor/7zip/CPP/7zip/UI/Common/HashCalc.h +322 -0
  789. package/vendor/7zip/CPP/7zip/UI/Common/IFileExtractCallback.h +112 -0
  790. package/vendor/7zip/CPP/7zip/UI/Common/LoadCodecs.cpp +1354 -0
  791. package/vendor/7zip/CPP/7zip/UI/Common/LoadCodecs.h +482 -0
  792. package/vendor/7zip/CPP/7zip/UI/Common/OpenArchive.cpp +3690 -0
  793. package/vendor/7zip/CPP/7zip/UI/Common/OpenArchive.h +469 -0
  794. package/vendor/7zip/CPP/7zip/UI/Common/PropIDUtils.cpp +746 -0
  795. package/vendor/7zip/CPP/7zip/UI/Common/PropIDUtils.h +18 -0
  796. package/vendor/7zip/CPP/7zip/UI/Common/Property.h +14 -0
  797. package/vendor/7zip/CPP/7zip/UI/Common/SetProperties.cpp +88 -0
  798. package/vendor/7zip/CPP/7zip/UI/Common/SetProperties.h +10 -0
  799. package/vendor/7zip/CPP/7zip/UI/Common/SortUtils.cpp +25 -0
  800. package/vendor/7zip/CPP/7zip/UI/Common/SortUtils.h +10 -0
  801. package/vendor/7zip/CPP/7zip/UI/Common/StdAfx.h +11 -0
  802. package/vendor/7zip/CPP/7zip/UI/Common/TempFiles.cpp +20 -0
  803. package/vendor/7zip/CPP/7zip/UI/Common/TempFiles.h +19 -0
  804. package/vendor/7zip/CPP/7zip/UI/Common/Update.cpp +1931 -0
  805. package/vendor/7zip/CPP/7zip/UI/Common/Update.h +221 -0
  806. package/vendor/7zip/CPP/7zip/UI/Common/UpdateAction.cpp +64 -0
  807. package/vendor/7zip/CPP/7zip/UI/Common/UpdateAction.h +66 -0
  808. package/vendor/7zip/CPP/7zip/UI/Common/UpdateCallback.cpp +1078 -0
  809. package/vendor/7zip/CPP/7zip/UI/Common/UpdateCallback.h +197 -0
  810. package/vendor/7zip/CPP/7zip/UI/Common/UpdatePair.cpp +303 -0
  811. package/vendor/7zip/CPP/7zip/UI/Common/UpdatePair.h +27 -0
  812. package/vendor/7zip/CPP/7zip/UI/Common/UpdateProduce.cpp +75 -0
  813. package/vendor/7zip/CPP/7zip/UI/Common/UpdateProduce.h +60 -0
  814. package/vendor/7zip/CPP/7zip/UI/Common/WorkDir.cpp +84 -0
  815. package/vendor/7zip/CPP/7zip/UI/Common/WorkDir.h +30 -0
  816. package/vendor/7zip/CPP/7zip/UI/Common/ZipRegistry.cpp +599 -0
  817. package/vendor/7zip/CPP/7zip/UI/Common/ZipRegistry.h +212 -0
  818. package/vendor/7zip/CPP/7zip/UI/Console/BenchCon.cpp +41 -0
  819. package/vendor/7zip/CPP/7zip/UI/Console/BenchCon.h +14 -0
  820. package/vendor/7zip/CPP/7zip/UI/Console/Console.dsp +1052 -0
  821. package/vendor/7zip/CPP/7zip/UI/Console/Console.dsw +29 -0
  822. package/vendor/7zip/CPP/7zip/UI/Console/Console.mak +45 -0
  823. package/vendor/7zip/CPP/7zip/UI/Console/Console.manifest +16 -0
  824. package/vendor/7zip/CPP/7zip/UI/Console/ConsoleClose.cpp +98 -0
  825. package/vendor/7zip/CPP/7zip/UI/Console/ConsoleClose.h +39 -0
  826. package/vendor/7zip/CPP/7zip/UI/Console/ExtractCallbackConsole.cpp +954 -0
  827. package/vendor/7zip/CPP/7zip/UI/Console/ExtractCallbackConsole.h +211 -0
  828. package/vendor/7zip/CPP/7zip/UI/Console/HashCon.cpp +426 -0
  829. package/vendor/7zip/CPP/7zip/UI/Console/HashCon.h +58 -0
  830. package/vendor/7zip/CPP/7zip/UI/Console/List.cpp +1417 -0
  831. package/vendor/7zip/CPP/7zip/UI/Console/List.h +42 -0
  832. package/vendor/7zip/CPP/7zip/UI/Console/Main.cpp +1663 -0
  833. package/vendor/7zip/CPP/7zip/UI/Console/MainAr.cpp +235 -0
  834. package/vendor/7zip/CPP/7zip/UI/Console/OpenCallbackConsole.cpp +115 -0
  835. package/vendor/7zip/CPP/7zip/UI/Console/OpenCallbackConsole.h +73 -0
  836. package/vendor/7zip/CPP/7zip/UI/Console/PercentPrinter.cpp +186 -0
  837. package/vendor/7zip/CPP/7zip/UI/Console/PercentPrinter.h +66 -0
  838. package/vendor/7zip/CPP/7zip/UI/Console/StdAfx.cpp +3 -0
  839. package/vendor/7zip/CPP/7zip/UI/Console/StdAfx.h +11 -0
  840. package/vendor/7zip/CPP/7zip/UI/Console/UpdateCallbackConsole.cpp +1012 -0
  841. package/vendor/7zip/CPP/7zip/UI/Console/UpdateCallbackConsole.h +148 -0
  842. package/vendor/7zip/CPP/7zip/UI/Console/UserInputUtils.cpp +118 -0
  843. package/vendor/7zip/CPP/7zip/UI/Console/UserInputUtils.h +27 -0
  844. package/vendor/7zip/CPP/7zip/UI/Console/makefile +68 -0
  845. package/vendor/7zip/CPP/7zip/UI/Console/makefile.gcc +184 -0
  846. package/vendor/7zip/CPP/7zip/UI/Console/resource.rc +7 -0
  847. package/vendor/7zip/CPP/7zip/UI/Explorer/7-zip.dll.manifest +1 -0
  848. package/vendor/7zip/CPP/7zip/UI/Explorer/ContextMenu.cpp +1837 -0
  849. package/vendor/7zip/CPP/7zip/UI/Explorer/ContextMenu.h +173 -0
  850. package/vendor/7zip/CPP/7zip/UI/Explorer/ContextMenuFlags.h +27 -0
  851. package/vendor/7zip/CPP/7zip/UI/Explorer/DllExportsExplorer.cpp +268 -0
  852. package/vendor/7zip/CPP/7zip/UI/Explorer/Explorer.def +9 -0
  853. package/vendor/7zip/CPP/7zip/UI/Explorer/Explorer.dsp +620 -0
  854. package/vendor/7zip/CPP/7zip/UI/Explorer/Explorer.dsw +29 -0
  855. package/vendor/7zip/CPP/7zip/UI/Explorer/MenuLogo.bmp +0 -0
  856. package/vendor/7zip/CPP/7zip/UI/Explorer/MyExplorerCommand.h +217 -0
  857. package/vendor/7zip/CPP/7zip/UI/Explorer/MyMessages.cpp +43 -0
  858. package/vendor/7zip/CPP/7zip/UI/Explorer/MyMessages.h +16 -0
  859. package/vendor/7zip/CPP/7zip/UI/Explorer/RegistryContextMenu.cpp +225 -0
  860. package/vendor/7zip/CPP/7zip/UI/Explorer/RegistryContextMenu.h +13 -0
  861. package/vendor/7zip/CPP/7zip/UI/Explorer/StdAfx.cpp +3 -0
  862. package/vendor/7zip/CPP/7zip/UI/Explorer/StdAfx.h +6 -0
  863. package/vendor/7zip/CPP/7zip/UI/Explorer/makefile +76 -0
  864. package/vendor/7zip/CPP/7zip/UI/Explorer/resource.h +15 -0
  865. package/vendor/7zip/CPP/7zip/UI/Explorer/resource.rc +10 -0
  866. package/vendor/7zip/CPP/7zip/UI/Explorer/resource2.rc +19 -0
  867. package/vendor/7zip/CPP/7zip/UI/Far/ExtractEngine.cpp +274 -0
  868. package/vendor/7zip/CPP/7zip/UI/Far/ExtractEngine.h +43 -0
  869. package/vendor/7zip/CPP/7zip/UI/Far/Far.cpp +588 -0
  870. package/vendor/7zip/CPP/7zip/UI/Far/Far.def +35 -0
  871. package/vendor/7zip/CPP/7zip/UI/Far/Far.dsp +831 -0
  872. package/vendor/7zip/CPP/7zip/UI/Far/Far.dsw +29 -0
  873. package/vendor/7zip/CPP/7zip/UI/Far/FarPlugin.h +560 -0
  874. package/vendor/7zip/CPP/7zip/UI/Far/FarUtils.cpp +523 -0
  875. package/vendor/7zip/CPP/7zip/UI/Far/FarUtils.h +203 -0
  876. package/vendor/7zip/CPP/7zip/UI/Far/Messages.h +136 -0
  877. package/vendor/7zip/CPP/7zip/UI/Far/OverwriteDialogFar.cpp +145 -0
  878. package/vendor/7zip/CPP/7zip/UI/Far/OverwriteDialogFar.h +37 -0
  879. package/vendor/7zip/CPP/7zip/UI/Far/Plugin.cpp +937 -0
  880. package/vendor/7zip/CPP/7zip/UI/Far/Plugin.h +97 -0
  881. package/vendor/7zip/CPP/7zip/UI/Far/PluginCommon.cpp +50 -0
  882. package/vendor/7zip/CPP/7zip/UI/Far/PluginDelete.cpp +144 -0
  883. package/vendor/7zip/CPP/7zip/UI/Far/PluginRead.cpp +301 -0
  884. package/vendor/7zip/CPP/7zip/UI/Far/PluginWrite.cpp +840 -0
  885. package/vendor/7zip/CPP/7zip/UI/Far/ProgressBox.cpp +305 -0
  886. package/vendor/7zip/CPP/7zip/UI/Far/ProgressBox.h +85 -0
  887. package/vendor/7zip/CPP/7zip/UI/Far/StdAfx.cpp +3 -0
  888. package/vendor/7zip/CPP/7zip/UI/Far/StdAfx.h +11 -0
  889. package/vendor/7zip/CPP/7zip/UI/Far/UpdateCallbackFar.cpp +327 -0
  890. package/vendor/7zip/CPP/7zip/UI/Far/UpdateCallbackFar.h +58 -0
  891. package/vendor/7zip/CPP/7zip/UI/Far/makefile +105 -0
  892. package/vendor/7zip/CPP/7zip/UI/Far/resource.rc +3 -0
  893. package/vendor/7zip/CPP/7zip/UI/FileManager/7zFM.exe.manifest +23 -0
  894. package/vendor/7zip/CPP/7zip/UI/FileManager/7zipLogo.ico +0 -0
  895. package/vendor/7zip/CPP/7zip/UI/FileManager/AboutDialog.cpp +81 -0
  896. package/vendor/7zip/CPP/7zip/UI/FileManager/AboutDialog.h +19 -0
  897. package/vendor/7zip/CPP/7zip/UI/FileManager/AboutDialog.rc +26 -0
  898. package/vendor/7zip/CPP/7zip/UI/FileManager/AboutDialogRes.h +8 -0
  899. package/vendor/7zip/CPP/7zip/UI/FileManager/Add.bmp +0 -0
  900. package/vendor/7zip/CPP/7zip/UI/FileManager/Add2.bmp +0 -0
  901. package/vendor/7zip/CPP/7zip/UI/FileManager/AltStreamsFolder.cpp +865 -0
  902. package/vendor/7zip/CPP/7zip/UI/FileManager/AltStreamsFolder.h +92 -0
  903. package/vendor/7zip/CPP/7zip/UI/FileManager/App.cpp +1004 -0
  904. package/vendor/7zip/CPP/7zip/UI/FileManager/App.h +314 -0
  905. package/vendor/7zip/CPP/7zip/UI/FileManager/AppState.h +95 -0
  906. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog.cpp +1132 -0
  907. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog.h +32 -0
  908. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog.rc +25 -0
  909. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog2.cpp +1873 -0
  910. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog2.h +10 -0
  911. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog2.rc +32 -0
  912. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog2Res.h +9 -0
  913. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialogRes.h +9 -0
  914. package/vendor/7zip/CPP/7zip/UI/FileManager/ClassDefs.cpp +12 -0
  915. package/vendor/7zip/CPP/7zip/UI/FileManager/ComboDialog.cpp +64 -0
  916. package/vendor/7zip/CPP/7zip/UI/FileManager/ComboDialog.h +28 -0
  917. package/vendor/7zip/CPP/7zip/UI/FileManager/ComboDialog.rc +16 -0
  918. package/vendor/7zip/CPP/7zip/UI/FileManager/ComboDialogRes.h +4 -0
  919. package/vendor/7zip/CPP/7zip/UI/FileManager/Copy.bmp +0 -0
  920. package/vendor/7zip/CPP/7zip/UI/FileManager/Copy2.bmp +0 -0
  921. package/vendor/7zip/CPP/7zip/UI/FileManager/CopyDialog.cpp +103 -0
  922. package/vendor/7zip/CPP/7zip/UI/FileManager/CopyDialog.h +31 -0
  923. package/vendor/7zip/CPP/7zip/UI/FileManager/CopyDialog.rc +20 -0
  924. package/vendor/7zip/CPP/7zip/UI/FileManager/CopyDialogRes.h +8 -0
  925. package/vendor/7zip/CPP/7zip/UI/FileManager/Delete.bmp +0 -0
  926. package/vendor/7zip/CPP/7zip/UI/FileManager/Delete2.bmp +0 -0
  927. package/vendor/7zip/CPP/7zip/UI/FileManager/DialogSize.h +16 -0
  928. package/vendor/7zip/CPP/7zip/UI/FileManager/EditDialog.cpp +57 -0
  929. package/vendor/7zip/CPP/7zip/UI/FileManager/EditDialog.h +25 -0
  930. package/vendor/7zip/CPP/7zip/UI/FileManager/EditDialog.rc +15 -0
  931. package/vendor/7zip/CPP/7zip/UI/FileManager/EditDialogRes.h +2 -0
  932. package/vendor/7zip/CPP/7zip/UI/FileManager/EditPage.cpp +159 -0
  933. package/vendor/7zip/CPP/7zip/UI/FileManager/EditPage.h +30 -0
  934. package/vendor/7zip/CPP/7zip/UI/FileManager/EditPage.rc +19 -0
  935. package/vendor/7zip/CPP/7zip/UI/FileManager/EditPage2.rc +14 -0
  936. package/vendor/7zip/CPP/7zip/UI/FileManager/EditPageRes.h +15 -0
  937. package/vendor/7zip/CPP/7zip/UI/FileManager/EnumFormatEtc.cpp +109 -0
  938. package/vendor/7zip/CPP/7zip/UI/FileManager/EnumFormatEtc.h +10 -0
  939. package/vendor/7zip/CPP/7zip/UI/FileManager/Extract.bmp +0 -0
  940. package/vendor/7zip/CPP/7zip/UI/FileManager/Extract2.bmp +0 -0
  941. package/vendor/7zip/CPP/7zip/UI/FileManager/ExtractCallback.cpp +1284 -0
  942. package/vendor/7zip/CPP/7zip/UI/FileManager/ExtractCallback.h +347 -0
  943. package/vendor/7zip/CPP/7zip/UI/FileManager/FM.cpp +1230 -0
  944. package/vendor/7zip/CPP/7zip/UI/FileManager/FM.dsp +1699 -0
  945. package/vendor/7zip/CPP/7zip/UI/FileManager/FM.dsw +29 -0
  946. package/vendor/7zip/CPP/7zip/UI/FileManager/FM.ico +0 -0
  947. package/vendor/7zip/CPP/7zip/UI/FileManager/FM.mak +102 -0
  948. package/vendor/7zip/CPP/7zip/UI/FileManager/FSDrives.cpp +512 -0
  949. package/vendor/7zip/CPP/7zip/UI/FileManager/FSDrives.h +52 -0
  950. package/vendor/7zip/CPP/7zip/UI/FileManager/FSFolder.cpp +1179 -0
  951. package/vendor/7zip/CPP/7zip/UI/FileManager/FSFolder.h +220 -0
  952. package/vendor/7zip/CPP/7zip/UI/FileManager/FSFolderCopy.cpp +871 -0
  953. package/vendor/7zip/CPP/7zip/UI/FileManager/FileFolderPluginOpen.cpp +394 -0
  954. package/vendor/7zip/CPP/7zip/UI/FileManager/FileFolderPluginOpen.h +27 -0
  955. package/vendor/7zip/CPP/7zip/UI/FileManager/FilePlugins.cpp +78 -0
  956. package/vendor/7zip/CPP/7zip/UI/FileManager/FilePlugins.h +33 -0
  957. package/vendor/7zip/CPP/7zip/UI/FileManager/FoldersPage.cpp +172 -0
  958. package/vendor/7zip/CPP/7zip/UI/FileManager/FoldersPage.h +32 -0
  959. package/vendor/7zip/CPP/7zip/UI/FileManager/FoldersPage.rc +23 -0
  960. package/vendor/7zip/CPP/7zip/UI/FileManager/FoldersPage2.rc +11 -0
  961. package/vendor/7zip/CPP/7zip/UI/FileManager/FoldersPageRes.h +12 -0
  962. package/vendor/7zip/CPP/7zip/UI/FileManager/FormatUtils.cpp +28 -0
  963. package/vendor/7zip/CPP/7zip/UI/FileManager/FormatUtils.h +14 -0
  964. package/vendor/7zip/CPP/7zip/UI/FileManager/HelpUtils.cpp +78 -0
  965. package/vendor/7zip/CPP/7zip/UI/FileManager/HelpUtils.h +10 -0
  966. package/vendor/7zip/CPP/7zip/UI/FileManager/IFolder.h +187 -0
  967. package/vendor/7zip/CPP/7zip/UI/FileManager/Info.bmp +0 -0
  968. package/vendor/7zip/CPP/7zip/UI/FileManager/Info2.bmp +0 -0
  969. package/vendor/7zip/CPP/7zip/UI/FileManager/LangPage.cpp +359 -0
  970. package/vendor/7zip/CPP/7zip/UI/FileManager/LangPage.h +36 -0
  971. package/vendor/7zip/CPP/7zip/UI/FileManager/LangPage.rc +40 -0
  972. package/vendor/7zip/CPP/7zip/UI/FileManager/LangPageRes.h +9 -0
  973. package/vendor/7zip/CPP/7zip/UI/FileManager/LangUtils.cpp +333 -0
  974. package/vendor/7zip/CPP/7zip/UI/FileManager/LangUtils.h +48 -0
  975. package/vendor/7zip/CPP/7zip/UI/FileManager/LinkDialog.cpp +402 -0
  976. package/vendor/7zip/CPP/7zip/UI/FileManager/LinkDialog.h +34 -0
  977. package/vendor/7zip/CPP/7zip/UI/FileManager/LinkDialog.rc +38 -0
  978. package/vendor/7zip/CPP/7zip/UI/FileManager/LinkDialogRes.h +22 -0
  979. package/vendor/7zip/CPP/7zip/UI/FileManager/ListViewDialog.cpp +321 -0
  980. package/vendor/7zip/CPP/7zip/UI/FileManager/ListViewDialog.h +46 -0
  981. package/vendor/7zip/CPP/7zip/UI/FileManager/ListViewDialog.rc +14 -0
  982. package/vendor/7zip/CPP/7zip/UI/FileManager/ListViewDialogRes.h +2 -0
  983. package/vendor/7zip/CPP/7zip/UI/FileManager/MemDialog.cpp +218 -0
  984. package/vendor/7zip/CPP/7zip/UI/FileManager/MemDialog.h +48 -0
  985. package/vendor/7zip/CPP/7zip/UI/FileManager/MemDialog.rc +49 -0
  986. package/vendor/7zip/CPP/7zip/UI/FileManager/MemDialogRes.h +13 -0
  987. package/vendor/7zip/CPP/7zip/UI/FileManager/MenuPage.cpp +439 -0
  988. package/vendor/7zip/CPP/7zip/UI/FileManager/MenuPage.h +57 -0
  989. package/vendor/7zip/CPP/7zip/UI/FileManager/MenuPage.rc +24 -0
  990. package/vendor/7zip/CPP/7zip/UI/FileManager/MenuPage2.rc +28 -0
  991. package/vendor/7zip/CPP/7zip/UI/FileManager/MenuPageRes.h +15 -0
  992. package/vendor/7zip/CPP/7zip/UI/FileManager/MessagesDialog.cpp +76 -0
  993. package/vendor/7zip/CPP/7zip/UI/FileManager/MessagesDialog.h +25 -0
  994. package/vendor/7zip/CPP/7zip/UI/FileManager/MessagesDialog.rc +14 -0
  995. package/vendor/7zip/CPP/7zip/UI/FileManager/MessagesDialogRes.h +3 -0
  996. package/vendor/7zip/CPP/7zip/UI/FileManager/Move.bmp +0 -0
  997. package/vendor/7zip/CPP/7zip/UI/FileManager/Move2.bmp +0 -0
  998. package/vendor/7zip/CPP/7zip/UI/FileManager/MyCom2.h +46 -0
  999. package/vendor/7zip/CPP/7zip/UI/FileManager/MyLoadMenu.cpp +964 -0
  1000. package/vendor/7zip/CPP/7zip/UI/FileManager/MyLoadMenu.h +40 -0
  1001. package/vendor/7zip/CPP/7zip/UI/FileManager/MyWindowsNew.h +119 -0
  1002. package/vendor/7zip/CPP/7zip/UI/FileManager/NetFolder.cpp +276 -0
  1003. package/vendor/7zip/CPP/7zip/UI/FileManager/NetFolder.h +36 -0
  1004. package/vendor/7zip/CPP/7zip/UI/FileManager/OpenCallback.cpp +86 -0
  1005. package/vendor/7zip/CPP/7zip/UI/FileManager/OpenCallback.h +69 -0
  1006. package/vendor/7zip/CPP/7zip/UI/FileManager/OptionsDialog.cpp +89 -0
  1007. package/vendor/7zip/CPP/7zip/UI/FileManager/OverwriteDialog.cpp +288 -0
  1008. package/vendor/7zip/CPP/7zip/UI/FileManager/OverwriteDialog.h +89 -0
  1009. package/vendor/7zip/CPP/7zip/UI/FileManager/OverwriteDialog.rc +93 -0
  1010. package/vendor/7zip/CPP/7zip/UI/FileManager/OverwriteDialogRes.h +19 -0
  1011. package/vendor/7zip/CPP/7zip/UI/FileManager/Panel.cpp +1177 -0
  1012. package/vendor/7zip/CPP/7zip/UI/FileManager/Panel.h +1020 -0
  1013. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelCopy.cpp +477 -0
  1014. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelCrc.cpp +422 -0
  1015. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelDrag.cpp +3006 -0
  1016. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelFolderChange.cpp +1122 -0
  1017. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelItemOpen.cpp +1836 -0
  1018. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelItems.cpp +1476 -0
  1019. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelKey.cpp +357 -0
  1020. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelListNotify.cpp +838 -0
  1021. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelMenu.cpp +1160 -0
  1022. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelOperations.cpp +533 -0
  1023. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelSelect.cpp +317 -0
  1024. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelSort.cpp +288 -0
  1025. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelSplitFile.cpp +562 -0
  1026. package/vendor/7zip/CPP/7zip/UI/FileManager/PasswordDialog.cpp +58 -0
  1027. package/vendor/7zip/CPP/7zip/UI/FileManager/PasswordDialog.h +28 -0
  1028. package/vendor/7zip/CPP/7zip/UI/FileManager/PasswordDialog.rc +18 -0
  1029. package/vendor/7zip/CPP/7zip/UI/FileManager/PasswordDialogRes.h +5 -0
  1030. package/vendor/7zip/CPP/7zip/UI/FileManager/PluginInterface.h +32 -0
  1031. package/vendor/7zip/CPP/7zip/UI/FileManager/PluginLoader.h +33 -0
  1032. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgramLocation.cpp +3 -0
  1033. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgramLocation.h +6 -0
  1034. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog.cpp +201 -0
  1035. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog.h +171 -0
  1036. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog.rc +12 -0
  1037. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog2.cpp +1484 -0
  1038. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog2.h +355 -0
  1039. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog2.rc +40 -0
  1040. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog2Res.h +49 -0
  1041. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog2a.rc +85 -0
  1042. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialogRes.h +3 -0
  1043. package/vendor/7zip/CPP/7zip/UI/FileManager/PropertyName.cpp +23 -0
  1044. package/vendor/7zip/CPP/7zip/UI/FileManager/PropertyName.h +10 -0
  1045. package/vendor/7zip/CPP/7zip/UI/FileManager/PropertyName.rc +109 -0
  1046. package/vendor/7zip/CPP/7zip/UI/FileManager/PropertyNameRes.h +104 -0
  1047. package/vendor/7zip/CPP/7zip/UI/FileManager/RegistryAssociations.cpp +167 -0
  1048. package/vendor/7zip/CPP/7zip/UI/FileManager/RegistryAssociations.h +31 -0
  1049. package/vendor/7zip/CPP/7zip/UI/FileManager/RegistryPlugins.cpp +145 -0
  1050. package/vendor/7zip/CPP/7zip/UI/FileManager/RegistryPlugins.h +29 -0
  1051. package/vendor/7zip/CPP/7zip/UI/FileManager/RegistryUtils.cpp +194 -0
  1052. package/vendor/7zip/CPP/7zip/UI/FileManager/RegistryUtils.h +50 -0
  1053. package/vendor/7zip/CPP/7zip/UI/FileManager/RootFolder.cpp +342 -0
  1054. package/vendor/7zip/CPP/7zip/UI/FileManager/RootFolder.h +24 -0
  1055. package/vendor/7zip/CPP/7zip/UI/FileManager/SettingsPage.cpp +453 -0
  1056. package/vendor/7zip/CPP/7zip/UI/FileManager/SettingsPage.h +37 -0
  1057. package/vendor/7zip/CPP/7zip/UI/FileManager/SettingsPage.rc +22 -0
  1058. package/vendor/7zip/CPP/7zip/UI/FileManager/SettingsPage2.rc +37 -0
  1059. package/vendor/7zip/CPP/7zip/UI/FileManager/SettingsPageRes.h +23 -0
  1060. package/vendor/7zip/CPP/7zip/UI/FileManager/SplitDialog.cpp +114 -0
  1061. package/vendor/7zip/CPP/7zip/UI/FileManager/SplitDialog.h +28 -0
  1062. package/vendor/7zip/CPP/7zip/UI/FileManager/SplitDialog.rc +16 -0
  1063. package/vendor/7zip/CPP/7zip/UI/FileManager/SplitDialogRes.h +8 -0
  1064. package/vendor/7zip/CPP/7zip/UI/FileManager/SplitUtils.cpp +96 -0
  1065. package/vendor/7zip/CPP/7zip/UI/FileManager/SplitUtils.h +15 -0
  1066. package/vendor/7zip/CPP/7zip/UI/FileManager/StdAfx.cpp +3 -0
  1067. package/vendor/7zip/CPP/7zip/UI/FileManager/StdAfx.h +67 -0
  1068. package/vendor/7zip/CPP/7zip/UI/FileManager/StringUtils.cpp +39 -0
  1069. package/vendor/7zip/CPP/7zip/UI/FileManager/StringUtils.h +11 -0
  1070. package/vendor/7zip/CPP/7zip/UI/FileManager/SysIconUtils.cpp +352 -0
  1071. package/vendor/7zip/CPP/7zip/UI/FileManager/SysIconUtils.h +65 -0
  1072. package/vendor/7zip/CPP/7zip/UI/FileManager/SystemPage.cpp +472 -0
  1073. package/vendor/7zip/CPP/7zip/UI/FileManager/SystemPage.h +126 -0
  1074. package/vendor/7zip/CPP/7zip/UI/FileManager/SystemPage.rc +43 -0
  1075. package/vendor/7zip/CPP/7zip/UI/FileManager/SystemPageRes.h +9 -0
  1076. package/vendor/7zip/CPP/7zip/UI/FileManager/Test.bmp +0 -0
  1077. package/vendor/7zip/CPP/7zip/UI/FileManager/Test2.bmp +0 -0
  1078. package/vendor/7zip/CPP/7zip/UI/FileManager/TextPairs.cpp +193 -0
  1079. package/vendor/7zip/CPP/7zip/UI/FileManager/TextPairs.h +32 -0
  1080. package/vendor/7zip/CPP/7zip/UI/FileManager/UpdateCallback100.cpp +147 -0
  1081. package/vendor/7zip/CPP/7zip/UI/FileManager/UpdateCallback100.h +49 -0
  1082. package/vendor/7zip/CPP/7zip/UI/FileManager/VerCtrl.cpp +428 -0
  1083. package/vendor/7zip/CPP/7zip/UI/FileManager/ViewSettings.cpp +315 -0
  1084. package/vendor/7zip/CPP/7zip/UI/FileManager/ViewSettings.h +115 -0
  1085. package/vendor/7zip/CPP/7zip/UI/FileManager/makefile +110 -0
  1086. package/vendor/7zip/CPP/7zip/UI/FileManager/resource.h +199 -0
  1087. package/vendor/7zip/CPP/7zip/UI/FileManager/resource.rc +296 -0
  1088. package/vendor/7zip/CPP/7zip/UI/FileManager/resourceGui.h +25 -0
  1089. package/vendor/7zip/CPP/7zip/UI/FileManager/resourceGui.rc +30 -0
  1090. package/vendor/7zip/CPP/7zip/UI/GUI/7zG.exe.manifest +23 -0
  1091. package/vendor/7zip/CPP/7zip/UI/GUI/BenchmarkDialog.cpp +1921 -0
  1092. package/vendor/7zip/CPP/7zip/UI/GUI/BenchmarkDialog.h +15 -0
  1093. package/vendor/7zip/CPP/7zip/UI/GUI/BenchmarkDialog.rc +288 -0
  1094. package/vendor/7zip/CPP/7zip/UI/GUI/BenchmarkDialogRes.h +79 -0
  1095. package/vendor/7zip/CPP/7zip/UI/GUI/CompressDialog.cpp +3821 -0
  1096. package/vendor/7zip/CPP/7zip/UI/GUI/CompressDialog.h +483 -0
  1097. package/vendor/7zip/CPP/7zip/UI/GUI/CompressDialog.rc +233 -0
  1098. package/vendor/7zip/CPP/7zip/UI/GUI/CompressDialogRes.h +125 -0
  1099. package/vendor/7zip/CPP/7zip/UI/GUI/CompressOptionsDialog.rc +79 -0
  1100. package/vendor/7zip/CPP/7zip/UI/GUI/Extract.rc +59 -0
  1101. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractDialog.cpp +420 -0
  1102. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractDialog.h +113 -0
  1103. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractDialog.rc +98 -0
  1104. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractDialogRes.h +24 -0
  1105. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractGUI.cpp +297 -0
  1106. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractGUI.h +39 -0
  1107. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractRes.h +51 -0
  1108. package/vendor/7zip/CPP/7zip/UI/GUI/FM.ico +0 -0
  1109. package/vendor/7zip/CPP/7zip/UI/GUI/GUI.cpp +502 -0
  1110. package/vendor/7zip/CPP/7zip/UI/GUI/GUI.dsp +1275 -0
  1111. package/vendor/7zip/CPP/7zip/UI/GUI/GUI.dsw +29 -0
  1112. package/vendor/7zip/CPP/7zip/UI/GUI/HashGUI.cpp +341 -0
  1113. package/vendor/7zip/CPP/7zip/UI/GUI/HashGUI.h +27 -0
  1114. package/vendor/7zip/CPP/7zip/UI/GUI/StdAfx.cpp +3 -0
  1115. package/vendor/7zip/CPP/7zip/UI/GUI/StdAfx.h +6 -0
  1116. package/vendor/7zip/CPP/7zip/UI/GUI/UpdateCallbackGUI.cpp +295 -0
  1117. package/vendor/7zip/CPP/7zip/UI/GUI/UpdateCallbackGUI.h +31 -0
  1118. package/vendor/7zip/CPP/7zip/UI/GUI/UpdateCallbackGUI2.cpp +130 -0
  1119. package/vendor/7zip/CPP/7zip/UI/GUI/UpdateCallbackGUI2.h +53 -0
  1120. package/vendor/7zip/CPP/7zip/UI/GUI/UpdateGUI.cpp +605 -0
  1121. package/vendor/7zip/CPP/7zip/UI/GUI/UpdateGUI.h +33 -0
  1122. package/vendor/7zip/CPP/7zip/UI/GUI/makefile +148 -0
  1123. package/vendor/7zip/CPP/7zip/UI/GUI/resource.rc +26 -0
  1124. package/vendor/7zip/CPP/7zip/UI/GUI/resource2.h +2 -0
  1125. package/vendor/7zip/CPP/7zip/UI/GUI/resource2.rc +10 -0
  1126. package/vendor/7zip/CPP/7zip/UI/GUI/resource3.h +10 -0
  1127. package/vendor/7zip/CPP/7zip/UI/GUI/resource3.rc +15 -0
  1128. package/vendor/7zip/CPP/7zip/UI/makefile +12 -0
  1129. package/vendor/7zip/CPP/7zip/cmpl_clang.mak +3 -0
  1130. package/vendor/7zip/CPP/7zip/cmpl_clang_arm64.mak +3 -0
  1131. package/vendor/7zip/CPP/7zip/cmpl_clang_x64.mak +3 -0
  1132. package/vendor/7zip/CPP/7zip/cmpl_clang_x86.mak +3 -0
  1133. package/vendor/7zip/CPP/7zip/cmpl_gcc.mak +3 -0
  1134. package/vendor/7zip/CPP/7zip/cmpl_gcc_arm.mak +3 -0
  1135. package/vendor/7zip/CPP/7zip/cmpl_gcc_arm64.mak +3 -0
  1136. package/vendor/7zip/CPP/7zip/cmpl_gcc_x64.mak +3 -0
  1137. package/vendor/7zip/CPP/7zip/cmpl_gcc_x86.mak +3 -0
  1138. package/vendor/7zip/CPP/7zip/cmpl_mac_arm64.mak +3 -0
  1139. package/vendor/7zip/CPP/7zip/cmpl_mac_x64.mak +3 -0
  1140. package/vendor/7zip/CPP/7zip/makefile +10 -0
  1141. package/vendor/7zip/CPP/7zip/var_clang.mak +11 -0
  1142. package/vendor/7zip/CPP/7zip/var_clang_arm64.mak +19 -0
  1143. package/vendor/7zip/CPP/7zip/var_clang_x64.mak +11 -0
  1144. package/vendor/7zip/CPP/7zip/var_clang_x86.mak +11 -0
  1145. package/vendor/7zip/CPP/7zip/var_gcc.mak +12 -0
  1146. package/vendor/7zip/CPP/7zip/var_gcc_arm.mak +34 -0
  1147. package/vendor/7zip/CPP/7zip/var_gcc_arm64.mak +12 -0
  1148. package/vendor/7zip/CPP/7zip/var_gcc_x64.mak +11 -0
  1149. package/vendor/7zip/CPP/7zip/var_gcc_x86.mak +10 -0
  1150. package/vendor/7zip/CPP/7zip/var_mac_arm64.mak +13 -0
  1151. package/vendor/7zip/CPP/7zip/var_mac_x64.mak +13 -0
  1152. package/vendor/7zip/CPP/7zip/warn_clang.mak +3 -0
  1153. package/vendor/7zip/CPP/7zip/warn_clang_mac.mak +9 -0
  1154. package/vendor/7zip/CPP/7zip/warn_gcc.mak +55 -0
  1155. package/vendor/7zip/CPP/Build.mak +259 -0
  1156. package/vendor/7zip/CPP/Common/AutoPtr.h +46 -0
  1157. package/vendor/7zip/CPP/Common/CRC.cpp +7 -0
  1158. package/vendor/7zip/CPP/Common/C_FileIO.cpp +3 -0
  1159. package/vendor/7zip/CPP/Common/C_FileIO.h +6 -0
  1160. package/vendor/7zip/CPP/Common/CksumReg.cpp +55 -0
  1161. package/vendor/7zip/CPP/Common/ComTry.h +21 -0
  1162. package/vendor/7zip/CPP/Common/CommandLineParser.cpp +231 -0
  1163. package/vendor/7zip/CPP/Common/CommandLineParser.h +63 -0
  1164. package/vendor/7zip/CPP/Common/Common.h +28 -0
  1165. package/vendor/7zip/CPP/Common/Common0.h +342 -0
  1166. package/vendor/7zip/CPP/Common/CrcReg.cpp +77 -0
  1167. package/vendor/7zip/CPP/Common/Defs.h +16 -0
  1168. package/vendor/7zip/CPP/Common/DynLimBuf.cpp +93 -0
  1169. package/vendor/7zip/CPP/Common/DynLimBuf.h +41 -0
  1170. package/vendor/7zip/CPP/Common/DynamicBuffer.h +76 -0
  1171. package/vendor/7zip/CPP/Common/IntToString.cpp +215 -0
  1172. package/vendor/7zip/CPP/Common/IntToString.h +54 -0
  1173. package/vendor/7zip/CPP/Common/Lang.cpp +173 -0
  1174. package/vendor/7zip/CPP/Common/Lang.h +30 -0
  1175. package/vendor/7zip/CPP/Common/ListFileUtils.cpp +150 -0
  1176. package/vendor/7zip/CPP/Common/ListFileUtils.h +18 -0
  1177. package/vendor/7zip/CPP/Common/LzFindPrepare.cpp +7 -0
  1178. package/vendor/7zip/CPP/Common/Md5Reg.cpp +44 -0
  1179. package/vendor/7zip/CPP/Common/MyBuffer.h +343 -0
  1180. package/vendor/7zip/CPP/Common/MyBuffer2.h +185 -0
  1181. package/vendor/7zip/CPP/Common/MyCom.h +693 -0
  1182. package/vendor/7zip/CPP/Common/MyException.h +14 -0
  1183. package/vendor/7zip/CPP/Common/MyGuidDef.h +63 -0
  1184. package/vendor/7zip/CPP/Common/MyInitGuid.h +57 -0
  1185. package/vendor/7zip/CPP/Common/MyLinux.h +75 -0
  1186. package/vendor/7zip/CPP/Common/MyMap.cpp +140 -0
  1187. package/vendor/7zip/CPP/Common/MyMap.h +28 -0
  1188. package/vendor/7zip/CPP/Common/MyString.cpp +1842 -0
  1189. package/vendor/7zip/CPP/Common/MyString.h +1079 -0
  1190. package/vendor/7zip/CPP/Common/MyTypes.h +38 -0
  1191. package/vendor/7zip/CPP/Common/MyUnknown.h +8 -0
  1192. package/vendor/7zip/CPP/Common/MyVector.cpp +3 -0
  1193. package/vendor/7zip/CPP/Common/MyVector.h +772 -0
  1194. package/vendor/7zip/CPP/Common/MyWindows.cpp +292 -0
  1195. package/vendor/7zip/CPP/Common/MyWindows.h +325 -0
  1196. package/vendor/7zip/CPP/Common/MyXml.cpp +349 -0
  1197. package/vendor/7zip/CPP/Common/MyXml.h +45 -0
  1198. package/vendor/7zip/CPP/Common/NewHandler.cpp +340 -0
  1199. package/vendor/7zip/CPP/Common/NewHandler.h +121 -0
  1200. package/vendor/7zip/CPP/Common/Random.cpp +28 -0
  1201. package/vendor/7zip/CPP/Common/Random.h +14 -0
  1202. package/vendor/7zip/CPP/Common/Sha1Prepare.cpp +7 -0
  1203. package/vendor/7zip/CPP/Common/Sha1Reg.cpp +67 -0
  1204. package/vendor/7zip/CPP/Common/Sha256Prepare.cpp +7 -0
  1205. package/vendor/7zip/CPP/Common/Sha256Reg.cpp +67 -0
  1206. package/vendor/7zip/CPP/Common/Sha3Reg.cpp +76 -0
  1207. package/vendor/7zip/CPP/Common/Sha512Prepare.cpp +7 -0
  1208. package/vendor/7zip/CPP/Common/Sha512Reg.cpp +83 -0
  1209. package/vendor/7zip/CPP/Common/StdAfx.h +8 -0
  1210. package/vendor/7zip/CPP/Common/StdInStream.cpp +98 -0
  1211. package/vendor/7zip/CPP/Common/StdInStream.h +46 -0
  1212. package/vendor/7zip/CPP/Common/StdOutStream.cpp +271 -0
  1213. package/vendor/7zip/CPP/Common/StdOutStream.h +87 -0
  1214. package/vendor/7zip/CPP/Common/StringConvert.cpp +762 -0
  1215. package/vendor/7zip/CPP/Common/StringConvert.h +110 -0
  1216. package/vendor/7zip/CPP/Common/StringToInt.cpp +154 -0
  1217. package/vendor/7zip/CPP/Common/StringToInt.h +38 -0
  1218. package/vendor/7zip/CPP/Common/TextConfig.cpp +123 -0
  1219. package/vendor/7zip/CPP/Common/TextConfig.h +19 -0
  1220. package/vendor/7zip/CPP/Common/UTFConvert.cpp +863 -0
  1221. package/vendor/7zip/CPP/Common/UTFConvert.h +384 -0
  1222. package/vendor/7zip/CPP/Common/Wildcard.cpp +789 -0
  1223. package/vendor/7zip/CPP/Common/Wildcard.h +231 -0
  1224. package/vendor/7zip/CPP/Common/Xxh64Reg.cpp +97 -0
  1225. package/vendor/7zip/CPP/Common/XzCrc64Init.cpp +7 -0
  1226. package/vendor/7zip/CPP/Common/XzCrc64Reg.cpp +39 -0
  1227. package/vendor/7zip/CPP/Windows/COM.cpp +41 -0
  1228. package/vendor/7zip/CPP/Windows/COM.h +86 -0
  1229. package/vendor/7zip/CPP/Windows/Clipboard.cpp +130 -0
  1230. package/vendor/7zip/CPP/Windows/Clipboard.h +28 -0
  1231. package/vendor/7zip/CPP/Windows/CommonDialog.cpp +269 -0
  1232. package/vendor/7zip/CPP/Windows/CommonDialog.h +43 -0
  1233. package/vendor/7zip/CPP/Windows/Console.cpp +10 -0
  1234. package/vendor/7zip/CPP/Windows/Console.h +52 -0
  1235. package/vendor/7zip/CPP/Windows/Control/ComboBox.cpp +75 -0
  1236. package/vendor/7zip/CPP/Windows/Control/ComboBox.h +79 -0
  1237. package/vendor/7zip/CPP/Windows/Control/CommandBar.h +52 -0
  1238. package/vendor/7zip/CPP/Windows/Control/Dialog.cpp +446 -0
  1239. package/vendor/7zip/CPP/Windows/Control/Dialog.h +213 -0
  1240. package/vendor/7zip/CPP/Windows/Control/Edit.h +19 -0
  1241. package/vendor/7zip/CPP/Windows/Control/ImageList.cpp +10 -0
  1242. package/vendor/7zip/CPP/Windows/Control/ImageList.h +87 -0
  1243. package/vendor/7zip/CPP/Windows/Control/ListView.cpp +162 -0
  1244. package/vendor/7zip/CPP/Windows/Control/ListView.h +156 -0
  1245. package/vendor/7zip/CPP/Windows/Control/ProgressBar.h +35 -0
  1246. package/vendor/7zip/CPP/Windows/Control/PropertyPage.cpp +165 -0
  1247. package/vendor/7zip/CPP/Windows/Control/PropertyPage.h +50 -0
  1248. package/vendor/7zip/CPP/Windows/Control/ReBar.h +34 -0
  1249. package/vendor/7zip/CPP/Windows/Control/Static.h +28 -0
  1250. package/vendor/7zip/CPP/Windows/Control/StatusBar.h +42 -0
  1251. package/vendor/7zip/CPP/Windows/Control/StdAfx.h +11 -0
  1252. package/vendor/7zip/CPP/Windows/Control/ToolBar.h +43 -0
  1253. package/vendor/7zip/CPP/Windows/Control/Trackbar.h +27 -0
  1254. package/vendor/7zip/CPP/Windows/Control/Window2.cpp +202 -0
  1255. package/vendor/7zip/CPP/Windows/Control/Window2.h +53 -0
  1256. package/vendor/7zip/CPP/Windows/DLL.cpp +178 -0
  1257. package/vendor/7zip/CPP/Windows/DLL.h +103 -0
  1258. package/vendor/7zip/CPP/Windows/ErrorMsg.cpp +133 -0
  1259. package/vendor/7zip/CPP/Windows/ErrorMsg.h +16 -0
  1260. package/vendor/7zip/CPP/Windows/FileDir.cpp +1388 -0
  1261. package/vendor/7zip/CPP/Windows/FileDir.h +173 -0
  1262. package/vendor/7zip/CPP/Windows/FileFind.cpp +1458 -0
  1263. package/vendor/7zip/CPP/Windows/FileFind.h +345 -0
  1264. package/vendor/7zip/CPP/Windows/FileIO.cpp +1188 -0
  1265. package/vendor/7zip/CPP/Windows/FileIO.h +508 -0
  1266. package/vendor/7zip/CPP/Windows/FileLink.cpp +697 -0
  1267. package/vendor/7zip/CPP/Windows/FileMapping.cpp +12 -0
  1268. package/vendor/7zip/CPP/Windows/FileMapping.h +66 -0
  1269. package/vendor/7zip/CPP/Windows/FileName.cpp +911 -0
  1270. package/vendor/7zip/CPP/Windows/FileName.h +142 -0
  1271. package/vendor/7zip/CPP/Windows/FileSystem.cpp +187 -0
  1272. package/vendor/7zip/CPP/Windows/FileSystem.h +31 -0
  1273. package/vendor/7zip/CPP/Windows/Handle.h +39 -0
  1274. package/vendor/7zip/CPP/Windows/MemoryGlobal.cpp +36 -0
  1275. package/vendor/7zip/CPP/Windows/MemoryGlobal.h +55 -0
  1276. package/vendor/7zip/CPP/Windows/MemoryLock.cpp +127 -0
  1277. package/vendor/7zip/CPP/Windows/MemoryLock.h +40 -0
  1278. package/vendor/7zip/CPP/Windows/Menu.cpp +265 -0
  1279. package/vendor/7zip/CPP/Windows/Menu.h +170 -0
  1280. package/vendor/7zip/CPP/Windows/NationalTime.cpp +37 -0
  1281. package/vendor/7zip/CPP/Windows/NationalTime.h +20 -0
  1282. package/vendor/7zip/CPP/Windows/Net.cpp +398 -0
  1283. package/vendor/7zip/CPP/Windows/Net.h +87 -0
  1284. package/vendor/7zip/CPP/Windows/NtCheck.h +58 -0
  1285. package/vendor/7zip/CPP/Windows/ProcessMessages.cpp +22 -0
  1286. package/vendor/7zip/CPP/Windows/ProcessMessages.h +12 -0
  1287. package/vendor/7zip/CPP/Windows/ProcessUtils.cpp +102 -0
  1288. package/vendor/7zip/CPP/Windows/ProcessUtils.h +138 -0
  1289. package/vendor/7zip/CPP/Windows/PropVariant.cpp +393 -0
  1290. package/vendor/7zip/CPP/Windows/PropVariant.h +173 -0
  1291. package/vendor/7zip/CPP/Windows/PropVariantConv.cpp +274 -0
  1292. package/vendor/7zip/CPP/Windows/PropVariantConv.h +47 -0
  1293. package/vendor/7zip/CPP/Windows/PropVariantUtils.cpp +161 -0
  1294. package/vendor/7zip/CPP/Windows/PropVariantUtils.h +34 -0
  1295. package/vendor/7zip/CPP/Windows/Registry.cpp +474 -0
  1296. package/vendor/7zip/CPP/Windows/Registry.h +96 -0
  1297. package/vendor/7zip/CPP/Windows/ResourceString.cpp +103 -0
  1298. package/vendor/7zip/CPP/Windows/ResourceString.h +17 -0
  1299. package/vendor/7zip/CPP/Windows/SecurityUtils.cpp +186 -0
  1300. package/vendor/7zip/CPP/Windows/SecurityUtils.h +154 -0
  1301. package/vendor/7zip/CPP/Windows/Shell.cpp +839 -0
  1302. package/vendor/7zip/CPP/Windows/Shell.h +129 -0
  1303. package/vendor/7zip/CPP/Windows/StdAfx.h +11 -0
  1304. package/vendor/7zip/CPP/Windows/Synchronization.cpp +87 -0
  1305. package/vendor/7zip/CPP/Windows/Synchronization.h +386 -0
  1306. package/vendor/7zip/CPP/Windows/System.cpp +423 -0
  1307. package/vendor/7zip/CPP/Windows/System.h +209 -0
  1308. package/vendor/7zip/CPP/Windows/SystemInfo.cpp +1312 -0
  1309. package/vendor/7zip/CPP/Windows/SystemInfo.h +19 -0
  1310. package/vendor/7zip/CPP/Windows/Thread.h +46 -0
  1311. package/vendor/7zip/CPP/Windows/TimeUtils.cpp +467 -0
  1312. package/vendor/7zip/CPP/Windows/TimeUtils.h +154 -0
  1313. package/vendor/7zip/CPP/Windows/WinDefs.h +17 -0
  1314. package/vendor/7zip/CPP/Windows/Window.cpp +179 -0
  1315. package/vendor/7zip/CPP/Windows/Window.h +363 -0
  1316. package/vendor/7zip/DOC/7zC.txt +187 -0
  1317. package/vendor/7zip/DOC/7zFormat.txt +469 -0
  1318. package/vendor/7zip/DOC/7zip.hhp +84 -0
  1319. package/vendor/7zip/DOC/7zip.wxs +403 -0
  1320. package/vendor/7zip/DOC/License.txt +151 -0
  1321. package/vendor/7zip/DOC/Methods.txt +177 -0
  1322. package/vendor/7zip/DOC/copying.txt +502 -0
  1323. package/vendor/7zip/DOC/lzma.txt +345 -0
  1324. package/vendor/7zip/DOC/readme.txt +299 -0
  1325. package/vendor/7zip/DOC/src-history.txt +884 -0
  1326. package/vendor/7zip/DOC/unRarLicense.txt +41 -0
  1327. package/vendor/7zip/README.md +2 -0
@@ -0,0 +1,2104 @@
1
+ // Archive/WimIn.cpp
2
+
3
+ #include "StdAfx.h"
4
+
5
+ // #define SHOW_DEBUG_INFO
6
+
7
+ #ifdef SHOW_DEBUG_INFO
8
+ #include <stdio.h>
9
+ #define PRF(x) x
10
+ #else
11
+ #define PRF(x)
12
+ #endif
13
+
14
+ #include "../../../../C/CpuArch.h"
15
+
16
+ #include "../../../Common/IntToString.h"
17
+ #include "../../../Common/StringToInt.h"
18
+ #include "../../../Common/UTFConvert.h"
19
+
20
+ // #include "../../Common/LimitedStreams.h"
21
+ #include "../../Common/StreamObjects.h"
22
+ #include "../../Common/StreamUtils.h"
23
+
24
+ #include "../../Compress/XpressDecoder.h"
25
+
26
+ #include "../Common/OutStreamWithSha1.h"
27
+
28
+ #include "WimIn.h"
29
+
30
+ // #define Z7_WIM_SHOW_DELETED_IMAGES // for debug : define to show deleted images in some old WIMs
31
+
32
+ #define Get16(p) GetUi16a(p) // aligned
33
+ #define Get32(p) GetUi32a(p) // aligned
34
+ #define Get64(p) GetUi64(p) // unaligned
35
+
36
+ #if defined(Z7_MSC_VER_ORIGINAL)
37
+ #define PRINT_UI64(val) PRF(printf(" %9I64x", (UInt64)(val)));
38
+ #else
39
+ #define PRINT_UI64(val) PRF(printf(" %9llx", (unsigned long long)(val)));
40
+ #endif
41
+
42
+ namespace NArchive {
43
+ namespace NWim {
44
+
45
+ // (data) is 4-bytes aligned
46
+ #define IsEmptySha(data) IsEmptySha1_32((const UInt32 *)(const void *)(data))
47
+
48
+ #if 1 // 0 : for debug
49
+ Z7_FORCE_INLINE
50
+ static int COMPARE_HASHES(const UInt32 * const a, const UInt32 * const b)
51
+ {
52
+ Z7_WIM_SHA1_UI32_COMPARE_LESS_EQUAL_GREATER(a, b,
53
+ return -1; ,
54
+ return 0; ,
55
+ return 1; )
56
+ }
57
+ #else
58
+ #define COMPARE_HASHES(a, b) memcmp(a, b, kHashSize)
59
+ #endif
60
+
61
+ static bool inline GetLog_val_min_dest(const UInt32 val, unsigned i, unsigned &dest)
62
+ {
63
+ UInt32 v = (UInt32)1 << i;
64
+ for (; i < 32; i++)
65
+ {
66
+ if (v == val)
67
+ {
68
+ dest = i;
69
+ return true;
70
+ }
71
+ v += v;
72
+ }
73
+ return false;
74
+ }
75
+
76
+
77
+ // (outSize <= (1u << chunkSizeBits))
78
+ // if (method == 0), it returns E_NOTIMPL
79
+ HRESULT CUnpacker::UnpackChunk(const unsigned method, const unsigned chunkSizeBits,
80
+ const size_t inSize, const size_t outSize,
81
+ ISequentialInStream *inStream, ISequentialOutStream *outStream)
82
+ {
83
+ if (method == NMethod::kXPRESS)
84
+ {
85
+ if (chunkSizeBits < 12 || chunkSizeBits > 16)
86
+ return E_NOTIMPL;
87
+ }
88
+ else
89
+ {
90
+ if (chunkSizeBits < 15)
91
+ return E_NOTIMPL;
92
+ if (method == NMethod::kLZX)
93
+ {
94
+ // chunkSizeBits <= 15 : MS
95
+ // chunkSizeBits <= 21 : wimlib
96
+ if (chunkSizeBits > 21)
97
+ return E_NOTIMPL;
98
+ }
99
+ else if (method == NMethod::kLZMS)
100
+ {
101
+ // chunkSizeBits <= 26 : MS
102
+ // chunkSizeBits <= 30 : wimlib
103
+ if (chunkSizeBits > 30)
104
+ return E_NOTIMPL;
105
+ }
106
+ else
107
+ return E_NOTIMPL;
108
+ }
109
+
110
+ const size_t chunkSize = (size_t)1 << chunkSizeBits;
111
+ {
112
+ const unsigned
113
+ kAdditionalOutputBufSize = MyMax(NCompress::NLzx::
114
+ kAdditionalOutputBufSize, NCompress::NXpress::
115
+ kAdditionalOutputBufSize);
116
+ unpackBuf.EnsureCapacity(chunkSize + kAdditionalOutputBufSize);
117
+ if (!unpackBuf.Data)
118
+ return E_OUTOFMEMORY;
119
+ }
120
+ HRESULT res = S_FALSE;
121
+ size_t unpackedSize = 0;
122
+
123
+ if (inSize == outSize)
124
+ {
125
+ unpackedSize = outSize;
126
+ res = ReadStream(inStream, unpackBuf.Data, &unpackedSize);
127
+ TotalPacked += unpackedSize;
128
+ }
129
+ else if (inSize < chunkSize)
130
+ {
131
+ const unsigned kAdditionalInputSize = 32;
132
+ packBuf.EnsureCapacity(chunkSize + kAdditionalInputSize);
133
+ if (!packBuf.Data)
134
+ return E_OUTOFMEMORY;
135
+ RINOK(ReadStream_FALSE(inStream, packBuf.Data, inSize))
136
+ memset(packBuf.Data + inSize, 0xff, kAdditionalInputSize);
137
+
138
+ TotalPacked += inSize;
139
+
140
+ if (method == NMethod::kXPRESS)
141
+ {
142
+ res = NCompress::NXpress::Decode_WithExceedWrite(packBuf.Data, inSize, unpackBuf.Data, outSize);
143
+ if (res == S_OK)
144
+ unpackedSize = outSize;
145
+ }
146
+ else if (method == NMethod::kLZX)
147
+ {
148
+ lzxDecoder.Create_if_Empty();
149
+ lzxDecoder->Set_WimMode(true);
150
+ res = lzxDecoder->Set_ExternalWindow_DictBits(unpackBuf.Data, chunkSizeBits);
151
+ if (res != S_OK)
152
+ return E_NOTIMPL;
153
+ lzxDecoder->Set_KeepHistoryForNext(false);
154
+ lzxDecoder->Set_KeepHistory(false);
155
+ res = lzxDecoder->Code_WithExceedReadWrite(packBuf.Data, inSize, (UInt32)outSize);
156
+ unpackedSize = lzxDecoder->GetUnpackSize();
157
+ if (res == S_OK && !lzxDecoder->WasBlockFinished())
158
+ res = S_FALSE;
159
+ }
160
+ else
161
+ {
162
+ lzmsDecoder.Create_if_Empty();
163
+ res = lzmsDecoder->Code(packBuf.Data, inSize, unpackBuf.Data, outSize);
164
+ unpackedSize = lzmsDecoder->GetUnpackSize();
165
+ }
166
+ }
167
+
168
+ if (unpackedSize != outSize)
169
+ {
170
+ if (res == S_OK)
171
+ res = S_FALSE;
172
+ if (unpackedSize > outSize)
173
+ res = S_FALSE; // is not expected
174
+ else
175
+ memset(unpackBuf.Data + unpackedSize, 0, outSize - unpackedSize);
176
+ }
177
+
178
+ if (outStream)
179
+ RINOK(WriteStream(outStream, unpackBuf.Data, outSize))
180
+ return res;
181
+ }
182
+
183
+
184
+ HRESULT CUnpacker::Unpack2(const CResource &resource,
185
+ const CHeader &header, const CDatabase *db,
186
+ IInStream *inStream, ISequentialOutStream *outStream, ICompressProgressInfo *progress)
187
+ {
188
+ if (resource.IsSolid())
189
+ {
190
+ if (resource.Flags != NResourceFlags::kSolid
191
+ || resource.SolidIndex < 0 || !db)
192
+ return E_NOTIMPL;
193
+
194
+ const CSolid &ss = db->Solids[resource.SolidIndex];
195
+ const unsigned chunkSizeBits = ss.ChunkSizeBits;
196
+ const size_t chunkSize = (size_t)1 << chunkSizeBits;
197
+
198
+ size_t chunkIndex = 0;
199
+ UInt64 rem = ss.UnpackSize;
200
+ size_t offsetInChunk = 0;
201
+
202
+ if (resource.IsSolidSmall())
203
+ {
204
+ UInt64 offs = resource.Offset;
205
+ if (offs < ss.SolidOffset)
206
+ return S_FALSE; // unexpected
207
+ offs -= ss.SolidOffset;
208
+ if (offs > ss.UnpackSize)
209
+ return S_FALSE; // unexpected
210
+ rem = resource.PackSize;
211
+ if (rem > ss.UnpackSize - offs)
212
+ return S_FALSE; // small solid block crosses the end of big solid block
213
+ chunkIndex = (size_t)(offs >> chunkSizeBits);
214
+ offsetInChunk = (size_t)offs & (chunkSize - 1);
215
+ }
216
+
217
+ UInt64 packProcessed = 0;
218
+ UInt64 outProcessed = 0;
219
+
220
+ if (_solidIndex == resource.SolidIndex && _unpackedChunkIndex == chunkIndex)
221
+ {
222
+ size_t cur = chunkSize - offsetInChunk;
223
+ if (cur > rem)
224
+ cur = (size_t)rem;
225
+ RINOK(WriteStream(outStream, unpackBuf.Data + offsetInChunk, cur))
226
+ outProcessed += cur;
227
+ rem -= cur;
228
+ offsetInChunk = 0;
229
+ chunkIndex++;
230
+ }
231
+
232
+ for (;;)
233
+ {
234
+ if (rem == 0)
235
+ return S_OK;
236
+
237
+ const UInt64 offset = ss.Chunks[chunkIndex];
238
+ const size_t packSize = (size_t)(ss.Chunks[(size_t)chunkIndex + 1] - offset);
239
+ const CResource &rs = db->DataStreams[ss.StreamIndex].Resource;
240
+ RINOK(InStream_SeekSet(inStream, rs.Offset + offset))
241
+
242
+ size_t cur = chunkSize;
243
+ const UInt64 unpackRem = ss.UnpackSize - ((UInt64)chunkIndex << chunkSizeBits);
244
+ if (cur > unpackRem)
245
+ cur = (size_t)unpackRem;
246
+
247
+ _solidIndex = -1;
248
+ _unpackedChunkIndex = 0;
249
+
250
+ const HRESULT res = UnpackChunk((unsigned)ss.Method, chunkSizeBits, packSize, cur, inStream, NULL);
251
+ if (res != S_OK)
252
+ {
253
+ // We ignore data errors in solid stream. SHA will show what files are bad.
254
+ if (res != S_FALSE)
255
+ return res;
256
+ }
257
+
258
+ _solidIndex = resource.SolidIndex;
259
+ _unpackedChunkIndex = chunkIndex;
260
+
261
+ if (cur < offsetInChunk)
262
+ return E_FAIL;
263
+ cur -= offsetInChunk;
264
+ if (cur > rem)
265
+ cur = (size_t)rem;
266
+
267
+ RINOK(WriteStream(outStream, unpackBuf.Data + offsetInChunk, cur))
268
+
269
+ if (progress)
270
+ {
271
+ packProcessed += packSize;
272
+ outProcessed += cur;
273
+ RINOK(progress->SetRatioInfo(&packProcessed, &outProcessed))
274
+ }
275
+ rem -= cur;
276
+ offsetInChunk = 0;
277
+ chunkIndex++;
278
+ }
279
+ }
280
+
281
+ // ---------- NON-Solid ----------
282
+
283
+ if (!resource.IsCompressed())
284
+ {
285
+ if (resource.PackSize != resource.UnpackSize)
286
+ return S_FALSE;
287
+ copyCoder.Create_if_Empty();
288
+ RINOK(InStream_SeekSet(inStream, resource.Offset))
289
+ TotalPacked += resource.PackSize;
290
+ #if 1
291
+ HRESULT res = copyCoder.Interface()->Code(inStream, outStream, NULL, &resource.UnpackSize, progress);
292
+ #else
293
+ CMyComPtr2_Create<ISequentialInStream, CLimitedSequentialInStream> limitedStream;
294
+ limitedStream->SetStream(inStream);
295
+ limitedStream->Init(resource.PackSize);
296
+ HRESULT res = copyCoder.Interface()->Code(limitedStream, outStream, NULL, NULL, progress);
297
+ #endif
298
+ if (res == S_OK && copyCoder->TotalSize != resource.UnpackSize)
299
+ res = S_FALSE;
300
+ return res;
301
+ }
302
+
303
+ // ---------- NON-Solid Compressed ----------
304
+
305
+ const UInt64 unpackSize = resource.UnpackSize;
306
+ if (unpackSize == 0)
307
+ {
308
+ if (resource.PackSize == 0)
309
+ return S_OK;
310
+ return S_FALSE;
311
+ }
312
+ if (unpackSize >= ((UInt64)1 << 63))
313
+ return E_NOTIMPL;
314
+
315
+ const unsigned chunkSizeBits = header.ChunkSizeBits;
316
+ const unsigned entrySizeShifts = (unpackSize < ((UInt64)1 << 32) ? 2 : 3);
317
+ // (num_table_entries == num_chunks - 1) because there is no table entry for last chunk.
318
+ const UInt64 tableSize = (unpackSize - 1) >> chunkSizeBits << entrySizeShifts;
319
+ if (tableSize > resource.PackSize)
320
+ return S_FALSE;
321
+
322
+ UInt64 outProcessed = 0, packOffset = 0;
323
+
324
+ for (;;)
325
+ {
326
+ // ---------- Read Pack Offset Table ----------
327
+ size_t bufSize;
328
+ {
329
+ // if (outProcessed >= unpackSize || outProcessed % ((UInt32)1 << chunkSizeBits)) return E_FAIL;
330
+ const UInt64 remTable = (unpackSize - outProcessed - 1) >> chunkSizeBits << entrySizeShifts;
331
+ bufSize = (size_t)8 << 17; // must be a multiple of 8. Use big value to reduce number of table seeks.
332
+ // (size_t)8 << 0; // for debug : many table seeks.
333
+ if (bufSize >= remTable)
334
+ bufSize = (size_t)remTable;
335
+ if (MemUsage + bufSize + ((UInt64)2 << chunkSizeBits) >= MemUsage_Limit)
336
+ return E_OUTOFMEMORY;
337
+ if (bufSize)
338
+ {
339
+ RINOK(InStream_SeekSet(inStream, resource.Offset +
340
+ (outProcessed >> chunkSizeBits << entrySizeShifts)))
341
+ sizesBuf.AllocAtLeast(bufSize);
342
+ RINOK(ReadStream_FALSE(inStream, sizesBuf, bufSize))
343
+ }
344
+ RINOK(InStream_SeekSet(inStream, resource.Offset + tableSize + packOffset))
345
+ }
346
+
347
+ // we clear solid tags to disable cached data in unpackBuf
348
+ _solidIndex = -1;
349
+ _unpackedChunkIndex = 0;
350
+
351
+ // ---------- Unpack Chunks ----------
352
+ const Byte *p = (const Byte *)sizesBuf;
353
+ for (;;)
354
+ {
355
+ UInt64 nextOffset = resource.PackSize - tableSize;
356
+ size_t outSize;
357
+ {
358
+ const UInt64 rem = unpackSize - outProcessed;
359
+ if (rem == 0)
360
+ return S_OK;
361
+ outSize = (size_t)1 << chunkSizeBits;
362
+ if (outSize >= rem) // we use >=, because (rem == (1 << chunkSizeBits)) is last chunk also
363
+ outSize = (size_t)rem; // last chunk of file
364
+ else
365
+ {
366
+ if ((size_t)(p - sizesBuf) >= bufSize)
367
+ break; // we need new table records
368
+ if (entrySizeShifts == 2)
369
+ { nextOffset = GetUi32a(p); p += 4; }
370
+ else
371
+ { nextOffset = GetUi64a(p); p += 8; }
372
+ }
373
+ }
374
+ if (nextOffset < packOffset)
375
+ return S_FALSE;
376
+ const UInt64 inSize64 = nextOffset - packOffset;
377
+ const size_t inSize = (size_t)inSize64;
378
+ if (inSize != inSize64)
379
+ return S_FALSE;
380
+ if (progress)
381
+ RINOK(progress->SetRatioInfo(&packOffset, &outProcessed))
382
+ // if UnpackChunk() returns S_OK, we don't need additional Seek:
383
+ // RINOK(InStream_SeekSet(inStream, resource.Offset + tableSize + packOffset)) // optional
384
+ packOffset = nextOffset;
385
+ outProcessed += outSize;
386
+ RINOK(UnpackChunk(header.Method, chunkSizeBits, inSize, outSize, inStream, outStream))
387
+ }
388
+ }
389
+ }
390
+
391
+
392
+ HRESULT CUnpacker::Unpack(IInStream *inStream, const CResource &resource, const CHeader &header, const CDatabase *db,
393
+ ISequentialOutStream *outStream, ICompressProgressInfo *progress, UInt32 *digest)
394
+ {
395
+ CMyComPtr2_Create<ISequentialOutStream, COutStreamWithSha1> shaStream;
396
+ // outStream can be NULL, so we use COutStreamWithSha1 even if sha1 is not required
397
+ shaStream->SetStream(outStream);
398
+ shaStream->Init(digest != NULL);
399
+ const HRESULT res = Unpack2(resource, header, db, inStream, shaStream, progress);
400
+ if (digest)
401
+ shaStream->Final((Byte *)(void *)digest);
402
+ return res;
403
+ }
404
+
405
+
406
+ HRESULT CUnpacker::UnpackData(IInStream *inStream,
407
+ const CResource &resource, const CHeader &header,
408
+ const CDatabase *db,
409
+ CByteBuffer &buf, UInt32 *digest)
410
+ {
411
+ // if (resource.IsSolid()) return E_NOTIMPL;
412
+ UInt64 unpackSize64 = resource.UnpackSize;
413
+ if (!resource.IsCompressed() && !resource.IsSolid()
414
+ && resource.PackSize != unpackSize64)
415
+ return S_FALSE;
416
+ if (db)
417
+ unpackSize64 = db->Get_UnpackSize_of_Resource(resource);
418
+ const size_t size = (size_t)unpackSize64;
419
+ if (size != unpackSize64)
420
+ return E_OUTOFMEMORY;
421
+ buf.Alloc(size);
422
+
423
+ CMyComPtr2_Create<ISequentialOutStream, CBufPtrSeqOutStream> outStream;
424
+ outStream->Init((Byte *)buf, size);
425
+ return Unpack(inStream, resource, header, db, outStream, NULL, digest);
426
+ }
427
+
428
+
429
+ void CResource::Parse(const Byte *p)
430
+ {
431
+ Flags = p[7];
432
+ PackSize = Get64(p) & (((UInt64)1 << 56) - 1);
433
+ Offset = Get64(p + 8);
434
+ UnpackSize = Get64(p + 16);
435
+ KeepSolid = false;
436
+ SolidIndex = -1;
437
+ }
438
+
439
+ #define GET_RESOURCE(_p_, res) res.ParseAndUpdatePhySize(_p_, phySize)
440
+
441
+ #define UPDATE_MEM_USAGE_WITH_RESOURCE(resource) \
442
+ { if (MemUsage_Limit - MemUsage < resource.UnpackSize) return E_OUTOFMEMORY; \
443
+ MemUsage += resource.UnpackSize; }
444
+
445
+ #define UPDATE_MEM_USAGE(size) \
446
+ { MemUsage += (size); \
447
+ if (MemUsage > MemUsage_Limit) return E_OUTOFMEMORY; }
448
+
449
+
450
+ #define kLongPath "[LONG_PATH]" STRING_PATH_SEPARATOR "[LONG_PATH_ITEM]"
451
+
452
+ // (data) is aligned for 2-bytes
453
+ static bool CheckName_and_Fix_in_Meta(const Byte *data, unsigned numBytes)
454
+ {
455
+ const Byte * const start = data;
456
+ numBytes /= 2;
457
+ if (numBytes)
458
+ do
459
+ {
460
+ if (*(const UInt16 *)(const void *)data == 0)
461
+ {
462
+ SetUi16a(start - 2, (UInt16)(data - start)) // we fix name length in meta
463
+ return false;
464
+ }
465
+ data += 2;
466
+ }
467
+ while (--numBytes);
468
+ if (*(const UInt16 *)(const void *)data)
469
+ {
470
+ *(UInt16 *)(void *)data = 0; // we fix null terminator in meta
471
+ return false;
472
+ }
473
+ return true;
474
+ }
475
+
476
+ // (data) is aligned for 2-bytes
477
+ static void AllocateAndCopyName(const Byte *data, const unsigned numBytes, NWindows::NCOM::CPropVariant &name)
478
+ {
479
+ const unsigned len = numBytes / 2; // Get_Ui16_String_Size(data, numBytes) / 2;
480
+ wchar_t *s = name.AllocBstr(len);
481
+ for (unsigned i = 0; i < len; i++)
482
+ {
483
+ *s++ = Get16(data);
484
+ data += 2;
485
+ }
486
+ *s = 0;
487
+ }
488
+
489
+ // item.ImageIndex >= 0 && !item.IsAltStream
490
+ void CDatabase::GetShortName(const unsigned index, NWindows::NCOM::CPropVariant &name) const
491
+ {
492
+ const CItem &item = Items[index];
493
+ const CImage &image = Images[item.ImageIndex];
494
+ if (image.NeedExcludeItemFromPath_parentIndex(item.Parent))
495
+ {
496
+ name.Clear();
497
+ return;
498
+ }
499
+ const Byte *meta = image.Meta + item.Offset +
500
+ (IsOldVersion ? kDirRecordSizeOld : kDirRecordSize);
501
+ const unsigned len = Get16(meta - 4);
502
+ const size_t fileNameLen = Get16(meta - 2);
503
+ if (fileNameLen)
504
+ meta += fileNameLen + 2;
505
+ AllocateAndCopyName(meta, len, name);
506
+ }
507
+
508
+
509
+ // Items[index].ImageIndex >= 0
510
+ void CDatabase::GetItemName(const unsigned index, NWindows::NCOM::CPropVariant &name) const
511
+ {
512
+ const CItem &item = Items[index];
513
+ const CImage &image = Images[item.ImageIndex];
514
+ if (image.NeedExcludeItemFromPath_parentIndex(item.Parent))
515
+ {
516
+ name = image.RootName;
517
+ return;
518
+ }
519
+ const Byte *meta = image.Meta + GetNameOffset(item);
520
+ const unsigned len = Get16(meta - 2);
521
+ AllocateAndCopyName(meta, len, name);
522
+ }
523
+
524
+ // item.ImageIndex >= 0
525
+ void CDatabase::GetItemPath(const unsigned index1, const bool showImageNumber, NWindows::NCOM::CPropVariant &path) const
526
+ {
527
+ unsigned size = 0;
528
+ int index = (int)index1;
529
+ const int imageIndex = Items[index].ImageIndex;
530
+ const CImage &image = Images[imageIndex];
531
+
532
+ unsigned newLevel = 0;
533
+ bool needColon = false;
534
+
535
+ for (;;)
536
+ {
537
+ const CItem &item = Items[index];
538
+ if (item.DirLevel > (1 << 12))
539
+ {
540
+ path = kLongPath;
541
+ return;
542
+ }
543
+ index = item.Parent;
544
+ if (!image.NeedExcludeItemFromPath_parentIndex(index))
545
+ {
546
+ needColon = item.IsAltStream;
547
+ const Byte *meta = image.Meta + GetNameOffset(item);
548
+ size += Get16(meta - 2) / 2; // Get_Ui16_String_Size(meta, Get16(meta - 2)) / 2;
549
+ size += newLevel;
550
+ newLevel = 1;
551
+ if (size >= ((UInt32)1 << 15))
552
+ {
553
+ path = kLongPath;
554
+ return;
555
+ }
556
+ }
557
+ if (index < 0)
558
+ break;
559
+ }
560
+
561
+ if (showImageNumber)
562
+ {
563
+ size += image.RootName.Len();
564
+ size += newLevel;
565
+ }
566
+ else if (needColon)
567
+ size++;
568
+
569
+ wchar_t *s = path.AllocBstr(size);
570
+ s[size] = 0;
571
+
572
+ if (showImageNumber)
573
+ {
574
+ MyStringCopy(s, (const wchar_t *)image.RootName);
575
+ if (newLevel)
576
+ s[image.RootName.Len()] = (wchar_t)(needColon ? L':' : WCHAR_PATH_SEPARATOR);
577
+ }
578
+ else if (needColon)
579
+ s[0] = L':';
580
+
581
+ index = (int)index1;
582
+ wchar_t separator = 0;
583
+
584
+ for (;;)
585
+ {
586
+ const CItem &item = Items[index];
587
+ index = item.Parent;
588
+ if (!image.NeedExcludeItemFromPath_parentIndex(index))
589
+ {
590
+ if (separator)
591
+ s[--size] = separator;
592
+ const Byte *meta = image.Meta + GetNameOffset(item);
593
+ const size_t len = Get16(meta - 2) / 2; // Get_Ui16_String_Size(meta, Get16(meta - 2)) / 2;
594
+ size -= (unsigned)len;
595
+ wchar_t *dest = s + size;
596
+
597
+ for (size_t i = 0; i < len; i++)
598
+ {
599
+ wchar_t c = Get16(meta + i * 2);
600
+ if (c == L'/')
601
+ c = L'_';
602
+ #if WCHAR_PATH_SEPARATOR != L'/'
603
+ else if (c == L'\\')
604
+ c = WCHAR_IN_FILE_NAME_BACKSLASH_REPLACEMENT; // 22.00 : WSL scheme
605
+ #endif
606
+ dest[i] = c;
607
+ }
608
+ }
609
+ if (index < 0)
610
+ return;
611
+ separator = item.IsAltStream ? L':' : WCHAR_PATH_SEPARATOR;
612
+ }
613
+ }
614
+
615
+
616
+ static const unsigned k_DirRecord_FieldOffset_of_SubdirOffset = 0x10;
617
+ // old wim (IsOld) uses same field for FileId and SubdirOffset:
618
+ static const unsigned k_DirRecord_FieldOffset_of_FileId = k_DirRecord_FieldOffset_of_SubdirOffset; // for IsOld wim
619
+ static const unsigned k_AltRecord_FieldOffset_of_FileId = 8; // for IsOld wim
620
+
621
+ // wim 1.10- : root dir contains real items
622
+ // wim 1.12+ : root dir contains only one dir with empty name
623
+ // (pos <= DirSize) for good archives
624
+ HRESULT CDatabase::ParseDirItem(size_t pos, const int parent, const unsigned dirLevel)
625
+ {
626
+ // if (dirLevel > (1 << 10)) return S_FALSE;
627
+ CImage &image = Images.Back();
628
+ const size_t align = GetDirAlignMask();
629
+ if (pos & align)
630
+ return S_FALSE;
631
+ const unsigned numShifts = GetDirAlign_numShifts();
632
+
633
+ for (unsigned numItems = 0;; numItems++)
634
+ {
635
+ if (OpenCallback && (Items.Size() & 0xFFFF) == 0)
636
+ {
637
+ const UInt64 numFiles = Items.Size();
638
+ RINOK(OpenCallback->SetCompleted(&numFiles, NULL))
639
+ }
640
+ // if (pos & align) throw 1; // optional check
641
+ // (pos & align) == 0
642
+ const size_t rem = DirSize - pos;
643
+ if (pos < DirStartOffset || pos > DirSize || rem < 8 /* || DirSize - DirProcessed < 8 */ )
644
+ return S_FALSE;
645
+ const Byte *p = DirData + pos;
646
+ const UInt64 len64 = Get64(p);
647
+ if (rem < len64 /* || DirSize - DirProcessed < len64 */ )
648
+ return S_FALSE;
649
+ const size_t len = (size_t)len64;
650
+ if (len & align)
651
+ return S_FALSE;
652
+
653
+ #define CHECK_USED_MAP(numBytes) \
654
+ { size_t numChecks = (numBytes) >> numShifts; \
655
+ Byte *used = _useMap + (pos >> numShifts); \
656
+ do { if (*used) return S_FALSE; \
657
+ *used++ = 1; \
658
+ } while (--numChecks); \
659
+ }
660
+ CHECK_USED_MAP(len < 8 ? 8 : len)
661
+ if (len == 0)
662
+ {
663
+ // DirProcessed += 8;
664
+ return S_OK;
665
+ }
666
+ // DirProcessed += len;
667
+ const size_t dirRecordSize = IsOldVersion ? kDirRecordSizeOld : kDirRecordSize;
668
+ if (len < dirRecordSize)
669
+ return S_FALSE;
670
+
671
+ CItem item;
672
+ item.Construct();
673
+ const UInt32 attrib = Get32(p + 8);
674
+ {
675
+ const UInt32 securId = Get32(p + 0xC) + 1;
676
+ if (securId && securId >= image.SecurOffsets.Size())
677
+ HeadersError = true;
678
+ }
679
+ size_t subdirOffset = 0;
680
+ item.IsDir = (attrib & FILE_ATTRIBUTE_DIRECTORY) != 0;
681
+ item.IsDir_NonReparse =
682
+ (attrib & FILE_ATTRIBUTE_DIRECTORY) != 0 &&
683
+ (attrib & FILE_ATTRIBUTE_REPARSE_POINT) == 0;
684
+ if (!IsOldVersion || item.IsDir_NonReparse)
685
+ {
686
+ const UInt64 subdirOffset64 = Get64(p + k_DirRecord_FieldOffset_of_SubdirOffset);
687
+ if (subdirOffset64 > DirSize)
688
+ return S_FALSE;
689
+ subdirOffset = (size_t)subdirOffset64;
690
+ if (!item.IsDir_NonReparse && subdirOffset)
691
+ HeadersError = true;
692
+ }
693
+ p += dirRecordSize;
694
+ const unsigned numAltStreams = Get16(p - 6);
695
+ const size_t shortNameLen = Get16(p - 4);
696
+ size_t fileNameLen = Get16(p - 2);
697
+ if ((shortNameLen & 1) || (fileNameLen & 1))
698
+ return S_FALSE;
699
+ const size_t fileNameLen2 = (fileNameLen == 0 ? fileNameLen : fileNameLen + 2);
700
+ {
701
+ // imagex writes additional 2-bytes NUL character at the end by some reason.
702
+ // dism doesn't write additional bytes.
703
+ const size_t namesSum = fileNameLen2 + (shortNameLen == 0 ? shortNameLen : shortNameLen + 2);
704
+ size_t end = dirRecordSize + namesSum;
705
+ if (end > len)
706
+ return S_FALSE;
707
+ #if 1 // 1 : optional strict check of padding data
708
+ // WIMGAPI and wimlib can store extra records after aligned padding.
709
+ // So we test padding data only up to nearest aligned range:
710
+ for (const Byte *p2 = p + namesSum; end & align; end++)
711
+ if (*p2++)
712
+ HeadersError = true; // optional check of padding
713
+ #endif
714
+ }
715
+ /* if (shortNameLen == 0 && fileNameLen == 0) { then
716
+ dirRecordSize == 62 or 102, and there are at least 2 bytes of padding
717
+ */
718
+ if (!CheckName_and_Fix_in_Meta(p, (unsigned)fileNameLen)
719
+ || (fileNameLen == 0 && shortNameLen != 0))
720
+ {
721
+ HeadersError = true;
722
+ /* position of shortName depends from fileNameLen in meta record.
723
+ if (fileNameLen == 0 && shortNameLen != 0)
724
+ then fileName and shortName are at same address.
725
+ We clear shortName: */
726
+ *(UInt16 *)(void *)(p - 4) = 0; // clear shortNameLen
727
+ fileNameLen = Get16(p - 2); // reload fileNameLen after file name correction
728
+ }
729
+ else if (shortNameLen)
730
+ {
731
+ Byte * const data = (Byte *)(void *)(p + fileNameLen2);
732
+ size_t i = 0;
733
+ for (;;)
734
+ {
735
+ if (*(const UInt16 *)(const void *)(data + i) == 0)
736
+ {
737
+ // return S_FALSE;
738
+ SetUi16a(p - 4, (UInt16)i) // we fix shortNameLen in meta
739
+ HeadersError = true;
740
+ break;
741
+ }
742
+ i += 2;
743
+ if (i >= shortNameLen)
744
+ {
745
+ if (*(const UInt16 *)(const void *)(data + i))
746
+ {
747
+ // return S_FALSE;
748
+ *(UInt16 *)(void *)(data + i) = 0;
749
+ HeadersError = true;
750
+ }
751
+ break;
752
+ }
753
+ }
754
+ }
755
+
756
+ // PRF(printf("\n%S", p));
757
+ UPDATE_MEM_USAGE (sizeof(CItem) * 5 / 4)
758
+ item.Offset = pos;
759
+ item.Parent = parent;
760
+ item.DirLevel = dirLevel;
761
+ item.ImageIndex = (int)Images.Size() - 1;
762
+ const unsigned prevIndex = Items.Add(item);
763
+
764
+ pos += len;
765
+
766
+ for (unsigned i = 0; i < numAltStreams; i++)
767
+ {
768
+ const size_t rem2 = DirSize - pos;
769
+ if (rem2 < 8)
770
+ return S_FALSE;
771
+ const Byte * const p2 = DirData + pos;
772
+ const UInt64 len2_64 = Get64(p2);
773
+ if (rem2 < len2_64 /* || DirSize - DirProcessed < len2_64 */ )
774
+ return S_FALSE;
775
+ const size_t len2 = (size_t)len2_64;
776
+ if (len2 & align)
777
+ return S_FALSE;
778
+ const size_t extraOffset = (IsOldVersion ? 0x12u : 0x26u);
779
+ if (len2 < extraOffset)
780
+ return S_FALSE;
781
+ // DirProcessed += len2;
782
+ CHECK_USED_MAP(len2)
783
+ if (!IsOldVersion && Get64(p2 + 8)) // reserved field
784
+ HeadersError = true; // unknown feature in reserved field
785
+ size_t fileNameLen111 = Get16(p2 + extraOffset - 2);
786
+ if (fileNameLen111 & 1)
787
+ return S_FALSE;
788
+ /* different number of additional ZEROs are possible as padding.
789
+ if (fileNameLen111 == 0) { then record size is not aligned for 4,
790
+ and there is padding. So we can use that padding for NUL character. }
791
+ And we always use (fileNameLen111 + 2) in check: */
792
+ if (((extraOffset + fileNameLen111 + 2 + align) & ~align) > len2)
793
+ return S_FALSE;
794
+ if (!CheckName_and_Fix_in_Meta(p2 + extraOffset, (unsigned)fileNameLen111))
795
+ HeadersError = true; // return S_FALSE;
796
+ fileNameLen111 = Get16(p2 + extraOffset - 2); // reload fileNameLen111 after correction
797
+ // PRF(printf("\n %S", p2 + extraOffset));
798
+ /* wim uses alt streams list, if there is at least one alt stream.
799
+ And alt stream without name is main stream. */
800
+ // Why wimlib writes two alt streams for REPARSE_POINT, with empty second alt stream?
801
+
802
+ Byte *prevMeta = DirData + item.Offset;
803
+
804
+ if (fileNameLen111 == 0
805
+ && !item.IsDir_NonReparse
806
+ && (IsOldVersion || IsEmptySha(prevMeta + k_DirRecord_FieldOffset_of_Hash)))
807
+ {
808
+ if (IsOldVersion)
809
+ memcpy(prevMeta + k_DirRecord_FieldOffset_of_FileId,
810
+ p2 + k_AltRecord_FieldOffset_of_FileId, 8);
811
+ // we use only 32-bit of FileId, but field is 64-bit
812
+ else if (!IsEmptySha(p2 + k_AltRecord_FieldOffset_of_Hash))
813
+ {
814
+ // if (IsEmptySha(prevMeta + k_DirRecord_FieldOffset_of_Hash))
815
+ memcpy(prevMeta + k_DirRecord_FieldOffset_of_Hash,
816
+ p2 + k_AltRecord_FieldOffset_of_Hash, kHashSize);
817
+ // else HeadersError = true;
818
+ }
819
+ }
820
+ else
821
+ {
822
+ UPDATE_MEM_USAGE (sizeof(CItem) * 5 / 4)
823
+ ThereAreAltStreams = true;
824
+ CItem item2;
825
+ item2.Construct();
826
+ item2.Offset = pos;
827
+ item2.IsAltStream = true;
828
+ item2.Parent = (int)prevIndex;
829
+ item2.DirLevel = dirLevel;
830
+ item2.ImageIndex = (int)Images.Size() - 1;
831
+ Items.Add(item2);
832
+ }
833
+
834
+ pos += len2;
835
+ }
836
+
837
+ if (parent < 0 && numItems == 0 && item.IsDir)
838
+ {
839
+ // this item is dir and is first item in root_dir
840
+ if (!IsOldVersion || item.IsDir_NonReparse)
841
+ {
842
+ // (numItems == 0 && item.IsDir)
843
+ const Byte *p2 = DirData + pos;
844
+ if (DirSize - pos >= 8 && Get64(p2) == 0)
845
+ {
846
+ // this item is dir and is first and last item in root_dir
847
+ if (fileNameLen == 0)
848
+ {
849
+ // wim 1.12+ : there is additional root directory with single subdirectory and empty name.
850
+ // we set (NumEmptyRootItems = 1) to allow excluding of that directory item from path.
851
+ image.NumEmptyRootItems = 1;
852
+ }
853
+
854
+ if (DirSize - pos >= 16)
855
+ {
856
+ // there is some space for additional list
857
+ /* imagex and dism decoders probably ignore (subdirOffset) value in root_item,
858
+ and imagex and dism just read next list after the end of root_list.
859
+ imagex and dism encoders: if there are no user items in image,
860
+ image still contains 2 directory lists:
861
+ list_0: root_list with single item: root_item (with empty name)
862
+ list_1: empty_list_1 (just 8 zero bytes)
863
+ but root_item.subdirOffset == 0. So there is no reference to list_1 in root_item.
864
+
865
+ (nextList_pos < subdirOffset) in Longhorn.4093 wim (wim with 3 images: that includes WinPE)
866
+ and there are additional file records between (nextList_pos) and (subdirOffset) in list.
867
+
868
+ we support such cases here:
869
+ */
870
+ const size_t nextList_pos = pos + 8;
871
+ if (subdirOffset == 0 /* && Get64(p2 + 8) == 0 */ // it's usual case for empty wim archive
872
+ || (nextList_pos < subdirOffset && Get64(p2 + 8)) // Longhorn.4093 case
873
+ )
874
+ {
875
+ // we write new (subdirOffset) value in meta record of item:
876
+ SetUi64(DirData + item.Offset + k_DirRecord_FieldOffset_of_SubdirOffset, nextList_pos)
877
+ // printf("\ndirOffset = %5d hiddenOffset = %5d\n", (int)subdirOffset, (int)pos + 8);
878
+ }
879
+ // else DirProcessed += subdirOffset - (pos + 8);
880
+ }
881
+ }
882
+ }
883
+ }
884
+ }
885
+ }
886
+
887
+
888
+ HRESULT CDatabase::ParseImageDirs(CByteBuffer &buf)
889
+ {
890
+ DirData = buf;
891
+ DirSize = buf.Size();
892
+ if (DirSize < 8)
893
+ return S_FALSE;
894
+ size_t pos = 0;
895
+ CImage &image = Images.Back();
896
+ const Byte * const p = DirData;
897
+
898
+ if (IsOldVersion)
899
+ {
900
+ const UInt32 numEntries = Get32(p + 4);
901
+ if (numEntries >= (1 << 28) ||
902
+ numEntries > (DirSize >> 3))
903
+ return S_FALSE;
904
+ UInt32 sum = 8;
905
+ if (numEntries)
906
+ sum = numEntries * 8;
907
+ image.SecurOffsets.ClearAndReserve(numEntries + 1);
908
+ image.SecurOffsets.AddInReserved(sum);
909
+ for (UInt32 i = 0; i < numEntries; i++)
910
+ {
911
+ const Byte *pp = p + (size_t)i * 8;
912
+ const UInt32 len = Get32(pp);
913
+ if (i && Get32(pp + 4))
914
+ return S_FALSE;
915
+ if (len > DirSize - sum)
916
+ return S_FALSE;
917
+ sum += len;
918
+ if (sum < len)
919
+ return S_FALSE;
920
+ image.SecurOffsets.AddInReserved(sum);
921
+ }
922
+ pos = sum;
923
+ const size_t align = GetDirAlignMask();
924
+ pos = (pos + align) & ~(size_t)align;
925
+ }
926
+ else
927
+ {
928
+ const UInt32 totalLen = Get32(p);
929
+ pos = 8;
930
+ if (totalLen)
931
+ {
932
+ if (totalLen < 8)
933
+ return S_FALSE;
934
+ UInt32 numEntries = Get32(p + 4);
935
+ if (totalLen > DirSize || numEntries > ((totalLen - 8) >> 3))
936
+ return S_FALSE;
937
+ UInt32 sum = (UInt32)pos + numEntries * 8;
938
+ numEntries++;
939
+ image.SecurOffsets.ClearAndReserve(numEntries);
940
+ for (;;)
941
+ {
942
+ image.SecurOffsets.AddInReserved(sum);
943
+ if (--numEntries == 0)
944
+ break;
945
+ const UInt64 len = Get64(p + pos);
946
+ pos += 8;
947
+ if (len > totalLen - sum)
948
+ return S_FALSE;
949
+ sum += (UInt32)len;
950
+ }
951
+ pos = sum;
952
+ pos = (pos + 7) & ~(size_t)7;
953
+ if (pos != (((size_t)totalLen + 7) & ~(size_t)7))
954
+ return S_FALSE;
955
+ }
956
+ }
957
+
958
+ if (pos > DirSize)
959
+ return S_FALSE;
960
+ DirStartOffset = /* DirProcessed = */ pos;
961
+ image.StartItem = Items.Size();
962
+ {
963
+ MemUsage -= _useMap.Size();
964
+ const size_t useMapSize = (DirSize + GetDirAlignMask()) >> GetDirAlign_numShifts();
965
+ UPDATE_MEM_USAGE(useMapSize)
966
+ _useMap.Alloc(useMapSize);
967
+ memset(_useMap, 0, _useMap.Size());
968
+ }
969
+ {
970
+ const int parent = -1;
971
+ RINOK(ParseDirItem(pos, parent, 0)) // dirLevel = 0
972
+ }
973
+ {
974
+ for (unsigned i = image.StartItem; i < Items.Size(); i++)
975
+ {
976
+ const CItem &item = Items[i];
977
+ if (item.IsDir)
978
+ if (item.IsDir_NonReparse || !IsOldVersion)
979
+ {
980
+ const UInt64 offset = Get64(image.Meta + item.Offset +
981
+ k_DirRecord_FieldOffset_of_SubdirOffset);
982
+ if (offset)
983
+ RINOK(ParseDirItem((size_t)offset, (int)i, item.DirLevel + 1))
984
+ }
985
+ }
986
+ }
987
+ image.NumItems = Items.Size() - image.StartItem;
988
+
989
+ if (DirSize & GetDirAlignMask())
990
+ HeadersError = true;
991
+ else
992
+ {
993
+ const size_t start = DirStartOffset >> GetDirAlign_numShifts();
994
+ size_t num = _useMap.Size() - start;
995
+ if (num)
996
+ {
997
+ const Byte *used = _useMap + start;
998
+ do
999
+ {
1000
+ if (!*used)
1001
+ {
1002
+ HeadersError = true;
1003
+ break;
1004
+ }
1005
+ used++;
1006
+ }
1007
+ while (--num);
1008
+ }
1009
+ }
1010
+ MemUsage -= _useMap.Size();
1011
+ _useMap.Free();
1012
+ /*
1013
+ if (DirProcessed == DirSize)
1014
+ return S_OK;
1015
+ if (DirProcessed == DirSize - 8 && Get64(p + DirSize - 8) == 0)
1016
+ return S_OK;
1017
+ // 18.06: we support cases, when some old dism can capture images
1018
+ // where DirProcessed much smaller than DirSize
1019
+ HeadersError = true;
1020
+ */
1021
+ return S_OK;
1022
+ }
1023
+
1024
+
1025
+ // (p) is aligned for 4 bytes
1026
+ HRESULT CHeader::Parse(const Byte *p, UInt64 &phySize)
1027
+ {
1028
+ const UInt32 headerSize = GetUi32a(p + 8);
1029
+ phySize = headerSize;
1030
+ {
1031
+ const UInt32 flags = GetUi32a(p + 0x10);
1032
+ Flags = flags;
1033
+ unsigned method = 0;
1034
+ if (flags & NHeaderFlags::kCompression)
1035
+ {
1036
+ const UInt32 mask = flags & NHeaderFlags::kMethodMask;
1037
+ if (mask == NHeaderFlags::kXPRESS ||
1038
+ mask == NHeaderFlags::kXPRESS2) method = NMethod::kXPRESS;
1039
+ else if (mask == NHeaderFlags::kLZX) method = NMethod::kLZX;
1040
+ else if (mask == NHeaderFlags::kLZMS) method = NMethod::kLZMS;
1041
+ else return S_FALSE;
1042
+ }
1043
+ Method = method;
1044
+ }
1045
+ {
1046
+ ChunkSize = GetUi32a(p + 0x14);
1047
+ ChunkSizeBits = kChunkSizeBits;
1048
+ if (ChunkSize)
1049
+ if (!GetLog_val_min_dest(ChunkSize, 12, ChunkSizeBits))
1050
+ return S_FALSE;
1051
+ }
1052
+
1053
+ _isOldVersion = false;
1054
+ _isNewVersion = true;
1055
+ Version = GetUi32a(p + 0x0C);
1056
+ if (!IsSolidVersion())
1057
+ {
1058
+ if (Version < 0x10900)
1059
+ return S_FALSE;
1060
+ _isNewVersion = (Version >= 0x10d00);
1061
+ // We don't know details about 1.11 version. So we use headerSize to guess exact features.
1062
+ if (Version < 0x10b00 || (Version == 0x10b00 && headerSize == 0x60))
1063
+ _isOldVersion = true;
1064
+ }
1065
+
1066
+ BootIndex = 0;
1067
+ unsigned offset;
1068
+
1069
+ if (IsOldVersion())
1070
+ {
1071
+ if (headerSize != 0x60)
1072
+ return S_FALSE;
1073
+ memset(Guid, 0, 16);
1074
+ offset = 0x18;
1075
+ PartNumber = 1;
1076
+ NumParts = 1;
1077
+ }
1078
+ else
1079
+ {
1080
+ if (headerSize < 0x74)
1081
+ return S_FALSE;
1082
+ memcpy(Guid, p + 0x18, 16);
1083
+ PartNumber = Get16(p + 0x28);
1084
+ NumParts = Get16(p + 0x2A);
1085
+ if (PartNumber == 0 || PartNumber > NumParts)
1086
+ return S_FALSE;
1087
+ offset = 0x2C;
1088
+ if (IsNewVersion())
1089
+ {
1090
+ // if (headerSize < 0xD0)
1091
+ if (headerSize != 0xD0)
1092
+ return S_FALSE;
1093
+ NumImages = GetUi32a(p + offset);
1094
+ offset += 4;
1095
+ BootIndex = GetUi32a(p + offset + 0x48);
1096
+ GET_RESOURCE(p + offset + 0x4C, IntegrityResource);
1097
+ }
1098
+ }
1099
+
1100
+ GET_RESOURCE(p + offset , OffsetResource);
1101
+ GET_RESOURCE(p + offset + 0x18, XmlResource);
1102
+ GET_RESOURCE(p + offset + 0x30, MetadataResource);
1103
+
1104
+ return S_OK;
1105
+ }
1106
+
1107
+
1108
+ const Byte kSignature[kSignatureSize] = { 'M', 'S', 'W', 'I', 'M', 0, 0, 0 };
1109
+
1110
+ HRESULT ReadHeader(IInStream *inStream, CHeader &h, UInt64 &phySize)
1111
+ {
1112
+ UInt64 p[(kHeaderSizeMax + 7) / 8];
1113
+ RINOK(ReadStream_FALSE(inStream, p, kHeaderSizeMax))
1114
+ if (memcmp(p, kSignature, kSignatureSize))
1115
+ return S_FALSE;
1116
+ return h.Parse((const Byte *)(const void *)p, phySize);
1117
+ }
1118
+
1119
+ HRESULT CDatabase::OpenXml(IInStream *inStream, const CHeader &h, CByteBuffer &xml)
1120
+ {
1121
+ if (h.XmlResource.UnpackSize >= 1u << 26)
1122
+ return E_OUTOFMEMORY;
1123
+ RINOK(UpdateMemUsage(h.XmlResource.UnpackSize * 4))
1124
+ CUnpacker unpacker;
1125
+ unpacker.MemUsage = MemUsage;
1126
+ unpacker.MemUsage_Limit = MemUsage_Limit;
1127
+ return unpacker.UnpackData(inStream, h.XmlResource, h, this, xml, NULL);
1128
+ }
1129
+
1130
+ static void SetRootNames(CImage &image, const unsigned value /* , bool isDeletedImage */)
1131
+ {
1132
+ char temp[16]; // 32 for deleted
1133
+ // char *e =
1134
+ ConvertUInt32ToString(value, temp);
1135
+ // if (isDeletedImage) MyStringCopy(e, "-DELETED");
1136
+ image.RootName = temp;
1137
+ unsigned len = image.RootName.Len() + 1;
1138
+ image.RootNameBuf.Alloc(len * 2);
1139
+ Byte *dest = image.RootNameBuf;
1140
+ const char *src = temp;
1141
+ do
1142
+ {
1143
+ SetUi16a(dest, (Byte)*src++)
1144
+ dest += 2;
1145
+ }
1146
+ while (--len);
1147
+ }
1148
+
1149
+
1150
+ HRESULT CDatabase::Open(IInStream *inStream, const CHeader &h, unsigned numItemsReserve, IArchiveOpenCallback *openCallback)
1151
+ {
1152
+ OpenCallback = openCallback;
1153
+ IsOldVersion = h.IsOldVersion();
1154
+ IsOldVersion9 = (h.Version == 0x10900);
1155
+
1156
+ #ifdef Z7_WIM_SHOW_DELETED_IMAGES
1157
+ unsigned numDeletedImages = 0; // in MetaStreams
1158
+ #endif
1159
+
1160
+ CUnpacker unpacker;
1161
+ unpacker.MemUsage = MemUsage;
1162
+ unpacker.MemUsage_Limit = MemUsage_Limit;
1163
+ // ---------- Read Streams ----------
1164
+ {
1165
+ CByteBuffer offsetBuf;
1166
+ UPDATE_MEM_USAGE_WITH_RESOURCE(h.OffsetResource)
1167
+ RINOK(unpacker.UnpackData(inStream, h.OffsetResource, h, NULL, offsetBuf, NULL))
1168
+ {
1169
+ const size_t streamInfoSize = h.IsOldVersion() ? kStreamInfoSize + 2 : kStreamInfoSize;
1170
+ const unsigned numItems = (unsigned)(offsetBuf.Size() / streamInfoSize);
1171
+ if ((size_t)numItems * streamInfoSize != offsetBuf.Size())
1172
+ return S_FALSE;
1173
+ const unsigned numItems2 = DataStreams.Size() + numItems;
1174
+ if (numItems2 < numItems)
1175
+ return S_FALSE;
1176
+ DataStreams.Reserve(numItems2);
1177
+ }
1178
+ bool keepSolid = false;
1179
+
1180
+ HRESULT hres = S_OK;
1181
+
1182
+ for (const Byte *p = offsetBuf; p < offsetBuf + offsetBuf.Size();)
1183
+ {
1184
+ // (p) is aligned for 2-bytes
1185
+ CStreamInfo s;
1186
+ s.Resource.Parse(p);
1187
+ if (h.IsOldVersion())
1188
+ {
1189
+ s.PartNumber = 1;
1190
+ s.Id = Get32(p + 24);
1191
+ p += kStreamInfoSize + 2;
1192
+ // (p) is aligned for 4-bytes
1193
+ }
1194
+ else
1195
+ {
1196
+ s.PartNumber = Get16(p + 24);
1197
+ // s.Id = 0; // optional : unused
1198
+ p += kStreamInfoSize;
1199
+ }
1200
+ // (p) is aligned for 2-bytes
1201
+ s.RefCount = GetUi32(p - kHashSize - 4); // it's unaligned for (!h.IsOldVersion())
1202
+ memcpy(s.Hash, p - kHashSize, kHashSize);
1203
+
1204
+ PRF(printf("\n"));
1205
+ PRF(printf("%s", s.Resource.IsMetadata() ? "### META" : " DATA"));
1206
+ PRF(printf(" %2x", (unsigned)s.Resource.Flags));
1207
+ PRINT_UI64(s.Resource.Offset)
1208
+ PRINT_UI64(s.Resource.PackSize)
1209
+ PRINT_UI64(s.Resource.UnpackSize)
1210
+ PRF(printf(" %5u", (unsigned)s.RefCount));
1211
+ PRF(fflush(stdout);)
1212
+
1213
+ if (s.Resource.AreUnknownFlags())
1214
+ HeadersError = true;
1215
+
1216
+ if (s.PartNumber != h.PartNumber)
1217
+ continue; // is it possible in real archive, or it's error in header?
1218
+
1219
+ if (s.Resource.IsSolid())
1220
+ {
1221
+ s.Resource.KeepSolid = keepSolid;
1222
+ keepSolid = true;
1223
+ }
1224
+ else
1225
+ {
1226
+ s.Resource.KeepSolid = false;
1227
+ keepSolid = false;
1228
+ }
1229
+
1230
+ UPDATE_MEM_USAGE(sizeof(CStreamInfo))
1231
+ if (!s.Resource.IsMetadata())
1232
+ {
1233
+ DataStreams.AddInReserved(s);
1234
+ continue;
1235
+ }
1236
+ {
1237
+ // s.Resource.IsMetadata() == true
1238
+ if (s.Resource.IsSolid())
1239
+ {
1240
+ hres = S_FALSE; // E_NOTIMPL;
1241
+ HeadersError = true;
1242
+ continue;
1243
+ }
1244
+ if (s.RefCount == 0)
1245
+ {
1246
+ // some wims have such (deleted?) metadata stream.
1247
+ // examples: boot.wim in VistaBeta2, WinPE.wim from WAIK.
1248
+ #ifndef Z7_WIM_SHOW_DELETED_IMAGES
1249
+ // HeadersError = true; // v26.04: we can show error for that case.
1250
+ continue;
1251
+ #endif
1252
+ }
1253
+ if (s.RefCount > 1)
1254
+ {
1255
+ hres = S_FALSE;
1256
+ HeadersError = true;
1257
+ continue;
1258
+ // s.RefCount--;
1259
+ // DataStreams.Add(s);
1260
+ }
1261
+
1262
+ // DOCS: the first part will always contain all metadata resources
1263
+ // so we ignore another Meta Streams.
1264
+ if (s.PartNumber == 1 /* && h.PartNumber == 1 */)
1265
+ {
1266
+ if (s.Resource.UnpackSize >= (UInt64)1 << 48) return E_OUTOFMEMORY;
1267
+ UPDATE_MEM_USAGE_WITH_RESOURCE(s.Resource)
1268
+ #ifdef Z7_WIM_SHOW_DELETED_IMAGES
1269
+ // we insert non-deleted images before deleted images:
1270
+ unsigned insertPos = MetaStreams.Size();
1271
+ if (s.RefCount == 0)
1272
+ numDeletedImages++;
1273
+ else
1274
+ insertPos -= numDeletedImages;
1275
+ MetaStreams.Insert(insertPos, s);
1276
+ #else
1277
+ MetaStreams.Add(s);
1278
+ #endif
1279
+ }
1280
+ else
1281
+ {
1282
+ HeadersError = true;
1283
+ continue;
1284
+ }
1285
+ }
1286
+ }
1287
+ RINOK(hres)
1288
+ PRF(printf("\n"));
1289
+ }
1290
+ MemUsage -= h.OffsetResource.UnpackSize;
1291
+
1292
+ bool needBootMetadata = !h.MetadataResource.IsEmpty();
1293
+ if (h.PartNumber == 1)
1294
+ {
1295
+ // ---------- Parse MetaStreams ----------
1296
+ // Meta must be stored only in first volume. We ignore another Meta Streams.
1297
+ unsigned numNonDeletedImages = 0;
1298
+ if (h.IsNewVersion() && MetaStreams.Size() != h.NumImages
1299
+ #ifdef Z7_WIM_SHOW_DELETED_IMAGES
1300
+ + numDeletedImages
1301
+ #endif
1302
+ )
1303
+ HeadersError = true;
1304
+
1305
+ FOR_VECTOR (i, MetaStreams)
1306
+ {
1307
+ const CStreamInfo &si = MetaStreams[i];
1308
+ if (si.PartNumber != h.PartNumber)
1309
+ continue; // is not expected case, because we fill MetaStreams[] only for (PartNumber == 1)
1310
+ si.Resource.UpdatePhySize(PhySize);
1311
+
1312
+ const unsigned userImage = Images.Size() + GetStartImageIndex();
1313
+ CImage &image = Images.AddNew();
1314
+ SetRootNames(image, userImage /* , i >= MetaStreams.Size() - numDeletedImages */);
1315
+
1316
+ CByteBuffer &metadata = image.Meta;
1317
+ UInt32 hash[kHashSize / 4];
1318
+
1319
+ RINOK(unpacker.UnpackData(inStream, si.Resource, h, this, metadata, hash))
1320
+
1321
+ if (COMPARE_HASHES(hash, si.Hash) &&
1322
+ !(h.IsOldVersion() && si.IsEmptyHash()))
1323
+ return S_FALSE;
1324
+
1325
+ image.NumEmptyRootItems = 0;
1326
+
1327
+ if (Items.IsEmpty())
1328
+ Items.ClearAndReserve(numItemsReserve);
1329
+
1330
+ RINOK(ParseImageDirs(metadata))
1331
+
1332
+ if (needBootMetadata)
1333
+ {
1334
+ const bool sameRes = (h.MetadataResource.Offset == si.Resource.Offset);
1335
+ if (sameRes)
1336
+ {
1337
+ if ( h.MetadataResource.UnpackSize != si.Resource.UnpackSize
1338
+ || h.MetadataResource.PackSize != si.Resource.PackSize
1339
+ || h.MetadataResource.Flags != si.Resource.Flags)
1340
+ return S_FALSE;
1341
+ needBootMetadata = false;
1342
+ }
1343
+ if (h.IsNewVersion())
1344
+ {
1345
+ if (si.RefCount == 1)
1346
+ {
1347
+ numNonDeletedImages++;
1348
+ const bool isBootIndex = (h.BootIndex == numNonDeletedImages);
1349
+ if (sameRes != isBootIndex)
1350
+ return S_FALSE;
1351
+ }
1352
+ }
1353
+ }
1354
+ }
1355
+ }
1356
+ if (needBootMetadata)
1357
+ return S_FALSE;
1358
+ return S_OK;
1359
+ }
1360
+
1361
+
1362
+ bool CDatabase::ItemHasStream(const CItem &item) const
1363
+ {
1364
+ if (item.ImageIndex < 0)
1365
+ return true;
1366
+ const Byte *meta = Images[item.ImageIndex].Meta + item.Offset;
1367
+ if (IsOldVersion)
1368
+ {
1369
+ // old wim uses same field for file_id and dir_offset;
1370
+ // if (item.IsDir)
1371
+ if (item.IsDir_NonReparse)
1372
+ return false;
1373
+ meta += item.IsAltStream ?
1374
+ k_AltRecord_FieldOffset_of_FileId :
1375
+ k_DirRecord_FieldOffset_of_FileId;
1376
+ const UInt32 id = Get32(meta);
1377
+ return id != 0;
1378
+ }
1379
+ meta += item.GetHashFieldOffset();
1380
+ return !IsEmptySha(meta);
1381
+ }
1382
+
1383
+
1384
+ #define RINOZ(x) { int _tt_ = (x); if (_tt_ != 0) return _tt_; }
1385
+
1386
+ static int CompareStreamsByPos(const CStreamInfo *p1, const CStreamInfo *p2, void * /* param */)
1387
+ {
1388
+ RINOZ(MyCompare(p1->PartNumber, p2->PartNumber))
1389
+ RINOZ(MyCompare(p1->Resource.Offset, p2->Resource.Offset))
1390
+ return MyCompare(p1->Resource.PackSize, p2->Resource.PackSize);
1391
+ }
1392
+
1393
+ static int CompareIDs(const unsigned *p1, const unsigned *p2, void *param)
1394
+ {
1395
+ const CStreamInfo *streams = (const CStreamInfo *)param;
1396
+ return MyCompare(streams[*p1].Id, streams[*p2].Id);
1397
+ }
1398
+
1399
+
1400
+ /* CompareHashRefs() and FindHash() must use same comparison function for hash values.
1401
+ So we use COMPARE_HASHES() in these functions */
1402
+
1403
+ static int CompareHashRefs(const unsigned *p1, const unsigned *p2, void *param)
1404
+ {
1405
+ const CStreamInfo *streams = (const CStreamInfo *)param;
1406
+ return COMPARE_HASHES(streams[*p1].Hash, streams[*p2].Hash);
1407
+ }
1408
+
1409
+ static int FindId(const CStreamInfo *streams, const CUIntVector &sorted, const UInt32 id)
1410
+ {
1411
+ unsigned left = 0, right = sorted.Size();
1412
+ while (left != right)
1413
+ {
1414
+ const unsigned mid = (left + right) / 2;
1415
+ const unsigned streamIndex = sorted[mid];
1416
+ const UInt32 id2 = streams[streamIndex].Id;
1417
+ if (id == id2)
1418
+ return (int)streamIndex;
1419
+ if (id < id2)
1420
+ right = mid;
1421
+ else
1422
+ left = mid + 1;
1423
+ }
1424
+ return -1;
1425
+ }
1426
+
1427
+ static int FindHash(const CStreamInfo *streams, const CUIntVector &sorted, const Byte * const hash)
1428
+ {
1429
+ unsigned left = 0, right = sorted.Size();
1430
+ while (left != right)
1431
+ {
1432
+ const unsigned mid = (left + right) / 2;
1433
+ const unsigned streamIndex = sorted[mid];
1434
+ #if 1 // 0 : for debug
1435
+ const int comp = COMPARE_HASHES((const UInt32 *)(const void *)hash, streams[streamIndex].Hash);
1436
+ if (comp == 0)
1437
+ return (int)streamIndex;
1438
+ if (comp < 0)
1439
+ right = mid;
1440
+ else
1441
+ left = mid + 1;
1442
+ #else
1443
+ // we can us it only if CompareHashRefs() also uses Z7_WIM_SHA1_UI32_COMPARE_LESS_EQUAL_GREATER
1444
+ Z7_WIM_SHA1_UI32_COMPARE_LESS_EQUAL_GREATER(
1445
+ (const UInt32 *)(const void *)hash, streams[streamIndex].Hash,
1446
+ right = mid; ,
1447
+ return (int)streamIndex; ,
1448
+ left = mid + 1; )
1449
+ #endif
1450
+ }
1451
+ return -1;
1452
+ }
1453
+
1454
+ static int CompareItems(const unsigned *a1, const unsigned *a2, void *param)
1455
+ {
1456
+ const CRecordVector<CItem> &items = ((CDatabase *)param)->Items;
1457
+ const CItem &i1 = items[*a1];
1458
+ const CItem &i2 = items[*a2];
1459
+
1460
+ if (i1.IsDir != i2.IsDir)
1461
+ return i1.IsDir ? -1 : 1;
1462
+ if (i1.IsDir_NonReparse != i2.IsDir_NonReparse)
1463
+ return i1.IsDir_NonReparse ? -1 : 1;
1464
+ if (i1.IsAltStream != i2.IsAltStream)
1465
+ return i1.IsAltStream ? 1 : -1;
1466
+ RINOZ(MyCompare(i1.StreamIndex, i2.StreamIndex))
1467
+ RINOZ(MyCompare(i1.ImageIndex, i2.ImageIndex))
1468
+ return MyCompare(i1.Offset, i2.Offset);
1469
+ }
1470
+
1471
+
1472
+ HRESULT CDatabase::FillAndCheck(const CObjectVector<CVolume> &volumes)
1473
+ {
1474
+ CUIntVector sortedByHash;
1475
+ sortedByHash.Reserve(DataStreams.Size());
1476
+ {
1477
+ for (unsigned iii = 0; iii < DataStreams.Size();)
1478
+ {
1479
+ if (!DataStreams[iii].Resource.IsSolid())
1480
+ {
1481
+ sortedByHash.AddInReserved(iii++);
1482
+ continue;
1483
+ }
1484
+
1485
+ // We process all current SolidBig streams inside current solid group.
1486
+
1487
+ UInt64 solidRunOffset = 0;
1488
+ const unsigned numSolidsStart = Solids.Size(); // start of current solid group
1489
+ unsigned k;
1490
+ for (k = iii; k < DataStreams.Size(); k++)
1491
+ {
1492
+ CStreamInfo &si = DataStreams[k];
1493
+ CResource &r = si.Resource;
1494
+ if (!r.IsSolid())
1495
+ break;
1496
+ if (!r.KeepSolid && k != iii)
1497
+ break;
1498
+ if (r.Flags != NResourceFlags::kSolid)
1499
+ return S_FALSE;
1500
+ if (!r.IsSolidBig())
1501
+ continue;
1502
+ if (!si.IsEmptyHash() || si.RefCount != 1)
1503
+ return S_FALSE;
1504
+
1505
+ r.SolidIndex = (int)Solids.Size();
1506
+ CSolid &ss = Solids.AddNew();
1507
+ ss.StreamIndex = k;
1508
+ ss.SolidOffset = solidRunOffset;
1509
+ {
1510
+ const size_t kSolidHeaderSize = 8 + 4 + 4;
1511
+ UInt64 header64[kSolidHeaderSize / 8];
1512
+
1513
+ if (si.PartNumber >= volumes.Size())
1514
+ return S_FALSE;
1515
+ IInStream *inStream = volumes[si.PartNumber].Stream;
1516
+ RINOK(InStream_SeekSet(inStream, r.Offset))
1517
+ RINOK(ReadStream_FALSE(inStream, header64, kSolidHeaderSize))
1518
+
1519
+ ss.UnpackSize = GetUi64(header64);
1520
+ if (ss.UnpackSize >= ((UInt64)1 << 63))
1521
+ return S_FALSE;
1522
+ solidRunOffset += ss.UnpackSize;
1523
+ if (solidRunOffset < ss.UnpackSize)
1524
+ return S_FALSE;
1525
+
1526
+ const UInt32 solidChunkSize = GetUi32a((const Byte *)(const void *)header64 + 8);
1527
+ if (!GetLog_val_min_dest(solidChunkSize, 12, ss.ChunkSizeBits)) // min: 12 for XPRESS, 15 for LZX/LZMS
1528
+ return S_FALSE;
1529
+ ss.Method = (Int32)GetUi32a((const Byte *)(const void *)header64 + 12);
1530
+
1531
+ const UInt64 numChunks64 = (ss.UnpackSize + (((UInt32)1 << ss.ChunkSizeBits) - 1)) >> ss.ChunkSizeBits;
1532
+ const UInt64 sizesBufSize64 = 4 * numChunks64;
1533
+ UInt64 offset = kSolidHeaderSize + sizesBufSize64;
1534
+ if (offset > r.PackSize)
1535
+ return S_FALSE;
1536
+ const size_t sizesBufSize = (size_t)sizesBufSize64;
1537
+ if (sizesBufSize != sizesBufSize64)
1538
+ return E_OUTOFMEMORY;
1539
+ UPDATE_MEM_USAGE(numChunks64 * sizeof(ss.Chunks[0]) + sizeof(CSolid) / 4 * 5 + 32)
1540
+
1541
+ size_t numItems = (size_t)numChunks64 + 1;
1542
+ ss.Chunks.Alloc(numItems);
1543
+
1544
+ UInt32 *packSizes = (UInt32 *)(void *)
1545
+ ((Byte *)(void *)(ss.Chunks + numItems) - sizesBufSize);
1546
+ RINOK(ReadStream_FALSE(inStream, packSizes, sizesBufSize))
1547
+ UInt64 *chunks = ss.Chunks;
1548
+
1549
+ for (;;)
1550
+ {
1551
+ *chunks++ = offset;
1552
+ if (--numItems == 0)
1553
+ break;
1554
+ const UInt32 packSize = GetUi32a(packSizes);
1555
+ packSizes++;
1556
+ offset += packSize;
1557
+ if (offset < packSize)
1558
+ return S_FALSE;
1559
+ }
1560
+ if (offset != r.PackSize)
1561
+ return S_FALSE;
1562
+ // if ((void *)chunks != (void *)packSizes) return E_FAIL;
1563
+ }
1564
+ }
1565
+
1566
+ // We process all SolidSmall streams inside latest Solids[] solid group
1567
+
1568
+ for (; iii < k; iii++)
1569
+ {
1570
+ CStreamInfo &si = DataStreams[iii];
1571
+ CResource &r = si.Resource;
1572
+ if (!r.IsSolidSmall())
1573
+ continue;
1574
+ if (si.IsEmptyHash())
1575
+ return S_FALSE;
1576
+ unsigned left = numSolidsStart;
1577
+ unsigned right = Solids.Size();
1578
+ for (;;)
1579
+ {
1580
+ if (left == right)
1581
+ return S_FALSE;
1582
+ const unsigned mid = (unsigned)(((size_t)left + (size_t)right) / 2);
1583
+ CSolid &ss = Solids[mid];
1584
+ if (r.Offset < ss.SolidOffset)
1585
+ {
1586
+ right = mid;
1587
+ continue;
1588
+ }
1589
+ if (r.Offset - ss.SolidOffset < ss.UnpackSize)
1590
+ {
1591
+ r.SolidIndex = (int)mid;
1592
+ if (ss.FirstSmallStream < 0)
1593
+ ss.FirstSmallStream = (int)iii;
1594
+ break;
1595
+ }
1596
+ left = mid + 1;
1597
+ }
1598
+ sortedByHash.AddInReserved(iii);
1599
+ // ss.NumRefs++;
1600
+ }
1601
+ }
1602
+ }
1603
+
1604
+ if (Solids.IsEmpty())
1605
+ {
1606
+ // ---------- NON-SOLID ARCHIVE ----------
1607
+ if (sortedByHash.Size() != DataStreams.Size())
1608
+ return E_FAIL;
1609
+ /* sortedByHash[] contains all indexes that refer to DataStreams[].
1610
+ So we can change order of DataStreams[] items here with sorting.
1611
+
1612
+ We sort DataStreams[] by [PartNumber, Offset, PackSize] fields.
1613
+ And then we check streams for overlapping.
1614
+ NOTE: another our code can work with non-sorted streams.
1615
+ NOTE: all WIM programs probably create wim archives with
1616
+ sorted data streams. So it doesn't call Sort() here. */
1617
+ {
1618
+ unsigned i;
1619
+ for (i = 1; i < DataStreams.Size(); i++)
1620
+ {
1621
+ const CStreamInfo &s0 = DataStreams[i - 1];
1622
+ const CStreamInfo &s1 = DataStreams[i];
1623
+ if (s0.PartNumber < s1.PartNumber) continue;
1624
+ if (s0.PartNumber > s1.PartNumber) break;
1625
+ if (s0.Resource.Offset < s1.Resource.Offset) continue;
1626
+ if (s0.Resource.Offset > s1.Resource.Offset) break;
1627
+ if (s0.Resource.PackSize > s1.Resource.PackSize) break;
1628
+ }
1629
+ if (i < DataStreams.Size())
1630
+ {
1631
+ // return E_FAIL;
1632
+ DataStreams.Sort(CompareStreamsByPos, NULL);
1633
+ }
1634
+ }
1635
+ for (unsigned i = 1; i < DataStreams.Size(); i++)
1636
+ {
1637
+ const CStreamInfo &s0 = DataStreams[i - 1];
1638
+ const CStreamInfo &s1 = DataStreams[i];
1639
+ if (s0.PartNumber == s1.PartNumber &&
1640
+ s0.Resource.GetEndLimit() > s1.Resource.Offset)
1641
+ return S_FALSE;
1642
+ }
1643
+ }
1644
+
1645
+ // ---------- SORTING BY HASH ----------
1646
+ {
1647
+ const CStreamInfo *streams = DataStreams.ConstData();
1648
+ if (IsOldVersion)
1649
+ {
1650
+ sortedByHash.Sort(CompareIDs, (void *)streams);
1651
+ for (unsigned i = 1; i < sortedByHash.Size(); i++)
1652
+ if (streams[sortedByHash[i - 1]].Id >=
1653
+ streams[sortedByHash[i]].Id)
1654
+ return S_FALSE;
1655
+ }
1656
+ else
1657
+ {
1658
+ sortedByHash.Sort(CompareHashRefs, (void *)streams);
1659
+ if (!sortedByHash.IsEmpty())
1660
+ {
1661
+ if (streams[sortedByHash[0]].IsEmptyHash())
1662
+ HeadersError = true;
1663
+ for (unsigned i = 1; i < sortedByHash.Size(); i++)
1664
+ if (COMPARE_HASHES(
1665
+ streams[sortedByHash[i - 1]].Hash,
1666
+ streams[sortedByHash[i]].Hash
1667
+ ) >= 0)
1668
+ return S_FALSE;
1669
+ }
1670
+ }
1671
+ }
1672
+ // ---------- FIND index by HASH ----------
1673
+ {
1674
+ FOR_VECTOR (i, Items)
1675
+ {
1676
+ CItem &item = Items[i];
1677
+ item.StreamIndex = -1;
1678
+ const Byte *hash = Images[item.ImageIndex].Meta + item.Offset;
1679
+ if (IsOldVersion)
1680
+ {
1681
+ // if (!item.IsDir)
1682
+ if (!item.IsDir_NonReparse)
1683
+ {
1684
+ hash += item.IsAltStream ?
1685
+ k_AltRecord_FieldOffset_of_FileId :
1686
+ k_DirRecord_FieldOffset_of_FileId;
1687
+ const UInt32 id = Get32(hash);
1688
+ if (id)
1689
+ item.StreamIndex = FindId(DataStreams.ConstData(), sortedByHash, id);
1690
+ }
1691
+ }
1692
+ /*
1693
+ else if (item.IsDir)
1694
+ {
1695
+ // reparse points can have dirs some dir
1696
+ }
1697
+ */
1698
+ else
1699
+ {
1700
+ hash += item.GetHashFieldOffset();
1701
+ if (!IsEmptySha(hash))
1702
+ item.StreamIndex = FindHash(DataStreams.ConstData(), sortedByHash, hash);
1703
+ }
1704
+ }
1705
+ }
1706
+ // ---------- REF COUNTING ----------
1707
+ {
1708
+ CUIntVector refCounts;
1709
+ refCounts.ClearAndSetSize(DataStreams.Size());
1710
+ unsigned i;
1711
+
1712
+ for (i = 0; i < DataStreams.Size(); i++)
1713
+ {
1714
+ UInt32 startVal = 0;
1715
+ // const CStreamInfo &s = DataStreams[i];
1716
+ /*
1717
+ if (s.Resource.IsMetadata() && s.PartNumber == 1)
1718
+ startVal = 1;
1719
+ */
1720
+ refCounts[i] = startVal;
1721
+ }
1722
+
1723
+ for (i = 0; i < Items.Size(); i++)
1724
+ {
1725
+ const int streamIndex = Items[i].StreamIndex;
1726
+ if (streamIndex >= 0)
1727
+ refCounts[streamIndex]++;
1728
+ }
1729
+
1730
+ for (i = 0; i < DataStreams.Size(); i++)
1731
+ {
1732
+ const CStreamInfo &s = DataStreams[i];
1733
+ if (s.RefCount != refCounts[i]
1734
+ && !s.Resource.IsSolidBig())
1735
+ {
1736
+ /*
1737
+ printf("\ni=%5d si.Ref=%2d realRefs=%2d size=%8d offset=%8x id=%4d ",
1738
+ i, s.RefCount, refCounts[i], (unsigned)s.Resource.UnpackSize, (unsigned)s.Resource.Offset, s.Id);
1739
+ */
1740
+ RefCountError = true;
1741
+ }
1742
+
1743
+ if (refCounts[i] == 0)
1744
+ {
1745
+ const CResource &r = DataStreams[i].Resource;
1746
+ if (!r.IsSolidBig() || Solids[r.SolidIndex].FirstSmallStream < 0)
1747
+ {
1748
+ // ---------- Add DELETED ITEM ----------
1749
+ CItem item;
1750
+ item.Construct();
1751
+ item.Offset = 0;
1752
+ item.StreamIndex = (int)i;
1753
+ item.ImageIndex = -1;
1754
+ Items.Add(item);
1755
+ ThereAreDeletedStreams = true;
1756
+ }
1757
+ }
1758
+ }
1759
+ }
1760
+
1761
+ return S_OK;
1762
+ }
1763
+
1764
+
1765
+ HRESULT CDatabase::GenerateSortedItems(const int imageIndex, bool showImageNumber)
1766
+ {
1767
+ SortedItems.Clear();
1768
+ VirtualRoots.Clear();
1769
+ IndexOfUserImage = imageIndex;
1770
+ NumExcludededItems = 0;
1771
+ ExcludedItem = -1;
1772
+
1773
+ unsigned startItem = 0;
1774
+ unsigned endItem = 0;
1775
+
1776
+ if (imageIndex < 0)
1777
+ {
1778
+ endItem = Items.Size();
1779
+ if (Images.Size() == 1)
1780
+ {
1781
+ IndexOfUserImage = 0;
1782
+ const CImage &image = Images[0];
1783
+ if (!showImageNumber)
1784
+ NumExcludededItems = image.NumEmptyRootItems;
1785
+ }
1786
+ else
1787
+ {
1788
+ // (Images.Size() != 1 && imageIndex < 0)
1789
+ #if 1 // optional code
1790
+ // it's expected that already set (showImageNumber = true) for that case.
1791
+ showImageNumber = true;
1792
+ #endif
1793
+ // showImageNumber = false; // for debug
1794
+ }
1795
+ }
1796
+ else if ((unsigned)imageIndex < Images.Size())
1797
+ {
1798
+ const CImage &image = Images[imageIndex];
1799
+ startItem = image.StartItem;
1800
+ endItem = startItem + image.NumItems;
1801
+ if (!showImageNumber)
1802
+ NumExcludededItems = image.NumEmptyRootItems;
1803
+ }
1804
+
1805
+ if (NumExcludededItems)
1806
+ {
1807
+ ExcludedItem = (int)startItem;
1808
+ startItem += NumExcludededItems;
1809
+ }
1810
+
1811
+ const unsigned num = endItem - startItem;
1812
+ SortedItems.ClearAndSetSize(num);
1813
+ unsigned i;
1814
+ for (i = 0; i < num; i++)
1815
+ SortedItems[i] = startItem + i;
1816
+
1817
+ SortedItems.Sort(CompareItems, this);
1818
+ for (i = 0; i < SortedItems.Size(); i++)
1819
+ Items[SortedItems[i]].IndexInSorted = (int)i;
1820
+
1821
+ if (showImageNumber)
1822
+ for (i = 0; i < Images.Size(); i++)
1823
+ {
1824
+ CImage &image = Images[i];
1825
+ if (image.NumEmptyRootItems == 0)
1826
+ {
1827
+ // 1.10- archives
1828
+ image.VirtualRootIndex = (int)VirtualRoots.Size();
1829
+ VirtualRoots.Add(i);
1830
+ }
1831
+ }
1832
+
1833
+ return S_OK;
1834
+ }
1835
+
1836
+
1837
+ static void IntVector_SetMinusOne_IfNeed(CIntVector &v, unsigned size)
1838
+ {
1839
+ if (v.Size() == size)
1840
+ return;
1841
+ v.ClearAndSetSize(size);
1842
+ int *vals = &v[0];
1843
+ for (unsigned i = 0; i < size; i++)
1844
+ vals[i] = -1;
1845
+ }
1846
+
1847
+
1848
+ bool CDatabase::Check_PartNumber_in_Items(unsigned numVolumes) const
1849
+ {
1850
+ // maybe it's better to check all Items[] or all DataStreams[] items instead
1851
+ FOR_VECTOR (indexInSorted, SortedItems)
1852
+ {
1853
+ const unsigned itemIndex = SortedItems[indexInSorted];
1854
+ const CItem &item = Items[itemIndex];
1855
+ if (item.StreamIndex < 0)
1856
+ continue;
1857
+ const CStreamInfo &si = DataStreams[item.StreamIndex];
1858
+ if (si.PartNumber >= numVolumes)
1859
+ return false;
1860
+ }
1861
+ return true;
1862
+ }
1863
+
1864
+ HRESULT CDatabase::ExtractReparseStreams(const CObjectVector<CVolume> &volumes, IArchiveOpenCallback *openCallback)
1865
+ {
1866
+ ItemToReparse.Clear();
1867
+ ReparseItems.Clear();
1868
+
1869
+ // we don't know about Reparse field for OLD WIM format
1870
+ if (IsOldVersion)
1871
+ return S_OK;
1872
+
1873
+ CIntVector streamToReparse;
1874
+ CUnpacker unpacker;
1875
+ unpacker.MemUsage = MemUsage;
1876
+ unpacker.MemUsage_Limit = MemUsage_Limit;
1877
+ UInt64 totalPackedPrev = 0;
1878
+
1879
+ FOR_VECTOR (indexInSorted, SortedItems)
1880
+ {
1881
+ // we use sorted items for faster access
1882
+ const unsigned itemIndex = SortedItems[indexInSorted];
1883
+ const CItem &item = Items[itemIndex];
1884
+
1885
+ if (!item.HasMetadata() || item.IsAltStream)
1886
+ continue;
1887
+
1888
+ if (item.ImageIndex < 0)
1889
+ continue;
1890
+
1891
+ const Byte *metadata = Images[item.ImageIndex].Meta + item.Offset;
1892
+
1893
+ const UInt32 attrib = Get32(metadata + 8);
1894
+ if ((attrib & FILE_ATTRIBUTE_REPARSE_POINT) == 0)
1895
+ continue;
1896
+
1897
+ if (item.StreamIndex < 0)
1898
+ continue; // it's ERROR
1899
+
1900
+ const CStreamInfo &si = DataStreams[item.StreamIndex];
1901
+ if (si.Resource.UnpackSize >= (1 << 16))
1902
+ continue; // reparse data can not be larger than 64 KB
1903
+
1904
+ IntVector_SetMinusOne_IfNeed(streamToReparse, DataStreams.Size());
1905
+ IntVector_SetMinusOne_IfNeed(ItemToReparse, Items.Size());
1906
+
1907
+ const unsigned offset = 0x58; // we don't know about Reparse field for OLD WIM format
1908
+ const UInt32 tag = Get32(metadata + offset);
1909
+ const int reparseIndex = streamToReparse[item.StreamIndex];
1910
+ CByteBuffer buf;
1911
+
1912
+ if (openCallback && unpacker.TotalPacked - totalPackedPrev >= ((UInt32)1 << 16))
1913
+ {
1914
+ totalPackedPrev = unpacker.TotalPacked;
1915
+ const UInt64 numFiles = Items.Size();
1916
+ RINOK(openCallback->SetCompleted(&numFiles, &unpacker.TotalPacked))
1917
+ }
1918
+
1919
+ if (reparseIndex >= 0)
1920
+ {
1921
+ const CByteBuffer &reparse = ReparseItems[reparseIndex];
1922
+ if (tag == Get32(reparse))
1923
+ {
1924
+ ItemToReparse[itemIndex] = reparseIndex;
1925
+ continue;
1926
+ }
1927
+ buf = reparse;
1928
+ // we support that strange and unusual situation with different tags and same reparse data.
1929
+ }
1930
+ else
1931
+ {
1932
+ if (si.PartNumber >= volumes.Size())
1933
+ continue;
1934
+ const CVolume &vol = volumes[si.PartNumber];
1935
+ /*
1936
+ if (!vol.Stream)
1937
+ continue;
1938
+ */
1939
+
1940
+ UInt32 digest[kHashSize / 4];
1941
+ HRESULT res = unpacker.UnpackData(vol.Stream, si.Resource, vol.Header, this, buf, digest);
1942
+
1943
+ if (res == S_FALSE)
1944
+ continue;
1945
+
1946
+ RINOK(res)
1947
+
1948
+ if (COMPARE_HASHES(digest, si.Hash)
1949
+ // && !(h.IsOldVersion() && IsEmptySha(si.Hash))
1950
+ )
1951
+ {
1952
+ // setErrorStatus;
1953
+ continue;
1954
+ }
1955
+ }
1956
+
1957
+ CByteBuffer &reparse = ReparseItems.AddNew();
1958
+ reparse.Alloc(8 + buf.Size());
1959
+ Byte *dest = (Byte *)reparse;
1960
+ SetUi32a(dest, tag)
1961
+ SetUi32a(dest + 4, (UInt32)buf.Size())
1962
+ if (buf.Size())
1963
+ memcpy(dest + 8, buf, buf.Size());
1964
+ ItemToReparse[itemIndex] = (int)ReparseItems.Size() - 1;
1965
+ }
1966
+
1967
+ return S_OK;
1968
+ }
1969
+
1970
+
1971
+
1972
+ static bool ParseNumber64(const AString &s, UInt64 &res)
1973
+ {
1974
+ const char *end;
1975
+ if (s.IsPrefixedBy("0x"))
1976
+ {
1977
+ if (s.Len() == 2)
1978
+ return false;
1979
+ res = ConvertHexStringToUInt64(s.Ptr(2), &end);
1980
+ }
1981
+ else
1982
+ {
1983
+ if (s.IsEmpty())
1984
+ return false;
1985
+ res = ConvertStringToUInt64(s, &end);
1986
+ }
1987
+ return *end == 0;
1988
+ }
1989
+
1990
+
1991
+ static bool ParseNumber32(const AString &s, UInt32 &res)
1992
+ {
1993
+ UInt64 res64;
1994
+ if (!ParseNumber64(s, res64) || res64 >= ((UInt64)1 << 32))
1995
+ return false;
1996
+ res = (UInt32)res64;
1997
+ return true;
1998
+ }
1999
+
2000
+
2001
+ static bool ParseTime(const CXmlItem &item, FILETIME &ft, const char *tag)
2002
+ {
2003
+ const CXmlItem *timeItem = item.FindSubTag_GetPtr(tag);
2004
+ if (timeItem)
2005
+ {
2006
+ UInt32 low = 0, high = 0;
2007
+ if (ParseNumber32(timeItem->GetSubStringForTag("LOWPART"), low) &&
2008
+ ParseNumber32(timeItem->GetSubStringForTag("HIGHPART"), high))
2009
+ {
2010
+ ft.dwLowDateTime = low;
2011
+ ft.dwHighDateTime = high;
2012
+ return true;
2013
+ }
2014
+ }
2015
+ return false;
2016
+ }
2017
+
2018
+
2019
+ void CImageInfo::Parse(const CXmlItem &item)
2020
+ {
2021
+ CTimeDefined = ParseTime(item, CTime, "CREATIONTIME");
2022
+ MTimeDefined = ParseTime(item, MTime, "LASTMODIFICATIONTIME");
2023
+ NameDefined = true;
2024
+ ConvertUTF8ToUnicode(item.GetSubStringForTag("NAME"), Name);
2025
+
2026
+ ParseNumber64(item.GetSubStringForTag("DIRCOUNT"), DirCount);
2027
+ ParseNumber64(item.GetSubStringForTag("FILECOUNT"), FileCount);
2028
+ IndexDefined = ParseNumber32(item.GetPropVal("INDEX"), Index);
2029
+ }
2030
+
2031
+ void CWimXml::ToUnicode(UString &s)
2032
+ {
2033
+ size_t size = Data.Size();
2034
+ if (size < 2 || (size & 1) || size > (1 << 24))
2035
+ return;
2036
+ const Byte *p = Data;
2037
+ if (Get16(p) != 0xFEFF)
2038
+ return;
2039
+ wchar_t *chars = s.GetBuf((unsigned)(size / 2));
2040
+ for (size_t i = 2; i < size; i += 2)
2041
+ {
2042
+ wchar_t c = Get16(p + i);
2043
+ if (c == 0)
2044
+ break;
2045
+ *chars++ = c;
2046
+ }
2047
+ *chars = 0;
2048
+ s.ReleaseBuf_SetLen((unsigned)(chars - (const wchar_t *)s));
2049
+ }
2050
+
2051
+
2052
+ bool CWimXml::Parse()
2053
+ {
2054
+ IsEncrypted = false;
2055
+ AString utf;
2056
+ {
2057
+ UString s;
2058
+ ToUnicode(s);
2059
+ // if (!ConvertUnicodeToUTF8(s, utf)) return false;
2060
+ ConvertUnicodeToUTF8(s, utf);
2061
+ }
2062
+
2063
+ if (!Xml.Parse(utf))
2064
+ return false;
2065
+ if (!Xml.Root.Name.IsEqualTo("WIM"))
2066
+ return false;
2067
+
2068
+ FOR_VECTOR (i, Xml.Root.SubItems)
2069
+ {
2070
+ const CXmlItem &item = Xml.Root.SubItems[i];
2071
+
2072
+ if (item.IsTagged("IMAGE"))
2073
+ {
2074
+ CImageInfo imageInfo;
2075
+ imageInfo.Parse(item);
2076
+ if (!imageInfo.IndexDefined)
2077
+ return false;
2078
+
2079
+ if (imageInfo.Index != (UInt32)Images.Size() + 1)
2080
+ {
2081
+ // old wim (1.09) uses zero based image index
2082
+ if (imageInfo.Index != (UInt32)Images.Size())
2083
+ return false;
2084
+ }
2085
+
2086
+ imageInfo.ItemIndexInXml = (int)i;
2087
+ Images.Add(imageInfo);
2088
+ }
2089
+
2090
+ if (item.IsTagged("ESD"))
2091
+ {
2092
+ FOR_VECTOR (k, item.SubItems)
2093
+ {
2094
+ const CXmlItem &item2 = item.SubItems[k];
2095
+ if (item2.IsTagged("ENCRYPTED"))
2096
+ IsEncrypted = true;
2097
+ }
2098
+ }
2099
+ }
2100
+
2101
+ return true;
2102
+ }
2103
+
2104
+ }}