polyfile-weave 0.5.5__py3-none-any.whl

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.

Potentially problematic release.


This version of polyfile-weave might be problematic. Click here for more details.

Files changed (585) hide show
  1. polyfile/__init__.py +15 -0
  2. polyfile/__main__.py +394 -0
  3. polyfile/arithmetic.py +27 -0
  4. polyfile/ast.py +114 -0
  5. polyfile/debugger.py +1039 -0
  6. polyfile/expressions.py +346 -0
  7. polyfile/fileutils.py +343 -0
  8. polyfile/html.py +135 -0
  9. polyfile/http/__init__.py +1 -0
  10. polyfile/http/defacto.py +37 -0
  11. polyfile/http/deprecated.py +51 -0
  12. polyfile/http/experimental.py +67 -0
  13. polyfile/http/http_11.py +548 -0
  14. polyfile/http/matcher.py +37 -0
  15. polyfile/http/structured_headers.py +48 -0
  16. polyfile/iterators.py +72 -0
  17. polyfile/jpeg.py +24 -0
  18. polyfile/kaitai/__init__.py +0 -0
  19. polyfile/kaitai/compiler.py +156 -0
  20. polyfile/kaitai/parser.py +312 -0
  21. polyfile/kaitai/parsers/__init__.py +0 -0
  22. polyfile/kaitai/parsers/aix_utmp.py +116 -0
  23. polyfile/kaitai/parsers/allegro_dat.py +367 -0
  24. polyfile/kaitai/parsers/andes_firmware.py +64 -0
  25. polyfile/kaitai/parsers/android_bootldr_asus.py +105 -0
  26. polyfile/kaitai/parsers/android_bootldr_huawei.py +181 -0
  27. polyfile/kaitai/parsers/android_bootldr_qcom.py +217 -0
  28. polyfile/kaitai/parsers/android_dto.py +138 -0
  29. polyfile/kaitai/parsers/android_img.py +319 -0
  30. polyfile/kaitai/parsers/android_nanoapp_header.py +83 -0
  31. polyfile/kaitai/parsers/android_opengl_shaders_cache.py +151 -0
  32. polyfile/kaitai/parsers/android_sparse.py +237 -0
  33. polyfile/kaitai/parsers/android_super.py +401 -0
  34. polyfile/kaitai/parsers/apm_partition_table.py +196 -0
  35. polyfile/kaitai/parsers/apple_single_double.py +180 -0
  36. polyfile/kaitai/parsers/asn1_der.py +235 -0
  37. polyfile/kaitai/parsers/au.py +138 -0
  38. polyfile/kaitai/parsers/avantes_roh60.py +112 -0
  39. polyfile/kaitai/parsers/avi.py +296 -0
  40. polyfile/kaitai/parsers/bcd.py +111 -0
  41. polyfile/kaitai/parsers/bitcoin_transaction.py +210 -0
  42. polyfile/kaitai/parsers/blender_blend.py +334 -0
  43. polyfile/kaitai/parsers/bmp.py +780 -0
  44. polyfile/kaitai/parsers/bson.py +411 -0
  45. polyfile/kaitai/parsers/btrfs_stream.py +318 -0
  46. polyfile/kaitai/parsers/bytes_with_io.py +27 -0
  47. polyfile/kaitai/parsers/chrome_pak.py +194 -0
  48. polyfile/kaitai/parsers/code_6502.py +456 -0
  49. polyfile/kaitai/parsers/compressed_resource.py +217 -0
  50. polyfile/kaitai/parsers/cpio_old_le.py +154 -0
  51. polyfile/kaitai/parsers/cramfs.py +344 -0
  52. polyfile/kaitai/parsers/creative_voice_file.py +342 -0
  53. polyfile/kaitai/parsers/dbf.py +274 -0
  54. polyfile/kaitai/parsers/dcmp_0.py +664 -0
  55. polyfile/kaitai/parsers/dcmp_1.py +422 -0
  56. polyfile/kaitai/parsers/dcmp_2.py +312 -0
  57. polyfile/kaitai/parsers/dcmp_variable_length_integer.py +66 -0
  58. polyfile/kaitai/parsers/dex.py +1086 -0
  59. polyfile/kaitai/parsers/dicom.py +4370 -0
  60. polyfile/kaitai/parsers/dime_message.py +201 -0
  61. polyfile/kaitai/parsers/dns_packet.py +569 -0
  62. polyfile/kaitai/parsers/doom_wad.py +654 -0
  63. polyfile/kaitai/parsers/dos_datetime.py +191 -0
  64. polyfile/kaitai/parsers/dos_mz.py +172 -0
  65. polyfile/kaitai/parsers/ds_store.py +513 -0
  66. polyfile/kaitai/parsers/dtb.py +310 -0
  67. polyfile/kaitai/parsers/dune_2_pak.py +126 -0
  68. polyfile/kaitai/parsers/edid.py +472 -0
  69. polyfile/kaitai/parsers/efivar_signature_list.py +331 -0
  70. polyfile/kaitai/parsers/elf.py +2482 -0
  71. polyfile/kaitai/parsers/ethernet_frame.py +114 -0
  72. polyfile/kaitai/parsers/exif.py +723 -0
  73. polyfile/kaitai/parsers/ext2.py +537 -0
  74. polyfile/kaitai/parsers/fallout2_dat.py +187 -0
  75. polyfile/kaitai/parsers/fallout_dat.py +156 -0
  76. polyfile/kaitai/parsers/fasttracker_xm_module.py +558 -0
  77. polyfile/kaitai/parsers/ftl_dat.py +90 -0
  78. polyfile/kaitai/parsers/genmidi_op2.py +161 -0
  79. polyfile/kaitai/parsers/gettext_mo.py +541 -0
  80. polyfile/kaitai/parsers/gif.py +492 -0
  81. polyfile/kaitai/parsers/gimp_brush.py +244 -0
  82. polyfile/kaitai/parsers/glibc_utmp.py +114 -0
  83. polyfile/kaitai/parsers/gltf_binary.py +132 -0
  84. polyfile/kaitai/parsers/google_protobuf.py +151 -0
  85. polyfile/kaitai/parsers/gpt_partition_table.py +175 -0
  86. polyfile/kaitai/parsers/gran_turismo_vol.py +140 -0
  87. polyfile/kaitai/parsers/grub2_font.py +337 -0
  88. polyfile/kaitai/parsers/gzip.py +232 -0
  89. polyfile/kaitai/parsers/hashcat_restore.py +60 -0
  90. polyfile/kaitai/parsers/hccap.py +111 -0
  91. polyfile/kaitai/parsers/hccapx.py +103 -0
  92. polyfile/kaitai/parsers/heaps_pak.py +177 -0
  93. polyfile/kaitai/parsers/heroes_of_might_and_magic_agg.py +116 -0
  94. polyfile/kaitai/parsers/heroes_of_might_and_magic_bmp.py +34 -0
  95. polyfile/kaitai/parsers/icmp_packet.py +136 -0
  96. polyfile/kaitai/parsers/ico.py +129 -0
  97. polyfile/kaitai/parsers/id3v1_1.py +220 -0
  98. polyfile/kaitai/parsers/id3v2_3.py +324 -0
  99. polyfile/kaitai/parsers/id3v2_4.py +423 -0
  100. polyfile/kaitai/parsers/ines.py +282 -0
  101. polyfile/kaitai/parsers/ipv4_packet.py +158 -0
  102. polyfile/kaitai/parsers/ipv6_packet.py +55 -0
  103. polyfile/kaitai/parsers/iso9660.py +544 -0
  104. polyfile/kaitai/parsers/java_class.py +1113 -0
  105. polyfile/kaitai/parsers/jpeg.py +361 -0
  106. polyfile/kaitai/parsers/luks.py +149 -0
  107. polyfile/kaitai/parsers/lzh.py +165 -0
  108. polyfile/kaitai/parsers/mac_os_resource_snd.py +493 -0
  109. polyfile/kaitai/parsers/mach_o.py +3033 -0
  110. polyfile/kaitai/parsers/mach_o_fat.py +92 -0
  111. polyfile/kaitai/parsers/magicavoxel_vox.py +391 -0
  112. polyfile/kaitai/parsers/manifest.json +1 -0
  113. polyfile/kaitai/parsers/mbr_partition_table.py +119 -0
  114. polyfile/kaitai/parsers/mcap.py +1015 -0
  115. polyfile/kaitai/parsers/microsoft_cfb.py +293 -0
  116. polyfile/kaitai/parsers/microsoft_network_monitor_v2.py +309 -0
  117. polyfile/kaitai/parsers/microsoft_pe.py +765 -0
  118. polyfile/kaitai/parsers/mifare_classic.py +706 -0
  119. polyfile/kaitai/parsers/minecraft_nbt.py +449 -0
  120. polyfile/kaitai/parsers/monomakh_sapr_chg.py +69 -0
  121. polyfile/kaitai/parsers/mozilla_mar.py +239 -0
  122. polyfile/kaitai/parsers/mp4.py +333 -0
  123. polyfile/kaitai/parsers/msgpack.py +467 -0
  124. polyfile/kaitai/parsers/nitf.py +1189 -0
  125. polyfile/kaitai/parsers/nt_mdt_pal.py +155 -0
  126. polyfile/kaitai/parsers/ogg.py +118 -0
  127. polyfile/kaitai/parsers/openpgp_message.py +993 -0
  128. polyfile/kaitai/parsers/packet_ppi.py +515 -0
  129. polyfile/kaitai/parsers/pcap.py +344 -0
  130. polyfile/kaitai/parsers/pcf_font.py +506 -0
  131. polyfile/kaitai/parsers/pcx.py +195 -0
  132. polyfile/kaitai/parsers/pcx_dcx.py +79 -0
  133. polyfile/kaitai/parsers/phar_without_stub.py +399 -0
  134. polyfile/kaitai/parsers/php_serialized_value.py +505 -0
  135. polyfile/kaitai/parsers/png.py +721 -0
  136. polyfile/kaitai/parsers/protocol_body.py +260 -0
  137. polyfile/kaitai/parsers/psx_tim.py +104 -0
  138. polyfile/kaitai/parsers/python_pickle.py +718 -0
  139. polyfile/kaitai/parsers/python_pyc_27.py +510 -0
  140. polyfile/kaitai/parsers/quake_mdl.py +441 -0
  141. polyfile/kaitai/parsers/quake_pak.py +112 -0
  142. polyfile/kaitai/parsers/quicktime_mov.py +634 -0
  143. polyfile/kaitai/parsers/rar.py +265 -0
  144. polyfile/kaitai/parsers/regf.py +569 -0
  145. polyfile/kaitai/parsers/renderware_binary_stream.py +877 -0
  146. polyfile/kaitai/parsers/resource_fork.py +611 -0
  147. polyfile/kaitai/parsers/respack.py +57 -0
  148. polyfile/kaitai/parsers/riff.py +409 -0
  149. polyfile/kaitai/parsers/rpm.py +964 -0
  150. polyfile/kaitai/parsers/rtcp_payload.py +579 -0
  151. polyfile/kaitai/parsers/rtp_packet.py +150 -0
  152. polyfile/kaitai/parsers/rtpdump.py +115 -0
  153. polyfile/kaitai/parsers/ruby_marshal.py +423 -0
  154. polyfile/kaitai/parsers/s3m.py +493 -0
  155. polyfile/kaitai/parsers/saints_row_2_vpp_pc.py +254 -0
  156. polyfile/kaitai/parsers/shapefile_index.py +174 -0
  157. polyfile/kaitai/parsers/shapefile_main.py +893 -0
  158. polyfile/kaitai/parsers/some_ip.py +209 -0
  159. polyfile/kaitai/parsers/some_ip_container.py +37 -0
  160. polyfile/kaitai/parsers/some_ip_sd.py +86 -0
  161. polyfile/kaitai/parsers/some_ip_sd_entries.py +160 -0
  162. polyfile/kaitai/parsers/some_ip_sd_options.py +374 -0
  163. polyfile/kaitai/parsers/specpr.py +404 -0
  164. polyfile/kaitai/parsers/sqlite3.py +472 -0
  165. polyfile/kaitai/parsers/ssh_public_key.py +252 -0
  166. polyfile/kaitai/parsers/standard_midi_file.py +390 -0
  167. polyfile/kaitai/parsers/stl.py +111 -0
  168. polyfile/kaitai/parsers/sudoers_ts.py +201 -0
  169. polyfile/kaitai/parsers/swf.py +406 -0
  170. polyfile/kaitai/parsers/systemd_journal.py +361 -0
  171. polyfile/kaitai/parsers/tcp_segment.py +57 -0
  172. polyfile/kaitai/parsers/tga.py +213 -0
  173. polyfile/kaitai/parsers/tls_client_hello.py +293 -0
  174. polyfile/kaitai/parsers/tr_dos_image.py +322 -0
  175. polyfile/kaitai/parsers/tsm.py +198 -0
  176. polyfile/kaitai/parsers/ttf.py +1847 -0
  177. polyfile/kaitai/parsers/udp_datagram.py +42 -0
  178. polyfile/kaitai/parsers/uefi_te.py +236 -0
  179. polyfile/kaitai/parsers/uimage.py +198 -0
  180. polyfile/kaitai/parsers/utf8_string.py +137 -0
  181. polyfile/kaitai/parsers/vfat.py +410 -0
  182. polyfile/kaitai/parsers/vlq_base128_be.py +104 -0
  183. polyfile/kaitai/parsers/vlq_base128_le.py +129 -0
  184. polyfile/kaitai/parsers/vmware_vmdk.py +167 -0
  185. polyfile/kaitai/parsers/vp8_ivf.py +112 -0
  186. polyfile/kaitai/parsers/warcraft_2_pud.py +423 -0
  187. polyfile/kaitai/parsers/wav.py +1014 -0
  188. polyfile/kaitai/parsers/websocket.py +167 -0
  189. polyfile/kaitai/parsers/windows_evt_log.py +304 -0
  190. polyfile/kaitai/parsers/windows_lnk_file.py +467 -0
  191. polyfile/kaitai/parsers/windows_minidump.py +575 -0
  192. polyfile/kaitai/parsers/windows_resource_file.py +243 -0
  193. polyfile/kaitai/parsers/windows_shell_items.py +190 -0
  194. polyfile/kaitai/parsers/windows_systemtime.py +52 -0
  195. polyfile/kaitai/parsers/wmf.py +502 -0
  196. polyfile/kaitai/parsers/xar.py +181 -0
  197. polyfile/kaitai/parsers/xwd.py +189 -0
  198. polyfile/kaitai/parsers/zip.py +685 -0
  199. polyfile/kaitai/parsers/zisofs.py +158 -0
  200. polyfile/kaitai/parsers/zx_spectrum_tap.py +184 -0
  201. polyfile/kaitaimatcher.py +113 -0
  202. polyfile/languagematcher.py +217 -0
  203. polyfile/logger.py +135 -0
  204. polyfile/magic.py +2983 -0
  205. polyfile/magic_defs/COPYING +29 -0
  206. polyfile/magic_defs/__init__.py +0 -0
  207. polyfile/magic_defs/acorn +102 -0
  208. polyfile/magic_defs/adi +13 -0
  209. polyfile/magic_defs/adventure +122 -0
  210. polyfile/magic_defs/aes +29 -0
  211. polyfile/magic_defs/algol68 +35 -0
  212. polyfile/magic_defs/allegro +9 -0
  213. polyfile/magic_defs/alliant +18 -0
  214. polyfile/magic_defs/alpha +32 -0
  215. polyfile/magic_defs/amanda +12 -0
  216. polyfile/magic_defs/amigaos +218 -0
  217. polyfile/magic_defs/android +259 -0
  218. polyfile/magic_defs/animation +1197 -0
  219. polyfile/magic_defs/aout +46 -0
  220. polyfile/magic_defs/apache +28 -0
  221. polyfile/magic_defs/apl +7 -0
  222. polyfile/magic_defs/apple +773 -0
  223. polyfile/magic_defs/application +7 -0
  224. polyfile/magic_defs/applix +13 -0
  225. polyfile/magic_defs/apt +52 -0
  226. polyfile/magic_defs/archive +2586 -0
  227. polyfile/magic_defs/aria +38 -0
  228. polyfile/magic_defs/arm +50 -0
  229. polyfile/magic_defs/asf +132 -0
  230. polyfile/magic_defs/assembler +18 -0
  231. polyfile/magic_defs/asterix +18 -0
  232. polyfile/magic_defs/att3b +41 -0
  233. polyfile/magic_defs/audio +1291 -0
  234. polyfile/magic_defs/avm +33 -0
  235. polyfile/magic_defs/basis +18 -0
  236. polyfile/magic_defs/beetle +7 -0
  237. polyfile/magic_defs/ber +65 -0
  238. polyfile/magic_defs/bflt +14 -0
  239. polyfile/magic_defs/bhl +10 -0
  240. polyfile/magic_defs/bioinformatics +178 -0
  241. polyfile/magic_defs/biosig +154 -0
  242. polyfile/magic_defs/blackberry +8 -0
  243. polyfile/magic_defs/blcr +25 -0
  244. polyfile/magic_defs/blender +50 -0
  245. polyfile/magic_defs/blit +24 -0
  246. polyfile/magic_defs/bm +10 -0
  247. polyfile/magic_defs/bout +11 -0
  248. polyfile/magic_defs/bsdi +33 -0
  249. polyfile/magic_defs/bsi +10 -0
  250. polyfile/magic_defs/btsnoop +13 -0
  251. polyfile/magic_defs/burp +7 -0
  252. polyfile/magic_defs/bytecode +41 -0
  253. polyfile/magic_defs/c-lang +110 -0
  254. polyfile/magic_defs/c64 +531 -0
  255. polyfile/magic_defs/cad +437 -0
  256. polyfile/magic_defs/cafebabe +107 -0
  257. polyfile/magic_defs/cbor +21 -0
  258. polyfile/magic_defs/ccf +14 -0
  259. polyfile/magic_defs/cddb +12 -0
  260. polyfile/magic_defs/chord +15 -0
  261. polyfile/magic_defs/cisco +12 -0
  262. polyfile/magic_defs/citrus +12 -0
  263. polyfile/magic_defs/clarion +27 -0
  264. polyfile/magic_defs/claris +48 -0
  265. polyfile/magic_defs/clipper +65 -0
  266. polyfile/magic_defs/clojure +30 -0
  267. polyfile/magic_defs/coff +98 -0
  268. polyfile/magic_defs/commands +201 -0
  269. polyfile/magic_defs/communications +22 -0
  270. polyfile/magic_defs/compress +461 -0
  271. polyfile/magic_defs/console +1213 -0
  272. polyfile/magic_defs/convex +69 -0
  273. polyfile/magic_defs/coverage +91 -0
  274. polyfile/magic_defs/cracklib +14 -0
  275. polyfile/magic_defs/crypto +31 -0
  276. polyfile/magic_defs/csv +8 -0
  277. polyfile/magic_defs/ctags +6 -0
  278. polyfile/magic_defs/ctf +23 -0
  279. polyfile/magic_defs/cubemap +8 -0
  280. polyfile/magic_defs/cups +56 -0
  281. polyfile/magic_defs/dact +11 -0
  282. polyfile/magic_defs/database +886 -0
  283. polyfile/magic_defs/dataone +47 -0
  284. polyfile/magic_defs/dbpf +15 -0
  285. polyfile/magic_defs/der +146 -0
  286. polyfile/magic_defs/diamond +12 -0
  287. polyfile/magic_defs/dif +33 -0
  288. polyfile/magic_defs/diff +41 -0
  289. polyfile/magic_defs/digital +59 -0
  290. polyfile/magic_defs/dolby +69 -0
  291. polyfile/magic_defs/dsf +25 -0
  292. polyfile/magic_defs/dump +96 -0
  293. polyfile/magic_defs/dwarfs +45 -0
  294. polyfile/magic_defs/dyadic +61 -0
  295. polyfile/magic_defs/ebml +8 -0
  296. polyfile/magic_defs/edid +11 -0
  297. polyfile/magic_defs/editors +43 -0
  298. polyfile/magic_defs/efi +15 -0
  299. polyfile/magic_defs/elf +379 -0
  300. polyfile/magic_defs/encore +22 -0
  301. polyfile/magic_defs/epoc +62 -0
  302. polyfile/magic_defs/erlang +21 -0
  303. polyfile/magic_defs/espressif +57 -0
  304. polyfile/magic_defs/esri +28 -0
  305. polyfile/magic_defs/etf +33 -0
  306. polyfile/magic_defs/fcs +9 -0
  307. polyfile/magic_defs/filesystems +2694 -0
  308. polyfile/magic_defs/finger +16 -0
  309. polyfile/magic_defs/firmware +133 -0
  310. polyfile/magic_defs/flash +62 -0
  311. polyfile/magic_defs/flif +36 -0
  312. polyfile/magic_defs/fonts +449 -0
  313. polyfile/magic_defs/forth +82 -0
  314. polyfile/magic_defs/fortran +9 -0
  315. polyfile/magic_defs/frame +62 -0
  316. polyfile/magic_defs/freebsd +164 -0
  317. polyfile/magic_defs/fsav +128 -0
  318. polyfile/magic_defs/fusecompress +12 -0
  319. polyfile/magic_defs/games +696 -0
  320. polyfile/magic_defs/gcc +17 -0
  321. polyfile/magic_defs/gconv +10 -0
  322. polyfile/magic_defs/gentoo +85 -0
  323. polyfile/magic_defs/geo +166 -0
  324. polyfile/magic_defs/geos +20 -0
  325. polyfile/magic_defs/gimp +77 -0
  326. polyfile/magic_defs/git +13 -0
  327. polyfile/magic_defs/glibc +21 -0
  328. polyfile/magic_defs/gnome +59 -0
  329. polyfile/magic_defs/gnu +173 -0
  330. polyfile/magic_defs/gnumeric +8 -0
  331. polyfile/magic_defs/gpt +240 -0
  332. polyfile/magic_defs/gpu +28 -0
  333. polyfile/magic_defs/grace +21 -0
  334. polyfile/magic_defs/graphviz +12 -0
  335. polyfile/magic_defs/gringotts +48 -0
  336. polyfile/magic_defs/guile +13 -0
  337. polyfile/magic_defs/hardware +12 -0
  338. polyfile/magic_defs/hitachi-sh +30 -0
  339. polyfile/magic_defs/hp +433 -0
  340. polyfile/magic_defs/human68k +26 -0
  341. polyfile/magic_defs/ibm370 +52 -0
  342. polyfile/magic_defs/ibm6000 +35 -0
  343. polyfile/magic_defs/icc +214 -0
  344. polyfile/magic_defs/iff +80 -0
  345. polyfile/magic_defs/images +4210 -0
  346. polyfile/magic_defs/inform +9 -0
  347. polyfile/magic_defs/intel +310 -0
  348. polyfile/magic_defs/interleaf +9 -0
  349. polyfile/magic_defs/island +10 -0
  350. polyfile/magic_defs/ispell +63 -0
  351. polyfile/magic_defs/isz +15 -0
  352. polyfile/magic_defs/java +52 -0
  353. polyfile/magic_defs/javascript +171 -0
  354. polyfile/magic_defs/jpeg +252 -0
  355. polyfile/magic_defs/json +8 -0
  356. polyfile/magic_defs/karma +9 -0
  357. polyfile/magic_defs/kde +11 -0
  358. polyfile/magic_defs/keepass +20 -0
  359. polyfile/magic_defs/kerberos +45 -0
  360. polyfile/magic_defs/kicad +85 -0
  361. polyfile/magic_defs/kml +34 -0
  362. polyfile/magic_defs/lammps +64 -0
  363. polyfile/magic_defs/lecter +6 -0
  364. polyfile/magic_defs/lex +12 -0
  365. polyfile/magic_defs/lif +50 -0
  366. polyfile/magic_defs/linux +557 -0
  367. polyfile/magic_defs/lisp +78 -0
  368. polyfile/magic_defs/llvm +22 -0
  369. polyfile/magic_defs/locoscript +12 -0
  370. polyfile/magic_defs/lua +31 -0
  371. polyfile/magic_defs/luks +126 -0
  372. polyfile/magic_defs/m4 +11 -0
  373. polyfile/magic_defs/mach +303 -0
  374. polyfile/magic_defs/macintosh +505 -0
  375. polyfile/magic_defs/macos +7 -0
  376. polyfile/magic_defs/magic +10 -0
  377. polyfile/magic_defs/magic.mgc +0 -0
  378. polyfile/magic_defs/mail.news +132 -0
  379. polyfile/magic_defs/make +21 -0
  380. polyfile/magic_defs/map +413 -0
  381. polyfile/magic_defs/maple +109 -0
  382. polyfile/magic_defs/marc21 +30 -0
  383. polyfile/magic_defs/mathcad +8 -0
  384. polyfile/magic_defs/mathematica +188 -0
  385. polyfile/magic_defs/matroska +17 -0
  386. polyfile/magic_defs/mcrypt +52 -0
  387. polyfile/magic_defs/measure +44 -0
  388. polyfile/magic_defs/mercurial +13 -0
  389. polyfile/magic_defs/metastore +8 -0
  390. polyfile/magic_defs/meteorological +53 -0
  391. polyfile/magic_defs/microfocus +21 -0
  392. polyfile/magic_defs/mime +9 -0
  393. polyfile/magic_defs/mips +120 -0
  394. polyfile/magic_defs/mirage +8 -0
  395. polyfile/magic_defs/misctools +140 -0
  396. polyfile/magic_defs/mkid +11 -0
  397. polyfile/magic_defs/mlssa +8 -0
  398. polyfile/magic_defs/mmdf +6 -0
  399. polyfile/magic_defs/modem +92 -0
  400. polyfile/magic_defs/modulefile +9 -0
  401. polyfile/magic_defs/motorola +71 -0
  402. polyfile/magic_defs/mozilla +37 -0
  403. polyfile/magic_defs/msdos +2304 -0
  404. polyfile/magic_defs/msooxml +68 -0
  405. polyfile/magic_defs/msvc +222 -0
  406. polyfile/magic_defs/msx +309 -0
  407. polyfile/magic_defs/mup +24 -0
  408. polyfile/magic_defs/music +17 -0
  409. polyfile/magic_defs/nasa +7 -0
  410. polyfile/magic_defs/natinst +24 -0
  411. polyfile/magic_defs/ncr +49 -0
  412. polyfile/magic_defs/neko +12 -0
  413. polyfile/magic_defs/netbsd +251 -0
  414. polyfile/magic_defs/netscape +26 -0
  415. polyfile/magic_defs/netware +11 -0
  416. polyfile/magic_defs/news +13 -0
  417. polyfile/magic_defs/nifty +202 -0
  418. polyfile/magic_defs/nim-lang +29 -0
  419. polyfile/magic_defs/nitpicker +14 -0
  420. polyfile/magic_defs/numpy +9 -0
  421. polyfile/magic_defs/oasis +12 -0
  422. polyfile/magic_defs/ocaml +14 -0
  423. polyfile/magic_defs/octave +6 -0
  424. polyfile/magic_defs/ole2compounddocs +760 -0
  425. polyfile/magic_defs/olf +98 -0
  426. polyfile/magic_defs/openfst +17 -0
  427. polyfile/magic_defs/opentimestamps +16 -0
  428. polyfile/magic_defs/oric +16 -0
  429. polyfile/magic_defs/os2 +186 -0
  430. polyfile/magic_defs/os400 +39 -0
  431. polyfile/magic_defs/os9 +80 -0
  432. polyfile/magic_defs/osf1 +10 -0
  433. polyfile/magic_defs/palm +156 -0
  434. polyfile/magic_defs/parix +13 -0
  435. polyfile/magic_defs/parrot +22 -0
  436. polyfile/magic_defs/pascal +39 -0
  437. polyfile/magic_defs/pbf +11 -0
  438. polyfile/magic_defs/pbm +8 -0
  439. polyfile/magic_defs/pc88 +24 -0
  440. polyfile/magic_defs/pc98 +77 -0
  441. polyfile/magic_defs/pci_ids +116 -0
  442. polyfile/magic_defs/pcjr +8 -0
  443. polyfile/magic_defs/pdf +51 -0
  444. polyfile/magic_defs/pdp +42 -0
  445. polyfile/magic_defs/perl +100 -0
  446. polyfile/magic_defs/pgf +52 -0
  447. polyfile/magic_defs/pgp +581 -0
  448. polyfile/magic_defs/pgp-binary-keys +388 -0
  449. polyfile/magic_defs/pkgadd +7 -0
  450. polyfile/magic_defs/plan9 +25 -0
  451. polyfile/magic_defs/playdate +57 -0
  452. polyfile/magic_defs/plus5 +18 -0
  453. polyfile/magic_defs/pmem +46 -0
  454. polyfile/magic_defs/polyfile_zip +5 -0
  455. polyfile/magic_defs/polyml +23 -0
  456. polyfile/magic_defs/printer +269 -0
  457. polyfile/magic_defs/project +10 -0
  458. polyfile/magic_defs/psdbms +14 -0
  459. polyfile/magic_defs/psl +14 -0
  460. polyfile/magic_defs/pulsar +13 -0
  461. polyfile/magic_defs/puzzle +17 -0
  462. polyfile/magic_defs/pwsafe +14 -0
  463. polyfile/magic_defs/pyramid +12 -0
  464. polyfile/magic_defs/python +305 -0
  465. polyfile/magic_defs/qt +30 -0
  466. polyfile/magic_defs/revision +66 -0
  467. polyfile/magic_defs/riff +840 -0
  468. polyfile/magic_defs/rinex +44 -0
  469. polyfile/magic_defs/ringdove +45 -0
  470. polyfile/magic_defs/rpi +52 -0
  471. polyfile/magic_defs/rpm +45 -0
  472. polyfile/magic_defs/rpmsg +7 -0
  473. polyfile/magic_defs/rst +11 -0
  474. polyfile/magic_defs/rtf +94 -0
  475. polyfile/magic_defs/ruby +55 -0
  476. polyfile/magic_defs/rust +21 -0
  477. polyfile/magic_defs/sc +7 -0
  478. polyfile/magic_defs/sccs +24 -0
  479. polyfile/magic_defs/scientific +144 -0
  480. polyfile/magic_defs/securitycerts +6 -0
  481. polyfile/magic_defs/selinux +24 -0
  482. polyfile/magic_defs/sendmail +37 -0
  483. polyfile/magic_defs/sequent +42 -0
  484. polyfile/magic_defs/sereal +35 -0
  485. polyfile/magic_defs/sgi +144 -0
  486. polyfile/magic_defs/sgml +161 -0
  487. polyfile/magic_defs/sharc +23 -0
  488. polyfile/magic_defs/sinclair +40 -0
  489. polyfile/magic_defs/sisu +18 -0
  490. polyfile/magic_defs/sketch +6 -0
  491. polyfile/magic_defs/smalltalk +25 -0
  492. polyfile/magic_defs/smile +34 -0
  493. polyfile/magic_defs/sniffer +482 -0
  494. polyfile/magic_defs/softquad +40 -0
  495. polyfile/magic_defs/sosi +40 -0
  496. polyfile/magic_defs/spec +21 -0
  497. polyfile/magic_defs/spectrum +184 -0
  498. polyfile/magic_defs/sql +288 -0
  499. polyfile/magic_defs/ssh +39 -0
  500. polyfile/magic_defs/ssl +20 -0
  501. polyfile/magic_defs/statistics +45 -0
  502. polyfile/magic_defs/subtitle +38 -0
  503. polyfile/magic_defs/sun +141 -0
  504. polyfile/magic_defs/svf +5 -0
  505. polyfile/magic_defs/sylk +36 -0
  506. polyfile/magic_defs/symbos +42 -0
  507. polyfile/magic_defs/sysex +429 -0
  508. polyfile/magic_defs/tcl +29 -0
  509. polyfile/magic_defs/teapot +6 -0
  510. polyfile/magic_defs/terminfo +63 -0
  511. polyfile/magic_defs/tex +141 -0
  512. polyfile/magic_defs/tgif +7 -0
  513. polyfile/magic_defs/ti-8x +239 -0
  514. polyfile/magic_defs/timezone +42 -0
  515. polyfile/magic_defs/tplink +95 -0
  516. polyfile/magic_defs/troff +38 -0
  517. polyfile/magic_defs/tuxedo +8 -0
  518. polyfile/magic_defs/typeset +8 -0
  519. polyfile/magic_defs/uf2 +72 -0
  520. polyfile/magic_defs/unicode +15 -0
  521. polyfile/magic_defs/unisig +12 -0
  522. polyfile/magic_defs/unknown +34 -0
  523. polyfile/magic_defs/usd +21 -0
  524. polyfile/magic_defs/uterus +16 -0
  525. polyfile/magic_defs/uuencode +28 -0
  526. polyfile/magic_defs/vacuum-cleaner +54 -0
  527. polyfile/magic_defs/varied.out +46 -0
  528. polyfile/magic_defs/varied.script +21 -0
  529. polyfile/magic_defs/vax +32 -0
  530. polyfile/magic_defs/vicar +17 -0
  531. polyfile/magic_defs/virtual +307 -0
  532. polyfile/magic_defs/virtutech +12 -0
  533. polyfile/magic_defs/visx +32 -0
  534. polyfile/magic_defs/vms +30 -0
  535. polyfile/magic_defs/vmware +6 -0
  536. polyfile/magic_defs/vorbis +155 -0
  537. polyfile/magic_defs/vxl +14 -0
  538. polyfile/magic_defs/warc +16 -0
  539. polyfile/magic_defs/weak +16 -0
  540. polyfile/magic_defs/web +18 -0
  541. polyfile/magic_defs/webassembly +17 -0
  542. polyfile/magic_defs/windows +1811 -0
  543. polyfile/magic_defs/wireless +7 -0
  544. polyfile/magic_defs/wordprocessors +630 -0
  545. polyfile/magic_defs/wsdl +23 -0
  546. polyfile/magic_defs/x68000 +25 -0
  547. polyfile/magic_defs/xdelta +13 -0
  548. polyfile/magic_defs/xenix +106 -0
  549. polyfile/magic_defs/xilinx +58 -0
  550. polyfile/magic_defs/xo65 +37 -0
  551. polyfile/magic_defs/xwindows +43 -0
  552. polyfile/magic_defs/yara +17 -0
  553. polyfile/magic_defs/zfs +96 -0
  554. polyfile/magic_defs/zilog +12 -0
  555. polyfile/magic_defs/zip +126 -0
  556. polyfile/magic_defs/zyxel +17 -0
  557. polyfile/nes.py +144 -0
  558. polyfile/nitf.py +15 -0
  559. polyfile/pdf.py +1264 -0
  560. polyfile/pickles.py +45 -0
  561. polyfile/polyfile.py +409 -0
  562. polyfile/profiling.py +115 -0
  563. polyfile/repl.py +624 -0
  564. polyfile/search.py +310 -0
  565. polyfile/serialization.py +323 -0
  566. polyfile/structmatcher.py +46 -0
  567. polyfile/structs.py +281 -0
  568. polyfile/templates/download.js +162 -0
  569. polyfile/templates/hexdump.css +268 -0
  570. polyfile/templates/hexdump.js +756 -0
  571. polyfile/templates/jquery-3.4.1.min.js +2 -0
  572. polyfile/templates/template.html +119 -0
  573. polyfile/wildcards.py +62 -0
  574. polyfile/zipmatcher.py +183 -0
  575. polyfile_weave-0.5.5.dist-info/METADATA +173 -0
  576. polyfile_weave-0.5.5.dist-info/RECORD +585 -0
  577. polyfile_weave-0.5.5.dist-info/WHEEL +5 -0
  578. polyfile_weave-0.5.5.dist-info/entry_points.txt +2 -0
  579. polyfile_weave-0.5.5.dist-info/licenses/LICENSE +202 -0
  580. polyfile_weave-0.5.5.dist-info/top_level.txt +2 -0
  581. polymerge/__init__.py +1 -0
  582. polymerge/__main__.py +296 -0
  583. polymerge/cfg.py +127 -0
  584. polymerge/polymerge.py +227 -0
  585. polymerge/polytracker.py +190 -0
