sxs 2024.0.33__tar.gz → 2024.0.35__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.
- {sxs-2024.0.33 → sxs-2024.0.35}/CITATION.cff +1 -1
- {sxs-2024.0.33 → sxs-2024.0.35}/PKG-INFO +1 -1
- sxs-2024.0.35/sxs/__version__.py +1 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/simulations/local.py +48 -20
- sxs-2024.0.33/sxs/__version__.py +0 -1
- {sxs-2024.0.33 → sxs-2024.0.35}/.codecov.yml +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/.github/dependabot.yml +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/.github/scripts/parse_bump_rule.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/.github/workflows/build.yml +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/.github/workflows/pr_rtd_link.yml +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/.gitignore +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/.readthedocs.yaml +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/LICENSE +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/README.md +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/docs/api/catalog.md +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/docs/api/horizons.md +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/docs/api/load.md +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/docs/api/metadata.md +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/docs/api/simulation.md +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/docs/api/simulations.md +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/docs/api/time_series.md +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/docs/api/waveforms.md +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/docs/html/main.html +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/docs/images/favicon.ico +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/docs/index.md +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/docs/javascript/mathjax.js +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/docs/julia.md +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/docs/mathematica.md +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/docs/stylesheets/extra.css +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/docs/tutorials/00-Introduction.ipynb +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/docs/tutorials/01-Simulations_and_Metadata.ipynb +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/docs/tutorials/02-Simulation.ipynb +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/docs/tutorials/03-Horizons.ipynb +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/docs/tutorials/04-Waveforms.ipynb +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/docs/tutorials/05-PreprocessingForFFTs.ipynb +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/mkdocs.yml +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/pyproject.toml +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/__init__.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/caltechdata/__init__.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/caltechdata/catalog.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/caltechdata/login.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/catalog/__init__.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/catalog/catalog.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/catalog/create.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/catalog/description.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/handlers.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/horizons/__init__.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/horizons/spec_horizons_h5.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/horizons/xor_multishuffle_bzip2.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/julia/GWFrames.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/julia/__init__.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/juliapkg.json +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/metadata/__init__.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/metadata/metadata.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/simulations/__init__.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/simulations/simulation.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/simulations/simulations.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/time_series.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/utilities/__init__.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/utilities/bitwise.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/utilities/decimation/__init__.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/utilities/decimation/greedy_spline.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/utilities/decimation/linear_bisection.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/utilities/decimation/peak_greed.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/utilities/decimation/suppression.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/utilities/dicts.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/utilities/downloads.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/utilities/files.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/utilities/formats.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/utilities/inspire.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/utilities/lvcnr/__init__.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/utilities/lvcnr/comparisons.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/utilities/lvcnr/conversion.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/utilities/lvcnr/dataset.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/utilities/lvcnr/horizons.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/utilities/lvcnr/metadata.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/utilities/lvcnr/waveform_amp_phase.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/utilities/lvcnr/waveforms.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/utilities/monotonicity.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/utilities/pretty_print.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/utilities/references/__init__.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/utilities/references/ads.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/utilities/references/arxiv.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/utilities/references/fairchild_report.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/utilities/references/inspire.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/utilities/references/journal_abbreviations.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/utilities/references/references.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/utilities/select.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/utilities/smooth_functions.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/utilities/sxs_directories.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/utilities/sxs_identifiers.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/utilities/url.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/waveforms/__init__.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/waveforms/alignment.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/waveforms/format_handlers/__init__.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/waveforms/format_handlers/grathena.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/waveforms/format_handlers/lvc.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/waveforms/format_handlers/nrar.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/waveforms/format_handlers/rotating_paired_diff_multishuffle_bzip2.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/waveforms/format_handlers/rotating_paired_xor_multishuffle_bzip2.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/waveforms/format_handlers/spectre_cce_v1.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/waveforms/memory.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/waveforms/mode_utilities.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/waveforms/transformations.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/waveforms/waveform_grid.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/waveforms/waveform_mixin.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/waveforms/waveform_modes.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/waveforms/waveform_signal.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/zenodo/__init__.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/zenodo/api/__init__.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/zenodo/api/deposit.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/zenodo/api/login.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/zenodo/api/records.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/zenodo/catalog.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/zenodo/creators.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/zenodo/simannex.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/sxs/zenodo/surrogatemodeling.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/tests/__init__.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/tests/conftest.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/tests/test_catalog.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/tests/test_horizons.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/tests/test_julia.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/tests/test_loader.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/tests/test_metadata.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/tests/test_simulation.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/tests/test_time_series.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/tests/test_transformations.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/tests/test_utilities.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/tests/test_waveform_rotations.py +0 -0
- {sxs-2024.0.33 → sxs-2024.0.35}/tests/test_waveforms.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sxs
|
|
3
|
-
Version: 2024.0.
|
|
3
|
+
Version: 2024.0.35
|
|
4
4
|
Summary: Interface to data produced by the Simulating eXtreme Spacetimes collaboration
|
|
5
5
|
Project-URL: Homepage, https://github.com/sxs-collaboration/sxs
|
|
6
6
|
Project-URL: Documentation, https://sxs.readthedocs.io/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "2024.0.35"
|
|
@@ -65,7 +65,7 @@ def extract_id_from_common_metadata(file, annex_dir):
|
|
|
65
65
|
return key
|
|
66
66
|
|
|
67
67
|
|
|
68
|
-
def local_simulations(annex_dir, compute_md5=False):
|
|
68
|
+
def local_simulations(annex_dir, compute_md5=False, show_progress=False):
|
|
69
69
|
"""
|
|
70
70
|
Walk the annex directory to find and process all simulations
|
|
71
71
|
|
|
@@ -91,6 +91,8 @@ def local_simulations(annex_dir, compute_md5=False):
|
|
|
91
91
|
compute_md5 : bool, optional
|
|
92
92
|
Whether to compute the MD5 hash of each file. Default is
|
|
93
93
|
False.
|
|
94
|
+
show_progress : bool, optional
|
|
95
|
+
Whether to show a progress bar. Default is False.
|
|
94
96
|
|
|
95
97
|
Returns
|
|
96
98
|
-------
|
|
@@ -99,10 +101,24 @@ def local_simulations(annex_dir, compute_md5=False):
|
|
|
99
101
|
"""
|
|
100
102
|
from os import walk
|
|
101
103
|
from ..utilities import md5checksum
|
|
104
|
+
from tqdm import tqdm
|
|
102
105
|
|
|
103
106
|
simulations = {}
|
|
104
107
|
annex_dir = Path(annex_dir).resolve()
|
|
105
108
|
|
|
109
|
+
if show_progress: # Count the number of common-metadata.txt files
|
|
110
|
+
num_files = 0
|
|
111
|
+
for dirpath, dirnames, filenames in walk(annex_dir, topdown=True):
|
|
112
|
+
if Path(dirpath).name.startswith("."):
|
|
113
|
+
dirnames[:] = []
|
|
114
|
+
continue
|
|
115
|
+
if "common-metadata.txt" in filenames:
|
|
116
|
+
if not any(d.startswith("Lev") for d in dirnames):
|
|
117
|
+
continue
|
|
118
|
+
num_files += 1
|
|
119
|
+
dirnames[:] = []
|
|
120
|
+
progress_bar = tqdm(total=num_files, desc="Processing simulations")
|
|
121
|
+
|
|
106
122
|
# The `walk` method can be made *much* faster than the `glob` method
|
|
107
123
|
for dirpath, dirnames, filenames in walk(annex_dir, topdown=True):
|
|
108
124
|
dirpath = Path(dirpath)
|
|
@@ -116,40 +132,47 @@ def local_simulations(annex_dir, compute_md5=False):
|
|
|
116
132
|
if not any(d.startswith("Lev") for d in dirnames):
|
|
117
133
|
continue
|
|
118
134
|
|
|
119
|
-
|
|
135
|
+
if show_progress:
|
|
136
|
+
progress_bar.update(1)
|
|
120
137
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
[d for d in dirnames if d.startswith("Lev")]
|
|
124
|
-
)[-1]
|
|
125
|
-
metadata = Metadata.load(dirpath / highest_lev / "metadata")
|
|
126
|
-
metadata = metadata.add_standard_parameters()
|
|
138
|
+
try:
|
|
139
|
+
key = extract_id_from_common_metadata(dirpath / "common-metadata.txt", annex_dir)
|
|
127
140
|
|
|
128
|
-
|
|
141
|
+
# Find the highest Lev directory and extract the metadata
|
|
142
|
+
highest_lev = sorted(
|
|
143
|
+
[d for d in dirnames if d.startswith("Lev")]
|
|
144
|
+
)[-1]
|
|
145
|
+
metadata = Metadata.load(dirpath / highest_lev / "metadata")
|
|
146
|
+
metadata = metadata.add_standard_parameters()
|
|
129
147
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
148
|
+
metadata["directory"] = str(dirpath.relative_to(annex_dir))
|
|
149
|
+
|
|
150
|
+
metadata["files"] = {
|
|
151
|
+
path_to_invenio(file.relative_to(dirpath)): {
|
|
152
|
+
"link": str(file),
|
|
153
|
+
"size": file.stat().st_size,
|
|
154
|
+
"checksum": md5checksum(file) if compute_md5 else "",
|
|
155
|
+
}
|
|
156
|
+
for file in files_to_upload(dirpath, annex_dir)
|
|
135
157
|
}
|
|
136
|
-
for file in files_to_upload(dirpath, annex_dir)
|
|
137
|
-
}
|
|
138
158
|
|
|
139
|
-
|
|
159
|
+
simulations[key] = metadata
|
|
160
|
+
except KeyboardInterrupt:
|
|
161
|
+
raise
|
|
162
|
+
except Exception as e:
|
|
163
|
+
print(f"Error processing {dirpath}: {e}")
|
|
140
164
|
|
|
141
165
|
dirnames[:] = [] # Don't keep looking for common-metadata.txt files under this directory
|
|
142
166
|
|
|
143
167
|
return simulations
|
|
144
168
|
|
|
145
169
|
|
|
146
|
-
def write_local_simulations(annex_dir, output_file=None):
|
|
170
|
+
def write_local_simulations(annex_dir, output_file=None, compute_md5=False, show_progress=False):
|
|
147
171
|
"""Write the local simulations to a file for use when loading `Simulations`
|
|
148
172
|
|
|
149
173
|
This function calls `local_simulations` to obtain the dictionary,
|
|
150
174
|
but also writes the dictionary to a JSON file.
|
|
151
175
|
|
|
152
|
-
|
|
153
176
|
Parameters
|
|
154
177
|
----------
|
|
155
178
|
annex_dir : (str or Path)
|
|
@@ -159,6 +182,11 @@ def write_local_simulations(annex_dir, output_file=None):
|
|
|
159
182
|
written to `sxs_directory("cache") / "local_simulations.json"`.
|
|
160
183
|
N.B.: If you specify a different file, `sxs.load` will not
|
|
161
184
|
automatically find it.
|
|
185
|
+
compute_md5 : bool, optional
|
|
186
|
+
Whether to compute the MD5 hash of each file. Default is
|
|
187
|
+
False.
|
|
188
|
+
show_progress : bool, optional
|
|
189
|
+
Whether to show a progress bar. Default is False.
|
|
162
190
|
|
|
163
191
|
Returns
|
|
164
192
|
-------
|
|
@@ -168,7 +196,7 @@ def write_local_simulations(annex_dir, output_file=None):
|
|
|
168
196
|
from json import dump
|
|
169
197
|
|
|
170
198
|
# Process the annex directory to find all simulations
|
|
171
|
-
simulations = local_simulations(annex_dir)
|
|
199
|
+
simulations = local_simulations(annex_dir, compute_md5=compute_md5, show_progress=show_progress)
|
|
172
200
|
|
|
173
201
|
# Write the simulations to file
|
|
174
202
|
if output_file is None:
|
sxs-2024.0.33/sxs/__version__.py
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "2024.0.33"
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|