<?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>250062</bug_id>
          
          <creation_ts>2010-09-03 18:56:34 +0000</creation_ts>
          <short_desc>Amarok crashes when working with podcasts [@ Amarok::PrettyTreeView::drawRow]</short_desc>
          <delta_ts>2013-05-31 23:36:27 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>2</classification_id>
          <classification>Applications</classification>
          <product>amarok</product>
          <component>Playlists/Saved Playlists</component>
          <version>2.6.0</version>
          <rep_platform>Fedora RPMs</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>regression</keywords>
          <priority>NOR</priority>
          <bug_severity>crash</bug_severity>
          <target_milestone>2.8</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mathias Panzenböck">grosser.meister.morti</reporter>
          <assigned_to name="Amarok Bugs">amarok-bugs-null</assigned_to>
          <cc>andreaswuest</cc>
    
    <cc>bart.cerneels</cc>
    
    <cc>dominique195</cc>
    
    <cc>gegen.nazi</cc>
    
    <cc>grosser.meister.morti</cc>
    
    <cc>matej</cc>
    
    <cc>mtorresmbr</cc>
    
    <cc>shaddowy2</cc>
    
    <cc>solarisx</cc>
    
    <cc>stebe</cc>
          
          <cf_commitlink>http://commits.kde.org/amarok/d3982dc6c2fa2953c37d4864bca61e73aff19a52</cf_commitlink>
          <cf_versionfixedin>2.8</cf_versionfixedin>
          <cf_sentryurl></cf_sentryurl>
          <votes>0</votes>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1013879</commentid>
    <comment_count>0</comment_count>
    <who name="Mathias Panzenböck">grosser.meister.morti</who>
    <bug_when>2010-09-03 18:56:34 +0000</bug_when>
    <thetext>Application: amarok (2.3-GIT)
KDE Platform Version: 4.4.5 (KDE 4.4.5)
Qt Version: 4.6.3
Operating System: Linux 2.6.32.21-166.fc12.x86_64 x86_64
Distribution: &quot;Fedora release 12 (Constantine)&quot;

-- Information about the crash:
Amarok crashes very frequently when you do stuff in the podcast browser. E.g. expanding/collapseing podcast feeds, toggling merged view etc.

Also displaying information to a podcast episode takes quite long (about a second or more). That was faster in the past.

GIT Version:
commit a63638a0f68b86cb03fb697ab751279954118e5c
Author: Bart Cerneels &lt;bart.cerneels@kde.org&gt;
Date:   Tue Aug 31 22:05:37 2010 +0200

 -- Backtrace:
Application: Amarok (amarok), signal: Segmentation fault
82	T_PSEUDO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS)
[Current thread is 1 (Thread 0x7f3a5c816880 (LWP 22086))]

Thread 17 (Thread 0x7f3a3f718710 (LWP 22087)):
#0  pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:211
#1  0x00007f3a48216631 in ?? () from /usr/lib64/libxine.so.1
#2  0x00007f3a58afea3a in start_thread (arg=0x7f3a3f718710) at pthread_create.c:297
#3  0x00007f3a5981277d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#4  0x0000000000000000 in ?? ()

Thread 16 (Thread 0x7f3a3ed17710 (LWP 22088)):
#0  0x00007f3a58b02249 in __pthread_mutex_unlock_usercnt (mutex=0x7f3a380009b8) at pthread_mutex_unlock.c:52
#1  __pthread_mutex_unlock (mutex=0x7f3a380009b8) at pthread_mutex_unlock.c:290
#2  0x000000316d03c5b5 in IA__g_main_context_prepare (context=0x7f3a380009b0, priority=&lt;value optimized out&gt;) at gmain.c:2308
#3  0x000000316d03c821 in g_main_context_iterate (context=0x7f3a380009b0, block=&lt;value optimized out&gt;, dispatch=&lt;value optimized out&gt;, self=&lt;value optimized out&gt;) at gmain.c:2571
#4  0x000000316d03cd4a in IA__g_main_context_iteration (context=0x7f3a380009b0, may_block=1) at gmain.c:2654
#5  0x00007f3a5ad70446 in QEventDispatcherGlib::processEvents (this=0x7f3a380008c0, flags=&lt;value optimized out&gt;) at kernel/qeventdispatcher_glib.cpp:414
#6  0x00007f3a5ad49412 in QEventLoop::processEvents (this=&lt;value optimized out&gt;, flags=...) at kernel/qeventloop.cpp:149
#7  0x00007f3a5ad496dc in QEventLoop::exec (this=0x7f3a3ed16ca0, flags=...) at kernel/qeventloop.cpp:201
#8  0x00007f3a5ac6606b in QThread::exec (this=&lt;value optimized out&gt;) at thread/qthread.cpp:487
#9  0x00007f3a48471b30 in Phonon::Xine::XineThread::run (this=0x18fb6f0) at /usr/src/debug/phonon-4.4.2/xine/xinethread.cpp:143
#10 0x00007f3a5ac681b5 in QThreadPrivate::start (arg=0x18fb6f0) at thread/qthread_unix.cpp:248
#11 0x00007f3a58afea3a in start_thread (arg=0x7f3a3ed17710) at pthread_create.c:297
#12 0x00007f3a5981277d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#13 0x0000000000000000 in ?? ()

Thread 15 (Thread 0x7f3a3e112710 (LWP 22089)):
#0  0x00007f3a59809353 in __poll (fds=&lt;value optimized out&gt;, nfds=&lt;value optimized out&gt;, timeout=&lt;value optimized out&gt;) at ../sysdeps/unix/sysv/linux/poll.c:87
#1  0x0000003181e2c73f in ?? () from /usr/lib64/libpulse.so.0
#2  0x0000003181e1cae6 in pa_mainloop_poll () from /usr/lib64/libpulse.so.0
#3  0x0000003181e1dea9 in pa_mainloop_iterate () from /usr/lib64/libpulse.so.0
#4  0x0000003181e1df60 in pa_mainloop_run () from /usr/lib64/libpulse.so.0
#5  0x0000003181e2c64b in ?? () from /usr/lib64/libpulse.so.0
#6  0x0000003181638838 in ?? () from /usr/lib64/libpulsecommon-0.9.21.so
#7  0x00007f3a58afea3a in start_thread (arg=0x7f3a3e112710) at pthread_create.c:297
#8  0x00007f3a5981277d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#9  0x0000000000000000 in ?? ()

Thread 14 (Thread 0x7f3a3d711710 (LWP 22090)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
#1  0x00007f3a482273e3 in ?? () from /usr/lib64/libxine.so.1
#2  0x00007f3a58afea3a in start_thread (arg=0x7f3a3d711710) at pthread_create.c:297
#3  0x00007f3a5981277d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#4  0x0000000000000000 in ?? ()

Thread 13 (Thread 0x7f3a37fff710 (LWP 22091)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
#1  0x00007f3a482273e3 in ?? () from /usr/lib64/libxine.so.1
#2  0x00007f3a58afea3a in start_thread (arg=0x7f3a37fff710) at pthread_create.c:297
#3  0x00007f3a5981277d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#4  0x0000000000000000 in ?? ()

Thread 12 (Thread 0x7f3a375fe710 (LWP 22092)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
#1  0x00007f3a482273e3 in ?? () from /usr/lib64/libxine.so.1
#2  0x00007f3a58afea3a in start_thread (arg=0x7f3a375fe710) at pthread_create.c:297
#3  0x00007f3a5981277d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#4  0x0000000000000000 in ?? ()

Thread 11 (Thread 0x7f3a36bfd710 (LWP 22093)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
#1  0x00007f3a482273e3 in ?? () from /usr/lib64/libxine.so.1
#2  0x00007f3a58afea3a in start_thread (arg=0x7f3a36bfd710) at pthread_create.c:297
#3  0x00007f3a5981277d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#4  0x0000000000000000 in ?? ()

Thread 10 (Thread 0x7f3a35113710 (LWP 22098)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
#1  0x00007f3a5ac6913b in wait (this=&lt;value optimized out&gt;, mutex=0x30533e0, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:87
#2  QWaitCondition::wait (this=&lt;value optimized out&gt;, mutex=0x30533e0, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:159
#3  0x00007f3a57559f86 in ThreadWeaver::WeaverImpl::blockThreadUntilJobsAreBeingAssigned (this=0x2951c20, th=0x30542d0) at /usr/src/debug/kdelibs-4.4.5/threadweaver/Weaver/WeaverImpl.cpp:365
#4  0x00007f3a5755c4ab in ThreadWeaver::WorkingHardState::applyForWork (this=0x29514f0, th=0x30542d0) at /usr/src/debug/kdelibs-4.4.5/threadweaver/Weaver/WorkingHardState.cpp:71
#5  0x00007f3a5755c4c4 in ThreadWeaver::WorkingHardState::applyForWork (this=0x29514f0, th=0x30542d0) at /usr/src/debug/kdelibs-4.4.5/threadweaver/Weaver/WorkingHardState.cpp:74
#6  0x00007f3a5755ae6f in ThreadWeaver::ThreadRunHelper::run (this=0x7f3a35112d10, parent=0x2951c20, th=0x30542d0) at /usr/src/debug/kdelibs-4.4.5/threadweaver/Weaver/Thread.cpp:87
#7  0x00007f3a5755b358 in ThreadWeaver::Thread::run (this=0x30542d0) at /usr/src/debug/kdelibs-4.4.5/threadweaver/Weaver/Thread.cpp:142
#8  0x00007f3a5ac681b5 in QThreadPrivate::start (arg=0x30542d0) at thread/qthread_unix.cpp:248
#9  0x00007f3a58afea3a in start_thread (arg=0x7f3a35113710) at pthread_create.c:297
#10 0x00007f3a5981277d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#11 0x0000000000000000 in ?? ()

Thread 9 (Thread 0x7f3a1fa09710 (LWP 22099)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
#1  0x00007f3a5ac6913b in wait (this=&lt;value optimized out&gt;, mutex=0x30533e0, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:87
#2  QWaitCondition::wait (this=&lt;value optimized out&gt;, mutex=0x30533e0, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:159
#3  0x00007f3a57559f86 in ThreadWeaver::WeaverImpl::blockThreadUntilJobsAreBeingAssigned (this=0x2951c20, th=0x3255a60) at /usr/src/debug/kdelibs-4.4.5/threadweaver/Weaver/WeaverImpl.cpp:365
#4  0x00007f3a5755c4ab in ThreadWeaver::WorkingHardState::applyForWork (this=0x29514f0, th=0x3255a60) at /usr/src/debug/kdelibs-4.4.5/threadweaver/Weaver/WorkingHardState.cpp:71
#5  0x00007f3a5755c4c4 in ThreadWeaver::WorkingHardState::applyForWork (this=0x29514f0, th=0x3255a60) at /usr/src/debug/kdelibs-4.4.5/threadweaver/Weaver/WorkingHardState.cpp:74
#6  0x00007f3a5755ae6f in ThreadWeaver::ThreadRunHelper::run (this=0x7f3a1fa08d10, parent=0x2951c20, th=0x3255a60) at /usr/src/debug/kdelibs-4.4.5/threadweaver/Weaver/Thread.cpp:87
#7  0x00007f3a5755b358 in ThreadWeaver::Thread::run (this=0x3255a60) at /usr/src/debug/kdelibs-4.4.5/threadweaver/Weaver/Thread.cpp:142
#8  0x00007f3a5ac681b5 in QThreadPrivate::start (arg=0x3255a60) at thread/qthread_unix.cpp:248
#9  0x00007f3a58afea3a in start_thread (arg=0x7f3a1fa09710) at pthread_create.c:297
#10 0x00007f3a5981277d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#11 0x0000000000000000 in ?? ()

Thread 8 (Thread 0x7f3a1f008710 (LWP 22100)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
#1  0x00007f3a5ac6913b in wait (this=&lt;value optimized out&gt;, mutex=0x30533e0, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:87
#2  QWaitCondition::wait (this=&lt;value optimized out&gt;, mutex=0x30533e0, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:159
#3  0x00007f3a57559f86 in ThreadWeaver::WeaverImpl::blockThreadUntilJobsAreBeingAssigned (this=0x2951c20, th=0x3255ab0) at /usr/src/debug/kdelibs-4.4.5/threadweaver/Weaver/WeaverImpl.cpp:365
#4  0x00007f3a5755c4ab in ThreadWeaver::WorkingHardState::applyForWork (this=0x29514f0, th=0x3255ab0) at /usr/src/debug/kdelibs-4.4.5/threadweaver/Weaver/WorkingHardState.cpp:71
#5  0x00007f3a5755ae6f in ThreadWeaver::ThreadRunHelper::run (this=0x7f3a1f007d10, parent=0x2951c20, th=0x3255ab0) at /usr/src/debug/kdelibs-4.4.5/threadweaver/Weaver/Thread.cpp:87
#6  0x00007f3a5755b358 in ThreadWeaver::Thread::run (this=0x3255ab0) at /usr/src/debug/kdelibs-4.4.5/threadweaver/Weaver/Thread.cpp:142
#7  0x00007f3a5ac681b5 in QThreadPrivate::start (arg=0x3255ab0) at thread/qthread_unix.cpp:248
#8  0x00007f3a58afea3a in start_thread (arg=0x7f3a1f008710) at pthread_create.c:297
#9  0x00007f3a5981277d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#10 0x0000000000000000 in ?? ()

Thread 7 (Thread 0x7f3a1ddcf710 (LWP 22101)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
#1  0x00007f3a537bca36 in WTF::TCMalloc_PageHeap::scavengerThread() () from /usr/lib64/libQtWebKit.so.4
#2  0x00007f3a537bca79 in WTF::TCMalloc_PageHeap::runScavengerThread(void*) () from /usr/lib64/libQtWebKit.so.4
#3  0x00007f3a58afea3a in start_thread (arg=0x7f3a1ddcf710) at pthread_create.c:297
#4  0x00007f3a5981277d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#5  0x0000000000000000 in ?? ()

Thread 6 (Thread 0x7f3a1ca43710 (LWP 22102)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
#1  0x00007f3a5ac6913b in wait (this=&lt;value optimized out&gt;, mutex=0x30533e0, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:87
#2  QWaitCondition::wait (this=&lt;value optimized out&gt;, mutex=0x30533e0, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:159
#3  0x00007f3a57559f86 in ThreadWeaver::WeaverImpl::blockThreadUntilJobsAreBeingAssigned (this=0x2951c20, th=0x2d51720) at /usr/src/debug/kdelibs-4.4.5/threadweaver/Weaver/WeaverImpl.cpp:365
#4  0x00007f3a5755c4ab in ThreadWeaver::WorkingHardState::applyForWork (this=0x29514f0, th=0x2d51720) at /usr/src/debug/kdelibs-4.4.5/threadweaver/Weaver/WorkingHardState.cpp:71
#5  0x00007f3a5755ae6f in ThreadWeaver::ThreadRunHelper::run (this=0x7f3a1ca42d10, parent=0x2951c20, th=0x2d51720) at /usr/src/debug/kdelibs-4.4.5/threadweaver/Weaver/Thread.cpp:87
#6  0x00007f3a5755b358 in ThreadWeaver::Thread::run (this=0x2d51720) at /usr/src/debug/kdelibs-4.4.5/threadweaver/Weaver/Thread.cpp:142
#7  0x00007f3a5ac681b5 in QThreadPrivate::start (arg=0x2d51720) at thread/qthread_unix.cpp:248
#8  0x00007f3a58afea3a in start_thread (arg=0x7f3a1ca43710) at pthread_create.c:297
#9  0x00007f3a5981277d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#10 0x0000000000000000 in ?? ()

Thread 5 (Thread 0x7f3a1c042710 (LWP 22103)):
#0  0x00007f3a5980b553 in select () at ../sysdeps/unix/syscall-template.S:82
#1  0x00007f3a5ad29afd in QProcessManager::run (this=0x7f3a5b059500) at io/qprocess_unix.cpp:245
#2  0x00007f3a5ac681b5 in QThreadPrivate::start (arg=0x7f3a5b059500) at thread/qthread_unix.cpp:248
#3  0x00007f3a58afea3a in start_thread (arg=0x7f3a1c042710) at pthread_create.c:297
#4  0x00007f3a5981277d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#5  0x0000000000000000 in ?? ()

Thread 4 (Thread 0x7f3a1b231710 (LWP 22105)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
#1  0x00007f3a570584f6 in QTWTF::TCMalloc_PageHeap::scavengerThread (this=0x7f3a57331d40) at ../3rdparty/javascriptcore/JavaScriptCore/wtf/FastMalloc.cpp:2304
#2  0x00007f3a57058539 in QTWTF::TCMalloc_PageHeap::runScavengerThread (context=0x7f3a5733fe0c) at ../3rdparty/javascriptcore/JavaScriptCore/wtf/FastMalloc.cpp:1438
#3  0x00007f3a58afea3a in start_thread (arg=0x7f3a1b231710) at pthread_create.c:297
#4  0x00007f3a5981277d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#5  0x0000000000000000 in ?? ()

Thread 3 (Thread 0x7f3a059a5710 (LWP 22114)):
#0  pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:211
#1  0x00007f3a5ac690a2 in wait (this=&lt;value optimized out&gt;, mutex=0x3728a70, time=30000) at thread/qwaitcondition_unix.cpp:85
#2  QWaitCondition::wait (this=&lt;value optimized out&gt;, mutex=0x3728a70, time=30000) at thread/qwaitcondition_unix.cpp:159
#3  0x00007f3a5ac5f2c1 in QThreadPoolThread::run (this=0x37077f0) at concurrent/qthreadpool.cpp:140
#4  0x00007f3a5ac681b5 in QThreadPrivate::start (arg=0x37077f0) at thread/qthread_unix.cpp:248
#5  0x00007f3a58afea3a in start_thread (arg=0x7f3a059a5710) at pthread_create.c:297
#6  0x00007f3a5981277d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#7  0x0000000000000000 in ?? ()

Thread 2 (Thread 0x7f3a04fa4710 (LWP 22115)):
#0  pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:211
#1  0x00007f3a5ac690a2 in wait (this=&lt;value optimized out&gt;, mutex=0x3728a70, time=30000) at thread/qwaitcondition_unix.cpp:85
#2  QWaitCondition::wait (this=&lt;value optimized out&gt;, mutex=0x3728a70, time=30000) at thread/qwaitcondition_unix.cpp:159
#3  0x00007f3a5ac5f2c1 in QThreadPoolThread::run (this=0x3722a30) at concurrent/qthreadpool.cpp:140
#4  0x00007f3a5ac681b5 in QThreadPrivate::start (arg=0x3722a30) at thread/qthread_unix.cpp:248
#5  0x00007f3a58afea3a in start_thread (arg=0x7f3a04fa4710) at pthread_create.c:297
#6  0x00007f3a5981277d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#7  0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7f3a5c816880 (LWP 22086)):
[KCrash Handler]
#5  QModelIndex (this=0x3c12a30, child=...) at ../../src/corelib/kernel/qabstractitemmodel.h:65
#6  QSortFilterProxyModel::parent (this=0x3c12a30, child=...) at itemviews/qsortfilterproxymodel.cpp:1619
#7  0x00007f3a5ad3d243 in parent (this=&lt;value optimized out&gt;) at kernel/qabstractitemmodel.h:389
#8  QPersistentModelIndex::parent (this=&lt;value optimized out&gt;) at kernel/qabstractitemmodel.cpp:347
#9  0x00007f3a5a69ce7d in QItemSelectionModel::setCurrentIndex (this=0x2caec40, index=&lt;value optimized out&gt;, command=&lt;value optimized out&gt;) at itemviews/qitemselectionmodel.cpp:1171
#10 0x00007f3a5a64d5c4 in QAbstractItemView::mousePressEvent (this=0x39b3550, event=&lt;value optimized out&gt;) at itemviews/qabstractitemview.cpp:1653
#11 0x00007f3a5b97e7f9 in PlaylistBrowserNS::PlaylistBrowserView::mousePressEvent (this=0x39b3550, event=0x7fff985456d0)
    at /home/panzi/software/amarok/src/browsers/playlistbrowser/PlaylistBrowserView.cpp:111
#12 0x00007f3a5a1c04f1 in QWidget::event (this=0x39b3550, event=0x7fff985456d0) at kernel/qwidget.cpp:8040
#13 0x00007f3a5a53c586 in QFrame::event (this=0x39b3550, e=0x7fff985456d0) at widgets/qframe.cpp:557
#14 0x00007f3a5a65266b in QAbstractItemView::viewportEvent (this=0x39b3550, event=0x7fff985456d0) at itemviews/qabstractitemview.cpp:1615
#15 0x00007f3a5a68dd32 in QTreeView::viewportEvent (this=0x39b3550, event=0x7fff985456d0) at itemviews/qtreeview.cpp:1248
#16 0x00007f3a5ad49de7 in QCoreApplicationPrivate::sendThroughObjectEventFilters (this=&lt;value optimized out&gt;, receiver=0x3a8dc60, event=0x7fff985456d0) at kernel/qcoreapplication.cpp:841
#17 0x00007f3a5a17533c in QApplicationPrivate::notify_helper (this=0x179c8a0, receiver=0x3a8dc60, e=0x7fff985456d0) at kernel/qapplication.cpp:4302
#18 0x00007f3a5a17bf0d in QApplication::notify (this=&lt;value optimized out&gt;, receiver=0x3a8dc60, e=0x7fff985456d0) at kernel/qapplication.cpp:3871
#19 0x00007f3a5c253ac6 in KApplication::notify (this=0x7fff98546380, receiver=0x3a8dc60, event=0x7fff985456d0) at /usr/src/debug/kdelibs-4.4.5/kdeui/kernel/kapplication.cpp:302
#20 0x00007f3a5ad4a9cc in QCoreApplication::notifyInternal (this=0x7fff98546380, receiver=0x3a8dc60, event=0x7fff985456d0) at kernel/qcoreapplication.cpp:726
#21 0x00007f3a5a17b0fe in sendEvent (receiver=0x3a8dc60, event=0x7fff985456d0, alienWidget=0x3a8dc60, nativeWidget=0x3c43dd0, buttonDown=&lt;value optimized out&gt;, 
    lastMouseReceiver=&lt;value optimized out&gt;, spontaneous=true) at ../../src/corelib/kernel/qcoreapplication.h:215
#22 QApplicationPrivate::sendMouseEvent (receiver=0x3a8dc60, event=0x7fff985456d0, alienWidget=0x3a8dc60, nativeWidget=0x3c43dd0, buttonDown=&lt;value optimized out&gt;, 
    lastMouseReceiver=&lt;value optimized out&gt;, spontaneous=true) at kernel/qapplication.cpp:2971
#23 0x00007f3a5a1ed195 in QETWidget::translateMouseEvent (this=0x3c43dd0, event=&lt;value optimized out&gt;) at kernel/qapplication_x11.cpp:4380
#24 0x00007f3a5a1ebeb8 in QApplication::x11ProcessEvent (this=&lt;value optimized out&gt;, event=0x7fff98545ff0) at kernel/qapplication_x11.cpp:3513
#25 0x00007f3a5a214bb2 in x11EventSourceDispatch (s=0x17992b0, callback=&lt;value optimized out&gt;, user_data=&lt;value optimized out&gt;) at kernel/qguieventdispatcher_glib.cpp:146
#26 0x000000316d03923e in g_main_dispatch (context=0x179e720) at gmain.c:1960
#27 IA__g_main_context_dispatch (context=0x179e720) at gmain.c:2513
#28 0x000000316d03cc28 in g_main_context_iterate (context=0x179e720, block=&lt;value optimized out&gt;, dispatch=&lt;value optimized out&gt;, self=&lt;value optimized out&gt;) at gmain.c:2591
#29 0x000000316d03cd4a in IA__g_main_context_iteration (context=0x179e720, may_block=1) at gmain.c:2654
#30 0x00007f3a5ad703f3 in QEventDispatcherGlib::processEvents (this=0x163b860, flags=&lt;value optimized out&gt;) at kernel/qeventdispatcher_glib.cpp:412
#31 0x00007f3a5a21486e in QGuiEventDispatcherGlib::processEvents (this=&lt;value optimized out&gt;, flags=&lt;value optimized out&gt;) at kernel/qguieventdispatcher_glib.cpp:204
#32 0x00007f3a5ad49412 in QEventLoop::processEvents (this=&lt;value optimized out&gt;, flags=...) at kernel/qeventloop.cpp:149
#33 0x00007f3a5ad496dc in QEventLoop::exec (this=0x7fff98546320, flags=...) at kernel/qeventloop.cpp:201
#34 0x00007f3a5ad4cdab in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1003
#35 0x000000000040ae04 in main (argc=3, argv=0x7fff985482e8) at /home/panzi/software/amarok/src/main.cpp:237

Possible duplicates by query: bug 246487, bug 238819, bug 238750, bug 230229, bug 229240.

Reported using DrKonqi</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013881</commentid>
    <comment_count>1</comment_count>
    <who name="Mathias Panzenböck">grosser.meister.morti</who>
    <bug_when>2010-09-03 19:00:35 +0000</bug_when>
    <thetext>About the speed: I noticed only one podcast feed* has this problem and it isn&apos;t amaroks fault. They embed a tiny transparent gif (webbug) which takes a second to load. It would be nice if the loading of the information would be progressive like in a real webbrowser, though.

* http://feeds.feedburner.com/mtvgameone</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014685</commentid>
    <comment_count>2</comment_count>
    <who name="Myriam Schweingruber">myriam</who>
    <bug_when>2010-09-05 14:31:50 +0000</bug_when>
    <thetext>I just had the same crash, but trying to rename a folder in the Saved Playlists. I reassign this to saved playlists, as it is the same code.
Using latest git with KDE 4.5.1 on Kubuntu 10.04</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015948</commentid>
    <comment_count>3</comment_count>
    <who name="Bart Cerneels">bart.cerneels</who>
    <bug_when>2010-09-08 08:40:10 +0000</bug_when>
    <thetext>Can this still be reproduced?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016062</commentid>
    <comment_count>4</comment_count>
    <who name="Mathias Panzenböck">grosser.meister.morti</who>
    <bug_when>2010-09-08 14:12:35 +0000</bug_when>
    <thetext>Just tried it (randomly expanding/collapsing podcast feeds combined with toggling merged view) and it crashed again (segmentation fault, for some reason no kcrashmanager).

The version I use:
commit f1c2dc3376a5905de6ee0f207e71bfa4b0b56022
Author: Script Kiddy &lt;scripty@kde.org&gt;
Date:   Wed Sep 8 11:12:38 2010 +0200</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016070</commentid>
    <comment_count>5</comment_count>
    <who name="Myriam Schweingruber">myriam</who>
    <bug_when>2010-09-08 14:35:16 +0000</bug_when>
    <thetext>Yes, reproducible every time I try to rename a second folder, sometimes it also crashes at the first try.
It happens in both the podcast and the saved playlist section.
And same problem here, Dr. Konqi doesn&apos;t start anymore, getting this error:

klauncher(18040)/kio (KLauncher): SlavePool: No communication with slave.

But that could also be due to me having upgraded to KDE 4.5.1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016145</commentid>
    <comment_count>6</comment_count>
    <who name="Bart Cerneels">bart.cerneels</who>
    <bug_when>2010-09-08 16:20:03 +0000</bug_when>
    <thetext>Can I get an updated stacktrace for this crash? The code changed so I want to really be sure where it&apos;s crashing. I can&apos;t reproduce.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016149</commentid>
    <comment_count>7</comment_count>
    <who name="Mathias Panzenböck">grosser.meister.morti</who>
    <bug_when>2010-09-08 16:33:08 +0000</bug_when>
    <thetext>As I said dr. konqi does not start, so I ran it using gdb. When I run backtrace there I get a never ending list of:
#0  0x00007ffff71062d2 in QtGroupingProxy::parent (this=Cannot access memory at address 0x7fffff3fdff8
) at /home/panzi/software/amarok/src/browsers/playlistbrowser/QtGroupingProxy.cpp:235
#1  0x00007ffff6e042bf in QModelIndex::parent (this=0x7fffff3fe140) at /usr/include/QtCore/qabstractitemmodel.h:389
#2  0x00007ffff7107325 in QtGroupingProxy::mapToSource (this=0x1e4b2d0, index=...) at /home/panzi/software/amarok/src/browsers/playlistbrowser/QtGroupingProxy.cpp:405
#3  0x00007ffff7107350 in QtGroupingProxy::mapToSource (this=0x1e4b2d0, index=...) at /home/panzi/software/amarok/src/browsers/playlistbrowser/QtGroupingProxy.cpp:407
...
#60156 0x00007ffff7107350 in QtGroupingProxy::mapToSource (this=0x1e4b2d0, index=...) at /home/panzi/software/amarok/src/browsers/playlistbrowser/QtGroupingProxy.cpp:407
#60157 0x00007ffff7107350 in QtGroupingProxy::mapToSource (this=0x1e4b2d0, index=...) at /home/panzi/software/amarok/src/browsers/playlistbrowser/QtGroupingProxy.cpp:407
#60158 0x00007ffff7107350 in QtGroupingProxy::mapToSource (this=0x1e4b2d0, index=...) at /home/panzi/software/amarok/src/browsers/playlistbrowser/QtGroupingProxy.cpp:407
...


It only seems to happen when I play some music during clicking stuff in the podcast view.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016238</commentid>
    <comment_count>8</comment_count>
    <who name="Bart Cerneels">bart.cerneels</who>
    <bug_when>2010-09-08 20:08:46 +0000</bug_when>
    <thetext>I absolutely can&apos;t reproduce this. Is there anything special about your podcast collection or with the save playlists?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016274</commentid>
    <comment_count>9</comment_count>
    <who name="Mathias Panzenböck">grosser.meister.morti</who>
    <bug_when>2010-09-08 21:24:23 +0000</bug_when>
    <thetext>Not that I&apos;d know of. Here is the list of feeds I&apos;m subscribed to (an export option would be nice, btw.):
http://alternativlos.org/ogg.rss
http://chaosradio.ccc.de/chaosradio-latest.rss
http://chaosradio.ccc.de/chaosradio_express-latest.rss
http://feeds.feedburner.com/mtvgameone
http://static.orf.at/podcast/fm4/fm4_science_busters.xml
file:///home/panzi/tmp/podcast.atom (a local test atom feed)
http://community.oreilly.de/blog/feed/
http://tim.geekheim.de/feed/
http://www.zreomusic.com/feed
http://static.orf.at/podcast/oe1/oe1_digitalleben.xml
http://static.orf.at/podcast/oe1/oe1_wissen.xml


I still use Fedora 12 (I should update, I know):
Qt: 4.6.3
KDE Development Platform: 4.4.5 (KDE 4.4.5)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016443</commentid>
    <comment_count>10</comment_count>
    <who name="Bart Cerneels">bart.cerneels</who>
    <bug_when>2010-09-09 08:45:23 +0000</bug_when>
    <thetext>(In reply to comment #9)
&gt; Not that I&apos;d know of. Here is the list of feeds I&apos;m subscribed to (an export
&gt; option would be nice, btw.):

Working on OPML export in a branch for the next release.

&gt; http://alternativlos.org/ogg.rss
.
.
.
&gt; http://static.orf.at/podcast/oe1/oe1_wissen.xml

That list doesn&apos;t look spectacularly long. Do you have any sorted in folders? Is Merged view enabled when crashing, do you have any provider filtered?

Please also include the output on the terminal (at least the last 1000 lines). Perhaps I can find something there.


&gt; 
&gt; 
&gt; I still use Fedora 12 (I should update, I know):
&gt; Qt: 4.6.3
&gt; KDE Development Platform: 4.4.5 (KDE 4.4.5)

I doubt the Qt version has anything to do with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016482</commentid>
    <comment_count>11</comment_count>
    <who name="Myriam Schweingruber">myriam</who>
    <bug_when>2010-09-09 09:56:12 +0000</bug_when>
    <thetext>I use KDE 4.5.1 and Qt 4.7.0 rc1

I finally got a backtrace and found the culprit, changed the bug title accordingly:

Thread 1 (Thread 0x7ffd66d48780 (LWP 10561)):
[KCrash Handler]
#6  QModelIndex (this=0x2f4f830, child=...) at ../../include/QtCore/../../src/corelib/kernel/qabstractitemmodel.h:65
#7  QSortFilterProxyModel::parent (this=0x2f4f830, child=...) at itemviews/qsortfilterproxymodel.cpp:1656
#8  0x00007ffd6467b553 in QModelIndex::parent (this=&lt;value optimized out&gt;) at kernel/qabstractitemmodel.h:389
#9  QPersistentModelIndex::parent (this=&lt;value optimized out&gt;) at kernel/qabstractitemmodel.cpp:347
#10 0x00007ffd655f99bf in QItemSelectionRange::parent (this=0x2f63d80, index=...) at itemviews/qitemselectionmodel.h:78
#11 QItemSelectionRange::contains (this=0x2f63d80, index=...) at itemviews/qitemselectionmodel.h:85
#12 QItemSelection::contains (this=0x2f63d80, index=...) at itemviews/qitemselectionmodel.cpp:423
#13 0x00007ffd655fb055 in QItemSelectionModel::isSelected (this=&lt;value optimized out&gt;, index=...) at itemviews/qitemselectionmodel.cpp:1200
#14 0x00007ffd655ee7ab in QTreeView::drawRow (this=&lt;value optimized out&gt;, painter=&lt;value optimized out&gt;, option=&lt;value optimized out&gt;, index=&lt;value optimized out&gt;) at itemviews/qtreeview.cpp:1602
#15 0x00007ffd662d94f1 in Amarok::PrettyTreeView::drawRow (this=0x2f6a640, painter=0x7fff44787b50, option=..., index=...) at /home/myriam/kde/src/amarok/src/widgets/PrettyTreeView.cpp:44
#16 0x00007ffd655e9d4a in QTreeView::drawTree (this=0x2f6a640, painter=&lt;value optimized out&gt;, region=&lt;value optimized out&gt;) at itemviews/qtreeview.cpp:1441
#17 0x00007ffd655ea813 in QTreeView::paintEvent (this=0x2f6a640, event=0x7fff447887a0) at itemviews/qtreeview.cpp:1274
#18 0x00007ffd650aed4e in QWidget::event (this=0x2f6a640, event=0x7fff447887a0) at kernel/qwidget.cpp:8304
#19 0x00007ffd65475ba6 in QFrame::event (this=0x2f6a640, e=0x7fff447887a0) at widgets/qframe.cpp:557
#20 0x00007ffd655ad85b in QAbstractItemView::viewportEvent (this=0x2f6a640, event=0x7fff447887a0) at itemviews/qabstractitemview.cpp:1619
#21 0x00007ffd655eb615 in QTreeView::viewportEvent (this=0x2f6a640, event=0x7fff447887a0) at itemviews/qtreeview.cpp:1256
#22 0x00007ffd646888d7 in QCoreApplicationPrivate::sendThroughObjectEventFilters (this=&lt;value optimized out&gt;, receiver=0x2f73180, event=0x7fff447887a0) at kernel/qcoreapplication.cpp:847
#23 0x00007ffd6505973c in QApplicationPrivate::notify_helper (this=0x18e5dc0, receiver=0x2f73180, e=0x7fff447887a0) at kernel/qapplication.cpp:4392
#24 0x00007ffd6505f25d in QApplication::notify (this=0x7fff4478b200, receiver=0x2f73180, e=0x7fff447887a0) at kernel/qapplication.cpp:4277
#25 0x00007ffd6685e2e6 in KApplication::notify (this=0x7fff4478b200, receiver=0x2f73180, event=0x7fff447887a0) at ../../kdeui/kernel/kapplication.cpp:310
#26 0x00007ffd646890ac in QCoreApplication::notifyInternal (this=0x7fff4478b200, receiver=0x2f73180, event=0x7fff447887a0) at kernel/qcoreapplication.cpp:732
#27 0x00007ffd650b585d in QCoreApplication::sendSpontaneousEvent (this=0x2f4b430, pdev=&lt;value optimized out&gt;, rgn=..., offset=&lt;value optimized out&gt;, flags=&lt;value optimized out&gt;, sharedPainter=0x0, 
    backingStore=0x2e35240) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:218
#28 QWidgetPrivate::drawWidget (this=0x2f4b430, pdev=&lt;value optimized out&gt;, rgn=..., offset=&lt;value optimized out&gt;, flags=&lt;value optimized out&gt;, sharedPainter=0x0, backingStore=0x2e35240)
    at kernel/qwidget.cpp:5391
#29 0x00007ffd650b64f8 in QWidgetPrivate::paintSiblingsRecursive (this=&lt;value optimized out&gt;, pdev=&lt;value optimized out&gt;, siblings=..., index=0, rgn=&lt;value optimized out&gt;, 
    offset=&lt;value optimized out&gt;, flags=4, sharedPainter=0x0, backingStore=0x2e35240) at kernel/qwidget.cpp:5598
#30 0x00007ffd650b55ba in QWidgetPrivate::drawWidget (this=0x2f56ca0, pdev=&lt;value optimized out&gt;, rgn=..., offset=&lt;value optimized out&gt;, flags=&lt;value optimized out&gt;, sharedPainter=0x0, 
    backingStore=0x2e35240) at kernel/qwidget.cpp:5444
#31 0x00007ffd650b64f8 in QWidgetPrivate::paintSiblingsRecursive (this=&lt;value optimized out&gt;, pdev=&lt;value optimized out&gt;, siblings=..., index=3, rgn=&lt;value optimized out&gt;, 
    offset=&lt;value optimized out&gt;, flags=4, sharedPainter=0x0, backingStore=0x2e35240) at kernel/qwidget.cpp:5598
#32 0x00007ffd650b55ba in QWidgetPrivate::drawWidget (this=0x2f68f30, pdev=&lt;value optimized out&gt;, rgn=..., offset=&lt;value optimized out&gt;, flags=&lt;value optimized out&gt;, sharedPainter=0x0, 
    backingStore=0x2e35240) at kernel/qwidget.cpp:5444
#33 0x00007ffd650b64f8 in QWidgetPrivate::paintSiblingsRecursive (this=&lt;value optimized out&gt;, pdev=&lt;value optimized out&gt;, siblings=..., index=3, rgn=&lt;value optimized out&gt;, 
    offset=&lt;value optimized out&gt;, flags=4, sharedPainter=0x0, backingStore=0x2e35240) at kernel/qwidget.cpp:5598
#34 0x00007ffd650b55ba in QWidgetPrivate::drawWidget (this=0x2df6b90, pdev=&lt;value optimized out&gt;, rgn=..., offset=&lt;value optimized out&gt;, flags=&lt;value optimized out&gt;, sharedPainter=0x0, 
    backingStore=0x2e35240) at kernel/qwidget.cpp:5444
#35 0x00007ffd650b64f8 in QWidgetPrivate::paintSiblingsRecursive (this=&lt;value optimized out&gt;, pdev=&lt;value optimized out&gt;, siblings=..., index=3, rgn=&lt;value optimized out&gt;, 
    offset=&lt;value optimized out&gt;, flags=4, sharedPainter=0x0, backingStore=0x2e35240) at kernel/qwidget.cpp:5598
