<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.kde.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.6"
          urlbase="https://bugs.kde.org/"
          
          maintainer="sysadmin@kde.org"
>

    <bug>
          <bug_id>464517</bug_id>
          
          <creation_ts>2023-01-19 19:03:54 +0000</creation_ts>
          <short_desc>Discover crashes on start unless .cache/discover/ deleted</short_desc>
          <delta_ts>2023-10-24 14:04:15 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>2</classification_id>
          <classification>Applications</classification>
          <product>Discover</product>
          <component>discover</component>
          <version>5.26.90</version>
          <rep_platform>openSUSE</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>VHI</priority>
          <bug_severity>crash</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Fabian Vogt">fabian</reporter>
          <assigned_to name="Plasma Bugs List">plasma-bugs-null</assigned_to>
          <cc>aleixpol</cc>
    
    <cc>kde.p-foerster</cc>
    
    <cc>khaleeq416</cc>
    
    <cc>nate</cc>
    
    <cc>qydwhotmail</cc>
          
          <cf_commitlink>https://invent.kde.org/plasma/plasma-desktop/commit/ec5cc12b4c4119672acd95680e897ac96e573ee8</cf_commitlink>
          <cf_versionfixedin>5.27.9</cf_versionfixedin>
          <cf_sentryurl></cf_sentryurl>
          <votes>0</votes>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2199842</commentid>
    <comment_count>0</comment_count>
    <who name="Fabian Vogt">fabian</who>
    <bug_when>2023-01-19 19:03:54 +0000</bug_when>
    <thetext>The first time I started discover it worked fine. I closed it, but after that then it always crashes on start.
After deleting .cache/discover it works fine again. This is 100% reproducible, discover only starts with empty cache.

linux@localhost:~&gt; plasma-discover
fetch ratings! false
adding empty sources model QStandardItemModel(0x56351c74a350)
no component found for &quot;org.opensuse.opensuse-tumbleweed&quot;
parseList():: XML Error:  &quot;Premature end of document.&quot; 
In xml name &quot;&quot; with text &quot;&quot; at offset:
 0 
In XML:
 &quot;&quot;
KNS error in &quot;Plasma Widgets&quot; : KNSCore::OcsError &quot;Unknown Open Collaboration Service API error. (0)&quot; QVariant(int, 0)
invalid kns backend! &quot;/usr/share/knsrcfiles/plasmoids.knsrc&quot; because: &quot;Invalid Plasma Widgets backend, contact your distributor.&quot;
org.kde.plasma.libdiscover: Discarding invalid backend &quot;plasmoids.knsrc&quot;
kns error &quot;/usr/share/knsrcfiles/plasmoids.knsrc&quot; &quot;Invalid Plasma Widgets backend, contact your distributor.&quot;
KNS error in &quot;Plasma Styles&quot; : KNSCore::OcsError &quot;Unknown Open Collaboration Service API error. (0)&quot; QVariant(int, 0)
invalid kns backend! &quot;/usr/share/knsrcfiles/plasma-themes.knsrc&quot; because: &quot;Invalid Plasma Styles backend, contact your distributor.&quot;
org.kde.plasma.libdiscover: Discarding invalid backend &quot;plasma-themes.knsrc&quot;
org.kde.plasma.libdiscover: last stream isn&apos;t over yet Filters(category: Category(0x56351c7d9dd0, name = &quot;Games&quot;),) ResourcesProxyModel(0x56351d2639b0)
org.kde.plasma.libdiscover: last stream isn&apos;t over yet Filters(category: Category(0x56351c7d39d0, name = &quot;Developer Tools&quot;),) ResourcesProxyModel(0x56351d2622e0)
kns error &quot;/usr/share/knsrcfiles/plasma-themes.knsrc&quot; &quot;Invalid Plasma Styles backend, contact your distributor.&quot;
KNS error in &quot;System monitor Sensor Display Styles&quot; : KNSCore::OcsError &quot;Unknown Open Collaboration Service API error. (0)&quot; QVariant(int, 0)
invalid kns backend! &quot;/usr/share/knsrcfiles/systemmonitor-faces.knsrc&quot; because: &quot;Invalid System monitor Sensor Display Styles backend, contact your distributor.&quot;
org.kde.plasma.libdiscover: Discarding invalid backend &quot;systemmonitor-faces.knsrc&quot;
org.kde.plasma.libdiscover: last stream isn&apos;t over yet Filters(category: Category(0x56351c7d9dd0, name = &quot;Games&quot;),) ResourcesProxyModel(0x56351d2639b0)
org.kde.plasma.libdiscover: last stream isn&apos;t over yet Filters(category: Category(0x56351c7d39d0, name = &quot;Developer Tools&quot;),) ResourcesProxyModel(0x56351d2622e0)
kns error &quot;/usr/share/knsrcfiles/systemmonitor-faces.knsrc&quot; &quot;Invalid System monitor Sensor Display Styles backend, contact your distributor.&quot;
(continues for all knsrcs)
[Thread 0x7fffc6ffd6c0 (LWP 5568) exited]

Thread 1 &quot;plasma-discover&quot; received signal SIGSEGV, Segmentation fault.
0x00007fffcc6c31eb in PackageKitBackend::resolvePackages(QStringList const&amp;) () from /usr/lib64/qt5/plugins/discover/packagekit-backend.so
(gdb) bt
#0  0x00007fffcc6c31eb in PackageKitBackend::resolvePackages(QStringList const&amp;) () from /usr/lib64/qt5/plugins/discover/packagekit-backend.so
#1  0x00007fffcc6cae88 in ?? () from /usr/lib64/qt5/plugins/discover/packagekit-backend.so
#2  0x00007ffff5f7ec50 in QObject::event(QEvent*) () from /lib64/libQt5Core.so.5
#3  0x00007ffff78db44e in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /lib64/libQt5Widgets.so.5
#4  0x00007ffff5f53138 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /lib64/libQt5Core.so.5
#5  0x00007ffff5f560d1 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /lib64/libQt5Core.so.5
#6  0x00007ffff5fab363 in ?? () from /lib64/libQt5Core.so.5
#7  0x00007ffff45e2a90 in g_main_context_dispatch () from /lib64/libglib-2.0.so.0
#8  0x00007ffff45e2e48 in ?? () from /lib64/libglib-2.0.so.0
#9  0x00007ffff45e2edc in g_main_context_iteration () from /lib64/libglib-2.0.so.0
#10 0x00007ffff5faab66 in QEventDispatcherGlib::processEvents(QFlags&lt;QEventLoop::ProcessEventsFlag&gt;) () from /lib64/libQt5Core.so.5
#11 0x00007ffff5f51bab in QEventLoop::exec(QFlags&lt;QEventLoop::ProcessEventsFlag&gt;) () from /lib64/libQt5Core.so.5
#12 0x00007ffff5f59d16 in QCoreApplication::exec() () from /lib64/libQt5Core.so.5
#13 0x000055555556d2a0 in ?? ()
#14 0x00007ffff58725b0 in __libc_start_call_main () from /lib64/libc.so.6
#15 0x00007ffff5872679 in __libc_start_main_impl () from /lib64/libc.so.6
#16 0x000055555556dc75 in ?? ()
(gdb) q

For reference, a working start of discover:

linux@localhost:~&gt; rm -rf .cache/discover/
linux@localhost:~&gt; plasma-discover
fetch ratings! true
adding empty sources model QStandardItemModel(0x560fc9cae630)
org.kde.plasma.discover: couldn&apos;t open file &quot;/home/linux/.cache/discover/featured-5.9.json&quot; &quot;No such file or directory&quot;
no component found for &quot;org.opensuse.opensuse-tumbleweed&quot;
qrc:/qml/Feedback.qml:44: ReferenceError: UserFeedbackSettings is not defined
file:///usr/lib64/qt5/qml/org/kde/kirigami.2/ScrollablePage.qml:200:9: QML MouseArea: Binding loop detected for property &quot;implicitHeight&quot;
file:///usr/lib64/qt5/qml/org/kde/kirigami.2/ScrollablePage.qml:200:9: QML MouseArea: Binding loop detected for property &quot;implicitHeight&quot;
file:///usr/lib64/qt5/qml/org/kde/kirigami.2/ScrollablePage.qml:200:9: QML MouseArea: Binding loop detected for property &quot;implicitHeight&quot;
file:///usr/lib64/qt5/qml/org/kde/kirigami.2/ScrollablePage.qml:200:9: QML MouseArea: Binding loop detected for property &quot;implicitHeight&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2200269</commentid>
    <comment_count>1</comment_count>
    <who name="Fabian Vogt">fabian</who>
    <bug_when>2023-01-21 13:14:16 +0000</bug_when>
    <thetext>The cause is that the cache for https://api.kde-look.org/ocs/v1/content/categories contains only metadata, but not any actual data:

.cache/discover/attica/data8/2:
total 4
-rw------- 1 linux linux 718 Jan 21 07:56 9hw8n262.d

This is how it should like with a full GET request:

/tmp/qtnamcache/data8/2:
insgesamt 28
-rw------- 1 fabian users 26575 21. Jan 14:13 9hw8n262.d

The crash is not directly related, appears to be some use-after-free:

