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

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>204715</bug_id>
          
          <creation_ts>2019-11-30 06:08:00 -0800</creation_ts>
          <short_desc>[GTK] WebKitGTK build hangs on g-ir-scanner</short_desc>
          <delta_ts>2019-12-13 08:23:38 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jim Mason">jmason</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1594309</commentid>
    <comment_count>0</comment_count>
    <who name="Jim Mason">jmason</who>
    <bug_when>2019-11-30 06:08:00 -0800</bug_when>
    <thetext>The patch for Bug 204503 ([GTK][WPE] RemoteInspector: use sockets instead of DBus) seems to have introduced a hang in the build process.  Specifically, in my environment, the build hangs whilst running g-ir-scanner.

There are two hung `g-ir-scanner` processes and two `WebKit2-4.0` children.  gdb reveals the latter are spinning on a synchronization primitive.  The gdb backtrace is as follows:

  #0  0x00007ff7ef9814fa in yield () at /lib/64/libc.so.1
  #1  0x00007ff7ef95d281 in sched_yield () at /lib/64/libc.so.1
  #2  0x00007ff7e579f2e5 in bmalloc::Mutex::lockSlowCase() ()
      at /build/rtutils/components/desktop/webkitgtk4-dev/build/amd64/lib/libjavascriptcoregtk-4.0.so.18
  #3  0x00007ff7e57982fd in bmalloc::StaticPerProcess&lt;bmalloc::Environment&gt;::getSlowCase() ()
      at /build/rtutils/components/desktop/webkitgtk4-dev/build/amd64/lib/libjavascriptcoregtk-4.0.so.18
  #4  0x00007ff7e5797cdd in bmalloc::Cache::allocateSlowCaseNullCache(bmalloc::HeapKind, unsigned long) ()
      at /build/rtutils/components/desktop/webkitgtk4-dev/build/amd64/lib/libjavascriptcoregtk-4.0.so.18
  #5  0x00007ff7e576fb44 in WTF::CStringBuffer::createUninitialized(unsigned long) ()
      at /build/rtutils/components/desktop/webkitgtk4-dev/build/amd64/lib/libjavascriptcoregtk-4.0.so.18
  #6  0x00007ff7e576fb82 in WTF::CString::init(char const*, unsigned long) ()
      at /build/rtutils/components/desktop/webkitgtk4-dev/build/amd64/lib/libjavascriptcoregtk-4.0.so.18
  #7  0x00007ff7ee91ac16 in _GLOBAL__sub_I_UnifiedSource_88d1702b_25.cpp ()
      at /build/rtutils/components/desktop/webkitgtk4-dev/build/amd64/lib/libwebkit2gtk-4.0.so.37
  #8  0x00007ff7efa4237f in call_array () at /lib/amd64/ld.so.1
  #9  0x00007ff7efa424ee in call_init () at /lib/amd64/ld.so.1
  #10 0x00007ff7efa42bba in load_completion () at /lib/amd64/ld.so.1
  #11 0x00007ff7efa482ab in dlmopen_check () at /lib/amd64/ld.so.1
  #12 0x00007ff7efa4838c in dlopen () at /lib/amd64/ld.so.1
  #13 0x00007ff7e57991df in bmalloc::Environment::computeIsDebugHeapEnabled() ()
      at /build/rtutils/components/desktop/webkitgtk4-dev/build/amd64/lib/libjavascriptcoregtk-4.0.so.18
  #14 0x00007ff7e5799241 in bmalloc::Environment::Environment(std::lock_guard&lt;bmalloc::Mutex&gt;&amp;) ()
      at /build/rtutils/components/desktop/webkitgtk4-dev/build/amd64/lib/libjavascriptcoregtk-4.0.so.18
  #15 0x00007ff7e579831f in bmalloc::StaticPerProcess&lt;bmalloc::Environment&gt;::getSlowCase() ()
      at /build/rtutils/components/desktop/webkitgtk4-dev/build/amd64/lib/libjavascriptcoregtk-4.0.so.18
  #16 0x00007ff7e5797cdd in bmalloc::Cache::allocateSlowCaseNullCache(bmalloc::HeapKind, unsigned long) ()
      at /build/rtutils/components/desktop/webkitgtk4-dev/build/amd64/lib/libjavascriptcoregtk-4.0.so.18
  #17 0x00007ff7e576fb44 in WTF::CStringBuffer::createUninitialized(unsigned long) ()
      at /build/rtutils/components/desktop/webkitgtk4-dev/build/amd64/lib/libjavascriptcoregtk-4.0.so.18
  #18 0x00007ff7e576fb82 in WTF::CString::init(char const*, unsigned long) ()
      at /build/rtutils/components/desktop/webkitgtk4-dev/build/amd64/lib/libjavascriptcoregtk-4.0.so.18
  #19 0x00007ff7e5061828 in __static_initialization_and_destruction_0(int, int) [clone .constprop.0] ()
      at /build/rtutils/components/desktop/webkitgtk4-dev/build/amd64/lib/libjavascriptcoregtk-4.0.so.18
  #20 0x00007ff7efa4237f in call_array () at /lib/amd64/ld.so.1
  #21 0x00007ff7efa424ee in call_init () at /lib/amd64/ld.so.1
  #22 0x00007ff7efa42bba in load_completion () at /lib/amd64/ld.so.1
  #23 0x00007ff7efa52300 in elf_bndr () at /lib/amd64/ld.so.1
  #24 0x00007ff7efa33703 in elf_rtbndr () at /lib/amd64/ld.so.1
  #25 0x00007ff7ef9e10e8 in  ()
  #26 0x0000000000000035 in  ()
  #27 0x0000000000406187 in invoke_get_type ()
  #28 0x0000000000407044 in dump_irepository ()
  #29 0x000000000040730b in main ()

After backing out the patch from Bug 204503, the build completes normally.

Building on Solaris x86_64 with glib 2.52.0.  If you need more information from the environment, please advise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594339</commentid>
    <comment_count>1</comment_count>
    <who name="Jim Mason">jmason</who>
    <bug_when>2019-11-30 12:10:47 -0800</bug_when>
    <thetext>FWIW, the failure mode is very much like Bug 125651.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595757</commentid>
    <comment_count>2</comment_count>
    <who name="Jim Mason">jmason</who>
    <bug_when>2019-12-05 02:48:44 -0800</bug_when>
    <thetext>Rebuilt with debug symbols.  Problem is in initialization of a static, s_messageHandlers, which was added in the Bug 204503 patch:


(gdb) frame 34
#34 __static_initialization_and_destruction_0 (__initialize_p=&lt;optimized out&gt;, 
    __priority=65535)
    at /build/rtutils/components/desktop/webkitgtk4-dev/webkit/Source/JavaScriptCore/inspector/remote/glib/RemoteInspectorGlib.cpp:95