#36 0x00007ffd650b55ba in QWidgetPrivate::drawWidget (this=0x2de87a0, pdev=&lt;value optimized out&gt;, rgn=..., offset=&lt;value optimized out&gt;, flags=&lt;value optimized out&gt;, sharedPainter=0x0, 
    backingStore=0x2e35240) at kernel/qwidget.cpp:5444
#37 0x00007ffd650b64f8 in QWidgetPrivate::paintSiblingsRecursive (this=&lt;value optimized out&gt;, pdev=&lt;value optimized out&gt;, siblings=..., index=5, rgn=&lt;value optimized out&gt;, 
    offset=&lt;value optimized out&gt;, flags=4, sharedPainter=0x0, backingStore=0x2e35240) at kernel/qwidget.cpp:5598
#38 0x00007ffd650b55ba in QWidgetPrivate::drawWidget (this=0x2dde570, pdev=&lt;value optimized out&gt;, rgn=..., offset=&lt;value optimized out&gt;, flags=&lt;value optimized out&gt;, sharedPainter=0x0, 
    backingStore=0x2e35240) at kernel/qwidget.cpp:5444
#39 0x00007ffd650b64f8 in QWidgetPrivate::paintSiblingsRecursive (this=&lt;value optimized out&gt;, pdev=&lt;value optimized out&gt;, siblings=..., index=63, rgn=&lt;value optimized out&gt;, 
    offset=&lt;value optimized out&gt;, flags=4, sharedPainter=0x0, backingStore=0x2e35240) at kernel/qwidget.cpp:5598
#40 0x00007ffd650b55ba in QWidgetPrivate::drawWidget (this=0x1e6b1f0, pdev=&lt;value optimized out&gt;, rgn=..., offset=&lt;value optimized out&gt;, flags=&lt;value optimized out&gt;, sharedPainter=0x0, 
    backingStore=0x2e35240) at kernel/qwidget.cpp:5444
#41 0x00007ffd65287d88 in QWidgetBackingStore::sync (this=0x2e35240) at painting/qbackingstore.cpp:1328
#42 0x00007ffd650a8dd0 in QWidgetPrivate::syncBackingStore (this=0x1e6b1f0) at kernel/qwidget.cpp:1776
#43 0x00007ffd650af415 in QWidget::event (this=0x1e6b0a0, event=0x3448190) at kernel/qwidget.cpp:8451
#44 0x00007ffd6549187b in QMainWindow::event (this=0x1e6b0a0, event=0x3448190) at widgets/qmainwindow.cpp:1417
#45 0x00007ffd6505976c in QApplicationPrivate::notify_helper (this=0x18e5dc0, receiver=0x1e6b0a0, e=0x3448190) at kernel/qapplication.cpp:4396
#46 0x00007ffd6505f25d in QApplication::notify (this=0x7fff4478b200, receiver=0x1e6b0a0, e=0x3448190) at kernel/qapplication.cpp:4277
#47 0x00007ffd6685e2e6 in KApplication::notify (this=0x7fff4478b200, receiver=0x1e6b0a0, event=0x3448190) at ../../kdeui/kernel/kapplication.cpp:310
#48 0x00007ffd646890ac in QCoreApplication::notifyInternal (this=0x7fff4478b200, receiver=0x1e6b0a0, event=0x3448190) at kernel/qcoreapplication.cpp:732
#49 0x00007ffd6468bfd2 in QCoreApplication::sendEvent (receiver=0x0, event_type=&lt;value optimized out&gt;, data=0x17919f0) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:215
#50 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=&lt;value optimized out&gt;, data=0x17919f0) at kernel/qcoreapplication.cpp:1373
#51 0x00007ffd646b5643 in QCoreApplication::sendPostedEvents (s=0x18ee6a0) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:220
#52 postEventSourceDispatch (s=0x18ee6a0) at kernel/qeventdispatcher_glib.cpp:277
#53 0x00007ffd5e10d8c2 in g_main_context_dispatch () from /lib/libglib-2.0.so.0
#54 0x00007ffd5e111748 in ?? () from /lib/libglib-2.0.so.0
#55 0x00007ffd5e1118fc in g_main_context_iteration () from /lib/libglib-2.0.so.0
#56 0x00007ffd646b5183 in QEventDispatcherGlib::processEvents (this=0x1791140, flags=&lt;value optimized out&gt;) at kernel/qeventdispatcher_glib.cpp:415
#57 0x00007ffd6510b78e in QGuiEventDispatcherGlib::processEvents (this=0x7fff447871b0, flags=&lt;value optimized out&gt;) at kernel/qguieventdispatcher_glib.cpp:204
#58 0x00007ffd64687dd2 in QEventLoop::processEvents (this=&lt;value optimized out&gt;, flags=) at kernel/qeventloop.cpp:149
#59 0x00007ffd646881bc in QEventLoop::exec (this=0x7fff4478b1a0, flags=) at kernel/qeventloop.cpp:201
#60 0x00007ffd6468c26b in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1009
#61 0x000000000040aec6 in main (argc=4, argv=0x7fff4478d158) at /home/myriam/kde/src/amarok/src/main.cpp:237</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016590</commentid>
    <comment_count>12</comment_count>
    <who name="Mathias Panzenböck">grosser.meister.morti</who>
    <bug_when>2010-09-09 14:56:59 +0000</bug_when>
    <thetext>Gah, strange. Now I just can&apos;t reproduce the crash myself (so I cant post the console output). I use the same build I used yesterday. Very strange.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023188</commentid>
    <comment_count>13</comment_count>
    <who name="Myriam Schweingruber">myriam</who>
    <bug_when>2010-09-23 16:08:05 +0000</bug_when>
    <thetext>*** Bug 230447 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036605</commentid>
    <comment_count>14</comment_count>
    <who name="Myriam Schweingruber">myriam</who>
    <bug_when>2010-10-25 02:16:30 +0000</bug_when>
    <thetext>*** Bug 255121 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038202</commentid>
    <comment_count>15</comment_count>
      <attachid>52959</attachid>
    <who name="Mathias Panzenböck">grosser.meister.morti</who>
    <bug_when>2010-10-29 00:47:55 +0000</bug_when>
    <thetext>Created attachment 52959
New crash information added by DrKonqi

Yet another crash. This time it occured when I clicked &quot;download&quot; of an episode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053279</commentid>
    <comment_count>16</comment_count>
    <who name="Myriam Schweingruber">myriam</who>
    <bug_when>2010-12-04 12:21:40 +0000</bug_when>
    <thetext>*** Bug 258772 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055426</commentid>
    <comment_count>17</comment_count>
    <who name="Bart Cerneels">bart.cerneels</who>
    <bug_when>2010-12-08 17:07:44 +0000</bug_when>
    <thetext>commit bab911e4de92d2fc42aacd0f711eb01736e32d21
branch master
Author: Bart Cerneels &lt;bart.cerneels@kde.org&gt;
Date:   Sun Dec 5 17:41:55 2010 +0100

    Add inserted rows without doing a buildTree().
    
    This ensures the view is not reset when saving a playlist, etc.
    
    The same still has to be done when removing a row (playlists &amp; podcast, for tracks it&apos;s already OK).
    
    Possibly fixes the bug in CC, but I can&apos;t reproduce.
    
    BUG:245621
    CCBUG:250062

diff --git a/src/browsers/playlistbrowser/PlaylistBrowserModel.cpp b/src/browsers/playlistbrowser/PlaylistBrowserModel.cpp
index 34d84d9..fd7882f 100644
--- a/src/browsers/playlistbrowser/PlaylistBrowserModel.cpp
+++ b/src/browsers/playlistbrowser/PlaylistBrowserModel.cpp
@@ -56,6 +56,11 @@ PlaylistBrowserModel::PlaylistBrowserModel( int playlistCategory )
     connect( The::playlistManager(), SIGNAL( providerRemoved( Playlists::PlaylistProvider*, int ) ),
              SLOT( slotUpdate() ) );
 
+    connect( The::playlistManager(), SIGNAL( playlistAdded( Playlists::PlaylistPtr, int ) ),
+             SLOT( slotPlaylistAdded( Playlists::PlaylistPtr,int ) ) );
+    connect( The::playlistManager(), SIGNAL( playlistRemoved( Playlists::PlaylistPtr, int ) ),
+             SLOT( slotPlaylistRemoved( Playlists::PlaylistPtr,int ) ) );
+
     connect( The::playlistManager(), SIGNAL(renamePlaylist( Playlists::PlaylistPtr )),
              SLOT(slotRenamePlaylist( Playlists::PlaylistPtr )) );
 
@@ -574,6 +579,37 @@ PlaylistBrowserModel::slotAppend()
         The::playlistController()-&gt;insertOptioned( tracks, Playlist::AppendAndPlay );
 }
 