==4859== Invalid read of size 8
==4859==    at 0x68E1BF0: QObjectPrivate::maybeSignalConnected(unsigned int) const (in /usr/lib64/libQt5Core.so.5.15.8)
==4859==    by 0x68F004D: ??? (in /usr/lib64/libQt5Core.so.5.15.8)
==4859==    by 0x49363F1: ResultsStream::resourcesFound(QVector&lt;AbstractResource*&gt; const&amp;) (moc_AbstractResourcesBackend.cpp:159)
==4859==    by 0x28443DE8: UnknownInlinedFun (PackageKitBackend.cpp:532)
==4859==    by 0x28443DE8: UnknownInlinedFun (PackageKitBackend.cpp:521)
==4859==    by 0x28443DE8: UnknownInlinedFun (PackageKitBackend.cpp:626)
==4859==    by 0x28443DE8: UnknownInlinedFun (invoke.h:61)
==4859==    by 0x28443DE8: UnknownInlinedFun (invoke.h:111)
==4859==    by 0x28443DE8: std::_Function_handler&lt;void (), PackageKitBackend::search(AbstractResourcesBackend::Filters const&amp;)::{lambda()#9}&gt;::_M_invoke(std::_Any_data const&amp;) [clone .lto_priv.0] (std_function.h:290)
==4859==    by 0x68E4C4F: QObject::event(QEvent*) (in /usr/lib64/libQt5Core.so.5.15.8)
==4859==    by 0x4B9344D: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.8)
==4859==    by 0x68B9137: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /usr/lib64/libQt5Core.so.5.15.8)
==4859==    by 0x68BC0D0: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /usr/lib64/libQt5Core.so.5.15.8)
==4859==    by 0x6911362: ??? (in /usr/lib64/libQt5Core.so.5.15.8)
==4859==    by 0x81A6A8F: g_main_context_dispatch (in /usr/lib64/libglib-2.0.so.0.7400.4)
==4859==    by 0x81A6E47: ??? (in /usr/lib64/libglib-2.0.so.0.7400.4)
==4859==    by 0x81A6EDB: g_main_context_iteration (in /usr/lib64/libglib-2.0.so.0.7400.4)
==4859==  Address 0xd00b420 is 64 bytes inside a block of size 85 free&apos;d
==4859==    at 0x484717B: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==4859==    by 0x8F93524: xmlFreeNodeList (in /usr/lib64/libxml2.so.2.10.3)
==4859==    by 0x8F93634: xmlFreeNode (in /usr/lib64/libxml2.so.2.10.3)
==4859==    by 0x82CE5BA: ??? (in /usr/lib64/libappstream.so.0.15.6)
==4859==    by 0x82CEB07: ??? (in /usr/lib64/libappstream.so.0.15.6)
==4859==    by 0x82F6EFB: ??? (in /usr/lib64/libappstream.so.0.15.6)
==4859==    by 0x82CB1C4: as_cache_get_components_by_categories (in /usr/lib64/libappstream.so.0.15.6)
==4859==    by 0x82EDBAF: as_pool_get_components_by_categories (in /usr/lib64/libappstream.so.0.15.6)
==4859==    by 0x7199E1B: AppStream::Pool::componentsByCategories(QStringList const&amp;) const (in /usr/lib64/libAppStreamQt.so.0.15.6)
==4859==    by 0x4974E13: AppStreamUtils::componentsByCategories(AppStream::Pool*, Category*, AppStream::Bundle::Kind) (AppStreamUtils.cpp:259)
==4859==    by 0x28443A7A: UnknownInlinedFun (PackageKitBackend.cpp:618)
==4859==    by 0x28443A7A: UnknownInlinedFun (invoke.h:61)
==4859==    by 0x28443A7A: UnknownInlinedFun (invoke.h:111)
==4859==    by 0x28443A7A: std::_Function_handler&lt;void (), PackageKitBackend::search(AbstractResourcesBackend::Filters const&amp;)::{lambda()#9}&gt;::_M_invoke(std::_Any_data const&amp;) [clone .lto_priv.0] (std_function.h:290)
==4859==    by 0x68E4C4F: QObject::event(QEvent*) (in /usr/lib64/libQt5Core.so.5.15.8)
==4859==  Block was alloc&apos;d at
==4859==    at 0x48447B4: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==4859==    by 0x8FE3552: xmlStrndup (in /usr/lib64/libxml2.so.2.10.3)
==4859==    by 0x8F8CC5B: xmlNewTextLen (in /usr/lib64/libxml2.so.2.10.3)
==4859==    by 0x8F8CCCD: xmlNewDocTextLen (in /usr/lib64/libxml2.so.2.10.3)
==4859==    by 0x8F98A7F: xmlNodeAddContentLen (in /usr/lib64/libxml2.so.2.10.3)
==4859==    by 0x82C8C52: ??? (in /usr/lib64/libappstream.so.0.15.6)
==4859==    by 0x82C8D58: ??? (in /usr/lib64/libappstream.so.0.15.6)
==4859==    by 0x82C8D58: ??? (in /usr/lib64/libappstream.so.0.15.6)
==4859==    by 0x82C8D58: ??? (in /usr/lib64/libappstream.so.0.15.6)
==4859==    by 0x82CE58F: ??? (in /usr/lib64/libappstream.so.0.15.6)
==4859==    by 0x82CEB07: ??? (in /usr/lib64/libappstream.so.0.15.6)
==4859==    by 0x82F6EFB: ??? (in /usr/lib64/libappstream.so.0.15.6)
==4859== 
==4859== Invalid read of size 8
==4859==    at 0x68E1C00: QObjectPrivate::maybeSignalConnected(unsigned int) const (in /usr/lib64/libQt5Core.so.5.15.8)
==4859==    by 0x68F004D: ??? (in /usr/lib64/libQt5Core.so.5.15.8)
==4859==    by 0x49363F1: ResultsStream::resourcesFound(QVector&lt;AbstractResource*&gt; const&amp;) (moc_AbstractResourcesBackend.cpp:159)
==4859==    by 0x28443DE8: UnknownInlinedFun (PackageKitBackend.cpp:532)
==4859==    by 0x28443DE8: UnknownInlinedFun (PackageKitBackend.cpp:521)
==4859==    by 0x28443DE8: UnknownInlinedFun (PackageKitBackend.cpp:626)
==4859==    by 0x28443DE8: UnknownInlinedFun (invoke.h:61)
==4859==    by 0x28443DE8: UnknownInlinedFun (invoke.h:111)
==4859==    by 0x28443DE8: std::_Function_handler&lt;void (), PackageKitBackend::search(AbstractResourcesBackend::Filters const&amp;)::{lambda()#9}&gt;::_M_invoke(std::_Any_data const&amp;) [clone .lto_priv.0] (std_function.h:290)
==4859==    by 0x68E4C4F: QObject::event(QEvent*) (in /usr/lib64/libQt5Core.so.5.15.8)
==4859==    by 0x4B9344D: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.8)
==4859==    by 0x68B9137: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /usr/lib64/libQt5Core.so.5.15.8)
==4859==    by 0x68BC0D0: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /usr/lib64/libQt5Core.so.5.15.8)
==4859==    by 0x6911362: ??? (in /usr/lib64/libQt5Core.so.5.15.8)
==4859==    by 0x81A6A8F: g_main_context_dispatch (in /usr/lib64/libglib-2.0.so.0.7400.4)
==4859==    by 0x81A6E47: ??? (in /usr/lib64/libglib-2.0.so.0.7400.4)
==4859==    by 0x81A6EDB: g_main_context_iteration (in /usr/lib64/libglib-2.0.so.0.7400.4)
==4859==  Address 0x6e69687469772075 is not stack&apos;d, malloc&apos;d or (recently) free&apos;d</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2200310</commentid>
    <comment_count>2</comment_count>
      <attachid>155478</attachid>
    <who name="P. Förster">kde.p-foerster</who>
    <bug_when>2023-01-21 17:55:48 +0000</bug_when>
    <thetext>Created attachment 155478
Terminal output when starting Discover

I can reproduce this on a fresh install of KDE neon Testing.

SYSTEM INFORMATION
Operating System: KDE neon Testing Edition
KDE Plasma Version: 5.26.90
KDE Frameworks Version: 5.102.0
Qt Version: 5.15.8
Kernel Version: 5.15.0-58-generic (64-bit)
Graphics Platform: X11
Processors: 16 × AMD Ryzen 7 5700U with Radeon Graphics
Memory: 15.0 GiB of RAM
Graphics Processor: AMD Radeon Graphics
Manufacturer: LENOVO
Product Name: 82LM
System Version: IdeaPad 5 14ALC05</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2200311</commentid>
    <comment_count>3</comment_count>
    <who name="P. Förster">kde.p-foerster</who>
    <bug_when>2023-01-21 18:00:48 +0000</bug_when>
    <thetext>I can also confirm that after deleting .cache/discover Discover starts as expected again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2200330</commentid>
    <comment_count>4</comment_count>
    <who name="Fabian Vogt">fabian</who>
    <bug_when>2023-01-21 20:27:55 +0000</bug_when>
    <thetext>&gt; The crash is not directly related, appears to be some use-after-free:

Indeed. The bug with categories caching causes ResourcesProxyModel::invalidateFilter() to be called for all resources/streams which calls &quot;delete&quot; on them. This happens while the backends are still busy fetching stuff for those streams, so they end up calling ResultsStream::resourcesFound on dangling pointers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2200365</commentid>
    <comment_count>5</comment_count>
    <who name="Fabian Vogt">fabian</who>
    <bug_when>2023-01-21 22:35:41 +0000</bug_when>
    <thetext>It&apos;s a bug in plasma-desktop&apos;s attica-kde plugin triggering a bug in QNetworkDiskCache:

     const QString cacheDir = QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + QStringLiteral(&quot;/attica&quot;);
     QNetworkDiskCache *cache = new QNetworkDiskCache(m_accessManager);
     QStorageInfo storageInfo(cacheDir);
     cache-&gt;setCacheDirectory(cacheDir);
     cache-&gt;setMaximumCacheSize(storageInfo.bytesTotal() / 1000);

QStorageInfo returns -1 there if the cache directory didn&apos;t exist yet. QNetworkDiskCache happily accepts 0 as max size and eagerly deletes everything it can on every occasion.

This happens in the worst possible spot, QNetworkDiskCachePrivate::storeItem:

