Accepting request 1185076 from home:krop:branches:network
Update to 13.7 OBS-URL: https://build.opensuse.org/request/show/1185076 OBS-URL: https://build.opensuse.org/package/show/network/FreeFileSync?expand=0&rev=88
This commit is contained in:
commit
c897224edc
25
.gitattributes
vendored
Normal file
25
.gitattributes
vendored
Normal file
@ -0,0 +1,25 @@
|
||||
## Default LFS
|
||||
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||
*.png filter=lfs diff=lfs merge=lfs -text
|
||||
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
*.zst filter=lfs diff=lfs merge=lfs -text
|
||||
## Specific LFS patterns
|
||||
Animal.dat filter=lfs diff=lfs merge=lfs -text
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
.osc
|
3
Animal.dat
Normal file
3
Animal.dat
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:0495439697cadbc2005407ecd6ae261d749f6f43711a8769b6f8725a64f773c9
|
||||
size 112431
|
92
FreeFileSync-build.patch
Normal file
92
FreeFileSync-build.patch
Normal file
@ -0,0 +1,92 @@
|
||||
Index: FreeFileSync-12.5/FreeFileSync/Source/Makefile
|
||||
===================================================================
|
||||
--- FreeFileSync-12.5.orig/FreeFileSync/Source/Makefile
|
||||
+++ FreeFileSync-12.5/FreeFileSync/Source/Makefile
|
||||
@@ -3,9 +3,9 @@ exeName = FreeFileSync_$(shell arch)
|
||||
|
||||
CXXFLAGS += -std=c++23 -pipe -DWXINTL_NO_GETTEXT_MACRO -I../.. -I../../zenXml -include "zen/i18n.h" -include "zen/warn_static.h" \
|
||||
-Wall -Wfatal-errors -Wmissing-include-dirs -Wswitch-enum -Wcast-align -Wnon-virtual-dtor -Wno-unused-function -Wshadow -Wno-maybe-uninitialized \
|
||||
- -O3 -DNDEBUG `wx-config --cxxflags --debug=no` -pthread
|
||||
+ -O3 -DNDEBUG `wx-config --cxxflags --debug=no` -pthread -fpie
|
||||
|
||||
-LDFLAGS += -s -no-pie `wx-config --libs std, aui, richtext --debug=no` -pthread
|
||||
+LDFLAGS += -s `wx-config --libs std, aui, richtext --debug=no` -pthread -lz -pie
|
||||
|
||||
|
||||
CXXFLAGS += `pkg-config --cflags openssl`
|
||||
@@ -17,9 +17,10 @@ LDFLAGS += `pkg-config --libs libcurl`
|
||||
CXXFLAGS += `pkg-config --cflags libssh2`
|
||||
LDFLAGS += `pkg-config --libs libssh2`
|
||||
|
||||
-CXXFLAGS += `pkg-config --cflags gtk+-2.0`
|
||||
+CXXFLAGS += `pkg-config --cflags gtk+-3.0`
|
||||
+LDFLAGS += `pkg-config --libs gtk+-3.0`
|
||||
#treat as system headers so that warnings are hidden:
|
||||
-CXXFLAGS += -isystem/usr/include/gtk-2.0
|
||||
+CXXFLAGS += -isystem/usr/include/gtk-3.0
|
||||
|
||||
#support for SELinux (optional)
|
||||
SELINUX_EXISTING=$(shell pkg-config --exists libselinux && echo YES)
|
||||
Index: FreeFileSync-12.5/FreeFileSync/Source/RealTimeSync/Makefile
|
||||
===================================================================
|
||||
--- FreeFileSync-12.5.orig/FreeFileSync/Source/RealTimeSync/Makefile
|
||||
+++ FreeFileSync-12.5/FreeFileSync/Source/RealTimeSync/Makefile
|
||||
@@ -3,14 +3,15 @@ exeName = RealTimeSync_$(shell arch)
|
||||
|
||||
CXXFLAGS += -std=c++23 -pipe -DWXINTL_NO_GETTEXT_MACRO -I../../.. -I../../../zenXml -include "zen/i18n.h" -include "zen/warn_static.h" \
|
||||
-Wall -Wfatal-errors -Wmissing-include-dirs -Wswitch-enum -Wcast-align -Wnon-virtual-dtor -Wno-unused-function -Wshadow -Wno-maybe-uninitialized \
|
||||
- -O3 -DNDEBUG `wx-config --cxxflags --debug=no` -pthread
|
||||
+ -O3 -DNDEBUG `wx-config --cxxflags --debug=no` -pthread -fpie
|
||||
|
||||
-LDFLAGS += -s -no-pie `wx-config --libs std, aui, richtext --debug=no` -pthread
|
||||
+LDFLAGS += -s `wx-config --libs std, aui, richtext --debug=no` -pthread -lz -pie
|
||||
|
||||
#Gtk - support "no button border"
|
||||
-CXXFLAGS += `pkg-config --cflags gtk+-2.0`
|
||||
+CXXFLAGS += `pkg-config --cflags gtk+-3.0`
|
||||
+LDFLAGS += `pkg-config --libs gtk+-3.0`
|
||||
#treat as system headers so that warnings are hidden:
|
||||
-CXXFLAGS += -isystem/usr/include/gtk-2.0
|
||||
+CXXFLAGS += -isystem/usr/include/gtk-3.0
|
||||
|
||||
cppFiles=
|
||||
cppFiles+=application.cpp
|
||||
Index: FreeFileSync-12.5/libssh2/libssh2_wrap.h
|
||||
===================================================================
|
||||
--- FreeFileSync-12.5.orig/libssh2/libssh2_wrap.h
|
||||
+++ FreeFileSync-12.5/libssh2/libssh2_wrap.h
|
||||
@@ -20,6 +20,22 @@
|
||||
#error libssh2_sftp.h header guard changed
|
||||
#endif
|
||||
|
||||
+// fix some build errors
|
||||
+/* MAX_SFTP_READ_SIZE is how much data is asked for at max in each FXP_READ
|
||||
+ * packets.
|
||||
+ */
|
||||
+#ifndef MAX_SFTP_READ_SIZE
|
||||
+ #define MAX_SFTP_READ_SIZE 30000
|
||||
+#endif
|
||||
+
|
||||
+/*
|
||||
+ * MAX_SFTP_OUTGOING_SIZE MUST not be larger than 32500 or so. This is the
|
||||
+ * amount of data sent in each FXP_WRITE packet
|
||||
+ */
|
||||
+#ifndef MAX_SFTP_OUTGOING_SIZE
|
||||
+ #define MAX_SFTP_OUTGOING_SIZE 30000
|
||||
+#endif
|
||||
+
|
||||
//fix libssh2 64-bit warning mess: https://github.com/libssh2/libssh2/pull/96
|
||||
#undef libssh2_userauth_password
|
||||
inline int libssh2_userauth_password(LIBSSH2_SESSION* session, const std::string& username, const std::string& password)
|
||||
Index: FreeFileSync-12.5/zen/ring_buffer.h
|
||||
===================================================================
|
||||
--- FreeFileSync-12.5.orig/zen/ring_buffer.h
|
||||
+++ FreeFileSync-12.5/zen/ring_buffer.h
|
||||
@@ -8,6 +8,7 @@
|
||||
#define RING_BUFFER_H_01238467085684139453534
|
||||
|
||||
#include <cassert>
|
||||
+#include <cstddef>
|
||||
#include "scope_guard.h"
|
||||
|
||||
|
44
FreeFileSync-disable-in-app-updates.patch
Normal file
44
FreeFileSync-disable-in-app-updates.patch
Normal file
@ -0,0 +1,44 @@
|
||||
Index: FreeFileSync-13.6/FreeFileSync/Source/ui/gui_generated.cpp
|
||||
===================================================================
|
||||
--- FreeFileSync-13.6.orig/FreeFileSync/Source/ui/gui_generated.cpp
|
||||
+++ FreeFileSync-13.6/FreeFileSync/Source/ui/gui_generated.cpp
|
||||
@@ -108,10 +108,10 @@ MainDialogGenerated::MainDialogGenerated
|
||||
m_menuItemHelp = new wxMenuItem( m_menuHelp, wxID_HELP, wxString( _("&View help") ) + wxT('\t') + wxT("F1"), wxEmptyString, wxITEM_NORMAL );
|
||||
m_menuHelp->Append( m_menuItemHelp );
|
||||
|
||||
- m_menuHelp->AppendSeparator();
|
||||
+ //m_menuHelp->AppendSeparator();
|
||||
|
||||
m_menuItemCheckVersionNow = new wxMenuItem( m_menuHelp, wxID_ANY, wxString( _("&Check for updates now") ), wxEmptyString, wxITEM_NORMAL );
|
||||
- m_menuHelp->Append( m_menuItemCheckVersionNow );
|
||||
+ //m_menuHelp->Append( m_menuItemCheckVersionNow );
|
||||
|
||||
m_menuHelp->AppendSeparator();
|
||||
|
||||
Index: FreeFileSync-13.6/FreeFileSync/Source/ui/main_dlg.cpp
|
||||
===================================================================
|
||||
--- FreeFileSync-13.6.orig/FreeFileSync/Source/ui/main_dlg.cpp
|
||||
+++ FreeFileSync-13.6/FreeFileSync/Source/ui/main_dlg.cpp
|
||||
@@ -1118,7 +1118,7 @@ imgFileManagerSmall_([]
|
||||
updateGui();
|
||||
|
||||
//register regular check for update on next idle event
|
||||
- Bind(wxEVT_IDLE, &MainDialog::onStartupUpdateCheck, this);
|
||||
+ //Bind(wxEVT_IDLE, &MainDialog::onStartupUpdateCheck, this);
|
||||
|
||||
//asynchronous call to wxWindow::Dimensions(): fix superfluous frame on right and bottom when FFS is started in fullscreen mode
|
||||
Bind(wxEVT_IDLE, &MainDialog::onLayoutWindowAsync, this);
|
||||
Index: FreeFileSync-13.6/FreeFileSync/Source/ui/version_check.cpp
|
||||
===================================================================
|
||||
--- FreeFileSync-13.6.orig/FreeFileSync/Source/ui/version_check.cpp
|
||||
+++ FreeFileSync-13.6/FreeFileSync/Source/ui/version_check.cpp
|
||||
@@ -48,7 +48,8 @@ void openBrowserForDownload(wxWindow* pa
|
||||
bool fff::automaticUpdateCheckDue(time_t lastUpdateCheck)
|
||||
{
|
||||
const time_t now = std::time(nullptr);
|
||||
- return numeric::dist(now, lastUpdateCheck) >= 7 * 24 * 3600; //check weekly
|
||||
+ //return numeric::dist(now, lastUpdateCheck) >= 7 * 24 * 3600; //check weekly
|
||||
+ return false;
|
||||
}
|
||||
|
||||
|
13
FreeFileSync-icon-loader.patch
Normal file
13
FreeFileSync-icon-loader.patch
Normal file
@ -0,0 +1,13 @@
|
||||
Index: FreeFileSync-13.2/FreeFileSync/Source/base/icon_loader.cpp
|
||||
===================================================================
|
||||
--- FreeFileSync-13.2.orig/FreeFileSync/Source/base/icon_loader.cpp
|
||||
+++ FreeFileSync-13.2/FreeFileSync/Source/base/icon_loader.cpp
|
||||
@@ -227,7 +227,7 @@ FileIconHolder fff::getFileIcon(const Zs
|
||||
//the remaining icon types won't block!
|
||||
assert(GDK_IS_PIXBUF(gicon) || G_IS_THEMED_ICON(gicon) || G_IS_EMBLEMED_ICON(gicon));
|
||||
|
||||
- ::g_object_ref(gicon); //pass ownership
|
||||
+ //::g_object_ref(gicon); //pass ownership
|
||||
return FileIconHolder(gicon, maxSize); //
|
||||
|
||||
}
|
30
FreeFileSync-remove_ifdef_exceptions.patch
Normal file
30
FreeFileSync-remove_ifdef_exceptions.patch
Normal file
@ -0,0 +1,30 @@
|
||||
Index: FreeFileSync-13.3/FreeFileSync/Source/application.cpp
|
||||
===================================================================
|
||||
--- FreeFileSync-13.3.orig/FreeFileSync/Source/application.cpp
|
||||
+++ FreeFileSync-13.3/FreeFileSync/Source/application.cpp
|
||||
@@ -243,10 +243,6 @@ wxLayoutDirection Application::GetLayout
|
||||
|
||||
int Application::OnRun()
|
||||
{
|
||||
-#if wxUSE_EXCEPTIONS
|
||||
-#error why is wxWidgets uncaught exception handling enabled!?
|
||||
-#endif
|
||||
-
|
||||
//exception => Windows: let it crash and create mini dump!!! Linux/macOS: std::exception::what() logged to console
|
||||
[[maybe_unused]] const int rc = wxApp::OnRun();
|
||||
return static_cast<int>(exitCode_);
|
||||
Index: FreeFileSync-13.3/FreeFileSync/Source/RealTimeSync/application.cpp
|
||||
===================================================================
|
||||
--- FreeFileSync-13.3.orig/FreeFileSync/Source/RealTimeSync/application.cpp
|
||||
+++ FreeFileSync-13.3/FreeFileSync/Source/RealTimeSync/application.cpp
|
||||
@@ -209,10 +209,6 @@ wxLayoutDirection Application::GetLayout
|
||||
|
||||
int Application::OnRun()
|
||||
{
|
||||
-#if wxUSE_EXCEPTIONS
|
||||
-#error why is wxWidgets uncaught exception handling enabled!?
|
||||
-#endif
|
||||
-
|
||||
//exception => Windows: let it crash and create mini dump!!! Linux/macOS: std::exception::what() logged to console
|
||||
[[maybe_unused]] const int rc = wxApp::OnRun();
|
||||
return static_cast<int>(FfsExitCode::success); //process exit code
|
14
FreeFileSync-resources.patch
Normal file
14
FreeFileSync-resources.patch
Normal file
@ -0,0 +1,14 @@
|
||||
Index: FreeFileSync-13.1/FreeFileSync/Source/ffs_paths.cpp
|
||||
===================================================================
|
||||
--- FreeFileSync-13.1.orig/FreeFileSync/Source/ffs_paths.cpp
|
||||
+++ FreeFileSync-13.1/FreeFileSync/Source/ffs_paths.cpp
|
||||
@@ -54,7 +54,8 @@ Zstring fff::getInstallDirPath()
|
||||
|
||||
Zstring fff::getResourceDirPath()
|
||||
{
|
||||
- return appendPath(getProcessParentFolderPath(), Zstr("Resources"));
|
||||
+ // for opensuse install to /usr/share/FreeFileSync specificly
|
||||
+ return Zstr("/usr/share/FreeFileSync/");
|
||||
}
|
||||
|
||||
|
1296
FreeFileSync.changes
Normal file
1296
FreeFileSync.changes
Normal file
File diff suppressed because it is too large
Load Diff
11
FreeFileSync.desktop
Normal file
11
FreeFileSync.desktop
Normal file
@ -0,0 +1,11 @@
|
||||
[Desktop Entry]
|
||||
Name=FreeFileSync
|
||||
GenericName=Folder Synchronization Tool
|
||||
Comment=Visual folder comparison and synchronization
|
||||
Exec=FreeFileSync
|
||||
Terminal=false
|
||||
Icon=FreeFileSync
|
||||
Type=Application
|
||||
Categories=Utility;Archiving;
|
||||
Version=1.0
|
||||
|
3
FreeFileSync.png
Normal file
3
FreeFileSync.png
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:31df3fa1f1310de14bbd379f891d4f8ed2df5b0d68913eb52c88b3be682933fb
|
||||
size 12078
|
128
FreeFileSync.spec
Normal file
128
FreeFileSync.spec
Normal file
@ -0,0 +1,128 @@
|
||||
#
|
||||
# spec file for package FreeFileSync
|
||||
#
|
||||
# Copyright (c) 2024 SUSE LLC
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
# upon. The license for this file, and modifications and additions to the
|
||||
# file, is the same license as for the pristine package itself (unless the
|
||||
# license for the pristine package is not an Open Source License, in which
|
||||
# case the license is the MIT License). An "Open Source License" is a
|
||||
# license that conforms to the Open Source Definition (Version 1.9)
|
||||
# published by the Open Source Initiative.
|
||||
|
||||
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
|
||||
%if 0%{?suse_version} && 0%{?suse_version} < 1590
|
||||
%global force_gcc_version 12
|
||||
%endif
|
||||
|
||||
Name: FreeFileSync
|
||||
Version: 13.7
|
||||
Release: 0
|
||||
Summary: Backup software to synchronize files and folders
|
||||
License: GPL-3.0-or-later
|
||||
Group: Productivity/Networking/System
|
||||
URL: https://www.freefilesync.org/
|
||||
Source0: https://freefilesync.org/download/FreeFileSync_%{version}_Source.zip
|
||||
Source1: %{name}.desktop
|
||||
Source2: %{name}.png
|
||||
Source3: RealTimeSync.desktop
|
||||
Source4: RealTimeSync.png
|
||||
Source5: Animal.dat
|
||||
Patch0: FreeFileSync-build.patch
|
||||
Patch1: FreeFileSync-resources.patch
|
||||
Patch2: FreeFileSync-icon-loader.patch
|
||||
Patch3: FreeFileSync-disable-in-app-updates.patch
|
||||
Patch4: FreeFileSync-remove_ifdef_exceptions.patch
|
||||
BuildRequires: boost-devel >= 1.54
|
||||
BuildRequires: gcc%{?force_gcc_version}-c++ >= 12
|
||||
BuildRequires: libcurl-devel
|
||||
BuildRequires: libopenssl-devel
|
||||
BuildRequires: libssh2-devel
|
||||
BuildRequires: libstdc++6 >= 10.0.0
|
||||
BuildRequires: libstdc++6 >= 12
|
||||
BuildRequires: unzip
|
||||
BuildRequires: update-desktop-files
|
||||
BuildRequires: wxGTK3-3_2-devel >= 3.1.6
|
||||
BuildRequires: zlib-devel
|
||||
|
||||
%description
|
||||
FreeFileSync is a software that helps synchronizing files
|
||||
and folders. It runs backup jobs while having visual
|
||||
feedback along the way.
|
||||
|
||||
%package -n RealtimeSync
|
||||
Summary: Backup software to synchronize files and folders
|
||||
Group: Productivity/Networking/System
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
|
||||
%description -n RealtimeSync
|
||||
RealtimeSync executes a command each time it detects changes
|
||||
in one of the monitored directories, or when a directory becomes
|
||||
available (e.g. insertion of a USB drive).
|
||||
This command will usually trigger a FreeFileSync batch job.
|
||||
|
||||
%prep
|
||||
%autosetup -p1 -c %{name}-%{version}
|
||||
sed -i 's/\r$//' License.txt
|
||||
mkdir FreeFileSync/Build/Bin
|
||||
|
||||
%build
|
||||
export TMPDIR=/tmp # necessary since 11.0
|
||||
%if 0%{?force_gcc_version}
|
||||
export CXX="g++-%{?force_gcc_version}"
|
||||
%endif
|
||||
%make_build -C %{name}/Source exeName=FreeFileSync
|
||||
%make_build -C %{name}/Source/RealTimeSync exeName=RealTimeSync
|
||||
|
||||
%install
|
||||
# FreeFileSync
|
||||
pushd %{name}/Build
|
||||
mkdir -p %{buildroot}%{_bindir}
|
||||
install -t %{buildroot}%{_bindir} Bin/%{name}
|
||||
|
||||
mkdir -p %{buildroot}%{_datadir}/%{name}
|
||||
cp -rT Resources %{buildroot}%{_datadir}/%{name}
|
||||
install -Dm 0644 %SOURCE5 %{buildroot}%{_datadir}/%{name}
|
||||
|
||||
find "%{buildroot}%{_datadir}/%{name}" -type f -print0 | xargs -0 chmod 644
|
||||
|
||||
# RealTimeSync
|
||||
mkdir -p %{buildroot}%{_bindir}
|
||||
install -t %{buildroot}%{_bindir} Bin/RealTimeSync
|
||||
popd
|
||||
|
||||
# desktop
|
||||
mkdir -p %{buildroot}%{_datadir}/pixmaps
|
||||
install -p %{SOURCE2} %{buildroot}%{_datadir}/pixmaps/
|
||||
install -p %{SOURCE4} %{buildroot}%{_datadir}/pixmaps/
|
||||
%suse_update_desktop_file -i %{name}
|
||||
%suse_update_desktop_file -i RealTimeSync
|
||||
|
||||
%filetriggerin -- %{_datadir}/applications
|
||||
%{_bindir}/update-desktop-database --quiet %{_datadir}/applications || true
|
||||
|
||||
%filetriggerpostun -- %{_datadir}/applications
|
||||
%{_bindir}/update-desktop-database --quiet %{_datadir}/applications || true
|
||||
|
||||
%files
|
||||
%license License.txt
|
||||
%doc Changelog.txt
|
||||
%{_bindir}/%{name}
|
||||
%{_datadir}/applications/%{name}.desktop
|
||||
%{_datadir}/pixmaps/%{name}.png
|
||||
%{_datadir}/%{name}/*
|
||||
%dir %{_datadir}/%{name}
|
||||
|
||||
%files -n RealtimeSync
|
||||
%license License.txt
|
||||
%doc Changelog.txt
|
||||
%{_bindir}/RealTimeSync
|
||||
%{_datadir}/applications/RealTimeSync.desktop
|
||||
%{_datadir}/pixmaps/RealTimeSync.png
|
||||
|
||||
%changelog
|
3
FreeFileSync_13.7_Source.zip
Normal file
3
FreeFileSync_13.7_Source.zip
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6d2dc9d2e7afb591ffca3a0eb6a48c6151d168d7a05ba34c399bfb72d5b9a117
|
||||
size 2763636
|
11
RealTimeSync.desktop
Normal file
11
RealTimeSync.desktop
Normal file
@ -0,0 +1,11 @@
|
||||
[Desktop Entry]
|
||||
Name=RealTimeSync
|
||||
GenericName=Realtime Synchronization Tool
|
||||
Comment=Realtime folder synchronization
|
||||
Exec=RealTimeSync
|
||||
Terminal=false
|
||||
Icon=RealTimeSync
|
||||
Type=Application
|
||||
Categories=Utility;Archiving;
|
||||
Version=1.0
|
||||
|
3
RealTimeSync.png
Normal file
3
RealTimeSync.png
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:f28042587dbe99cf5d6bef2c1be4b026488e418e4ba8332b3016d246b7053a4e
|
||||
size 11335
|
Loading…
Reference in New Issue
Block a user