+void
+PlaylistBrowserModel::slotPlaylistAdded( Playlists::PlaylistPtr playlist, int category )
+{
+    //ignore playlists of a different category
+    if( category != m_playlistCategory )
+        return;
+
+    subscribeTo( playlist );
+    int i;
+    for( i = 0; i &lt; m_playlists.count(); i++ )
+    {
+        if( lessThanPlaylistTitles( playlist, m_playlists[i] ) )
+        {
+            m_playlists.insert( i, playlist );
+            break;
+        }
+    }
+    if( i == m_playlists.count() )
+        m_playlists.append( playlist );
+
+    beginInsertRows( QModelIndex(), i, i );
+    endInsertRows();
+}
+
+void
+PlaylistBrowserModel::slotPlaylistRemoved( Playlists::PlaylistPtr playlist, int category )
+{
+    if( category != m_playlistCategory )
+        return;
+}
+
 Meta::TrackList
 PlaylistBrowserModel::tracksFromIndexes( const QModelIndexList &amp;list ) const
 {
diff --git a/src/browsers/playlistbrowser/PlaylistBrowserModel.h b/src/browsers/playlistbrowser/PlaylistBrowserModel.h
index 0f32c96..feb6551 100644
--- a/src/browsers/playlistbrowser/PlaylistBrowserModel.h
+++ b/src/browsers/playlistbrowser/PlaylistBrowserModel.h
@@ -107,6 +107,8 @@ class PlaylistBrowserModel : public QAbstractItemModel,
     private slots:
         void slotLoad();
         void slotAppend();
+        void slotPlaylistAdded( Playlists::PlaylistPtr playlist, int category );
+        void slotPlaylistRemoved( Playlists::PlaylistPtr playlist, int category );
 
     private:
         int m_playlistCategory;
diff --git a/src/browsers/playlistbrowser/PlaylistsByProviderProxy.cpp b/src/browsers/playlistbrowser/PlaylistsByProviderProxy.cpp
index 813155f..adc2ff7 100644
--- a/src/browsers/playlistbrowser/PlaylistsByProviderProxy.cpp
+++ b/src/browsers/playlistbrowser/PlaylistsByProviderProxy.cpp
@@ -201,7 +201,7 @@ PlaylistsByProviderProxy::dropMimeData( const QMimeData *data, Qt::DropAction ac
                     decodeMimeRows( data-&gt;data( AMAROK_PROVIDERPROXY_INDEXES ), m_model );
             //set the groupedColumn data of all playlist indexes to the data of this group
             //the model will understand this as a copy to the provider it&apos;s dropped on
-            RoleVariantMap groupData =
+            IndexData groupData =
                     m_groupMaps.value( parent.row() ).value( parent.column() );
             bool result = !originalIndexes.isEmpty();
             foreach( const QModelIndex&amp; originalIndex, originalIndexes )
diff --git a/src/browsers/playlistbrowser/PlaylistsInFoldersProxy.cpp b/src/browsers/playlistbrowser/PlaylistsInFoldersProxy.cpp
index e81e7ce..1eaf162 100644
--- a/src/browsers/playlistbrowser/PlaylistsInFoldersProxy.cpp
+++ b/src/browsers/playlistbrowser/PlaylistsInFoldersProxy.cpp
@@ -324,8 +324,8 @@ PlaylistsInFoldersProxy::deleteFolder( const QModelIndex &amp;groupIdx )
 QModelIndex
 PlaylistsInFoldersProxy::createNewFolder( const QString &amp;groupName )
 {
-    ColumnVariantMap data;
-    RoleVariantMap roleData;
+    RowData data;
+    IndexData roleData;
     roleData.insert( Qt::DisplayRole, groupName );
     roleData.insert( Qt::DecorationRole, QVariant( KIcon( &quot;folder&quot; ) ) );
     roleData.insert( Qt::EditRole, groupName );
diff --git a/src/browsers/playlistbrowser/QtGroupingProxy.cpp b/src/browsers/playlistbrowser/QtGroupingProxy.cpp
index 731a533..70663f1 100644
--- a/src/browsers/playlistbrowser/QtGroupingProxy.cpp
+++ b/src/browsers/playlistbrowser/QtGroupingProxy.cpp
@@ -54,15 +54,15 @@ QtGroupingProxy::setGroupedColumn( int groupedColumn )
     buildTree();
 }
 
-QList&lt;ColumnVariantMap&gt;
+QList&lt;RowData&gt;
 QtGroupingProxy::belongsTo( const QModelIndex &amp;idx )
 {
     //qDebug() &lt;&lt; __FILE__ &lt;&lt; __FUNCTION__;
-    QList&lt;ColumnVariantMap&gt; cvmList;
+    QList&lt;RowData&gt; rowDataList;
 
-    //get all the data we have for this index
-    RoleVariantMap roleVariantMap = m_model-&gt;itemData( idx );
-    QMapIterator&lt;int, QVariant&gt; i(roleVariantMap);
+    //get all the data for this index from the model
+    IndexData indexData = m_model-&gt;itemData( idx );
+    QMapIterator&lt;int, QVariant&gt; i( indexData );
     while( i.hasNext() )
     {
         i.next();
@@ -75,41 +75,41 @@ QtGroupingProxy::belongsTo( const QModelIndex &amp;idx )
             QVariantList list = variant.toList();
             for( int i = 0; i &lt; list.length(); i++ )
             {
-                //take an existing CVM or create a new one
-                ColumnVariantMap cvm = (cvmList.count() &gt; i) ?  cvmList.takeAt( i )
-                                       : ColumnVariantMap();
+                //take an existing row data or create a new one
+                RowData rowData = (rowDataList.count() &gt; i) ?  rowDataList.takeAt( i )
+                                       : RowData();
 
                 //we only gather data for the first column
-                RoleVariantMap rvm = cvm.contains( 0 ) ? cvm.take( 0 ) : RoleVariantMap();
-                rvm.insert( role, list.value( i ) );
-                cvm.insert( 0, rvm );
+                IndexData indexData = rowData.contains( 0 ) ? rowData.take( 0 ) : IndexData();
+                indexData.insert( role, list.value( i ) );
+                rowData.insert( 0, indexData );
                 //for the grouped column the data should not be gathered from the children
                 //this will allow filtering on the content of this column with a QSFP
-                cvm.insert( m_groupedColumn, rvm );
-                cvmList.insert( i, cvm );
+                rowData.insert( m_groupedColumn, indexData );
+                rowDataList.insert( i, rowData );
             }
         }
         else if( !variant.isNull() )
         {
             //it&apos;s just a normal item. Copy all the data and break this loop.
-            ColumnVariantMap cvm;
-            cvm.insert( 0, roleVariantMap );
-            cvmList &lt;&lt; cvm;
+            RowData rowData;
+            rowData.insert( 0, indexData );
+            rowDataList &lt;&lt; rowData;
             break;
         }
     }
     //for normal items (not root node) an empty list here means it&apos;s supposed to go in root.
-    if( cvmList.isEmpty() &amp;&amp; idx != m_rootNode )
-        cvmList &lt;&lt; ColumnVariantMap();
+    if( idx != m_rootNode &amp;&amp; rowDataList.isEmpty() )
+        rowDataList &lt;&lt; RowData();
 
-    return cvmList;
+    return rowDataList;
 }
 
 /* m_groupHash layout
 *  key : index of the group in m_groupMaps
-*  values : original row in m_model of children of this group
+*  value : a QList of the original rows in m_model for the children of this group
 *
-*  key = -1  contains non-grouped indexes
+*  key = -1  contains a QList of the non-grouped indexes
 *
 * TODO: sub-groups
 */
@@ -130,66 +130,104 @@ QtGroupingProxy::buildTree()
             m_model-&gt;index( m_rootNode.row(), m_groupedColumn, m_rootNode.parent() );
     if( rootGroupedIndex.column() == m_groupedColumn )
     {
-        QList&lt;ColumnVariantMap&gt; groupData = belongsTo( rootGroupedIndex );
-        foreach( ColumnVariantMap cvm , groupData )
+        QList&lt;RowData&gt; groupData = belongsTo( rootGroupedIndex );
+        foreach( RowData rowData , groupData )
         {
-            // qDebug() &lt;&lt; cvm;
-            if( cvm.contains( 0 ) &amp;&amp; cvm[0].contains( Qt::DisplayRole ) )
+            // qDebug() &lt;&lt; rowData;
+            if( rowData.contains( 0 ) &amp;&amp; rowData[0].contains( Qt::DisplayRole ) )
             {
-                QString groupName = cvm[0][Qt::DisplayRole].toString();
-                // qDebug() &lt;&lt; &quot;Creating empty group: &quot; &lt;&lt; groupName;
-                m_groupMaps &lt;&lt; cvm;
+                // qDebug() &lt;&lt; &quot;Creating empty group: &quot; &lt;&lt; rowData[0][Qt::DisplayRole].toString();
+                m_groupMaps &lt;&lt; rowData;
             }
         }
     }
 
     int max = m_model-&gt;rowCount( m_rootNode );
     //qDebug() &lt;&lt; QString(&quot;building tree with %1 leafs.&quot;).arg( max );
-    for( int row = max-1; row &gt;= 0; row-- )
+    //WARNING: these have to be added in order because the addToGroups function is optimized for
+    //modelRowsInserted(). Failure to do so will result in wrong data shown in the view at best.
+    for( int row = 0; row &lt; max; row++ )
     {
         QModelIndex idx = m_model-&gt;index( row, m_groupedColumn, m_rootNode );
-        QList&lt;ColumnVariantMap&gt; groupData = belongsTo( idx );
+        addSourceRow( idx );
+    }
+//    dumpGroups();
+
+    emit layoutChanged();
+}
+
+QList&lt;int&gt;
+QtGroupingProxy::addSourceRow( const QModelIndex &amp;idx )
+{
+    QList&lt;int&gt; updatedGroups;
 
-        //an item can be in multiple groups
-        foreach( ColumnVariantMap data, groupData )
+    QList&lt;RowData&gt; groupData = belongsTo( idx );
+    //an item can be in multiple groups
+    foreach( RowData data, groupData )
+    {
+        int groupIndex = -1;
+        if( !data.isEmpty() )
         {
-            int groupIndex = -1;
-            if( !data.isEmpty() )
-            {
-                QString groupName = data[0][Qt::DisplayRole].toString();
-                // qDebug() &lt;&lt; QString(&quot;index %1 belongs to group %2&quot;).arg( row ).arg( groupName );
+//            qDebug() &lt;&lt; QString(&quot;index %1 belongs to group %2&quot;).arg( row )
+//                         .arg( data[0][Qt::DisplayRole].toString() );
 
-                foreach( const ColumnVariantMap &amp;cachedData, m_groupMaps )
+            foreach( const RowData &amp;cachedData, m_groupMaps )
+            {
+                //when this matches the index belongs to an existing group
+                if( data[0][Qt::DisplayRole] == cachedData[0][Qt::DisplayRole] )
                 {
-                    //when this matches the index belongs to an existing group
-                    if( data[0][Qt::DisplayRole] == cachedData[0][Qt::DisplayRole] )
-                    {
-                        data = cachedData;
-                        break;
-                    }
+                    data = cachedData;
+                    break;
                 }
+            }
 
-                groupIndex = m_groupMaps.indexOf( data );
-                //-1 means not found
-                if( groupIndex == -1 )
+            groupIndex = m_groupMaps.indexOf( data );
+            //-1 means not found
+            if( groupIndex == -1 )
+            {
+                //new groups are added to the end of the existing list
+                m_groupMaps &lt;&lt; data;
+                groupIndex = m_groupMaps.count() - 1;
+            }
+        }
+
+        if( !updatedGroups.contains( groupIndex ) )
+            updatedGroups &lt;&lt; groupIndex;
+
+        //it&apos;s possible it&apos;s a new group, QHash will create it for us with this call:
+        m_groupHash[groupIndex];
+
+        //update the groupHash to the new source-model layout (one row added)
+        QMutableHashIterator&lt;quint32, QList&lt;int&gt; &gt; i( m_groupHash );
+        while( i.hasNext() )
+        {
+            i.next();
+            QList&lt;int&gt; &amp;groupList = i.value();
+            int insertedProxyRow = groupList.count();
+            for( ; insertedProxyRow &gt; 0 ; insertedProxyRow-- )
+            {
+                int &amp;rowValue = groupList[insertedProxyRow-1];
+                if( idx.row() &lt;= rowValue )
+                {
+                    //increment the rows that come after the new row since they moved one place up.
+                    rowValue++;
+                }
+                else
                 {
-                    //new groups are added to the end of the existing list
-                    m_groupMaps &lt;&lt; data;
-                    groupIndex = m_groupMaps.count() - 1;
+                    break;
                 }
             }
-
-            m_groupHash.insertMulti( groupIndex, row );
+            //the row needs to be added to this group
+            if( i.key() == (quint32)groupIndex )
+                groupList.insert( insertedProxyRow, idx.row() );
         }
     }
-//    dumpGroups();
-
-    emit layoutChanged();
+    return updatedGroups;
 }
 
-/** Each Modelindex has in it&apos;s internalId an index in the parentCreateList.
+/** Each ModelIndex has in it&apos;s internalId a position in the parentCreateList.
   * struct ParentCreate are the instructions to recreate the parent index.
-  * It contains the row number and the index in this list of the grandfather.
+  * It contains the row number and the postion in this list of the grandfather.
   * This function creates the ParentCreate structs and saves them in a list.
   */
 int
@@ -215,7 +253,7 @@ QtGroupingProxy::indexOfParentCreate( const QModelIndex &amp;parent ) const
 QModelIndex
 QtGroupingProxy::index( int row, int column, const QModelIndex&amp; parent ) const
 {
-    //qDebug() &lt;&lt; &quot;index requested for: (&quot; &lt;&lt; row &lt;&lt; &quot;,&quot; &lt;&lt; column &lt;&lt; &quot;), &quot; &lt;&lt; parent;
+//    qDebug() &lt;&lt; &quot;index requested for: (&quot; &lt;&lt; row &lt;&lt; &quot;,&quot; &lt;&lt; column &lt;&lt; &quot;), &quot; &lt;&lt; parent;
     if( !hasIndex(row, column, parent) )
         return QModelIndex();
 
@@ -255,7 +293,7 @@ QtGroupingProxy::rowCount( const QModelIndex&amp; index ) const
     if( !index.isValid() )
     {
         //the number of top level groups + the number of non-grouped playlists
-        int rows = m_groupMaps.count() + m_groupHash.values( -1 ).count();
+        int rows = m_groupMaps.count() + m_groupHash.value( -1 ).count();
         //qDebug() &lt;&lt; rows &lt;&lt; &quot; in root group&quot;;
         return rows;
     }
@@ -264,7 +302,7 @@ QtGroupingProxy::rowCount( const QModelIndex&amp; index ) const
     if( isGroup( index ) )
     {
         qint64 groupIndex = index.row();
-        int rows = m_groupHash.count( groupIndex );
+        int rows = m_groupHash.value( groupIndex ).count();
         //qDebug() &lt;&lt; rows &lt;&lt; &quot; in group &quot; &lt;&lt; m_groupMaps[groupIndex];
         return rows;
     }
@@ -305,7 +343,7 @@ QtGroupingProxy::data( const QModelIndex &amp;index, int role ) const
 
         //map all data from children to columns of group to allow grouping one level up
         QVariantList variantsOfChildren;
-        int childCount = m_groupHash.count( row );
+        int childCount = m_groupHash.value( row ).count();
         if( childCount == 0 )
             return QVariant();
 
@@ -322,7 +360,7 @@ QtGroupingProxy::data( const QModelIndex &amp;index, int role ) const
         }
         //qDebug() &lt;&lt; &quot;gathered this data from children: &quot; &lt;&lt; variantsOfChildren;
         //saving in cache
-        RoleVariantMap roleMap = m_groupMaps[row].value( column );
+        IndexData roleMap = m_groupMaps[row].value( column );
         foreach( const QVariant &amp;variant, variantsOfChildren )
         {
             if( roleMap[ role ] != variant )
@@ -355,7 +393,7 @@ QtGroupingProxy::setData( const QModelIndex &amp;idx, const QVariant &amp;value, int rol
 
     if( isGroup( idx ) )
     {
-        RoleVariantMap columnData = m_groupMaps[idx.row()][idx.column()];
+        IndexData columnData = m_groupMaps[idx.row()][idx.column()];
 
         columnData.insert( role, value );
         //also set the display role if we are changing the grouped column data or the
@@ -366,7 +404,7 @@ QtGroupingProxy::setData( const QModelIndex &amp;idx, const QVariant &amp;value, int rol
         m_groupMaps[idx.row()].insert( idx.column(), columnData );
 
         int columnToChange = idx.row() != 0 ? idx.row() : m_groupedColumn;
-        foreach( int originalRow, m_groupHash.values( idx.row() ) )
+        foreach( int originalRow, m_groupHash.value( idx.row() ) )
         {
             QModelIndex childIdx = m_model-&gt;index( originalRow, columnToChange,
                                                    m_rootNode );
@@ -413,7 +451,7 @@ QtGroupingProxy::mapToSource( const QModelIndex&amp; index ) const
         if( !proxyParent.isValid() )
             indexInGroup -= m_groupMaps.count();
         //qDebug() &lt;&lt; &quot;indexInGroup&quot; &lt;&lt; indexInGroup;
-        QList&lt;int&gt; childRows = m_groupHash.values( proxyParent.row() );
+        QList&lt;int&gt; childRows = m_groupHash.value( proxyParent.row() );
         if( childRows.isEmpty() || indexInGroup &gt;= childRows.count() || indexInGroup &lt; 0 )
             return QModelIndex();
 
@@ -455,13 +493,23 @@ QtGroupingProxy::mapFromSource( const QModelIndex &amp;idx ) const
     }
     else
     {
-        //idx is an item of the top level of the source model (child of the rootnode)
-        int groupRow = m_groupHash.key( sourceRow, -1 );
+        //idx is an item in the top level of the source model (child of the rootnode)
+        int groupRow = -1;
+        QHashIterator&lt;quint32, QList&lt;int&gt; &gt; iterator( m_groupHash );
+        while( iterator.hasNext() )
+        {
+            iterator.next();
+            if( iterator.value().contains( sourceRow ) )
+            {
+                groupRow = iterator.key();
+                break;
+            }
+        }
 
         if( groupRow != -1 ) //it&apos;s in a group, let&apos;s find the correct row.
         {
             proxyParent = this-&gt;index( groupRow, 0, QModelIndex() );
-            proxyRow = m_groupHash.values( groupRow ).indexOf( sourceRow );
+            proxyRow = m_groupHash.value( groupRow ).indexOf( sourceRow );
         }
         else
         {
@@ -469,7 +517,7 @@ QtGroupingProxy::mapFromSource( const QModelIndex &amp;idx ) const
             // if the proxy item is not in a group it will be below the groups.
             int groupLength = m_groupMaps.count();
             //qDebug() &lt;&lt; &quot;groupNames length: &quot; &lt;&lt; groupLength;
-            int i = m_groupHash.values( -1 ).indexOf( sourceRow );
+            int i = m_groupHash.value( -1 ).indexOf( sourceRow );
             //qDebug() &lt;&lt; &quot;index in hash: &quot; &lt;&lt; i;
             proxyRow = groupLength + i;
         }
@@ -493,7 +541,7 @@ QtGroupingProxy::flags( const QModelIndex &amp;idx ) const
         bool groupIsEditable = true;
 
         //it&apos;s possible to have empty groups
-        if( m_groupHash.count( idx.row() ) == 0 )
+        if( m_groupHash.value( idx.row() ).count() == 0 )
         {
             //check the flags of this column with the root node
             QModelIndex originalRootNode = m_model-&gt;index( m_rootNode.row(), m_groupedColumn,
@@ -502,7 +550,7 @@ QtGroupingProxy::flags( const QModelIndex &amp;idx ) const
         }
         else
         {
-            foreach( int originalRow, m_groupHash.values( idx.row() ) )
+            foreach( int originalRow, m_groupHash.value( idx.row() ) )
             {
                 QModelIndex originalIdx = m_model-&gt;index( originalRow, m_groupedColumn,
                                                           m_rootNode );
@@ -564,7 +612,7 @@ QtGroupingProxy::fetchMore ( const QModelIndex &amp; parent )
 }
 
 QModelIndex
-QtGroupingProxy::addEmptyGroup( const ColumnVariantMap &amp;data )
+QtGroupingProxy::addEmptyGroup( const RowData &amp;data )
 {
     int newRow = m_groupMaps.count();
     beginInsertRows( QModelIndex(), newRow, newRow );
@@ -595,7 +643,7 @@ QtGroupingProxy::hasChildren( const QModelIndex &amp;parent ) const
         return true;
 
     if( isGroup( parent ) )
-        return !m_groupHash.values( parent.row() ).isEmpty();
+        return !m_groupHash.value( parent.row() ).isEmpty();
 
     return m_model-&gt;hasChildren( mapToSource( parent ) );
 }
@@ -611,20 +659,46 @@ QtGroupingProxy::modelDataChanged( const QModelIndex&amp; start, const QModelIndex&amp;
 }
 
 void
-QtGroupingProxy::modelRowsInserted( const QModelIndex&amp; index, int start, int end )
+QtGroupingProxy::modelRowsInserted( const QModelIndex &amp;parent, int start, int end )
 {
-    Q_UNUSED( index )
-    Q_UNUSED( start )
-    Q_UNUSED( end )
-    //TODO: see if new groups have to be created, deleted or adjusted. Try to avoid buildTree()
-    buildTree();
+    if( parent == m_rootNode )
+    {
+        //top level of the model changed, these new rows need to be put in groups
+        for( int modelRow = start; modelRow &lt;= end ; modelRow++ )
+        {
+            QList&lt;int&gt; updatedGroups;
+            updatedGroups &lt;&lt; addSourceRow( m_model-&gt;index( modelRow, m_groupedColumn, m_rootNode ) );
+            foreach( int groupIndex, updatedGroups )
+            {
+                QModelIndex updatedProxyParent = ( groupIndex == -1 ) ? QModelIndex()
+                    : index( groupIndex, 0 );
+                int insertedProxyRow = m_groupHash[groupIndex].indexOf( modelRow );
+                //non-grouped items are below the groups, so offset the row
+                if( groupIndex == -1 )
+                    insertedProxyRow += m_groupMaps.count();
+
+                beginInsertRows( updatedProxyParent, insertedProxyRow, insertedProxyRow );
+                endInsertRows();
+            }
+        }
+    }
+    else
+    {
+        //a item was added to one of the original index, remap and pass it on
+        QModelIndex proxyParent = mapFromSource( parent );
+        qDebug() &lt;&lt; proxyParent;
+        //TODO: move this to slot connected to rowsAboutToBeInserted()
+        beginInsertRows( proxyParent, start, end );
+        endInsertRows();
+    }
 }
 
 void
-QtGroupingProxy::modelRowsRemoved( const QModelIndex &amp;idx, int start, int end )
+QtGroupingProxy::modelRowsRemoved( const QModelIndex &amp;parent, int start, int end )
 {
-    QModelIndex proxyIndex = mapFromSource( idx );
-    beginRemoveRows( proxyIndex, start, end );
+    QModelIndex proxyParent = mapFromSource( parent );
+    //TODO: move this to slot connected to rowsAboutToBeRemoved()
+    beginRemoveRows( proxyParent, start, end );
     endRemoveRows();
 }
 
@@ -640,7 +714,7 @@ QtGroupingProxy::slotRenameGroup()
     const QString newName = QInputDialog::getText( 0, tr(&quot;New name&quot;),
                 tr(&quot;Enter a new name for a group that already exists&quot;, &quot;Enter new group name:&quot;) );
 
-    foreach( int originalRow, m_groupHash.values( m_selectedGroups.first().row() ) )
+    foreach( int originalRow, m_groupHash.value( m_selectedGroups.first().row() ) )
     {
         QModelIndex index = m_model-&gt;index( originalRow, 0, QModelIndex() );
         QStringList groups;
@@ -668,12 +742,11 @@ QtGroupingProxy::dumpGroups() const
     qDebug() &lt;&lt; &quot;m_groupHash: &quot;;
     for( int groupIndex = -1; groupIndex &lt; m_groupHash.keys().count() - 1; groupIndex++ )
     {
-        qDebug() &lt;&lt; groupIndex &lt;&lt; &quot; : &quot; &lt;&lt; m_groupHash.values( groupIndex );
+        qDebug() &lt;&lt; groupIndex &lt;&lt; &quot; : &quot; &lt;&lt; m_groupHash.value( groupIndex );
     }
 
     qDebug() &lt;&lt; &quot;m_groupMaps: &quot;;
     for( int groupIndex = 0; groupIndex &lt; m_groupMaps.count(); groupIndex++ )
-        qDebug() &lt;&lt; m_groupMaps[groupIndex] &lt;&lt; &quot;: &quot; &lt;&lt; m_groupHash.values( groupIndex );
-    qDebug() &lt;&lt; m_groupHash.values( -1 );
+        qDebug() &lt;&lt; m_groupMaps[groupIndex] &lt;&lt; &quot;: &quot; &lt;&lt; m_groupHash.value( groupIndex );
+    qDebug() &lt;&lt; m_groupHash.value( -1 );
 }
-//#include &quot;GroupingProxy.moc&quot;
diff --git a/src/browsers/playlistbrowser/QtGroupingProxy.h b/src/browsers/playlistbrowser/QtGroupingProxy.h
index 0c0006b..b7fd9ff 100644
--- a/src/browsers/playlistbrowser/QtGroupingProxy.h
+++ b/src/browsers/playlistbrowser/QtGroupingProxy.h
@@ -23,8 +23,8 @@
 #include &lt;QStringList&gt;
 #include &lt;QIcon&gt;
 
-typedef QMap&lt;int, QVariant&gt; RoleVariantMap;
-typedef QMap&lt;int, RoleVariantMap&gt; ColumnVariantMap;
+typedef QMap&lt;int, QVariant&gt; IndexData;
+typedef QMap&lt;int, IndexData&gt; RowData;
 
 
 class QtGroupingProxy : public QAbstractProxyModel
@@ -57,7 +57,7 @@ class QtGroupingProxy : public QAbstractProxyModel
         virtual bool hasChildren( const QModelIndex &amp;parent = QModelIndex() ) const;
 
         /* QtGroupingProxy methods */
-        virtual QModelIndex addEmptyGroup( const ColumnVariantMap &amp;data );
+        virtual QModelIndex addEmptyGroup( const RowData &amp;data );
         virtual bool removeGroup( const QModelIndex &amp;idx );
 
     protected slots:
@@ -79,18 +79,31 @@ class QtGroupingProxy : public QAbstractProxyModel
           * This data prepolulates the group-data cache. The rest is gathered on demand
           * from the children of the group.
           */
-        virtual QList&lt;ColumnVariantMap&gt; belongsTo( const QModelIndex &amp;idx );
+        virtual QList&lt;RowData&gt; belongsTo( const QModelIndex &amp;idx );
+
+        /**
+          * calls belongsTo(), checks cached data and adds the index to existing or new groups.
+          * @returns the groups this index was added to where -1 means it was added to the root.
+          */
+        QList&lt;int&gt; addSourceRow( const QModelIndex &amp;idx );
         
         bool isGroup( const QModelIndex &amp;index ) const;
         bool isAGroupSelected( const QModelIndexList&amp; list ) const;
 
         QAbstractItemModel *m_model;
 
-        QMultiHash&lt;quint32, int&gt; m_groupHash;
-        QList&lt;ColumnVariantMap&gt; m_groupMaps;
+        /** Maintains the group -&gt; sourcemodel row mapping
+          * The reason a QList&lt;int&gt; is use instead of a QMultiHash is that the values have to be
+          * reordered when new rows are inserted.
+          */
+        QHash&lt;quint32, QList&lt;int&gt; &gt; m_groupHash;
+        /** The data cache of the groups.
+          * This can be pre-loaded with data in belongsTo()
+          */
+        QList&lt;RowData&gt; m_groupMaps;
 
         /** &quot;instuctions&quot; how to create an item in the tree.
-        This is used by parent( QModelIndex )
+          * This is used by parent( QModelIndex )
         */
         struct ParentCreate
         {
diff --git a/src/browsers/playlistbrowser/UserPlaylistModel.cpp b/src/browsers/playlistbrowser/UserPlaylistModel.cpp
index 2178d27..9f00c0c 100644
--- a/src/browsers/playlistbrowser/UserPlaylistModel.cpp
+++ b/src/browsers/playlistbrowser/UserPlaylistModel.cpp
@@ -184,10 +184,8 @@ PlaylistBrowserNS::UserModel::dropMimeData ( const QMimeData *data, Qt::DropActi
         if( playlist )
         {
             int insertAt = (row == -1) ? playlist-&gt;tracks().count() : row;
-            beginInsertRows( parent, insertAt, dragList-&gt;tracks().count() );
             foreach( Meta::TrackPtr track, dragList-&gt;tracks() )
                 playlist-&gt;addTrack( track, insertAt++ );
-            endInsertRows();
         }
         return !playlist.isNull();
     }
diff --git a/src/playlistmanager/PlaylistManager.cpp b/src/playlistmanager/PlaylistManager.cpp
index fb13ea7..32faa30 100644
--- a/src/playlistmanager/PlaylistManager.cpp
+++ b/src/playlistmanager/PlaylistManager.cpp
@@ -112,6 +112,9 @@ PlaylistManager::addProvider( Playlists::PlaylistProvider *provider, int categor
     if( !m_providerMap.uniqueKeys().contains( category ) )
             newCategory = true;
 
+    //disconnect all signals connected to this object to be sure.
+    provider-&gt;disconnect( this, 0 );
+
     m_providerMap.insert( category, provider );
     connect( provider, SIGNAL(updated()), SLOT(slotUpdated()));
     connect( provider, SIGNAL(playlistAdded( Playlists::PlaylistPtr )),
@@ -141,17 +144,22 @@ PlaylistManager::addPlaylist( Playlists::PlaylistPtr playlist, int category )
     if( shouldBeSynced( playlist ) )
     {
         SyncedPlaylistPtr syncedPlaylist = m_syncRelStore-&gt;asSyncedPlaylist( playlist );
+        Playlists::PlaylistPtr syncedPlaylistPtr =
+                Playlists::PlaylistPtr::dynamicCast( syncedPlaylist );
         m_syncedPlaylistMap.insert( syncedPlaylist, playlist );
         if( !m_playlistMap.values( category ).contains(
-                Playlists::PlaylistPtr::dynamicCast( syncedPlaylist ) ) )
+                Playlists::PlaylistPtr::dynamicCast( syncedPlaylistPtr ) ) )
         {
-            m_playlistMap.insert( category,
-                                  Playlists::PlaylistPtr::dynamicCast( syncedPlaylist ) );
+            m_playlistMap.insert( category, syncedPlaylistPtr );
+            //reemit so models know about new playlist in their category
+            emit playlistAdded( syncedPlaylistPtr, category );
         }
     }
     else
     {
         m_playlistMap.insert( category, playlist );
+        //reemit so models know about new playlist in their category
+        emit playlistAdded( playlist, category );
     }
 }
 
@@ -219,7 +227,6 @@ void
 PlaylistManager::slotPlaylistAdded( Playlists::PlaylistPtr playlist )
 {
     addPlaylist( playlist, playlist-&gt;provider()-&gt;category() );
-    emit updated();
 }
 
 void
diff --git a/src/playlistmanager/PlaylistManager.h b/src/playlistmanager/PlaylistManager.h
index 943fcf1..8eaa0e1 100644
--- a/src/playlistmanager/PlaylistManager.h
+++ b/src/playlistmanager/PlaylistManager.h
@@ -144,6 +144,8 @@ class AMAROK_EXPORT PlaylistManager : public QObject
         void categoryAdded( int category );
         void providerAdded( Playlists::PlaylistProvider *provider, int category );
         void providerRemoved( Playlists::PlaylistProvider *provider, int category );
+        void playlistAdded( Playlists::PlaylistPtr playlist, int category );
+        void playlistRemoved( Playlists::PlaylistPtr playlist, int category );
 
         void renamePlaylist( Playlists::PlaylistPtr playlist );
 
diff --git a/src/playlistmanager/sql/SqlPlaylistGroup.h b/src/playlistmanager/sql/SqlPlaylistGroup.h
index d93e683..0e68c57 100644
--- a/src/playlistmanager/sql/SqlPlaylistGroup.h
+++ b/src/playlistmanager/sql/SqlPlaylistGroup.h
@@ -61,6 +61,10 @@ namespace Playlists
             SqlPlaylistGroupList allChildGroups() const;
             SqlPlaylistList allChildPlaylists() const;
 
+            //transitional: this class is deprecated but we do need access to the children until
+            //the database changes to using labels for playlist groups.
+            friend class SqlUserPlaylistProvider;
+
         private:
             SqlPlaylistGroupList childSqlGroups() const;
             SqlPlaylistList childSqlPlaylists() const;
diff --git a/src/playlistmanager/sql/SqlUserPlaylistProvider.cpp b/src/playlistmanager/sql/SqlUserPlaylistProvider.cpp
index a899843..f4c4262 100644
--- a/src/playlistmanager/sql/SqlUserPlaylistProvider.cpp
+++ b/src/playlistmanager/sql/SqlUserPlaylistProvider.cpp
@@ -261,10 +261,11 @@ SqlUserPlaylistProvider::deleteSqlPlaylists( Playlists::SqlPlaylistList playlist
         if( sqlPlaylist )
         {
             debug() &lt;&lt; &quot;deleting &quot; &lt;&lt; sqlPlaylist-&gt;name();
+            m_root-&gt;m_childPlaylists.removeAll( sqlPlaylist );
+            emit playlistRemoved( Playlists::PlaylistPtr::dynamicCast( sqlPlaylist ) );
             sqlPlaylist-&gt;removeFromDb();
         }
     }
-    reloadFromDb();
 
     return true;
 }
@@ -287,9 +288,12 @@ SqlUserPlaylistProvider::save( const Meta::TrackList &amp;tracks, const QString&amp; nam
                 Playlists::SqlPlaylistGroupPtr(),
                 this )
             );
-    reloadFromDb();
+    m_root-&gt;m_childPlaylists &lt;&lt; sqlPlaylist;
+    Playlists::PlaylistPtr playlist = Playlists::PlaylistPtr::dynamicCast( sqlPlaylist );
+
+    emit playlistAdded( playlist );
 
-    return Playlists::PlaylistPtr::dynamicCast( sqlPlaylist ); //assumes insertion in db was successful!
+    return playlist; //assumes insertion in db was successful!
 }
 
 bool
diff --git a/src/playlistmanager/sql/SqlUserPlaylistProvider.h b/src/playlistmanager/sql/SqlUserPlaylistProvider.h
index 3a5a62e..ee48b24 100644
--- a/src/playlistmanager/sql/SqlUserPlaylistProvider.h
+++ b/src/playlistmanager/sql/SqlUserPlaylistProvider.h
@@ -66,6 +66,11 @@ class AMAROK_EXPORT SqlUserPlaylistProvider : public UserPlaylistProvider
 
         static Playlists::SqlPlaylistList toSqlPlaylists( Playlists::PlaylistList playlists );
 
+    signals:
+        void updated();
+        void playlistAdded( Playlists::PlaylistPtr playlist );
+        void playlistRemoved( Playlists::PlaylistPtr playlist );
+
     private slots:
         void slotDelete();
         void slotRename();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055611</commentid>
    <comment_count>18</comment_count>
    <who name="Myriam Schweingruber">myriam</who>
    <bug_when>2010-12-09 00:50:12 +0000</bug_when>
    <thetext>I can&apos;t reproduce this anymore with 2.4-git. Mathias, could you test again, please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055622</commentid>
    <comment_count>19</comment_count>
    <who name="Mathias Panzenböck">grosser.meister.morti</who>
    <bug_when>2010-12-09 01:13:57 +0000</bug_when>
    <thetext>I can&apos;t reproduce the crash with current git anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055625</commentid>
    <comment_count>20</comment_count>
    <who name="Myriam Schweingruber">myriam</who>
    <bug_when>2010-12-09 01:17:21 +0000</bug_when>
    <thetext>Nice, thank you for your fast feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055853</commentid>
    <comment_count>21</comment_count>
    <who name="Myriam Schweingruber">myriam</who>
    <bug_when>2010-12-09 15:24:38 +0000</bug_when>
    <thetext>*** Bug 259301 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088572</commentid>
    <comment_count>22</comment_count>
    <who name="Myriam Schweingruber">myriam</who>
    <bug_when>2011-02-16 19:33:43 +0000</bug_when>
    <thetext>*** Bug 266117 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146319</commentid>
    <comment_count>23</comment_count>
      <attachid>62258</attachid>
    <who name="">gegen.nazi</who>
    <bug_when>2011-07-28 02:43:51 +0000</bug_when>
    <thetext>Created attachment 62258
New crash information added by DrKonqi

amarok (2.3.2) on KDE Platform 4.5.3 (KDE 4.5.3) using Qt 4.7.0

i subscribed to a podcast and after opening the local podcast list amarok crashes

-- Backtrace (Reduced):
#7  QModelIndex (this=0x8a0f778, child=...) at ../../include/QtCore/../../src/corelib/kernel/qabstractitemmodel.h:65
#8  QSortFilterProxyModel::parent (this=0x8a0f778, child=...) at itemviews/qsortfilterproxymodel.cpp:1656
#9  0x06e3d3e2 in QModelIndex::parent (this=0x8a3c718, index=...) at ../../include/QtCore/../../src/corelib/kernel/qabstractitemmodel.h:389
#10 QTreeView::indexRowSizeHint (this=0x8a3c718, index=...) at itemviews/qtreeview.cpp:2758
#11 0x06e3dc1b in QTreeViewPrivate::itemHeight (this=0x8a1e940, item=2) at itemviews/qtreeview.cpp:3229</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202801</commentid>
    <comment_count>24</comment_count>
    <who name="Myriam Schweingruber">myriam</who>
    <bug_when>2011-12-20 23:48:08 +0000</bug_when>
    <thetext>*** Bug 289452 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202804</commentid>
    <comment_count>25</comment_count>
    <who name="Myriam Schweingruber">myriam</who>
    <bug_when>2011-12-20 23:49:10 +0000</bug_when>
    <thetext>Reopening based on bug 289452</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202944</commentid>
    <comment_count>26</comment_count>
    <who name="Bart Cerneels">bart.cerneels</who>
    <bug_when>2011-12-21 09:48:49 +0000</bug_when>
    <thetext>Was this bug actually reproduced with 2.5?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203365</commentid>
    <comment_count>27</comment_count>
    <who name="Myriam Schweingruber">myriam</who>
    <bug_when>2011-12-22 01:50:35 +0000</bug_when>
    <thetext>Bart: it was reproduced with 2.4.3 where it was supposed to be fixed already since version 2.4.0, reason why I reopened it and asked the reporter to test with Amarok 2.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317639</commentid>
    <comment_count>28</comment_count>
    <who name="Myriam Schweingruber">myriam</who>
    <bug_when>2012-11-22 23:21:40 +0000</bug_when>
    <thetext>*** Bug 310532 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317640</commentid>
    <comment_count>29</comment_count>
    <who name="Myriam Schweingruber">myriam</who>
    <bug_when>2012-11-22 23:23:09 +0000</bug_when>
    <thetext>Reopening, reproducible in 2.6, see also bug 310532</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332317</commentid>
    <comment_count>30</comment_count>
    <who name="Matěj Laitl">matej</who>
    <bug_when>2013-01-15 16:12:38 +0000</bug_when>
    <thetext>While this is a nasty bug, recent efforts and Bart&apos;s commits reduced its probability, plus it hopefully no longer appears spontaneously. Additionally, I only get this crash on Amarok exit, which is not that severe IMO. Removing release_blocker so that we can release 2.7.

There&apos;s also a question whether this is a regression, IMO this was just never fixed from the point it was reported.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372938</commentid>
    <comment_count>31</comment_count>
    <who name="Myriam Schweingruber">myriam</who>
    <bug_when>2013-05-31 23:36:27 +0000</bug_when>
    <thetext>This should now be fixed, especially after these commits:

http://commits.kde.org/amarok/fcb69ca30692266c6be4a8dccf26094d0962753b
http://commits.kde.org/amarok/d3982dc6c2fa2953c37d4864bca61e73aff19a52</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>52959</attachid>
            <date>2010-10-29 00:47:55 +0000</date>
            <delta_ts>2010-10-29 00:47:55 +0000</delta_ts>
            <desc>New crash information added by DrKonqi</desc>
            <filename>drkonqireport</filename>
            <type>text/plain</type>
            <size>20107</size>
            <attacher name="Mathias Panzenböck">grosser.meister.morti</attacher>
            
              <data encoding="base64">QXBwbGljYXRpb246IGFtYXJvayAoMi40LUdJVCkKS0RFIFBsYXRmb3JtIFZlcnNpb246IDQuNC41
IChLREUgNC40LjUpClF0IFZlcnNpb246IDQuNi4zCk9wZXJhdGluZyBTeXN0ZW06IExpbnV4IDIu
Ni4zMi4yMS0xNjguZmMxMi54ODZfNjQgeDg2XzY0CkRpc3RyaWJ1dGlvbjogIkZlZG9yYSByZWxl
YXNlIDEyIChDb25zdGFudGluZSkiCgotLSBJbmZvcm1hdGlvbiBhYm91dCB0aGUgY3Jhc2g6Clll
dCBhbm90aGVyIGNyYXNoLiBUaGlzIHRpbWUgaXQgb2NjdXJlZCB3aGVuIEkgY2xpY2tlZCAiZG93
bmxvYWQiIG9mIGFuIGVwaXNvZGUuCgpUaGUgY3Jhc2ggY2FuIGJlIHJlcHJvZHVjZWQgc29tZSBv
ZiB0aGUgdGltZS4KCiAtLSBCYWNrdHJhY2U6CkFwcGxpY2F0aW9uOiBBbWFyb2sgKGFtYXJvayks
IHNpZ25hbDogU2VnbWVudGF0aW9uIGZhdWx0CjgyCVRfUFNFVURPIChTWVNDQUxMX1NZTUJPTCwg
U1lTQ0FMTF9OQU1FLCBTWVNDQUxMX05BUkdTKQpbQ3VycmVudCB0aHJlYWQgaXMgMSAoVGhyZWFk
IDB4N2YxZDdhMmE2ODgwIChMV1AgNDU5NikpXQoKVGhyZWFkIDE4IChUaHJlYWQgMHg3ZjFkNTlk
NDc3MTAgKExXUCA0NTk3KSk6CiMwICBwdGhyZWFkX2NvbmRfdGltZWR3YWl0QEBHTElCQ18yLjMu
MiAoKSBhdCAuLi9ucHRsL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3g4Nl82NC9wdGhyZWFkX2Nv
bmRfdGltZWR3YWl0LlM6MjExCiMxICAweDAwMDA3ZjFkNjJhNTY2MzEgaW4gPz8gKCkgZnJvbSAv
dXNyL2xpYjY0L2xpYnhpbmUuc28uMQojMiAgMHgwMDAwN2YxZDc2NTkzYTNhIGluIHN0YXJ0X3Ro
cmVhZCAoYXJnPTB4N2YxZDU5ZDQ3NzEwKSBhdCBwdGhyZWFkX2NyZWF0ZS5jOjI5NwojMyAgMHgw
MDAwN2YxZDc3MmE3NzdkIGluIGNsb25lICgpIGF0IC4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4
L3g4Nl82NC9jbG9uZS5TOjExMgojNCAgMHgwMDAwMDAwMDAwMDAwMDAwIGluID8/ICgpCgpUaHJl
YWQgMTcgKFRocmVhZCAweDdmMWQ1OTM0NjcxMCAoTFdQIDQ1OTgpKToKIzAgIDB4MDAwMDdmZmYx
NzVmZjk3OSBpbiA/PyAoKQojMSAgMHgwMDAwN2ZmZjE3NWZmYTM3IGluIGNsb2NrX2dldHRpbWUg
KCkKIzIgIDB4MDAwMDdmMWQ3MzE0NWU0ZiBpbiBjbG9ja19nZXR0aW1lIChjbG9ja19pZD0xLCB0
cD0weDdmMWQ1OTM0NWExMCkgYXQgLi4vc3lzZGVwcy91bml4L2Nsb2NrX2dldHRpbWUuYzoxMDAK
IzMgIDB4MDAwMDdmMWQ3ODgwMmE3ZiBpbiBxdF9nZXR0aW1lICgpIGF0IGtlcm5lbC9xY29yZV91
bml4LmNwcDoxMTEKIzQgIDB4MDAwMDdmMWQ3ODgwNmM2ZCBpbiBRVGltZXJJbmZvTGlzdDo6dXBk
YXRlQ3VycmVudFRpbWUgKHRoaXM9MHg3ZjFkNTQwMDIwNjApIGF0IGtlcm5lbC9xZXZlbnRkaXNw
YXRjaGVyX3VuaXguY3BwOjM0MAojNSAgMHgwMDAwN2YxZDc4ODA2Yzk1IGluIFFUaW1lckluZm9M
aXN0Ojp0aW1lcldhaXQgKHRoaXM9MHg3ZjFkNTQwMDIwNjAsIHRtPS4uLikgYXQga2VybmVsL3Fl
dmVudGRpc3BhdGNoZXJfdW5peC5jcHA6NDQzCiM2ICAweDAwMDA3ZjFkNzg4MDU2M2QgaW4gdGlt
ZXJTb3VyY2VQcmVwYXJlSGVscGVyIChzcmM9PHZhbHVlIG9wdGltaXplZCBvdXQ+LCB0aW1lb3V0
PTB4N2YxZDU5MzQ1YjBjKSBhdCBrZXJuZWwvcWV2ZW50ZGlzcGF0Y2hlcl9nbGliLmNwcDoxMzYK
IzcgIDB4MDAwMDAwMzE2ZDAzYzQ0YSBpbiBJQV9fZ19tYWluX2NvbnRleHRfcHJlcGFyZSAoY29u
dGV4dD0weDdmMWQ1NDAwMDliMCwgcHJpb3JpdHk9PHZhbHVlIG9wdGltaXplZCBvdXQ+KSBhdCBn
bWFpbi5jOjIyODAKIzggIDB4MDAwMDAwMzE2ZDAzYzgyMSBpbiBnX21haW5fY29udGV4dF9pdGVy
YXRlIChjb250ZXh0PTB4N2YxZDU0MDAwOWIwLCBibG9jaz08dmFsdWUgb3B0aW1pemVkIG91dD4s
IGRpc3BhdGNoPTx2YWx1ZSBvcHRpbWl6ZWQgb3V0Piwgc2VsZj08dmFsdWUgb3B0aW1pemVkIG91
dD4pIGF0IGdtYWluLmM6MjU3MQojOSAgMHgwMDAwMDAzMTZkMDNjZDRhIGluIElBX19nX21haW5f
Y29udGV4dF9pdGVyYXRpb24gKGNvbnRleHQ9MHg3ZjFkNTQwMDA5YjAsIG1heV9ibG9jaz0xKSBh
dCBnbWFpbi5jOjI2NTQKIzEwIDB4MDAwMDdmMWQ3ODgwNTQ0NiBpbiBRRXZlbnREaXNwYXRjaGVy
R2xpYjo6cHJvY2Vzc0V2ZW50cyAodGhpcz0weDdmMWQ1NDAwMDhjMCwgZmxhZ3M9PHZhbHVlIG9w
dGltaXplZCBvdXQ+KSBhdCBrZXJuZWwvcWV2ZW50ZGlzcGF0Y2hlcl9nbGliLmNwcDo0MTQKIzEx
IDB4MDAwMDdmMWQ3ODdkZTQxMiBpbiBRRXZlbnRMb29wOjpwcm9jZXNzRXZlbnRzICh0aGlzPTx2
YWx1ZSBvcHRpbWl6ZWQgb3V0PiwgZmxhZ3M9Li4uKSBhdCBrZXJuZWwvcWV2ZW50bG9vcC5jcHA6
MTQ5CiMxMiAweDAwMDA3ZjFkNzg3ZGU2ZGMgaW4gUUV2ZW50TG9vcDo6ZXhlYyAodGhpcz0weDdm
MWQ1OTM0NWNhMCwgZmxhZ3M9Li4uKSBhdCBrZXJuZWwvcWV2ZW50bG9vcC5jcHA6MjAxCiMxMyAw
eDAwMDA3ZjFkNzg2ZmIwNmIgaW4gUVRocmVhZDo6ZXhlYyAodGhpcz08dmFsdWUgb3B0aW1pemVk
IG91dD4pIGF0IHRocmVhZC9xdGhyZWFkLmNwcDo0ODcKIzE0IDB4MDAwMDdmMWQ2MmNiMWIzMCBp
biBQaG9ub246OlhpbmU6OlhpbmVUaHJlYWQ6OnJ1biAodGhpcz0weGUxYzc1MCkgYXQgL3Vzci9z
cmMvZGVidWcvcGhvbm9uLTQuNC4yL3hpbmUveGluZXRocmVhZC5jcHA6MTQzCiMxNSAweDAwMDA3
ZjFkNzg2ZmQxYjUgaW4gUVRocmVhZFByaXZhdGU6OnN0YXJ0IChhcmc9MHhlMWM3NTApIGF0IHRo
cmVhZC9xdGhyZWFkX3VuaXguY3BwOjI0OAojMTYgMHgwMDAwN2YxZDc2NTkzYTNhIGluIHN0YXJ0
X3RocmVhZCAoYXJnPTB4N2YxZDU5MzQ2NzEwKSBhdCBwdGhyZWFkX2NyZWF0ZS5jOjI5NwojMTcg
MHgwMDAwN2YxZDc3MmE3NzdkIGluIGNsb25lICgpIGF0IC4uL3N5c2RlcHMvdW5peC9zeXN2L2xp
bnV4L3g4Nl82NC9jbG9uZS5TOjExMgojMTggMHgwMDAwMDAwMDAwMDAwMDAwIGluID8/ICgpCgpU
aHJlYWQgMTYgKFRocmVhZCAweDdmMWQ1M2ZmZjcxMCAoTFdQIDQ1OTkpKToKIzAgIDB4MDAwMDdm
MWQ3NzI5ZTM1MyBpbiBfX3BvbGwgKGZkcz08dmFsdWUgb3B0aW1pemVkIG91dD4sIG5mZHM9PHZh
bHVlIG9wdGltaXplZCBvdXQ+LCB0aW1lb3V0PTx2YWx1ZSBvcHRpbWl6ZWQgb3V0PikgYXQgLi4v
c3lzZGVwcy91bml4L3N5c3YvbGludXgvcG9sbC5jOjg3CiMxICAweDAwMDAwMDMxODFlMmM3M2Yg
aW4gPz8gKCkgZnJvbSAvdXNyL2xpYjY0L2xpYnB1bHNlLnNvLjAKIzIgIDB4MDAwMDAwMzE4MWUx
Y2FlNiBpbiBwYV9tYWlubG9vcF9wb2xsICgpIGZyb20gL3Vzci9saWI2NC9saWJwdWxzZS5zby4w
CiMzICAweDAwMDAwMDMxODFlMWRlYTkgaW4gcGFfbWFpbmxvb3BfaXRlcmF0ZSAoKSBmcm9tIC91
c3IvbGliNjQvbGlicHVsc2Uuc28uMAojNCAgMHgwMDAwMDAzMTgxZTFkZjYwIGluIHBhX21haW5s
b29wX3J1biAoKSBmcm9tIC91c3IvbGliNjQvbGlicHVsc2Uuc28uMAojNSAgMHgwMDAwMDAzMTgx
ZTJjNjRiIGluID8/ICgpIGZyb20gL3Vzci9saWI2NC9saWJwdWxzZS5zby4wCiM2ICAweDAwMDAw
MDMxODE2Mzg4MzggaW4gPz8gKCkgZnJvbSAvdXNyL2xpYjY0L2xpYnB1bHNlY29tbW9uLTAuOS4y
MS5zbwojNyAgMHgwMDAwN2YxZDc2NTkzYTNhIGluIHN0YXJ0X3RocmVhZCAoYXJnPTB4N2YxZDUz
ZmZmNzEwKSBhdCBwdGhyZWFkX2NyZWF0ZS5jOjI5NwojOCAgMHgwMDAwN2YxZDc3MmE3NzdkIGlu
IGNsb25lICgpIGF0IC4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3g4Nl82NC9jbG9uZS5TOjEx
MgojOSAgMHgwMDAwMDAwMDAwMDAwMDAwIGluID8/ICgpCgpUaHJlYWQgMTUgKFRocmVhZCAweDdm
MWQ0ZjVmZDcxMCAoTFdQIDQ2MDApKToKIzAgIDB4MDAwMDdmMWQ3NzJhMDU1MyBpbiBzZWxlY3Qg
KCkgYXQgLi4vc3lzZGVwcy91bml4L3N5c2NhbGwtdGVtcGxhdGUuUzo4MgojMSAgMHgwMDAwN2Yx
ZDYyYTdlOTI1IGluIHhpbmVfdXNlY19zbGVlcCAoKSBmcm9tIC91c3IvbGliNjQvbGlieGluZS5z
by4xCiMyICAweDAwMDA3ZjFkNjJhNjZkODIgaW4gPz8gKCkgZnJvbSAvdXNyL2xpYjY0L2xpYnhp
bmUuc28uMQojMyAgMHgwMDAwN2YxZDc2NTkzYTNhIGluIHN0YXJ0X3RocmVhZCAoYXJnPTB4N2Yx
ZDRmNWZkNzEwKSBhdCBwdGhyZWFkX2NyZWF0ZS5jOjI5NwojNCAgMHgwMDAwN2YxZDc3MmE3Nzdk
IGluIGNsb25lICgpIGF0IC4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3g4Nl82NC9jbG9uZS5T
OjExMgojNSAgMHgwMDAwMDAwMDAwMDAwMDAwIGluID8/ICgpCgpUaHJlYWQgMTQgKFRocmVhZCAw
eDdmMWQ0ZTlmNTcxMCAoTFdQIDQ2MDEpKToKIzAgIHB0aHJlYWRfY29uZF93YWl0QEBHTElCQ18y
LjMuMiAoKSBhdCAuLi9ucHRsL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3g4Nl82NC9wdGhyZWFk
X2NvbmRfd2FpdC5TOjE2MgojMSAgMHgwMDAwN2YxZDYyYTY3M2UzIGluID8/ICgpIGZyb20gL3Vz
ci9saWI2NC9saWJ4aW5lLnNvLjEKIzIgIDB4MDAwMDdmMWQ3NjU5M2EzYSBpbiBzdGFydF90aHJl
YWQgKGFyZz0weDdmMWQ0ZTlmNTcxMCkgYXQgcHRocmVhZF9jcmVhdGUuYzoyOTcKIzMgIDB4MDAw
MDdmMWQ3NzJhNzc3ZCBpbiBjbG9uZSAoKSBhdCAuLi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC94
ODZfNjQvY2xvbmUuUzoxMTIKIzQgIDB4MDAwMDAwMDAwMDAwMDAwMCBpbiA/PyAoKQoKVGhyZWFk
IDEzIChUaHJlYWQgMHg3ZjFkNGRmZjQ3MTAgKExXUCA0NjAyKSk6CiMwICBwdGhyZWFkX2NvbmRf
d2FpdEBAR0xJQkNfMi4zLjIgKCkgYXQgLi4vbnB0bC9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC94
ODZfNjQvcHRocmVhZF9jb25kX3dhaXQuUzoxNjIKIzEgIDB4MDAwMDdmMWQ2MmE2NzNlMyBpbiA/
PyAoKSBmcm9tIC91c3IvbGliNjQvbGlieGluZS5zby4xCiMyICAweDAwMDA3ZjFkNzY1OTNhM2Eg
aW4gc3RhcnRfdGhyZWFkIChhcmc9MHg3ZjFkNGRmZjQ3MTApIGF0IHB0aHJlYWRfY3JlYXRlLmM6
Mjk3CiMzICAweDAwMDA3ZjFkNzcyYTc3N2QgaW4gY2xvbmUgKCkgYXQgLi4vc3lzZGVwcy91bml4
L3N5c3YvbGludXgveDg2XzY0L2Nsb25lLlM6MTEyCiM0ICAweDAwMDAwMDAwMDAwMDAwMDAgaW4g
Pz8gKCkKClRocmVhZCAxMiAoVGhyZWFkIDB4N2YxZDQ3ZmZmNzEwIChMV1AgNDY0MikpOgojMCAg
cHRocmVhZF9jb25kX3dhaXRAQEdMSUJDXzIuMy4yICgpIGF0IC4uL25wdGwvc3lzZGVwcy91bml4
L3N5c3YvbGludXgveDg2XzY0L3B0aHJlYWRfY29uZF93YWl0LlM6MTYyCiMxICAweDAwMDA3ZjFk
Nzg2ZmUxM2IgaW4gd2FpdCAodGhpcz08dmFsdWUgb3B0aW1pemVkIG91dD4sIG11dGV4PTB4MzZh
OTVlMCwgdGltZT0xODQ0Njc0NDA3MzcwOTU1MTYxNSkgYXQgdGhyZWFkL3F3YWl0Y29uZGl0aW9u
X3VuaXguY3BwOjg3CiMyICBRV2FpdENvbmRpdGlvbjo6d2FpdCAodGhpcz08dmFsdWUgb3B0aW1p
emVkIG91dD4sIG11dGV4PTB4MzZhOTVlMCwgdGltZT0xODQ0Njc0NDA3MzcwOTU1MTYxNSkgYXQg
dGhyZWFkL3F3YWl0Y29uZGl0aW9uX3VuaXguY3BwOjE1OQojMyAgMHgwMDAwN2YxZDc0ZDk2Zjg2
IGluIFRocmVhZFdlYXZlcjo6V2VhdmVySW1wbDo6YmxvY2tUaHJlYWRVbnRpbEpvYnNBcmVCZWlu
Z0Fzc2lnbmVkICh0aGlzPTB4MzZhNzdhMCwgdGg9MHgzNmE4MzAwKSBhdCAvdXNyL3NyYy9kZWJ1
Zy9rZGVsaWJzLTQuNC41L3RocmVhZHdlYXZlci9XZWF2ZXIvV2VhdmVySW1wbC5jcHA6MzY1CiM0
ICAweDAwMDA3ZjFkNzRkOTk0YWIgaW4gVGhyZWFkV2VhdmVyOjpXb3JraW5nSGFyZFN0YXRlOjph
cHBseUZvcldvcmsgKHRoaXM9MHgyMGExYjAwLCB0aD0weDM2YTgzMDApIGF0IC91c3Ivc3JjL2Rl
YnVnL2tkZWxpYnMtNC40LjUvdGhyZWFkd2VhdmVyL1dlYXZlci9Xb3JraW5nSGFyZFN0YXRlLmNw
cDo3MQojNSAgMHgwMDAwN2YxZDc0ZDk5NGM0IGluIFRocmVhZFdlYXZlcjo6V29ya2luZ0hhcmRT
dGF0ZTo6YXBwbHlGb3JXb3JrICh0aGlzPTB4MjBhMWIwMCwgdGg9MHgzNmE4MzAwKSBhdCAvdXNy
L3NyYy9kZWJ1Zy9rZGVsaWJzLTQuNC41L3RocmVhZHdlYXZlci9XZWF2ZXIvV29ya2luZ0hhcmRT
dGF0ZS5jcHA6NzQKIzYgIDB4MDAwMDdmMWQ3NGQ5N2U2ZiBpbiBUaHJlYWRXZWF2ZXI6OlRocmVh
ZFJ1bkhlbHBlcjo6cnVuICh0aGlzPTB4N2YxZDQ3ZmZlZDEwLCBwYXJlbnQ9MHgzNmE3N2EwLCB0
aD0weDM2YTgzMDApIGF0IC91c3Ivc3JjL2RlYnVnL2tkZWxpYnMtNC40LjUvdGhyZWFkd2VhdmVy
L1dlYXZlci9UaHJlYWQuY3BwOjg3CiM3ICAweDAwMDA3ZjFkNzRkOTgzNTggaW4gVGhyZWFkV2Vh
dmVyOjpUaHJlYWQ6OnJ1biAodGhpcz0weDM2YTgzMDApIGF0IC91c3Ivc3JjL2RlYnVnL2tkZWxp
YnMtNC40LjUvdGhyZWFkd2VhdmVyL1dlYXZlci9UaHJlYWQuY3BwOjE0MgojOCAgMHgwMDAwN2Yx
ZDc4NmZkMWI1IGluIFFUaHJlYWRQcml2YXRlOjpzdGFydCAoYXJnPTB4MzZhODMwMCkgYXQgdGhy
ZWFkL3F0aHJlYWRfdW5peC5jcHA6MjQ4CiM5ICAweDAwMDA3ZjFkNzY1OTNhM2EgaW4gc3RhcnRf
dGhyZWFkIChhcmc9MHg3ZjFkNDdmZmY3MTApIGF0IHB0aHJlYWRfY3JlYXRlLmM6Mjk3CiMxMCAw
eDAwMDA3ZjFkNzcyYTc3N2QgaW4gY2xvbmUgKCkgYXQgLi4vc3lzZGVwcy91bml4L3N5c3YvbGlu
dXgveDg2XzY0L2Nsb25lLlM6MTEyCiMxMSAweDAwMDAwMDAwMDAwMDAwMDAgaW4gPz8gKCkKClRo
cmVhZCAxMSAoVGhyZWFkIDB4N2YxZDNjZDBhNzEwIChMV1AgNDY0MykpOgojMCAgcHRocmVhZF9j
b25kX3dhaXRAQEdMSUJDXzIuMy4yICgpIGF0IC4uL25wdGwvc3lzZGVwcy91bml4L3N5c3YvbGlu
dXgveDg2XzY0L3B0aHJlYWRfY29uZF93YWl0LlM6MTYyCiMxICAweDAwMDA3ZjFkNzg2ZmUxM2Ig
aW4gd2FpdCAodGhpcz08dmFsdWUgb3B0aW1pemVkIG91dD4sIG11dGV4PTB4MzZhOTVlMCwgdGlt
ZT0xODQ0Njc0NDA3MzcwOTU1MTYxNSkgYXQgdGhyZWFkL3F3YWl0Y29uZGl0aW9uX3VuaXguY3Bw
Ojg3CiMyICBRV2FpdENvbmRpdGlvbjo6d2FpdCAodGhpcz08dmFsdWUgb3B0aW1pemVkIG91dD4s
IG11dGV4PTB4MzZhOTVlMCwgdGltZT0xODQ0Njc0NDA3MzcwOTU1MTYxNSkgYXQgdGhyZWFkL3F3
YWl0Y29uZGl0aW9uX3VuaXguY3BwOjE1OQojMyAgMHgwMDAwN2YxZDc0ZDk2Zjg2IGluIFRocmVh
ZFdlYXZlcjo6V2VhdmVySW1wbDo6YmxvY2tUaHJlYWRVbnRpbEpvYnNBcmVCZWluZ0Fzc2lnbmVk
ICh0aGlzPTB4MzZhNzdhMCwgdGg9MHgyOGU1ZmMwKSBhdCAvdXNyL3NyYy9kZWJ1Zy9rZGVsaWJz
LTQuNC41L3RocmVhZHdlYXZlci9XZWF2ZXIvV2VhdmVySW1wbC5jcHA6MzY1CiM0ICAweDAwMDA3
ZjFkNzRkOTk0YWIgaW4gVGhyZWFkV2VhdmVyOjpXb3JraW5nSGFyZFN0YXRlOjphcHBseUZvcldv
cmsgKHRoaXM9MHgyMGExYjAwLCB0aD0weDI4ZTVmYzApIGF0IC91c3Ivc3JjL2RlYnVnL2tkZWxp
YnMtNC40LjUvdGhyZWFkd2VhdmVyL1dlYXZlci9Xb3JraW5nSGFyZFN0YXRlLmNwcDo3MQojNSAg
MHgwMDAwN2YxZDc0ZDk5NGM0IGluIFRocmVhZFdlYXZlcjo6V29ya2luZ0hhcmRTdGF0ZTo6YXBw
bHlGb3JXb3JrICh0aGlzPTB4MjBhMWIwMCwgdGg9MHgyOGU1ZmMwKSBhdCAvdXNyL3NyYy9kZWJ1
Zy9rZGVsaWJzLTQuNC41L3RocmVhZHdlYXZlci9XZWF2ZXIvV29ya2luZ0hhcmRTdGF0ZS5jcHA6
NzQKIzYgIDB4MDAwMDdmMWQ3NGQ5OTRjNCBpbiBUaHJlYWRXZWF2ZXI6OldvcmtpbmdIYXJkU3Rh
dGU6OmFwcGx5Rm9yV29yayAodGhpcz0weDIwYTFiMDAsIHRoPTB4MjhlNWZjMCkgYXQgL3Vzci9z
cmMvZGVidWcva2RlbGlicy00LjQuNS90aHJlYWR3ZWF2ZXIvV2VhdmVyL1dvcmtpbmdIYXJkU3Rh
dGUuY3BwOjc0CiM3ICAweDAwMDA3ZjFkNzRkOTk0YzQgaW4gVGhyZWFkV2VhdmVyOjpXb3JraW5n
SGFyZFN0YXRlOjphcHBseUZvcldvcmsgKHRoaXM9MHgyMGExYjAwLCB0aD0weDI4ZTVmYzApIGF0
IC91c3Ivc3JjL2RlYnVnL2tkZWxpYnMtNC40LjUvdGhyZWFkd2VhdmVyL1dlYXZlci9Xb3JraW5n
SGFyZFN0YXRlLmNwcDo3NAojOCAgMHgwMDAwN2YxZDc0ZDk5NGM0IGluIFRocmVhZFdlYXZlcjo6
V29ya2luZ0hhcmRTdGF0ZTo6YXBwbHlGb3JXb3JrICh0aGlzPTB4MjBhMWIwMCwgdGg9MHgyOGU1
ZmMwKSBhdCAvdXNyL3NyYy9kZWJ1Zy9rZGVsaWJzLTQuNC41L3RocmVhZHdlYXZlci9XZWF2ZXIv
V29ya2luZ0hhcmRTdGF0ZS5jcHA6NzQKIzkgIDB4MDAwMDdmMWQ3NGQ5N2U2ZiBpbiBUaHJlYWRX
ZWF2ZXI6OlRocmVhZFJ1bkhlbHBlcjo6cnVuICh0aGlzPTB4N2YxZDNjZDA5ZDEwLCBwYXJlbnQ9
MHgzNmE3N2EwLCB0aD0weDI4ZTVmYzApIGF0IC91c3Ivc3JjL2RlYnVnL2tkZWxpYnMtNC40LjUv
dGhyZWFkd2VhdmVyL1dlYXZlci9UaHJlYWQuY3BwOjg3CiMxMCAweDAwMDA3ZjFkNzRkOTgzNTgg
aW4gVGhyZWFkV2VhdmVyOjpUaHJlYWQ6OnJ1biAodGhpcz0weDI4ZTVmYzApIGF0IC91c3Ivc3Jj
L2RlYnVnL2tkZWxpYnMtNC40LjUvdGhyZWFkd2VhdmVyL1dlYXZlci9UaHJlYWQuY3BwOjE0Mgoj
MTEgMHgwMDAwN2YxZDc4NmZkMWI1IGluIFFUaHJlYWRQcml2YXRlOjpzdGFydCAoYXJnPTB4Mjhl
NWZjMCkgYXQgdGhyZWFkL3F0aHJlYWRfdW5peC5jcHA6MjQ4CiMxMiAweDAwMDA3ZjFkNzY1OTNh
M2EgaW4gc3RhcnRfdGhyZWFkIChhcmc9MHg3ZjFkM2NkMGE3MTApIGF0IHB0aHJlYWRfY3JlYXRl
LmM6Mjk3CiMxMyAweDAwMDA3ZjFkNzcyYTc3N2QgaW4gY2xvbmUgKCkgYXQgLi4vc3lzZGVwcy91
bml4L3N5c3YvbGludXgveDg2XzY0L2Nsb25lLlM6MTEyCiMxNCAweDAwMDAwMDAwMDAwMDAwMDAg
aW4gPz8gKCkKClRocmVhZCAxMCAoVGhyZWFkIDB4N2YxZDMzMGVmNzEwIChMV1AgNDY0NCkpOgoj
MCAgcHRocmVhZF9jb25kX3dhaXRAQEdMSUJDXzIuMy4yICgpIGF0IC4uL25wdGwvc3lzZGVwcy91
bml4L3N5c3YvbGludXgveDg2XzY0L3B0aHJlYWRfY29uZF93YWl0LlM6MTYyCiMxICAweDAwMDA3
ZjFkNzg2ZmUxM2IgaW4gd2FpdCAodGhpcz08dmFsdWUgb3B0aW1pemVkIG91dD4sIG11dGV4PTB4
MzZhOTVlMCwgdGltZT0xODQ0Njc0NDA3MzcwOTU1MTYxNSkgYXQgdGhyZWFkL3F3YWl0Y29uZGl0
aW9uX3VuaXguY3BwOjg3CiMyICBRV2FpdENvbmRpdGlvbjo6d2FpdCAodGhpcz08dmFsdWUgb3B0
aW1pemVkIG91dD4sIG11dGV4PTB4MzZhOTVlMCwgdGltZT0xODQ0Njc0NDA3MzcwOTU1MTYxNSkg
YXQgdGhyZWFkL3F3YWl0Y29uZGl0aW9uX3VuaXguY3BwOjE1OQojMyAgMHgwMDAwN2YxZDc0ZDk2
Zjg2IGluIFRocmVhZFdlYXZlcjo6V2VhdmVySW1wbDo6YmxvY2tUaHJlYWRVbnRpbEpvYnNBcmVC
ZWluZ0Fzc2lnbmVkICh0aGlzPTB4MzZhNzdhMCwgdGg9MHgyOGNhNTIwKSBhdCAvdXNyL3NyYy9k
ZWJ1Zy9rZGVsaWJzLTQuNC41L3RocmVhZHdlYXZlci9XZWF2ZXIvV2VhdmVySW1wbC5jcHA6MzY1
CiM0ICAweDAwMDA3ZjFkNzRkOTk0YWIgaW4gVGhyZWFkV2VhdmVyOjpXb3JraW5nSGFyZFN0YXRl
OjphcHBseUZvcldvcmsgKHRoaXM9MHgyMGExYjAwLCB0aD0weDI4Y2E1MjApIGF0IC91c3Ivc3Jj
L2RlYnVnL2tkZWxpYnMtNC40LjUvdGhyZWFkd2VhdmVyL1dlYXZlci9Xb3JraW5nSGFyZFN0YXRl
LmNwcDo3MQojNSAgMHgwMDAwN2YxZDc0ZDk5NGM0IGluIFRocmVhZFdlYXZlcjo6V29ya2luZ0hh
cmRTdGF0ZTo6YXBwbHlGb3JXb3JrICh0aGlzPTB4MjBhMWIwMCwgdGg9MHgyOGNhNTIwKSBhdCAv
dXNyL3NyYy9kZWJ1Zy9rZGVsaWJzLTQuNC41L3RocmVhZHdlYXZlci9XZWF2ZXIvV29ya2luZ0hh
cmRTdGF0ZS5jcHA6NzQKIzYgIDB4MDAwMDdmMWQ3NGQ5OTRjNCBpbiBUaHJlYWRXZWF2ZXI6Oldv
cmtpbmdIYXJkU3RhdGU6OmFwcGx5Rm9yV29yayAodGhpcz0weDIwYTFiMDAsIHRoPTB4MjhjYTUy
MCkgYXQgL3Vzci9zcmMvZGVidWcva2RlbGlicy00LjQuNS90aHJlYWR3ZWF2ZXIvV2VhdmVyL1dv
cmtpbmdIYXJkU3RhdGUuY3BwOjc0CiM3ICAweDAwMDA3ZjFkNzRkOTk0YzQgaW4gVGhyZWFkV2Vh
dmVyOjpXb3JraW5nSGFyZFN0YXRlOjphcHBseUZvcldvcmsgKHRoaXM9MHgyMGExYjAwLCB0aD0w
eDI4Y2E1MjApIGF0IC91c3Ivc3JjL2RlYnVnL2tkZWxpYnMtNC40LjUvdGhyZWFkd2VhdmVyL1dl
YXZlci9Xb3JraW5nSGFyZFN0YXRlLmNwcDo3NAojOCAgMHgwMDAwN2YxZDc0ZDk5NGM0IGluIFRo
cmVhZFdlYXZlcjo6V29ya2luZ0hhcmRTdGF0ZTo6YXBwbHlGb3JXb3JrICh0aGlzPTB4MjBhMWIw
MCwgdGg9MHgyOGNhNTIwKSBhdCAvdXNyL3NyYy9kZWJ1Zy9rZGVsaWJzLTQuNC41L3RocmVhZHdl
YXZlci9XZWF2ZXIvV29ya2luZ0hhcmRTdGF0ZS5jcHA6NzQKIzkgIDB4MDAwMDdmMWQ3NGQ5OTRj
NCBpbiBUaHJlYWRXZWF2ZXI6OldvcmtpbmdIYXJkU3RhdGU6OmFwcGx5Rm9yV29yayAodGhpcz0w
eDIwYTFiMDAsIHRoPTB4MjhjYTUyMCkgYXQgL3Vzci9zcmMvZGVidWcva2RlbGlicy00LjQuNS90
aHJlYWR3ZWF2ZXIvV2VhdmVyL1dvcmtpbmdIYXJkU3RhdGUuY3BwOjc0CiMxMCAweDAwMDA3ZjFk
NzRkOTk0YzQgaW4gVGhyZWFkV2VhdmVyOjpXb3JraW5nSGFyZFN0YXRlOjphcHBseUZvcldvcmsg
KHRoaXM9MHgyMGExYjAwLCB0aD0weDI4Y2E1MjApIGF0IC91c3Ivc3JjL2RlYnVnL2tkZWxpYnMt
NC40LjUvdGhyZWFkd2VhdmVyL1dlYXZlci9Xb3JraW5nSGFyZFN0YXRlLmNwcDo3NAojMTEgMHgw
MDAwN2YxZDc0ZDk5NGM0IGluIFRocmVhZFdlYXZlcjo6V29ya2luZ0hhcmRTdGF0ZTo6YXBwbHlG
b3JXb3JrICh0aGlzPTB4MjBhMWIwMCwgdGg9MHgyOGNhNTIwKSBhdCAvdXNyL3NyYy9kZWJ1Zy9r
ZGVsaWJzLTQuNC41L3RocmVhZHdlYXZlci9XZWF2ZXIvV29ya2luZ0hhcmRTdGF0ZS5jcHA6NzQK
IzEyIDB4MDAwMDdmMWQ3NGQ5N2U2ZiBpbiBUaHJlYWRXZWF2ZXI6OlRocmVhZFJ1bkhlbHBlcjo6
cnVuICh0aGlzPTB4N2YxZDMzMGVlZDEwLCBwYXJlbnQ9MHgzNmE3N2EwLCB0aD0weDI4Y2E1MjAp
IGF0IC91c3Ivc3JjL2RlYnVnL2tkZWxpYnMtNC40LjUvdGhyZWFkd2VhdmVyL1dlYXZlci9UaHJl
YWQuY3BwOjg3CiMxMyAweDAwMDA3ZjFkNzRkOTgzNTggaW4gVGhyZWFkV2VhdmVyOjpUaHJlYWQ6
OnJ1biAodGhpcz0weDI4Y2E1MjApIGF0IC91c3Ivc3JjL2RlYnVnL2tkZWxpYnMtNC40LjUvdGhy
ZWFkd2VhdmVyL1dlYXZlci9UaHJlYWQuY3BwOjE0MgojMTQgMHgwMDAwN2YxZDc4NmZkMWI1IGlu
IFFUaHJlYWRQcml2YXRlOjpzdGFydCAoYXJnPTB4MjhjYTUyMCkgYXQgdGhyZWFkL3F0aHJlYWRf
dW5peC5jcHA6MjQ4CiMxNSAweDAwMDA3ZjFkNzY1OTNhM2EgaW4gc3RhcnRfdGhyZWFkIChhcmc9
MHg3ZjFkMzMwZWY3MTApIGF0IHB0aHJlYWRfY3JlYXRlLmM6Mjk3CiMxNiAweDAwMDA3ZjFkNzcy
YTc3N2QgaW4gY2xvbmUgKCkgYXQgLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgveDg2XzY0L2Ns
b25lLlM6MTEyCiMxNyAweDAwMDAwMDAwMDAwMDAwMDAgaW4gPz8gKCkKClRocmVhZCA5IChUaHJl
YWQgMHg3ZjFkMzc5ZTQ3MTAgKExXUCA0NjQ1KSk6CiMwICBwdGhyZWFkX2NvbmRfd2FpdEBAR0xJ
QkNfMi4zLjIgKCkgYXQgLi4vbnB0bC9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC94ODZfNjQvcHRo
cmVhZF9jb25kX3dhaXQuUzoxNjIKIzEgIDB4MDAwMDdmMWQ3MTI1NGEzNiBpbiBXVEY6OlRDTWFs
bG9jX1BhZ2VIZWFwOjpzY2F2ZW5nZXJUaHJlYWQoKSAoKSBmcm9tIC91c3IvbGliNjQvbGliUXRX
ZWJLaXQuc28uNAojMiAgMHgwMDAwN2YxZDcxMjU0YTc5IGluIFdURjo6VENNYWxsb2NfUGFnZUhl
YXA6OnJ1blNjYXZlbmdlclRocmVhZCh2b2lkKikgKCkgZnJvbSAvdXNyL2xpYjY0L2xpYlF0V2Vi
S2l0LnNvLjQKIzMgIDB4MDAwMDdmMWQ3NjU5M2EzYSBpbiBzdGFydF90aHJlYWQgKGFyZz0weDdm
MWQzNzllNDcxMCkgYXQgcHRocmVhZF9jcmVhdGUuYzoyOTcKIzQgIDB4MDAwMDdmMWQ3NzJhNzc3
ZCBpbiBjbG9uZSAoKSBhdCAuLi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC94ODZfNjQvY2xvbmUu
UzoxMTIKIzUgIDB4MDAwMDAwMDAwMDAwMDAwMCBpbiA/PyAoKQoKVGhyZWFkIDggKFRocmVhZCAw
eDdmMWQzNjY1ODcxMCAoTFdQIDQ2NDYpKToKIzAgIHB0aHJlYWRfY29uZF93YWl0QEBHTElCQ18y
LjMuMiAoKSBhdCAuLi9ucHRsL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3g4Nl82NC9wdGhyZWFk
X2NvbmRfd2FpdC5TOjE2MgojMSAgMHgwMDAwN2YxZDc4NmZlMTNiIGluIHdhaXQgKHRoaXM9PHZh
bHVlIG9wdGltaXplZCBvdXQ+LCBtdXRleD0weDM2YTk1ZTAsIHRpbWU9MTg0NDY3NDQwNzM3MDk1
NTE2MTUpIGF0IHRocmVhZC9xd2FpdGNvbmRpdGlvbl91bml4LmNwcDo4NwojMiAgUVdhaXRDb25k
aXRpb246OndhaXQgKHRoaXM9PHZhbHVlIG9wdGltaXplZCBvdXQ+LCBtdXRleD0weDM2YTk1ZTAs
IHRpbWU9MTg0NDY3NDQwNzM3MDk1NTE2MTUpIGF0IHRocmVhZC9xd2FpdGNvbmRpdGlvbl91bml4
LmNwcDoxNTkKIzMgIDB4MDAwMDdmMWQ3NGQ5NmY4NiBpbiBUaHJlYWRXZWF2ZXI6OldlYXZlcklt
cGw6OmJsb2NrVGhyZWFkVW50aWxKb2JzQXJlQmVpbmdBc3NpZ25lZCAodGhpcz0weDM2YTc3YTAs
IHRoPTB4MWQwZWE1MCkgYXQgL3Vzci9zcmMvZGVidWcva2RlbGlicy00LjQuNS90aHJlYWR3ZWF2
ZXIvV2VhdmVyL1dlYXZlckltcGwuY3BwOjM2NQojNCAgMHgwMDAwN2YxZDc0ZDk5NGFiIGluIFRo
cmVhZFdlYXZlcjo6V29ya2luZ0hhcmRTdGF0ZTo6YXBwbHlGb3JXb3JrICh0aGlzPTB4MjBhMWIw
MCwgdGg9MHgxZDBlYTUwKSBhdCAvdXNyL3NyYy9kZWJ1Zy9rZGVsaWJzLTQuNC41L3RocmVhZHdl
YXZlci9XZWF2ZXIvV29ya2luZ0hhcmRTdGF0ZS5jcHA6NzEKIzUgIDB4MDAwMDdmMWQ3NGQ5N2U2
ZiBpbiBUaHJlYWRXZWF2ZXI6OlRocmVhZFJ1bkhlbHBlcjo6cnVuICh0aGlzPTB4N2YxZDM2NjU3
ZDEwLCBwYXJlbnQ9MHgzNmE3N2EwLCB0aD0weDFkMGVhNTApIGF0IC91c3Ivc3JjL2RlYnVnL2tk
ZWxpYnMtNC40LjUvdGhyZWFkd2VhdmVyL1dlYXZlci9UaHJlYWQuY3BwOjg3CiM2ICAweDAwMDA3
ZjFkNzRkOTgzNTggaW4gVGhyZWFkV2VhdmVyOjpUaHJlYWQ6OnJ1biAodGhpcz0weDFkMGVhNTAp
IGF0IC91c3Ivc3JjL2RlYnVnL2tkZWxpYnMtNC40LjUvdGhyZWFkd2VhdmVyL1dlYXZlci9UaHJl
YWQuY3BwOjE0MgojNyAgMHgwMDAwN2YxZDc4NmZkMWI1IGluIFFUaHJlYWRQcml2YXRlOjpzdGFy
dCAoYXJnPTB4MWQwZWE1MCkgYXQgdGhyZWFkL3F0aHJlYWRfdW5peC5jcHA6MjQ4CiM4ICAweDAw
MDA3ZjFkNzY1OTNhM2EgaW4gc3RhcnRfdGhyZWFkIChhcmc9MHg3ZjFkMzY2NTg3MTApIGF0IHB0
aHJlYWRfY3JlYXRlLmM6Mjk3CiM5ICAweDAwMDA3ZjFkNzcyYTc3N2QgaW4gY2xvbmUgKCkgYXQg
Li4vc3lzZGVwcy91bml4L3N5c3YvbGludXgveDg2XzY0L2Nsb25lLlM6MTEyCiMxMCAweDAwMDAw
MDAwMDAwMDAwMDAgaW4gPz8gKCkKClRocmVhZCA3IChUaHJlYWQgMHg3ZjFkMzRlNDY3MTAgKExX
UCA0NjUwKSk6CiMwICBwdGhyZWFkX2NvbmRfd2FpdEBAR0xJQkNfMi4zLjIgKCkgYXQgLi4vbnB0
bC9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC94ODZfNjQvcHRocmVhZF9jb25kX3dhaXQuUzoxNjIK
IzEgIDB4MDAwMDdmMWQ3NDg5NTRmNiBpbiBRVFdURjo6VENNYWxsb2NfUGFnZUhlYXA6OnNjYXZl
bmdlclRocmVhZCAodGhpcz0weDdmMWQ3NGI2ZWQ0MCkgYXQgLi4vM3JkcGFydHkvamF2YXNjcmlw
dGNvcmUvSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuY3BwOjIzMDQKIzIgIDB4MDAwMDdm
MWQ3NDg5NTUzOSBpbiBRVFdURjo6VENNYWxsb2NfUGFnZUhlYXA6OnJ1blNjYXZlbmdlclRocmVh
ZCAoY29udGV4dD0weDdmMWQ3NGI3Y2UwYykgYXQgLi4vM3JkcGFydHkvamF2YXNjcmlwdGNvcmUv
SmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuY3BwOjE0MzgKIzMgIDB4MDAwMDdmMWQ3NjU5
M2EzYSBpbiBzdGFydF90aHJlYWQgKGFyZz0weDdmMWQzNGU0NjcxMCkgYXQgcHRocmVhZF9jcmVh
dGUuYzoyOTcKIzQgIDB4MDAwMDdmMWQ3NzJhNzc3ZCBpbiBjbG9uZSAoKSBhdCAuLi9zeXNkZXBz
L3VuaXgvc3lzdi9saW51eC94ODZfNjQvY2xvbmUuUzoxMTIKIzUgIDB4MDAwMDAwMDAwMDAwMDAw
MCBpbiA/PyAoKQoKVGhyZWFkIDYgKFRocmVhZCAweDdmMWQ2MmE0MjcxMCAoTFdQIDE3ODkyKSk6
CiMwICAweDAwMDA3ZjFkNzcyYTA1NTMgaW4gc2VsZWN0ICgpIGF0IC4uL3N5c2RlcHMvdW5peC9z
eXNjYWxsLXRlbXBsYXRlLlM6ODIKIzEgIDB4MDAwMDdmMWQ2MmE3ZTkyNSBpbiB4aW5lX3VzZWNf
c2xlZXAgKCkgZnJvbSAvdXNyL2xpYjY0L2xpYnhpbmUuc28uMQojMiAgMHgwMDAwN2YxZDYyYTY0
NTc0IGluID8/ICgpIGZyb20gL3Vzci9saWI2NC9saWJ4aW5lLnNvLjEKIzMgIDB4MDAwMDdmMWQ3
NjU5M2EzYSBpbiBzdGFydF90aHJlYWQgKGFyZz0weDdmMWQ2MmE0MjcxMCkgYXQgcHRocmVhZF9j
cmVhdGUuYzoyOTcKIzQgIDB4MDAwMDdmMWQ3NzJhNzc3ZCBpbiBjbG9uZSAoKSBhdCAuLi9zeXNk
ZXBzL3VuaXgvc3lzdi9saW51eC94ODZfNjQvY2xvbmUuUzoxMTIKIzUgIDB4MDAwMDAwMDAwMDAw
MDAwMCBpbiA/PyAoKQoKVGhyZWFkIDUgKFRocmVhZCAweDdmMWQ2MWMxMTcxMCAoTFdQIDE3ODkz
KSk6CiMwICBwdGhyZWFkX2NvbmRfd2FpdEBAR0xJQkNfMi4zLjIgKCkgYXQgLi4vbnB0bC9zeXNk
ZXBzL3VuaXgvc3lzdi9saW51eC94ODZfNjQvcHRocmVhZF9jb25kX3dhaXQuUzoxNjIKIzEgIDB4
MDAwMDdmMWQ2MmE1OWYwYiBpbiA/PyAoKSBmcm9tIC91c3IvbGliNjQvbGlieGluZS5zby4xCiMy
ICAweDAwMDA3ZjFkNjJhNWZmN2QgaW4gPz8gKCkgZnJvbSAvdXNyL2xpYjY0L2xpYnhpbmUuc28u
MQojMyAgMHgwMDAwN2YxZDc2NTkzYTNhIGluIHN0YXJ0X3RocmVhZCAoYXJnPTB4N2YxZDYxYzEx
NzEwKSBhdCBwdGhyZWFkX2NyZWF0ZS5jOjI5NwojNCAgMHgwMDAwN2YxZDc3MmE3NzdkIGluIGNs
b25lICgpIGF0IC4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3g4Nl82NC9jbG9uZS5TOjExMgoj
NSAgMHgwMDAwMDAwMDAwMDAwMDAwIGluID8/ICgpCgpUaHJlYWQgNCAoVGhyZWFkIDB4N2YxZDYx
MjEwNzEwIChMV1AgMTc4OTQpKToKIzAgIHB0aHJlYWRfY29uZF93YWl0QEBHTElCQ18yLjMuMiAo
KSBhdCAuLi9ucHRsL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3g4Nl82NC9wdGhyZWFkX2NvbmRf
d2FpdC5TOjE2MgojMSAgMHgwMDAwN2YxZDYyYTUxZjA2IGluID8/ICgpIGZyb20gL3Vzci9saWI2
NC9saWJ4aW5lLnNvLjEKIzIgIDB4MDAwMDdmMWQ2MmE2MTZkNSBpbiA/PyAoKSBmcm9tIC91c3Iv
bGliNjQvbGlieGluZS5zby4xCiMzICAweDAwMDA3ZjFkNzY1OTNhM2EgaW4gc3RhcnRfdGhyZWFk
IChhcmc9MHg3ZjFkNjEyMTA3MTApIGF0IHB0aHJlYWRfY3JlYXRlLmM6Mjk3CiM0ICAweDAwMDA3
ZjFkNzcyYTc3N2QgaW4gY2xvbmUgKCkgYXQgLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgveDg2
XzY0L2Nsb25lLlM6MTEyCiM1ICAweDAwMDAwMDAwMDAwMDAwMDAgaW4gPz8gKCkKClRocmVhZCAz
IChUaHJlYWQgMHg3ZjFkNjA4MGY3MTAgKExXUCAxNzg5NSkpOgojMCAgcHRocmVhZF9jb25kX3dh
aXRAQEdMSUJDXzIuMy4yICgpIGF0IC4uL25wdGwvc3lzZGVwcy91bml4L3N5c3YvbGludXgveDg2
XzY0L3B0aHJlYWRfY29uZF93YWl0LlM6MTYyCiMxICAweDAwMDA3ZjFkNjJhNmE0ZmIgaW4geGlu
ZV9ldmVudF93YWl0ICgpIGZyb20gL3Vzci9saWI2NC9saWJ4aW5lLnNvLjEKIzIgIDB4MDAwMDdm
MWQ2MmE2YTU2ZSBpbiA/PyAoKSBmcm9tIC91c3IvbGliNjQvbGlieGluZS5zby4xCiMzICAweDAw
MDA3ZjFkNzY1OTNhM2EgaW4gc3RhcnRfdGhyZWFkIChhcmc9MHg3ZjFkNjA4MGY3MTApIGF0IHB0
aHJlYWRfY3JlYXRlLmM6Mjk3CiM0ICAweDAwMDA3ZjFkNzcyYTc3N2QgaW4gY2xvbmUgKCkgYXQg
Li4vc3lzZGVwcy91bml4L3N5c3YvbGludXgveDg2XzY0L2Nsb25lLlM6MTEyCiM1ICAweDAwMDAw
MDAwMDAwMDAwMDAgaW4gPz8gKCkKClRocmVhZCAyIChUaHJlYWQgMHg3ZjFkMTVkOWY3MTAgKExX
UCAxODk0OCkpOgojMCAgcHRocmVhZF9jb25kX3dhaXRAQEdMSUJDXzIuMy4yICgpIGF0IC4uL25w
dGwvc3lzZGVwcy91bml4L3N5c3YvbGludXgveDg2XzY0L3B0aHJlYWRfY29uZF93YWl0LlM6MTYy
CiMxICAweDAwMDA3ZjFkNjJhNTllMjMgaW4gPz8gKCkgZnJvbSAvdXNyL2xpYjY0L2xpYnhpbmUu
c28uMQojMiAgMHgwMDAwN2YxZDYyYTZlMWMwIGluIF94X2RlbXV4X3NlbmRfZGF0YSAoKSBmcm9t
IC91c3IvbGliNjQvbGlieGluZS5zby4xCiMzICAweDAwMDA3ZjFkNDU1Yzc0ODEgaW4gPz8gKCkg
ZnJvbSAvdXNyL2xpYjY0L3hpbmUvcGx1Z2lucy8xLjI4L3hpbmVwbHVnX2RteF9vZ2cuc28KIzQg
IDB4MDAwMDdmMWQ0NTVjOWRkMSBpbiA/PyAoKSBmcm9tIC91c3IvbGliNjQveGluZS9wbHVnaW5z
LzEuMjgveGluZXBsdWdfZG14X29nZy5zbwojNSAgMHgwMDAwN2YxZDYyYTZlOGY1IGluID8/ICgp
IGZyb20gL3Vzci9saWI2NC9saWJ4aW5lLnNvLjEKIzYgIDB4MDAwMDdmMWQ3NjU5M2EzYSBpbiBz
dGFydF90aHJlYWQgKGFyZz0weDdmMWQxNWQ5ZjcxMCkgYXQgcHRocmVhZF9jcmVhdGUuYzoyOTcK
IzcgIDB4MDAwMDdmMWQ3NzJhNzc3ZCBpbiBjbG9uZSAoKSBhdCAuLi9zeXNkZXBzL3VuaXgvc3lz
di9saW51eC94ODZfNjQvY2xvbmUuUzoxMTIKIzggIDB4MDAwMDAwMDAwMDAwMDAwMCBpbiA/PyAo
KQoKVGhyZWFkIDEgKFRocmVhZCAweDdmMWQ3YTJhNjg4MCAoTFdQIDQ1OTYpKToKW0tDcmFzaCBI
YW5kbGVyXQojNSAgUU1vZGVsSW5kZXggKHRoaXM9MHgyZjQzMmIwLCBjaGlsZD0uLi4pIGF0IC4u
Ly4uL3NyYy9jb3JlbGliL2tlcm5lbC9xYWJzdHJhY3RpdGVtbW9kZWwuaDo2NQojNiAgUVNvcnRG
aWx0ZXJQcm94eU1vZGVsOjpwYXJlbnQgKHRoaXM9MHgyZjQzMmIwLCBjaGlsZD0uLi4pIGF0IGl0
ZW12aWV3cy9xc29ydGZpbHRlcnByb3h5bW9kZWwuY3BwOjE2MTkKIzcgIDB4MDAwMDdmMWQ3ODEx
OWFlNSBpbiBwYXJlbnQgKHRoaXM9MHgzMmU5YjEwLCBpbmRleD0uLi4pIGF0IC4uLy4uL3NyYy9j
b3JlbGliL2tlcm5lbC9xYWJzdHJhY3RpdGVtbW9kZWwuaDozODkKIzggIFFUcmVlVmlldzo6aXNJ
bmRleEhpZGRlbiAodGhpcz0weDMyZTliMTAsIGluZGV4PS4uLikgYXQgaXRlbXZpZXdzL3F0cmVl
dmlldy5jcHA6Mjg5NwojOSAgMHgwMDAwN2YxZDc4MTIyZWMxIGluIFFUcmVlVmlldzo6dmlzdWFs
UmVjdCAodGhpcz0weDMyZTliMTAsIGluZGV4PS4uLikgYXQgaXRlbXZpZXdzL3F0cmVldmlldy5j
cHA6MTAzNgojMTAgMHgwMDAwN2YxZDc4MGQ5OGQwIGluIFFBYnN0cmFjdEl0ZW1WaWV3Ojp1cGRh
dGUgKHRoaXM9PHZhbHVlIG9wdGltaXplZCBvdXQ+LCBpbmRleD08dmFsdWUgb3B0aW1pemVkIG91
dD4pIGF0IGl0ZW12aWV3cy9xYWJzdHJhY3RpdGVtdmlldy5jcHA6MzEyMwojMTEgMHgwMDAwN2Yx
ZDc4MGQ5YjhlIGluIFFBYnN0cmFjdEl0ZW1WaWV3UHJpdmF0ZTo6c2V0SG92ZXJJbmRleCAodGhp
cz0weDIyYzllODAsIGluZGV4PS4uLikgYXQgaXRlbXZpZXdzL3FhYnN0cmFjdGl0ZW12aWV3LmNw
cDoxNTAKIzEyIDB4MDAwMDdmMWQ3ODBlNzgwNyBpbiBRQWJzdHJhY3RJdGVtVmlldzo6dmlld3Bv
cnRFdmVudCAodGhpcz0weDMyZTliMTAsIGV2ZW50PTB4N2ZmZjE3NTY5NWQwKSBhdCBpdGVtdmll
d3MvcWFic3RyYWN0aXRlbXZpZXcuY3BwOjE1NjgKIzEzIDB4MDAwMDdmMWQ3ODEyMmQzMiBpbiBR
VHJlZVZpZXc6OnZpZXdwb3J0RXZlbnQgKHRoaXM9MHgzMmU5YjEwLCBldmVudD0weDdmZmYxNzU2
OTVkMCkgYXQgaXRlbXZpZXdzL3F0cmVldmlldy5jcHA6MTI0OAojMTQgMHgwMDAwN2YxZDc5NDA2
NmJmIGluIFBsYXlsaXN0QnJvd3Nlck5TOjpQbGF5bGlzdEJyb3dzZXJWaWV3Ojp2aWV3cG9ydEV2
ZW50ICh0aGlzPTB4MzJlOWIxMCwgZXZlbnQ9MHg3ZmZmMTc1Njk1ZDApCiAgICBhdCAvaG9tZS9w
YW56aS9zb2Z0d2FyZS9hbWFyb2svc3JjL2Jyb3dzZXJzL3BsYXlsaXN0YnJvd3Nlci9QbGF5bGlz
dEJyb3dzZXJWaWV3LmNwcDozMjAKIzE1IDB4MDAwMDdmMWQ3ODdkZWRlNyBpbiBRQ29yZUFwcGxp
Y2F0aW9uUHJpdmF0ZTo6c2VuZFRocm91Z2hPYmplY3RFdmVudEZpbHRlcnMgKHRoaXM9PHZhbHVl
IG9wdGltaXplZCBvdXQ+LCByZWNlaXZlcj0weDI3NjIxNzAsIGV2ZW50PTB4N2ZmZjE3NTY5NWQw
KSBhdCBrZXJuZWwvcWNvcmVhcHBsaWNhdGlvbi5jcHA6ODQxCiMxNiAweDAwMDA3ZjFkNzdjMGEz
M2MgaW4gUUFwcGxpY2F0aW9uUHJpdmF0ZTo6bm90aWZ5X2hlbHBlciAodGhpcz0weGMxMTFjMCwg
cmVjZWl2ZXI9MHgyNzYyMTcwLCBlPTB4N2ZmZjE3NTY5NWQwKSBhdCBrZXJuZWwvcWFwcGxpY2F0
aW9uLmNwcDo0MzAyCiMxNyAweDAwMDA3ZjFkNzdjMGZhZTcgaW4gUUFwcGxpY2F0aW9uUHJpdmF0
ZTo6ZGlzcGF0Y2hFbnRlckxlYXZlIChlbnRlcj08dmFsdWUgb3B0aW1pemVkIG91dD4sIGxlYXZl
PTx2YWx1ZSBvcHRpbWl6ZWQgb3V0PikgYXQga2VybmVsL3FhcHBsaWNhdGlvbi5jcHA6MjYzOQoj
MTggMHgwMDAwN2YxZDc3YzgwZTc1IGluIFFBcHBsaWNhdGlvbjo6eDExUHJvY2Vzc0V2ZW50ICh0
aGlzPTx2YWx1ZSBvcHRpbWl6ZWQgb3V0PiwgZXZlbnQ9MHg3ZmZmMTc1NjlkMTApIGF0IGtlcm5l
bC9xYXBwbGljYXRpb25feDExLmNwcDozNTA5CiMxOSAweDAwMDA3ZjFkNzdjYTliYjIgaW4geDEx
RXZlbnRTb3VyY2VEaXNwYXRjaCAocz0weGMxNzY5MCwgY2FsbGJhY2s9PHZhbHVlIG9wdGltaXpl
ZCBvdXQ+LCB1c2VyX2RhdGE9PHZhbHVlIG9wdGltaXplZCBvdXQ+KSBhdCBrZXJuZWwvcWd1aWV2
ZW50ZGlzcGF0Y2hlcl9nbGliLmNwcDoxNDYKIzIwIDB4MDAwMDAwMzE2ZDAzOTIzZSBpbiBnX21h
aW5fZGlzcGF0Y2ggKGNvbnRleHQ9MHhjMTY4NDApIGF0IGdtYWluLmM6MTk2MAojMjEgSUFfX2df
bWFpbl9jb250ZXh0X2Rpc3BhdGNoIChjb250ZXh0PTB4YzE2ODQwKSBhdCBnbWFpbi5jOjI1MTMK
IzIyIDB4MDAwMDAwMzE2ZDAzY2MyOCBpbiBnX21haW5fY29udGV4dF9pdGVyYXRlIChjb250ZXh0
PTB4YzE2ODQwLCBibG9jaz08dmFsdWUgb3B0aW1pemVkIG91dD4sIGRpc3BhdGNoPTx2YWx1ZSBv
cHRpbWl6ZWQgb3V0Piwgc2VsZj08dmFsdWUgb3B0aW1pemVkIG91dD4pIGF0IGdtYWluLmM6MjU5
MQojMjMgMHgwMDAwMDAzMTZkMDNjZDRhIGluIElBX19nX21haW5fY29udGV4dF9pdGVyYXRpb24g
KGNvbnRleHQ9MHhjMTY4NDAsIG1heV9ibG9jaz0xKSBhdCBnbWFpbi5jOjI2NTQKIzI0IDB4MDAw
MDdmMWQ3ODgwNTNmMyBpbiBRRXZlbnREaXNwYXRjaGVyR2xpYjo6cHJvY2Vzc0V2ZW50cyAodGhp
cz0weGFiNTg2MCwgZmxhZ3M9PHZhbHVlIG9wdGltaXplZCBvdXQ+KSBhdCBrZXJuZWwvcWV2ZW50
ZGlzcGF0Y2hlcl9nbGliLmNwcDo0MTIKIzI1IDB4MDAwMDdmMWQ3N2NhOTg2ZSBpbiBRR3VpRXZl
bnREaXNwYXRjaGVyR2xpYjo6cHJvY2Vzc0V2ZW50cyAodGhpcz08dmFsdWUgb3B0aW1pemVkIG91
dD4sIGZsYWdzPTx2YWx1ZSBvcHRpbWl6ZWQgb3V0PikgYXQga2VybmVsL3FndWlldmVudGRpc3Bh
dGNoZXJfZ2xpYi5jcHA6MjA0CiMyNiAweDAwMDA3ZjFkNzg3ZGU0MTIgaW4gUUV2ZW50TG9vcDo6
cHJvY2Vzc0V2ZW50cyAodGhpcz08dmFsdWUgb3B0aW1pemVkIG91dD4sIGZsYWdzPS4uLikgYXQg
a2VybmVsL3FldmVudGxvb3AuY3BwOjE0OQojMjcgMHgwMDAwN2YxZDc4N2RlNmRjIGluIFFFdmVu
dExvb3A6OmV4ZWMgKHRoaXM9MHg3ZmZmMTc1NmEwNDAsIGZsYWdzPS4uLikgYXQga2VybmVsL3Fl
dmVudGxvb3AuY3BwOjIwMQojMjggMHgwMDAwN2YxZDc4N2UxZGFiIGluIFFDb3JlQXBwbGljYXRp
b246OmV4ZWMgKCkgYXQga2VybmVsL3Fjb3JlYXBwbGljYXRpb24uY3BwOjEwMDMKIzI5IDB4MDAw
MDAwMDAwMDQwYWUwNCBpbiBtYWluIChhcmdjPTMsIGFyZ3Y9MHg3ZmZmMTc1NmMwMTgpIGF0IC9o
b21lL3BhbnppL3NvZnR3YXJlL2FtYXJvay9zcmMvbWFpbi5jcHA6MjM3CgpQb3NzaWJsZSBkdXBs
aWNhdGVzIGJ5IHF1ZXJ5OiBidWcgMjU1MTIxLCBidWcgMjU0OTc4LCBidWcgMjU0OTcwLCBidWcg
MjU0OTUxLCBidWcgMjU0NjMxLgoKUmVwb3J0ZWQgdXNpbmcgRHJLb25xaQ==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>62258</attachid>
            <date>2011-07-28 02:43:51 +0000</date>
            <delta_ts>2011-07-28 02:43:51 +0000</delta_ts>
            <desc>New crash information added by DrKonqi</desc>
            <filename>drkonqireport</filename>
            <type>text/plain</type>
            <size>26059</size>
            <attacher>gegen.nazi</attacher>
            
              <data encoding="base64">QXBwbGljYXRpb246IGFtYXJvayAoMi4zLjIpCktERSBQbGF0Zm9ybSBWZXJzaW9uOiA0LjUuMyAo
S0RFIDQuNS4zKQpRdCBWZXJzaW9uOiA0LjcuMApPcGVyYXRpbmcgU3lzdGVtOiBMaW51eCAyLjYu
MzItMzMtZ2VuZXJpYyBpNjg2CkRpc3RyaWJ1dGlvbjogVWJ1bnR1IDEwLjA0LjMgTFRTCgotLSBJ
bmZvcm1hdGlvbiBhYm91dCB0aGUgY3Jhc2g6Cmkgc3Vic2NyaWJlZCB0byBhIHBvZGNhc3QgYW5k
IGFmdGVyIG9wZW5pbmcgdGhlIGxvY2FsIHBvZGNhc3QgbGlzdCBhbWFyb2sgY3Jhc2hlcwoKVGhl
IGNyYXNoIGNhbiBiZSByZXByb2R1Y2VkIHNvbWUgb2YgdGhlIHRpbWUuCgotLSBCYWNrdHJhY2U6
CkFwcGxpY2F0aW9uOiBBbWFyb2sgKGFtYXJvayksIHNpZ25hbDogU2VnbWVudGF0aW9uIGZhdWx0
CltDdXJyZW50IHRocmVhZCBpcyAxIChUaHJlYWQgMHhiNjU0MDc3MCAoTFdQIDE5NzQpKV0KClRo
cmVhZCAxMyAoVGhyZWFkIDB4YWYyZTliNzAgKExXUCAxOTg3KSk6CiMwICAweDAwM2QzNDIyIGlu
IF9fa2VybmVsX3ZzeXNjYWxsICgpCiMxICAweDAyNTBlMzQyIGluIHB0aHJlYWRfY29uZF90aW1l
ZHdhaXRAQEdMSUJDXzIuMy4yICgpIGZyb20gL2xpYi90bHMvaTY4Ni9jbW92L2xpYnB0aHJlYWQu
c28uMAojMiAgMHgwNjFjNWEzNCBpbiBwdGhyZWFkX2NvbmRfdGltZWR3YWl0ICgpIGZyb20gL2xp
Yi90bHMvaTY4Ni9jbW92L2xpYmMuc28uNgojMyAgMHgwMzAzYmNlNyBpbiA/PyAoKSBmcm9tIC91
c3IvbGliL2xpYnhpbmUuc28uMQpCYWNrdHJhY2Ugc3RvcHBlZDogcHJldmlvdXMgZnJhbWUgaW5u
ZXIgdG8gdGhpcyBmcmFtZSAoY29ycnVwdCBzdGFjaz8pCgpUaHJlYWQgMTIgKFRocmVhZCAweGFl
YWU4YjcwIChMV1AgMTk4OCkpOgojMCAgMHgwMDNkMzQyMiBpbiBfX2tlcm5lbF92c3lzY2FsbCAo
KQojMSAgMHgwNjFhYWI4NiBpbiBwb2xsICgpIGZyb20gL2xpYi90bHMvaTY4Ni9jbW92L2xpYmMu
c28uNgojMiAgMHgwMzUzZDRlYiBpbiBnX3BvbGwgKCkgZnJvbSAvbGliL2xpYmdsaWItMi4wLnNv
LjAKIzMgIDB4MDM1MzAwYWMgaW4gPz8gKCkgZnJvbSAvbGliL2xpYmdsaWItMi4wLnNvLjAKIzQg
IDB4MDM1MzA0YjggaW4gZ19tYWluX2NvbnRleHRfaXRlcmF0aW9uICgpIGZyb20gL2xpYi9saWJn
bGliLTIuMC5zby4wCiM1ICAweDA0ZGU2ODJmIGluIFFFdmVudERpc3BhdGNoZXJHbGliOjpwcm9j
ZXNzRXZlbnRzICh0aGlzPTB4ODJjNDE4MCwgZmxhZ3M9Li4uKSBhdCBrZXJuZWwvcWV2ZW50ZGlz
cGF0Y2hlcl9nbGliLmNwcDo0MTcKIzYgIDB4MDRkYjZhOTkgaW4gUUV2ZW50TG9vcDo6cHJvY2Vz
c0V2ZW50cyAodGhpcz0weGFlYWU4MjIwLCBmbGFncz0pIGF0IGtlcm5lbC9xZXZlbnRsb29wLmNw
cDoxNDkKIzcgIDB4MDRkYjZmMWEgaW4gUUV2ZW50TG9vcDo6ZXhlYyAodGhpcz0weGFlYWU4MjIw
LCBmbGFncz0uLi4pIGF0IGtlcm5lbC9xZXZlbnRsb29wLmNwcDoyMDEKIzggIDB4MDRjYjNjNWUg
aW4gUVRocmVhZDo6ZXhlYyAodGhpcz0weDgyYzQ3YjApIGF0IHRocmVhZC9xdGhyZWFkLmNwcDo0
OTAKIzkgIDB4MDJmZDg4MWEgaW4gPz8gKCkgZnJvbSAvdXNyL2xpYi9xdDQvcGx1Z2lucy9waG9u
b25fYmFja2VuZC9waG9ub25feGluZS5zbwojMTAgMHgwNGNiNmYzOSBpbiBRVGhyZWFkUHJpdmF0
ZTo6c3RhcnQgKGFyZz0weDgyYzQ3YjApIGF0IHRocmVhZC9xdGhyZWFkX3VuaXguY3BwOjI2Ngoj
MTEgMHgwMjUwOTk2ZSBpbiBzdGFydF90aHJlYWQgKCkgZnJvbSAvbGliL3Rscy9pNjg2L2Ntb3Yv
bGlicHRocmVhZC5zby4wCiMxMiAweDA2MWI4YTRlIGluIGNsb25lICgpIGZyb20gL2xpYi90bHMv
aTY4Ni9jbW92L2xpYmMuc28uNgoKVGhyZWFkIDExIChUaHJlYWQgMHhhZTJlN2I3MCAoTFdQIDE5
ODkpKToKIzAgIDB4MDAzZDM0MjIgaW4gX19rZXJuZWxfdnN5c2NhbGwgKCkKIzEgIDB4MDYxYWFi
ODYgaW4gcG9sbCAoKSBmcm9tIC9saWIvdGxzL2k2ODYvY21vdi9saWJjLnNvLjYKIzIgIDB4MDE5
ZTQ1MDIgaW4gPz8gKCkgZnJvbSAvdXNyL2xpYi9saWJwdWxzZS5zby4wCiMzICAweDAxOWQwYTU5
IGluIHBhX21haW5sb29wX3BvbGwgKCkgZnJvbSAvdXNyL2xpYi9saWJwdWxzZS5zby4wCiM0ICAw
eDAxOWQyYTEzIGluIHBhX21haW5sb29wX2l0ZXJhdGUgKCkgZnJvbSAvdXNyL2xpYi9saWJwdWxz
ZS5zby4wCiM1ICAweDAxOWQyYWU0IGluIHBhX21haW5sb29wX3J1biAoKSBmcm9tIC91c3IvbGli
L2xpYnB1bHNlLnNvLjAKIzYgIDB4MDE5ZTQyYTMgaW4gPz8gKCkgZnJvbSAvdXNyL2xpYi9saWJw
dWxzZS5zby4wCiM3ICAweDA1NTA0ZTAyIGluID8/ICgpIGZyb20gL3Vzci9saWIvbGlicHVsc2Vj
b21tb24tMC45LjIxLnNvCiM4ICAweDAyNTA5OTZlIGluIHN0YXJ0X3RocmVhZCAoKSBmcm9tIC9s
aWIvdGxzL2k2ODYvY21vdi9saWJwdGhyZWFkLnNvLjAKIzkgIDB4MDYxYjhhNGUgaW4gY2xvbmUg
KCkgZnJvbSAvbGliL3Rscy9pNjg2L2Ntb3YvbGliYy5zby42CgpUaHJlYWQgMTAgKFRocmVhZCAw
eGE5OGZmYjcwIChMV1AgMTk5MCkpOgojMCAgMHgwMDNkMzQyMiBpbiBfX2tlcm5lbF92c3lzY2Fs
bCAoKQojMSAgMHgwMjUwZTAxNSBpbiBwdGhyZWFkX2NvbmRfd2FpdEBAR0xJQkNfMi4zLjIgKCkg
ZnJvbSAvbGliL3Rscy9pNjg2L2Ntb3YvbGlicHRocmVhZC5zby4wCiMyICAweDA2MWM1OWRkIGlu
IHB0aHJlYWRfY29uZF93YWl0ICgpIGZyb20gL2xpYi90bHMvaTY4Ni9jbW92L2xpYmMuc28uNgoj
MyAgMHgwMzA0YzllZSBpbiA/PyAoKSBmcm9tIC91c3IvbGliL2xpYnhpbmUuc28uMQojNCAgMHgw
MDAwMDAwMCBpbiA/PyAoKQoKVGhyZWFkIDkgKFRocmVhZCAweGE5MGZlYjcwIChMV1AgMTk5MSkp
OgojMCAgMHgwMDNkMzQyMiBpbiBfX2tlcm5lbF92c3lzY2FsbCAoKQojMSAgMHgwMjUwZTAxNSBp
biBwdGhyZWFkX2NvbmRfd2FpdEBAR0xJQkNfMi4zLjIgKCkgZnJvbSAvbGliL3Rscy9pNjg2L2Nt
b3YvbGlicHRocmVhZC5zby4wCiMyICAweDA2MWM1OWRkIGluIHB0aHJlYWRfY29uZF93YWl0ICgp
IGZyb20gL2xpYi90bHMvaTY4Ni9jbW92L2xpYmMuc28uNgojMyAgMHgwMzA0YzllZSBpbiA/PyAo
KSBmcm9tIC91c3IvbGliL2xpYnhpbmUuc28uMQpCYWNrdHJhY2Ugc3RvcHBlZDogcHJldmlvdXMg
ZnJhbWUgaW5uZXIgdG8gdGhpcyBmcmFtZSAoY29ycnVwdCBzdGFjaz8pCgpUaHJlYWQgOCAoVGhy
ZWFkIDB4YTg4ZmRiNzAgKExXUCAxOTkyKSk6CiMwICAweDAwM2QzNDIyIGluIF9fa2VybmVsX3Zz
eXNjYWxsICgpCiMxICAweDAyNTBlMDE1IGluIHB0aHJlYWRfY29uZF93YWl0QEBHTElCQ18yLjMu
MiAoKSBmcm9tIC9saWIvdGxzL2k2ODYvY21vdi9saWJwdGhyZWFkLnNvLjAKIzIgIDB4MDYxYzU5
ZGQgaW4gcHRocmVhZF9jb25kX3dhaXQgKCkgZnJvbSAvbGliL3Rscy9pNjg2L2Ntb3YvbGliYy5z
by42CiMzICAweDAzMDRjOWVlIGluID8/ICgpIGZyb20gL3Vzci9saWIvbGlieGluZS5zby4xCkJh
Y2t0cmFjZSBzdG9wcGVkOiBwcmV2aW91cyBmcmFtZSBpbm5lciB0byB0aGlzIGZyYW1lIChjb3Jy
dXB0IHN0YWNrPykKClRocmVhZCA3IChUaHJlYWQgMHhhN2E5YWI3MCAoTFdQIDIwNTIpKToKIzAg
IDB4MDAzZDM0MjIgaW4gX19rZXJuZWxfdnN5c2NhbGwgKCkKIzEgIDB4MDI1MGUwMTUgaW4gcHRo
cmVhZF9jb25kX3dhaXRAQEdMSUJDXzIuMy4yICgpIGZyb20gL2xpYi90bHMvaTY4Ni9jbW92L2xp
YnB0aHJlYWQuc28uMAojMiAgMHgwNjFjNTlkZCBpbiBwdGhyZWFkX2NvbmRfd2FpdCAoKSBmcm9t
IC9saWIvdGxzL2k2ODYvY21vdi9saWJjLnNvLjYKIzMgIDB4MDRjYjdiMDcgaW4gUVdhaXRDb25k
aXRpb25Qcml2YXRlOjp3YWl0ICh0aGlzPTB4ODZjY2JhMCwgbXV0ZXg9MHg4NzRjZDA4LCB0aW1l
PTQyOTQ5NjcyOTUpIGF0IHRocmVhZC9xd2FpdGNvbmRpdGlvbl91bml4LmNwcDo4OAojNCAgUVdh
aXRDb25kaXRpb246OndhaXQgKHRoaXM9MHg4NmNjYmEwLCBtdXRleD0weDg3NGNkMDgsIHRpbWU9
NDI5NDk2NzI5NSkgYXQgdGhyZWFkL3F3YWl0Y29uZGl0aW9uX3VuaXguY3BwOjE2MAojNSAgMHgw
MjM4ODg5MCBpbiBUaHJlYWRXZWF2ZXI6OldlYXZlckltcGw6OmJsb2NrVGhyZWFkVW50aWxKb2Jz
QXJlQmVpbmdBc3NpZ25lZCAodGhpcz0weDg2Y2NiODgsIHRoPTB4ODc0MzE5MCkgYXQgLi4vLi4v
Li4vdGhyZWFkd2VhdmVyL1dlYXZlci9XZWF2ZXJJbXBsLmNwcDozNjUKIzYgIDB4MDIzOGMwM2Mg
aW4gVGhyZWFkV2VhdmVyOjpXb3JraW5nSGFyZFN0YXRlOjp3YWl0Rm9yQXZhaWxhYmxlSm9iICh0
aGlzPTB4ODc0YTg5MCwgdGg9MHg4NzQzMTkwKSBhdCAuLi8uLi8uLi90aHJlYWR3ZWF2ZXIvV2Vh
dmVyL1dvcmtpbmdIYXJkU3RhdGUuY3BwOjgwCiM3ICAweDAyMzg3ZGJiIGluIFRocmVhZFdlYXZl
cjo6V2VhdmVySW1wbDo6d2FpdEZvckF2YWlsYWJsZUpvYiAodGhpcz0weDg2Y2NiODgsIHRoPTB4
ODc0MzE5MCkgYXQgLi4vLi4vLi4vdGhyZWFkd2VhdmVyL1dlYXZlci9XZWF2ZXJJbXBsLmNwcDoz
NTYKIzggIDB4MDIzOGMxMzIgaW4gVGhyZWFkV2VhdmVyOjpXb3JraW5nSGFyZFN0YXRlOjphcHBs
eUZvcldvcmsgKHRoaXM9MHg4NzRhODkwLCB0aD0weDg3NDMxOTApIGF0IC4uLy4uLy4uL3RocmVh
ZHdlYXZlci9XZWF2ZXIvV29ya2luZ0hhcmRTdGF0ZS5jcHA6NzEKIzkgIDB4MDIzODhkOTMgaW4g
VGhyZWFkV2VhdmVyOjpXZWF2ZXJJbXBsOjphcHBseUZvcldvcmsgKHRoaXM9MHg4NmNjYjg4LCB0
aD0weDg3NDMxOTAsIHByZXZpb3VzPTB4MCkgYXQgLi4vLi4vLi4vdGhyZWFkd2VhdmVyL1dlYXZl
ci9XZWF2ZXJJbXBsLmNwcDozNTEKIzEwIDB4MDIzOGMxNTEgaW4gVGhyZWFkV2VhdmVyOjpXb3Jr
aW5nSGFyZFN0YXRlOjphcHBseUZvcldvcmsgKHRoaXM9MHg4NzRhODkwLCB0aD0weDg3NDMxOTAp
IGF0IC4uLy4uLy4uL3RocmVhZHdlYXZlci9XZWF2ZXIvV29ya2luZ0hhcmRTdGF0ZS5jcHA6NzQK
IzExIDB4MDIzODhkOTMgaW4gVGhyZWFkV2VhdmVyOjpXZWF2ZXJJbXBsOjphcHBseUZvcldvcmsg
KHRoaXM9MHg4NmNjYjg4LCB0aD0weDg3NDMxOTAsIHByZXZpb3VzPTB4MCkgYXQgLi4vLi4vLi4v
dGhyZWFkd2VhdmVyL1dlYXZlci9XZWF2ZXJJbXBsLmNwcDozNTEKIzEyIDB4MDIzOGMxNTEgaW4g
VGhyZWFkV2VhdmVyOjpXb3JraW5nSGFyZFN0YXRlOjphcHBseUZvcldvcmsgKHRoaXM9MHg4NzRh
ODkwLCB0aD0weDg3NDMxOTApIGF0IC4uLy4uLy4uL3RocmVhZHdlYXZlci9XZWF2ZXIvV29ya2lu
Z0hhcmRTdGF0ZS5jcHA6NzQKIzEzIDB4MDIzODhkOTMgaW4gVGhyZWFkV2VhdmVyOjpXZWF2ZXJJ
bXBsOjphcHBseUZvcldvcmsgKHRoaXM9MHg4NmNjYjg4LCB0aD0weDg3NDMxOTAsIHByZXZpb3Vz
PTB4OGYyNDUyOCkgYXQgLi4vLi4vLi4vdGhyZWFkd2VhdmVyL1dlYXZlci9XZWF2ZXJJbXBsLmNw
cDozNTEKIzE0IDB4MDIzOGExYmUgaW4gVGhyZWFkV2VhdmVyOjpUaHJlYWRSdW5IZWxwZXI6OnJ1
biAodGhpcz0weGE3YTlhMjk0LCBwYXJlbnQ9MHg4NmNjYjg4LCB0aD0weDg3NDMxOTApIGF0IC4u
Ly4uLy4uL3RocmVhZHdlYXZlci9XZWF2ZXIvVGhyZWFkLmNwcDo4NwojMTUgMHgwMjM4YThkYiBp
biBUaHJlYWRXZWF2ZXI6OlRocmVhZDo6cnVuICh0aGlzPTB4ODc0MzE5MCkgYXQgLi4vLi4vLi4v
dGhyZWFkd2VhdmVyL1dlYXZlci9UaHJlYWQuY3BwOjE0MgojMTYgMHgwNGNiNmYzOSBpbiBRVGhy
ZWFkUHJpdmF0ZTo6c3RhcnQgKGFyZz0weDg3NDMxOTApIGF0IHRocmVhZC9xdGhyZWFkX3VuaXgu
Y3BwOjI2NgojMTcgMHgwMjUwOTk2ZSBpbiBzdGFydF90aHJlYWQgKCkgZnJvbSAvbGliL3Rscy9p
Njg2L2Ntb3YvbGlicHRocmVhZC5zby4wCiMxOCAweDA2MWI4YTRlIGluIGNsb25lICgpIGZyb20g
L2xpYi90bHMvaTY4Ni9jbW92L2xpYmMuc28uNgoKVGhyZWFkIDYgKFRocmVhZCAweGE2MzZkYjcw
IChMV1AgMjA1NCkpOgojMCAgMHgwMDNkMzQyMiBpbiBfX2tlcm5lbF92c3lzY2FsbCAoKQojMSAg
MHgwMjUwZTAxNSBpbiBwdGhyZWFkX2NvbmRfd2FpdEBAR0xJQkNfMi4zLjIgKCkgZnJvbSAvbGli
L3Rscy9pNjg2L2Ntb3YvbGlicHRocmVhZC5zby4wCiMyICAweDA2MWM1OWRkIGluIHB0aHJlYWRf
Y29uZF93YWl0ICgpIGZyb20gL2xpYi90bHMvaTY4Ni9jbW92L2xpYmMuc28uNgojMyAgMHgwMTY4
ZTgyNyBpbiBRVFdURjo6VENNYWxsb2NfUGFnZUhlYXA6OnNjYXZlbmdlclRocmVhZCAodGhpcz0w
eDE3OGQxYTApIGF0IC4uLzNyZHBhcnR5L2phdmFzY3JpcHRjb3JlL0phdmFTY3JpcHRDb3JlL3d0
Zi9GYXN0TWFsbG9jLmNwcDoyMzU5CiM0ICAweDAxNjhlODcxIGluIFFUV1RGOjpUQ01hbGxvY19Q
YWdlSGVhcDo6cnVuU2NhdmVuZ2VyVGhyZWFkIChjb250ZXh0PTB4MTc4ZDFhMCkgYXQgLi4vM3Jk
cGFydHkvamF2YXNjcmlwdGNvcmUvSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuY3BwOjE0
NjQKIzUgIDB4MDI1MDk5NmUgaW4gc3RhcnRfdGhyZWFkICgpIGZyb20gL2xpYi90bHMvaTY4Ni9j
bW92L2xpYnB0aHJlYWQuc28uMAojNiAgMHgwNjFiOGE0ZSBpbiBjbG9uZSAoKSBmcm9tIC9saWIv
dGxzL2k2ODYvY21vdi9saWJjLnNvLjYKClRocmVhZCA1IChUaHJlYWQgMHhhM2ZmZmI3MCAoTFdQ
IDIwNTYpKToKIzAgIDB4MDAzZDM0MjIgaW4gX19rZXJuZWxfdnN5c2NhbGwgKCkKIzEgIDB4MDI1
MGUwMTUgaW4gcHRocmVhZF9jb25kX3dhaXRAQEdMSUJDXzIuMy4yICgpIGZyb20gL2xpYi90bHMv
aTY4Ni9jbW92L2xpYnB0aHJlYWQuc28uMAojMiAgMHgwNjFjNTlkZCBpbiBwdGhyZWFkX2NvbmRf
d2FpdCAoKSBmcm9tIC9saWIvdGxzL2k2ODYvY21vdi9saWJjLnNvLjYKIzMgIDB4MDRjYjdiMDcg
aW4gUVdhaXRDb25kaXRpb25Qcml2YXRlOjp3YWl0ICh0aGlzPTB4ODZjY2JhMCwgbXV0ZXg9MHg4
NzRjZDA4LCB0aW1lPTQyOTQ5NjcyOTUpIGF0IHRocmVhZC9xd2FpdGNvbmRpdGlvbl91bml4LmNw
cDo4OAojNCAgUVdhaXRDb25kaXRpb246OndhaXQgKHRoaXM9MHg4NmNjYmEwLCBtdXRleD0weDg3
NGNkMDgsIHRpbWU9NDI5NDk2NzI5NSkgYXQgdGhyZWFkL3F3YWl0Y29uZGl0aW9uX3VuaXguY3Bw
OjE2MAojNSAgMHgwMjM4ODg5MCBpbiBUaHJlYWRXZWF2ZXI6OldlYXZlckltcGw6OmJsb2NrVGhy
ZWFkVW50aWxKb2JzQXJlQmVpbmdBc3NpZ25lZCAodGhpcz0weDg2Y2NiODgsIHRoPTB4ODlmYmFm
MCkgYXQgLi4vLi4vLi4vdGhyZWFkd2VhdmVyL1dlYXZlci9XZWF2ZXJJbXBsLmNwcDozNjUKIzYg
IDB4MDIzOGMwM2MgaW4gVGhyZWFkV2VhdmVyOjpXb3JraW5nSGFyZFN0YXRlOjp3YWl0Rm9yQXZh
aWxhYmxlSm9iICh0aGlzPTB4ODc0YTg5MCwgdGg9MHg4OWZiYWYwKSBhdCAuLi8uLi8uLi90aHJl
YWR3ZWF2ZXIvV2VhdmVyL1dvcmtpbmdIYXJkU3RhdGUuY3BwOjgwCiM3ICAweDAyMzg3ZGJiIGlu
IFRocmVhZFdlYXZlcjo6V2VhdmVySW1wbDo6d2FpdEZvckF2YWlsYWJsZUpvYiAodGhpcz0weDg2
Y2NiODgsIHRoPTB4ODlmYmFmMCkgYXQgLi4vLi4vLi4vdGhyZWFkd2VhdmVyL1dlYXZlci9XZWF2
ZXJJbXBsLmNwcDozNTYKIzggIDB4MDIzOGMxMzIgaW4gVGhyZWFkV2VhdmVyOjpXb3JraW5nSGFy
ZFN0YXRlOjphcHBseUZvcldvcmsgKHRoaXM9MHg4NzRhODkwLCB0aD0weDg5ZmJhZjApIGF0IC4u
Ly4uLy4uL3RocmVhZHdlYXZlci9XZWF2ZXIvV29ya2luZ0hhcmRTdGF0ZS5jcHA6NzEKIzkgIDB4
MDIzODhkOTMgaW4gVGhyZWFkV2VhdmVyOjpXZWF2ZXJJbXBsOjphcHBseUZvcldvcmsgKHRoaXM9
MHg4NmNjYjg4LCB0aD0weDg5ZmJhZjAsIHByZXZpb3VzPTB4MCkgYXQgLi4vLi4vLi4vdGhyZWFk
d2VhdmVyL1dlYXZlci9XZWF2ZXJJbXBsLmNwcDozNTEKIzEwIDB4MDIzOGMxNTEgaW4gVGhyZWFk
V2VhdmVyOjpXb3JraW5nSGFyZFN0YXRlOjphcHBseUZvcldvcmsgKHRoaXM9MHg4NzRhODkwLCB0
aD0weDg5ZmJhZjApIGF0IC4uLy4uLy4uL3RocmVhZHdlYXZlci9XZWF2ZXIvV29ya2luZ0hhcmRT
dGF0ZS5jcHA6NzQKIzExIDB4MDIzODhkOTMgaW4gVGhyZWFkV2VhdmVyOjpXZWF2ZXJJbXBsOjph
cHBseUZvcldvcmsgKHRoaXM9MHg4NmNjYjg4LCB0aD0weDg5ZmJhZjAsIHByZXZpb3VzPTB4OTEx
YWY2OCkgYXQgLi4vLi4vLi4vdGhyZWFkd2VhdmVyL1dlYXZlci9XZWF2ZXJJbXBsLmNwcDozNTEK
IzEyIDB4MDIzOGExYmUgaW4gVGhyZWFkV2VhdmVyOjpUaHJlYWRSdW5IZWxwZXI6OnJ1biAodGhp
cz0weGEzZmZmMjk0LCBwYXJlbnQ9MHg4NmNjYjg4LCB0aD0weDg5ZmJhZjApIGF0IC4uLy4uLy4u
L3RocmVhZHdlYXZlci9XZWF2ZXIvVGhyZWFkLmNwcDo4NwojMTMgMHgwMjM4YThkYiBpbiBUaHJl
YWRXZWF2ZXI6OlRocmVhZDo6cnVuICh0aGlzPTB4ODlmYmFmMCkgYXQgLi4vLi4vLi4vdGhyZWFk
d2VhdmVyL1dlYXZlci9UaHJlYWQuY3BwOjE0MgojMTQgMHgwNGNiNmYzOSBpbiBRVGhyZWFkUHJp
dmF0ZTo6c3RhcnQgKGFyZz0weDg5ZmJhZjApIGF0IHRocmVhZC9xdGhyZWFkX3VuaXguY3BwOjI2
NgojMTUgMHgwMjUwOTk2ZSBpbiBzdGFydF90aHJlYWQgKCkgZnJvbSAvbGliL3Rscy9pNjg2L2Nt
b3YvbGlicHRocmVhZC5zby4wCiMxNiAweDA2MWI4YTRlIGluIGNsb25lICgpIGZyb20gL2xpYi90
bHMvaTY4Ni9jbW92L2xpYmMuc28uNgoKVGhyZWFkIDQgKFRocmVhZCAweDlkZjRjYjcwIChMV1Ag
MjA2MSkpOgojMCAgMHgwMDNkMzQyMiBpbiBfX2tlcm5lbF92c3lzY2FsbCAoKQojMSAgMHgwMjUw
ZTAxNSBpbiBwdGhyZWFkX2NvbmRfd2FpdEBAR0xJQkNfMi4zLjIgKCkgZnJvbSAvbGliL3Rscy9p
Njg2L2Ntb3YvbGlicHRocmVhZC5zby4wCiMyICAweDA2MWM1OWRkIGluIHB0aHJlYWRfY29uZF93
YWl0ICgpIGZyb20gL2xpYi90bHMvaTY4Ni9jbW92L2xpYmMuc28uNgojMyAgMHgwNGNiN2IwNyBp
biBRV2FpdENvbmRpdGlvblByaXZhdGU6OndhaXQgKHRoaXM9MHg4NmNjYmEwLCBtdXRleD0weDg3
NGNkMDgsIHRpbWU9NDI5NDk2NzI5NSkgYXQgdGhyZWFkL3F3YWl0Y29uZGl0aW9uX3VuaXguY3Bw
Ojg4CiM0ICBRV2FpdENvbmRpdGlvbjo6d2FpdCAodGhpcz0weDg2Y2NiYTAsIG11dGV4PTB4ODc0
Y2QwOCwgdGltZT00Mjk0OTY3Mjk1KSBhdCB0aHJlYWQvcXdhaXRjb25kaXRpb25fdW5peC5jcHA6
MTYwCiM1ICAweDAyMzg4ODkwIGluIFRocmVhZFdlYXZlcjo6V2VhdmVySW1wbDo6YmxvY2tUaHJl
YWRVbnRpbEpvYnNBcmVCZWluZ0Fzc2lnbmVkICh0aGlzPTB4ODZjY2I4OCwgdGg9MHg4ZDMzMzc4
KSBhdCAuLi8uLi8uLi90aHJlYWR3ZWF2ZXIvV2VhdmVyL1dlYXZlckltcGwuY3BwOjM2NQojNiAg
MHgwMjM4YzAzYyBpbiBUaHJlYWRXZWF2ZXI6OldvcmtpbmdIYXJkU3RhdGU6OndhaXRGb3JBdmFp
bGFibGVKb2IgKHRoaXM9MHg4NzRhODkwLCB0aD0weDhkMzMzNzgpIGF0IC4uLy4uLy4uL3RocmVh
ZHdlYXZlci9XZWF2ZXIvV29ya2luZ0hhcmRTdGF0ZS5jcHA6ODAKIzcgIDB4MDIzODdkYmIgaW4g
VGhyZWFkV2VhdmVyOjpXZWF2ZXJJbXBsOjp3YWl0Rm9yQXZhaWxhYmxlSm9iICh0aGlzPTB4ODZj
Y2I4OCwgdGg9MHg4ZDMzMzc4KSBhdCAuLi8uLi8uLi90aHJlYWR3ZWF2ZXIvV2VhdmVyL1dlYXZl
ckltcGwuY3BwOjM1NgojOCAgMHgwMjM4YzEzMiBpbiBUaHJlYWRXZWF2ZXI6OldvcmtpbmdIYXJk
U3RhdGU6OmFwcGx5Rm9yV29yayAodGhpcz0weDg3NGE4OTAsIHRoPTB4OGQzMzM3OCkgYXQgLi4v
Li4vLi4vdGhyZWFkd2VhdmVyL1dlYXZlci9Xb3JraW5nSGFyZFN0YXRlLmNwcDo3MQojOSAgMHgw
MjM4OGQ5MyBpbiBUaHJlYWRXZWF2ZXI6OldlYXZlckltcGw6OmFwcGx5Rm9yV29yayAodGhpcz0w
eDg2Y2NiODgsIHRoPTB4OGQzMzM3OCwgcHJldmlvdXM9MHg5MDFmM2Q4KSBhdCAuLi8uLi8uLi90
aHJlYWR3ZWF2ZXIvV2VhdmVyL1dlYXZlckltcGwuY3BwOjM1MQojMTAgMHgwMjM4YTFiZSBpbiBU
aHJlYWRXZWF2ZXI6OlRocmVhZFJ1bkhlbHBlcjo6cnVuICh0aGlzPTB4OWRmNGMyOTQsIHBhcmVu
dD0weDg2Y2NiODgsIHRoPTB4OGQzMzM3OCkgYXQgLi4vLi4vLi4vdGhyZWFkd2VhdmVyL1dlYXZl
ci9UaHJlYWQuY3BwOjg3CiMxMSAweDAyMzhhOGRiIGluIFRocmVhZFdlYXZlcjo6VGhyZWFkOjpy
dW4gKHRoaXM9MHg4ZDMzMzc4KSBhdCAuLi8uLi8uLi90aHJlYWR3ZWF2ZXIvV2VhdmVyL1RocmVh
ZC5jcHA6MTQyCiMxMiAweDA0Y2I2ZjM5IGluIFFUaHJlYWRQcml2YXRlOjpzdGFydCAoYXJnPTB4
OGQzMzM3OCkgYXQgdGhyZWFkL3F0aHJlYWRfdW5peC5jcHA6MjY2CiMxMyAweDAyNTA5OTZlIGlu
IHN0YXJ0X3RocmVhZCAoKSBmcm9tIC9saWIvdGxzL2k2ODYvY21vdi9saWJwdGhyZWFkLnNvLjAK
IzE0IDB4MDYxYjhhNGUgaW4gY2xvbmUgKCkgZnJvbSAvbGliL3Rscy9pNjg2L2Ntb3YvbGliYy5z
by42CgpUaHJlYWQgMyAoVGhyZWFkIDB4OWQ3NDNiNzAgKExXUCAyMDYyKSk6CiMwICAweDAwM2Qz
NDIyIGluIF9fa2VybmVsX3ZzeXNjYWxsICgpCiMxICAweDAyNTBlMDE1IGluIHB0aHJlYWRfY29u
ZF93YWl0QEBHTElCQ18yLjMuMiAoKSBmcm9tIC9saWIvdGxzL2k2ODYvY21vdi9saWJwdGhyZWFk
LnNvLjAKIzIgIDB4MDYxYzU5ZGQgaW4gcHRocmVhZF9jb25kX3dhaXQgKCkgZnJvbSAvbGliL3Rs
cy9pNjg2L2Ntb3YvbGliYy5zby42CiMzICAweGI3MjViNmFkIGluID8/ICgpIGZyb20gL3Vzci9s
aWIvbGliUXRXZWJLaXQuc28uNAojNCAgMHhiNzI1Yjc5MSBpbiA/PyAoKSBmcm9tIC91c3IvbGli
L2xpYlF0V2ViS2l0LnNvLjQKIzUgIDB4MDI1MDk5NmUgaW4gc3RhcnRfdGhyZWFkICgpIGZyb20g
L2xpYi90bHMvaTY4Ni9jbW92L2xpYnB0aHJlYWQuc28uMAojNiAgMHgwNjFiOGE0ZSBpbiBjbG9u
ZSAoKSBmcm9tIC9saWIvdGxzL2k2ODYvY21vdi9saWJjLnNvLjYKClRocmVhZCAyIChUaHJlYWQg
MHg5Y2Q5YWI3MCAoTFdQIDIwNjQpKToKIzAgIDB4MDAzZDM0MjIgaW4gX19rZXJuZWxfdnN5c2Nh
bGwgKCkKIzEgIDB4MDI1MGUwMTUgaW4gcHRocmVhZF9jb25kX3dhaXRAQEdMSUJDXzIuMy4yICgp
IGZyb20gL2xpYi90bHMvaTY4Ni9jbW92L2xpYnB0aHJlYWQuc28uMAojMiAgMHgwNjFjNTlkZCBp
biBwdGhyZWFkX2NvbmRfd2FpdCAoKSBmcm9tIC9saWIvdGxzL2k2ODYvY21vdi9saWJjLnNvLjYK
IzMgIDB4MDRjYjdiMDcgaW4gUVdhaXRDb25kaXRpb25Qcml2YXRlOjp3YWl0ICh0aGlzPTB4ODZj
Y2JhMCwgbXV0ZXg9MHg4NzRjZDA4LCB0aW1lPTQyOTQ5NjcyOTUpIGF0IHRocmVhZC9xd2FpdGNv
bmRpdGlvbl91bml4LmNwcDo4OAojNCAgUVdhaXRDb25kaXRpb246OndhaXQgKHRoaXM9MHg4NmNj
YmEwLCBtdXRleD0weDg3NGNkMDgsIHRpbWU9NDI5NDk2NzI5NSkgYXQgdGhyZWFkL3F3YWl0Y29u
ZGl0aW9uX3VuaXguY3BwOjE2MAojNSAgMHgwMjM4ODg5MCBpbiBUaHJlYWRXZWF2ZXI6OldlYXZl
ckltcGw6OmJsb2NrVGhyZWFkVW50aWxKb2JzQXJlQmVpbmdBc3NpZ25lZCAodGhpcz0weDg2Y2Ni
ODgsIHRoPTB4ODg3MjEyMCkgYXQgLi4vLi4vLi4vdGhyZWFkd2VhdmVyL1dlYXZlci9XZWF2ZXJJ
bXBsLmNwcDozNjUKIzYgIDB4MDIzOGMwM2MgaW4gVGhyZWFkV2VhdmVyOjpXb3JraW5nSGFyZFN0
YXRlOjp3YWl0Rm9yQXZhaWxhYmxlSm9iICh0aGlzPTB4ODc0YTg5MCwgdGg9MHg4ODcyMTIwKSBh
dCAuLi8uLi8uLi90aHJlYWR3ZWF2ZXIvV2VhdmVyL1dvcmtpbmdIYXJkU3RhdGUuY3BwOjgwCiM3
ICAweDAyMzg3ZGJiIGluIFRocmVhZFdlYXZlcjo6V2VhdmVySW1wbDo6d2FpdEZvckF2YWlsYWJs
ZUpvYiAodGhpcz0weDg2Y2NiODgsIHRoPTB4ODg3MjEyMCkgYXQgLi4vLi4vLi4vdGhyZWFkd2Vh
dmVyL1dlYXZlci9XZWF2ZXJJbXBsLmNwcDozNTYKIzggIDB4MDIzOGMxMzIgaW4gVGhyZWFkV2Vh
dmVyOjpXb3JraW5nSGFyZFN0YXRlOjphcHBseUZvcldvcmsgKHRoaXM9MHg4NzRhODkwLCB0aD0w
eDg4NzIxMjApIGF0IC4uLy4uLy4uL3RocmVhZHdlYXZlci9XZWF2ZXIvV29ya2luZ0hhcmRTdGF0
ZS5jcHA6NzEKIzkgIDB4MDIzODhkOTMgaW4gVGhyZWFkV2VhdmVyOjpXZWF2ZXJJbXBsOjphcHBs
eUZvcldvcmsgKHRoaXM9MHg4NmNjYjg4LCB0aD0weDg4NzIxMjAsIHByZXZpb3VzPTB4MCkgYXQg
Li4vLi4vLi4vdGhyZWFkd2VhdmVyL1dlYXZlci9XZWF2ZXJJbXBsLmNwcDozNTEKIzEwIDB4MDIz
OGMxNTEgaW4gVGhyZWFkV2VhdmVyOjpXb3JraW5nSGFyZFN0YXRlOjphcHBseUZvcldvcmsgKHRo
aXM9MHg4NzRhODkwLCB0aD0weDg4NzIxMjApIGF0IC4uLy4uLy4uL3RocmVhZHdlYXZlci9XZWF2
ZXIvV29ya2luZ0hhcmRTdGF0ZS5jcHA6NzQKIzExIDB4MDIzODhkOTMgaW4gVGhyZWFkV2VhdmVy
OjpXZWF2ZXJJbXBsOjphcHBseUZvcldvcmsgKHRoaXM9MHg4NmNjYjg4LCB0aD0weDg4NzIxMjAs
IHByZXZpb3VzPTB4MCkgYXQgLi4vLi4vLi4vdGhyZWFkd2VhdmVyL1dlYXZlci9XZWF2ZXJJbXBs
LmNwcDozNTEKIzEyIDB4MDIzOGMxNTEgaW4gVGhyZWFkV2VhdmVyOjpXb3JraW5nSGFyZFN0YXRl
OjphcHBseUZvcldvcmsgKHRoaXM9MHg4NzRhODkwLCB0aD0weDg4NzIxMjApIGF0IC4uLy4uLy4u
L3RocmVhZHdlYXZlci9XZWF2ZXIvV29ya2luZ0hhcmRTdGF0ZS5jcHA6NzQKIzEzIDB4MDIzODhk
OTMgaW4gVGhyZWFkV2VhdmVyOjpXZWF2ZXJJbXBsOjphcHBseUZvcldvcmsgKHRoaXM9MHg4NmNj
Yjg4LCB0aD0weDg4NzIxMjAsIHByZXZpb3VzPTB4MCkgYXQgLi4vLi4vLi4vdGhyZWFkd2VhdmVy
L1dlYXZlci9XZWF2ZXJJbXBsLmNwcDozNTEKIzE0IDB4MDIzOGMxNTEgaW4gVGhyZWFkV2VhdmVy
OjpXb3JraW5nSGFyZFN0YXRlOjphcHBseUZvcldvcmsgKHRoaXM9MHg4NzRhODkwLCB0aD0weDg4
NzIxMjApIGF0IC4uLy4uLy4uL3RocmVhZHdlYXZlci9XZWF2ZXIvV29ya2luZ0hhcmRTdGF0ZS5j
cHA6NzQKIzE1IDB4MDIzODhkOTMgaW4gVGhyZWFkV2VhdmVyOjpXZWF2ZXJJbXBsOjphcHBseUZv
cldvcmsgKHRoaXM9MHg4NmNjYjg4LCB0aD0weDg4NzIxMjAsIHByZXZpb3VzPTB4MCkgYXQgLi4v
Li4vLi4vdGhyZWFkd2VhdmVyL1dlYXZlci9XZWF2ZXJJbXBsLmNwcDozNTEKIzE2IDB4MDIzOGMx
NTEgaW4gVGhyZWFkV2VhdmVyOjpXb3JraW5nSGFyZFN0YXRlOjphcHBseUZvcldvcmsgKHRoaXM9
MHg4NzRhODkwLCB0aD0weDg4NzIxMjApIGF0IC4uLy4uLy4uL3RocmVhZHdlYXZlci9XZWF2ZXIv
V29ya2luZ0hhcmRTdGF0ZS5jcHA6NzQKIzE3IDB4MDIzODhkOTMgaW4gVGhyZWFkV2VhdmVyOjpX
ZWF2ZXJJbXBsOjphcHBseUZvcldvcmsgKHRoaXM9MHg4NmNjYjg4LCB0aD0weDg4NzIxMjAsIHBy
ZXZpb3VzPTB4MCkgYXQgLi4vLi4vLi4vdGhyZWFkd2VhdmVyL1dlYXZlci9XZWF2ZXJJbXBsLmNw
cDozNTEKIzE4IDB4MDIzOGMxNTEgaW4gVGhyZWFkV2VhdmVyOjpXb3JraW5nSGFyZFN0YXRlOjph
cHBseUZvcldvcmsgKHRoaXM9MHg4NzRhODkwLCB0aD0weDg4NzIxMjApIGF0IC4uLy4uLy4uL3Ro
cmVhZHdlYXZlci9XZWF2ZXIvV29ya2luZ0hhcmRTdGF0ZS5jcHA6NzQKIzE5IDB4MDIzODhkOTMg
aW4gVGhyZWFkV2VhdmVyOjpXZWF2ZXJJbXBsOjphcHBseUZvcldvcmsgKHRoaXM9MHg4NmNjYjg4
LCB0aD0weDg4NzIxMjAsIHByZXZpb3VzPTB4MCkgYXQgLi4vLi4vLi4vdGhyZWFkd2VhdmVyL1dl
YXZlci9XZWF2ZXJJbXBsLmNwcDozNTEKIzIwIDB4MDIzOGExYmUgaW4gVGhyZWFkV2VhdmVyOjpU
aHJlYWRSdW5IZWxwZXI6OnJ1biAodGhpcz0weDljZDlhMjk0LCBwYXJlbnQ9MHg4NmNjYjg4LCB0
aD0weDg4NzIxMjApIGF0IC4uLy4uLy4uL3RocmVhZHdlYXZlci9XZWF2ZXIvVGhyZWFkLmNwcDo4
NwojMjEgMHgwMjM4YThkYiBpbiBUaHJlYWRXZWF2ZXI6OlRocmVhZDo6cnVuICh0aGlzPTB4ODg3
MjEyMCkgYXQgLi4vLi4vLi4vdGhyZWFkd2VhdmVyL1dlYXZlci9UaHJlYWQuY3BwOjE0MgojMjIg
MHgwNGNiNmYzOSBpbiBRVGhyZWFkUHJpdmF0ZTo6c3RhcnQgKGFyZz0weDg4NzIxMjApIGF0IHRo
cmVhZC9xdGhyZWFkX3VuaXguY3BwOjI2NgojMjMgMHgwMjUwOTk2ZSBpbiBzdGFydF90aHJlYWQg
KCkgZnJvbSAvbGliL3Rscy9pNjg2L2Ntb3YvbGlicHRocmVhZC5zby4wCiMyNCAweDA2MWI4YTRl
IGluIGNsb25lICgpIGZyb20gL2xpYi90bHMvaTY4Ni9jbW92L2xpYmMuc28uNgoKVGhyZWFkIDEg
KFRocmVhZCAweGI2NTQwNzcwIChMV1AgMTk3NCkpOgpbS0NyYXNoIEhhbmRsZXJdCiM3ICBRTW9k
ZWxJbmRleCAodGhpcz0weDhhMGY3NzgsIGNoaWxkPS4uLikgYXQgLi4vLi4vaW5jbHVkZS9RdENv
cmUvLi4vLi4vc3JjL2NvcmVsaWIva2VybmVsL3FhYnN0cmFjdGl0ZW1tb2RlbC5oOjY1CiM4ICBR
U29ydEZpbHRlclByb3h5TW9kZWw6OnBhcmVudCAodGhpcz0weDhhMGY3NzgsIGNoaWxkPS4uLikg
YXQgaXRlbXZpZXdzL3Fzb3J0ZmlsdGVycHJveHltb2RlbC5jcHA6MTY1NgojOSAgMHgwNmUzZDNl
MiBpbiBRTW9kZWxJbmRleDo6cGFyZW50ICh0aGlzPTB4OGEzYzcxOCwgaW5kZXg9Li4uKSBhdCAu
Li8uLi9pbmNsdWRlL1F0Q29yZS8uLi8uLi9zcmMvY29yZWxpYi9rZXJuZWwvcWFic3RyYWN0aXRl
bW1vZGVsLmg6Mzg5CiMxMCBRVHJlZVZpZXc6OmluZGV4Um93U2l6ZUhpbnQgKHRoaXM9MHg4YTNj
NzE4LCBpbmRleD0uLi4pIGF0IGl0ZW12aWV3cy9xdHJlZXZpZXcuY3BwOjI3NTgKIzExIDB4MDZl
M2RjMWIgaW4gUVRyZWVWaWV3UHJpdmF0ZTo6aXRlbUhlaWdodCAodGhpcz0weDhhMWU5NDAsIGl0
ZW09MikgYXQgaXRlbXZpZXdzL3F0cmVldmlldy5jcHA6MzIyOQojMTIgMHgwNmUzZGYzMCBpbiBR
VHJlZVZpZXdQcml2YXRlOjp1cGRhdGVTY3JvbGxCYXJzICh0aGlzPTB4OGExZTk0MCkgYXQgaXRl
bXZpZXdzL3F0cmVldmlldy5jcHA6MzQ1MgojMTMgMHgwNmUzZTI0NSBpbiBRVHJlZVZpZXc6OnVw
ZGF0ZUdlb21ldHJpZXMgKHRoaXM9MHg4YTNjNzE4KSBhdCBpdGVtdmlld3MvcXRyZWV2aWV3LmNw
cDoyNjg2CiMxNCAweDA2ZGVlNjY0IGluIFFBYnN0cmFjdEl0ZW1WaWV3OjpyZXNpemVFdmVudCAo
dGhpcz0weDhhM2M3MTgsIGV2ZW50PTB4YmZjZmQwODgpIGF0IGl0ZW12aWV3cy9xYWJzdHJhY3Rp
dGVtdmlldy5jcHA6MjM4OAojMTUgMHgwNjg4NTQ3MyBpbiBRV2lkZ2V0OjpldmVudCAodGhpcz0w
eDhhM2M3MTgsIGV2ZW50PTB4YmZjZmQwODgpIGF0IGtlcm5lbC9xd2lkZ2V0LmNwcDo4MzQxCiMx
NiAweDA2Y2E1MWEzIGluIFFGcmFtZTo6ZXZlbnQgKHRoaXM9MHg4YTNjNzE4LCBlPTB4YmZjZmQw
ODgpIGF0IHdpZGdldHMvcWZyYW1lLmNwcDo1NTcKIzE3IDB4MDZkNDFmZDIgaW4gUUFic3RyYWN0
U2Nyb2xsQXJlYTo6dmlld3BvcnRFdmVudCAodGhpcz0weDhhMTk3ODgsIGU9MHg4YTBmNzc4KSBh
dCB3aWRnZXRzL3FhYnN0cmFjdHNjcm9sbGFyZWEuY3BwOjEwNDMKIzE4IDB4MDZkZmRhYjcgaW4g
UUFic3RyYWN0SXRlbVZpZXc6OnZpZXdwb3J0RXZlbnQgKHRoaXM9MHg4YTNjNzE4LCBldmVudD0w
eGJmY2ZkMDg4KSBhdCBpdGVtdmlld3MvcWFic3RyYWN0aXRlbXZpZXcuY3BwOjE2MTkKIzE5IDB4
MDZlNDAzYTMgaW4gUVRyZWVWaWV3Ojp2aWV3cG9ydEV2ZW50ICh0aGlzPTB4OGEzYzcxOCwgZXZl
bnQ9MHhiZmNmZDA4OCkgYXQgaXRlbXZpZXdzL3F0cmVldmlldy5jcHA6MTI1NgojMjAgMHgwNmQ0
NGExNSBpbiBRQWJzdHJhY3RTY3JvbGxBcmVhUHJpdmF0ZTo6dmlld3BvcnRFdmVudCAodGhpcz0w
eDhhNThmNTgsIG89MHg4YTBkM2YwLCBlPTB4YmZjZmQwODgpIGF0IHdpZGdldHMvcWFic3RyYWN0
c2Nyb2xsYXJlYV9wLmg6MTAwCiMyMSBRQWJzdHJhY3RTY3JvbGxBcmVhRmlsdGVyOjpldmVudEZp
bHRlciAodGhpcz0weDhhNThmNTgsIG89MHg4YTBkM2YwLCBlPTB4YmZjZmQwODgpIGF0IHdpZGdl
dHMvcWFic3RyYWN0c2Nyb2xsYXJlYV9wLmg6MTE2CiMyMiAweDA0ZGI3NzRhIGluIFFDb3JlQXBw
bGljYXRpb25Qcml2YXRlOjpzZW5kVGhyb3VnaE9iamVjdEV2ZW50RmlsdGVycyAodGhpcz0weDgx
NTdiZDAsIHJlY2VpdmVyPTB4OGEwZDNmMCwgZXZlbnQ9MHhiZmNmZDA4OCkgYXQga2VybmVsL3Fj
b3JlYXBwbGljYXRpb24uY3BwOjg0NwojMjMgMHgwNjgyNzcwOSBpbiBRQXBwbGljYXRpb25Qcml2
YXRlOjpub3RpZnlfaGVscGVyICh0aGlzPTB4ODE1N2JkMCwgcmVjZWl2ZXI9MHg4YTBkM2YwLCBl
PTB4YmZjZmQwODgpIGF0IGtlcm5lbC9xYXBwbGljYXRpb24uY3BwOjQzOTIKIzI0IDB4MDY4MmQ4
MTkgaW4gUUFwcGxpY2F0aW9uOjpub3RpZnkgKHRoaXM9MHhiZmNmZjg3YywgcmVjZWl2ZXI9MHg4
YTBkM2YwLCBlPTB4YmZjZmQwODgpIGF0IGtlcm5lbC9xYXBwbGljYXRpb24uY3BwOjQzNjEKIzI1
IDB4MDA3YTU2M2EgaW4gS0FwcGxpY2F0aW9uOjpub3RpZnkgKHRoaXM9MHhiZmNmZjg3YywgcmVj
ZWl2ZXI9MHg4YTBkM2YwLCBldmVudD0weGJmY2ZkMDg4KSBhdCAuLi8uLi9rZGV1aS9rZXJuZWwv
a2FwcGxpY2F0aW9uLmNwcDozMTAKIzI2IDB4MDRkYjdmZWIgaW4gUUNvcmVBcHBsaWNhdGlvbjo6
bm90aWZ5SW50ZXJuYWwgKHRoaXM9MHhiZmNmZjg3YywgcmVjZWl2ZXI9MHg4YTBkM2YwLCBldmVu
dD0weGJmY2ZkMDg4KSBhdCBrZXJuZWwvcWNvcmVhcHBsaWNhdGlvbi5jcHA6NzMyCiMyNyAweDA2
ODg0NTk5IGluIFFDb3JlQXBwbGljYXRpb246OnNlbmRFdmVudCAodGhpcz0weDhhNWExNDgsIHJl
Y3Vyc2l2ZT1mYWxzZSwgZGlzYWJsZVVwZGF0ZXM9ZmFsc2UpIGF0IC4uLy4uL2luY2x1ZGUvUXRD
b3JlLy4uLy4uL3NyYy9jb3JlbGliL2tlcm5lbC9xY29yZWFwcGxpY2F0aW9uLmg6MjE1CiMyOCBR
V2lkZ2V0UHJpdmF0ZTo6c2VuZFBlbmRpbmdNb3ZlQW5kUmVzaXplRXZlbnRzICh0aGlzPTB4OGE1
YTE0OCwgcmVjdXJzaXZlPWZhbHNlLCBkaXNhYmxlVXBkYXRlcz1mYWxzZSkgYXQga2VybmVsL3F3
aWRnZXQuY3BwOjcyNTcKIzI5IDB4MDY4ODlkNjkgaW4gUVdpZGdldFByaXZhdGU6OnNob3dfaGVs
cGVyICh0aGlzPTB4OGE1YTE0OCkgYXQga2VybmVsL3F3aWRnZXQuY3BwOjczMDgKIzMwIDB4MDY4
OGI2ZGIgaW4gUVdpZGdldDo6c2V0VmlzaWJsZSAodGhpcz0weDhhMGQzZjAsIHZpc2libGU9dHJ1
ZSkgYXQga2VybmVsL3F3aWRnZXQuY3BwOjc1ODkKIzMxIDB4MDY4OGEyNjAgaW4gUVdpZGdldDo6
c2hvdyAodGhpcz0weDhhMWU5NDAsIHNwb250YW5lb3VzPWZhbHNlKSBhdCAuLi8uLi9pbmNsdWRl
L1F0R3VpLy4uLy4uL3NyYy9ndWkva2VybmVsL3F3aWRnZXQuaDo0ODcKIzMyIFFXaWRnZXRQcml2
YXRlOjpzaG93Q2hpbGRyZW4gKHRoaXM9MHg4YTFlOTQwLCBzcG9udGFuZW91cz1mYWxzZSkgYXQg
a2VybmVsL3F3aWRnZXQuY3BwOjc2NzcKIzMzIDB4MDY4ODlkOTEgaW4gUVdpZGdldFByaXZhdGU6
OnNob3dfaGVscGVyICh0aGlzPTB4OGExZTk0MCkgYXQga2VybmVsL3F3aWRnZXQuY3BwOjczMTQK
IzM0IDB4MDY4OGI2ZGIgaW4gUVdpZGdldDo6c2V0VmlzaWJsZSAodGhpcz0weDhhM2M3MTgsIHZp
c2libGU9dHJ1ZSkgYXQga2VybmVsL3F3aWRnZXQuY3BwOjc1ODkKIzM1IDB4MDY4OGEyNjAgaW4g
UVdpZGdldDo6c2hvdyAodGhpcz0weDhhNTEyMjAsIHNwb250YW5lb3VzPWZhbHNlKSBhdCAuLi8u
Li9pbmNsdWRlL1F0R3VpLy4uLy4uL3NyYy9ndWkva2VybmVsL3F3aWRnZXQuaDo0ODcKIzM2IFFX
aWRnZXRQcml2YXRlOjpzaG93Q2hpbGRyZW4gKHRoaXM9MHg4YTUxMjIwLCBzcG9udGFuZW91cz1m
YWxzZSkgYXQga2VybmVsL3F3aWRnZXQuY3BwOjc2NzcKIzM3IDB4MDY4ODlkOTEgaW4gUVdpZGdl
dFByaXZhdGU6OnNob3dfaGVscGVyICh0aGlzPTB4OGE1MTIyMCkgYXQga2VybmVsL3F3aWRnZXQu
Y3BwOjczMTQKIzM4IDB4MDY4OGI2ZGIgaW4gUVdpZGdldDo6c2V0VmlzaWJsZSAodGhpcz0weDhh
MGY4YTgsIHZpc2libGU9dHJ1ZSkgYXQga2VybmVsL3F3aWRnZXQuY3BwOjc1ODkKIzM5IDB4MDBh
OTU4OTQgaW4gUVdpZGdldDo6c2hvdyAodGhpcz0weDg4YTE1NDgsIG5hbWU9Li4uKSBhdCAvdXNy
L2luY2x1ZGUvcXQ0L1F0R3VpL3F3aWRnZXQuaDo0ODcKIzQwIEJyb3dzZXJDYXRlZ29yeUxpc3Q6
OnNob3dDYXRlZ29yeSAodGhpcz0weDg4YTE1NDgsIG5hbWU9Li4uKSBhdCAuLi8uLi9zcmMvYnJv
d3NlcnMvQnJvd3NlckNhdGVnb3J5TGlzdC5jcHA6MTY4CiM0MSAweDAwYTk1OTEzIGluIEJyb3dz
ZXJDYXRlZ29yeUxpc3Q6OmFjdGl2YXRlICh0aGlzPTB4ODhhMTU0OCwgY2F0ZWdvcnk9MHg4YTBm
OGE4KSBhdCAuLi8uLi9zcmMvYnJvd3NlcnMvQnJvd3NlckNhdGVnb3J5TGlzdC5jcHA6MzUxCiM0
MiAweDAwYTkxYTMwIGluIEJyb3dzZXJDYXRlZ29yeTo6YWN0aXZhdGUgKHRoaXM9MHg4YTBmOGE4
KSBhdCAuLi8uLi9zcmMvYnJvd3NlcnMvQnJvd3NlckNhdGVnb3J5LmNwcDoxMTYKIzQzIDB4MDBh
OTI4MDEgaW4gQnJvd3NlckNhdGVnb3J5OjpxdF9tZXRhY2FsbCAodGhpcz0weDhhMGY4YTgsIF9j
PVFNZXRhT2JqZWN0OjpJbnZva2VNZXRhTWV0aG9kLCBfaWQ9MjcsIF9hPTB4YmZjZmQ3MjgpIGF0
IC4vQnJvd3NlckNhdGVnb3J5Lm1vYzo3MwojNDQgMHgwMGUyMTA1YSBpbiBQbGF5bGlzdEJyb3dz
ZXJOUzo6UGxheWxpc3RCcm93c2VyQ2F0ZWdvcnk6OnF0X21ldGFjYWxsICh0aGlzPTB4OGEwZjhh
OCwgX2M9UU1ldGFPYmplY3Q6Okludm9rZU1ldGFNZXRob2QsIF9pZD0yNywgX2E9MHhiZmNmZDcy
OCkgYXQgLi9QbGF5bGlzdEJyb3dzZXJDYXRlZ29yeS5tb2M6NzcKIzQ1IDB4MDBlNTNlZmEgaW4g
UGxheWxpc3RCcm93c2VyTlM6OlBvZGNhc3RDYXRlZ29yeTo6cXRfbWV0YWNhbGwgKHRoaXM9MHg4
YTBmOGE4LCBfYz1RTWV0YU9iamVjdDo6SW52b2tlTWV0YU1ldGhvZCwgX2lkPTI3LCBfYT0weGJm
Y2ZkNzI4KSBhdCAuL1BvZGNhc3RDYXRlZ29yeS5tb2M6NzAKIzQ2IDB4MDRkYmRkNGEgaW4gUU1l
dGFPYmplY3Q6Om1ldGFjYWxsIChvYmplY3Q9MHg4YTBmOGE4LCBjbD0xNDQ4MDc4MTYsIGlkeD0y
NywgYXJndj0weGJmY2ZkNzI4KSBhdCBrZXJuZWwvcW1ldGFvYmplY3QuY3BwOjIzNwojNDcgMHgw
NGRkMGFiNSBpbiBRTWV0YU9iamVjdDo6YWN0aXZhdGUgKHNlbmRlcj0weDkxNWY2NjAsIG09MHg3
MWExMzcwLCBsb2NhbF9zaWduYWxfaW5kZXg9MSwgYXJndj0weGJmY2ZkNzI4KSBhdCBrZXJuZWwv
cW9iamVjdC5jcHA6MzI4MAojNDggMHgwNjgxZjc3OSBpbiBRQWN0aW9uOjp0cmlnZ2VyZWQgKHRo
aXM9MHg5MTVmNjYwLCBfdDE9ZmFsc2UpIGF0IC5tb2MvcmVsZWFzZS1zaGFyZWQvbW9jX3FhY3Rp
b24uY3BwOjI2MwojNDkgMHgwNjgyMTA4YyBpbiBRQWN0aW9uOjphY3RpdmF0ZSAodGhpcz0weDkx
NWY2NjAsIGV2ZW50PVFBY3Rpb246OlRyaWdnZXIpIGF0IGtlcm5lbC9xYWN0aW9uLmNwcDoxMjU2
CiM1MCAweDA2Y2VhZTlmIGluIFFNZW51UHJpdmF0ZTo6YWN0aXZhdGVDYXVzZWRTdGFjayAodGhp
cz0weDkxOGMwMDgsIGNhdXNlZFN0YWNrPS4uLiwgYWN0aW9uPTB4OTE1ZjY2MCwgYWN0aW9uX2U9
UUFjdGlvbjo6VHJpZ2dlciwgc2VsZj10cnVlKSBhdCB3aWRnZXRzL3FtZW51LmNwcDo5OTMKIzUx
IDB4MDZjZjEwZGIgaW4gUU1lbnVQcml2YXRlOjphY3RpdmF0ZUFjdGlvbiAodGhpcz0weDkxOGMw
MDgsIGFjdGlvbj0weDkxNWY2NjAsIGFjdGlvbl9lPVFBY3Rpb246OlRyaWdnZXIsIHNlbGY9PHZh
bHVlIG9wdGltaXplZCBvdXQ+KSBhdCB3aWRnZXRzL3FtZW51LmNwcDoxMDg1CiM1MiAweDA2Y2Yx
YzcwIGluIFFNZW51Ojptb3VzZVJlbGVhc2VFdmVudCAodGhpcz0weDhmYzg4OTAsIGU9MHhiZmNm
ZGYxMCkgYXQgd2lkZ2V0cy9xbWVudS5jcHA6MjMwMQojNTMgMHgwNjg4NTYyOCBpbiBRV2lkZ2V0
OjpldmVudCAodGhpcz0weDhmYzg4OTAsIGV2ZW50PTB4YmZjZmRmMTApIGF0IGtlcm5lbC9xd2lk
Z2V0LmNwcDo4MTg3CiM1NCAweDA2Y2YzNmJmIGluIFFNZW51OjpldmVudCAodGhpcz0weDhmYzg4
OTAsIGU9MHhiZmNmZGYxMCkgYXQgd2lkZ2V0cy9xbWVudS5jcHA6MjQxMAojNTUgMHgwNjgyNzcy
YyBpbiBRQXBwbGljYXRpb25Qcml2YXRlOjpub3RpZnlfaGVscGVyICh0aGlzPTB4ODE1N2JkMCwg
cmVjZWl2ZXI9MHg4ZmM4ODkwLCBlPTB4YmZjZmRmMTApIGF0IGtlcm5lbC9xYXBwbGljYXRpb24u
Y3BwOjQzOTYKIzU2IDB4MDY4MmUxMTcgaW4gUUFwcGxpY2F0aW9uOjpub3RpZnkgKHRoaXM9MHhi
ZmNmZjg3YywgcmVjZWl2ZXI9MHg4ZmM4ODkwLCBlPTB4YmZjZmRmMTApIGF0IGtlcm5lbC9xYXBw
bGljYXRpb24uY3BwOjM5NTkKIzU3IDB4MDA3YTU2M2EgaW4gS0FwcGxpY2F0aW9uOjpub3RpZnkg
KHRoaXM9MHhiZmNmZjg3YywgcmVjZWl2ZXI9MHg4ZmM4ODkwLCBldmVudD0weGJmY2ZkZjEwKSBh
dCAuLi8uLi9rZGV1aS9rZXJuZWwva2FwcGxpY2F0aW9uLmNwcDozMTAKIzU4IDB4MDRkYjdmZWIg
aW4gUUNvcmVBcHBsaWNhdGlvbjo6bm90aWZ5SW50ZXJuYWwgKHRoaXM9MHhiZmNmZjg3YywgcmVj
ZWl2ZXI9MHg4ZmM4ODkwLCBldmVudD0weGJmY2ZkZjEwKSBhdCBrZXJuZWwvcWNvcmVhcHBsaWNh
dGlvbi5jcHA6NzMyCiM1OSAweDA2ODJjN2MyIGluIFFDb3JlQXBwbGljYXRpb246OnNlbmRFdmVu
dCAocmVjZWl2ZXI9MHg4ZmM4ODkwLCBldmVudD0weGJmY2ZkZjEwLCBhbGllbldpZGdldD0weDAs
IG5hdGl2ZVdpZGdldD0weDhmYzg4OTAsIGJ1dHRvbkRvd249MHg3MWJkM2MwLCBsYXN0TW91c2VS
ZWNlaXZlcj0uLi4sIHNwb250YW5lb3VzPXRydWUpCiAgICBhdCAuLi8uLi9pbmNsdWRlL1F0Q29y
ZS8uLi8uLi9zcmMvY29yZWxpYi9rZXJuZWwvcWNvcmVhcHBsaWNhdGlvbi5oOjIxNQojNjAgUUFw
cGxpY2F0aW9uUHJpdmF0ZTo6c2VuZE1vdXNlRXZlbnQgKHJlY2VpdmVyPTB4OGZjODg5MCwgZXZl
bnQ9MHhiZmNmZGYxMCwgYWxpZW5XaWRnZXQ9MHgwLCBuYXRpdmVXaWRnZXQ9MHg4ZmM4ODkwLCBi
dXR0b25Eb3duPTB4NzFiZDNjMCwgbGFzdE1vdXNlUmVjZWl2ZXI9Li4uLCBzcG9udGFuZW91cz10
cnVlKQogICAgYXQga2VybmVsL3FhcHBsaWNhdGlvbi5jcHA6MzA1OAojNjEgMHgwNjhiYjdjZiBp
biBRRVRXaWRnZXQ6OnRyYW5zbGF0ZU1vdXNlRXZlbnQgKHRoaXM9MHg4ZmM4ODkwLCBldmVudD0w
eGJmY2ZlNDJjKSBhdCBrZXJuZWwvcWFwcGxpY2F0aW9uX3gxMS5jcHA6NDMzNwojNjIgMHgwNjhi
YTcxOSBpbiBRQXBwbGljYXRpb246OngxMVByb2Nlc3NFdmVudCAodGhpcz0weGJmY2ZmODdjLCBl
dmVudD0weGJmY2ZlNDJjKSBhdCBrZXJuZWwvcWFwcGxpY2F0aW9uX3gxMS5jcHA6MzQxNAojNjMg
MHgwNjhlOTcwYSBpbiB4MTFFdmVudFNvdXJjZURpc3BhdGNoIChzPTB4ODE1ZDI0MCwgY2FsbGJh
Y2s9MCwgdXNlcl9kYXRhPTB4MCkgYXQga2VybmVsL3FndWlldmVudGRpc3BhdGNoZXJfZ2xpYi5j
cHA6MTQ2CiM2NCAweDAzNTJjNWU1IGluIGdfbWFpbl9jb250ZXh0X2Rpc3BhdGNoICgpIGZyb20g
L2xpYi9saWJnbGliLTIuMC5zby4wCiM2NSAweDAzNTMwMmQ4IGluID8/ICgpIGZyb20gL2xpYi9s
aWJnbGliLTIuMC5zby4wCiM2NiAweDAzNTMwNGI4IGluIGdfbWFpbl9jb250ZXh0X2l0ZXJhdGlv
biAoKSBmcm9tIC9saWIvbGliZ2xpYi0yLjAuc28uMAojNjcgMHgwNGRlNjdmNSBpbiBRRXZlbnRE
aXNwYXRjaGVyR2xpYjo6cHJvY2Vzc0V2ZW50cyAodGhpcz0weDgwNzE5ODAsIGZsYWdzPS4uLikg
YXQga2VybmVsL3FldmVudGRpc3BhdGNoZXJfZ2xpYi5jcHA6NDE1CiM2OCAweDA2OGU4Zjg1IGlu
IFFHdWlFdmVudERpc3BhdGNoZXJHbGliOjpwcm9jZXNzRXZlbnRzICh0aGlzPTB4ODA3MTk4MCwg
ZmxhZ3M9Li4uKSBhdCBrZXJuZWwvcWd1aWV2ZW50ZGlzcGF0Y2hlcl9nbGliLmNwcDoyMDQKIzY5
IDB4MDRkYjZhOTkgaW4gUUV2ZW50TG9vcDo6cHJvY2Vzc0V2ZW50cyAodGhpcz0weGJmY2ZlNzIw
LCBmbGFncz0pIGF0IGtlcm5lbC9xZXZlbnRsb29wLmNwcDoxNDkKIzcwIDB4MDRkYjZmMWEgaW4g
UUV2ZW50TG9vcDo6ZXhlYyAodGhpcz0weGJmY2ZlNzIwLCBmbGFncz0uLi4pIGF0IGtlcm5lbC9x
ZXZlbnRsb29wLmNwcDoyMDEKIzcxIDB4MDZjZWU1YWUgaW4gUU1lbnU6OmV4ZWMgKHRoaXM9MHg4
ZmM4ODkwLCBwPS4uLiwgYWN0aW9uPTB4MCkgYXQgd2lkZ2V0cy9xbWVudS5jcHA6MjA1NAojNzIg
MHgwNmNmZmRmNyBpbiBRUHVzaEJ1dHRvblByaXZhdGU6Ol9xX3BvcHVwUHJlc3NlZCAodGhpcz0w
eDkxOGJlOTApIGF0IHdpZGdldHMvcXB1c2hidXR0b24uY3BwOjU5MgojNzMgMHgwNmQwMTNiMCBp
biBRUHVzaEJ1dHRvbjo6cXRfbWV0YWNhbGwgKHRoaXM9MHg5MDQzODQ4LCBfYz1RTWV0YU9iamVj
dDo6SW52b2tlTWV0YU1ldGhvZCwgX2lkPTEsIF9hPTB4YmZjZmU4Y2MpIGF0IC5tb2MvcmVsZWFz
ZS1zaGFyZWQvbW9jX3FwdXNoYnV0dG9uLmNwcDo4MAojNzQgMHgwMTA5ZTVlYSBpbiBBbWFyb2s6
OkVsaWRpbmdCdXR0b246OnF0X21ldGFjYWxsICh0aGlzPTB4OTA0Mzg0OCwgX2M9UU1ldGFPYmpl
Y3Q6Okludm9rZU1ldGFNZXRob2QsIF9pZD00MCwgX2E9MHhiZmNmZThjYykgYXQgLi9FbGlkaW5n
QnV0dG9uLm1vYzo2NwojNzUgMHgwMTA5M2Y4MiBpbiBCcmVhZGNydW1iSXRlbUJ1dHRvbjo6cXRf
bWV0YWNhbGwgKHRoaXM9MHg5MDQzODQ4LCBfYz1RTWV0YU9iamVjdDo6SW52b2tlTWV0YU1ldGhv
ZCwgX2lkPTQwLCBfYT0weGJmY2ZlOGNjKSBhdCAuL0JyZWFkY3J1bWJJdGVtQnV0dG9uLm1vYzo2
NgojNzYgQnJlYWRjcnVtYkl0ZW1NZW51QnV0dG9uOjpxdF9tZXRhY2FsbCAodGhpcz0weDkwNDM4
NDgsIF9jPVFNZXRhT2JqZWN0OjpJbnZva2VNZXRhTWV0aG9kLCBfaWQ9NDAsIF9hPTB4YmZjZmU4
Y2MpIGF0IC4vQnJlYWRjcnVtYkl0ZW1CdXR0b24ubW9jOjExNQojNzcgMHgwNGRiZGQ0YSBpbiBR
TWV0YU9iamVjdDo6bWV0YWNhbGwgKG9iamVjdD0weDkwNDM4NDgsIGNsPTE0NDgwNzgxNiwgaWR4
PTQwLCBhcmd2PTB4YmZjZmU4Y2MpIGF0IGtlcm5lbC9xbWV0YW9iamVjdC5jcHA6MjM3CiM3OCAw
eDA0ZGQwYWI1IGluIFFNZXRhT2JqZWN0OjphY3RpdmF0ZSAoc2VuZGVyPTB4OTA0Mzg0OCwgbT0w
eDcxYjQ3MDQsIGxvY2FsX3NpZ25hbF9pbmRleD0wLCBhcmd2PTB4MCkgYXQga2VybmVsL3FvYmpl
Y3QuY3BwOjMyODAKIzc5IDB4MDZmOTJjNDcgaW4gUUFic3RyYWN0QnV0dG9uOjpwcmVzc2VkICh0
aGlzPTB4OTA0Mzg0OCkgYXQgLm1vYy9yZWxlYXNlLXNoYXJlZC9tb2NfcWFic3RyYWN0YnV0dG9u
LmNwcDoxOTMKIzgwIDB4MDZjNTMzNzkgaW4gUUFic3RyYWN0QnV0dG9uUHJpdmF0ZTo6ZW1pdFBy
ZXNzZWQgKHRoaXM9MHg5MThiZTkwKSBhdCB3aWRnZXRzL3FhYnN0cmFjdGJ1dHRvbi5jcHA6NTYw
CiM4MSAweDA2YzUzNTdlIGluIFFBYnN0cmFjdEJ1dHRvbjo6bW91c2VQcmVzc0V2ZW50ICh0aGlz
PTB4OTA0Mzg0OCwgZT0weGJmY2ZlZmUwKSBhdCB3aWRnZXRzL3FhYnN0cmFjdGJ1dHRvbi5jcHA6
MTA5NgojODIgMHgwNjg4NTYwYyBpbiBRV2lkZ2V0OjpldmVudCAodGhpcz0weDkwNDM4NDgsIGV2
ZW50PTB4YmZjZmVmZTApIGF0IGtlcm5lbC9xd2lkZ2V0LmNwcDo4MTgzCiM4MyAweDA2YzUzNjdl
IGluIFFBYnN0cmFjdEJ1dHRvbjo6ZXZlbnQgKHRoaXM9MHg5MDQzODQ4LCBlPTB4OGEwZjc3OCkg
YXQgd2lkZ2V0cy9xYWJzdHJhY3RidXR0b24uY3BwOjEwODAKIzg0IDB4MDZkMDExZjIgaW4gUVB1
c2hCdXR0b246OmV2ZW50ICh0aGlzPTB4OTA0Mzg0OCwgZT0weGJmY2ZlZmUwKSBhdCB3aWRnZXRz
L3FwdXNoYnV0dG9uLmNwcDo2ODMKIzg1IDB4MDY4Mjc3MmMgaW4gUUFwcGxpY2F0aW9uUHJpdmF0
ZTo6bm90aWZ5X2hlbHBlciAodGhpcz0weDgxNTdiZDAsIHJlY2VpdmVyPTB4OTA0Mzg0OCwgZT0w
eGJmY2ZlZmUwKSBhdCBrZXJuZWwvcWFwcGxpY2F0aW9uLmNwcDo0Mzk2CiM4NiAweDA2ODJlMTE3
IGluIFFBcHBsaWNhdGlvbjo6bm90aWZ5ICh0aGlzPTB4YmZjZmY4N2MsIHJlY2VpdmVyPTB4OTA0
Mzg0OCwgZT0weGJmY2ZlZmUwKSBhdCBrZXJuZWwvcWFwcGxpY2F0aW9uLmNwcDozOTU5CiM4NyAw
eDAwN2E1NjNhIGluIEtBcHBsaWNhdGlvbjo6bm90aWZ5ICh0aGlzPTB4YmZjZmY4N2MsIHJlY2Vp
dmVyPTB4OTA0Mzg0OCwgZXZlbnQ9MHhiZmNmZWZlMCkgYXQgLi4vLi4va2RldWkva2VybmVsL2th
cHBsaWNhdGlvbi5jcHA6MzEwCiM4OCAweDA0ZGI3ZmViIGluIFFDb3JlQXBwbGljYXRpb246Om5v
dGlmeUludGVybmFsICh0aGlzPTB4YmZjZmY4N2MsIHJlY2VpdmVyPTB4OTA0Mzg0OCwgZXZlbnQ9
MHhiZmNmZWZlMCkgYXQga2VybmVsL3Fjb3JlYXBwbGljYXRpb24uY3BwOjczMgojODkgMHgwNjgy
YzdjMiBpbiBRQ29yZUFwcGxpY2F0aW9uOjpzZW5kRXZlbnQgKHJlY2VpdmVyPTB4OTA0Mzg0OCwg
ZXZlbnQ9MHhiZmNmZWZlMCwgYWxpZW5XaWRnZXQ9MHg5MDQzODQ4LCBuYXRpdmVXaWRnZXQ9MHg4
ODdhMmQwLCBidXR0b25Eb3duPTB4NzFiZDNjMCwgbGFzdE1vdXNlUmVjZWl2ZXI9Li4uLCBzcG9u
dGFuZW91cz10cnVlKQogICAgYXQgLi4vLi4vaW5jbHVkZS9RdENvcmUvLi4vLi4vc3JjL2NvcmVs
aWIva2VybmVsL3Fjb3JlYXBwbGljYXRpb24uaDoyMTUKIzkwIFFBcHBsaWNhdGlvblByaXZhdGU6
OnNlbmRNb3VzZUV2ZW50IChyZWNlaXZlcj0weDkwNDM4NDgsIGV2ZW50PTB4YmZjZmVmZTAsIGFs
aWVuV2lkZ2V0PTB4OTA0Mzg0OCwgbmF0aXZlV2lkZ2V0PTB4ODg3YTJkMCwgYnV0dG9uRG93bj0w
eDcxYmQzYzAsIGxhc3RNb3VzZVJlY2VpdmVyPS4uLiwgc3BvbnRhbmVvdXM9dHJ1ZSkKICAgIGF0
IGtlcm5lbC9xYXBwbGljYXRpb24uY3BwOjMwNTgKIzkxIDB4MDY4YmIyODggaW4gUUVUV2lkZ2V0
Ojp0cmFuc2xhdGVNb3VzZUV2ZW50ICh0aGlzPTB4ODg3YTJkMCwgZXZlbnQ9MHhiZmNmZjRmYykg
YXQga2VybmVsL3FhcHBsaWNhdGlvbl94MTEuY3BwOjQ0MDMKIzkyIDB4MDY4YmE3MTkgaW4gUUFw
cGxpY2F0aW9uOjp4MTFQcm9jZXNzRXZlbnQgKHRoaXM9MHhiZmNmZjg3YywgZXZlbnQ9MHhiZmNm
ZjRmYykgYXQga2VybmVsL3FhcHBsaWNhdGlvbl94MTEuY3BwOjM0MTQKIzkzIDB4MDY4ZTk3MGEg
aW4geDExRXZlbnRTb3VyY2VEaXNwYXRjaCAocz0weDgxNWQyNDAsIGNhbGxiYWNrPTAsIHVzZXJf
ZGF0YT0weDApIGF0IGtlcm5lbC9xZ3VpZXZlbnRkaXNwYXRjaGVyX2dsaWIuY3BwOjE0NgojOTQg
MHgwMzUyYzVlNSBpbiBnX21haW5fY29udGV4dF9kaXNwYXRjaCAoKSBmcm9tIC9saWIvbGliZ2xp
Yi0yLjAuc28uMAojOTUgMHgwMzUzMDJkOCBpbiA/PyAoKSBmcm9tIC9saWIvbGliZ2xpYi0yLjAu
c28uMAojOTYgMHgwMzUzMDRiOCBpbiBnX21haW5fY29udGV4dF9pdGVyYXRpb24gKCkgZnJvbSAv
bGliL2xpYmdsaWItMi4wLnNvLjAKIzk3IDB4MDRkZTY3ZjUgaW4gUUV2ZW50RGlzcGF0Y2hlckds
aWI6OnByb2Nlc3NFdmVudHMgKHRoaXM9MHg4MDcxOTgwLCBmbGFncz0uLi4pIGF0IGtlcm5lbC9x
ZXZlbnRkaXNwYXRjaGVyX2dsaWIuY3BwOjQxNQojOTggMHgwNjhlOGY4NSBpbiBRR3VpRXZlbnRE
aXNwYXRjaGVyR2xpYjo6cHJvY2Vzc0V2ZW50cyAodGhpcz0weDgwNzE5ODAsIGZsYWdzPS4uLikg
YXQga2VybmVsL3FndWlldmVudGRpc3BhdGNoZXJfZ2xpYi5jcHA6MjA0CiM5OSAweDA0ZGI2YTk5
IGluIFFFdmVudExvb3A6OnByb2Nlc3NFdmVudHMgKHRoaXM9MHhiZmNmZjdmNCwgZmxhZ3M9KSBh
dCBrZXJuZWwvcWV2ZW50bG9vcC5jcHA6MTQ5CiMxMDAgMHgwNGRiNmYxYSBpbiBRRXZlbnRMb29w
OjpleGVjICh0aGlzPTB4YmZjZmY3ZjQsIGZsYWdzPS4uLikgYXQga2VybmVsL3FldmVudGxvb3Au
Y3BwOjIwMQojMTAxIDB4MDRkYmI0Y2YgaW4gUUNvcmVBcHBsaWNhdGlvbjo6ZXhlYyAoKSBhdCBr
ZXJuZWwvcWNvcmVhcHBsaWNhdGlvbi5jcHA6MTAwOQojMTAyIDB4MDY4MjY1NTcgaW4gUUFwcGxp
Y2F0aW9uOjpleGVjICgpIGF0IGtlcm5lbC9xYXBwbGljYXRpb24uY3BwOjM2NzIKIzEwMyAweDA4
MDRmZDE5IGluIG1haW4gKGFyZ2M9MSwgYXJndj0weGJmZDAwMGY0KSBhdCAuLi8uLi9zcmMvbWFp
bi5jcHA6MjM3CgpQb3NzaWJsZSBkdXBsaWNhdGVzIGJ5IHF1ZXJ5OiBidWcgMjYzMzczLCBidWcg
MjU2OTU4LCBidWcgMjU0OTcwLCBidWcgMjUzNjI5LCBidWcgMjUyNTk3LgoKUmVwb3J0ZWQgdXNp
bmcgRHJLb25xaQ==
</data>

          </attachment>
      

    </bug>

</bugzilla>