@@ -0,0 +1,505 @@
1
+ # This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild
2
+
3
+ from pkg_resources import parse_version
4
+ import kaitaistruct
5
+ from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
6
+ from enum import Enum
7
+ import collections
8
+
9
+
10
+ if parse_version(kaitaistruct.__version__) < parse_version('0.9'):
11
+ raise Exception("Incompatible Kaitai Struct Python API: 0.9 or later is required, but you have %s" % (kaitaistruct.__version__))
12
+
13
+ class PhpSerializedValue(KaitaiStruct):
14
+ """A serialized PHP value, in the format used by PHP's built-in `serialize` and
15
+ `unserialize` functions. This format closely mirrors PHP's data model:
16
+ it supports all of PHP's scalar types (`NULL`, booleans, numbers, strings),
17
+ associative arrays, objects, and recursive data structures using references.
18
+ The only PHP values not supported by this format are *resources*,
19
+ which usually correspond to native file or connection handles and cannot be
20
+ meaningfully serialized.
21
+
22
+ There is no official documentation for this data format;
23
+ this spec was created based on the PHP source code and the behavior of
24
+ `serialize`/`unserialize`. PHP makes no guarantees about compatibility of
25
+ serialized data between PHP versions, but in practice, the format has
26
+ remained fully backwards-compatible - values serialized by an older
27
+ PHP version can be unserialized on any newer PHP version.
28
+ This spec supports serialized values from PHP 7.3 or any earlier version.
29
+
30
+ .. seealso::
31
+ Source - https://www.php.net/manual/en/function.serialize.php
32
+
33
+
34
+ .. seealso::
35
+ Source - https://www.php.net/manual/en/function.serialize.php#66147
36
+
37
+
38
+ .. seealso::
39
+ Source - https://www.php.net/manual/en/function.unserialize.php
40
+
41
+
42
+ .. seealso::
43
+ Source - https://github.com/php/php-src/blob/php-7.3.5/ext/standard/var_unserializer.re
44
+
45
+
46
+ .. seealso::
47
+ Source - https://github.com/php/php-src/blob/php-7.3.5/ext/standard/var.c#L822
48
+ """
49
+
50
+ class ValueType(Enum):
51
+ custom_serialized_object = 67
52
+ null = 78
53
+ object = 79
54
+ variable_reference = 82
55
+ php_6_string = 83
56
+ array = 97
57
+ bool = 98
58
+ float = 100
59
+ int = 105
60
+ php_3_object = 111
61
+ object_reference = 114
62
+ string = 115
63
+
64
+ class BoolValue(Enum):
65
+ false = 48
66
+ true = 49
67
+ SEQ_FIELDS = ["type", "contents"]
68
+ def __init__(self, _io, _parent=None, _root=None):
69
+ self._io = _io
70
+ self._parent = _parent
71
+ self._root = _root if _root else self
72
+ self._debug = collections.defaultdict(dict)
73
+
74
+ def _read(self):
75
+ self._debug['type']['start'] = self._io.pos()
76
+ self.type = KaitaiStream.resolve_enum(PhpSerializedValue.ValueType, self._io.read_u1())
77
+ self._debug['type']['end'] = self._io.pos()
78
+ self._debug['contents']['start'] = self._io.pos()
79
+ _on = self.type
80
+ if _on == PhpSerializedValue.ValueType.custom_serialized_object:
81
+ self.contents = PhpSerializedValue.CustomSerializedObjectContents(self._io, self, self._root)
82
+ self.contents._read()
83
+ elif _on == PhpSerializedValue.ValueType.php_3_object:
84
+ self.contents = PhpSerializedValue.Php3ObjectContents(self._io, self, self._root)
85
+ self.contents._read()
86
+ elif _on == PhpSerializedValue.ValueType.object:
87
+ self.contents = PhpSerializedValue.ObjectContents(self._io, self, self._root)
88
+ self.contents._read()
89
+ elif _on == PhpSerializedValue.ValueType.variable_reference:
90
+ self.contents = PhpSerializedValue.IntContents(self._io, self, self._root)
91
+ self.contents._read()
92
+ elif _on == PhpSerializedValue.ValueType.php_6_string:
93
+ self.contents = PhpSerializedValue.StringContents(self._io, self, self._root)
94
+ self.contents._read()
95
+ elif _on == PhpSerializedValue.ValueType.float:
96
+ self.contents = PhpSerializedValue.FloatContents(self._io, self, self._root)
97
+ self.contents._read()
98
+ elif _on == PhpSerializedValue.ValueType.object_reference:
99
+ self.contents = PhpSerializedValue.IntContents(self._io, self, self._root)
100
+ self.contents._read()
101
+ elif _on == PhpSerializedValue.ValueType.null:
102
+ self.contents = PhpSerializedValue.NullContents(self._io, self, self._root)
103
+ self.contents._read()
104
+ elif _on == PhpSerializedValue.ValueType.bool:
105
+ self.contents = PhpSerializedValue.BoolContents(self._io, self, self._root)
106
+ self.contents._read()
107
+ elif _on == PhpSerializedValue.ValueType.int:
108
+ self.contents = PhpSerializedValue.IntContents(self._io, self, self._root)
109
+ self.contents._read()
110
+ elif _on == PhpSerializedValue.ValueType.array:
111
+ self.contents = PhpSerializedValue.ArrayContents(self._io, self, self._root)
112
+ self.contents._read()
113
+ elif _on == PhpSerializedValue.ValueType.string:
114
+ self.contents = PhpSerializedValue.StringContents(self._io, self, self._root)
115
+ self.contents._read()
116
+ self._debug['contents']['end'] = self._io.pos()
117
+
118
+ class CountPrefixedMapping(KaitaiStruct):
119
+ """A mapping (a sequence of key-value pairs) prefixed with its size."""
120
+ SEQ_FIELDS = ["num_entries_dec", "opening_brace", "entries", "closing_brace"]
121
+ def __init__(self, _io, _parent=None, _root=None):
122
+ self._io = _io
123
+ self._parent = _parent
124
+ self._root = _root if _root else self
125
+ self._debug = collections.defaultdict(dict)
126
+
127
+ def _read(self):
128
+ self._debug['num_entries_dec']['start'] = self._io.pos()
129
+ self.num_entries_dec = (self._io.read_bytes_term(58, False, True, True)).decode(u"ASCII")
130
+ self._debug['num_entries_dec']['end'] = self._io.pos()
131
+ self._debug['opening_brace']['start'] = self._io.pos()
132
+ self.opening_brace = self._io.read_bytes(1)
133
+ self._debug['opening_brace']['end'] = self._io.pos()
134
+ if not self.opening_brace == b"\x7B":
135
+ raise kaitaistruct.ValidationNotEqualError(b"\x7B", self.opening_brace, self._io, u"/types/count_prefixed_mapping/seq/1")
136
+ self._debug['entries']['start'] = self._io.pos()
137
+ self.entries = [None] * (self.num_entries)
138
+ for i in range(self.num_entries):
139
+ if not 'arr' in self._debug['entries']:
140
+ self._debug['entries']['arr'] = []
141
+ self._debug['entries']['arr'].append({'start': self._io.pos()})
142
+ _t_entries = PhpSerializedValue.MappingEntry(self._io, self, self._root)
143
+ _t_entries._read()
144
+ self.entries[i] = _t_entries
145
+ self._debug['entries']['arr'][i]['end'] = self._io.pos()
146
+
147
+ self._debug['entries']['end'] = self._io.pos()
148
+ self._debug['closing_brace']['start'] = self._io.pos()
149
+ self.closing_brace = self._io.read_bytes(1)
150
+ self._debug['closing_brace']['end'] = self._io.pos()
151
+ if not self.closing_brace == b"\x7D":
152
+ raise kaitaistruct.ValidationNotEqualError(b"\x7D", self.closing_brace, self._io, u"/types/count_prefixed_mapping/seq/3")
153
+
154
+ @property
155
+ def num_entries(self):
156
+ """The number of key-value pairs in the mapping, parsed as an integer.
157
+ """
158
+ if hasattr(self, '_m_num_entries'):
159
+ return self._m_num_entries if hasattr(self, '_m_num_entries') else None
160
+
161
+ self._m_num_entries = int(self.num_entries_dec)
162
+ return self._m_num_entries if hasattr(self, '_m_num_entries') else None
163
+
164
+
165
+ class FloatContents(KaitaiStruct):
166
+ """The contents of a floating-point value."""
167
+ SEQ_FIELDS = ["colon", "value_dec"]
168
+ def __init__(self, _io, _parent=None, _root=None):
169
+ self._io = _io
170
+ self._parent = _parent
171
+ self._root = _root if _root else self
172
+ self._debug = collections.defaultdict(dict)
173
+
174
+ def _read(self):
175
+ self._debug['colon']['start'] = self._io.pos()
176
+ self.colon = self._io.read_bytes(1)
177
+ self._debug['colon']['end'] = self._io.pos()
178
+ if not self.colon == b"\x3A":
179
+ raise kaitaistruct.ValidationNotEqualError(b"\x3A", self.colon, self._io, u"/types/float_contents/seq/0")
180
+ self._debug['value_dec']['start'] = self._io.pos()
181
+ self.value_dec = (self._io.read_bytes_term(59, False, True, True)).decode(u"ASCII")
182
+ self._debug['value_dec']['end'] = self._io.pos()
183
+
184
+
185
+ class LengthPrefixedQuotedString(KaitaiStruct):
186
+ """A quoted string prefixed with its length.
187
+
188
+ Despite the quotes surrounding the string data, it can contain
189
+ arbitrary bytes, which are never escaped in any way.
190
+ This does not cause any ambiguities when parsing - the bounds of
191
+ the string are determined only by the length field, not by the quotes.
192
+ """
193
+ SEQ_FIELDS = ["len_data_dec", "opening_quote", "data", "closing_quote"]
194
+ def __init__(self, _io, _parent=None, _root=None):
195
+ self._io = _io
196
+ self._parent = _parent
197
+ self._root = _root if _root else self
198
+ self._debug = collections.defaultdict(dict)
199
+
200
+ def _read(self):
201
+ self._debug['len_data_dec']['start'] = self._io.pos()
202
+ self.len_data_dec = (self._io.read_bytes_term(58, False, True, True)).decode(u"ASCII")
203
+ self._debug['len_data_dec']['end'] = self._io.pos()
204
+ self._debug['opening_quote']['start'] = self._io.pos()
205
+ self.opening_quote = self._io.read_bytes(1)
206
+ self._debug['opening_quote']['end'] = self._io.pos()
207
+ if not self.opening_quote == b"\x22":
208
+ raise kaitaistruct.ValidationNotEqualError(b"\x22", self.opening_quote, self._io, u"/types/length_prefixed_quoted_string/seq/1")
209
+ self._debug['data']['start'] = self._io.pos()
210
+ self.data = self._io.read_bytes(self.len_data)
211
+ self._debug['data']['end'] = self._io.pos()
212
+ self._debug['closing_quote']['start'] = self._io.pos()
213
+ self.closing_quote = self._io.read_bytes(1)
214
+ self._debug['closing_quote']['end'] = self._io.pos()
215
+ if not self.closing_quote == b"\x22":
216
+ raise kaitaistruct.ValidationNotEqualError(b"\x22", self.closing_quote, self._io, u"/types/length_prefixed_quoted_string/seq/3")
217
+
218
+ @property
219
+ def len_data(self):
220
+ """The length of the string's contents in bytes, parsed as an integer.
221
+ The quotes are not counted in this size number.
222
+ """
223
+ if hasattr(self, '_m_len_data'):
224
+ return self._m_len_data if hasattr(self, '_m_len_data') else None
225
+
226
+ self._m_len_data = int(self.len_data_dec)
227
+ return self._m_len_data if hasattr(self, '_m_len_data') else None
228
+
229
+
230
+ class ObjectContents(KaitaiStruct):
231
+ """The contents of an object value serialized in the default format.
232
+ Unlike its PHP 3 counterpart, it contains a class name.
233
+ """
234
+ SEQ_FIELDS = ["colon1", "class_name", "colon2", "properties"]
235
+ def __init__(self, _io, _parent=None, _root=None):
236
+ self._io = _io
237
+ self._parent = _parent
238
+ self._root = _root if _root else self
239
+ self._debug = collections.defaultdict(dict)
240
+
241
+ def _read(self):
242
+ self._debug['colon1']['start'] = self._io.pos()
243
+ self.colon1 = self._io.read_bytes(1)
244
+ self._debug['colon1']['end'] = self._io.pos()
245
+ if not self.colon1 == b"\x3A":
246
+ raise kaitaistruct.ValidationNotEqualError(b"\x3A", self.colon1, self._io, u"/types/object_contents/seq/0")
247
+ self._debug['class_name']['start'] = self._io.pos()
248
+ self.class_name = PhpSerializedValue.LengthPrefixedQuotedString(self._io, self, self._root)
249
+ self.class_name._read()
250
+ self._debug['class_name']['end'] = self._io.pos()
251
+ self._debug['colon2']['start'] = self._io.pos()
252
+ self.colon2 = self._io.read_bytes(1)
253
+ self._debug['colon2']['end'] = self._io.pos()
254
+ if not self.colon2 == b"\x3A":
255
+ raise kaitaistruct.ValidationNotEqualError(b"\x3A", self.colon2, self._io, u"/types/object_contents/seq/2")
256
+ self._debug['properties']['start'] = self._io.pos()
257
+ self.properties = PhpSerializedValue.CountPrefixedMapping(self._io, self, self._root)
258
+ self.properties._read()
259
+ self._debug['properties']['end'] = self._io.pos()
260
+
261
+
262
+ class ArrayContents(KaitaiStruct):
263
+ """The contents of an array value."""
264
+ SEQ_FIELDS = ["colon", "elements"]
265
+ def __init__(self, _io, _parent=None, _root=None):
266
+ self._io = _io
267
+ self._parent = _parent
268
+ self._root = _root if _root else self
269
+ self._debug = collections.defaultdict(dict)
270
+
271
+ def _read(self):
272
+ self._debug['colon']['start'] = self._io.pos()
273
+ self.colon = self._io.read_bytes(1)
274
+ self._debug['colon']['end'] = self._io.pos()
275
+ if not self.colon == b"\x3A":
276
+ raise kaitaistruct.ValidationNotEqualError(b"\x3A", self.colon, self._io, u"/types/array_contents/seq/0")
277
+ self._debug['elements']['start'] = self._io.pos()
278
+ self.elements = PhpSerializedValue.CountPrefixedMapping(self._io, self, self._root)
279
+ self.elements._read()
280
+ self._debug['elements']['end'] = self._io.pos()
281
+
282
+
283
+ class CustomSerializedObjectContents(KaitaiStruct):
284
+ """The contents of an object value that implements a custom
285
+ serialized format using `Serializable`.
286
+ """
287
+ SEQ_FIELDS = ["colon1", "class_name", "colon2", "len_data_dec", "opening_brace", "data", "closing_quote"]
288
+ def __init__(self, _io, _parent=None, _root=None):
289
+ self._io = _io
290
+ self._parent = _parent
291
+ self._root = _root if _root else self
292
+ self._debug = collections.defaultdict(dict)
293
+
294
+ def _read(self):
295
+ self._debug['colon1']['start'] = self._io.pos()
296
+ self.colon1 = self._io.read_bytes(1)
297
+ self._debug['colon1']['end'] = self._io.pos()
298
+ if not self.colon1 == b"\x3A":
299
+ raise kaitaistruct.ValidationNotEqualError(b"\x3A", self.colon1, self._io, u"/types/custom_serialized_object_contents/seq/0")
300
+ self._debug['class_name']['start'] = self._io.pos()
301
+ self.class_name = PhpSerializedValue.LengthPrefixedQuotedString(self._io, self, self._root)
302
+ self.class_name._read()
303
+ self._debug['class_name']['end'] = self._io.pos()
304
+ self._debug['colon2']['start'] = self._io.pos()
305
+ self.colon2 = self._io.read_bytes(1)
306
+ self._debug['colon2']['end'] = self._io.pos()
307
+ if not self.colon2 == b"\x3A":
308
+ raise kaitaistruct.ValidationNotEqualError(b"\x3A", self.colon2, self._io, u"/types/custom_serialized_object_contents/seq/2")
309
+ self._debug['len_data_dec']['start'] = self._io.pos()
310
+ self.len_data_dec = (self._io.read_bytes_term(58, False, True, True)).decode(u"ASCII")
311
+ self._debug['len_data_dec']['end'] = self._io.pos()
312
+ self._debug['opening_brace']['start'] = self._io.pos()
313
+ self.opening_brace = self._io.read_bytes(1)
314
+ self._debug['opening_brace']['end'] = self._io.pos()
315
+ if not self.opening_brace == b"\x7B":
316
+ raise kaitaistruct.ValidationNotEqualError(b"\x7B", self.opening_brace, self._io, u"/types/custom_serialized_object_contents/seq/4")
317
+ self._debug['data']['start'] = self._io.pos()
318
+ self.data = self._io.read_bytes(self.len_data)
319
+ self._debug['data']['end'] = self._io.pos()
320
+ self._debug['closing_quote']['start'] = self._io.pos()
321
+ self.closing_quote = self._io.read_bytes(1)
322
+ self._debug['closing_quote']['end'] = self._io.pos()
323
+ if not self.closing_quote == b"\x7D":
324
+ raise kaitaistruct.ValidationNotEqualError(b"\x7D", self.closing_quote, self._io, u"/types/custom_serialized_object_contents/seq/6")
325
+
326
+ @property
327
+ def len_data(self):
328
+ """The length of the serialized data in bytes, parsed as an integer.
329
+ The braces are not counted in this length number.
330
+ """
331
+ if hasattr(self, '_m_len_data'):
332
+ return self._m_len_data if hasattr(self, '_m_len_data') else None
333
+
334
+ self._m_len_data = int(self.len_data_dec)
335
+ return self._m_len_data if hasattr(self, '_m_len_data') else None
336
+
337
+
338
+ class NullContents(KaitaiStruct):
339
+ """The contents of a null value (`value_type::null`). This structure
340
+ contains no actual data, since there is only a single `NULL` value.
341
+ """
342
+ SEQ_FIELDS = ["semicolon"]
343
+ def __init__(self, _io, _parent=None, _root=None):
344
+ self._io = _io
345
+ self._parent = _parent
346
+ self._root = _root if _root else self
347
+ self._debug = collections.defaultdict(dict)
348
+
349
+ def _read(self):
350
+ self._debug['semicolon']['start'] = self._io.pos()
351
+ self.semicolon = self._io.read_bytes(1)
352
+ self._debug['semicolon']['end'] = self._io.pos()
353
+ if not self.semicolon == b"\x3B":
354
+ raise kaitaistruct.ValidationNotEqualError(b"\x3B", self.semicolon, self._io, u"/types/null_contents/seq/0")
355
+
356
+
357
+ class Php3ObjectContents(KaitaiStruct):
358
+ """The contents of a PHP 3 object value. Unlike its counterpart in PHP 4
359
+ and above, it does not contain a class name.
360
+ """
361
+ SEQ_FIELDS = ["colon", "properties"]
362
+ def __init__(self, _io, _parent=None, _root=None):
363
+ self._io = _io
364
+ self._parent = _parent
365
+ self._root = _root if _root else self
366
+ self._debug = collections.defaultdict(dict)
367
+
368
+ def _read(self):
369
+ self._debug['colon']['start'] = self._io.pos()
370
+ self.colon = self._io.read_bytes(1)
371
+ self._debug['colon']['end'] = self._io.pos()
372
+ if not self.colon == b"\x3A":
373
+ raise kaitaistruct.ValidationNotEqualError(b"\x3A", self.colon, self._io, u"/types/php_3_object_contents/seq/0")
374
+ self._debug['properties']['start'] = self._io.pos()
375
+ self.properties = PhpSerializedValue.CountPrefixedMapping(self._io, self, self._root)
376
+ self.properties._read()
377
+ self._debug['properties']['end'] = self._io.pos()
378
+
379
+
380
+ class BoolContents(KaitaiStruct):
381
+ """The contents of a boolean value (`value_type::bool`)."""
382
+ SEQ_FIELDS = ["colon", "value_dec", "semicolon"]
383
+ def __init__(self, _io, _parent=None, _root=None):
384
+ self._io = _io
385
+ self._parent = _parent
386
+ self._root = _root if _root else self
387
+ self._debug = collections.defaultdict(dict)
388
+
389
+ def _read(self):
390
+ self._debug['colon']['start'] = self._io.pos()
391
+ self.colon = self._io.read_bytes(1)
392
+ self._debug['colon']['end'] = self._io.pos()
393
+ if not self.colon == b"\x3A":
394
+ raise kaitaistruct.ValidationNotEqualError(b"\x3A", self.colon, self._io, u"/types/bool_contents/seq/0")
395
+ self._debug['value_dec']['start'] = self._io.pos()
396
+ self.value_dec = KaitaiStream.resolve_enum(PhpSerializedValue.BoolValue, self._io.read_u1())
397
+ self._debug['value_dec']['end'] = self._io.pos()
398
+ self._debug['semicolon']['start'] = self._io.pos()
399
+ self.semicolon = self._io.read_bytes(1)
400
+ self._debug['semicolon']['end'] = self._io.pos()
401
+ if not self.semicolon == b"\x3B":
402
+ raise kaitaistruct.ValidationNotEqualError(b"\x3B", self.semicolon, self._io, u"/types/bool_contents/seq/2")
403
+
404
+ @property
405
+ def value(self):
406
+ """The value of the `bool`, parsed as a boolean."""
407
+ if hasattr(self, '_m_value'):
408
+ return self._m_value if hasattr(self, '_m_value') else None
409
+
410
+ self._m_value = self.value_dec == PhpSerializedValue.BoolValue.true
411
+ return self._m_value if hasattr(self, '_m_value') else None
412
+
413
+
414
+ class StringContents(KaitaiStruct):
415
+ """The contents of a string value.
416
+
417
+ Note: PHP strings can contain arbitrary byte sequences.
418
+ They are not necessarily valid text in any specific encoding.
419
+ """
420
+ SEQ_FIELDS = ["colon", "string", "semicolon"]
421
+ def __init__(self, _io, _parent=None, _root=None):
422
+ self._io = _io
423
+ self._parent = _parent
424
+ self._root = _root if _root else self
425
+ self._debug = collections.defaultdict(dict)
426
+
427
+ def _read(self):
428
+ self._debug['colon']['start'] = self._io.pos()
429
+ self.colon = self._io.read_bytes(1)
430
+ self._debug['colon']['end'] = self._io.pos()
431
+ if not self.colon == b"\x3A":
432
+ raise kaitaistruct.ValidationNotEqualError(b"\x3A", self.colon, self._io, u"/types/string_contents/seq/0")
433
+ self._debug['string']['start'] = self._io.pos()
434
+ self.string = PhpSerializedValue.LengthPrefixedQuotedString(self._io, self, self._root)
435
+ self.string._read()
436
+ self._debug['string']['end'] = self._io.pos()
437
+ self._debug['semicolon']['start'] = self._io.pos()
438
+ self.semicolon = self._io.read_bytes(1)
439
+ self._debug['semicolon']['end'] = self._io.pos()
440
+ if not self.semicolon == b"\x3B":
441
+ raise kaitaistruct.ValidationNotEqualError(b"\x3B", self.semicolon, self._io, u"/types/string_contents/seq/2")
442
+
443
+ @property
444
+ def value(self):
445
+ """The value of the string, as a byte array."""
446
+ if hasattr(self, '_m_value'):
447
+ return self._m_value if hasattr(self, '_m_value') else None
448
+
449
+ self._m_value = self.string.data
450
+ return self._m_value if hasattr(self, '_m_value') else None
451
+
452
+
453
+ class IntContents(KaitaiStruct):
454
+ """The contents of an integer-like value:
455
+ either an actual integer (`value_type::int`) or a reference
456
+ (`value_type::variable_reference`, `value_type::object_reference`).
457
+ """
458
+ SEQ_FIELDS = ["colon", "value_dec"]
459
+ def __init__(self, _io, _parent=None, _root=None):
460
+ self._io = _io
461
+ self._parent = _parent
462
+ self._root = _root if _root else self
463
+ self._debug = collections.defaultdict(dict)
464
+
465
+ def _read(self):
466
+ self._debug['colon']['start'] = self._io.pos()
467
+ self.colon = self._io.read_bytes(1)
468
+ self._debug['colon']['end'] = self._io.pos()
469
+ if not self.colon == b"\x3A":
470
+ raise kaitaistruct.ValidationNotEqualError(b"\x3A", self.colon, self._io, u"/types/int_contents/seq/0")
471
+ self._debug['value_dec']['start'] = self._io.pos()
472
+ self.value_dec = (self._io.read_bytes_term(59, False, True, True)).decode(u"ASCII")
473
+ self._debug['value_dec']['end'] = self._io.pos()
474
+
475
+ @property
476
+ def value(self):
477
+ """The value of the `int`, parsed as an integer."""
478
+ if hasattr(self, '_m_value'):
479
+ return self._m_value if hasattr(self, '_m_value') else None
480
+
481
+ self._m_value = int(self.value_dec)
482
+ return self._m_value if hasattr(self, '_m_value') else None
483
+
484
+
485
+ class MappingEntry(KaitaiStruct):
486
+ """A mapping entry consisting of a key and a value."""
487
+ SEQ_FIELDS = ["key", "value"]
488
+ def __init__(self, _io, _parent=None, _root=None):
489
+ self._io = _io
490
+ self._parent = _parent
491
+ self._root = _root if _root else self
492
+ self._debug = collections.defaultdict(dict)
493
+
494
+ def _read(self):
495
+ self._debug['key']['start'] = self._io.pos()
496
+ self.key = PhpSerializedValue(self._io)
497
+ self.key._read()
498
+ self._debug['key']['end'] = self._io.pos()
499
+ self._debug['value']['start'] = self._io.pos()
500
+ self.value = PhpSerializedValue(self._io)
501
+ self.value._read()
502
+ self._debug['value']['end'] = self._io.pos()
503
+
504
+
505
+