void QNetworkDiskCachePrivate::storeItem(QCacheItem *cacheItem)
{
...
    currentCacheSize = q-&gt;expire();
    if (!cacheItem-&gt;file) {
        QString templateName = tmpCacheFileName();
        cacheItem-&gt;file = new QTemporaryFile(templateName, &amp;cacheItem-&gt;data);
        if (cacheItem-&gt;file-&gt;open()) {
            cacheItem-&gt;writeHeader(cacheItem-&gt;file);
            cacheItem-&gt;writeCompressedData(cacheItem-&gt;file);
        }
    }

    if (cacheItem-&gt;file
        &amp;&amp; cacheItem-&gt;file-&gt;isOpen()
        &amp;&amp; cacheItem-&gt;file-&gt;error() == QFile::NoError) {
        cacheItem-&gt;file-&gt;setAutoRemove(false);
        // ### use atomic rename rather then remove &amp; rename
        if (cacheItem-&gt;file-&gt;rename(fileName))
            currentCacheSize += cacheItem-&gt;file-&gt;size();
        else
            cacheItem-&gt;file-&gt;setAutoRemove(true);
    }

cacheItem-&gt;file is the temporary file with the cached contents. q-&gt;expire() however notices that the cache is too big and deletes it, setting cacheItem-&gt;file to nullptr. This unfortunately triggers the if block below, which is only meant for compressed caches, which are backed by cacheItem-&gt;data instead of cacheItem-&gt;file. The categories cache will not be compressed, which means that cacheItem-&gt;data is empty and it writes no actual data into the new file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2200367</commentid>
    <comment_count>6</comment_count>
    <who name="Fabian Vogt">fabian</who>
    <bug_when>2023-01-21 22:40:00 +0000</bug_when>
    <thetext>The in hindsight ridiculously simple fix for the attica-kde bug: https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/1343</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2200522</commentid>
    <comment_count>7</comment_count>
    <who name="Fushan Wen">qydwhotmail</who>
    <bug_when>2023-01-22 09:27:52 +0000</bug_when>
    <thetext>Git commit 63788e6520a64a0846e4ee5ff0f2693730604986 by Fushan Wen, on behalf of Fabian Vogt.
Committed on 22/01/2023 at 09:22.
Pushed by fusionfuture into branch &apos;master&apos;.

attica-kde: Use the correct location for determining the max cache size

QStorageInfo returns -1 there if the cache directory didn&apos;t exist yet.
QNetworkDiskCache happily accepts 0 as max size and eagerly deletes
everything it can on every occasion, triggering cache corruption.

M  +1    -1    attica-kde/kdeplugin/kdeplatformdependent.cpp

https://invent.kde.org/plasma/plasma-desktop/commit/63788e6520a64a0846e4ee5ff0f2693730604986</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2200523</commentid>
    <comment_count>8</comment_count>
    <who name="Fushan Wen">qydwhotmail</who>
    <bug_when>2023-01-22 09:28:18 +0000</bug_when>
    <thetext>Git commit 884e1988a064ec132b351d4f9b1a272d3627829c by Fushan Wen, on behalf of Fabian Vogt.
Committed on 22/01/2023 at 09:28.
Pushed by fusionfuture into branch &apos;cherry-pick-63788e65&apos;.

attica-kde: Use the correct location for determining the max cache size

QStorageInfo returns -1 there if the cache directory didn&apos;t exist yet.
QNetworkDiskCache happily accepts 0 as max size and eagerly deletes
everything it can on every occasion, triggering cache corruption.


(cherry picked from commit 63788e6520a64a0846e4ee5ff0f2693730604986)

M  +1    -1    attica-kde/kdeplugin/kdeplatformdependent.cpp

https://invent.kde.org/plasma/plasma-desktop/commit/884e1988a064ec132b351d4f9b1a272d3627829c</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2200525</commentid>
    <comment_count>9</comment_count>
    <who name="Fushan Wen">qydwhotmail</who>
    <bug_when>2023-01-22 09:34:23 +0000</bug_when>
    <thetext>Git commit ec5cc12b4c4119672acd95680e897ac96e573ee8 by Fushan Wen, on behalf of Fabian Vogt.
Committed on 22/01/2023 at 09:34.
Pushed by fusionfuture into branch &apos;cherry-pick-63788e65-2&apos;.

attica-kde: Use the correct location for determining the max cache size

QStorageInfo returns -1 there if the cache directory didn&apos;t exist yet.
QNetworkDiskCache happily accepts 0 as max size and eagerly deletes
everything it can on every occasion, triggering cache corruption.


(cherry picked from commit 63788e6520a64a0846e4ee5ff0f2693730604986)

M  +1    -1    attica-kde/kdeplugin/kdeplatformdependent.cpp

https://invent.kde.org/plasma/plasma-desktop/commit/ec5cc12b4c4119672acd95680e897ac96e573ee8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2200528</commentid>
    <comment_count>10</comment_count>
    <who name="Fabian Vogt">fabian</who>
    <bug_when>2023-01-22 09:41:37 +0000</bug_when>
    <thetext>I&apos;ll report the QNetworkDiskCache bug to Qt soon.

https://bugs.kde.org/show_bug.cgi?id=463864 has the same backtrace as the triggered UAF, so I think that can particular bug can continue there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2260796</commentid>
    <comment_count>11</comment_count>
    <who name="Bug Janitor Service">bug-janitor</who>
    <bug_when>2023-10-23 12:42:29 +0000</bug_when>
    <thetext>A possibly relevant merge request was started @ https://invent.kde.org/plasma/discover/-/merge_requests/671</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2260994</commentid>
    <comment_count>12</comment_count>
    <who name="Aleix Pol">aleixpol</who>
    <bug_when>2023-10-24 00:32:26 +0000</bug_when>
    <thetext>Git commit 90e271b96974adb009e27570855d7040d1b3cea7 by Aleix Pol Gonzalez, on behalf of David Edmundson.
Committed on 24/10/2023 at 02:29.
Pushed by apol into branch &apos;master&apos;.

Fix network cache size for first run

QNetworkDiskCache will take care of creating a directory if it doesn&apos;t
exist. QStorageInfo on a directory that doesn&apos;t exist will return that
it has 0 bytesTotal.

As well as being potentially inefficient for the second run, it has been
reported that a QNetworkDiskCache of 0 causes out of bounds memory
writes.

M  +1    -1    libdiscover/CachedNetworkAccessManager.cpp

https://invent.kde.org/plasma/discover/-/commit/90e271b96974adb009e27570855d7040d1b3cea7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2261062</commentid>
    <comment_count>13</comment_count>
    <who name="Bug Janitor Service">bug-janitor</who>
    <bug_when>2023-10-24 08:07:20 +0000</bug_when>
    <thetext>A possibly relevant merge request was started @ https://invent.kde.org/plasma/discover/-/merge_requests/675</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2261064</commentid>
    <comment_count>14</comment_count>
    <who name="David Edmundson">kde</who>
    <bug_when>2023-10-24 08:08:51 +0000</bug_when>
    <thetext>Git commit b98e9209b84473fcaa158d6a2d0710a51e3e43c3 by David Edmundson.
Committed on 24/10/2023 at 10:06.
Pushed by davidedmundson into branch &apos;Plasma/5.27&apos;.

Fix network cache size for first run

QNetworkDiskCache will take care of creating a directory if it doesn&apos;t
exist. QStorageInfo on a directory that doesn&apos;t exist will return that
it has 0 bytesTotal.

As well as being potentially inefficient for the second run, it has been
reported that a QNetworkDiskCache of 0 causes out of bounds memory
writes.


(cherry picked from commit 90e271b96974adb009e27570855d7040d1b3cea7)

M  +1    -1    libdiscover/CachedNetworkAccessManager.cpp

https://invent.kde.org/plasma/discover/-/commit/b98e9209b84473fcaa158d6a2d0710a51e3e43c3</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>155478</attachid>
            <date>2023-01-21 17:55:48 +0000</date>
            <delta_ts>2023-01-21 17:55:48 +0000</delta_ts>
            <desc>Terminal output when starting Discover</desc>
            <filename>discover-crash.txt</filename>
            <type>text/plain</type>
            <size>19351</size>
            <attacher name="P. Förster">kde.p-foerster</attacher>
            
              <data encoding="base64">bmVvbkBuZW9uOn4kIHBsYXNtYS1kaXNjb3ZlcgpmZXRjaCByYXRpbmdzISBmYWxzZQphZGRpbmcg
ZW1wdHkgc291cmNlcyBtb2RlbCBRU3RhbmRhcmRJdGVtTW9kZWwoMHg1NjI0MWZlNGQ5MjApCm5v
IGNvbXBvbmVudCBmb3VuZCBmb3IgIm9yZy5rZGUubmVvbi5uZW9uIgpwYXJzZUxpc3QoKTo6IFhN
TCBFcnJvcjogICJQcmVtYXR1cmUgZW5kIG9mIGRvY3VtZW50LiIKSW4geG1sIG5hbWUgIiIgd2l0
aCB0ZXh0ICIiIGF0IG9mZnNldDoKIDAKSW4gWE1MOgogIiIKS05TIGVycm9yIGluICJBdXJvcmFl
IFdpbmRvdyBEZWNvcmF0aW9ucyIgOiBLTlNDb3JlOjpPY3NFcnJvciAiVW5rbm93biBPcGVuIENv
bGxhYm9yYXRpb24gU2VydmljZSBBUEkgZXJyb3IuICgwKSIgUVZhcmlhbnQoaW50LCAwKQppbnZh
bGlkIGtucyBiYWNrZW5kISAiL3Vzci9zaGFyZS9rbnNyY2ZpbGVzL2F1cm9yYWUua25zcmMiIGJl
Y2F1c2U6ICJJbnZhbGlkIEF1cm9yYWUgV2luZG93IERlY29yYXRpb25zIGJhY2tlbmQsIGNvbnRh
Y3QgeW91ciBkaXN0cmlidXRvci4iCm9yZy5rZGUucGxhc21hLmxpYmRpc2NvdmVyOiBEaXNjYXJk
aW5nIGludmFsaWQgYmFja2VuZCAiYXVyb3JhZS5rbnNyYyIKa25zIGVycm9yICIvdXNyL3NoYXJl
L2tuc3JjZmlsZXMvYXVyb3JhZS5rbnNyYyIgIkludmFsaWQgQXVyb3JhZSBXaW5kb3cgRGVjb3Jh
dGlvbnMgYmFja2VuZCwgY29udGFjdCB5b3VyIGRpc3RyaWJ1dG9yLiIKS05TIGVycm9yIGluICJD
b2xvciBTY2hlbWVzIiA6IEtOU0NvcmU6Ok9jc0Vycm9yICJVbmtub3duIE9wZW4gQ29sbGFib3Jh
dGlvbiBTZXJ2aWNlIEFQSSBlcnJvci4gKDApIiBRVmFyaWFudChpbnQsIDApCmludmFsaWQga25z
IGJhY2tlbmQhICIvdXNyL3NoYXJlL2tuc3JjZmlsZXMvY29sb3JzY2hlbWVzLmtuc3JjIiBiZWNh
dXNlOiAiSW52YWxpZCBDb2xvciBTY2hlbWVzIGJhY2tlbmQsIGNvbnRhY3QgeW91ciBkaXN0cmli
dXRvci4iCm9yZy5rZGUucGxhc21hLmxpYmRpc2NvdmVyOiBEaXNjYXJkaW5nIGludmFsaWQgYmFj
a2VuZCAiY29sb3JzY2hlbWVzLmtuc3JjIgpvcmcua2RlLnBsYXNtYS5saWJkaXNjb3ZlcjogbGFz
dCBzdHJlYW0gaXNuJ3Qgb3ZlciB5ZXQgRmlsdGVycyhjYXRlZ29yeTogQ2F0ZWdvcnkoMHg1NjI0
MWZlN2YzMTAsIG5hbWUgPSAiR2FtZXMiKSwpIFJlc291cmNlc1Byb3h5TW9kZWwoMHg1NjI0MjA4
ZTdhZDApCm9yZy5rZGUucGxhc21hLmxpYmRpc2NvdmVyOiBsYXN0IHN0cmVhbSBpc24ndCBvdmVy
IHlldCBGaWx0ZXJzKGNhdGVnb3J5OiBDYXRlZ29yeSgweDU2MjQxZmU3MWNkMCwgbmFtZSA9ICJE
ZXZlbG9wZXIgVG9vbHMiKSwpIFJlc291cmNlc1Byb3h5TW9kZWwoMHg1NjI0MjA4ZTAzNzApCmtu
cyBlcnJvciAiL3Vzci9zaGFyZS9rbnNyY2ZpbGVzL2NvbG9yc2NoZW1lcy5rbnNyYyIgIkludmFs
aWQgQ29sb3IgU2NoZW1lcyBiYWNrZW5kLCBjb250YWN0IHlvdXIgZGlzdHJpYnV0b3IuIgpLTlMg
ZXJyb3IgaW4gIkNvbWljcyIgOiBLTlNDb3JlOjpPY3NFcnJvciAiVW5rbm93biBPcGVuIENvbGxh
Ym9yYXRpb24gU2VydmljZSBBUEkgZXJyb3IuICgwKSIgUVZhcmlhbnQoaW50LCAwKQppbnZhbGlk
IGtucyBiYWNrZW5kISAiL3Vzci9zaGFyZS9rbnNyY2ZpbGVzL2NvbWljLmtuc3JjIiBiZWNhdXNl
OiAiSW52YWxpZCBDb21pY3MgYmFja2VuZCwgY29udGFjdCB5b3VyIGRpc3RyaWJ1dG9yLiIKb3Jn
LmtkZS5wbGFzbWEubGliZGlzY292ZXI6IERpc2NhcmRpbmcgaW52YWxpZCBiYWNrZW5kICJjb21p
Yy5rbnNyYyIKb3JnLmtkZS5wbGFzbWEubGliZGlzY292ZXI6IGxhc3Qgc3RyZWFtIGlzbid0IG92
ZXIgeWV0IEZpbHRlcnMoY2F0ZWdvcnk6IENhdGVnb3J5KDB4NTYyNDFmZTdmMzEwLCBuYW1lID0g
IkdhbWVzIiksKSBSZXNvdXJjZXNQcm94eU1vZGVsKDB4NTYyNDIwOGU3YWQwKQpvcmcua2RlLnBs
YXNtYS5saWJkaXNjb3ZlcjogbGFzdCBzdHJlYW0gaXNuJ3Qgb3ZlciB5ZXQgRmlsdGVycyhjYXRl
Z29yeTogQ2F0ZWdvcnkoMHg1NjI0MWZlNzFjZDAsIG5hbWUgPSAiRGV2ZWxvcGVyIFRvb2xzIiks
KSBSZXNvdXJjZXNQcm94eU1vZGVsKDB4NTYyNDIwOGUwMzcwKQprbnMgZXJyb3IgIi91c3Ivc2hh
cmUva25zcmNmaWxlcy9jb21pYy5rbnNyYyIgIkludmFsaWQgQ29taWNzIGJhY2tlbmQsIGNvbnRh
Y3QgeW91ciBkaXN0cmlidXRvci4iCktOUyBlcnJvciBpbiAiR05PTUUvR1RLIEFwcGxpY2F0aW9u
IFN0eWxlcyIgOiBLTlNDb3JlOjpPY3NFcnJvciAiVW5rbm93biBPcGVuIENvbGxhYm9yYXRpb24g
U2VydmljZSBBUEkgZXJyb3IuICgwKSIgUVZhcmlhbnQoaW50LCAwKQppbnZhbGlkIGtucyBiYWNr
ZW5kISAiL3Vzci9zaGFyZS9rbnNyY2ZpbGVzL2d0a190aGVtZXMua25zcmMiIGJlY2F1c2U6ICJJ
bnZhbGlkIEdOT01FL0dUSyBBcHBsaWNhdGlvbiBTdHlsZXMgYmFja2VuZCwgY29udGFjdCB5b3Vy
IGRpc3RyaWJ1dG9yLiIKb3JnLmtkZS5wbGFzbWEubGliZGlzY292ZXI6IERpc2NhcmRpbmcgaW52
YWxpZCBiYWNrZW5kICJndGtfdGhlbWVzLmtuc3JjIgpvcmcua2RlLnBsYXNtYS5saWJkaXNjb3Zl
cjogbGFzdCBzdHJlYW0gaXNuJ3Qgb3ZlciB5ZXQgRmlsdGVycyhjYXRlZ29yeTogQ2F0ZWdvcnko
MHg1NjI0MWZlN2YzMTAsIG5hbWUgPSAiR2FtZXMiKSwpIFJlc291cmNlc1Byb3h5TW9kZWwoMHg1
NjI0MjA4ZTdhZDApCm9yZy5rZGUucGxhc21hLmxpYmRpc2NvdmVyOiBsYXN0IHN0cmVhbSBpc24n
dCBvdmVyIHlldCBGaWx0ZXJzKGNhdGVnb3J5OiBDYXRlZ29yeSgweDU2MjQxZmU3MWNkMCwgbmFt
ZSA9ICJEZXZlbG9wZXIgVG9vbHMiKSwpIFJlc291cmNlc1Byb3h5TW9kZWwoMHg1NjI0MjA4ZTAz
NzApCmtucyBlcnJvciAiL3Vzci9zaGFyZS9rbnNyY2ZpbGVzL2d0a190aGVtZXMua25zcmMiICJJ
bnZhbGlkIEdOT01FL0dUSyBBcHBsaWNhdGlvbiBTdHlsZXMgYmFja2VuZCwgY29udGFjdCB5b3Vy
IGRpc3RyaWJ1dG9yLiIKS05TIGVycm9yIGluICJJY29ucyIgOiBLTlNDb3JlOjpPY3NFcnJvciAi
VW5rbm93biBPcGVuIENvbGxhYm9yYXRpb24gU2VydmljZSBBUEkgZXJyb3IuICgwKSIgUVZhcmlh
bnQoaW50LCAwKQppbnZhbGlkIGtucyBiYWNrZW5kISAiL3Vzci9zaGFyZS9rbnNyY2ZpbGVzL2lj
b25zLmtuc3JjIiBiZWNhdXNlOiAiSW52YWxpZCBJY29ucyBiYWNrZW5kLCBjb250YWN0IHlvdXIg
ZGlzdHJpYnV0b3IuIgpvcmcua2RlLnBsYXNtYS5saWJkaXNjb3ZlcjogRGlzY2FyZGluZyBpbnZh
bGlkIGJhY2tlbmQgImljb25zLmtuc3JjIgpvcmcua2RlLnBsYXNtYS5saWJkaXNjb3ZlcjogbGFz
dCBzdHJlYW0gaXNuJ3Qgb3ZlciB5ZXQgRmlsdGVycyhjYXRlZ29yeTogQ2F0ZWdvcnkoMHg1NjI0
MWZlN2YzMTAsIG5hbWUgPSAiR2FtZXMiKSwpIFJlc291cmNlc1Byb3h5TW9kZWwoMHg1NjI0MjA4
ZTdhZDApCm9yZy5rZGUucGxhc21hLmxpYmRpc2NvdmVyOiBsYXN0IHN0cmVhbSBpc24ndCBvdmVy
IHlldCBGaWx0ZXJzKGNhdGVnb3J5OiBDYXRlZ29yeSgweDU2MjQxZmU3MWNkMCwgbmFtZSA9ICJE
ZXZlbG9wZXIgVG9vbHMiKSwpIFJlc291cmNlc1Byb3h5TW9kZWwoMHg1NjI0MjA4ZTAzNzApCmtu
cyBlcnJvciAiL3Vzci9zaGFyZS9rbnNyY2ZpbGVzL2ljb25zLmtuc3JjIiAiSW52YWxpZCBJY29u
cyBiYWNrZW5kLCBjb250YWN0IHlvdXIgZGlzdHJpYnV0b3IuIgpLTlMgZXJyb3IgaW4gIktvbnNv
bGUiIDogS05TQ29yZTo6T2NzRXJyb3IgIlVua25vd24gT3BlbiBDb2xsYWJvcmF0aW9uIFNlcnZp
Y2UgQVBJIGVycm9yLiAoMCkiIFFWYXJpYW50KGludCwgMCkKaW52YWxpZCBrbnMgYmFja2VuZCEg
Ii91c3Ivc2hhcmUva25zcmNmaWxlcy9rb25zb2xlLmtuc3JjIiBiZWNhdXNlOiAiSW52YWxpZCBL
b25zb2xlIGJhY2tlbmQsIGNvbnRhY3QgeW91ciBkaXN0cmlidXRvci4iCm9yZy5rZGUucGxhc21h
LmxpYmRpc2NvdmVyOiBEaXNjYXJkaW5nIGludmFsaWQgYmFja2VuZCAia29uc29sZS5rbnNyYyIK
b3JnLmtkZS5wbGFzbWEubGliZGlzY292ZXI6IGxhc3Qgc3RyZWFtIGlzbid0IG92ZXIgeWV0IEZp
bHRlcnMoY2F0ZWdvcnk6IENhdGVnb3J5KDB4NTYyNDFmZTdmMzEwLCBuYW1lID0gIkdhbWVzIiks
KSBSZXNvdXJjZXNQcm94eU1vZGVsKDB4NTYyNDIwOGU3YWQwKQpvcmcua2RlLnBsYXNtYS5saWJk
aXNjb3ZlcjogbGFzdCBzdHJlYW0gaXNuJ3Qgb3ZlciB5ZXQgRmlsdGVycyhjYXRlZ29yeTogQ2F0
ZWdvcnkoMHg1NjI0MWZlNzFjZDAsIG5hbWUgPSAiRGV2ZWxvcGVyIFRvb2xzIiksKSBSZXNvdXJj
ZXNQcm94eU1vZGVsKDB4NTYyNDIwOGUwMzcwKQprbnMgZXJyb3IgIi91c3Ivc2hhcmUva25zcmNm
aWxlcy9rb25zb2xlLmtuc3JjIiAiSW52YWxpZCBLb25zb2xlIGJhY2tlbmQsIGNvbnRhY3QgeW91
ciBkaXN0cmlidXRvci4iCktOUyBlcnJvciBpbiAiS3J1bm5lciIgOiBLTlNDb3JlOjpPY3NFcnJv
ciAiVW5rbm93biBPcGVuIENvbGxhYm9yYXRpb24gU2VydmljZSBBUEkgZXJyb3IuICgwKSIgUVZh
cmlhbnQoaW50LCAwKQppbnZhbGlkIGtucyBiYWNrZW5kISAiL3Vzci9zaGFyZS9rbnNyY2ZpbGVz
L2tydW5uZXIua25zcmMiIGJlY2F1c2U6ICJJbnZhbGlkIEtydW5uZXIgYmFja2VuZCwgY29udGFj
dCB5b3VyIGRpc3RyaWJ1dG9yLiIKb3JnLmtkZS5wbGFzbWEubGliZGlzY292ZXI6IERpc2NhcmRp
bmcgaW52YWxpZCBiYWNrZW5kICJrcnVubmVyLmtuc3JjIgpvcmcua2RlLnBsYXNtYS5saWJkaXNj
b3ZlcjogbGFzdCBzdHJlYW0gaXNuJ3Qgb3ZlciB5ZXQgRmlsdGVycyhjYXRlZ29yeTogQ2F0ZWdv
cnkoMHg1NjI0MWZlN2YzMTAsIG5hbWUgPSAiR2FtZXMiKSwpIFJlc291cmNlc1Byb3h5TW9kZWwo
MHg1NjI0MjA4ZTdhZDApCm9yZy5rZGUucGxhc21hLmxpYmRpc2NvdmVyOiBsYXN0IHN0cmVhbSBp
c24ndCBvdmVyIHlldCBGaWx0ZXJzKGNhdGVnb3J5OiBDYXRlZ29yeSgweDU2MjQxZmU3MWNkMCwg
bmFtZSA9ICJEZXZlbG9wZXIgVG9vbHMiKSwpIFJlc291cmNlc1Byb3h5TW9kZWwoMHg1NjI0MjA4
ZTAzNzApCmtucyBlcnJvciAiL3Vzci9zaGFyZS9rbnNyY2ZpbGVzL2tydW5uZXIua25zcmMiICJJ
bnZhbGlkIEtydW5uZXIgYmFja2VuZCwgY29udGFjdCB5b3VyIGRpc3RyaWJ1dG9yLiIKS05TIGVy
cm9yIGluICJTcGxhc2ggU2NyZWVucyIgOiBLTlNDb3JlOjpPY3NFcnJvciAiVW5rbm93biBPcGVu
IENvbGxhYm9yYXRpb24gU2VydmljZSBBUEkgZXJyb3IuICgwKSIgUVZhcmlhbnQoaW50LCAwKQpp
bnZhbGlkIGtucyBiYWNrZW5kISAiL3Vzci9zaGFyZS9rbnNyY2ZpbGVzL2tzcGxhc2gua25zcmMi
IGJlY2F1c2U6ICJJbnZhbGlkIFNwbGFzaCBTY3JlZW5zIGJhY2tlbmQsIGNvbnRhY3QgeW91ciBk
aXN0cmlidXRvci4iCm9yZy5rZGUucGxhc21hLmxpYmRpc2NvdmVyOiBEaXNjYXJkaW5nIGludmFs
aWQgYmFja2VuZCAia3NwbGFzaC5rbnNyYyIKb3JnLmtkZS5wbGFzbWEubGliZGlzY292ZXI6IGxh
c3Qgc3RyZWFtIGlzbid0IG92ZXIgeWV0IEZpbHRlcnMoY2F0ZWdvcnk6IENhdGVnb3J5KDB4NTYy
NDFmZTdmMzEwLCBuYW1lID0gIkdhbWVzIiksKSBSZXNvdXJjZXNQcm94eU1vZGVsKDB4NTYyNDIw
OGU3YWQwKQpvcmcua2RlLnBsYXNtYS5saWJkaXNjb3ZlcjogbGFzdCBzdHJlYW0gaXNuJ3Qgb3Zl
ciB5ZXQgRmlsdGVycyhjYXRlZ29yeTogQ2F0ZWdvcnkoMHg1NjI0MWZlNzFjZDAsIG5hbWUgPSAi
RGV2ZWxvcGVyIFRvb2xzIiksKSBSZXNvdXJjZXNQcm94eU1vZGVsKDB4NTYyNDIwOGUwMzcwKQpr
bnMgZXJyb3IgIi91c3Ivc2hhcmUva25zcmNmaWxlcy9rc3BsYXNoLmtuc3JjIiAiSW52YWxpZCBT
cGxhc2ggU2NyZWVucyBiYWNrZW5kLCBjb250YWN0IHlvdXIgZGlzdHJpYnV0b3IuIgpLTlMgZXJy
b3IgaW4gIkRlc2t0b3AgRWZmZWN0cyIgOiBLTlNDb3JlOjpPY3NFcnJvciAiVW5rbm93biBPcGVu
IENvbGxhYm9yYXRpb24gU2VydmljZSBBUEkgZXJyb3IuICgwKSIgUVZhcmlhbnQoaW50LCAwKQpp
bnZhbGlkIGtucyBiYWNrZW5kISAiL3Vzci9zaGFyZS9rbnNyY2ZpbGVzL2t3aW5lZmZlY3Qua25z
cmMiIGJlY2F1c2U6ICJJbnZhbGlkIERlc2t0b3AgRWZmZWN0cyBiYWNrZW5kLCBjb250YWN0IHlv
dXIgZGlzdHJpYnV0b3IuIgpvcmcua2RlLnBsYXNtYS5saWJkaXNjb3ZlcjogRGlzY2FyZGluZyBp
bnZhbGlkIGJhY2tlbmQgImt3aW5lZmZlY3Qua25zcmMiCm9yZy5rZGUucGxhc21hLmxpYmRpc2Nv
dmVyOiBsYXN0IHN0cmVhbSBpc24ndCBvdmVyIHlldCBGaWx0ZXJzKGNhdGVnb3J5OiBDYXRlZ29y
eSgweDU2MjQxZmU3ZjMxMCwgbmFtZSA9ICJHYW1lcyIpLCkgUmVzb3VyY2VzUHJveHlNb2RlbCgw
eDU2MjQyMDhlN2FkMCkKb3JnLmtkZS5wbGFzbWEubGliZGlzY292ZXI6IGxhc3Qgc3RyZWFtIGlz
bid0IG92ZXIgeWV0IEZpbHRlcnMoY2F0ZWdvcnk6IENhdGVnb3J5KDB4NTYyNDFmZTcxY2QwLCBu
YW1lID0gIkRldmVsb3BlciBUb29scyIpLCkgUmVzb3VyY2VzUHJveHlNb2RlbCgweDU2MjQyMDhl
MDM3MCkKa25zIGVycm9yICIvdXNyL3NoYXJlL2tuc3JjZmlsZXMva3dpbmVmZmVjdC5rbnNyYyIg
IkludmFsaWQgRGVza3RvcCBFZmZlY3RzIGJhY2tlbmQsIGNvbnRhY3QgeW91ciBkaXN0cmlidXRv
ci4iCktOUyBlcnJvciBpbiAiV2luZG93IE1hbmFnZXIgU2NyaXB0cyIgOiBLTlNDb3JlOjpPY3NF
cnJvciAiVW5rbm93biBPcGVuIENvbGxhYm9yYXRpb24gU2VydmljZSBBUEkgZXJyb3IuICgwKSIg
UVZhcmlhbnQoaW50LCAwKQppbnZhbGlkIGtucyBiYWNrZW5kISAiL3Vzci9zaGFyZS9rbnNyY2Zp
bGVzL2t3aW5zY3JpcHRzLmtuc3JjIiBiZWNhdXNlOiAiSW52YWxpZCBXaW5kb3cgTWFuYWdlciBT
Y3JpcHRzIGJhY2tlbmQsIGNvbnRhY3QgeW91ciBkaXN0cmlidXRvci4iCm9yZy5rZGUucGxhc21h
LmxpYmRpc2NvdmVyOiBEaXNjYXJkaW5nIGludmFsaWQgYmFja2VuZCAia3dpbnNjcmlwdHMua25z
cmMiCm9yZy5rZGUucGxhc21hLmxpYmRpc2NvdmVyOiBsYXN0IHN0cmVhbSBpc24ndCBvdmVyIHll
dCBGaWx0ZXJzKGNhdGVnb3J5OiBDYXRlZ29yeSgweDU2MjQxZmU3ZjMxMCwgbmFtZSA9ICJHYW1l
cyIpLCkgUmVzb3VyY2VzUHJveHlNb2RlbCgweDU2MjQyMDhlN2FkMCkKb3JnLmtkZS5wbGFzbWEu
bGliZGlzY292ZXI6IGxhc3Qgc3RyZWFtIGlzbid0IG92ZXIgeWV0IEZpbHRlcnMoY2F0ZWdvcnk6
IENhdGVnb3J5KDB4NTYyNDFmZTcxY2QwLCBuYW1lID0gIkRldmVsb3BlciBUb29scyIpLCkgUmVz
b3VyY2VzUHJveHlNb2RlbCgweDU2MjQyMDhlMDM3MCkKa25zIGVycm9yICIvdXNyL3NoYXJlL2tu
c3JjZmlsZXMva3dpbnNjcmlwdHMua25zcmMiICJJbnZhbGlkIFdpbmRvdyBNYW5hZ2VyIFNjcmlw
dHMgYmFja2VuZCwgY29udGFjdCB5b3VyIGRpc3RyaWJ1dG9yLiIKS05TIGVycm9yIGluICJXaW5k
b3cgTWFuYWdlciBTd2l0Y2hpbmcgTGF5b3V0cyIgOiBLTlNDb3JlOjpPY3NFcnJvciAiVW5rbm93
biBPcGVuIENvbGxhYm9yYXRpb24gU2VydmljZSBBUEkgZXJyb3IuICgwKSIgUVZhcmlhbnQoaW50
LCAwKQppbnZhbGlkIGtucyBiYWNrZW5kISAiL3Vzci9zaGFyZS9rbnNyY2ZpbGVzL2t3aW5zd2l0
Y2hlci5rbnNyYyIgYmVjYXVzZTogIkludmFsaWQgV2luZG93IE1hbmFnZXIgU3dpdGNoaW5nIExh
eW91dHMgYmFja2VuZCwgY29udGFjdCB5b3VyIGRpc3RyaWJ1dG9yLiIKb3JnLmtkZS5wbGFzbWEu
bGliZGlzY292ZXI6IERpc2NhcmRpbmcgaW52YWxpZCBiYWNrZW5kICJrd2luc3dpdGNoZXIua25z
cmMiCm9yZy5rZGUucGxhc21hLmxpYmRpc2NvdmVyOiBsYXN0IHN0cmVhbSBpc24ndCBvdmVyIHll
dCBGaWx0ZXJzKGNhdGVnb3J5OiBDYXRlZ29yeSgweDU2MjQxZmU3ZjMxMCwgbmFtZSA9ICJHYW1l
cyIpLCkgUmVzb3VyY2VzUHJveHlNb2RlbCgweDU2MjQyMDhlN2FkMCkKb3JnLmtkZS5wbGFzbWEu
bGliZGlzY292ZXI6IGxhc3Qgc3RyZWFtIGlzbid0IG92ZXIgeWV0IEZpbHRlcnMoY2F0ZWdvcnk6
IENhdGVnb3J5KDB4NTYyNDFmZTcxY2QwLCBuYW1lID0gIkRldmVsb3BlciBUb29scyIpLCkgUmVz
b3VyY2VzUHJveHlNb2RlbCgweDU2MjQyMDhlMDM3MCkKa25zIGVycm9yICIvdXNyL3NoYXJlL2tu
c3JjZmlsZXMva3dpbnN3aXRjaGVyLmtuc3JjIiAiSW52YWxpZCBXaW5kb3cgTWFuYWdlciBTd2l0
Y2hpbmcgTGF5b3V0cyBiYWNrZW5kLCBjb250YWN0IHlvdXIgZGlzdHJpYnV0b3IuIgpLTlMgZXJy
b3IgaW4gIkdsb2JhbCBUaGVtZXMiIDogS05TQ29yZTo6T2NzRXJyb3IgIlVua25vd24gT3BlbiBD
b2xsYWJvcmF0aW9uIFNlcnZpY2UgQVBJIGVycm9yLiAoMCkiIFFWYXJpYW50KGludCwgMCkKaW52
YWxpZCBrbnMgYmFja2VuZCEgIi91c3Ivc2hhcmUva25zcmNmaWxlcy9sb29rYW5kZmVlbC5rbnNy
YyIgYmVjYXVzZTogIkludmFsaWQgR2xvYmFsIFRoZW1lcyBiYWNrZW5kLCBjb250YWN0IHlvdXIg
ZGlzdHJpYnV0b3IuIgpvcmcua2RlLnBsYXNtYS5saWJkaXNjb3ZlcjogRGlzY2FyZGluZyBpbnZh
bGlkIGJhY2tlbmQgImxvb2thbmRmZWVsLmtuc3JjIgpvcmcua2RlLnBsYXNtYS5saWJkaXNjb3Zl
cjogbGFzdCBzdHJlYW0gaXNuJ3Qgb3ZlciB5ZXQgRmlsdGVycyhjYXRlZ29yeTogQ2F0ZWdvcnko
MHg1NjI0MWZlN2YzMTAsIG5hbWUgPSAiR2FtZXMiKSwpIFJlc291cmNlc1Byb3h5TW9kZWwoMHg1
NjI0MjA4ZTdhZDApCm9yZy5rZGUucGxhc21hLmxpYmRpc2NvdmVyOiBsYXN0IHN0cmVhbSBpc24n
dCBvdmVyIHlldCBGaWx0ZXJzKGNhdGVnb3J5OiBDYXRlZ29yeSgweDU2MjQxZmU3MWNkMCwgbmFt
ZSA9ICJEZXZlbG9wZXIgVG9vbHMiKSwpIFJlc291cmNlc1Byb3h5TW9kZWwoMHg1NjI0MjA4ZTAz
NzApCmtucyBlcnJvciAiL3Vzci9zaGFyZS9rbnNyY2ZpbGVzL2xvb2thbmRmZWVsLmtuc3JjIiAi
SW52YWxpZCBHbG9iYWwgVGhlbWVzIGJhY2tlbmQsIGNvbnRhY3QgeW91ciBkaXN0cmlidXRvci4i
CktOUyBlcnJvciBpbiAiUGFnZXMiIDogS05TQ29yZTo6T2NzRXJyb3IgIlVua25vd24gT3BlbiBD
b2xsYWJvcmF0aW9uIFNlcnZpY2UgQVBJIGVycm9yLiAoMCkiIFFWYXJpYW50KGludCwgMCkKaW52
YWxpZCBrbnMgYmFja2VuZCEgIi91c3Ivc2hhcmUva25zcmNmaWxlcy9wbGFzbWEtc3lzdGVtbW9u
aXRvci5rbnNyYyIgYmVjYXVzZTogIkludmFsaWQgUGFnZXMgYmFja2VuZCwgY29udGFjdCB5b3Vy
IGRpc3RyaWJ1dG9yLiIKb3JnLmtkZS5wbGFzbWEubGliZGlzY292ZXI6IERpc2NhcmRpbmcgaW52
YWxpZCBiYWNrZW5kICJwbGFzbWEtc3lzdGVtbW9uaXRvci5rbnNyYyIKb3JnLmtkZS5wbGFzbWEu
bGliZGlzY292ZXI6IGxhc3Qgc3RyZWFtIGlzbid0IG92ZXIgeWV0IEZpbHRlcnMoY2F0ZWdvcnk6
IENhdGVnb3J5KDB4NTYyNDFmZTdmMzEwLCBuYW1lID0gIkdhbWVzIiksKSBSZXNvdXJjZXNQcm94
eU1vZGVsKDB4NTYyNDIwOGU3YWQwKQpvcmcua2RlLnBsYXNtYS5saWJkaXNjb3ZlcjogbGFzdCBz
dHJlYW0gaXNuJ3Qgb3ZlciB5ZXQgRmlsdGVycyhjYXRlZ29yeTogQ2F0ZWdvcnkoMHg1NjI0MWZl
NzFjZDAsIG5hbWUgPSAiRGV2ZWxvcGVyIFRvb2xzIiksKSBSZXNvdXJjZXNQcm94eU1vZGVsKDB4
NTYyNDIwOGUwMzcwKQprbnMgZXJyb3IgIi91c3Ivc2hhcmUva25zcmNmaWxlcy9wbGFzbWEtc3lz
dGVtbW9uaXRvci5rbnNyYyIgIkludmFsaWQgUGFnZXMgYmFja2VuZCwgY29udGFjdCB5b3VyIGRp
c3RyaWJ1dG9yLiIKS05TIGVycm9yIGluICJQbGFzbWEgU3R5bGVzIiA6IEtOU0NvcmU6Ok9jc0Vy
cm9yICJVbmtub3duIE9wZW4gQ29sbGFib3JhdGlvbiBTZXJ2aWNlIEFQSSBlcnJvci4gKDApIiBR
VmFyaWFudChpbnQsIDApCmludmFsaWQga25zIGJhY2tlbmQhICIvdXNyL3NoYXJlL2tuc3JjZmls
ZXMvcGxhc21hLXRoZW1lcy5rbnNyYyIgYmVjYXVzZTogIkludmFsaWQgUGxhc21hIFN0eWxlcyBi
YWNrZW5kLCBjb250YWN0IHlvdXIgZGlzdHJpYnV0b3IuIgpvcmcua2RlLnBsYXNtYS5saWJkaXNj
b3ZlcjogRGlzY2FyZGluZyBpbnZhbGlkIGJhY2tlbmQgInBsYXNtYS10aGVtZXMua25zcmMiCm9y
Zy5rZGUucGxhc21hLmxpYmRpc2NvdmVyOiBsYXN0IHN0cmVhbSBpc24ndCBvdmVyIHlldCBGaWx0
ZXJzKGNhdGVnb3J5OiBDYXRlZ29yeSgweDU2MjQxZmU3ZjMxMCwgbmFtZSA9ICJHYW1lcyIpLCkg
UmVzb3VyY2VzUHJveHlNb2RlbCgweDU2MjQyMDhlN2FkMCkKb3JnLmtkZS5wbGFzbWEubGliZGlz
Y292ZXI6IGxhc3Qgc3RyZWFtIGlzbid0IG92ZXIgeWV0IEZpbHRlcnMoY2F0ZWdvcnk6IENhdGVn
b3J5KDB4NTYyNDFmZTcxY2QwLCBuYW1lID0gIkRldmVsb3BlciBUb29scyIpLCkgUmVzb3VyY2Vz
UHJveHlNb2RlbCgweDU2MjQyMDhlMDM3MCkKa25zIGVycm9yICIvdXNyL3NoYXJlL2tuc3JjZmls
ZXMvcGxhc21hLXRoZW1lcy5rbnNyYyIgIkludmFsaWQgUGxhc21hIFN0eWxlcyBiYWNrZW5kLCBj
b250YWN0IHlvdXIgZGlzdHJpYnV0b3IuIgpLTlMgZXJyb3IgaW4gIlBsYXNtYSBXaWRnZXRzIiA6
IEtOU0NvcmU6Ok9jc0Vycm9yICJVbmtub3duIE9wZW4gQ29sbGFib3JhdGlvbiBTZXJ2aWNlIEFQ
SSBlcnJvci4gKDApIiBRVmFyaWFudChpbnQsIDApCmludmFsaWQga25zIGJhY2tlbmQhICIvdXNy
L3NoYXJlL2tuc3JjZmlsZXMvcGxhc21vaWRzLmtuc3JjIiBiZWNhdXNlOiAiSW52YWxpZCBQbGFz
bWEgV2lkZ2V0cyBiYWNrZW5kLCBjb250YWN0IHlvdXIgZGlzdHJpYnV0b3IuIgpvcmcua2RlLnBs
YXNtYS5saWJkaXNjb3ZlcjogRGlzY2FyZGluZyBpbnZhbGlkIGJhY2tlbmQgInBsYXNtb2lkcy5r
bnNyYyIKb3JnLmtkZS5wbGFzbWEubGliZGlzY292ZXI6IGxhc3Qgc3RyZWFtIGlzbid0IG92ZXIg
eWV0IEZpbHRlcnMoY2F0ZWdvcnk6IENhdGVnb3J5KDB4NTYyNDFmZTdmMzEwLCBuYW1lID0gIkdh
bWVzIiksKSBSZXNvdXJjZXNQcm94eU1vZGVsKDB4NTYyNDIwOGU3YWQwKQpvcmcua2RlLnBsYXNt
YS5saWJkaXNjb3ZlcjogbGFzdCBzdHJlYW0gaXNuJ3Qgb3ZlciB5ZXQgRmlsdGVycyhjYXRlZ29y
eTogQ2F0ZWdvcnkoMHg1NjI0MWZlNzFjZDAsIG5hbWUgPSAiRGV2ZWxvcGVyIFRvb2xzIiksKSBS
ZXNvdXJjZXNQcm94eU1vZGVsKDB4NTYyNDIwOGUwMzcwKQprbnMgZXJyb3IgIi91c3Ivc2hhcmUv
a25zcmNmaWxlcy9wbGFzbW9pZHMua25zcmMiICJJbnZhbGlkIFBsYXNtYSBXaWRnZXRzIGJhY2tl
bmQsIGNvbnRhY3QgeW91ciBkaXN0cmlidXRvci4iCktOUyBlcnJvciBpbiAiQm9vdCBTcGxhc2gg
U2NyZWVucyIgOiBLTlNDb3JlOjpPY3NFcnJvciAiVW5rbm93biBPcGVuIENvbGxhYm9yYXRpb24g
U2VydmljZSBBUEkgZXJyb3IuICgwKSIgUVZhcmlhbnQoaW50LCAwKQppbnZhbGlkIGtucyBiYWNr
ZW5kISAiL3Vzci9zaGFyZS9rbnNyY2ZpbGVzL3BseW1vdXRoLmtuc3JjIiBiZWNhdXNlOiAiSW52
YWxpZCBCb290IFNwbGFzaCBTY3JlZW5zIGJhY2tlbmQsIGNvbnRhY3QgeW91ciBkaXN0cmlidXRv
ci4iCm9yZy5rZGUucGxhc21hLmxpYmRpc2NvdmVyOiBEaXNjYXJkaW5nIGludmFsaWQgYmFja2Vu
ZCAicGx5bW91dGgua25zcmMiCm9yZy5rZGUucGxhc21hLmxpYmRpc2NvdmVyOiBsYXN0IHN0cmVh
bSBpc24ndCBvdmVyIHlldCBGaWx0ZXJzKGNhdGVnb3J5OiBDYXRlZ29yeSgweDU2MjQxZmU3ZjMx
MCwgbmFtZSA9ICJHYW1lcyIpLCkgUmVzb3VyY2VzUHJveHlNb2RlbCgweDU2MjQyMDhlN2FkMCkK
b3JnLmtkZS5wbGFzbWEubGliZGlzY292ZXI6IGxhc3Qgc3RyZWFtIGlzbid0IG92ZXIgeWV0IEZp
bHRlcnMoY2F0ZWdvcnk6IENhdGVnb3J5KDB4NTYyNDFmZTcxY2QwLCBuYW1lID0gIkRldmVsb3Bl
ciBUb29scyIpLCkgUmVzb3VyY2VzUHJveHlNb2RlbCgweDU2MjQyMDhlMDM3MCkKa25zIGVycm9y
ICIvdXNyL3NoYXJlL2tuc3JjZmlsZXMvcGx5bW91dGgua25zcmMiICJJbnZhbGlkIEJvb3QgU3Bs
YXNoIFNjcmVlbnMgYmFja2VuZCwgY29udGFjdCB5b3VyIGRpc3RyaWJ1dG9yLiIKS05TIGVycm9y
IGluICJMb2dpbiBTY3JlZW4iIDogS05TQ29yZTo6T2NzRXJyb3IgIlVua25vd24gT3BlbiBDb2xs
YWJvcmF0aW9uIFNlcnZpY2UgQVBJIGVycm9yLiAoMCkiIFFWYXJpYW50KGludCwgMCkKaW52YWxp
ZCBrbnMgYmFja2VuZCEgIi91c3Ivc2hhcmUva25zcmNmaWxlcy9zZGRtdGhlbWUua25zcmMiIGJl
Y2F1c2U6ICJJbnZhbGlkIExvZ2luIFNjcmVlbiBiYWNrZW5kLCBjb250YWN0IHlvdXIgZGlzdHJp
YnV0b3IuIgpvcmcua2RlLnBsYXNtYS5saWJkaXNjb3ZlcjogRGlzY2FyZGluZyBpbnZhbGlkIGJh
Y2tlbmQgInNkZG10aGVtZS5rbnNyYyIKb3JnLmtkZS5wbGFzbWEubGliZGlzY292ZXI6IGxhc3Qg
c3RyZWFtIGlzbid0IG92ZXIgeWV0IEZpbHRlcnMoY2F0ZWdvcnk6IENhdGVnb3J5KDB4NTYyNDFm
ZTdmMzEwLCBuYW1lID0gIkdhbWVzIiksKSBSZXNvdXJjZXNQcm94eU1vZGVsKDB4NTYyNDIwOGU3
YWQwKQpvcmcua2RlLnBsYXNtYS5saWJkaXNjb3ZlcjogbGFzdCBzdHJlYW0gaXNuJ3Qgb3ZlciB5
ZXQgRmlsdGVycyhjYXRlZ29yeTogQ2F0ZWdvcnkoMHg1NjI0MWZlNzFjZDAsIG5hbWUgPSAiRGV2
ZWxvcGVyIFRvb2xzIiksKSBSZXNvdXJjZXNQcm94eU1vZGVsKDB4NTYyNDIwOGUwMzcwKQprbnMg
ZXJyb3IgIi91c3Ivc2hhcmUva25zcmNmaWxlcy9zZGRtdGhlbWUua25zcmMiICJJbnZhbGlkIExv
Z2luIFNjcmVlbiBiYWNrZW5kLCBjb250YWN0IHlvdXIgZGlzdHJpYnV0b3IuIgpLTlMgZXJyb3Ig
aW4gIlNlcnZpY2VtZW51IiA6IEtOU0NvcmU6Ok9jc0Vycm9yICJVbmtub3duIE9wZW4gQ29sbGFi
b3JhdGlvbiBTZXJ2aWNlIEFQSSBlcnJvci4gKDApIiBRVmFyaWFudChpbnQsIDApCmludmFsaWQg
a25zIGJhY2tlbmQhICIvdXNyL3NoYXJlL2tuc3JjZmlsZXMvc2VydmljZW1lbnUua25zcmMiIGJl
Y2F1c2U6ICJJbnZhbGlkIFNlcnZpY2VtZW51IGJhY2tlbmQsIGNvbnRhY3QgeW91ciBkaXN0cmli
dXRvci4iCm9yZy5rZGUucGxhc21hLmxpYmRpc2NvdmVyOiBEaXNjYXJkaW5nIGludmFsaWQgYmFj
a2VuZCAic2VydmljZW1lbnUua25zcmMiCm9yZy5rZGUucGxhc21hLmxpYmRpc2NvdmVyOiBsYXN0
IHN0cmVhbSBpc24ndCBvdmVyIHlldCBGaWx0ZXJzKGNhdGVnb3J5OiBDYXRlZ29yeSgweDU2MjQx
ZmU3ZjMxMCwgbmFtZSA9ICJHYW1lcyIpLCkgUmVzb3VyY2VzUHJveHlNb2RlbCgweDU2MjQyMDhl
N2FkMCkKb3JnLmtkZS5wbGFzbWEubGliZGlzY292ZXI6IGxhc3Qgc3RyZWFtIGlzbid0IG92ZXIg
eWV0IEZpbHRlcnMoY2F0ZWdvcnk6IENhdGVnb3J5KDB4NTYyNDFmZTcxY2QwLCBuYW1lID0gIkRl
dmVsb3BlciBUb29scyIpLCkgUmVzb3VyY2VzUHJveHlNb2RlbCgweDU2MjQyMDhlMDM3MCkKa25z
IGVycm9yICIvdXNyL3NoYXJlL2tuc3JjZmlsZXMvc2VydmljZW1lbnUua25zcmMiICJJbnZhbGlk
IFNlcnZpY2VtZW51IGJhY2tlbmQsIGNvbnRhY3QgeW91ciBkaXN0cmlidXRvci4iCktOUyBlcnJv
ciBpbiAiU3lzdGVtIG1vbml0b3IgU2Vuc29yIERpc3BsYXkgU3R5bGVzIiA6IEtOU0NvcmU6Ok9j
c0Vycm9yICJVbmtub3duIE9wZW4gQ29sbGFib3JhdGlvbiBTZXJ2aWNlIEFQSSBlcnJvci4gKDAp
IiBRVmFyaWFudChpbnQsIDApCmludmFsaWQga25zIGJhY2tlbmQhICIvdXNyL3NoYXJlL2tuc3Jj
ZmlsZXMvc3lzdGVtbW9uaXRvci1mYWNlcy5rbnNyYyIgYmVjYXVzZTogIkludmFsaWQgU3lzdGVt
IG1vbml0b3IgU2Vuc29yIERpc3BsYXkgU3R5bGVzIGJhY2tlbmQsIGNvbnRhY3QgeW91ciBkaXN0
cmlidXRvci4iCm9yZy5rZGUucGxhc21hLmxpYmRpc2NvdmVyOiBEaXNjYXJkaW5nIGludmFsaWQg
YmFja2VuZCAic3lzdGVtbW9uaXRvci1mYWNlcy5rbnNyYyIKb3JnLmtkZS5wbGFzbWEubGliZGlz
Y292ZXI6IGxhc3Qgc3RyZWFtIGlzbid0IG92ZXIgeWV0IEZpbHRlcnMoY2F0ZWdvcnk6IENhdGVn
b3J5KDB4NTYyNDFmZTdmMzEwLCBuYW1lID0gIkdhbWVzIiksKSBSZXNvdXJjZXNQcm94eU1vZGVs
KDB4NTYyNDIwOGU3YWQwKQpvcmcua2RlLnBsYXNtYS5saWJkaXNjb3ZlcjogbGFzdCBzdHJlYW0g
aXNuJ3Qgb3ZlciB5ZXQgRmlsdGVycyhjYXRlZ29yeTogQ2F0ZWdvcnkoMHg1NjI0MWZlNzFjZDAs
IG5hbWUgPSAiRGV2ZWxvcGVyIFRvb2xzIiksKSBSZXNvdXJjZXNQcm94eU1vZGVsKDB4NTYyNDIw
OGUwMzcwKQprbnMgZXJyb3IgIi91c3Ivc2hhcmUva25zcmNmaWxlcy9zeXN0ZW1tb25pdG9yLWZh
Y2VzLmtuc3JjIiAiSW52YWxpZCBTeXN0ZW0gbW9uaXRvciBTZW5zb3IgRGlzcGxheSBTdHlsZXMg
YmFja2VuZCwgY29udGFjdCB5b3VyIGRpc3RyaWJ1dG9yLiIKS05TIGVycm9yIGluICJTeXN0ZW0g
bW9uaXRvciBTZW5zb3IgUHJlc2V0cyIgOiBLTlNDb3JlOjpPY3NFcnJvciAiVW5rbm93biBPcGVu
IENvbGxhYm9yYXRpb24gU2VydmljZSBBUEkgZXJyb3IuICgwKSIgUVZhcmlhbnQoaW50LCAwKQpp
bnZhbGlkIGtucyBiYWNrZW5kISAiL3Vzci9zaGFyZS9rbnNyY2ZpbGVzL3N5c3RlbW1vbml0b3It
cHJlc2V0cy5rbnNyYyIgYmVjYXVzZTogIkludmFsaWQgU3lzdGVtIG1vbml0b3IgU2Vuc29yIFBy
ZXNldHMgYmFja2VuZCwgY29udGFjdCB5b3VyIGRpc3RyaWJ1dG9yLiIKb3JnLmtkZS5wbGFzbWEu
bGliZGlzY292ZXI6IERpc2NhcmRpbmcgaW52YWxpZCBiYWNrZW5kICJzeXN0ZW1tb25pdG9yLXBy
ZXNldHMua25zcmMiCm9yZy5rZGUucGxhc21hLmxpYmRpc2NvdmVyOiBsYXN0IHN0cmVhbSBpc24n
dCBvdmVyIHlldCBGaWx0ZXJzKGNhdGVnb3J5OiBDYXRlZ29yeSgweDU2MjQxZmU3ZjMxMCwgbmFt
ZSA9ICJHYW1lcyIpLCkgUmVzb3VyY2VzUHJveHlNb2RlbCgweDU2MjQyMDhlN2FkMCkKb3JnLmtk
ZS5wbGFzbWEubGliZGlzY292ZXI6IGxhc3Qgc3RyZWFtIGlzbid0IG92ZXIgeWV0IEZpbHRlcnMo
Y2F0ZWdvcnk6IENhdGVnb3J5KDB4NTYyNDFmZTcxY2QwLCBuYW1lID0gIkRldmVsb3BlciBUb29s
cyIpLCkgUmVzb3VyY2VzUHJveHlNb2RlbCgweDU2MjQyMDhlMDM3MCkKa25zIGVycm9yICIvdXNy
L3NoYXJlL2tuc3JjZmlsZXMvc3lzdGVtbW9uaXRvci1wcmVzZXRzLmtuc3JjIiAiSW52YWxpZCBT
eXN0ZW0gbW9uaXRvciBTZW5zb3IgUHJlc2V0cyBiYWNrZW5kLCBjb250YWN0IHlvdXIgZGlzdHJp
YnV0b3IuIgpLTlMgZXJyb3IgaW4gIldhbGxwYXBlcnMiIDogS05TQ29yZTo6T2NzRXJyb3IgIlVu
a25vd24gT3BlbiBDb2xsYWJvcmF0aW9uIFNlcnZpY2UgQVBJIGVycm9yLiAoMCkiIFFWYXJpYW50
KGludCwgMCkKaW52YWxpZCBrbnMgYmFja2VuZCEgIi91c3Ivc2hhcmUva25zcmNmaWxlcy93YWxs
cGFwZXItbW9iaWxlLmtuc3JjIiBiZWNhdXNlOiAiSW52YWxpZCBXYWxscGFwZXJzIGJhY2tlbmQs
IGNvbnRhY3QgeW91ciBkaXN0cmlidXRvci4iCm9yZy5rZGUucGxhc21hLmxpYmRpc2NvdmVyOiBE
aXNjYXJkaW5nIGludmFsaWQgYmFja2VuZCAid2FsbHBhcGVyLW1vYmlsZS5rbnNyYyIKb3JnLmtk
ZS5wbGFzbWEubGliZGlzY292ZXI6IGxhc3Qgc3RyZWFtIGlzbid0IG92ZXIgeWV0IEZpbHRlcnMo
Y2F0ZWdvcnk6IENhdGVnb3J5KDB4NTYyNDFmZTdmMzEwLCBuYW1lID0gIkdhbWVzIiksKSBSZXNv
dXJjZXNQcm94eU1vZGVsKDB4NTYyNDIwOGU3YWQwKQpvcmcua2RlLnBsYXNtYS5saWJkaXNjb3Zl
cjogbGFzdCBzdHJlYW0gaXNuJ3Qgb3ZlciB5ZXQgRmlsdGVycyhjYXRlZ29yeTogQ2F0ZWdvcnko
MHg1NjI0MWZlNzFjZDAsIG5hbWUgPSAiRGV2ZWxvcGVyIFRvb2xzIiksKSBSZXNvdXJjZXNQcm94
eU1vZGVsKDB4NTYyNDIwOGUwMzcwKQprbnMgZXJyb3IgIi91c3Ivc2hhcmUva25zcmNmaWxlcy93
YWxscGFwZXItbW9iaWxlLmtuc3JjIiAiSW52YWxpZCBXYWxscGFwZXJzIGJhY2tlbmQsIGNvbnRh
Y3QgeW91ciBkaXN0cmlidXRvci4iCktOUyBlcnJvciBpbiAiV2FsbHBhcGVycyIgOiBLTlNDb3Jl
OjpPY3NFcnJvciAiVW5rbm93biBPcGVuIENvbGxhYm9yYXRpb24gU2VydmljZSBBUEkgZXJyb3Iu
ICgwKSIgUVZhcmlhbnQoaW50LCAwKQppbnZhbGlkIGtucyBiYWNrZW5kISAiL3Vzci9zaGFyZS9r
bnNyY2ZpbGVzL3dhbGxwYXBlci5rbnNyYyIgYmVjYXVzZTogIkludmFsaWQgV2FsbHBhcGVycyBi
YWNrZW5kLCBjb250YWN0IHlvdXIgZGlzdHJpYnV0b3IuIgpvcmcua2RlLnBsYXNtYS5saWJkaXNj
b3ZlcjogRGlzY2FyZGluZyBpbnZhbGlkIGJhY2tlbmQgIndhbGxwYXBlci5rbnNyYyIKb3JnLmtk
ZS5wbGFzbWEubGliZGlzY292ZXI6IGxhc3Qgc3RyZWFtIGlzbid0IG92ZXIgeWV0IEZpbHRlcnMo
Y2F0ZWdvcnk6IENhdGVnb3J5KDB4NTYyNDFmZTdmMzEwLCBuYW1lID0gIkdhbWVzIiksKSBSZXNv
dXJjZXNQcm94eU1vZGVsKDB4NTYyNDIwOGU3YWQwKQpvcmcua2RlLnBsYXNtYS5saWJkaXNjb3Zl
cjogbGFzdCBzdHJlYW0gaXNuJ3Qgb3ZlciB5ZXQgRmlsdGVycyhjYXRlZ29yeTogQ2F0ZWdvcnko
MHg1NjI0MWZlNzFjZDAsIG5hbWUgPSAiRGV2ZWxvcGVyIFRvb2xzIiksKSBSZXNvdXJjZXNQcm94
eU1vZGVsKDB4NTYyNDIwOGUwMzcwKQprbnMgZXJyb3IgIi91c3Ivc2hhcmUva25zcmNmaWxlcy93
YWxscGFwZXIua25zcmMiICJJbnZhbGlkIFdhbGxwYXBlcnMgYmFja2VuZCwgY29udGFjdCB5b3Vy
IGRpc3RyaWJ1dG9yLiIKS05TIGVycm9yIGluICJXYWxscGFwZXIgUGx1Z2lucyIgOiBLTlNDb3Jl
OjpPY3NFcnJvciAiVW5rbm93biBPcGVuIENvbGxhYm9yYXRpb24gU2VydmljZSBBUEkgZXJyb3Iu
ICgwKSIgUVZhcmlhbnQoaW50LCAwKQppbnZhbGlkIGtucyBiYWNrZW5kISAiL3Vzci9zaGFyZS9r
bnNyY2ZpbGVzL3dhbGxwYXBlcnBsdWdpbi5rbnNyYyIgYmVjYXVzZTogIkludmFsaWQgV2FsbHBh
cGVyIFBsdWdpbnMgYmFja2VuZCwgY29udGFjdCB5b3VyIGRpc3RyaWJ1dG9yLiIKb3JnLmtkZS5w
bGFzbWEubGliZGlzY292ZXI6IERpc2NhcmRpbmcgaW52YWxpZCBiYWNrZW5kICJ3YWxscGFwZXJw
bHVnaW4ua25zcmMiCm9yZy5rZGUucGxhc21hLmxpYmRpc2NvdmVyOiBsYXN0IHN0cmVhbSBpc24n
dCBvdmVyIHlldCBGaWx0ZXJzKGNhdGVnb3J5OiBDYXRlZ29yeSgweDU2MjQxZmU3ZjMxMCwgbmFt
ZSA9ICJHYW1lcyIpLCkgUmVzb3VyY2VzUHJveHlNb2RlbCgweDU2MjQyMDhlN2FkMCkKb3JnLmtk
ZS5wbGFzbWEubGliZGlzY292ZXI6IGxhc3Qgc3RyZWFtIGlzbid0IG92ZXIgeWV0IEZpbHRlcnMo
Y2F0ZWdvcnk6IENhdGVnb3J5KDB4NTYyNDFmZTcxY2QwLCBuYW1lID0gIkRldmVsb3BlciBUb29s
cyIpLCkgUmVzb3VyY2VzUHJveHlNb2RlbCgweDU2MjQyMDhlMDM3MCkKa25zIGVycm9yICIvdXNy
L3NoYXJlL2tuc3JjZmlsZXMvd2FsbHBhcGVycGx1Z2luLmtuc3JjIiAiSW52YWxpZCBXYWxscGFw
ZXIgUGx1Z2lucyBiYWNrZW5kLCBjb250YWN0IHlvdXIgZGlzdHJpYnV0b3IuIgpLTlMgZXJyb3Ig
aW4gIldpbmRvdyBEZWNvcmF0aW9ucyIgOiBLTlNDb3JlOjpPY3NFcnJvciAiVW5rbm93biBPcGVu
IENvbGxhYm9yYXRpb24gU2VydmljZSBBUEkgZXJyb3IuICgwKSIgUVZhcmlhbnQoaW50LCAwKQpp
bnZhbGlkIGtucyBiYWNrZW5kISAiL3Vzci9zaGFyZS9rbnNyY2ZpbGVzL3dpbmRvdy1kZWNvcmF0
aW9ucy5rbnNyYyIgYmVjYXVzZTogIkludmFsaWQgV2luZG93IERlY29yYXRpb25zIGJhY2tlbmQs
IGNvbnRhY3QgeW91ciBkaXN0cmlidXRvci4iCm9yZy5rZGUucGxhc21hLmxpYmRpc2NvdmVyOiBE
aXNjYXJkaW5nIGludmFsaWQgYmFja2VuZCAid2luZG93LWRlY29yYXRpb25zLmtuc3JjIgpvcmcu
a2RlLnBsYXNtYS5saWJkaXNjb3ZlcjogbGFzdCBzdHJlYW0gaXNuJ3Qgb3ZlciB5ZXQgRmlsdGVy
cyhjYXRlZ29yeTogQ2F0ZWdvcnkoMHg1NjI0MWZlN2YzMTAsIG5hbWUgPSAiR2FtZXMiKSwpIFJl
c291cmNlc1Byb3h5TW9kZWwoMHg1NjI0MjA4ZTdhZDApCm9yZy5rZGUucGxhc21hLmxpYmRpc2Nv
dmVyOiBsYXN0IHN0cmVhbSBpc24ndCBvdmVyIHlldCBGaWx0ZXJzKGNhdGVnb3J5OiBDYXRlZ29y
eSgweDU2MjQxZmU3MWNkMCwgbmFtZSA9ICJEZXZlbG9wZXIgVG9vbHMiKSwpIFJlc291cmNlc1By
b3h5TW9kZWwoMHg1NjI0MjA4ZTAzNzApCmtucyBlcnJvciAiL3Vzci9zaGFyZS9rbnNyY2ZpbGVz
L3dpbmRvdy1kZWNvcmF0aW9ucy5rbnNyYyIgIkludmFsaWQgV2luZG93IERlY29yYXRpb25zIGJh
Y2tlbmQsIGNvbnRhY3QgeW91ciBkaXN0cmlidXRvci4iCktOUyBlcnJvciBpbiAiQ3Vyc29ycyIg
OiBLTlNDb3JlOjpPY3NFcnJvciAiVW5rbm93biBPcGVuIENvbGxhYm9yYXRpb24gU2VydmljZSBB
UEkgZXJyb3IuICgwKSIgUVZhcmlhbnQoaW50LCAwKQppbnZhbGlkIGtucyBiYWNrZW5kISAiL3Vz
ci9zaGFyZS9rbnNyY2ZpbGVzL3hjdXJzb3Iua25zcmMiIGJlY2F1c2U6ICJJbnZhbGlkIEN1cnNv
cnMgYmFja2VuZCwgY29udGFjdCB5b3VyIGRpc3RyaWJ1dG9yLiIKb3JnLmtkZS5wbGFzbWEubGli
ZGlzY292ZXI6IERpc2NhcmRpbmcgaW52YWxpZCBiYWNrZW5kICJ4Y3Vyc29yLmtuc3JjIgpvcmcu
a2RlLnBsYXNtYS5saWJkaXNjb3ZlcjogbGFzdCBzdHJlYW0gaXNuJ3Qgb3ZlciB5ZXQgRmlsdGVy
cyhjYXRlZ29yeTogQ2F0ZWdvcnkoMHg1NjI0MWZlN2YzMTAsIG5hbWUgPSAiR2FtZXMiKSwpIFJl
c291cmNlc1Byb3h5TW9kZWwoMHg1NjI0MjA4ZTdhZDApCm9yZy5rZGUucGxhc21hLmxpYmRpc2Nv
dmVyOiBsYXN0IHN0cmVhbSBpc24ndCBvdmVyIHlldCBGaWx0ZXJzKGNhdGVnb3J5OiBDYXRlZ29y
eSgweDU2MjQxZmU3MWNkMCwgbmFtZSA9ICJEZXZlbG9wZXIgVG9vbHMiKSwpIFJlc291cmNlc1By
b3h5TW9kZWwoMHg1NjI0MjA4ZTAzNzApCmtucyBlcnJvciAiL3Vzci9zaGFyZS9rbnNyY2ZpbGVz
L3hjdXJzb3Iua25zcmMiICJJbnZhbGlkIEN1cnNvcnMgYmFja2VuZCwgY29udGFjdCB5b3VyIGRp
c3RyaWJ1dG9yLiIKMjkgLS0gZXhlPS91c3IvYmluL3BsYXNtYS1kaXNjb3ZlcgoxMyAtLSBwbGF0
Zm9ybT14Y2IKMTEgLS0gZGlzcGxheT06MAoyNCAtLSBhcHBuYW1lPXBsYXNtYS1kaXNjb3Zlcgox
NyAtLSBhcHBwYXRoPS91c3IvYmluCjEwIC0tIHNpZ25hbD0xMQo5IC0tIHBpZD01NTM4CjE5IC0t
IGFwcHZlcnNpb249NS4yNi45MAoyMSAtLSBwcm9ncmFtbmFtZT1EaXNjb3ZlcgozMSAtLSBidWdh
ZGRyZXNzPXN1Ym1pdEBidWdzLmtkZS5vcmcKMzAgLS0gcHJvZHVjdG5hbWU9ZGlzY292ZXIvZGlz
Y292ZXIKS0NyYXNoOiBjcmFzaGluZy4uLiBjcmFzaFJlY3Vyc2lvbkNvdW50ZXIgPSAyCktDcmFz
aDogQXBwbGljYXRpb24gTmFtZSA9IHBsYXNtYS1kaXNjb3ZlciBwYXRoID0gL3Vzci9iaW4gcGlk
ID0gNTUzOApLQ3Jhc2g6IEFyZ3VtZW50czogL3Vzci9iaW4vcGxhc21hLWRpc2NvdmVyClNlZ21l
bnRhdGlvbiBmYXVsdCAoY29yZSBkdW1wZWQpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>