92.0.4515.107

epel8
Tom spot Callaway 3 years ago
parent e3df3fa73e
commit c3fea07699

@ -0,0 +1,17 @@
GCC: make VRegister::from_code() constexpr on aarch64
LiftoffRegister::gp() and LiftoffRegister::fp() are constexpr.
Therefore, VRegister::from_code() needs to be constexpr as well.
diff --git a/v8/src/codegen/arm64/register-arm64.h b/v8/src/codegen/arm64/register-arm64.h
index 1150daf..21007a5 100644
--- a/v8/src/codegen/arm64/register-arm64.h
+++ b/v8/src/codegen/arm64/register-arm64.h
@@ -413,7 +413,7 @@ class VRegister : public CPURegister {
static constexpr int kMaxNumRegisters = kNumberOfVRegisters;
STATIC_ASSERT(kMaxNumRegisters == kDoubleAfterLast);
- static VRegister from_code(int code) {
+ static constexpr VRegister from_code(int code) {
// Always return a D register.
return VRegister::Create(code, kDRegSizeInBits);
}

@ -0,0 +1,70 @@
diff -up chromium-92.0.4515.107/components/cast_channel/enum_table.h.EnumTable-crash chromium-92.0.4515.107/components/cast_channel/enum_table.h
--- chromium-92.0.4515.107/components/cast_channel/enum_table.h.EnumTable-crash 2021-07-19 14:45:12.000000000 -0400
+++ chromium-92.0.4515.107/components/cast_channel/enum_table.h 2021-07-26 17:41:21.987375385 -0400
@@ -212,7 +212,7 @@ class
template <typename E>
friend class EnumTable;
- DISALLOW_COPY_AND_ASSIGN(GenericEnumTableEntry);
+ DISALLOW_ASSIGN(GenericEnumTableEntry);
};
// Yes, these constructors really needs to be inlined. Even though they look
@@ -250,8 +250,7 @@ class EnumTable {
// Constructor for regular entries.
constexpr Entry(E value, base::StringPiece str)
: GenericEnumTableEntry(static_cast<int32_t>(value), str) {}
-
- DISALLOW_COPY_AND_ASSIGN(Entry);
+ DISALLOW_ASSIGN(Entry);
};
static_assert(sizeof(E) <= sizeof(int32_t),
@@ -306,15 +305,14 @@ class EnumTable {
if (is_sorted_) {
const std::size_t index = static_cast<std::size_t>(value);
if (ANALYZER_ASSUME_TRUE(index < data_.size())) {
- const auto& entry = data_.begin()[index];
+ const auto& entry = data_[index];
if (ANALYZER_ASSUME_TRUE(entry.has_str()))
return entry.str();
}
return absl::nullopt;
}
return GenericEnumTableEntry::FindByValue(
- reinterpret_cast<const GenericEnumTableEntry*>(data_.begin()),
- data_.size(), static_cast<int32_t>(value));
+ &data_[0], data_.size(), static_cast<int32_t>(value));
}
// This overload of GetString is designed for cases where the argument is a
@@ -342,8 +340,7 @@ class EnumTable {
// enum value directly.
absl::optional<E> GetEnum(base::StringPiece str) const {
auto* entry = GenericEnumTableEntry::FindByString(
- reinterpret_cast<const GenericEnumTableEntry*>(data_.begin()),
- data_.size(), str);
+ &data_[0], data_.size(), str);
return entry ? static_cast<E>(entry->value) : absl::optional<E>();
}
@@ -358,7 +355,7 @@ class EnumTable {
// Align the data on a cache line boundary.
alignas(64)
#endif
- std::initializer_list<Entry> data_;
+ const std::vector<Entry> data_;
bool is_sorted_;
constexpr EnumTable(std::initializer_list<Entry> data, bool is_sorted)
@@ -370,8 +367,8 @@ class EnumTable {
for (std::size_t i = 0; i < data.size(); i++) {
for (std::size_t j = i + 1; j < data.size(); j++) {
- const Entry& ei = data.begin()[i];
- const Entry& ej = data.begin()[j];
+ const Entry& ei = data[i];
+ const Entry& ej = data[j];
DCHECK(ei.value != ej.value)
<< "Found duplicate enum values at indices " << i << " and " << j;
DCHECK(!(ei.has_str() && ej.has_str() && ei.str() == ej.str()))

@ -0,0 +1,45 @@
diff -up chromium-92.0.4515.107/tools/gn/src/gn/err.h.gn-gcc-cleanup chromium-92.0.4515.107/tools/gn/src/gn/err.h
--- chromium-92.0.4515.107/tools/gn/src/gn/err.h.gn-gcc-cleanup 2021-07-19 14:54:04.000000000 -0400
+++ chromium-92.0.4515.107/tools/gn/src/gn/err.h 2021-07-26 17:23:54.477420431 -0400
@@ -56,7 +56,7 @@ class Err {
const std::string& help_text = std::string());
Err(const Err& other);
-
+ Err& operator=(const Err& other) = default;
~Err();
bool has_error() const { return has_error_; }
diff -up chromium-92.0.4515.107/tools/gn/src/gn/label_pattern.h.gn-gcc-cleanup chromium-92.0.4515.107/tools/gn/src/gn/label_pattern.h
--- chromium-92.0.4515.107/tools/gn/src/gn/label_pattern.h.gn-gcc-cleanup 2021-07-26 17:23:54.478420447 -0400
+++ chromium-92.0.4515.107/tools/gn/src/gn/label_pattern.h 2021-07-26 17:26:36.904894419 -0400
@@ -33,6 +33,7 @@ class LabelPattern {
std::string_view name,
const Label& toolchain_label);
LabelPattern(const LabelPattern& other);
+ LabelPattern& operator=(const LabelPattern& other) = default;
~LabelPattern();
// Converts the given input string to a pattern. This does special stuff
diff -up chromium-92.0.4515.107/tools/gn/src/gn/substitution_list.h.gn-gcc-cleanup chromium-92.0.4515.107/tools/gn/src/gn/substitution_list.h
--- chromium-92.0.4515.107/tools/gn/src/gn/substitution_list.h.gn-gcc-cleanup 2021-07-19 14:54:04.000000000 -0400
+++ chromium-92.0.4515.107/tools/gn/src/gn/substitution_list.h 2021-07-26 17:23:54.478420447 -0400
@@ -15,6 +15,7 @@ class SubstitutionList {
public:
SubstitutionList();
SubstitutionList(const SubstitutionList& other);
+ SubstitutionList& operator=(const SubstitutionList& other) = default;
~SubstitutionList();
bool Parse(const Value& value, Err* err);
diff -up chromium-92.0.4515.107/tools/gn/src/gn/substitution_pattern.h.gn-gcc-cleanup chromium-92.0.4515.107/tools/gn/src/gn/substitution_pattern.h
--- chromium-92.0.4515.107/tools/gn/src/gn/substitution_pattern.h.gn-gcc-cleanup 2021-07-19 14:54:04.000000000 -0400
+++ chromium-92.0.4515.107/tools/gn/src/gn/substitution_pattern.h 2021-07-26 17:23:54.478420447 -0400
@@ -35,6 +35,7 @@ class SubstitutionPattern {
SubstitutionPattern();
SubstitutionPattern(const SubstitutionPattern& other);
+ SubstitutionPattern& operator=(const SubstitutionPattern& other) = default;
~SubstitutionPattern();
// Parses the given string and fills in the pattern. The pattern must only

@ -0,0 +1,90 @@
diff -up chromium-92.0.4515.107/chrome/common/safe_browsing/BUILD.gn.nounrar chromium-92.0.4515.107/chrome/common/safe_browsing/BUILD.gn
--- chromium-92.0.4515.107/chrome/common/safe_browsing/BUILD.gn.nounrar 2021-07-19 14:45:10.000000000 -0400
+++ chromium-92.0.4515.107/chrome/common/safe_browsing/BUILD.gn 2021-07-26 16:44:53.670761825 -0400
@@ -43,39 +43,6 @@ if (safe_browsing_mode == 1) {
public_deps = [ "//components/safe_browsing/core:csd_proto" ]
}
- source_set("rar_analyzer") {
- sources = [
- "rar_analyzer.cc",
- "rar_analyzer.h",
- ]
-
- deps = [
- ":archive_analyzer_results",
- ":download_type_util",
- "//base",
- "//base:i18n",
- "//components/safe_browsing/core:features",
- "//components/safe_browsing/core:file_type_policies",
- "//third_party/unrar:unrar",
- ]
-
- defines = [
- "_FILE_OFFSET_BITS=64",
- "LARGEFILE_SOURCE",
- "RAR_SMP",
- "SILENT",
-
- # The following is set to disable certain macro definitions in the unrar
- # source code.
- "CHROMIUM_UNRAR",
-
- # Disables exceptions in unrar, replaces them with process termination.
- "UNRAR_NO_EXCEPTIONS",
- ]
-
- public_deps = [ "//components/safe_browsing/core:csd_proto" ]
- }
-
if (is_mac) {
source_set("disk_image_type_sniffer_mac") {
sources = [
@@ -145,7 +112,6 @@ source_set("safe_browsing") {
":archive_analyzer_results",
":binary_feature_extractor",
":download_type_util",
- ":rar_analyzer",
"//components/safe_browsing/core:features",
]
diff -up chromium-92.0.4515.107/chrome/common/safe_browsing/DEPS.nounrar chromium-92.0.4515.107/chrome/common/safe_browsing/DEPS
--- chromium-92.0.4515.107/chrome/common/safe_browsing/DEPS.nounrar 2021-07-19 14:45:10.000000000 -0400
+++ chromium-92.0.4515.107/chrome/common/safe_browsing/DEPS 2021-07-26 16:44:53.670761825 -0400
@@ -1,6 +1,5 @@
include_rules = [
"+components/safe_browsing",
"+third_party/protobuf",
- "+third_party/unrar",
"+third_party/zlib",
]
diff -up chromium-92.0.4515.107/chrome/services/file_util/BUILD.gn.nounrar chromium-92.0.4515.107/chrome/services/file_util/BUILD.gn
--- chromium-92.0.4515.107/chrome/services/file_util/BUILD.gn.nounrar 2021-07-26 16:44:53.670761825 -0400
+++ chromium-92.0.4515.107/chrome/services/file_util/BUILD.gn 2021-07-26 16:48:21.283924750 -0400
@@ -50,7 +50,6 @@ source_set("file_util") {
deps += [
"//chrome/common/safe_browsing",
"//chrome/common/safe_browsing:archive_analyzer_results",
- "//chrome/common/safe_browsing:rar_analyzer",
]
}
diff -up chromium-92.0.4515.107/chrome/services/file_util/safe_archive_analyzer.cc.nounrar chromium-92.0.4515.107/chrome/services/file_util/safe_archive_analyzer.cc
--- chromium-92.0.4515.107/chrome/services/file_util/safe_archive_analyzer.cc.nounrar 2021-07-19 14:45:11.000000000 -0400
+++ chromium-92.0.4515.107/chrome/services/file_util/safe_archive_analyzer.cc 2021-07-26 16:44:53.670761825 -0400
@@ -45,10 +45,14 @@ void SafeArchiveAnalyzer::AnalyzeDmgFile
void SafeArchiveAnalyzer::AnalyzeRarFile(base::File rar_file,
base::File temporary_file,
AnalyzeRarFileCallback callback) {
+#if 0
DCHECK(rar_file.IsValid());
safe_browsing::ArchiveAnalyzerResults results;
safe_browsing::rar_analyzer::AnalyzeRarFile(
std::move(rar_file), std::move(temporary_file), &results);
std::move(callback).Run(results);
+#else
+ NOTREACHED();
+#endif
}

@ -0,0 +1,24 @@
diff -up chromium-92.0.4515.107/third_party/catapult/common/py_vulcanize/py_vulcanize/generate.py.py2 chromium-92.0.4515.107/third_party/catapult/common/py_vulcanize/py_vulcanize/generate.py
--- chromium-92.0.4515.107/third_party/catapult/common/py_vulcanize/py_vulcanize/generate.py.py2 2021-07-19 14:47:19.000000000 -0400
+++ chromium-92.0.4515.107/third_party/catapult/common/py_vulcanize/py_vulcanize/generate.py 2021-07-26 17:02:23.160750472 -0400
@@ -83,7 +83,7 @@ def _MinifyJS(input_js):
with tempfile.NamedTemporaryFile() as _:
args = [
- 'python',
+ 'python2',
rjsmin_path
]
p = subprocess.Popen(args,
diff -up chromium-92.0.4515.107/tools/gn/bootstrap/bootstrap.py.py2 chromium-92.0.4515.107/tools/gn/bootstrap/bootstrap.py
--- chromium-92.0.4515.107/tools/gn/bootstrap/bootstrap.py.py2 2021-07-19 14:45:43.000000000 -0400
+++ chromium-92.0.4515.107/tools/gn/bootstrap/bootstrap.py 2021-07-26 17:02:23.160750472 -0400
@@ -130,7 +130,7 @@ def main(argv):
if not options.debug:
gn_gen_args += ' is_debug=false'
subprocess.check_call([
- gn_path, 'gen', out_dir,
+ gn_path, 'gen', out_dir, ' --script-executable=/usr/bin/python2',
'--args=%s' % gn_gen_args, "--root=" + SRC_ROOT
])

@ -0,0 +1,13 @@
diff -up chromium-92.0.4515.107/third_party/abseil-cpp/absl/debugging/failure_signal_handler.cc.sigstkszfix chromium-92.0.4515.107/third_party/abseil-cpp/absl/debugging/failure_signal_handler.cc
diff -up chromium-92.0.4515.107/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc.sigstkszfix chromium-92.0.4515.107/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc
--- chromium-92.0.4515.107/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc.sigstkszfix 2021-07-19 14:47:20.000000000 -0400
+++ chromium-92.0.4515.107/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc 2021-07-26 17:28:50.155924005 -0400
@@ -138,7 +138,7 @@ void InstallAlternateStackLocked() {
// SIGSTKSZ may be too small to prevent the signal handlers from overrunning
// the alternative stack. Ensure that the size of the alternative stack is
// large enough.
- static const unsigned kSigStackSize = std::max(16384, SIGSTKSZ);
+ static const unsigned kSigStackSize = std::max(static_cast<long>(16384), SIGSTKSZ);
// Only set an alternative stack if there isn't already one, or if the current
// one is too small.

File diff suppressed because it is too large Load Diff

@ -0,0 +1,20 @@
diff -up chromium-92.0.4515.107/chrome/common/chrome_paths.cc.widevine-other-locations chromium-92.0.4515.107/chrome/common/chrome_paths.cc
--- chromium-92.0.4515.107/chrome/common/chrome_paths.cc.widevine-other-locations 2021-07-26 16:50:41.815065696 -0400
+++ chromium-92.0.4515.107/chrome/common/chrome_paths.cc 2021-07-26 16:58:08.334868284 -0400
@@ -313,6 +313,16 @@ bool PathProvider(int key, base::FilePat
#if BUILDFLAG(ENABLE_WIDEVINE)
case chrome::DIR_BUNDLED_WIDEVINE_CDM:
+ base::PathService::Get(base::DIR_HOME, &cur);
+ cur = cur.Append(FILE_PATH_LITERAL(".local/lib/libwidevinecdm.so"));
+ if (base::PathExists(cur)) {
+ break;
+ }
+ // Yes, this has an arch hardcoded in the path, but at this time, it is the only place to find libwidevinecdm.so
+ if (base::PathExists(base::FilePath(FILE_PATH_LITERAL("/opt/google/chrome/WidevineCdm/_platform_specific/linux_x64/libwidevinecdm.so")))) {
+ cur = base::FilePath(FILE_PATH_LITERAL("/opt/google/chrome/WidevineCdm/_platform_specific/linux_x64/libwidevinecdm.so"));
+ break;
+ }
if (!GetComponentDirectory(&cur))
return false;
#if !BUILDFLAG(IS_CHROMEOS_ASH)

@ -208,15 +208,15 @@ BuildRequires: libicu-devel >= 5.4
%global chromoting_client_id %nil
%endif
%global majorversion 91
%global majorversion 92
%if %{freeworld}
Name: chromium%{chromium_channel}%{nsuffix}
%else
Name: chromium%{chromium_channel}
%endif
Version: %{majorversion}.0.4472.164
Release: 2%{?dist}
Version: %{majorversion}.0.4515.107
Release: 1%{?dist}
%if %{?freeworld}
%if %{?shared}
# chromium-libs-media-freeworld
@ -244,7 +244,7 @@ Patch4: chromium-60.0.3112.78-jpeg-nomangle.patch
# Do not mangle zlib
Patch5: chromium-77.0.3865.75-no-zlib-mangle.patch
# Do not use unrar code, it is non-free
Patch6: chromium-89.0.4389.72-norar.patch
Patch6: chromium-92.0.4515.107-norar.patch
# Use Gentoo's Widevine hack
# https://gitweb.gentoo.org/repo/gentoo.git/tree/www-client/chromium/files/chromium-widevine-r3.patch
Patch7: chromium-71.0.3578.98-widevine-r3.patch
@ -253,9 +253,9 @@ Patch8: chromium-91.0.4472.77-disable-fontconfig-cache-magic.patch
# drop rsp clobber, which breaks gcc9 (thanks to Jeff Law)
Patch9: chromium-78.0.3904.70-gcc9-drop-rsp-clobber.patch
# Try to load widevine from other places
Patch10: chromium-89.0.4389.72-widevine-other-locations.patch
Patch10: chromium-92.0.4515.107-widevine-other-locations.patch
# Try to fix version.py for Rawhide
Patch11: chromium-71.0.3578.98-py2-bootstrap.patch
Patch11: chromium-92.0.4515.107-py2-bootstrap.patch
# Add "Fedora" to the user agent string
Patch12: chromium-86.0.4240.75-fedora-user-agent.patch
@ -274,13 +274,11 @@ Patch57: chromium-89.0.4389.72-missing-cstring-header.patch
# prepare for using system ffmpeg (clean)
# http://svnweb.mageia.org/packages/cauldron/chromium-browser-stable/current/SOURCES/chromium-53-ffmpeg-no-deprecation-errors.patch?view=markup
Patch58: chromium-53-ffmpeg-no-deprecation-errors.patch
# https://github.com/stha09/chromium-patches/blob/master/chromium-91-pcscan-vector-types.patch
Patch59: chromium-91-pcscan-vector-types.patch
# https://github.com/stha09/chromium-patches/blob/master/chromium-91-libyuv-aarch64.patch
Patch60: chromium-91-libyuv-aarch64.patch
# Update third_party/highway to 0.12.2
# this is needed for sane arm/aarch64
Patch61: chromium-91.0.4472.77-update-highway-0.12.2.patch
Patch61: chromium-92.0.4515.107-update-highway-0.12.2.patch
# https://github.com/stha09/chromium-patches/blob/master/chromium-90-ruy-include.patch
Patch62: chromium-90-ruy-include.patch
# Extra CXXFLAGS for aarch64
@ -290,7 +288,7 @@ Patch63: chromium-91.0.4472.77-aarch64-cxxflags-addition.patch
Patch64: chromium-91.0.4472.77-java-only-allowed-in-android-builds.patch
# Silence GCC warnings during gn compile
Patch65: chromium-84.0.4147.105-gn-gcc-cleanup.patch
Patch65: chromium-92.0.4515.107-gn-gcc-cleanup.patch
# Fix missing cstring in remoting code
Patch66: chromium-84.0.4147.125-remoting-cstring.patch
# Apply fix_textrels hack for i686 (even without lld)
@ -301,16 +299,16 @@ Patch68: chromium-84.0.4147.125-aarch64-clearkeycdm-binutils-workaround.patch
# Thanks to Kevin Kofler for the fix.
Patch75: chromium-90.0.4430.72-fstatfix.patch
# Rawhide (f35) glibc defines SIGSTKSZ as a long instead of a constant
Patch76: chromium-88.0.4324.182-rawhide-gcc-std-max-fix.patch
Patch76: chromium-92.0.4515.107-rawhide-gcc-std-max-fix.patch
# Fix symbol visibility with gcc on swiftshader's libEGL
Patch77: chromium-88.0.4324.182-gcc-fix-swiftshader-libEGL-visibility.patch
# Do not download proprietary widevine module in the background (thanks Debian)
Patch79: chromium-90.0.4430.72-widevine-no-download.patch
# Fix crashes with components/cast_*
# Thanks to Gentoo
Patch80: https://gitweb.gentoo.org/repo/gentoo.git/plain/www-client/chromium/files/chromium-89-EnumTable-crash.patch
# Fix crashes with ThemeService, thanks OpenSUSE
Patch81: chromium-91-1190561-boo1186948.patch
Patch80: chromium-92.0.4515.107-EnumTable-crash.patch
# https://github.com/stha09/chromium-patches/blob/master/chromium-92-v8-constexpr.patch
Patch82: chromium-92-v8-constexpr.patch
# Use lstdc++ on EPEL7 only
@ -928,7 +926,6 @@ udev.
%patch56 -p1 -b .missing-cstdint
%patch57 -p1 -b .missing-cstring
%patch58 -p1 -b .ffmpeg-deprecations
%patch59 -p1 -b .pcscan-vector-types
%patch60 -p1 -b .libyuv-aarch64
%patch61 -p1 -b .update-highway-0.12.2
%patch62 -p1 -b .ruy-include
@ -945,7 +942,7 @@ udev.
%patch77 -p1 -b .gcc-swiftshader-visibility
%patch79 -p1 -b .widevine-no-download
%patch80 -p1 -b .EnumTable-crash
%patch81 -p1 -b .ThemeService-crash
%patch82 -p1 -b .v8-constexpr
# Fedora branded user agent
%if 0%{?fedora}
@ -1222,7 +1219,6 @@ build/linux/unbundle/remove_bundled_libraries.py \
'third_party/devtools-frontend/src/front_end/third_party/axe-core' \
'third_party/devtools-frontend/src/front_end/third_party/chromium' \
'third_party/devtools-frontend/src/front_end/third_party/codemirror' \
'third_party/devtools-frontend/src/front_end/third_party/fabricjs' \
'third_party/devtools-frontend/src/front_end/third_party/i18n' \
'third_party/devtools-frontend/src/front_end/third_party/intl-messageformat' \
'third_party/devtools-frontend/src/front_end/third_party/lighthouse' \
@ -1375,7 +1371,6 @@ build/linux/unbundle/remove_bundled_libraries.py \
'third_party/tflite/src/third_party/eigen3' \
'third_party/tflite/src/third_party/fft2d' \
'third_party/tflite-support' \
'third_party/tint' \
'third_party/ukey2' \
'third_party/usb_ids' \
'third_party/usrsctp' \
@ -2010,6 +2005,9 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt
%changelog
* Mon Jul 26 2021 Tom Callaway <spot@fedoraproject.org> - 92.0.4515.107-1
- update to 92.0.4515.107
* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 91.0.4472.164-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild

@ -20,4 +20,4 @@ SHA512 (xcb-proto-1.14.tar.xz) = de66d568163b6da2be9d6c59984f3afa3acd119a7813786
SHA512 (depot_tools.git-master.tar.gz) = dc323888812b66cc92c53a24a8a58ccf9e2961be67aa21852bd091b8b49569071f06ae9104cb58950e6253ac3a29f0db0663e9f35ef2b1ea28696efb38b42708
SHA512 (NotoSansSymbols2-Regular.ttf) = 2644b42c3fdccfe12395f9b61553aced169a0f1dc09f5a0fd7898e9d0a372ee4422b6b1cdab3c86ecc91db437e9ae8a951e64e85edc3ac9e9fca428852dbb2ad
SHA512 (NotoSansTibetan-Regular.ttf) = fb5a48fcaea80eebe7d692f6fcf00d59d47658a358d0ec8e046fc559873f88bd595b2da474d2826abd9e9305f3741c69058d867b1e6048f37fe7d71b5d3af36a
SHA512 (chromium-91.0.4472.164-clean.tar.xz) = 71e3449e2042d83df50a7ea753e5b09bfc331640665f0d9b8d99a424b32a316a92c7bb2726ce51c5418936f423f2f7167fcfc57d51ca658e7e32347e8452efbc
SHA512 (chromium-92.0.4515.107-clean.tar.xz) = c0da154919e48970f1edde7cabeded907bcd1992c58924fefbfd891ad12aa06e3c643589d89b48d375de507bddf3d01d843a50a0b9376cadbb5a98a651e6d02a

Loading…
Cancel
Save