wwvb 5.0.0__tar.gz → 5.0.2__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.
- {wwvb-5.0.0 → wwvb-5.0.2}/.github/workflows/codeql.yml +2 -1
- {wwvb-5.0.0 → wwvb-5.0.2}/.github/workflows/cron.yml +6 -2
- {wwvb-5.0.0 → wwvb-5.0.2}/.github/workflows/release.yml +3 -1
- {wwvb-5.0.0 → wwvb-5.0.2}/.github/workflows/test.yml +6 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/.pre-commit-config.yaml +3 -3
- {wwvb-5.0.0/src/wwvb.egg-info → wwvb-5.0.2}/PKG-INFO +2 -2
- {wwvb-5.0.0 → wwvb-5.0.2}/pyproject.toml +1 -1
- {wwvb-5.0.0 → wwvb-5.0.2}/src/wwvb/__init__.py +1 -2
- {wwvb-5.0.0 → wwvb-5.0.2}/src/wwvb/__version__.py +9 -4
- wwvb-5.0.2/src/wwvb/iersdata.json +1 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/src/wwvb/iersdata.py +1 -1
- {wwvb-5.0.0 → wwvb-5.0.2}/src/wwvb/updateiers.py +2 -2
- {wwvb-5.0.0 → wwvb-5.0.2}/src/wwvb/wwvbtk.py +22 -13
- {wwvb-5.0.0 → wwvb-5.0.2/src/wwvb.egg-info}/PKG-INFO +2 -2
- wwvb-5.0.0/src/wwvb/iersdata.json +0 -1
- {wwvb-5.0.0 → wwvb-5.0.2}/.coveragerc +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/.gitignore +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/LICENSES/Apache-2.0.txt +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/LICENSES/CC0-1.0.txt +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/LICENSES/GPL-3.0-only.txt +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/LICENSES/Unlicense.txt +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/Makefile +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/README.md +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/adafruit_datetime.pyi +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/codecov.yml +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/doc/_static/.empty +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/doc/conf.py +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/doc/index.rst +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/requirements-dev.txt +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/requirements.txt +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/setup.cfg +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/src/uwwvb.py +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/src/wwvb/decode.py +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/src/wwvb/dut1table.py +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/src/wwvb/gen.py +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/src/wwvb/iersdata.json.license +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/src/wwvb/py.typed +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/src/wwvb/tz.py +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/src/wwvb.egg-info/SOURCES.txt +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/src/wwvb.egg-info/dependency_links.txt +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/src/wwvb.egg-info/entry_points.txt +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/src/wwvb.egg-info/requires.txt +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/src/wwvb.egg-info/top_level.txt +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/test/testcli.py +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/test/testdaylight.py +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/test/testls.py +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/test/testpm.py +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/test/testuwwvb.py +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/test/testwwvb.py +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/test/wwvbgen_testcases/1998leapsecond +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/test/wwvbgen_testcases/2012leapsecond +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/test/wwvbgen_testcases/all-headers +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/test/wwvbgen_testcases/bar +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/test/wwvbgen_testcases/both +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/test/wwvbgen_testcases/cradek +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/test/wwvbgen_testcases/duration +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/test/wwvbgen_testcases/enddst-phase +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/test/wwvbgen_testcases/enddst-phase-2 +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/test/wwvbgen_testcases/endleapyear +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/test/wwvbgen_testcases/leapday1 +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/test/wwvbgen_testcases/leapday28 +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/test/wwvbgen_testcases/leapday29 +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/test/wwvbgen_testcases/negleapsecond +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/test/wwvbgen_testcases/nextdst +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/test/wwvbgen_testcases/nextst +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/test/wwvbgen_testcases/nonleapday1 +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/test/wwvbgen_testcases/nonleapday28 +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/test/wwvbgen_testcases/phase +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/test/wwvbgen_testcases/startdst +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/test/wwvbgen_testcases/startdst-phase +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/test/wwvbgen_testcases/startdst-phase-2 +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/test/wwvbgen_testcases/startleapyear +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/test/wwvbgen_testcases/startst +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/test/wwvbgen_testcases/y2k +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/test/wwvbgen_testcases/y2k-1 +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/test/wwvbgen_testcases/y2k1 +0 -0
- {wwvb-5.0.0 → wwvb-5.0.2}/test/wwvbgen_testcases/y2k1-1 +0 -0
@@ -11,7 +11,7 @@ on:
|
|
11
11
|
|
12
12
|
jobs:
|
13
13
|
update-dut1:
|
14
|
-
runs-on: ubuntu-
|
14
|
+
runs-on: ubuntu-24.04
|
15
15
|
if: startswith(github.repository, 'jepler/')
|
16
16
|
steps:
|
17
17
|
|
@@ -21,6 +21,8 @@ jobs:
|
|
21
21
|
run: echo "$GITHUB_CONTEXT"
|
22
22
|
|
23
23
|
- uses: actions/checkout@v4
|
24
|
+
with:
|
25
|
+
persist-credentials: false
|
24
26
|
|
25
27
|
- name: Set up Python 3.10
|
26
28
|
uses: actions/setup-python@v5
|
@@ -37,8 +39,10 @@ jobs:
|
|
37
39
|
run: python -munittest
|
38
40
|
|
39
41
|
- name: Commit updates
|
42
|
+
env:
|
43
|
+
REPO: ${{ github.repository }}
|
40
44
|
run: |
|
41
45
|
git config user.name "${GITHUB_ACTOR} (github actions cron)"
|
42
46
|
git config user.email "${GITHUB_ACTOR}@users.noreply.github.com"
|
43
|
-
git remote set-url --push origin https://${GITHUB_ACTOR}:${{ secrets.GITHUB_TOKEN }}@github.com/$
|
47
|
+
git remote set-url --push origin "https://${GITHUB_ACTOR}:${{ secrets.GITHUB_TOKEN }}@github.com/$REPO"
|
44
48
|
if git commit -m"update iersdata" src/wwvb/iersdata.json; then git push origin HEAD:main; fi
|
@@ -11,7 +11,7 @@ on:
|
|
11
11
|
jobs:
|
12
12
|
release:
|
13
13
|
|
14
|
-
runs-on: ubuntu-
|
14
|
+
runs-on: ubuntu-24.04
|
15
15
|
steps:
|
16
16
|
- name: Dump GitHub context
|
17
17
|
env:
|
@@ -19,6 +19,8 @@ jobs:
|
|
19
19
|
run: echo "$GITHUB_CONTEXT"
|
20
20
|
|
21
21
|
- uses: actions/checkout@v4
|
22
|
+
with:
|
23
|
+
persist-credentials: false
|
22
24
|
|
23
25
|
- name: Set up Python
|
24
26
|
uses: actions/setup-python@v5
|
@@ -22,6 +22,8 @@ jobs:
|
|
22
22
|
python-version: '3.12'
|
23
23
|
|
24
24
|
- uses: actions/checkout@v4
|
25
|
+
with:
|
26
|
+
persist-credentials: false
|
25
27
|
|
26
28
|
- name: Install deps
|
27
29
|
run: python -mpip install -r requirements-dev.txt
|
@@ -52,6 +54,8 @@ jobs:
|
|
52
54
|
runs-on: ${{ matrix.os-version }}
|
53
55
|
steps:
|
54
56
|
- uses: actions/checkout@v4
|
57
|
+
with:
|
58
|
+
persist-credentials: false
|
55
59
|
|
56
60
|
- name: Set up Python
|
57
61
|
uses: actions/setup-python@v5
|
@@ -84,6 +88,8 @@ jobs:
|
|
84
88
|
runs-on: ubuntu-latest
|
85
89
|
steps:
|
86
90
|
- uses: actions/checkout@v4
|
91
|
+
with:
|
92
|
+
persist-credentials: false
|
87
93
|
|
88
94
|
- name: Set up Python
|
89
95
|
uses: actions/setup-python@v5
|
@@ -12,16 +12,16 @@ repos:
|
|
12
12
|
hooks:
|
13
13
|
- id: check-yaml
|
14
14
|
- id: end-of-file-fixer
|
15
|
-
exclude:
|
15
|
+
exclude: src/wwvb/iersdata.json
|
16
16
|
- id: trailing-whitespace
|
17
17
|
exclude: test/wwvbgen_testcases
|
18
18
|
- repo: https://github.com/fsfe/reuse-tool
|
19
|
-
rev:
|
19
|
+
rev: v5.0.2
|
20
20
|
hooks:
|
21
21
|
- id: reuse
|
22
22
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
23
23
|
# Ruff version.
|
24
|
-
rev: v0.
|
24
|
+
rev: v0.11.5
|
25
25
|
hooks:
|
26
26
|
# Run the linter.
|
27
27
|
- id: ruff
|
@@ -19,7 +19,7 @@ dependencies = {file = "requirements.txt"}
|
|
19
19
|
write_to = "src/wwvb/__version__.py"
|
20
20
|
[tool.ruff.lint]
|
21
21
|
select = ["E", "F", "D", "I", "N", "UP", "YTT", "BLE", "B", "FBT", "A", "COM", "C4", "DTZ", "FA", "ISC", "ICN", "PIE", "PYI", "Q", "RET", "SIM", "TID", "TCH", "ARG", "PTH", "C", "R", "W", "FLY", "RUF", "PL"]
|
22
|
-
ignore = ["D203", "D213", "D400", "D415", "ISC001", "E741", "C901", "PLR0911", "PLR2004", "PLR0913"]
|
22
|
+
ignore = ["D203", "D213", "D400", "D415", "ISC001", "E741", "C901", "PLR0911", "PLR2004", "PLR0913", "COM812"]
|
23
23
|
[tool.ruff]
|
24
24
|
line-length = 120
|
25
25
|
[project]
|
@@ -49,7 +49,6 @@ def _maybe_warn_update(dt: datetime.date, stacklevel: int = 1) -> None:
|
|
49
49
|
# If the date is less than 300 days after today, there should be (possibly)
|
50
50
|
# prospective available now.
|
51
51
|
today = datetime.datetime.now(tz=datetime.timezone.utc).date()
|
52
|
-
print(f"_mwu {today=!r} {dt=!r} {iersdata.end=!r}")
|
53
52
|
if _date(dt) < today + datetime.timedelta(days=330):
|
54
53
|
warnings.warn(
|
55
54
|
"Note: Running `updateiers` may provide better DUT1 and LS information",
|
@@ -727,7 +726,7 @@ class WWVBMinuteIERS(WWVBMinute):
|
|
727
726
|
@classmethod
|
728
727
|
def _get_dut1_info(cls, year: int, days: int, old_time: WWVBMinute | None = None) -> tuple[int, bool]: # noqa: ARG003
|
729
728
|
d = datetime.datetime(year, 1, 1, tzinfo=datetime.timezone.utc) + datetime.timedelta(days - 1)
|
730
|
-
return
|
729
|
+
return round(get_dut1(d) * 10) * 100, isls(d)
|
731
730
|
|
732
731
|
|
733
732
|
def _bcd_bits(n: int) -> Generator[bool, None, None]:
|
@@ -1,8 +1,13 @@
|
|
1
|
-
# file generated by
|
1
|
+
# file generated by setuptools-scm
|
2
2
|
# don't change, don't track in version control
|
3
|
+
|
4
|
+
__all__ = ["__version__", "__version_tuple__", "version", "version_tuple"]
|
5
|
+
|
3
6
|
TYPE_CHECKING = False
|
4
7
|
if TYPE_CHECKING:
|
5
|
-
from typing import Tuple
|
8
|
+
from typing import Tuple
|
9
|
+
from typing import Union
|
10
|
+
|
6
11
|
VERSION_TUPLE = Tuple[Union[int, str], ...]
|
7
12
|
else:
|
8
13
|
VERSION_TUPLE = object
|
@@ -12,5 +17,5 @@ __version__: str
|
|
12
17
|
__version_tuple__: VERSION_TUPLE
|
13
18
|
version_tuple: VERSION_TUPLE
|
14
19
|
|
15
|
-
__version__ = version = '5.0.
|
16
|
-
__version_tuple__ = version_tuple = (5, 0,
|
20
|
+
__version__ = version = '5.0.2'
|
21
|
+
__version_tuple__ = version_tuple = (5, 0, 2)
|
@@ -0,0 +1 @@
|
|
1
|
+
{"START": "1972-01-01", "OFFSETS_GZ": "H4sIAP8L7WcC/+2aa3LDMAiEL5uHLTuxnN5/pn/aTmfSSiAWhGy+E2SWZQE58zwiH/1YivB/96vMXiIX2Io8CTyIrDSWGqlMRdrpDa6aJFnr0m4wYZkCE2UmSF0V+13vBveStK6JTfQyW3O86HLJf0RvDgy5u4FCI+WVKTsVoUdHzsrRoWRfYHIItZ5EEgu0Beu58EgEpMpO9zf4/s3iNO4y7/hqEwOZIPu3+PuO2T7Ic5E8GxsnZHvUYOtELxW1WP+0yx/caFxpyAooq6lq06UEr+UkLeXOIDPZ6EBrqb5K8Tvu6/B9CdnZqFQL05s2KauWy/IeF/tJGAisjK9MgGyDuUkRq4G1gRE+VjA30uZNPsdantkgMq58QO4fw+sqzj+A2/16mmvnyy9UzDvMktDgKYlnkFeB2rx+wNANG40aA4OgsY03AWoDCVs/XMmkyQ0+0jWaUqPdwA0m/MRuccGjCwirHToWzbcs8P7U1nZZLSYdHapWu5HqVg1YjK2fPEwvPZPzLPUF848tyid2u7dh8B7h+wVQ923Q+kqxZe3JclSSB+YTM3nnHrjgFth/vzgZzw6cbOMYa4bHFPU/DR3mp/ubKM4cgwMnHZW4GFxFprOVcevAKGva6oExn1MOmyGDJQPm0rpU8bjqdOo993O6Xz9ofToZela5vwrWoTn4l4o5CIIaKejCEgSnJv784VGlgfgEoGIm4WpNAAA="}
|
@@ -13,7 +13,7 @@ import json
|
|
13
13
|
|
14
14
|
import platformdirs
|
15
15
|
|
16
|
-
__all__ = ["DUT1_DATA_START", "DUT1_OFFSETS", "
|
16
|
+
__all__ = ["DUT1_DATA_START", "DUT1_OFFSETS", "end", "span", "start"]
|
17
17
|
|
18
18
|
content: dict[str, str] = {"START": "1970-01-01", "OFFSETS_GZ": "H4sIAFNx1mYC/wMAAAAAAAAAAAA="}
|
19
19
|
|
@@ -52,7 +52,7 @@ def update_iersdata( # noqa: PLR0915
|
|
52
52
|
offs_str = r["UT1-UTC"]
|
53
53
|
if not offs_str:
|
54
54
|
break
|
55
|
-
offs =
|
55
|
+
offs = round(float(offs_str) * 10)
|
56
56
|
if not offsets:
|
57
57
|
table_start = datetime.date(1858, 11, 17) + datetime.timedelta(jd)
|
58
58
|
|
@@ -98,7 +98,7 @@ def update_iersdata( # noqa: PLR0915
|
|
98
98
|
cells = row.findAll("td")
|
99
99
|
when = datetime.datetime.strptime(cells[0].text + "+0000", "%Y-%m-%d%z").date()
|
100
100
|
dut1 = cells[2].text.replace("s", "").replace(" ", "")
|
101
|
-
dut1 =
|
101
|
+
dut1 = round(float(dut1) * 10)
|
102
102
|
if wwvb_dut1 is not None:
|
103
103
|
assert wwvb_start is not None
|
104
104
|
patch(wwvb_start, when, wwvb_dut1)
|
@@ -7,7 +7,6 @@
|
|
7
7
|
from __future__ import annotations
|
8
8
|
|
9
9
|
import functools
|
10
|
-
import threading
|
11
10
|
import time
|
12
11
|
from tkinter import Canvas, TclError, Tk
|
13
12
|
from typing import TYPE_CHECKING, Any
|
@@ -31,7 +30,7 @@ def validate_colors(ctx: Any, param: Any, value: str) -> list[str]: # noqa: ARG
|
|
31
30
|
app = _app()
|
32
31
|
colors = value.split()
|
33
32
|
if len(colors) not in (2, 3, 4, 6):
|
34
|
-
raise click.BadParameter(f"Give 2, 3, 4 or 6 colors (not {len(colors)}")
|
33
|
+
raise click.BadParameter(f"Give 2, 3, 4 or 6 colors (not {len(colors)})")
|
35
34
|
for c in colors:
|
36
35
|
try:
|
37
36
|
app.winfo_rgb(c)
|
@@ -53,7 +52,13 @@ DEFAULT_COLORS = "#3c3c3c #3c3c3c #3c3c3c #cc3c3c #88883c #3ccc3c"
|
|
53
52
|
|
54
53
|
|
55
54
|
@click.command
|
56
|
-
@click.option(
|
55
|
+
@click.option(
|
56
|
+
"--colors",
|
57
|
+
callback=validate_colors,
|
58
|
+
default=DEFAULT_COLORS,
|
59
|
+
metavar="COLORS",
|
60
|
+
help="2, 3, 4, or 6 Tk color values",
|
61
|
+
)
|
57
62
|
@click.option("--size", default=48)
|
58
63
|
@click.option("--min-size", default=None)
|
59
64
|
def main(colors: list[str], size: int, min_size: int | None) -> None: # noqa: PLR0915
|
@@ -61,11 +66,10 @@ def main(colors: list[str], size: int, min_size: int | None) -> None: # noqa: P
|
|
61
66
|
if min_size is None:
|
62
67
|
min_size = size
|
63
68
|
|
64
|
-
def
|
65
|
-
"""
|
69
|
+
def deadline_ms(deadline: float) -> int:
|
70
|
+
"""Compute the number of ms until a deadline"""
|
66
71
|
now = time.time()
|
67
|
-
|
68
|
-
time.sleep(deadline - now)
|
72
|
+
return int(max(0, deadline - now) * 1000)
|
69
73
|
|
70
74
|
def wwvbtick() -> Generator[tuple[float, wwvb.AmplitudeModulation], None, None]:
|
71
75
|
"""Yield consecutive values of the WWVB amplitude signal, going from minute to minute"""
|
@@ -127,18 +131,23 @@ def main(colors: list[str], size: int, min_size: int | None) -> None: # noqa: P
|
|
127
131
|
"""Turn the canvas's virtual LED off"""
|
128
132
|
canvas.itemconfigure(circle, fill=colors[i])
|
129
133
|
|
130
|
-
def
|
131
|
-
"""Update the canvas virtual LED"""
|
134
|
+
def controller_func() -> Generator[int]:
|
135
|
+
"""Update the canvas virtual LED, yielding the number of ms until the next change"""
|
132
136
|
for stamp, code in wwvbsmarttick():
|
133
|
-
|
137
|
+
yield deadline_ms(stamp)
|
134
138
|
led_on(code)
|
135
139
|
app.update()
|
136
|
-
|
140
|
+
yield deadline_ms(stamp + 0.2 + 0.3 * int(code))
|
137
141
|
led_off(code)
|
138
142
|
app.update()
|
139
143
|
|
140
|
-
|
141
|
-
|
144
|
+
controller = controller_func().__next__
|
145
|
+
|
146
|
+
def after_func() -> None:
|
147
|
+
"""Repeatedly run the controller after the desired interval"""
|
148
|
+
app.after(controller(), after_func)
|
149
|
+
|
150
|
+
app.after_idle(after_func)
|
142
151
|
app.mainloop()
|
143
152
|
|
144
153
|
|
@@ -1 +0,0 @@
|
|
1
|
-
{"START": "1972-01-01", "OFFSETS_GZ": "H4sIAFEb/WYC/+2aa3LDMAiEL5uHLDuxnN5/pn/aTmfSSiAWhGR9J8gsywJylqVHPtqxZuH/7leeI0fKsGd5EngQ2WisJWKegrThDa6aJFnL0u4wYZkCE2UmSF0U+13vCveStC6JTfQyW3O86HLJf0SvDgy5u4FCI+WVKRuy0KMjJeXoULIvMDmEWgeRxAJtwXquPCIBqbLh/gbfv0mcxk3mHV9tYiATZP8W/zgw2wd5LpJnY+WErI8abJ3opaIW6592+YMbjSsNWQFlNVVtuhjhtQzSUh4MEpOdDrSW6qsUv+O+Dt+XkIONSrUwvWmTsmq5LO9xsZ+EgcDK+MIESDaYmxSxGlgbGOFjBXMjbV7lc6zlmQ0i48oH5P4+vK7i/AHc7tfTXDtffqFi3m6WhApPSTyDvArU5vUDhm7YaNQYGASVbbwLUBtI2PrhSiZNbvCRrtGUGu0GbjDhJ3aLCx5dQFjt0LFovmWB96e6tktqMenoULXajVS3asBibP3kYXrpmZxnsS2Yf2xRPrHbvQ2D9wjfL4C6b4PWV4otW0vWUYkeWE5M8M594oLbxP77xcl4NuBkG0dfM3xOUf/T0GF+ur+J5pljcODEUZkXg6vIdLYy7g3oZU3bPNDnc8qwGdJZMmAurUsRj6tOo95zP6fb9YPWp5OuZ5X7q2DrmsG/VCyTyaREnDRhnUxOjcmKM9b/R7R0+gQ5cs/LtEwAAA=="}
|
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
|