95	const SocketConnection::MessageHandlers RemoteInspector::s_messageHandlers = {
(


The complete debug backtrace of the deadlocked thread:


(gdb) bt
#0  0x00007ffa718c14fa in yield () at /lib/64/libc.so.1
#1  0x00007ffa7189d281 in sched_yield () at /lib/64/libc.so.1
#2  0x00007ffa6775f975 in bmalloc::Mutex::lockSlowCase()
    (this=0x7ffa677f1339 &lt;bmalloc::StaticPerProcessStorageTraits&lt;bmalloc::Environment&gt;::Storage::s_mutex&gt;)
    at /build/rtutils/components/desktop/webkitgtk4-dev/webkit/Source/bmalloc/bmalloc/Mutex.cpp:52
#3  0x00007ffa67757dbd in bmalloc::Mutex::lock() (this=&lt;optimized out&gt;)
    at /build/rtutils/components/desktop/webkitgtk4-dev/webkit/Source/bmalloc/bmalloc/Mutex.h:82
#4  0x00007ffa67757dbd in std::lock_guard&lt;bmalloc::Mutex&gt;::lock_guard(bmalloc::Mutex&amp;) (__m=..., this=0xffff80c792ce4eb8)
    at /usr/gcc/9/include/c++/9.2.0/bits/std_mutex.h:159
#5  0x00007ffa67757dbd in bmalloc::StaticPerProcess&lt;bmalloc::Environment&gt;::getSlowCase() ()
    at /build/rtutils/components/desktop/webkitgtk4-dev/webkit/Source/bmalloc/bmalloc/StaticPerProcess.h:82
#6  0x00007ffa6775779d in bmalloc::StaticPerProcess&lt;bmalloc::Environment&gt;::get() ()
    at /build/rtutils/components/desktop/webkitgtk4-dev/webkit/Source/bmalloc/bmalloc/DebugHeap.h:76
#7  0x00007ffa6775779d in bmalloc::DebugHeap::tryGet() ()
    at /build/rtutils/components/desktop/webkitgtk4-dev/webkit/Source/bmalloc/bmalloc/DebugHeap.h:74
#8  0x00007ffa6775779d in bmalloc::Cache::allocateSlowCaseNullCache(bmalloc::HeapKind, unsigned long) (heapKind=heapKind@entry=bmalloc::HeapKind::Primary, size=size@entry=25) at /build/rtutils/components/desktop/webkitgtk4-dev/webkit/Source/bmalloc/bmalloc/Cache.cpp:63
#9  0x00007ffa676f4771 in bmalloc::Cache::allocate(bmalloc::HeapKind, unsigned long) (size=25, heapKind=bmalloc::HeapKind::Primary) at /build/rtutils/components/desktop/webkitgtk4-dev/build/amd64/DerivedSources/ForwardingHeaders/bmalloc/Cache.h:81
#10 0x00007ffa676f4771 in bmalloc::api::malloc(unsigned long, bmalloc::HeapKind) (kind=bmalloc::HeapKind::Primary, size=25) at /build/rtutils/components/desktop/webkitgtk4-dev/build/amd64/DerivedSources/ForwardingHeaders/bmalloc/bmalloc.h:49
#11 0x00007ffa676f4771 in WTF::fastMalloc(unsigned long) (size=size@entry=25) at /build/rtutils/components/desktop/webkitgtk4-dev/webkit/Source/WTF/wtf/FastMalloc.cpp:279
#12 0x00007ffa67737c74 in WTF::CStringBuffer::createUninitialized(unsigned long) (length=length@entry=8) at /build/rtutils/components/desktop/webkitgtk4-dev/webkit/Source/WTF/wtf/text/CString.cpp:41
#13 0x00007ffa67737cb2 in WTF::CString::init(char const*, unsigned long) (this=0xffff80c792ce4ff0, str=0x7ffa6e5a910e &quot;DidClose&quot;, length=8) at /build/rtutils/components/desktop/webkitgtk4-dev/webkit/Source/WTF/wtf/text/CString.cpp:67
#14 0x00007ffa7086c556 in _GLOBAL__sub_I_UnifiedSource_88d1702b_25.cpp () at /build/rtutils/components/desktop/webkitgtk4-dev/build/amd64/lib/libwebkit2gtk-4.0.so.37
#15 0x00007ffa7197d37f in call_array () at /lib/amd64/ld.so.1
#16 0x00007ffa7197d4ee in call_init () at /lib/amd64/ld.so.1
#17 0x00007ffa7197dbba in load_completion () at /lib/amd64/ld.so.1
#18 0x00007ffa719832ab in dlmopen_check () at /lib/amd64/ld.so.1
#19 0x00007ffa7198338c in dlopen () at /lib/amd64/ld.so.1
#20 0x00007ffa67758c4f in bmalloc::isSanitizerEnabled () at /build/rtutils/components/desktop/webkitgtk4-dev/webkit/Source/bmalloc/bmalloc/Environment.cpp:141
#21 0x00007ffa67758c4f in bmalloc::Environment::computeIsDebugHeapEnabled() (this=&lt;optimized out&gt;) at /build/rtutils/components/desktop/webkitgtk4-dev/webkit/Source/bmalloc/bmalloc/Environment.cpp:141
#22 0x00007ffa67758c4f in bmalloc::Environment::computeIsDebugHeapEnabled() (this=&lt;optimized out&gt;) at /build/rtutils/components/desktop/webkitgtk4-dev/webkit/Source/bmalloc/bmalloc/Environment.cpp:135
#23 0x00007ffa67758cb1 in bmalloc::Environment::Environment(std::lock_guard&lt;bmalloc::Mutex&gt;&amp;) (this=0x7ffa677f1338 &lt;bmalloc::StaticPerProcessStorageTraits&lt;bmalloc::Environment&gt;::Storage::s_memory&gt;) at /build/rtutils/components/desktop/webkitgtk4-dev/webkit/Source/bmalloc/bmalloc/Environment.cpp:130
#24 0x00007ffa67757ddf in bmalloc::StaticPerProcess&lt;bmalloc::Environment&gt;::getSlowCase() () at /usr/gcc/9/include/c++/9.2.0/new:174
#25 0x00007ffa6775779d in bmalloc::StaticPerProcess&lt;bmalloc::Environment&gt;::get() () at /build/rtutils/components/desktop/webkitgtk4-dev/webkit/Source/bmalloc/bmalloc/DebugHeap.h:76
#26 0x00007ffa6775779d in bmalloc::DebugHeap::tryGet() () at /build/rtutils/components/desktop/webkitgtk4-dev/webkit/Source/bmalloc/bmalloc/DebugHeap.h:74
#27 0x00007ffa6775779d in bmalloc::Cache::allocateSlowCaseNullCache(bmalloc::HeapKind, unsigned long) (heapKind=heapKind@entry=bmalloc::HeapKind::Primary, size=size@entry=25) at /build/rtutils/components/desktop/webkitgtk4-dev/webkit/Source/bmalloc/bmalloc/Cache.cpp:63
#28 0x00007ffa676f4771 in bmalloc::Cache::allocate(bmalloc::HeapKind, unsigned long) (size=25, heapKind=bmalloc::HeapKind::Primary) at /build/rtutils/components/desktop/webkitgtk4-dev/build/amd64/DerivedSources/ForwardingHeaders/bmalloc/Cache.h:81
#29 0x00007ffa676f4771 in bmalloc::api::malloc(unsigned long, bmalloc::HeapKind) (kind=bmalloc::HeapKind::Primary, size=25) at /build/rtutils/components/desktop/webkitgtk4-dev/build/amd64/DerivedSources/ForwardingHeaders/bmalloc/bmalloc.h:49
#30 0x00007ffa676f4771 in WTF::fastMalloc(unsigned long) (size=size@entry=25) at /build/rtutils/components/desktop/webkitgtk4-dev/webkit/Source/WTF/wtf/FastMalloc.cpp:279
#31 0x00007ffa67737c74 in WTF::CStringBuffer::createUninitialized(unsigned long) (length=length@entry=8) at /build/rtutils/components/desktop/webkitgtk4-dev/webkit/Source/WTF/wtf/text/CString.cpp:41
#32 0x00007ffa67737cb2 in WTF::CString::init(char const*, unsigned long) (this=0xffff80c792ce5460, str=0x7ffa667c724b &quot;DidClose&quot;, length=8) at /build/rtutils/components/desktop/webkitgtk4-dev/webkit/Source/WTF/wtf/text/CString.cpp:67
#33 0x00007ffa67071958 in WTF::KeyValuePair&lt;WTF::CString, std::pair&lt;WTF::CString, void (*)(WTF::SocketConnection&amp;, _GVariant*, void*)&gt; &gt;::KeyValuePair&lt;char const (&amp;) [9], std::pair&lt;WTF::CString, void (*)(WTF::SocketConnection&amp;, _GVariant*, void*)&gt; &gt;(char const (&amp;) [9], std::pair&lt;WTF::CString, void (*)(WTF::SocketConnection&amp;, _GVariant*, void*)&gt;&amp;&amp;) (value=..., key=..., this=0x7ffa631978a0) at /usr/gcc/9/include/c++/9.2.0/bits/move.h:74
#34 0x00007ffa67071958 in __static_initialization_and_destruction_0(int, int) (__initialize_p=&lt;optimized out&gt;, __priority=65535) at /build/rtutils/components/desktop/webkitgtk4-dev/webkit/Source/JavaScriptCore/inspector/remote/glib/RemoteInspectorGlib.cpp:95
#35 0x00007ffa7197d37f in call_array () at /lib/amd64/ld.so.1
#36 0x00007ffa7197d4ee in call_init () at /lib/amd64/ld.so.1
#37 0x00007ffa7197dbba in load_completion () at /lib/amd64/ld.so.1
#38 0x00007ffa7198d300 in elf_bndr () at /lib/amd64/ld.so.1
#39 0x00007ffa7196e703 in elf_rtbndr () at /lib/amd64/ld.so.1
#40 0x00007ffa719210e8 in  ()
#41 0x0000000000000035 in  ()
#42 0x0000000000406187 in invoke_get_type ()
#43 0x0000000000407044 in dump_irepository ()
#44 0x000000000040730b in main ()


Suggestions are welcome.  I am quite surprised that I am the only one who is apparently hitting the problem caused by the changes of Bug 204503...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596213</commentid>
    <comment_count>3</comment_count>
      <attachid>385005</attachid>
    <who name="Jim Mason">jmason</who>
    <bug_when>2019-12-06 05:06:18 -0800</bug_when>
    <thetext>Created attachment 385005
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596217</commentid>
    <comment_count>4</comment_count>
      <attachid>385005</attachid>
    <who name="Jim Mason">jmason</who>
    <bug_when>2019-12-06 05:29:01 -0800</bug_when>
    <thetext>Comment on attachment 385005
Patch

It seems the static data members introduced by Bug 204503 can elicit a static initialization order problem.

The attached patch replaces the static data members with statics that are constructed only upon first access (i.e., the &apos;construct on first use&apos; idiom).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596220</commentid>
    <comment_count>5</comment_count>
      <attachid>385005</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-12-06 05:52:43 -0800</bug_when>
    <thetext>Comment on attachment 385005
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=385005&amp;action=review

&gt; Source/JavaScriptCore/inspector/remote/RemoteInspector.h:181
&gt; -    static const SocketConnection::MessageHandlers s_messageHandlers;
&gt; +    static const SocketConnection::MessageHandlers&amp; getMessageHandlers();

getMessageHandlers() -&gt; messageHandlers()

&gt; Source/JavaScriptCore/inspector/remote/glib/RemoteInspectorGlib.cpp:97
&gt; +    static SocketConnection::MessageHandlers *messageHandlers = new SocketConnection::MessageHandlers({

Use NeverDestroyed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596257</commentid>
    <comment_count>6</comment_count>
      <attachid>385014</attachid>
    <who name="Jim Mason">jmason</who>
    <bug_when>2019-12-06 08:30:48 -0800</bug_when>
    <thetext>Created attachment 385014
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596261</commentid>
    <comment_count>7</comment_count>
      <attachid>385016</attachid>
    <who name="Jim Mason">jmason</who>
    <bug_when>2019-12-06 08:44:14 -0800</bug_when>
    <thetext>Created attachment 385016
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596262</commentid>
    <comment_count>8</comment_count>
      <attachid>385017</attachid>
    <who name="Jim Mason">jmason</who>
    <bug_when>2019-12-06 08:50:08 -0800</bug_when>
    <thetext>Created attachment 385017
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596263</commentid>
    <comment_count>9</comment_count>
    <who name="Jim Mason">jmason</who>
    <bug_when>2019-12-06 08:53:04 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #5)
&gt; Comment on attachment 385005 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=385005&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/inspector/remote/RemoteInspector.h:181
&gt; &gt; -    static const SocketConnection::MessageHandlers s_messageHandlers;
&gt; &gt; +    static const SocketConnection::MessageHandlers&amp; getMessageHandlers();
&gt; 
&gt; getMessageHandlers() -&gt; messageHandlers()
&gt; 
&gt; &gt; Source/JavaScriptCore/inspector/remote/glib/RemoteInspectorGlib.cpp:97
&gt; &gt; +    static SocketConnection::MessageHandlers *messageHandlers = new SocketConnection::MessageHandlers({
&gt; 
&gt; Use NeverDestroyed.

Thanks Carlos, I have revised the patch with your suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598344</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-13 08:22:41 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 385017:

imported/w3c/web-platform-tests/content-security-policy/unsafe-eval/eval-scripts-setTimeout-blocked.sub.html bug 203973 (author: dbates@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598348</commentid>
    <comment_count>11</comment_count>
      <attachid>385017</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-13 08:23:36 -0800</bug_when>
    <thetext>Comment on attachment 385017
Patch

Clearing flags on attachment: 385017

Committed r253475: &lt;https://trac.webkit.org/changeset/253475&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598349</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-13 08:23:38 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385005</attachid>
            <date>2019-12-06 05:06:18 -0800</date>
            <delta_ts>2019-12-06 08:30:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204715-20191206130617.patch</filename>
            <type>text/plain</type>
            <size>13575</size>
            <attacher name="Jim Mason">jmason</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjUzMjAzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBA
CisyMDE5LTEyLTA2ICBKaW0gTWFzb24gIDxqbWFzb25AaWJpbnguY29tPgorCisgICAgICAgIFtH
VEtdIFdlYktpdEdUSyBidWlsZCBoYW5ncyBvbiBnLWlyLXNjYW5uZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDcxNQorCisgICAgICAgIFRoaXMg
cGF0Y2ggZml4ZXMgdGhlIHN0YXRpYyBpbml0aWFsaXphdGlvbiBvcmRlciBwcm9ibGVtCisgICAg
ICAgIGludHJvZHVjZWQgYnkgQnVnIDIwNDUwMy4KKworICAgICAgICBUaGUgZml4IHVzZXMgY29u
c3RydWN0LW9uLWZpcnN0LXVzZSBpZGlvbSB0byBhdm9pZCBzdGF0aWMKKyAgICAgICAgaW5pdGlh
bGl6YXRpb24gb3JkZXIgcHJvYmxlbXMuIE5vdGUgdGhhdCBpdCB1c2VzIHN0YXRpYyBwb2ludGVy
cworICAgICAgICByYXRoZXIgdGhhbiBzdGF0aWMgb2JqZWN0cyB0byBhdm9pZCBhbnkgZXZlbnR1
YWwgc3RhdGljIGRlc3RydWN0aW9uCisgICAgICAgIG9yZGVyIHByb2JsZW1zLgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90
ZS9SZW1vdGVJbnNwZWN0b3IuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVt
b3RlSW5zcGVjdG9yR2xpYi5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rv
cjo6c3RhcnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OmdldE1lc3Nh
Z2VIYW5kbGVycyk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3Bl
Y3RvclNlcnZlci5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZl
cjo6Z2V0TWVzc2FnZUhhbmRsZXJzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVj
dG9yU2VydmVyOjppbmNvbWluZ0Nvbm5lY3Rpb25DYWxsYmFjayk6CisgICAgICAgICogaW5zcGVj
dG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvclNlcnZlci5oOgorCiAyMDE5LTEyLTA1ICBT
YWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIGdldF9ieV9pZCBJQ3Mg
c2hvdWxkIGhhdmUgYSBzdHJ1Y3R1cmUgaGlzdG9yeSB1c2VkIHRvIGluZGljYXRlIHdoZW4gd2Ug
c2hvdWxkIHNraXAgZ2VuZXJhdGluZyBhbiBJQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmgJKHJldmlz
aW9uIDI1MzIwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1Jl
bW90ZUluc3BlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsNyArMTc4LDcgQEAgcHJpdmF0
ZToKICNlbmRpZgogI2lmIFVTRShHTElCKQogICAgIHZvaWQgc2V0dXBDb25uZWN0aW9uKFJlZjxT
b2NrZXRDb25uZWN0aW9uPiYmKTsKLSAgICBzdGF0aWMgY29uc3QgU29ja2V0Q29ubmVjdGlvbjo6
TWVzc2FnZUhhbmRsZXJzIHNfbWVzc2FnZUhhbmRsZXJzOworICAgIHN0YXRpYyBjb25zdCBTb2Nr
ZXRDb25uZWN0aW9uOjpNZXNzYWdlSGFuZGxlcnMmIGdldE1lc3NhZ2VIYW5kbGVycygpOwogCiAg
ICAgdm9pZCByZWNlaXZlZEdldFRhcmdldExpc3RNZXNzYWdlKCk7CiAgICAgdm9pZCByZWNlaXZl
ZFNldHVwTWVzc2FnZShUYXJnZXRJRCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvckdsaWIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVj
dG9yR2xpYi5jcHAJKHJldmlzaW9uIDI1MzIwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yR2xpYi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0KCkKICAgICAg
ICAgICAgIFJlbW90ZUluc3BlY3RvciogaW5zcGVjdG9yID0gc3RhdGljX2Nhc3Q8UmVtb3RlSW5z
cGVjdG9yKj4odXNlckRhdGEpOwogICAgICAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVy
cm9yOwogICAgICAgICAgICAgaWYgKEdSZWZQdHI8R1NvY2tldENvbm5lY3Rpb24+IGNvbm5lY3Rp
b24gPSBhZG9wdEdSZWYoZ19zb2NrZXRfY2xpZW50X2Nvbm5lY3RfdG9faG9zdF9maW5pc2goR19T
T0NLRVRfQ0xJRU5UKGNsaWVudCksIHJlc3VsdCwgJmVycm9yLm91dFB0cigpKSkpCi0gICAgICAg
ICAgICAgICAgaW5zcGVjdG9yLT5zZXR1cENvbm5lY3Rpb24oU29ja2V0Q29ubmVjdGlvbjo6Y3Jl
YXRlKFdURk1vdmUoY29ubmVjdGlvbiksIHNfbWVzc2FnZUhhbmRsZXJzLCBpbnNwZWN0b3IpKTsK
KyAgICAgICAgICAgICAgICBpbnNwZWN0b3ItPnNldHVwQ29ubmVjdGlvbihTb2NrZXRDb25uZWN0
aW9uOjpjcmVhdGUoV1RGTW92ZShjb25uZWN0aW9uKSwgZ2V0TWVzc2FnZUhhbmRsZXJzKCksIGlu
c3BlY3RvcikpOwogICAgICAgICAgICAgZWxzZSBpZiAoIWdfZXJyb3JfbWF0Y2hlcyhlcnJvci5n
ZXQoKSwgR19JT19FUlJPUiwgR19JT19FUlJPUl9DQU5DRUxMRUQpKQogICAgICAgICAgICAgICAg
IGdfd2FybmluZygiUmVtb3RlSW5zcGVjdG9yIGZhaWxlZCB0byBjb25uZWN0IHRvIGluc3BlY3Rv
ciBzZXJ2ZXIgYXQ6ICVzOiAlcyIsIGdfZ2V0ZW52KCJXRUJLSVRfSU5TUEVDVE9SX1NFUlZFUiIp
LCBlcnJvci0+bWVzc2FnZSk7CiAgICAgICAgIH0sIHRoaXMpOwpAQCAtOTIsNyArOTIsOSBAQCB2
b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RvcEludGVybmFsKFN0b3BTCiAgICAgbV9zb2NrZXRDb25u
ZWN0aW9uID0gbnVsbHB0cjsKIH0KIAotY29uc3QgU29ja2V0Q29ubmVjdGlvbjo6TWVzc2FnZUhh
bmRsZXJzIFJlbW90ZUluc3BlY3Rvcjo6c19tZXNzYWdlSGFuZGxlcnMgPSB7Citjb25zdCBTb2Nr
ZXRDb25uZWN0aW9uOjpNZXNzYWdlSGFuZGxlcnMmIFJlbW90ZUluc3BlY3Rvcjo6Z2V0TWVzc2Fn
ZUhhbmRsZXJzKCkKK3sKKyAgICBzdGF0aWMgU29ja2V0Q29ubmVjdGlvbjo6TWVzc2FnZUhhbmRs
ZXJzICptZXNzYWdlSGFuZGxlcnMgPSBuZXcgU29ja2V0Q29ubmVjdGlvbjo6TWVzc2FnZUhhbmRs
ZXJzKHsKICAgICB7ICJEaWRDbG9zZSIsIHN0ZDo6cGFpcjxDU3RyaW5nLCBTb2NrZXRDb25uZWN0
aW9uOjpNZXNzYWdlQ2FsbGJhY2s+IHsgeyB9LAogICAgICAgICBbXShTb2NrZXRDb25uZWN0aW9u
JiwgR1ZhcmlhbnQqLCBncG9pbnRlciB1c2VyRGF0YSkgewogICAgICAgICAgICAgYXV0byYgaW5z
cGVjdG9yID0gKnN0YXRpY19jYXN0PFJlbW90ZUluc3BlY3Rvcio+KHVzZXJEYXRhKTsKQEAgLTEz
MCw3ICsxMzIsOSBAQCBjb25zdCBTb2NrZXRDb25uZWN0aW9uOjpNZXNzYWdlSGFuZGxlcnMKICAg
ICAgICAgICAgIGluc3BlY3Rvci5yZWNlaXZlZENsb3NlTWVzc2FnZSh0YXJnZXRJRCk7CiAgICAg
ICAgIH19CiAgICAgfQotfTsKKyAgICB9KTsKKyAgICByZXR1cm4gKm1lc3NhZ2VIYW5kbGVyczsK
K30KIAogdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVwQ29ubmVjdGlvbihSZWY8U29ja2V0Q29u
bmVjdGlvbj4mJiBjb25uZWN0aW9uKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5z
cGVjdG9yU2VydmVyLmNwcAkocmV2aXNpb24gMjUzMjAzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05Myw3ICs5Myw5IEBAIHN0YXRpYyBSZW1vdGVJbnNwZWN0b3I6OkNsaWVu
dDo6U2Vzc2lvbkMKICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQogCi1jb25zdCBTb2NrZXRD
b25uZWN0aW9uOjpNZXNzYWdlSGFuZGxlcnMgUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzX21lc3Nh
Z2VIYW5kbGVycyA9IHsKK2NvbnN0IFNvY2tldENvbm5lY3Rpb246Ok1lc3NhZ2VIYW5kbGVycyYg
UmVtb3RlSW5zcGVjdG9yU2VydmVyOjpnZXRNZXNzYWdlSGFuZGxlcnMoKQoreworICAgIHN0YXRp
YyBTb2NrZXRDb25uZWN0aW9uOjpNZXNzYWdlSGFuZGxlcnMgKm1lc3NhZ2VIYW5kbGVycyA9IG5l
dyBTb2NrZXRDb25uZWN0aW9uOjpNZXNzYWdlSGFuZGxlcnMoewogICAgIHsgIkRpZENsb3NlIiwg
c3RkOjpwYWlyPENTdHJpbmcsIFNvY2tldENvbm5lY3Rpb246Ok1lc3NhZ2VDYWxsYmFjaz4geyB7
IH0sCiAgICAgICAgIFtdKFNvY2tldENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIEdWYXJpYW50Kiwg
Z3BvaW50ZXIgdXNlckRhdGEpIHsKICAgICAgICAgICAgIGF1dG8mIGluc3BlY3RvclNlcnZlciA9
ICpzdGF0aWNfY2FzdDxSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIqPih1c2VyRGF0YSk7CkBAIC0xNjMs
NyArMTY1LDkgQEAgY29uc3QgU29ja2V0Q29ubmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJzCiAgICAg
ICAgICAgICAgICAgY2xpZW50Q2FwYWJpbGl0aWVzID8gY2xpZW50Q2FwYWJpbGl0aWVzLT5icm93
c2VyVmVyc2lvbi51dGY4KCkuZGF0YSgpIDogIiIpKTsKICAgICAgICAgfX0KICAgICB9Ci19Owor
ICAgIH0pOworICAgIHJldHVybiAqbWVzc2FnZUhhbmRsZXJzOworfQogCiBSZW1vdGVJbnNwZWN0
b3JTZXJ2ZXImIFJlbW90ZUluc3BlY3RvclNlcnZlcjo6c2luZ2xldG9uKCkKIHsKQEAgLTE5NCw3
ICsxOTgsNyBAQCBib29sIFJlbW90ZUluc3BlY3RvclNlcnZlcjo6c3RhcnQoY29uc3QKIAogZ2Jv
b2xlYW4gUmVtb3RlSW5zcGVjdG9yU2VydmVyOjppbmNvbWluZ0Nvbm5lY3Rpb25DYWxsYmFjayhH
U29ja2V0U2VydmljZSosIEdTb2NrZXRDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBHT2JqZWN0Kiwg
UmVtb3RlSW5zcGVjdG9yU2VydmVyKiBpbnNwZWN0b3JTZXJ2ZXIpCiB7Ci0gICAgaW5zcGVjdG9y
U2VydmVyLT5pbmNvbWluZ0Nvbm5lY3Rpb24oU29ja2V0Q29ubmVjdGlvbjo6Y3JlYXRlKEdSZWZQ
dHI8R1NvY2tldENvbm5lY3Rpb24+KGNvbm5lY3Rpb24pLCBzX21lc3NhZ2VIYW5kbGVycywgaW5z
cGVjdG9yU2VydmVyKSk7CisgICAgaW5zcGVjdG9yU2VydmVyLT5pbmNvbWluZ0Nvbm5lY3Rpb24o
U29ja2V0Q29ubmVjdGlvbjo6Y3JlYXRlKEdSZWZQdHI8R1NvY2tldENvbm5lY3Rpb24+KGNvbm5l
Y3Rpb24pLCBnZXRNZXNzYWdlSGFuZGxlcnMoKSwgaW5zcGVjdG9yU2VydmVyKSk7CiAgICAgcmV0
dXJuIFRSVUU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIu
aAkocmV2aXNpb24gMjUzMjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTAs
NyArNTAsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBnYm9vbGVhbiBpbmNvbWluZ0Nvbm5lY3Rp
b25DYWxsYmFjayhHU29ja2V0U2VydmljZSosIEdTb2NrZXRDb25uZWN0aW9uKiwgR09iamVjdCos
IFJlbW90ZUluc3BlY3RvclNlcnZlciopOwogICAgIHZvaWQgaW5jb21pbmdDb25uZWN0aW9uKFJl
ZjxTb2NrZXRDb25uZWN0aW9uPiYmKTsKIAotICAgIHN0YXRpYyBjb25zdCBTb2NrZXRDb25uZWN0
aW9uOjpNZXNzYWdlSGFuZGxlcnMgc19tZXNzYWdlSGFuZGxlcnM7CisgICAgc3RhdGljIGNvbnN0
IFNvY2tldENvbm5lY3Rpb246Ok1lc3NhZ2VIYW5kbGVycyYgZ2V0TWVzc2FnZUhhbmRsZXJzKCk7
CiAgICAgdm9pZCBjb25uZWN0aW9uRGlkQ2xvc2UoU29ja2V0Q29ubmVjdGlvbiYpOwogICAgIHZv
aWQgc2V0VGFyZ2V0TGlzdChTb2NrZXRDb25uZWN0aW9uJiwgR1ZhcmlhbnQqKTsKICAgICBHVmFy
aWFudCogc2V0dXBJbnNwZWN0b3JDbGllbnQoU29ja2V0Q29ubmVjdGlvbiYsIGNvbnN0IGNoYXIq
IGNsaWVudEJhY2tlbmRDb21tYW5kc0hhc2gpOwpJbmRleDogU291cmNlL1dlYkRyaXZlci9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cJKHJldmlzaW9u
IDI1MzIwMykKKysrIFNvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTktMTItMDYgIEppbSBNYXNvbiAgPGptYXNvbkBpYmlueC5jb20+
CisKKyAgICAgICAgW0dUS10gV2ViS2l0R1RLIGJ1aWxkIGhhbmdzIG9uIGctaXItc2Nhbm5lcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0NzE1CisK
KyAgICAgICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgc3RhdGljIGluaXRpYWxpemF0aW9uIG9yZGVy
IHByb2JsZW0KKyAgICAgICAgaW50cm9kdWNlZCBieSBCdWcgMjA0NTAzLgorCisgICAgICAgIFRo
ZSBmaXggdXNlcyBjb25zdHJ1Y3Qtb24tZmlyc3QtdXNlIGlkaW9tIHRvIGF2b2lkIHN0YXRpYwor
ICAgICAgICBpbml0aWFsaXphdGlvbiBvcmRlciBwcm9ibGVtcy4gTm90ZSB0aGF0IGl0IHVzZXMg
c3RhdGljIHBvaW50ZXJzCisgICAgICAgIHJhdGhlciB0aGFuIHN0YXRpYyBvYmplY3RzIHRvIGF2
b2lkIGFueSBldmVudHVhbCBzdGF0aWMgZGVzdHJ1Y3Rpb24KKyAgICAgICAgb3JkZXIgcHJvYmxl
bXMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBT
ZXNzaW9uSG9zdC5oOgorICAgICAgICAqIGdsaWIvU2Vzc2lvbkhvc3RHbGliLmNwcDoKKyAgICAg
ICAgKFdlYkRyaXZlcjo6U2Vzc2lvbkhvc3Q6OmdldE1lc3NhZ2VIYW5kbGVycyk6CisgICAgICAg
IChXZWJEcml2ZXI6OlNlc3Npb25Ib3N0Ojpjb25uZWN0VG9Ccm93c2VyKToKKwogMjAxOS0xMi0w
MyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
V2ViRHJpdmVyOiBoYW5kbGUgZWxlbWVudHMgb2YgdHlwZSBmaWxlIGluIHNlbmQga2V5cyBjb21t
YW5kCkluZGV4OiBTb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb25Ib3N0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkRyaXZlci9TZXNzaW9uSG9zdC5oCShyZXZpc2lvbiAyNTMyMDMpCisrKyBTb3Vy
Y2UvV2ViRHJpdmVyL1Nlc3Npb25Ib3N0LmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZShjb25zdCBTdHJpbmcmKTsKIAog
I2lmIFVTRShHTElCKQotICAgIHN0YXRpYyBjb25zdCBTb2NrZXRDb25uZWN0aW9uOjpNZXNzYWdl
SGFuZGxlcnMgc19tZXNzYWdlSGFuZGxlcnM7CisgICAgc3RhdGljIGNvbnN0IFNvY2tldENvbm5l
Y3Rpb246Ok1lc3NhZ2VIYW5kbGVycyYgZ2V0TWVzc2FnZUhhbmRsZXJzKCk7CiAgICAgdm9pZCBj
b25uZWN0aW9uRGlkQ2xvc2UoKTsKICAgICB2b2lkIGxhdW5jaEJyb3dzZXIoRnVuY3Rpb248dm9p
ZCAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvcik+JiYpOwogICAgIHZvaWQgY29ubmVjdFRvQnJvd3Nl
cihzdGQ6OnVuaXF1ZV9wdHI8Q29ubmVjdFRvQnJvd3NlckFzeW5jRGF0YT4mJik7CkluZGV4OiBT
b3VyY2UvV2ViRHJpdmVyL2dsaWIvU2Vzc2lvbkhvc3RHbGliLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViRHJpdmVyL2dsaWIvU2Vzc2lvbkhvc3RHbGliLmNwcAkocmV2aXNpb24gMjUzMjAz
KQorKysgU291cmNlL1dlYkRyaXZlci9nbGliL1Nlc3Npb25Ib3N0R2xpYi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDcgKzQzLDkgQEAgU2Vzc2lvbkhvc3Q6On5TZXNzaW9uSG9zdCgpCiAgICAg
ICAgIGdfc3VicHJvY2Vzc19mb3JjZV9leGl0KG1fYnJvd3Nlci5nZXQoKSk7CiB9CiAKLWNvbnN0
IFNvY2tldENvbm5lY3Rpb246Ok1lc3NhZ2VIYW5kbGVycyBTZXNzaW9uSG9zdDo6c19tZXNzYWdl
SGFuZGxlcnMgPSB7Citjb25zdCBTb2NrZXRDb25uZWN0aW9uOjpNZXNzYWdlSGFuZGxlcnMmIFNl
c3Npb25Ib3N0OjpnZXRNZXNzYWdlSGFuZGxlcnMoKQoreworICAgIHN0YXRpYyBjb25zdCBTb2Nr
ZXRDb25uZWN0aW9uOjpNZXNzYWdlSGFuZGxlcnMgKm1lc3NhZ2VIYW5kbGVycyA9IG5ldyBTb2Nr
ZXRDb25uZWN0aW9uOjpNZXNzYWdlSGFuZGxlcnMoewogICAgIHsgIkRpZENsb3NlIiwgc3RkOjpw
YWlyPENTdHJpbmcsIFNvY2tldENvbm5lY3Rpb246Ok1lc3NhZ2VDYWxsYmFjaz4geyB7IH0sCiAg
ICAgICAgIFtdKFNvY2tldENvbm5lY3Rpb24mLCBHVmFyaWFudCosIGdwb2ludGVyIHVzZXJEYXRh
KSB7CiAgICAgICAgICAgICBhdXRvJiBzZXNzaW9uSG9zdCA9ICpzdGF0aWNfY2FzdDxTZXNzaW9u
SG9zdCo+KHVzZXJEYXRhKTsKQEAgLTg2LDcgKzg4LDkgQEAgY29uc3QgU29ja2V0Q29ubmVjdGlv
bjo6TWVzc2FnZUhhbmRsZXJzCiAgICAgICAgICAgICBzZXNzaW9uSG9zdC5zZW5kTWVzc2FnZVRv
RnJvbnRlbmQoY29ubmVjdGlvbklELCB0YXJnZXRJRCwgbWVzc2FnZSk7CiAgICAgICAgIH19CiAg
ICAgfQotfTsKKyAgICB9KTsKKyAgICByZXR1cm4gKm1lc3NhZ2VIYW5kbGVyczsKK30KIAogdm9p
ZCBTZXNzaW9uSG9zdDo6Y29ubmVjdFRvQnJvd3NlcihGdW5jdGlvbjx2b2lkIChPcHRpb25hbDxT
dHJpbmc+IGVycm9yKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKQEAgLTE5MSw3ICsxOTUsNyBA
QCB2b2lkIFNlc3Npb25Ib3N0Ojpjb25uZWN0VG9Ccm93c2VyKHN0ZDo6CiAgICAgICAgICAgICAg
ICAgICAgIGRhdGEtPmNvbXBsZXRpb25IYW5kbGVyKFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1l
c3NhZ2UpKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBkYXRhLT5zZXNzaW9uSG9zdC0+c2V0dXBDb25uZWN0aW9uKFNvY2tl
dENvbm5lY3Rpb246OmNyZWF0ZShXVEZNb3ZlKGNvbm5lY3Rpb24pLCBzX21lc3NhZ2VIYW5kbGVy
cywgZGF0YS0+c2Vzc2lvbkhvc3QpKTsKKyAgICAgICAgICAgICAgICBkYXRhLT5zZXNzaW9uSG9z
dC0+c2V0dXBDb25uZWN0aW9uKFNvY2tldENvbm5lY3Rpb246OmNyZWF0ZShXVEZNb3ZlKGNvbm5l
Y3Rpb24pLCBnZXRNZXNzYWdlSGFuZGxlcnMoKSwgZGF0YS0+c2Vzc2lvbkhvc3QpKTsKICAgICAg
ICAgICAgICAgICBkYXRhLT5jb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOwogICAgICAg
ICB9LCBkYXRhKTsKICAgICB9KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTMyMDMpCisrKyBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisy
MDE5LTEyLTA2ICBKaW0gTWFzb24gIDxqbWFzb25AaWJpbnguY29tPgorCisgICAgICAgIFtHVEtd
IFdlYktpdEdUSyBidWlsZCBoYW5ncyBvbiBnLWlyLXNjYW5uZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDcxNQorCisgICAgICAgIFRoaXMgcGF0
Y2ggZml4ZXMgdGhlIHN0YXRpYyBpbml0aWFsaXphdGlvbiBvcmRlciBwcm9ibGVtCisgICAgICAg
IGludHJvZHVjZWQgYnkgQnVnIDIwNDUwMy4KKworICAgICAgICBUaGUgZml4IHVzZXMgY29uc3Ry
dWN0LW9uLWZpcnN0LXVzZSBpZGlvbSB0byBhdm9pZCBzdGF0aWMKKyAgICAgICAgaW5pdGlsaXph
dGlvbiBvcmRlciBwcm9ibGVtcy4gIE5vdGUgdGhhdCBpdCB1c2VzIHN0YXRpYyBwb2ludGVycwor
ICAgICAgICByYXRoZXIgdGhhbiBzdGF0aWMgb2JqZWN0cyB0byBhdm9pZCBhbnkgZXZlbnR1YWwg
c3RhdGljIGRlc3RydWN0aW9uCisgICAgICAgIG9yZGVyIHByb2JsZW1zLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL2dsaWIvUmVt
b3RlSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9y
Q2xpZW50OjpnZXRNZXNzYWdlSGFuZGxlcnMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbnNw
ZWN0b3JDbGllbnQ6OlJlbW90ZUluc3BlY3RvckNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNz
L2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50Lmg6CisKKwogMjAxOS0xMi0wNiAgeW91ZW5uIGZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgUHJvdGVjdCBXZWJSVEMgbmV0d29y
ayBtb25pdG9yaW5nIHRvIHdhaXQgZm9yZXZlciBpbiBlZGdlIGNhc2VzCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQu
Y3BwCShyZXZpc2lvbiAyNTMyMDMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1Jl
bW90ZUluc3BlY3RvckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDcgKzkzLDkgQEAg
cHJpdmF0ZToKICAgICB1aW50NjRfdCBtX3RhcmdldElEOwogfTsKIAotY29uc3QgU29ja2V0Q29u
bmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJzIFJlbW90ZUluc3BlY3RvckNsaWVudDo6c19tZXNzYWdl
SGFuZGxlcnMgPSB7Citjb25zdCBTb2NrZXRDb25uZWN0aW9uOjpNZXNzYWdlSGFuZGxlcnMmIFJl
bW90ZUluc3BlY3RvckNsaWVudDo6Z2V0TWVzc2FnZUhhbmRsZXJzKCkKK3sKKyAgICBzdGF0aWMg
U29ja2V0Q29ubmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJzICptZXNzYWdlSGFuZGxlcnMgPSBuZXcg
U29ja2V0Q29ubmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJzKHsKICAgICB7ICJEaWRDbG9zZSIsIHN0
ZDo6cGFpcjxDU3RyaW5nLCBTb2NrZXRDb25uZWN0aW9uOjpNZXNzYWdlQ2FsbGJhY2s+IHsgeyB9
LAogICAgICAgICBbXShTb2NrZXRDb25uZWN0aW9uJiwgR1ZhcmlhbnQqLCBncG9pbnRlciB1c2Vy
RGF0YSkgewogICAgICAgICAgICAgYXV0byYgY2xpZW50ID0gKnN0YXRpY19jYXN0PFJlbW90ZUlu
c3BlY3RvckNsaWVudCo+KHVzZXJEYXRhKTsKQEAgLTEzOCw3ICsxNDAsOSBAQCBjb25zdCBTb2Nr
ZXRDb25uZWN0aW9uOjpNZXNzYWdlSGFuZGxlcnMKICAgICAgICAgICAgIGNsaWVudC5zZW5kTWVz
c2FnZVRvRnJvbnRlbmQoY29ubmVjdGlvbklELCB0YXJnZXRJRCwgbWVzc2FnZSk7CiAgICAgICAg
IH19CiAgICAgfQotfTsKKyAgICB9KTsKKyAgICByZXR1cm4gKm1lc3NhZ2VIYW5kbGVyczsKK30K
IAogUmVtb3RlSW5zcGVjdG9yQ2xpZW50OjpSZW1vdGVJbnNwZWN0b3JDbGllbnQoY29uc3QgY2hh
ciogYWRkcmVzcywgdW5zaWduZWQgcG9ydCwgUmVtb3RlSW5zcGVjdG9yT2JzZXJ2ZXImIG9ic2Vy
dmVyKQogICAgIDogbV9ob3N0QW5kUG9ydChTdHJpbmc6OmZyb21VVEY4KGFkZHJlc3MpICsgJzon
ICsgU3RyaW5nOjpudW1iZXIocG9ydCkpCkBAIC0xNTQsNyArMTU4LDcgQEAgUmVtb3RlSW5zcGVj
dG9yQ2xpZW50OjpSZW1vdGVJbnNwZWN0b3JDbAogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIGF1dG8qIGNsaWVudCA9IHN0YXRpY19jYXN0PFJlbW90ZUluc3BlY3RvckNsaWVu
dCo+KHVzZXJEYXRhKTsKICAgICAgICAgICAgIGlmIChjb25uZWN0aW9uKQotICAgICAgICAgICAg
ICAgIGNsaWVudC0+c2V0dXBDb25uZWN0aW9uKFNvY2tldENvbm5lY3Rpb246OmNyZWF0ZShXVEZN
b3ZlKGNvbm5lY3Rpb24pLCBzX21lc3NhZ2VIYW5kbGVycywgY2xpZW50KSk7CisgICAgICAgICAg
ICAgICAgY2xpZW50LT5zZXR1cENvbm5lY3Rpb24oU29ja2V0Q29ubmVjdGlvbjo6Y3JlYXRlKFdU
Rk1vdmUoY29ubmVjdGlvbiksIGdldE1lc3NhZ2VIYW5kbGVycygpLCBjbGllbnQpKTsKICAgICAg
ICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiUmVtb3RlSW5zcGVj
dG9yQ2xpZW50IGZhaWxlZCB0byBjb25uZWN0IHRvIGluc3BlY3RvciBzZXJ2ZXI6ICVzIiwgZXJy
b3ItPm1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIGNsaWVudC0+bV9vYnNlcnZlci5jb25uZWN0
aW9uQ2xvc2VkKCpjbGllbnQpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9S
ZW1vdGVJbnNwZWN0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5oCShyZXZpc2lvbiAyNTMyMDMpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsb3NlRnJvbUZy
b250ZW5kKHVpbnQ2NF90IGNvbm5lY3Rpb25JRCwgdWludDY0X3QgdGFyZ2V0SUQpOwogCiBwcml2
YXRlOgotICAgIHN0YXRpYyBjb25zdCBTb2NrZXRDb25uZWN0aW9uOjpNZXNzYWdlSGFuZGxlcnMg
c19tZXNzYWdlSGFuZGxlcnM7CisgICAgc3RhdGljIGNvbnN0IFNvY2tldENvbm5lY3Rpb246Ok1l
c3NhZ2VIYW5kbGVycyYgZ2V0TWVzc2FnZUhhbmRsZXJzKCk7CiAgICAgdm9pZCBzZXR1cENvbm5l
Y3Rpb24oUmVmPFNvY2tldENvbm5lY3Rpb24+JiYpOwogICAgIHZvaWQgY29ubmVjdGlvbkRpZENs
b3NlKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385014</attachid>
            <date>2019-12-06 08:30:48 -0800</date>
            <delta_ts>2019-12-06 08:44:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204715-20191206163047.patch</filename>
            <type>text/plain</type>
            <size>13777</size>
            <attacher name="Jim Mason">jmason</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjUzMjAzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBA
CisyMDE5LTEyLTA2ICBKaW0gTWFzb24gIDxqbWFzb25AaWJpbnguY29tPgorCisgICAgICAgIFtH
VEtdIFdlYktpdEdUSyBidWlsZCBoYW5ncyBvbiBnLWlyLXNjYW5uZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDcxNQorCisgICAgICAgIFRoaXMg
cGF0Y2ggZml4ZXMgdGhlIHN0YXRpYyBpbml0aWFsaXphdGlvbiBvcmRlciBwcm9ibGVtCisgICAg
ICAgIGludHJvZHVjZWQgYnkgQnVnIDIwNDUwMy4KKworICAgICAgICBUaGUgZml4IHVzZXMgdGhl
IGNvbnN0cnVjdC1vbi1maXJzdC11c2UgaWRpb20gdG8gYXZvaWQKKyAgICAgICAgc3RhdGljIGlu
aXRpYWxpemF0aW9uIG9yZGVyaW5nIGlzc3Vlcy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9y
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvckdsaWIu
Y3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0KToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjptZXNzYWdlSGFuZGxlcnMpOgorICAgICAg
ICAqIGluc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuY3BwOgorICAg
ICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6Om1lc3NhZ2VIYW5kbGVycyk6
CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZlcjo6aW5jb21pbmdDb25u
ZWN0aW9uQ2FsbGJhY2spOgorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJ
bnNwZWN0b3JTZXJ2ZXIuaDoKKwogMjAxOS0xMi0wNSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFw
cGxlLmNvbT4KIAogICAgICAgICBnZXRfYnlfaWQgSUNzIHNob3VsZCBoYXZlIGEgc3RydWN0dXJl
IGhpc3RvcnkgdXNlZCB0byBpbmRpY2F0ZSB3aGVuIHdlIHNob3VsZCBza2lwIGdlbmVyYXRpbmcg
YW4gSUMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90
ZUluc3BlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oCShyZXZpc2lvbiAyNTMyMDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTc4LDcgKzE3OCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICNpZiBVU0UoR0xJ
QikKICAgICB2b2lkIHNldHVwQ29ubmVjdGlvbihSZWY8U29ja2V0Q29ubmVjdGlvbj4mJik7Ci0g
ICAgc3RhdGljIGNvbnN0IFNvY2tldENvbm5lY3Rpb246Ok1lc3NhZ2VIYW5kbGVycyBzX21lc3Nh
Z2VIYW5kbGVyczsKKyAgICBzdGF0aWMgY29uc3QgU29ja2V0Q29ubmVjdGlvbjo6TWVzc2FnZUhh
bmRsZXJzJiBtZXNzYWdlSGFuZGxlcnMoKTsKIAogICAgIHZvaWQgcmVjZWl2ZWRHZXRUYXJnZXRM
aXN0TWVzc2FnZSgpOwogICAgIHZvaWQgcmVjZWl2ZWRTZXR1cE1lc3NhZ2UoVGFyZ2V0SUQpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJ
bnNwZWN0b3JHbGliLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvckdsaWIuY3BwCShyZXZpc2lvbiAyNTMy
MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90
ZUluc3BlY3RvckdsaWIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQg
UmVtb3RlSW5zcGVjdG9yOjpzdGFydCgpCiAgICAgICAgICAgICBSZW1vdGVJbnNwZWN0b3IqIGlu
c3BlY3RvciA9IHN0YXRpY19jYXN0PFJlbW90ZUluc3BlY3Rvcio+KHVzZXJEYXRhKTsKICAgICAg
ICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICAgICAgICAgIGlmIChHUmVm
UHRyPEdTb2NrZXRDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gYWRvcHRHUmVmKGdfc29ja2V0X2Ns
aWVudF9jb25uZWN0X3RvX2hvc3RfZmluaXNoKEdfU09DS0VUX0NMSUVOVChjbGllbnQpLCByZXN1
bHQsICZlcnJvci5vdXRQdHIoKSkpKQotICAgICAgICAgICAgICAgIGluc3BlY3Rvci0+c2V0dXBD
b25uZWN0aW9uKFNvY2tldENvbm5lY3Rpb246OmNyZWF0ZShXVEZNb3ZlKGNvbm5lY3Rpb24pLCBz
X21lc3NhZ2VIYW5kbGVycywgaW5zcGVjdG9yKSk7CisgICAgICAgICAgICAgICAgaW5zcGVjdG9y
LT5zZXR1cENvbm5lY3Rpb24oU29ja2V0Q29ubmVjdGlvbjo6Y3JlYXRlKFdURk1vdmUoY29ubmVj
dGlvbiksIG1lc3NhZ2VIYW5kbGVycygpLCBpbnNwZWN0b3IpKTsKICAgICAgICAgICAgIGVsc2Ug
aWYgKCFnX2Vycm9yX21hdGNoZXMoZXJyb3IuZ2V0KCksIEdfSU9fRVJST1IsIEdfSU9fRVJST1Jf
Q0FOQ0VMTEVEKSkKICAgICAgICAgICAgICAgICBnX3dhcm5pbmcoIlJlbW90ZUluc3BlY3RvciBm
YWlsZWQgdG8gY29ubmVjdCB0byBpbnNwZWN0b3Igc2VydmVyIGF0OiAlczogJXMiLCBnX2dldGVu
digiV0VCS0lUX0lOU1BFQ1RPUl9TRVJWRVIiKSwgZXJyb3ItPm1lc3NhZ2UpOwogICAgICAgICB9
LCB0aGlzKTsKQEAgLTkyLDcgKzkyLDkgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnN0b3BJbnRl
cm5hbChTdG9wUwogICAgIG1fc29ja2V0Q29ubmVjdGlvbiA9IG51bGxwdHI7CiB9CiAKLWNvbnN0
IFNvY2tldENvbm5lY3Rpb246Ok1lc3NhZ2VIYW5kbGVycyBSZW1vdGVJbnNwZWN0b3I6OnNfbWVz
c2FnZUhhbmRsZXJzID0geworY29uc3QgU29ja2V0Q29ubmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJz
JiBSZW1vdGVJbnNwZWN0b3I6Om1lc3NhZ2VIYW5kbGVycygpCit7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPGNvbnN0IFNvY2tldENvbm5lY3Rpb246Ok1lc3NhZ2VIYW5kbGVycz4gbWVzc2Fn
ZUhhbmRsZXJzID0gU29ja2V0Q29ubmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJzKHsKICAgICB7ICJE
aWRDbG9zZSIsIHN0ZDo6cGFpcjxDU3RyaW5nLCBTb2NrZXRDb25uZWN0aW9uOjpNZXNzYWdlQ2Fs
bGJhY2s+IHsgeyB9LAogICAgICAgICBbXShTb2NrZXRDb25uZWN0aW9uJiwgR1ZhcmlhbnQqLCBn
cG9pbnRlciB1c2VyRGF0YSkgewogICAgICAgICAgICAgYXV0byYgaW5zcGVjdG9yID0gKnN0YXRp
Y19jYXN0PFJlbW90ZUluc3BlY3Rvcio+KHVzZXJEYXRhKTsKQEAgLTEzMCw3ICsxMzIsOSBAQCBj
b25zdCBTb2NrZXRDb25uZWN0aW9uOjpNZXNzYWdlSGFuZGxlcnMKICAgICAgICAgICAgIGluc3Bl
Y3Rvci5yZWNlaXZlZENsb3NlTWVzc2FnZSh0YXJnZXRJRCk7CiAgICAgICAgIH19CiAgICAgfQot
fTsKKyAgICB9KTsKKyAgICByZXR1cm4gbWVzc2FnZUhhbmRsZXJzOworfQogCiB2b2lkIFJlbW90
ZUluc3BlY3Rvcjo6c2V0dXBDb25uZWN0aW9uKFJlZjxTb2NrZXRDb25uZWN0aW9uPiYmIGNvbm5l
Y3Rpb24pCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9n
bGliL1JlbW90ZUluc3BlY3RvclNlcnZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuY3Bw
CShyZXZpc2lvbiAyNTMyMDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9nbGliL1JlbW90ZUluc3BlY3RvclNlcnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIlJlbW90ZUluc3BlY3RvclV0aWxzLmgiCiAjaW5jbHVk
ZSA8Z2lvL2dpby5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAKQEAgLTkz
LDcgKzk0LDkgQEAgc3RhdGljIFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50OjpTZXNzaW9uQwogICAg
IHJldHVybiBjYXBhYmlsaXRpZXM7CiB9CiAKLWNvbnN0IFNvY2tldENvbm5lY3Rpb246Ok1lc3Nh
Z2VIYW5kbGVycyBSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OnNfbWVzc2FnZUhhbmRsZXJzID0gewor
Y29uc3QgU29ja2V0Q29ubmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJzJiBSZW1vdGVJbnNwZWN0b3JT
ZXJ2ZXI6Om1lc3NhZ2VIYW5kbGVycygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNv
bnN0IFNvY2tldENvbm5lY3Rpb246Ok1lc3NhZ2VIYW5kbGVycz4gbWVzc2FnZUhhbmRsZXJzID0g
U29ja2V0Q29ubmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJzKHsKICAgICB7ICJEaWRDbG9zZSIsIHN0
ZDo6cGFpcjxDU3RyaW5nLCBTb2NrZXRDb25uZWN0aW9uOjpNZXNzYWdlQ2FsbGJhY2s+IHsgeyB9
LAogICAgICAgICBbXShTb2NrZXRDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBHVmFyaWFudCosIGdw
b2ludGVyIHVzZXJEYXRhKSB7CiAgICAgICAgICAgICBhdXRvJiBpbnNwZWN0b3JTZXJ2ZXIgPSAq
c3RhdGljX2Nhc3Q8UmVtb3RlSW5zcGVjdG9yU2VydmVyKj4odXNlckRhdGEpOwpAQCAtMTYzLDcg
KzE2Niw5IEBAIGNvbnN0IFNvY2tldENvbm5lY3Rpb246Ok1lc3NhZ2VIYW5kbGVycwogICAgICAg
ICAgICAgICAgIGNsaWVudENhcGFiaWxpdGllcyA/IGNsaWVudENhcGFiaWxpdGllcy0+YnJvd3Nl
clZlcnNpb24udXRmOCgpLmRhdGEoKSA6ICIiKSk7CiAgICAgICAgIH19CiAgICAgfQotfTsKKyAg
ICB9KTsKKyAgICByZXR1cm4gbWVzc2FnZUhhbmRsZXJzOworfQogCiBSZW1vdGVJbnNwZWN0b3JT
ZXJ2ZXImIFJlbW90ZUluc3BlY3RvclNlcnZlcjo6c2luZ2xldG9uKCkKIHsKQEAgLTE5NCw3ICsx
OTksNyBAQCBib29sIFJlbW90ZUluc3BlY3RvclNlcnZlcjo6c3RhcnQoY29uc3QKIAogZ2Jvb2xl
YW4gUmVtb3RlSW5zcGVjdG9yU2VydmVyOjppbmNvbWluZ0Nvbm5lY3Rpb25DYWxsYmFjayhHU29j
a2V0U2VydmljZSosIEdTb2NrZXRDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBHT2JqZWN0KiwgUmVt
b3RlSW5zcGVjdG9yU2VydmVyKiBpbnNwZWN0b3JTZXJ2ZXIpCiB7Ci0gICAgaW5zcGVjdG9yU2Vy
dmVyLT5pbmNvbWluZ0Nvbm5lY3Rpb24oU29ja2V0Q29ubmVjdGlvbjo6Y3JlYXRlKEdSZWZQdHI8
R1NvY2tldENvbm5lY3Rpb24+KGNvbm5lY3Rpb24pLCBzX21lc3NhZ2VIYW5kbGVycywgaW5zcGVj
dG9yU2VydmVyKSk7CisgICAgaW5zcGVjdG9yU2VydmVyLT5pbmNvbWluZ0Nvbm5lY3Rpb24oU29j
a2V0Q29ubmVjdGlvbjo6Y3JlYXRlKEdSZWZQdHI8R1NvY2tldENvbm5lY3Rpb24+KGNvbm5lY3Rp
b24pLCBtZXNzYWdlSGFuZGxlcnMoKSwgaW5zcGVjdG9yU2VydmVyKSk7CiAgICAgcmV0dXJuIFRS
VUU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2ds
aWIvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuaAkocmV2
aXNpb24gMjUzMjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUv
Z2xpYi9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAs
NyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBnYm9vbGVhbiBpbmNvbWluZ0Nvbm5lY3Rpb25DYWxs
YmFjayhHU29ja2V0U2VydmljZSosIEdTb2NrZXRDb25uZWN0aW9uKiwgR09iamVjdCosIFJlbW90
ZUluc3BlY3RvclNlcnZlciopOwogICAgIHZvaWQgaW5jb21pbmdDb25uZWN0aW9uKFJlZjxTb2Nr
ZXRDb25uZWN0aW9uPiYmKTsKIAotICAgIHN0YXRpYyBjb25zdCBTb2NrZXRDb25uZWN0aW9uOjpN
ZXNzYWdlSGFuZGxlcnMgc19tZXNzYWdlSGFuZGxlcnM7CisgICAgc3RhdGljIGNvbnN0IFNvY2tl
dENvbm5lY3Rpb246Ok1lc3NhZ2VIYW5kbGVycyYgbWVzc2FnZUhhbmRsZXJzKCk7CiAgICAgdm9p
ZCBjb25uZWN0aW9uRGlkQ2xvc2UoU29ja2V0Q29ubmVjdGlvbiYpOwogICAgIHZvaWQgc2V0VGFy
Z2V0TGlzdChTb2NrZXRDb25uZWN0aW9uJiwgR1ZhcmlhbnQqKTsKICAgICBHVmFyaWFudCogc2V0
dXBJbnNwZWN0b3JDbGllbnQoU29ja2V0Q29ubmVjdGlvbiYsIGNvbnN0IGNoYXIqIGNsaWVudEJh
Y2tlbmRDb21tYW5kc0hhc2gpOwpJbmRleDogU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MzIwMykK
KysrIFNvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjEgQEAKKzIwMTktMTItMDYgIEppbSBNYXNvbiAgPGptYXNvbkBpYmlueC5jb20+CisKKyAgICAg
ICAgW0dUS10gV2ViS2l0R1RLIGJ1aWxkIGhhbmdzIG9uIGctaXItc2Nhbm5lcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0NzE1CisKKyAgICAgICAg
VGhpcyBwYXRjaCBmaXhlcyB0aGUgc3RhdGljIGluaXRpYWxpemF0aW9uIG9yZGVyIHByb2JsZW0K
KyAgICAgICAgaW50cm9kdWNlZCBieSBCdWcgMjA0NTAzLgorCisgICAgICAgIFRoZSBmaXggdXNl
cyB0aGUgY29uc3RydWN0LW9uLWZpcnN0LXVzZSBpZGlvbSB0byBhdm9pZAorICAgICAgICBzdGF0
aWMgaW5pdGlhbGl6YXRpb24gb3JkZXJpbmcgaXNzdWVzLgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2Vzc2lvbkhvc3QuaDoKKyAgICAgICAgKiBn
bGliL1Nlc3Npb25Ib3N0R2xpYi5jcHA6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb25Ib3N0
OjptZXNzYWdlSGFuZGxlcnMpOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uSG9zdDo6Y29u
bmVjdFRvQnJvd3Nlcik6CisKIDIwMTktMTItMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFdlYkRyaXZlcjogaGFuZGxlIGVsZW1lbnRzIG9m
IHR5cGUgZmlsZSBpbiBzZW5kIGtleXMgY29tbWFuZApJbmRleDogU291cmNlL1dlYkRyaXZlci9T
ZXNzaW9uSG9zdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbkhvc3Qu
aAkocmV2aXNpb24gMjUzMjAzKQorKysgU291cmNlL1dlYkRyaXZlci9TZXNzaW9uSG9zdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRj
aE1lc3NhZ2UoY29uc3QgU3RyaW5nJik7CiAKICNpZiBVU0UoR0xJQikKLSAgICBzdGF0aWMgY29u
c3QgU29ja2V0Q29ubmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJzIHNfbWVzc2FnZUhhbmRsZXJzOwor
ICAgIHN0YXRpYyBjb25zdCBTb2NrZXRDb25uZWN0aW9uOjpNZXNzYWdlSGFuZGxlcnMmIG1lc3Nh
Z2VIYW5kbGVycygpOwogICAgIHZvaWQgY29ubmVjdGlvbkRpZENsb3NlKCk7CiAgICAgdm9pZCBs
YXVuY2hCcm93c2VyKEZ1bmN0aW9uPHZvaWQgKE9wdGlvbmFsPFN0cmluZz4gZXJyb3IpPiYmKTsK
ICAgICB2b2lkIGNvbm5lY3RUb0Jyb3dzZXIoc3RkOjp1bmlxdWVfcHRyPENvbm5lY3RUb0Jyb3dz
ZXJBc3luY0RhdGE+JiYpOwpJbmRleDogU291cmNlL1dlYkRyaXZlci9nbGliL1Nlc3Npb25Ib3N0
R2xpYi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkRyaXZlci9nbGliL1Nlc3Npb25Ib3N0
R2xpYi5jcHAJKHJldmlzaW9uIDI1MzIwMykKKysrIFNvdXJjZS9XZWJEcml2ZXIvZ2xpYi9TZXNz
aW9uSG9zdEdsaWIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNs
dWRlICJXZWJEcml2ZXJTZXJ2aWNlLmgiCiAjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVk
ZSA8d3RmL1VVSUQuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CkBAIC00Myw3
ICs0NCw5IEBAIFNlc3Npb25Ib3N0Ojp+U2Vzc2lvbkhvc3QoKQogICAgICAgICBnX3N1YnByb2Nl
c3NfZm9yY2VfZXhpdChtX2Jyb3dzZXIuZ2V0KCkpOwogfQogCi1jb25zdCBTb2NrZXRDb25uZWN0
aW9uOjpNZXNzYWdlSGFuZGxlcnMgU2Vzc2lvbkhvc3Q6OnNfbWVzc2FnZUhhbmRsZXJzID0gewor
Y29uc3QgU29ja2V0Q29ubmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJzJiBTZXNzaW9uSG9zdDo6bWVz
c2FnZUhhbmRsZXJzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU29ja2V0
Q29ubmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJzPiBtZXNzYWdlSGFuZGxlcnMgPSBTb2NrZXRDb25u
ZWN0aW9uOjpNZXNzYWdlSGFuZGxlcnMoewogICAgIHsgIkRpZENsb3NlIiwgc3RkOjpwYWlyPENT
dHJpbmcsIFNvY2tldENvbm5lY3Rpb246Ok1lc3NhZ2VDYWxsYmFjaz4geyB7IH0sCiAgICAgICAg
IFtdKFNvY2tldENvbm5lY3Rpb24mLCBHVmFyaWFudCosIGdwb2ludGVyIHVzZXJEYXRhKSB7CiAg
ICAgICAgICAgICBhdXRvJiBzZXNzaW9uSG9zdCA9ICpzdGF0aWNfY2FzdDxTZXNzaW9uSG9zdCo+
KHVzZXJEYXRhKTsKQEAgLTg2LDcgKzg5LDkgQEAgY29uc3QgU29ja2V0Q29ubmVjdGlvbjo6TWVz
c2FnZUhhbmRsZXJzCiAgICAgICAgICAgICBzZXNzaW9uSG9zdC5zZW5kTWVzc2FnZVRvRnJvbnRl
bmQoY29ubmVjdGlvbklELCB0YXJnZXRJRCwgbWVzc2FnZSk7CiAgICAgICAgIH19CiAgICAgfQot
fTsKKyAgICB9KTsKKyAgICByZXR1cm4gbWVzc2FnZUhhbmRsZXJzOworfQogCiB2b2lkIFNlc3Np
b25Ib3N0Ojpjb25uZWN0VG9Ccm93c2VyKEZ1bmN0aW9uPHZvaWQgKE9wdGlvbmFsPFN0cmluZz4g
ZXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewpAQCAtMTkxLDcgKzE5Niw3IEBAIHZvaWQg
U2Vzc2lvbkhvc3Q6OmNvbm5lY3RUb0Jyb3dzZXIoc3RkOjoKICAgICAgICAgICAgICAgICAgICAg
ZGF0YS0+Y29tcGxldGlvbkhhbmRsZXIoU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVzc2FnZSkp
OwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGRhdGEtPnNlc3Npb25Ib3N0LT5zZXR1cENvbm5lY3Rpb24oU29ja2V0Q29ubmVj
dGlvbjo6Y3JlYXRlKFdURk1vdmUoY29ubmVjdGlvbiksIHNfbWVzc2FnZUhhbmRsZXJzLCBkYXRh
LT5zZXNzaW9uSG9zdCkpOworICAgICAgICAgICAgICAgIGRhdGEtPnNlc3Npb25Ib3N0LT5zZXR1
cENvbm5lY3Rpb24oU29ja2V0Q29ubmVjdGlvbjo6Y3JlYXRlKFdURk1vdmUoY29ubmVjdGlvbiks
IG1lc3NhZ2VIYW5kbGVycygpLCBkYXRhLT5zZXNzaW9uSG9zdCkpOwogICAgICAgICAgICAgICAg
IGRhdGEtPmNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CiAgICAgICAgIH0sIGRhdGEp
OwogICAgIH0pOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MzIwMykKKysrIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTktMTItMDYg
IEppbSBNYXNvbiAgPGptYXNvbkBpYmlueC5jb20+CisKKyAgICAgICAgW0dUS10gV2ViS2l0R1RL
IGJ1aWxkIGhhbmdzIG9uIGctaXItc2Nhbm5lcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0NzE1CisKKyAgICAgICAgVGhpcyBwYXRjaCBmaXhlcyB0
aGUgc3RhdGljIGluaXRpYWxpemF0aW9uIG9yZGVyIHByb2JsZW0KKyAgICAgICAgaW50cm9kdWNl
ZCBieSBCdWcgMjA0NTAzLgorCisgICAgICAgIFRoZSBmaXggdXNlcyB0aGUgY29uc3RydWN0LW9u
LWZpcnN0LXVzZSBpZGlvbSB0byBhdm9pZAorICAgICAgICBzdGF0aWMgaW5pdGlhbGl6YXRpb24g
b3JkZXJpbmcgaXNzdWVzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yQ2xpZW50OjptZXNzYWdlSGFuZGxlcnMpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbnNwZWN0b3JDbGllbnQ6OlJlbW90ZUluc3BlY3RvckNs
aWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50Lmg6
CisKIDIwMTktMTItMDYgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFByb3RlY3QgV2ViUlRDIG5ldHdvcmsgbW9uaXRvcmluZyB0byB3YWl0IGZvcmV2ZXIgaW4g
ZWRnZSBjYXNlcwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9SZW1vdGVJbnNw
ZWN0b3JDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2ds
aWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcAkocmV2aXNpb24gMjUzMjAzKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiUmVtb3RlV2ViSW5zcGVjdG9yUHJv
eHkuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0b3JVdGlscy5oPgog
I2luY2x1ZGUgPGdpby9naW8uaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNp
bmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0
Lmg+CiAKQEAgLTkzLDcgKzk0LDkgQEAgcHJpdmF0ZToKICAgICB1aW50NjRfdCBtX3RhcmdldElE
OwogfTsKIAotY29uc3QgU29ja2V0Q29ubmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJzIFJlbW90ZUlu
c3BlY3RvckNsaWVudDo6c19tZXNzYWdlSGFuZGxlcnMgPSB7Citjb25zdCBTb2NrZXRDb25uZWN0
aW9uOjpNZXNzYWdlSGFuZGxlcnMmIFJlbW90ZUluc3BlY3RvckNsaWVudDo6bWVzc2FnZUhhbmRs
ZXJzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU29ja2V0Q29ubmVjdGlv
bjo6TWVzc2FnZUhhbmRsZXJzPiBtZXNzYWdlSGFuZGxlcnMgPSBTb2NrZXRDb25uZWN0aW9uOjpN
ZXNzYWdlSGFuZGxlcnMoewogICAgIHsgIkRpZENsb3NlIiwgc3RkOjpwYWlyPENTdHJpbmcsIFNv
Y2tldENvbm5lY3Rpb246Ok1lc3NhZ2VDYWxsYmFjaz4geyB7IH0sCiAgICAgICAgIFtdKFNvY2tl
dENvbm5lY3Rpb24mLCBHVmFyaWFudCosIGdwb2ludGVyIHVzZXJEYXRhKSB7CiAgICAgICAgICAg
ICBhdXRvJiBjbGllbnQgPSAqc3RhdGljX2Nhc3Q8UmVtb3RlSW5zcGVjdG9yQ2xpZW50Kj4odXNl
ckRhdGEpOwpAQCAtMTM4LDcgKzE0MSw5IEBAIGNvbnN0IFNvY2tldENvbm5lY3Rpb246Ok1lc3Nh
Z2VIYW5kbGVycwogICAgICAgICAgICAgY2xpZW50LnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25u
ZWN0aW9uSUQsIHRhcmdldElELCBtZXNzYWdlKTsKICAgICAgICAgfX0KICAgICB9Ci19OworICAg
IH0pOworICAgIHJldHVybiBtZXNzYWdlSGFuZGxlcnM7Cit9CiAKIFJlbW90ZUluc3BlY3RvckNs
aWVudDo6UmVtb3RlSW5zcGVjdG9yQ2xpZW50KGNvbnN0IGNoYXIqIGFkZHJlc3MsIHVuc2lnbmVk
IHBvcnQsIFJlbW90ZUluc3BlY3Rvck9ic2VydmVyJiBvYnNlcnZlcikKICAgICA6IG1faG9zdEFu
ZFBvcnQoU3RyaW5nOjpmcm9tVVRGOChhZGRyZXNzKSArICc6JyArIFN0cmluZzo6bnVtYmVyKHBv
cnQpKQpAQCAtMTU0LDcgKzE1OSw3IEBAIFJlbW90ZUluc3BlY3RvckNsaWVudDo6UmVtb3RlSW5z
cGVjdG9yQ2wKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBhdXRvKiBjbGll
bnQgPSBzdGF0aWNfY2FzdDxSZW1vdGVJbnNwZWN0b3JDbGllbnQqPih1c2VyRGF0YSk7CiAgICAg
ICAgICAgICBpZiAoY29ubmVjdGlvbikKLSAgICAgICAgICAgICAgICBjbGllbnQtPnNldHVwQ29u
bmVjdGlvbihTb2NrZXRDb25uZWN0aW9uOjpjcmVhdGUoV1RGTW92ZShjb25uZWN0aW9uKSwgc19t
ZXNzYWdlSGFuZGxlcnMsIGNsaWVudCkpOworICAgICAgICAgICAgICAgIGNsaWVudC0+c2V0dXBD
b25uZWN0aW9uKFNvY2tldENvbm5lY3Rpb246OmNyZWF0ZShXVEZNb3ZlKGNvbm5lY3Rpb24pLCBt
ZXNzYWdlSGFuZGxlcnMoKSwgY2xpZW50KSk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgICAgICBXVEZMb2dBbHdheXMoIlJlbW90ZUluc3BlY3RvckNsaWVudCBmYWlsZWQgdG8gY29u
bmVjdCB0byBpbnNwZWN0b3Igc2VydmVyOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsKICAgICAgICAg
ICAgICAgICBjbGllbnQtPm1fb2JzZXJ2ZXIuY29ubmVjdGlvbkNsb3NlZCgqY2xpZW50KTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9SZW1vdGVJbnNwZWN0
b3JDbGllbnQuaAkocmV2aXNpb24gMjUzMjAzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbG9zZUZyb21Gcm9udGVuZCh1aW50NjRfdCBjb25uZWN0
aW9uSUQsIHVpbnQ2NF90IHRhcmdldElEKTsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3Qg
U29ja2V0Q29ubmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJzIHNfbWVzc2FnZUhhbmRsZXJzOworICAg
IHN0YXRpYyBjb25zdCBTb2NrZXRDb25uZWN0aW9uOjpNZXNzYWdlSGFuZGxlcnMmIG1lc3NhZ2VI
YW5kbGVycygpOwogICAgIHZvaWQgc2V0dXBDb25uZWN0aW9uKFJlZjxTb2NrZXRDb25uZWN0aW9u
PiYmKTsKICAgICB2b2lkIGNvbm5lY3Rpb25EaWRDbG9zZSgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385016</attachid>
            <date>2019-12-06 08:44:14 -0800</date>
            <delta_ts>2019-12-06 08:50:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204715-20191206164413.patch</filename>
            <type>text/plain</type>
            <size>13965</size>
            <attacher name="Jim Mason">jmason</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjUzMjAzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBA
CisyMDE5LTEyLTA2ICBKaW0gTWFzb24gIDxqbWFzb25AaWJpbnguY29tPgorCisgICAgICAgIFtH
VEtdIFdlYktpdEdUSyBidWlsZCBoYW5ncyBvbiBnLWlyLXNjYW5uZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDcxNQorCisgICAgICAgIFRoaXMg
cGF0Y2ggZml4ZXMgdGhlIHN0YXRpYyBpbml0aWFsaXphdGlvbiBvcmRlciBwcm9ibGVtCisgICAg
ICAgIGludHJvZHVjZWQgYnkgQnVnIDIwNDUwMy4KKworICAgICAgICBUaGUgcGF0Y2ggcmVwbGFj
ZXMgdGhlIHN0YXRpYyBkYXRhIG1lbWJlcnMgd2l0aCBzdGF0aWNzIHRoYXQKKyAgICAgICAgYXJl
IGNvbnN0cnVjdGVkIG9ubHkgdXBvbiBmaXJzdCBhY2Nlc3MgKGkuZS4sIHRoZSAnY29uc3RydWN0
CisgICAgICAgIG9uIGZpcnN0IHVzZScgaWRpb20pLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0
b3IuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yR2xp
Yi5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c3RhcnQpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6Om1lc3NhZ2VIYW5kbGVycyk6CisgICAg
ICAgICogaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvclNlcnZlci5jcHA6Cisg
ICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZlcjo6bWVzc2FnZUhhbmRsZXJz
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU2VydmVyOjppbmNvbWluZ0Nv
bm5lY3Rpb25DYWxsYmFjayk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90
ZUluc3BlY3RvclNlcnZlci5oOgorCiAyMDE5LTEyLTA1ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlA
YXBwbGUuY29tPgogCiAgICAgICAgIGdldF9ieV9pZCBJQ3Mgc2hvdWxkIGhhdmUgYSBzdHJ1Y3R1
cmUgaGlzdG9yeSB1c2VkIHRvIGluZGljYXRlIHdoZW4gd2Ugc2hvdWxkIHNraXAgZ2VuZXJhdGlu
ZyBhbiBJQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVt
b3RlSW5zcGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmgJKHJldmlzaW9uIDI1MzIwMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzgsNyArMTc4LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogI2lmIFVTRShH
TElCKQogICAgIHZvaWQgc2V0dXBDb25uZWN0aW9uKFJlZjxTb2NrZXRDb25uZWN0aW9uPiYmKTsK
LSAgICBzdGF0aWMgY29uc3QgU29ja2V0Q29ubmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJzIHNfbWVz
c2FnZUhhbmRsZXJzOworICAgIHN0YXRpYyBjb25zdCBTb2NrZXRDb25uZWN0aW9uOjpNZXNzYWdl
SGFuZGxlcnMmIG1lc3NhZ2VIYW5kbGVycygpOwogCiAgICAgdm9pZCByZWNlaXZlZEdldFRhcmdl
dExpc3RNZXNzYWdlKCk7CiAgICAgdm9pZCByZWNlaXZlZFNldHVwTWVzc2FnZShUYXJnZXRJRCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90
ZUluc3BlY3RvckdsaWIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yR2xpYi5jcHAJKHJldmlzaW9uIDI1
MzIwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVt
b3RlSW5zcGVjdG9yR2xpYi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgdm9p
ZCBSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0KCkKICAgICAgICAgICAgIFJlbW90ZUluc3BlY3Rvciog
aW5zcGVjdG9yID0gc3RhdGljX2Nhc3Q8UmVtb3RlSW5zcGVjdG9yKj4odXNlckRhdGEpOwogICAg
ICAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgICAgICAgICAgaWYgKEdS
ZWZQdHI8R1NvY2tldENvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBhZG9wdEdSZWYoZ19zb2NrZXRf
Y2xpZW50X2Nvbm5lY3RfdG9faG9zdF9maW5pc2goR19TT0NLRVRfQ0xJRU5UKGNsaWVudCksIHJl
c3VsdCwgJmVycm9yLm91dFB0cigpKSkpCi0gICAgICAgICAgICAgICAgaW5zcGVjdG9yLT5zZXR1
cENvbm5lY3Rpb24oU29ja2V0Q29ubmVjdGlvbjo6Y3JlYXRlKFdURk1vdmUoY29ubmVjdGlvbiks
IHNfbWVzc2FnZUhhbmRsZXJzLCBpbnNwZWN0b3IpKTsKKyAgICAgICAgICAgICAgICBpbnNwZWN0
b3ItPnNldHVwQ29ubmVjdGlvbihTb2NrZXRDb25uZWN0aW9uOjpjcmVhdGUoV1RGTW92ZShjb25u
ZWN0aW9uKSwgbWVzc2FnZUhhbmRsZXJzKCksIGluc3BlY3RvcikpOwogICAgICAgICAgICAgZWxz
ZSBpZiAoIWdfZXJyb3JfbWF0Y2hlcyhlcnJvci5nZXQoKSwgR19JT19FUlJPUiwgR19JT19FUlJP
Ul9DQU5DRUxMRUQpKQogICAgICAgICAgICAgICAgIGdfd2FybmluZygiUmVtb3RlSW5zcGVjdG9y
IGZhaWxlZCB0byBjb25uZWN0IHRvIGluc3BlY3RvciBzZXJ2ZXIgYXQ6ICVzOiAlcyIsIGdfZ2V0
ZW52KCJXRUJLSVRfSU5TUEVDVE9SX1NFUlZFUiIpLCBlcnJvci0+bWVzc2FnZSk7CiAgICAgICAg
IH0sIHRoaXMpOwpAQCAtOTIsNyArOTIsOSBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RvcElu
dGVybmFsKFN0b3BTCiAgICAgbV9zb2NrZXRDb25uZWN0aW9uID0gbnVsbHB0cjsKIH0KIAotY29u
c3QgU29ja2V0Q29ubmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJzIFJlbW90ZUluc3BlY3Rvcjo6c19t
ZXNzYWdlSGFuZGxlcnMgPSB7Citjb25zdCBTb2NrZXRDb25uZWN0aW9uOjpNZXNzYWdlSGFuZGxl
cnMmIFJlbW90ZUluc3BlY3Rvcjo6bWVzc2FnZUhhbmRsZXJzKCkKK3sKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgU29ja2V0Q29ubmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJzPiBtZXNz
YWdlSGFuZGxlcnMgPSBTb2NrZXRDb25uZWN0aW9uOjpNZXNzYWdlSGFuZGxlcnMoewogICAgIHsg
IkRpZENsb3NlIiwgc3RkOjpwYWlyPENTdHJpbmcsIFNvY2tldENvbm5lY3Rpb246Ok1lc3NhZ2VD
YWxsYmFjaz4geyB7IH0sCiAgICAgICAgIFtdKFNvY2tldENvbm5lY3Rpb24mLCBHVmFyaWFudCos
IGdwb2ludGVyIHVzZXJEYXRhKSB7CiAgICAgICAgICAgICBhdXRvJiBpbnNwZWN0b3IgPSAqc3Rh
dGljX2Nhc3Q8UmVtb3RlSW5zcGVjdG9yKj4odXNlckRhdGEpOwpAQCAtMTMwLDcgKzEzMiw5IEBA
IGNvbnN0IFNvY2tldENvbm5lY3Rpb246Ok1lc3NhZ2VIYW5kbGVycwogICAgICAgICAgICAgaW5z
cGVjdG9yLnJlY2VpdmVkQ2xvc2VNZXNzYWdlKHRhcmdldElEKTsKICAgICAgICAgfX0KICAgICB9
Ci19OworICAgIH0pOworICAgIHJldHVybiBtZXNzYWdlSGFuZGxlcnM7Cit9CiAKIHZvaWQgUmVt
b3RlSW5zcGVjdG9yOjpzZXR1cENvbm5lY3Rpb24oUmVmPFNvY2tldENvbm5lY3Rpb24+JiYgY29u
bmVjdGlvbikKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L2dsaWIvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvclNlcnZlci5j
cHAJKHJldmlzaW9uIDI1MzIwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiUmVtb3RlSW5zcGVjdG9yVXRpbHMuaCIKICNpbmNs
dWRlIDxnaW8vZ2lvLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KIApAQCAt
OTMsNyArOTQsOSBAQCBzdGF0aWMgUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQ6OlNlc3Npb25DCiAg
ICAgcmV0dXJuIGNhcGFiaWxpdGllczsKIH0KIAotY29uc3QgU29ja2V0Q29ubmVjdGlvbjo6TWVz
c2FnZUhhbmRsZXJzIFJlbW90ZUluc3BlY3RvclNlcnZlcjo6c19tZXNzYWdlSGFuZGxlcnMgPSB7
Citjb25zdCBTb2NrZXRDb25uZWN0aW9uOjpNZXNzYWdlSGFuZGxlcnMmIFJlbW90ZUluc3BlY3Rv
clNlcnZlcjo6bWVzc2FnZUhhbmRsZXJzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgU29ja2V0Q29ubmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJzPiBtZXNzYWdlSGFuZGxlcnMg
PSBTb2NrZXRDb25uZWN0aW9uOjpNZXNzYWdlSGFuZGxlcnMoewogICAgIHsgIkRpZENsb3NlIiwg
c3RkOjpwYWlyPENTdHJpbmcsIFNvY2tldENvbm5lY3Rpb246Ok1lc3NhZ2VDYWxsYmFjaz4geyB7
IH0sCiAgICAgICAgIFtdKFNvY2tldENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIEdWYXJpYW50Kiwg
Z3BvaW50ZXIgdXNlckRhdGEpIHsKICAgICAgICAgICAgIGF1dG8mIGluc3BlY3RvclNlcnZlciA9
ICpzdGF0aWNfY2FzdDxSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIqPih1c2VyRGF0YSk7CkBAIC0xNjMs
NyArMTY2LDkgQEAgY29uc3QgU29ja2V0Q29ubmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJzCiAgICAg
ICAgICAgICAgICAgY2xpZW50Q2FwYWJpbGl0aWVzID8gY2xpZW50Q2FwYWJpbGl0aWVzLT5icm93
c2VyVmVyc2lvbi51dGY4KCkuZGF0YSgpIDogIiIpKTsKICAgICAgICAgfX0KICAgICB9Ci19Owor
ICAgIH0pOworICAgIHJldHVybiBtZXNzYWdlSGFuZGxlcnM7Cit9CiAKIFJlbW90ZUluc3BlY3Rv
clNlcnZlciYgUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzaW5nbGV0b24oKQogewpAQCAtMTk0LDcg
KzE5OSw3IEBAIGJvb2wgUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzdGFydChjb25zdAogCiBnYm9v
bGVhbiBSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OmluY29taW5nQ29ubmVjdGlvbkNhbGxiYWNrKEdT
b2NrZXRTZXJ2aWNlKiwgR1NvY2tldENvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIEdPYmplY3QqLCBS
ZW1vdGVJbnNwZWN0b3JTZXJ2ZXIqIGluc3BlY3RvclNlcnZlcikKIHsKLSAgICBpbnNwZWN0b3JT
ZXJ2ZXItPmluY29taW5nQ29ubmVjdGlvbihTb2NrZXRDb25uZWN0aW9uOjpjcmVhdGUoR1JlZlB0
cjxHU29ja2V0Q29ubmVjdGlvbj4oY29ubmVjdGlvbiksIHNfbWVzc2FnZUhhbmRsZXJzLCBpbnNw
ZWN0b3JTZXJ2ZXIpKTsKKyAgICBpbnNwZWN0b3JTZXJ2ZXItPmluY29taW5nQ29ubmVjdGlvbihT
b2NrZXRDb25uZWN0aW9uOjpjcmVhdGUoR1JlZlB0cjxHU29ja2V0Q29ubmVjdGlvbj4oY29ubmVj
dGlvbiksIG1lc3NhZ2VIYW5kbGVycygpLCBpbnNwZWN0b3JTZXJ2ZXIpKTsKICAgICByZXR1cm4g
VFJVRTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUv
Z2xpYi9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvclNlcnZlci5oCShy
ZXZpc2lvbiAyNTMyMDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9nbGliL1JlbW90ZUluc3BlY3RvclNlcnZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1
MCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGdib29sZWFuIGluY29taW5nQ29ubmVjdGlvbkNh
bGxiYWNrKEdTb2NrZXRTZXJ2aWNlKiwgR1NvY2tldENvbm5lY3Rpb24qLCBHT2JqZWN0KiwgUmVt
b3RlSW5zcGVjdG9yU2VydmVyKik7CiAgICAgdm9pZCBpbmNvbWluZ0Nvbm5lY3Rpb24oUmVmPFNv
Y2tldENvbm5lY3Rpb24+JiYpOwogCi0gICAgc3RhdGljIGNvbnN0IFNvY2tldENvbm5lY3Rpb246
Ok1lc3NhZ2VIYW5kbGVycyBzX21lc3NhZ2VIYW5kbGVyczsKKyAgICBzdGF0aWMgY29uc3QgU29j
a2V0Q29ubmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJzJiBtZXNzYWdlSGFuZGxlcnMoKTsKICAgICB2
b2lkIGNvbm5lY3Rpb25EaWRDbG9zZShTb2NrZXRDb25uZWN0aW9uJik7CiAgICAgdm9pZCBzZXRU
YXJnZXRMaXN0KFNvY2tldENvbm5lY3Rpb24mLCBHVmFyaWFudCopOwogICAgIEdWYXJpYW50KiBz
ZXR1cEluc3BlY3RvckNsaWVudChTb2NrZXRDb25uZWN0aW9uJiwgY29uc3QgY2hhciogY2xpZW50
QmFja2VuZENvbW1hbmRzSGFzaCk7CkluZGV4OiBTb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwkocmV2aXNpb24gMjUzMjAz
KQorKysgU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyMiBAQAorMjAxOS0xMi0wNiAgSmltIE1hc29uICA8am1hc29uQGliaW54LmNvbT4KKworICAg
ICAgICBbR1RLXSBXZWJLaXRHVEsgYnVpbGQgaGFuZ3Mgb24gZy1pci1zY2FubmVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQ3MTUKKworICAgICAg
ICBUaGlzIHBhdGNoIGZpeGVzIHRoZSBzdGF0aWMgaW5pdGlhbGl6YXRpb24gb3JkZXIgcHJvYmxl
bQorICAgICAgICBpbnRyb2R1Y2VkIGJ5IEJ1ZyAyMDQ1MDMuCisKKyAgICAgICAgVGhlIHBhdGNo
IHJlcGxhY2VzIHRoZSBzdGF0aWMgZGF0YSBtZW1iZXJzIHdpdGggc3RhdGljcyB0aGF0CisgICAg
ICAgIGFyZSBjb25zdHJ1Y3RlZCBvbmx5IHVwb24gZmlyc3QgYWNjZXNzIChpLmUuLCB0aGUgJ2Nv
bnN0cnVjdAorICAgICAgICBvbiBmaXJzdCB1c2UnIGlkaW9tKS4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNlc3Npb25Ib3N0Lmg6CisgICAgICAg
ICogZ2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9u
SG9zdDo6bWVzc2FnZUhhbmRsZXJzKToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbkhvc3Q6
OmNvbm5lY3RUb0Jyb3dzZXIpOgorCiAyMDE5LTEyLTAzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAg
PGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBXZWJEcml2ZXI6IGhhbmRsZSBlbGVtZW50
cyBvZiB0eXBlIGZpbGUgaW4gc2VuZCBrZXlzIGNvbW1hbmQKSW5kZXg6IFNvdXJjZS9XZWJEcml2
ZXIvU2Vzc2lvbkhvc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb25I
b3N0LmgJKHJldmlzaW9uIDI1MzIwMykKKysrIFNvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbkhvc3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlz
cGF0Y2hNZXNzYWdlKGNvbnN0IFN0cmluZyYpOwogCiAjaWYgVVNFKEdMSUIpCi0gICAgc3RhdGlj
IGNvbnN0IFNvY2tldENvbm5lY3Rpb246Ok1lc3NhZ2VIYW5kbGVycyBzX21lc3NhZ2VIYW5kbGVy
czsKKyAgICBzdGF0aWMgY29uc3QgU29ja2V0Q29ubmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJzJiBt
ZXNzYWdlSGFuZGxlcnMoKTsKICAgICB2b2lkIGNvbm5lY3Rpb25EaWRDbG9zZSgpOwogICAgIHZv
aWQgbGF1bmNoQnJvd3NlcihGdW5jdGlvbjx2b2lkIChPcHRpb25hbDxTdHJpbmc+IGVycm9yKT4m
Jik7CiAgICAgdm9pZCBjb25uZWN0VG9Ccm93c2VyKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0VG9C
cm93c2VyQXN5bmNEYXRhPiYmKTsKSW5kZXg6IFNvdXJjZS9XZWJEcml2ZXIvZ2xpYi9TZXNzaW9u
SG9zdEdsaWIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJEcml2ZXIvZ2xpYi9TZXNzaW9u
SG9zdEdsaWIuY3BwCShyZXZpc2lvbiAyNTMyMDMpCisrKyBTb3VyY2UvV2ViRHJpdmVyL2dsaWIv
U2Vzc2lvbkhvc3RHbGliLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAj
aW5jbHVkZSAiV2ViRHJpdmVyU2VydmljZS5oIgogI2luY2x1ZGUgPGdpby9naW8uaD4KKyNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9VVUlELmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgpAQCAt
NDMsNyArNDQsOSBAQCBTZXNzaW9uSG9zdDo6flNlc3Npb25Ib3N0KCkKICAgICAgICAgZ19zdWJw
cm9jZXNzX2ZvcmNlX2V4aXQobV9icm93c2VyLmdldCgpKTsKIH0KIAotY29uc3QgU29ja2V0Q29u
bmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJzIFNlc3Npb25Ib3N0OjpzX21lc3NhZ2VIYW5kbGVycyA9
IHsKK2NvbnN0IFNvY2tldENvbm5lY3Rpb246Ok1lc3NhZ2VIYW5kbGVycyYgU2Vzc2lvbkhvc3Q6
Om1lc3NhZ2VIYW5kbGVycygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFNv
Y2tldENvbm5lY3Rpb246Ok1lc3NhZ2VIYW5kbGVycz4gbWVzc2FnZUhhbmRsZXJzID0gU29ja2V0
Q29ubmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJzKHsKICAgICB7ICJEaWRDbG9zZSIsIHN0ZDo6cGFp
cjxDU3RyaW5nLCBTb2NrZXRDb25uZWN0aW9uOjpNZXNzYWdlQ2FsbGJhY2s+IHsgeyB9LAogICAg
ICAgICBbXShTb2NrZXRDb25uZWN0aW9uJiwgR1ZhcmlhbnQqLCBncG9pbnRlciB1c2VyRGF0YSkg
ewogICAgICAgICAgICAgYXV0byYgc2Vzc2lvbkhvc3QgPSAqc3RhdGljX2Nhc3Q8U2Vzc2lvbkhv
c3QqPih1c2VyRGF0YSk7CkBAIC04Niw3ICs4OSw5IEBAIGNvbnN0IFNvY2tldENvbm5lY3Rpb246
Ok1lc3NhZ2VIYW5kbGVycwogICAgICAgICAgICAgc2Vzc2lvbkhvc3Quc2VuZE1lc3NhZ2VUb0Zy
b250ZW5kKGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQsIG1lc3NhZ2UpOwogICAgICAgICB9fQogICAg
IH0KLX07CisgICAgfSk7CisgICAgcmV0dXJuIG1lc3NhZ2VIYW5kbGVyczsKK30KIAogdm9pZCBT
ZXNzaW9uSG9zdDo6Y29ubmVjdFRvQnJvd3NlcihGdW5jdGlvbjx2b2lkIChPcHRpb25hbDxTdHJp
bmc+IGVycm9yKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKQEAgLTE5MSw3ICsxOTYsNyBAQCB2
b2lkIFNlc3Npb25Ib3N0Ojpjb25uZWN0VG9Ccm93c2VyKHN0ZDo6CiAgICAgICAgICAgICAgICAg
ICAgIGRhdGEtPmNvbXBsZXRpb25IYW5kbGVyKFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3Nh
Z2UpKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBkYXRhLT5zZXNzaW9uSG9zdC0+c2V0dXBDb25uZWN0aW9uKFNvY2tldENv
bm5lY3Rpb246OmNyZWF0ZShXVEZNb3ZlKGNvbm5lY3Rpb24pLCBzX21lc3NhZ2VIYW5kbGVycywg
ZGF0YS0+c2Vzc2lvbkhvc3QpKTsKKyAgICAgICAgICAgICAgICBkYXRhLT5zZXNzaW9uSG9zdC0+
c2V0dXBDb25uZWN0aW9uKFNvY2tldENvbm5lY3Rpb246OmNyZWF0ZShXVEZNb3ZlKGNvbm5lY3Rp
b24pLCBtZXNzYWdlSGFuZGxlcnMoKSwgZGF0YS0+c2Vzc2lvbkhvc3QpKTsKICAgICAgICAgICAg
ICAgICBkYXRhLT5jb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOwogICAgICAgICB9LCBk
YXRhKTsKICAgICB9KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTMyMDMpCisrKyBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE5LTEy
LTA2ICBKaW0gTWFzb24gIDxqbWFzb25AaWJpbnguY29tPgorCisgICAgICAgIFtHVEtdIFdlYktp
dEdUSyBidWlsZCBoYW5ncyBvbiBnLWlyLXNjYW5uZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDcxNQorCisgICAgICAgIFRoZSBwYXRjaCByZXBs
YWNlcyB0aGUgc3RhdGljIGRhdGEgbWVtYmVycyB3aXRoIHN0YXRpY3MgdGhhdAorICAgICAgICBh
cmUgY29uc3RydWN0ZWQgb25seSB1cG9uIGZpcnN0IGFjY2VzcyAoaS5lLiwgdGhlICdjb25zdHJ1
Y3QKKyAgICAgICAgb24gZmlyc3QgdXNlJyBpZGlvbSkuCisKKyAgICAgICAgVGhlIGZpeCB1c2Vz
IHRoZSBjb25zdHJ1Y3Qtb24tZmlyc3QtdXNlIGlkaW9tIHRvIGF2b2lkCisgICAgICAgIHN0YXRp
YyBpbml0aWFsaXphdGlvbiBvcmRlcmluZyBpc3N1ZXMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvZ2xpYi9SZW1vdGVJbnNwZWN0
b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbnNwZWN0b3JDbGllbnQ6Om1l
c3NhZ2VIYW5kbGVycyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUluc3BlY3RvckNsaWVudDo6
UmVtb3RlSW5zcGVjdG9yQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ2xpYi9SZW1vdGVJ
bnNwZWN0b3JDbGllbnQuaDoKKwogMjAxOS0xMi0wNiAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBh
cHBsZS5jb20+CiAKICAgICAgICAgUHJvdGVjdCBXZWJSVEMgbmV0d29yayBtb25pdG9yaW5nIHRv
IHdhaXQgZm9yZXZlciBpbiBlZGdlIGNhc2VzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCShyZXZpc2lvbiAy
NTMyMDMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1JlbW90ZUluc3BlY3RvckNs
aWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJSZW1v
dGVXZWJJbnNwZWN0b3JQcm94eS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUlu
c3BlY3RvclV0aWxzLmg+CiAjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9CYXNlNjQuaD4KIApAQCAtOTMsNyArOTQsOSBAQCBwcml2YXRlOgogICAgIHVp
bnQ2NF90IG1fdGFyZ2V0SUQ7CiB9OwogCi1jb25zdCBTb2NrZXRDb25uZWN0aW9uOjpNZXNzYWdl
SGFuZGxlcnMgUmVtb3RlSW5zcGVjdG9yQ2xpZW50OjpzX21lc3NhZ2VIYW5kbGVycyA9IHsKK2Nv
bnN0IFNvY2tldENvbm5lY3Rpb246Ok1lc3NhZ2VIYW5kbGVycyYgUmVtb3RlSW5zcGVjdG9yQ2xp
ZW50OjptZXNzYWdlSGFuZGxlcnMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25z
dCBTb2NrZXRDb25uZWN0aW9uOjpNZXNzYWdlSGFuZGxlcnM+IG1lc3NhZ2VIYW5kbGVycyA9IFNv
Y2tldENvbm5lY3Rpb246Ok1lc3NhZ2VIYW5kbGVycyh7CiAgICAgeyAiRGlkQ2xvc2UiLCBzdGQ6
OnBhaXI8Q1N0cmluZywgU29ja2V0Q29ubmVjdGlvbjo6TWVzc2FnZUNhbGxiYWNrPiB7IHsgfSwK
ICAgICAgICAgW10oU29ja2V0Q29ubmVjdGlvbiYsIEdWYXJpYW50KiwgZ3BvaW50ZXIgdXNlckRh
dGEpIHsKICAgICAgICAgICAgIGF1dG8mIGNsaWVudCA9ICpzdGF0aWNfY2FzdDxSZW1vdGVJbnNw
ZWN0b3JDbGllbnQqPih1c2VyRGF0YSk7CkBAIC0xMzgsNyArMTQxLDkgQEAgY29uc3QgU29ja2V0
Q29ubmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJzCiAgICAgICAgICAgICBjbGllbnQuc2VuZE1lc3Nh
Z2VUb0Zyb250ZW5kKGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQsIG1lc3NhZ2UpOwogICAgICAgICB9
fQogICAgIH0KLX07CisgICAgfSk7CisgICAgcmV0dXJuIG1lc3NhZ2VIYW5kbGVyczsKK30KIAog
UmVtb3RlSW5zcGVjdG9yQ2xpZW50OjpSZW1vdGVJbnNwZWN0b3JDbGllbnQoY29uc3QgY2hhciog
YWRkcmVzcywgdW5zaWduZWQgcG9ydCwgUmVtb3RlSW5zcGVjdG9yT2JzZXJ2ZXImIG9ic2VydmVy
KQogICAgIDogbV9ob3N0QW5kUG9ydChTdHJpbmc6OmZyb21VVEY4KGFkZHJlc3MpICsgJzonICsg
U3RyaW5nOjpudW1iZXIocG9ydCkpCkBAIC0xNTQsNyArMTU5LDcgQEAgUmVtb3RlSW5zcGVjdG9y
Q2xpZW50OjpSZW1vdGVJbnNwZWN0b3JDbAogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIGF1dG8qIGNsaWVudCA9IHN0YXRpY19jYXN0PFJlbW90ZUluc3BlY3RvckNsaWVudCo+
KHVzZXJEYXRhKTsKICAgICAgICAgICAgIGlmIChjb25uZWN0aW9uKQotICAgICAgICAgICAgICAg
IGNsaWVudC0+c2V0dXBDb25uZWN0aW9uKFNvY2tldENvbm5lY3Rpb246OmNyZWF0ZShXVEZNb3Zl
KGNvbm5lY3Rpb24pLCBzX21lc3NhZ2VIYW5kbGVycywgY2xpZW50KSk7CisgICAgICAgICAgICAg
ICAgY2xpZW50LT5zZXR1cENvbm5lY3Rpb24oU29ja2V0Q29ubmVjdGlvbjo6Y3JlYXRlKFdURk1v
dmUoY29ubmVjdGlvbiksIG1lc3NhZ2VIYW5kbGVycygpLCBjbGllbnQpKTsKICAgICAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiUmVtb3RlSW5zcGVjdG9yQ2xp
ZW50IGZhaWxlZCB0byBjb25uZWN0IHRvIGluc3BlY3RvciBzZXJ2ZXI6ICVzIiwgZXJyb3ItPm1l
c3NhZ2UpOwogICAgICAgICAgICAgICAgIGNsaWVudC0+bV9vYnNlcnZlci5jb25uZWN0aW9uQ2xv
c2VkKCpjbGllbnQpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9SZW1vdGVJ
bnNwZWN0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
bGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5oCShyZXZpc2lvbiAyNTMyMDMpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsb3NlRnJvbUZyb250ZW5k
KHVpbnQ2NF90IGNvbm5lY3Rpb25JRCwgdWludDY0X3QgdGFyZ2V0SUQpOwogCiBwcml2YXRlOgot
ICAgIHN0YXRpYyBjb25zdCBTb2NrZXRDb25uZWN0aW9uOjpNZXNzYWdlSGFuZGxlcnMgc19tZXNz
YWdlSGFuZGxlcnM7CisgICAgc3RhdGljIGNvbnN0IFNvY2tldENvbm5lY3Rpb246Ok1lc3NhZ2VI
YW5kbGVycyYgbWVzc2FnZUhhbmRsZXJzKCk7CiAgICAgdm9pZCBzZXR1cENvbm5lY3Rpb24oUmVm
PFNvY2tldENvbm5lY3Rpb24+JiYpOwogICAgIHZvaWQgY29ubmVjdGlvbkRpZENsb3NlKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385017</attachid>
            <date>2019-12-06 08:50:08 -0800</date>
            <delta_ts>2019-12-13 08:23:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204715-20191206165007.patch</filename>
            <type>text/plain</type>
            <size>13954</size>
            <attacher name="Jim Mason">jmason</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjUzMjAzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBA
CisyMDE5LTEyLTA2ICBKaW0gTWFzb24gIDxqbWFzb25AaWJpbnguY29tPgorCisgICAgICAgIFtH
VEtdIFdlYktpdEdUSyBidWlsZCBoYW5ncyBvbiBnLWlyLXNjYW5uZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDcxNQorCisgICAgICAgIFRoaXMg
cGF0Y2ggZml4ZXMgdGhlIHN0YXRpYyBpbml0aWFsaXphdGlvbiBvcmRlciBwcm9ibGVtCisgICAg
ICAgIGludHJvZHVjZWQgYnkgQnVnIDIwNDUwMy4KKworICAgICAgICBUaGUgcGF0Y2ggcmVwbGFj
ZXMgdGhlIHN0YXRpYyBkYXRhIG1lbWJlcnMgd2l0aCBzdGF0aWNzIHRoYXQKKyAgICAgICAgYXJl
IGNvbnN0cnVjdGVkIG9ubHkgdXBvbiBmaXJzdCBhY2Nlc3MgKGkuZS4sIHRoZSAnY29uc3RydWN0
CisgICAgICAgIG9uIGZpcnN0IHVzZScgaWRpb20pLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0
b3IuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yR2xp
Yi5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c3RhcnQpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6Om1lc3NhZ2VIYW5kbGVycyk6CisgICAg
ICAgICogaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvclNlcnZlci5jcHA6Cisg
ICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZlcjo6bWVzc2FnZUhhbmRsZXJz
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU2VydmVyOjppbmNvbWluZ0Nv
bm5lY3Rpb25DYWxsYmFjayk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90
ZUluc3BlY3RvclNlcnZlci5oOgorCiAyMDE5LTEyLTA1ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlA
YXBwbGUuY29tPgogCiAgICAgICAgIGdldF9ieV9pZCBJQ3Mgc2hvdWxkIGhhdmUgYSBzdHJ1Y3R1
cmUgaGlzdG9yeSB1c2VkIHRvIGluZGljYXRlIHdoZW4gd2Ugc2hvdWxkIHNraXAgZ2VuZXJhdGlu
ZyBhbiBJQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVt
b3RlSW5zcGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmgJKHJldmlzaW9uIDI1MzIwMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzgsNyArMTc4LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogI2lmIFVTRShH
TElCKQogICAgIHZvaWQgc2V0dXBDb25uZWN0aW9uKFJlZjxTb2NrZXRDb25uZWN0aW9uPiYmKTsK
LSAgICBzdGF0aWMgY29uc3QgU29ja2V0Q29ubmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJzIHNfbWVz
c2FnZUhhbmRsZXJzOworICAgIHN0YXRpYyBjb25zdCBTb2NrZXRDb25uZWN0aW9uOjpNZXNzYWdl
SGFuZGxlcnMmIG1lc3NhZ2VIYW5kbGVycygpOwogCiAgICAgdm9pZCByZWNlaXZlZEdldFRhcmdl
dExpc3RNZXNzYWdlKCk7CiAgICAgdm9pZCByZWNlaXZlZFNldHVwTWVzc2FnZShUYXJnZXRJRCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90
ZUluc3BlY3RvckdsaWIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yR2xpYi5jcHAJKHJldmlzaW9uIDI1
MzIwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVt
b3RlSW5zcGVjdG9yR2xpYi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgdm9p
ZCBSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0KCkKICAgICAgICAgICAgIFJlbW90ZUluc3BlY3Rvciog
aW5zcGVjdG9yID0gc3RhdGljX2Nhc3Q8UmVtb3RlSW5zcGVjdG9yKj4odXNlckRhdGEpOwogICAg
ICAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgICAgICAgICAgaWYgKEdS
ZWZQdHI8R1NvY2tldENvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBhZG9wdEdSZWYoZ19zb2NrZXRf
Y2xpZW50X2Nvbm5lY3RfdG9faG9zdF9maW5pc2goR19TT0NLRVRfQ0xJRU5UKGNsaWVudCksIHJl
c3VsdCwgJmVycm9yLm91dFB0cigpKSkpCi0gICAgICAgICAgICAgICAgaW5zcGVjdG9yLT5zZXR1
cENvbm5lY3Rpb24oU29ja2V0Q29ubmVjdGlvbjo6Y3JlYXRlKFdURk1vdmUoY29ubmVjdGlvbiks
IHNfbWVzc2FnZUhhbmRsZXJzLCBpbnNwZWN0b3IpKTsKKyAgICAgICAgICAgICAgICBpbnNwZWN0
b3ItPnNldHVwQ29ubmVjdGlvbihTb2NrZXRDb25uZWN0aW9uOjpjcmVhdGUoV1RGTW92ZShjb25u
ZWN0aW9uKSwgbWVzc2FnZUhhbmRsZXJzKCksIGluc3BlY3RvcikpOwogICAgICAgICAgICAgZWxz
ZSBpZiAoIWdfZXJyb3JfbWF0Y2hlcyhlcnJvci5nZXQoKSwgR19JT19FUlJPUiwgR19JT19FUlJP
Ul9DQU5DRUxMRUQpKQogICAgICAgICAgICAgICAgIGdfd2FybmluZygiUmVtb3RlSW5zcGVjdG9y
IGZhaWxlZCB0byBjb25uZWN0IHRvIGluc3BlY3RvciBzZXJ2ZXIgYXQ6ICVzOiAlcyIsIGdfZ2V0
ZW52KCJXRUJLSVRfSU5TUEVDVE9SX1NFUlZFUiIpLCBlcnJvci0+bWVzc2FnZSk7CiAgICAgICAg
IH0sIHRoaXMpOwpAQCAtOTIsNyArOTIsOSBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RvcElu
dGVybmFsKFN0b3BTCiAgICAgbV9zb2NrZXRDb25uZWN0aW9uID0gbnVsbHB0cjsKIH0KIAotY29u
c3QgU29ja2V0Q29ubmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJzIFJlbW90ZUluc3BlY3Rvcjo6c19t
ZXNzYWdlSGFuZGxlcnMgPSB7Citjb25zdCBTb2NrZXRDb25uZWN0aW9uOjpNZXNzYWdlSGFuZGxl
cnMmIFJlbW90ZUluc3BlY3Rvcjo6bWVzc2FnZUhhbmRsZXJzKCkKK3sKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgU29ja2V0Q29ubmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJzPiBtZXNz
YWdlSGFuZGxlcnMgPSBTb2NrZXRDb25uZWN0aW9uOjpNZXNzYWdlSGFuZGxlcnMoewogICAgIHsg
IkRpZENsb3NlIiwgc3RkOjpwYWlyPENTdHJpbmcsIFNvY2tldENvbm5lY3Rpb246Ok1lc3NhZ2VD
YWxsYmFjaz4geyB7IH0sCiAgICAgICAgIFtdKFNvY2tldENvbm5lY3Rpb24mLCBHVmFyaWFudCos
IGdwb2ludGVyIHVzZXJEYXRhKSB7CiAgICAgICAgICAgICBhdXRvJiBpbnNwZWN0b3IgPSAqc3Rh
dGljX2Nhc3Q8UmVtb3RlSW5zcGVjdG9yKj4odXNlckRhdGEpOwpAQCAtMTMwLDcgKzEzMiw5IEBA
IGNvbnN0IFNvY2tldENvbm5lY3Rpb246Ok1lc3NhZ2VIYW5kbGVycwogICAgICAgICAgICAgaW5z
cGVjdG9yLnJlY2VpdmVkQ2xvc2VNZXNzYWdlKHRhcmdldElEKTsKICAgICAgICAgfX0KICAgICB9
Ci19OworICAgIH0pOworICAgIHJldHVybiBtZXNzYWdlSGFuZGxlcnM7Cit9CiAKIHZvaWQgUmVt
b3RlSW5zcGVjdG9yOjpzZXR1cENvbm5lY3Rpb24oUmVmPFNvY2tldENvbm5lY3Rpb24+JiYgY29u
bmVjdGlvbikKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L2dsaWIvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvclNlcnZlci5j
cHAJKHJldmlzaW9uIDI1MzIwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiUmVtb3RlSW5zcGVjdG9yVXRpbHMuaCIKICNpbmNs
dWRlIDxnaW8vZ2lvLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KIApAQCAt
OTMsNyArOTQsOSBAQCBzdGF0aWMgUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQ6OlNlc3Npb25DCiAg
ICAgcmV0dXJuIGNhcGFiaWxpdGllczsKIH0KIAotY29uc3QgU29ja2V0Q29ubmVjdGlvbjo6TWVz
c2FnZUhhbmRsZXJzIFJlbW90ZUluc3BlY3RvclNlcnZlcjo6c19tZXNzYWdlSGFuZGxlcnMgPSB7
Citjb25zdCBTb2NrZXRDb25uZWN0aW9uOjpNZXNzYWdlSGFuZGxlcnMmIFJlbW90ZUluc3BlY3Rv
clNlcnZlcjo6bWVzc2FnZUhhbmRsZXJzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgU29ja2V0Q29ubmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJzPiBtZXNzYWdlSGFuZGxlcnMg
PSBTb2NrZXRDb25uZWN0aW9uOjpNZXNzYWdlSGFuZGxlcnMoewogICAgIHsgIkRpZENsb3NlIiwg
c3RkOjpwYWlyPENTdHJpbmcsIFNvY2tldENvbm5lY3Rpb246Ok1lc3NhZ2VDYWxsYmFjaz4geyB7
IH0sCiAgICAgICAgIFtdKFNvY2tldENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIEdWYXJpYW50Kiwg
Z3BvaW50ZXIgdXNlckRhdGEpIHsKICAgICAgICAgICAgIGF1dG8mIGluc3BlY3RvclNlcnZlciA9
ICpzdGF0aWNfY2FzdDxSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIqPih1c2VyRGF0YSk7CkBAIC0xNjMs
NyArMTY2LDkgQEAgY29uc3QgU29ja2V0Q29ubmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJzCiAgICAg
ICAgICAgICAgICAgY2xpZW50Q2FwYWJpbGl0aWVzID8gY2xpZW50Q2FwYWJpbGl0aWVzLT5icm93
c2VyVmVyc2lvbi51dGY4KCkuZGF0YSgpIDogIiIpKTsKICAgICAgICAgfX0KICAgICB9Ci19Owor
ICAgIH0pOworICAgIHJldHVybiBtZXNzYWdlSGFuZGxlcnM7Cit9CiAKIFJlbW90ZUluc3BlY3Rv
clNlcnZlciYgUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzaW5nbGV0b24oKQogewpAQCAtMTk0LDcg
KzE5OSw3IEBAIGJvb2wgUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzdGFydChjb25zdAogCiBnYm9v
bGVhbiBSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OmluY29taW5nQ29ubmVjdGlvbkNhbGxiYWNrKEdT
b2NrZXRTZXJ2aWNlKiwgR1NvY2tldENvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIEdPYmplY3QqLCBS
ZW1vdGVJbnNwZWN0b3JTZXJ2ZXIqIGluc3BlY3RvclNlcnZlcikKIHsKLSAgICBpbnNwZWN0b3JT
ZXJ2ZXItPmluY29taW5nQ29ubmVjdGlvbihTb2NrZXRDb25uZWN0aW9uOjpjcmVhdGUoR1JlZlB0
cjxHU29ja2V0Q29ubmVjdGlvbj4oY29ubmVjdGlvbiksIHNfbWVzc2FnZUhhbmRsZXJzLCBpbnNw
ZWN0b3JTZXJ2ZXIpKTsKKyAgICBpbnNwZWN0b3JTZXJ2ZXItPmluY29taW5nQ29ubmVjdGlvbihT
b2NrZXRDb25uZWN0aW9uOjpjcmVhdGUoR1JlZlB0cjxHU29ja2V0Q29ubmVjdGlvbj4oY29ubmVj
dGlvbiksIG1lc3NhZ2VIYW5kbGVycygpLCBpbnNwZWN0b3JTZXJ2ZXIpKTsKICAgICByZXR1cm4g
VFJVRTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUv
Z2xpYi9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvclNlcnZlci5oCShy
ZXZpc2lvbiAyNTMyMDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9nbGliL1JlbW90ZUluc3BlY3RvclNlcnZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1
MCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGdib29sZWFuIGluY29taW5nQ29ubmVjdGlvbkNh
bGxiYWNrKEdTb2NrZXRTZXJ2aWNlKiwgR1NvY2tldENvbm5lY3Rpb24qLCBHT2JqZWN0KiwgUmVt
b3RlSW5zcGVjdG9yU2VydmVyKik7CiAgICAgdm9pZCBpbmNvbWluZ0Nvbm5lY3Rpb24oUmVmPFNv
Y2tldENvbm5lY3Rpb24+JiYpOwogCi0gICAgc3RhdGljIGNvbnN0IFNvY2tldENvbm5lY3Rpb246
Ok1lc3NhZ2VIYW5kbGVycyBzX21lc3NhZ2VIYW5kbGVyczsKKyAgICBzdGF0aWMgY29uc3QgU29j
a2V0Q29ubmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJzJiBtZXNzYWdlSGFuZGxlcnMoKTsKICAgICB2
b2lkIGNvbm5lY3Rpb25EaWRDbG9zZShTb2NrZXRDb25uZWN0aW9uJik7CiAgICAgdm9pZCBzZXRU
YXJnZXRMaXN0KFNvY2tldENvbm5lY3Rpb24mLCBHVmFyaWFudCopOwogICAgIEdWYXJpYW50KiBz
ZXR1cEluc3BlY3RvckNsaWVudChTb2NrZXRDb25uZWN0aW9uJiwgY29uc3QgY2hhciogY2xpZW50
QmFja2VuZENvbW1hbmRzSGFzaCk7CkluZGV4OiBTb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwkocmV2aXNpb24gMjUzMjAz
KQorKysgU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyMiBAQAorMjAxOS0xMi0wNiAgSmltIE1hc29uICA8am1hc29uQGliaW54LmNvbT4KKworICAg
ICAgICBbR1RLXSBXZWJLaXRHVEsgYnVpbGQgaGFuZ3Mgb24gZy1pci1zY2FubmVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQ3MTUKKworICAgICAg
ICBUaGlzIHBhdGNoIGZpeGVzIHRoZSBzdGF0aWMgaW5pdGlhbGl6YXRpb24gb3JkZXIgcHJvYmxl
bQorICAgICAgICBpbnRyb2R1Y2VkIGJ5IEJ1ZyAyMDQ1MDMuCisKKyAgICAgICAgVGhlIHBhdGNo
IHJlcGxhY2VzIHRoZSBzdGF0aWMgZGF0YSBtZW1iZXJzIHdpdGggc3RhdGljcyB0aGF0CisgICAg
ICAgIGFyZSBjb25zdHJ1Y3RlZCBvbmx5IHVwb24gZmlyc3QgYWNjZXNzIChpLmUuLCB0aGUgJ2Nv
bnN0cnVjdAorICAgICAgICBvbiBmaXJzdCB1c2UnIGlkaW9tKS4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNlc3Npb25Ib3N0Lmg6CisgICAgICAg
ICogZ2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9u
SG9zdDo6bWVzc2FnZUhhbmRsZXJzKToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbkhvc3Q6
OmNvbm5lY3RUb0Jyb3dzZXIpOgorCiAyMDE5LTEyLTAzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAg
PGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBXZWJEcml2ZXI6IGhhbmRsZSBlbGVtZW50
cyBvZiB0eXBlIGZpbGUgaW4gc2VuZCBrZXlzIGNvbW1hbmQKSW5kZXg6IFNvdXJjZS9XZWJEcml2
ZXIvU2Vzc2lvbkhvc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb25I
b3N0LmgJKHJldmlzaW9uIDI1MzIwMykKKysrIFNvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbkhvc3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlz
cGF0Y2hNZXNzYWdlKGNvbnN0IFN0cmluZyYpOwogCiAjaWYgVVNFKEdMSUIpCi0gICAgc3RhdGlj
IGNvbnN0IFNvY2tldENvbm5lY3Rpb246Ok1lc3NhZ2VIYW5kbGVycyBzX21lc3NhZ2VIYW5kbGVy
czsKKyAgICBzdGF0aWMgY29uc3QgU29ja2V0Q29ubmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJzJiBt
ZXNzYWdlSGFuZGxlcnMoKTsKICAgICB2b2lkIGNvbm5lY3Rpb25EaWRDbG9zZSgpOwogICAgIHZv
aWQgbGF1bmNoQnJvd3NlcihGdW5jdGlvbjx2b2lkIChPcHRpb25hbDxTdHJpbmc+IGVycm9yKT4m
Jik7CiAgICAgdm9pZCBjb25uZWN0VG9Ccm93c2VyKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0VG9C
cm93c2VyQXN5bmNEYXRhPiYmKTsKSW5kZXg6IFNvdXJjZS9XZWJEcml2ZXIvZ2xpYi9TZXNzaW9u
SG9zdEdsaWIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJEcml2ZXIvZ2xpYi9TZXNzaW9u
SG9zdEdsaWIuY3BwCShyZXZpc2lvbiAyNTMyMDMpCisrKyBTb3VyY2UvV2ViRHJpdmVyL2dsaWIv
U2Vzc2lvbkhvc3RHbGliLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAj
aW5jbHVkZSAiV2ViRHJpdmVyU2VydmljZS5oIgogI2luY2x1ZGUgPGdpby9naW8uaD4KKyNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9VVUlELmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgpAQCAt
NDMsNyArNDQsOSBAQCBTZXNzaW9uSG9zdDo6flNlc3Npb25Ib3N0KCkKICAgICAgICAgZ19zdWJw
cm9jZXNzX2ZvcmNlX2V4aXQobV9icm93c2VyLmdldCgpKTsKIH0KIAotY29uc3QgU29ja2V0Q29u
bmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJzIFNlc3Npb25Ib3N0OjpzX21lc3NhZ2VIYW5kbGVycyA9
IHsKK2NvbnN0IFNvY2tldENvbm5lY3Rpb246Ok1lc3NhZ2VIYW5kbGVycyYgU2Vzc2lvbkhvc3Q6
Om1lc3NhZ2VIYW5kbGVycygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFNv
Y2tldENvbm5lY3Rpb246Ok1lc3NhZ2VIYW5kbGVycz4gbWVzc2FnZUhhbmRsZXJzID0gU29ja2V0
Q29ubmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJzKHsKICAgICB7ICJEaWRDbG9zZSIsIHN0ZDo6cGFp
cjxDU3RyaW5nLCBTb2NrZXRDb25uZWN0aW9uOjpNZXNzYWdlQ2FsbGJhY2s+IHsgeyB9LAogICAg
ICAgICBbXShTb2NrZXRDb25uZWN0aW9uJiwgR1ZhcmlhbnQqLCBncG9pbnRlciB1c2VyRGF0YSkg
ewogICAgICAgICAgICAgYXV0byYgc2Vzc2lvbkhvc3QgPSAqc3RhdGljX2Nhc3Q8U2Vzc2lvbkhv
c3QqPih1c2VyRGF0YSk7CkBAIC04Niw3ICs4OSw5IEBAIGNvbnN0IFNvY2tldENvbm5lY3Rpb246
Ok1lc3NhZ2VIYW5kbGVycwogICAgICAgICAgICAgc2Vzc2lvbkhvc3Quc2VuZE1lc3NhZ2VUb0Zy
b250ZW5kKGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQsIG1lc3NhZ2UpOwogICAgICAgICB9fQogICAg
IH0KLX07CisgICAgfSk7CisgICAgcmV0dXJuIG1lc3NhZ2VIYW5kbGVyczsKK30KIAogdm9pZCBT
ZXNzaW9uSG9zdDo6Y29ubmVjdFRvQnJvd3NlcihGdW5jdGlvbjx2b2lkIChPcHRpb25hbDxTdHJp
bmc+IGVycm9yKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKQEAgLTE5MSw3ICsxOTYsNyBAQCB2
b2lkIFNlc3Npb25Ib3N0Ojpjb25uZWN0VG9Ccm93c2VyKHN0ZDo6CiAgICAgICAgICAgICAgICAg
ICAgIGRhdGEtPmNvbXBsZXRpb25IYW5kbGVyKFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3Nh
Z2UpKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBkYXRhLT5zZXNzaW9uSG9zdC0+c2V0dXBDb25uZWN0aW9uKFNvY2tldENv
bm5lY3Rpb246OmNyZWF0ZShXVEZNb3ZlKGNvbm5lY3Rpb24pLCBzX21lc3NhZ2VIYW5kbGVycywg
ZGF0YS0+c2Vzc2lvbkhvc3QpKTsKKyAgICAgICAgICAgICAgICBkYXRhLT5zZXNzaW9uSG9zdC0+
c2V0dXBDb25uZWN0aW9uKFNvY2tldENvbm5lY3Rpb246OmNyZWF0ZShXVEZNb3ZlKGNvbm5lY3Rp
b24pLCBtZXNzYWdlSGFuZGxlcnMoKSwgZGF0YS0+c2Vzc2lvbkhvc3QpKTsKICAgICAgICAgICAg
ICAgICBkYXRhLT5jb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOwogICAgICAgICB9LCBk
YXRhKTsKICAgICB9KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTMyMDMpCisrKyBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE5LTEy
LTA2ICBKaW0gTWFzb24gIDxqbWFzb25AaWJpbnguY29tPgorCisgICAgICAgIFtHVEtdIFdlYktp
dEdUSyBidWlsZCBoYW5ncyBvbiBnLWlyLXNjYW5uZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDcxNQorCisgICAgICAgIFRoaXMgcGF0Y2ggZml4
ZXMgdGhlIHN0YXRpYyBpbml0aWFsaXphdGlvbiBvcmRlciBwcm9ibGVtCisgICAgICAgIGludHJv
ZHVjZWQgYnkgQnVnIDIwNDUwMy4KKworICAgICAgICBUaGUgcGF0Y2ggcmVwbGFjZXMgdGhlIHN0
YXRpYyBkYXRhIG1lbWJlcnMgd2l0aCBzdGF0aWNzIHRoYXQKKyAgICAgICAgYXJlIGNvbnN0cnVj
dGVkIG9ubHkgdXBvbiBmaXJzdCBhY2Nlc3MgKGkuZS4sIHRoZSAnY29uc3RydWN0CisgICAgICAg
IG9uIGZpcnN0IHVzZScgaWRpb20pLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yQ2xpZW50OjptZXNzYWdlSGFuZGxl
cnMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbnNwZWN0b3JDbGllbnQ6OlJlbW90ZUluc3Bl
Y3RvckNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xp
ZW50Lmg6CisKIDIwMTktMTItMDYgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgog
CiAgICAgICAgIFByb3RlY3QgV2ViUlRDIG5ldHdvcmsgbW9uaXRvcmluZyB0byB3YWl0IGZvcmV2
ZXIgaW4gZWRnZSBjYXNlcwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9SZW1v
dGVJbnNwZWN0b3JDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcAkocmV2aXNpb24gMjUzMjAzKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiUmVtb3RlV2ViSW5zcGVj
dG9yUHJveHkuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0b3JVdGls
cy5oPgogI2luY2x1ZGUgPGdpby9naW8uaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
QmFzZTY0Lmg+CiAKQEAgLTkzLDcgKzk0LDkgQEAgcHJpdmF0ZToKICAgICB1aW50NjRfdCBtX3Rh
cmdldElEOwogfTsKIAotY29uc3QgU29ja2V0Q29ubmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJzIFJl
bW90ZUluc3BlY3RvckNsaWVudDo6c19tZXNzYWdlSGFuZGxlcnMgPSB7Citjb25zdCBTb2NrZXRD
b25uZWN0aW9uOjpNZXNzYWdlSGFuZGxlcnMmIFJlbW90ZUluc3BlY3RvckNsaWVudDo6bWVzc2Fn
ZUhhbmRsZXJzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU29ja2V0Q29u
bmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJzPiBtZXNzYWdlSGFuZGxlcnMgPSBTb2NrZXRDb25uZWN0
aW9uOjpNZXNzYWdlSGFuZGxlcnMoewogICAgIHsgIkRpZENsb3NlIiwgc3RkOjpwYWlyPENTdHJp
bmcsIFNvY2tldENvbm5lY3Rpb246Ok1lc3NhZ2VDYWxsYmFjaz4geyB7IH0sCiAgICAgICAgIFtd
KFNvY2tldENvbm5lY3Rpb24mLCBHVmFyaWFudCosIGdwb2ludGVyIHVzZXJEYXRhKSB7CiAgICAg
ICAgICAgICBhdXRvJiBjbGllbnQgPSAqc3RhdGljX2Nhc3Q8UmVtb3RlSW5zcGVjdG9yQ2xpZW50
Kj4odXNlckRhdGEpOwpAQCAtMTM4LDcgKzE0MSw5IEBAIGNvbnN0IFNvY2tldENvbm5lY3Rpb246
Ok1lc3NhZ2VIYW5kbGVycwogICAgICAgICAgICAgY2xpZW50LnNlbmRNZXNzYWdlVG9Gcm9udGVu
ZChjb25uZWN0aW9uSUQsIHRhcmdldElELCBtZXNzYWdlKTsKICAgICAgICAgfX0KICAgICB9Ci19
OworICAgIH0pOworICAgIHJldHVybiBtZXNzYWdlSGFuZGxlcnM7Cit9CiAKIFJlbW90ZUluc3Bl
Y3RvckNsaWVudDo6UmVtb3RlSW5zcGVjdG9yQ2xpZW50KGNvbnN0IGNoYXIqIGFkZHJlc3MsIHVu
c2lnbmVkIHBvcnQsIFJlbW90ZUluc3BlY3Rvck9ic2VydmVyJiBvYnNlcnZlcikKICAgICA6IG1f
aG9zdEFuZFBvcnQoU3RyaW5nOjpmcm9tVVRGOChhZGRyZXNzKSArICc6JyArIFN0cmluZzo6bnVt
YmVyKHBvcnQpKQpAQCAtMTU0LDcgKzE1OSw3IEBAIFJlbW90ZUluc3BlY3RvckNsaWVudDo6UmVt
b3RlSW5zcGVjdG9yQ2wKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBhdXRv
KiBjbGllbnQgPSBzdGF0aWNfY2FzdDxSZW1vdGVJbnNwZWN0b3JDbGllbnQqPih1c2VyRGF0YSk7
CiAgICAgICAgICAgICBpZiAoY29ubmVjdGlvbikKLSAgICAgICAgICAgICAgICBjbGllbnQtPnNl
dHVwQ29ubmVjdGlvbihTb2NrZXRDb25uZWN0aW9uOjpjcmVhdGUoV1RGTW92ZShjb25uZWN0aW9u
KSwgc19tZXNzYWdlSGFuZGxlcnMsIGNsaWVudCkpOworICAgICAgICAgICAgICAgIGNsaWVudC0+
c2V0dXBDb25uZWN0aW9uKFNvY2tldENvbm5lY3Rpb246OmNyZWF0ZShXVEZNb3ZlKGNvbm5lY3Rp
b24pLCBtZXNzYWdlSGFuZGxlcnMoKSwgY2xpZW50KSk7CiAgICAgICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIlJlbW90ZUluc3BlY3RvckNsaWVudCBmYWlsZWQg
dG8gY29ubmVjdCB0byBpbnNwZWN0b3Igc2VydmVyOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsKICAg
ICAgICAgICAgICAgICBjbGllbnQtPm1fb2JzZXJ2ZXIuY29ubmVjdGlvbkNsb3NlZCgqY2xpZW50
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xp
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9SZW1vdGVJ
bnNwZWN0b3JDbGllbnQuaAkocmV2aXNpb24gMjUzMjAzKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzEs
NyArNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbG9zZUZyb21Gcm9udGVuZCh1aW50NjRfdCBj
b25uZWN0aW9uSUQsIHVpbnQ2NF90IHRhcmdldElEKTsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMg
Y29uc3QgU29ja2V0Q29ubmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJzIHNfbWVzc2FnZUhhbmRsZXJz
OworICAgIHN0YXRpYyBjb25zdCBTb2NrZXRDb25uZWN0aW9uOjpNZXNzYWdlSGFuZGxlcnMmIG1l
c3NhZ2VIYW5kbGVycygpOwogICAgIHZvaWQgc2V0dXBDb25uZWN0aW9uKFJlZjxTb2NrZXRDb25u
ZWN0aW9uPiYmKTsKICAgICB2b2lkIGNvbm5lY3Rpb25EaWRDbG9zZSgpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>