ReverseBox 0.49.2__tar.gz → 0.49.4__tar.gz
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.
- {reversebox-0.49.2 → reversebox-0.49.4}/PKG-INFO +1 -1
- {reversebox-0.49.2 → reversebox-0.49.4}/ReverseBox.egg-info/PKG-INFO +1 -1
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/compression/compression_refpack.py +9 -1
- reversebox-0.49.4/reversebox/hash/hash_djb2.py +38 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/decoders/compressed_decoder_encoder.py +2 -1
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/decoders/pvrtexlib_decoder_encoder.py +2 -1
- {reversebox-0.49.2 → reversebox-0.49.4}/setup.py +1 -1
- reversebox-0.49.2/reversebox/hash/hash_djb2.py +0 -27
- {reversebox-0.49.2 → reversebox-0.49.4}/LICENSE +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/README.md +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/ReverseBox.egg-info/SOURCES.txt +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/ReverseBox.egg-info/dependency_links.txt +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/ReverseBox.egg-info/requires.txt +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/ReverseBox.egg-info/top_level.txt +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/__init__.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/checksum/__init__.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/checksum/checksum_adler32.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/checksum/checksum_cocos2d_pvr.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/checksum/checksum_fletcher16.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/checksum/checksum_fletcher32.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/checksum/checksum_internet_ipv4_header.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/checksum/checksum_sum8.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/checksum/checksum_sum8_2s_complement.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/checksum/checksum_unix_sum_bsd16.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/checksum/checksum_unix_sum_sysv.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/checksum/checksum_xor8.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/common/__init__.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/common/common.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/common/logger.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/common/numpy_helper_functions.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/compression/__init__.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/compression/compression_jcalg1.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/compression/compression_lz4.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/compression/compression_lzo.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/compression/compression_mio0.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/compression/compression_re_tiyoruga_dat.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/compression/compression_zlib.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/crc/__init__.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/crc/crc16_arc.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/crc/crc16_ccitt.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/crc/crc16_dnp.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/crc/crc16_ea_crcf.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/crc/crc16_kermit.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/crc/crc16_modbus.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/crc/crc16_sick.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/crc/crc32_asobo.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/crc/crc32_iso_hdlc.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/crc/crc64_asobo.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/crc/crc64_go_iso.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/crc/crc8.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/crc/crc_unix_cksum.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/encryption/__init__.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/encryption/encryption_hatch_engine.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/encryption/encryption_rot13.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/encryption/encryption_xor_basic.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/encryption/encryption_xor_basic_key_guesser.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/encryption/encryption_xor_gianas_return_zda.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/encryption/encryption_xor_retro64_eco.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/hash/__init__.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/hash/hash_additive.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/hash/hash_ap.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/hash/hash_fnv.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/hash/hash_jenkins_one_at_a_time.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/hash/hash_md2.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/hash/hash_md5.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/hash/hash_murmur3.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/hash/hash_pivotal_games_dat.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/hash/hash_sdbm.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/hash/hash_sha1.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/hash/hash_sha2.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/__init__.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/byte_swap.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/common.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/compression/__init__.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/compression/compression_gst.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/compression/compression_lzw.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/compression/compression_packbits.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/compression/compression_rle_executioners.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/compression/compression_rle_tga.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/compression/compression_zlib.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/decoders/__init__.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/decoders/bumpmap_decoder.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/decoders/gst_decoder_encoder.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/decoders/n64_decoder.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/decoders/yuv_decoder.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/file_formats/__init__.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/file_formats/image_dds.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/image_decoder.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/image_encoder.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/image_formats.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/palettes/__init__.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/palettes/palette_random.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/palettes/palette_vga.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/pillow_wrapper.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/swizzling/__init__.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/swizzling/swizzle_3ds.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/swizzling/swizzle_bc.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/swizzling/swizzle_cmpr.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/swizzling/swizzle_gamecube.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/swizzling/swizzle_gst.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/swizzling/swizzle_morton.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/swizzling/swizzle_morton_ps4.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/swizzling/swizzle_ps2.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/swizzling/swizzle_ps2_4bit.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/swizzling/swizzle_ps2_suba.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/swizzling/swizzle_psp.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/swizzling/swizzle_psvita_dreamcast.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/swizzling/swizzle_switch.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/swizzling/swizzle_wii_u.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/swizzling/swizzle_x360.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/io_files/__init__.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/io_files/bytes_handler.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/io_files/bytes_helper_functions.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/io_files/check_file.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/io_files/file_handler.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/io_files/mod_handler.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/io_files/translation_text_handler.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/libs/DirectXTex.dll +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/libs/PVRTexLib.dll +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/libs/PVRTexLibWrapper.dll +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/libs/__init__.py +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/reversebox/libs/refpack.dll +0 -0
- {reversebox-0.49.2 → reversebox-0.49.4}/setup.cfg +0 -0
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"""
|
|
2
|
-
Copyright © 2024 Bartłomiej Duda
|
|
2
|
+
Copyright © 2024-2025 Bartłomiej Duda
|
|
3
3
|
License: GPL-3.0 License
|
|
4
4
|
"""
|
|
5
5
|
|
|
6
6
|
import ctypes
|
|
7
|
+
import faulthandler
|
|
7
8
|
from ctypes import c_char
|
|
8
9
|
|
|
9
10
|
from reversebox.common.common import get_dll_path
|
|
@@ -12,6 +13,13 @@ from reversebox.common.common import get_dll_path
|
|
|
12
13
|
|
|
13
14
|
|
|
14
15
|
class RefpackHandler:
|
|
16
|
+
"""
|
|
17
|
+
Compressor/Decompressor for EA Refpack algorithm
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
def __init__(self):
|
|
21
|
+
faulthandler.enable()
|
|
22
|
+
|
|
15
23
|
def compress_data(self, uncompressed_data: bytes) -> bytes:
|
|
16
24
|
if len(uncompressed_data) == 0:
|
|
17
25
|
raise Exception("Data is empty! Nothing to compress!")
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Copyright © 2024-2025 Bartłomiej Duda
|
|
3
|
+
License: GPL-3.0 License
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
# Bernstein's DJB2 hash
|
|
8
|
+
# used in EA BIG VIV EB archives to calculate hash from file paths
|
|
9
|
+
# used in VFS archives from "Room of Prey" Android games
|
|
10
|
+
class DJB2Handler:
|
|
11
|
+
def __init__(self):
|
|
12
|
+
pass
|
|
13
|
+
|
|
14
|
+
@staticmethod
|
|
15
|
+
def calculate_djb2_hash_from_string(input_string: str, hash_size: int = 8) -> int:
|
|
16
|
+
h = 5381
|
|
17
|
+
if hash_size == 8:
|
|
18
|
+
m = 0xFFFFFFFFFFFFFFFF
|
|
19
|
+
elif hash_size == 4:
|
|
20
|
+
m = 0xFFFFFFFF
|
|
21
|
+
else:
|
|
22
|
+
raise Exception("Not supported hash size!")
|
|
23
|
+
for c in input_string:
|
|
24
|
+
h = (((h * 33) & m) + ord(c)) & m
|
|
25
|
+
return h & m
|
|
26
|
+
|
|
27
|
+
@staticmethod
|
|
28
|
+
def calculate_djb2_hash_from_bytes(input_bytes: bytes, hash_size: int = 8) -> int:
|
|
29
|
+
h = 5381
|
|
30
|
+
if hash_size == 8:
|
|
31
|
+
m = 0xFFFFFFFFFFFFFFFF
|
|
32
|
+
elif hash_size == 4:
|
|
33
|
+
m = 0xFFFFFFFF
|
|
34
|
+
else:
|
|
35
|
+
raise Exception("Not supported hash size!")
|
|
36
|
+
for b in input_bytes:
|
|
37
|
+
h = (((h * 33) & m) + b) & m
|
|
38
|
+
return h & m
|
{reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/decoders/compressed_decoder_encoder.py
RENAMED
|
@@ -4,6 +4,7 @@ License: GPL-3.0 License
|
|
|
4
4
|
"""
|
|
5
5
|
|
|
6
6
|
import ctypes
|
|
7
|
+
import faulthandler
|
|
7
8
|
from ctypes import (
|
|
8
9
|
POINTER,
|
|
9
10
|
Structure,
|
|
@@ -46,7 +47,7 @@ class CompressedImageDecoderEncoder:
|
|
|
46
47
|
"""
|
|
47
48
|
|
|
48
49
|
def __init__(self):
|
|
49
|
-
|
|
50
|
+
faulthandler.enable()
|
|
50
51
|
|
|
51
52
|
def _init_dxgi_image(self, img_width: int, img_height: int, format_number: int,
|
|
52
53
|
row_pitch: int, slice_pitch: int, image_data: bytes) -> DXGIImage:
|
{reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/decoders/pvrtexlib_decoder_encoder.py
RENAMED
|
@@ -4,6 +4,7 @@ License: GPL-3.0 License
|
|
|
4
4
|
"""
|
|
5
5
|
|
|
6
6
|
import ctypes
|
|
7
|
+
import faulthandler
|
|
7
8
|
from ctypes import POINTER, c_int, c_uint8, cast, create_string_buffer
|
|
8
9
|
|
|
9
10
|
from reversebox.common.common import get_dll_path
|
|
@@ -87,7 +88,7 @@ class PvrTexlibImageDecoderEncoder:
|
|
|
87
88
|
"""
|
|
88
89
|
|
|
89
90
|
def __init__(self):
|
|
90
|
-
|
|
91
|
+
faulthandler.enable()
|
|
91
92
|
|
|
92
93
|
def _get_pvrtexlib_format_number(self, image_format: ImageFormats) -> int:
|
|
93
94
|
"""
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Copyright © 2024-2025 Bartłomiej Duda
|
|
3
|
-
License: GPL-3.0 License
|
|
4
|
-
"""
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
# Bernstein's DJB2 hash
|
|
8
|
-
# used in EA BIG VIV EB archives to calculate hash from file paths
|
|
9
|
-
class DJB2Handler:
|
|
10
|
-
def __init__(self):
|
|
11
|
-
pass
|
|
12
|
-
|
|
13
|
-
@staticmethod
|
|
14
|
-
def calculate_djb2_hash_from_string(input_string: str) -> int:
|
|
15
|
-
h = 5381
|
|
16
|
-
m = 0xFFFFFFFFFFFFFFFF
|
|
17
|
-
for c in input_string:
|
|
18
|
-
h = (((h * 33) & m) + ord(c)) & m
|
|
19
|
-
return h & m
|
|
20
|
-
|
|
21
|
-
@staticmethod
|
|
22
|
-
def calculate_djb2_hash_from_bytes(input_bytes: bytes) -> int:
|
|
23
|
-
h = 5381
|
|
24
|
-
m = 0xFFFFFFFFFFFFFFFF
|
|
25
|
-
for b in input_bytes:
|
|
26
|
-
h = (((h * 33) & m) + b) & m
|
|
27
|
-
return h & m
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{reversebox-0.49.2 → reversebox-0.49.4}/reversebox/checksum/checksum_internet_ipv4_header.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{reversebox-0.49.2 → reversebox-0.49.4}/reversebox/compression/compression_re_tiyoruga_dat.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{reversebox-0.49.2 → reversebox-0.49.4}/reversebox/encryption/encryption_xor_basic_key_guesser.py
RENAMED
|
File without changes
|
{reversebox-0.49.2 → reversebox-0.49.4}/reversebox/encryption/encryption_xor_gianas_return_zda.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/compression/compression_packbits.py
RENAMED
|
File without changes
|
{reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/compression/compression_rle_executioners.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{reversebox-0.49.2 → reversebox-0.49.4}/reversebox/image/swizzling/swizzle_psvita_dreamcast.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|