pyhw 0.4.0__tar.gz → 0.5.0__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {pyhw-0.4.0/src/pyhw.egg-info → pyhw-0.5.0}/PKG-INFO +2 -2
- {pyhw-0.4.0 → pyhw-0.5.0}/pyproject.toml +2 -2
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/__main__.py +4 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/backendBase.py +1 -0
- pyhw-0.5.0/src/pyhw/backend/nic/macos.py +27 -0
- pyhw-0.5.0/src/pyhw/backend/npu/__init__.py +5 -0
- pyhw-0.5.0/src/pyhw/backend/npu/linux.py +42 -0
- pyhw-0.5.0/src/pyhw/backend/npu/macos.py +39 -0
- pyhw-0.5.0/src/pyhw/backend/npu/npuBase.py +17 -0
- pyhw-0.5.0/src/pyhw/backend/npu/npuInfo.py +10 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/pyhwUtil/pyhwUtil.py +2 -0
- {pyhw-0.4.0 → pyhw-0.5.0/src/pyhw.egg-info}/PKG-INFO +2 -2
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw.egg-info/SOURCES.txt +5 -0
- pyhw-0.5.0/src/pyhw.egg-info/requires.txt +1 -0
- pyhw-0.4.0/src/pyhw/backend/nic/macos.py +0 -18
- pyhw-0.4.0/src/pyhw.egg-info/requires.txt +0 -1
- {pyhw-0.4.0 → pyhw-0.5.0}/LICENSE +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/MANIFEST.in +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/README.md +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/setup.cfg +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/__init__.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/__init__.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/cpu/__init__.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/cpu/cpuBase.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/cpu/cpuInfo.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/cpu/linux.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/cpu/macos.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/gpu/__init__.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/gpu/gpuBase.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/gpu/gpuInfo.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/gpu/linux.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/gpu/macos.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/host/__init__.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/host/hostBase.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/host/hostInfo.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/host/linux.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/host/macos.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/host/windows.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/kernel/__init__.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/kernel/kernelBase.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/kernel/kernelInfo.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/kernel/unix.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/kernel/windows.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/memory/__init__.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/memory/linux.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/memory/macos.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/memory/memoryBase.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/memory/memoryInfo.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/metal/t.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/nic/__init__.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/nic/linux.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/nic/nicBase.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/nic/nicInfo.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/os/__init__.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/os/linux.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/os/macos.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/os/osBase.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/os/osInfo.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/shell/__init__.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/shell/shellBase.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/shell/unix.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/title/__init__.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/title/titleBase.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/title/unix.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/title/windows.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/uptime/__init__.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/uptime/linux.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/uptime/macos.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/uptime/uptimeBase.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/backend/uptime/uptimeInfo.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/frontend/__init__.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/frontend/color/__init__.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/frontend/color/colorConfig.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/frontend/color/colorSet.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/frontend/color/colorUtil.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/frontend/frontendBase.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/frontend/logo/__init__.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/frontend/logo/ascii/alpine.pyhw +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/frontend/logo/ascii/arch.pyhw +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/frontend/logo/ascii/armbian.pyhw +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/frontend/logo/ascii/centos.pyhw +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/frontend/logo/ascii/debian.pyhw +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/frontend/logo/ascii/fedora.pyhw +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/frontend/logo/ascii/fedora_small.pyhw +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/frontend/logo/ascii/linux.pyhw +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/frontend/logo/ascii/macOS.pyhw +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/frontend/logo/ascii/raspbian.pyhw +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/frontend/logo/ascii/ubuntu.pyhw +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/frontend/logo/ascii/ubuntu_small.pyhw +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/frontend/logo/logoBase.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/macos.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/pyhwException/__init__.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/pyhwException/pyhwException.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/pyhwUtil/__init__.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw/pyhwUtil/sysctlUtil.py +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw.egg-info/dependency_links.txt +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw.egg-info/entry_points.txt +0 -0
- {pyhw-0.4.0 → pyhw-0.5.0}/src/pyhw.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: pyhw
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.5.0
|
4
4
|
Summary: PyHw, a neofetch-like command line tool for fetching system information but written mostly in python.
|
5
5
|
Author-email: Xiao Ran <xiaoran.007@icloud.com>
|
6
6
|
License: BSD-3-Clause
|
@@ -13,7 +13,7 @@ Classifier: Operating System :: OS Independent
|
|
13
13
|
Requires-Python: >=3.9
|
14
14
|
Description-Content-Type: text/markdown
|
15
15
|
License-File: LICENSE
|
16
|
-
Requires-Dist: pypci-ng>=0.0.
|
16
|
+
Requires-Dist: pypci-ng>=0.0.3
|
17
17
|
|
18
18
|
# PyHw
|
19
19
|
[](https://pepy.tech/project/pyhw)
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
4
4
|
|
5
5
|
[project]
|
6
6
|
name = "pyhw"
|
7
|
-
version = "0.
|
7
|
+
version = "0.5.0"
|
8
8
|
description = "PyHw, a neofetch-like command line tool for fetching system information but written mostly in python."
|
9
9
|
keywords = ["neofetch", "system information", "command line tool", "python", "hardware information", "fastfetch", "fetching"]
|
10
10
|
authors = [
|
@@ -14,7 +14,7 @@ readme = "README.md"
|
|
14
14
|
license = {text = "BSD-3-Clause"}
|
15
15
|
requires-python = ">=3.9"
|
16
16
|
dependencies = [
|
17
|
-
"pypci-ng>=0.0.
|
17
|
+
"pypci-ng>=0.0.3"
|
18
18
|
]
|
19
19
|
classifiers = [
|
20
20
|
"Development Status :: 4 - Beta",
|
@@ -10,6 +10,7 @@ from .backend.cpu import CPUDetect
|
|
10
10
|
from .backend.gpu import GPUDetect
|
11
11
|
from .backend.memory import MemoryDetect
|
12
12
|
from .backend.nic import NICDetect
|
13
|
+
from .backend.npu import NPUDetect
|
13
14
|
from .pyhwUtil import createDataString
|
14
15
|
from .pyhwUtil import getOS, selectOSLogo
|
15
16
|
|
@@ -34,6 +35,9 @@ def main():
|
|
34
35
|
nic_info = NICDetect(os=current_os).getNICInfo()
|
35
36
|
if nic_info.number > 0:
|
36
37
|
data.NIC = nic_info.nics
|
38
|
+
npu_info = NPUDetect(os=current_os).getNPUInfo()
|
39
|
+
if npu_info.number > 0:
|
40
|
+
data.NPU = npu_info.npus
|
37
41
|
|
38
42
|
Printer(logo_os=selectOSLogo(OSDetect(os=current_os).getOSInfo().id), data=createDataString(data)).cPrint()
|
39
43
|
|
@@ -0,0 +1,27 @@
|
|
1
|
+
from .nicInfo import NICInfo
|
2
|
+
import subprocess
|
3
|
+
|
4
|
+
|
5
|
+
class NICDetectMacOS:
|
6
|
+
def __init__(self):
|
7
|
+
self.__nicInfo = NICInfo()
|
8
|
+
|
9
|
+
def getNICInfo(self):
|
10
|
+
self.__getNICInfo()
|
11
|
+
return self.__nicInfo
|
12
|
+
|
13
|
+
def __getNICInfo(self):
|
14
|
+
# Placeholder for a more advanced method.
|
15
|
+
try:
|
16
|
+
interface = subprocess.run(["bash", "-c", "route get default | grep interface"], capture_output=True, text=True).stdout.strip().split(":")[1]
|
17
|
+
if_ip = subprocess.run(["bash", "-c", f"ipconfig getifaddr {interface}"], capture_output=True, text=True).stdout.strip()
|
18
|
+
self.__nicInfo.nics.append(f"{interface} @ {if_ip}")
|
19
|
+
self.__nicInfo.number += 1
|
20
|
+
except:
|
21
|
+
self.__handleError()
|
22
|
+
|
23
|
+
def __handleError(self):
|
24
|
+
self.__nicInfo.nics.append("en0")
|
25
|
+
self.__nicInfo.number = 1
|
26
|
+
|
27
|
+
|
@@ -0,0 +1,42 @@
|
|
1
|
+
import subprocess
|
2
|
+
from .npuInfo import NPUInfo
|
3
|
+
from ..cpu import CPUDetect
|
4
|
+
from ...pyhwUtil import getArch
|
5
|
+
import pypci
|
6
|
+
|
7
|
+
|
8
|
+
class NPUDetectLinux:
|
9
|
+
def __init__(self):
|
10
|
+
self.__npuInfo = NPUInfo()
|
11
|
+
|
12
|
+
def getNPUInfo(self):
|
13
|
+
self.__getNPUInfo()
|
14
|
+
self.__sortNPUList()
|
15
|
+
return self.__npuInfo
|
16
|
+
|
17
|
+
def __getNPUInfo(self):
|
18
|
+
npu_devices = pypci.PCI().FindAllNPU()
|
19
|
+
if len(npu_devices) == 0:
|
20
|
+
self.__handleNonePciDevices()
|
21
|
+
else:
|
22
|
+
for device in npu_devices:
|
23
|
+
if device.subsystem_device_name != "":
|
24
|
+
device_name = f"{device.vendor_name} {device.device_name} ({device.subsystem_device_name})"
|
25
|
+
else:
|
26
|
+
device_name = f"{device.vendor_name} {device.device_name}"
|
27
|
+
self.__npuInfo.npus.append(self.__npuNameClean(device_name))
|
28
|
+
self.__npuInfo.number += 1
|
29
|
+
|
30
|
+
def __handleNonePciDevices(self):
|
31
|
+
# Place Holder for unknown NPU
|
32
|
+
self.__npuInfo.number = 1
|
33
|
+
self.__npuInfo.npus.append("Not found")
|
34
|
+
|
35
|
+
@staticmethod
|
36
|
+
def __npuNameClean(npu_name: str):
|
37
|
+
npu_name_clean = npu_name.replace("Corporation ", "")
|
38
|
+
return npu_name_clean
|
39
|
+
|
40
|
+
def __sortNPUList(self):
|
41
|
+
self.__npuInfo.npus.sort()
|
42
|
+
|
@@ -0,0 +1,39 @@
|
|
1
|
+
from .npuInfo import NPUInfo
|
2
|
+
from ...pyhwUtil import getArch
|
3
|
+
import json
|
4
|
+
import subprocess
|
5
|
+
|
6
|
+
|
7
|
+
class NPUDetectMacOS:
|
8
|
+
def __init__(self):
|
9
|
+
self.__npuInfo = NPUInfo()
|
10
|
+
self.__arch = getArch()
|
11
|
+
|
12
|
+
def getNPUInfo(self):
|
13
|
+
if self.__arch == "aarch64":
|
14
|
+
self.__getNPUAppleSilicon()
|
15
|
+
else: # Does not consider powerPC based Macs.
|
16
|
+
self.__getNPUIntel()
|
17
|
+
return self.__npuInfo
|
18
|
+
|
19
|
+
def __getNPUAppleSilicon(self):
|
20
|
+
# Place holder
|
21
|
+
self.__npuInfo.npus.append("Apple Neural Engine [SOC Integrated]")
|
22
|
+
self.__npuInfo.number += 1
|
23
|
+
|
24
|
+
def __getNPUIntel(self):
|
25
|
+
# Place holder
|
26
|
+
self.__npuInfo.npus.append("Not Found")
|
27
|
+
self.__npuInfo.number += 1
|
28
|
+
|
29
|
+
@staticmethod
|
30
|
+
def __handleVendor(vendor):
|
31
|
+
if vendor == "sppci_vendor_Apple":
|
32
|
+
return "Apple"
|
33
|
+
elif vendor == "sppci_vendor_intel":
|
34
|
+
return "Intel"
|
35
|
+
elif vendor == "sppci_vendor_amd":
|
36
|
+
return "AMD"
|
37
|
+
else:
|
38
|
+
return vendor
|
39
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
from .linux import NPUDetectLinux
|
2
|
+
from .macos import NPUDetectMacOS
|
3
|
+
|
4
|
+
|
5
|
+
class NPUDetect:
|
6
|
+
def __init__(self, os):
|
7
|
+
self.OS = os
|
8
|
+
|
9
|
+
def getNPUInfo(self):
|
10
|
+
if self.OS == "linux":
|
11
|
+
return NPUDetectLinux().getNPUInfo()
|
12
|
+
elif self.OS == "macos":
|
13
|
+
return NPUDetectMacOS().getNPUInfo()
|
14
|
+
else:
|
15
|
+
raise NotImplementedError("Unsupported operating system")
|
16
|
+
|
17
|
+
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: pyhw
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.5.0
|
4
4
|
Summary: PyHw, a neofetch-like command line tool for fetching system information but written mostly in python.
|
5
5
|
Author-email: Xiao Ran <xiaoran.007@icloud.com>
|
6
6
|
License: BSD-3-Clause
|
@@ -13,7 +13,7 @@ Classifier: Operating System :: OS Independent
|
|
13
13
|
Requires-Python: >=3.9
|
14
14
|
Description-Content-Type: text/markdown
|
15
15
|
License-File: LICENSE
|
16
|
-
Requires-Dist: pypci-ng>=0.0.
|
16
|
+
Requires-Dist: pypci-ng>=0.0.3
|
17
17
|
|
18
18
|
# PyHw
|
19
19
|
[](https://pepy.tech/project/pyhw)
|
@@ -45,6 +45,11 @@ src/pyhw/backend/nic/linux.py
|
|
45
45
|
src/pyhw/backend/nic/macos.py
|
46
46
|
src/pyhw/backend/nic/nicBase.py
|
47
47
|
src/pyhw/backend/nic/nicInfo.py
|
48
|
+
src/pyhw/backend/npu/__init__.py
|
49
|
+
src/pyhw/backend/npu/linux.py
|
50
|
+
src/pyhw/backend/npu/macos.py
|
51
|
+
src/pyhw/backend/npu/npuBase.py
|
52
|
+
src/pyhw/backend/npu/npuInfo.py
|
48
53
|
src/pyhw/backend/os/__init__.py
|
49
54
|
src/pyhw/backend/os/linux.py
|
50
55
|
src/pyhw/backend/os/macos.py
|
@@ -0,0 +1 @@
|
|
1
|
+
pypci-ng>=0.0.3
|
@@ -1,18 +0,0 @@
|
|
1
|
-
from .nicInfo import NICInfo
|
2
|
-
import subprocess
|
3
|
-
|
4
|
-
|
5
|
-
class NICDetectMacOS:
|
6
|
-
def __init__(self):
|
7
|
-
self.__nicInfo = NICInfo()
|
8
|
-
|
9
|
-
def getNICInfo(self):
|
10
|
-
self.__nicInfo.nics.append("en0")
|
11
|
-
self.__nicInfo.number = 1
|
12
|
-
return self.__nicInfo
|
13
|
-
|
14
|
-
def __getNICInfo(self):
|
15
|
-
# Placeholder for a more advanced method.
|
16
|
-
interfaces = subprocess.run(["bash", "-c", "route get default | grep interface"], capture_output=True, text=True).stdout.strip()
|
17
|
-
|
18
|
-
|
@@ -1 +0,0 @@
|
|
1
|
-
pypci-ng>=0.0.1
|
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
|