<?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>168375</bug_id>
          
          <creation_ts>2017-02-15 09:50:05 -0800</creation_ts>
          <short_desc>REGRESSION(r212345): [GTK] ASSERT(cookieChangeCallbackMap().contains(jar)) failed in WebCore::stopObservingCookieChanges:54</short_desc>
          <delta_ts>2017-02-20 00:32:44 -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>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=168230</see_also>
          <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="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>achristensen</cc>
    
    <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>danw</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1277231</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-02-15 09:50:05 -0800</bug_when>
    <thetext>I hit this crash in when closing Epiphany. I&apos;m not sure, but I presume it&apos;s a regression from r212283 &quot;CookieManager only works with the default session&quot; as I&apos;ve updated recently and never seen this before.

#0  0x00007f5801621fac in WTFCrash ()
    at ../../Source/WTF/wtf/Assertions.cpp:323
No locals.
#1  0x00007f580b2384aa in (anonymous namespace)::stopObservingCookieChanges (
    storageSession=...)
    at ../../Source/WebCore/platform/network/soup/CookieStorageSoup.cpp:54
        jar = 0x2197540
        __PRETTY_FUNCTION__ = &quot;void WebCore::stopObservingCookieChanges(const WebCore::NetworkStorageSession&amp;)&quot;
#2  0x00007f580978a12b in (anonymous namespace)::WebCookieManager::stopObservingCookieChanges (this=0x2181820, sessionID=...)
    at ../../Source/WebKit2/WebProcess/Cookies/WebCookieManager.cpp:105
        storageSession = 0x7f57eebae820
#3  0x00007f5809c10873 in IPC::callMemberFunctionImpl&lt;WebKit::WebCookieManager, void (WebKit::WebCookieManager::*)(WebCore::SessionID), std::tuple&lt;WebCore::SessionID&gt;, 0ul&gt;((anonymous namespace)::WebCookieManager *, void ((anonymous namespace)::WebCookieManager::*)((anonymous namespace)::WebCookieManager * const, (anonymous namespace)::SessionID), &lt;unknown type in /home/mcatanzaro/Projects/GNOME/install/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x1bc02&gt;, std::index_sequence)
    (object=0x2181820, function=
    (void ((anonymous namespace)::WebCookieManager::*)((anonymous namespace)::WebCookieManager * const, (anonymous namespace)::SessionID)) 0x7f580978a0f8 &lt;(anonymous namespace)::WebCookieManager::stopObservingCookieChanges((anonymous namespace)::SessionID)&gt;, 
    args=&lt;unknown type in /home/mcatanzaro/Projects/GNOME/install/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x1bc02&gt;)
    at ../../Source/WebKit2/Platform/IPC/HandleMessage.h:40
No locals.
#4  0x00007f5809c1030e in IPC::callMemberFunction&lt;WebKit::WebCookieManager, void (WebKit::WebCookieManager::*)(WebCore::SessionID), std::tuple&lt;WebCore::SessionID&gt; &gt;(&lt;unknown type in /home/mcatanzaro/Projects/GNOME/install/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x1bc02&gt;, (anonymous namespace)::WebCookieManager *, void ((anonymous namespace)::WebCookieManager::*)((anonymous namespace)::WebCookieManager * const, (anonymous namespace)::SessionID)) (
    args=&lt;unknown type in /home/mcatanzaro/Projects/GNOME/install/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x1bc02&gt;, object=0x2181820, function=
    (void ((anonymous namespace)::WebCookieManager::*)((anonymous namespace)::WebCookieManager * const, (anonymous namespace)::SessionID)) 0x7f580978a0f8 &lt;(anonymous namespace)::WebCookieManager::stopObservingCookieChanges((anonymous namespace)::SessionID)&gt;) at ../../Source/WebKit2/Platform/IPC/HandleMessage.h:46
No locals.
#5  0x00007f5809c1010a in IPC::handleMessage&lt;Messages::WebCookieManager::StopObservingCookieChanges, WebKit::WebCookieManager, void (WebKit::WebCookieManager::*)(WebCore::SessionID)&gt; (decoder=..., object=0x2181820, function=
    (void ((anonymous namespace)::WebCookieManager::*)((anonymous namespace)::WebCookieManager * const, (anonymous namespace)::SessionID)) 0x7f580978a0f8 &lt;(anonymous namespace)::WebCookieManager::stopObservingCookieChanges((anonymous namespace)::SessionID)&gt;) at ../../Source/WebKit2/Platform/IPC/HandleMessage.h:126
        __PRETTY_FUNCTION__ = &quot;void IPC::handleMessage(IPC::Decoder&amp;, C*, MF) [with T = Messages::WebCookieManager::StopObservingCookieChanges; C = WebKit::WebCookieManager; MF = void (WebKit::WebCookieManager::*)(WebCore::SessionI&quot;...
        arguments = std::tuple containing = {[1] = {m_sessionID = 1}}
#6  0x00007f5809c0f730 in (anonymous namespace)::WebCookieManager::didReceiveMessage (this=0x2181820, connection=..., decoder=...)
    at DerivedSources/WebKit2/WebCookieManagerMessageReceiver.cpp:76
        __PRETTY_FUNCTION__ = &quot;virtual void WebKit::WebCookieManager::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;)&quot;
#7  0x00007f58094fc765 in IPC::MessageReceiverMap::dispatchMessage (
    this=0x7f580fd166d0 &lt;WebKit::NetworkProcess::singleton()::networkProcess+112&gt;, connection=..., decoder=...)
    at ../../Source/WebKit2/Platform/IPC/MessageReceiverMap.cpp:118
        messageReceiver = 0x2181830
        __PRETTY_FUNCTION__ = &quot;bool IPC::MessageReceiverMap::dispatchMessage(IPC::Connection&amp;, IPC::Decoder&amp;)&quot;
#8  0x00007f5809908f30 in (anonymous namespace)::NetworkProcess::didReceiveMessage (this=0x7f580fd16660 &lt;WebKit::NetworkProcess::singleton()::networkProcess&gt;, 
    connection=..., decoder=...)
    at ../../Source/WebKit2/NetworkProcess/NetworkProcess.cpp:149
No locals.
#9  0x00007f58094e3052 in IPC::Connection::dispatchMessage (
    this=0x7f57eebf6000, decoder=...)
    at ../../Source/WebKit2/Platform/IPC/Connection.cpp:897
No locals.
#10 0x00007f58094e31bc in IPC::Connection::dispatchMessage (
    this=0x7f57eebf6000, 
    message=std::unique_ptr&lt;IPC::Decoder&gt; containing 0x7f57eebec060)
    at ../../Source/WebKit2/Platform/IPC/Connection.cpp:924
        oldDidReceiveInvalidMessage = false
#11 0x00007f58094e33ae in IPC::Connection::dispatchOneMessage (
    this=0x7f57eebf6000)
    at ../../Source/WebKit2/Platform/IPC/Connection.cpp:955
        message = std::unique_ptr&lt;IPC::Decoder&gt; containing 0x0
#12 0x00007f58094e2f38 in IPC::Connection::&lt;lambda()&gt;::operator()(void) (
    __closure=0x7f57eebed028)
    at ../../Source/WebKit2/Platform/IPC/Connection.cpp:891
        protectedThis = {static isRef = &lt;optimized out&gt;, 
          m_ptr = 0x7f57eebf6000}
#13 0x00007f58094e8f94 in WTF::Function&lt;void()&gt;::CallableWrapper&lt;IPC::Connection::enqueueIncomingMessage(std::unique_ptr&lt;IPC::Decoder&gt;)::&lt;lambda()&gt; &gt;::call(void) (this=0x7f57eebed020) at ../../Source/WTF/wtf/Function.h:89
No locals.
#14 0x00007f58094af141 in WTF::Function&lt;void()&gt;::operator()(void) const (
    this=0x7ffc03efa420) at ../../Source/WTF/wtf/Function.h:50
No locals.
#15 0x00007f58016855f6 in WTF::RunLoop::performWork (this=0x7f57eebf9180)
    at ../../Source/WTF/wtf/RunLoop.cpp:105
        function = {
          m_callableWrapper = std::unique_ptr&lt;WTF::Function&lt;void()&gt;::CallableWrapperBase&gt; containing 0x7f57eebed020}
        functionsToHandle = 3
#16 0x00007f5801682bce in WTF::RunLoop::&lt;lambda(gpointer)&gt;::operator()(gpointer) const (__closure=0x0, userData=0x7f57eebf9180)
    at ../../Source/WTF/wtf/glib/RunLoopGLib.cpp:66
No locals.
#17 0x00007f5801682bf2 in WTF::RunLoop::&lt;lambda(gpointer)&gt;::_FUN(gpointer) ()
    at ../../Source/WTF/wtf/glib/RunLoopGLib.cpp:68
No locals.
#18 0x00007f5801682b6e in WTF::&lt;lambda(GSource*, GSourceFunc, gpointer)&gt;::operator()(GSource *, GSourceFunc, gpointer) const (__closure=0x0, source=0x2181600, 
    callback=0x7f5801682bd5 &lt;WTF::RunLoop::&lt;lambda(gpointer)&gt;::_FUN(gpointer)&gt;, userData=0x7f57eebf9180) at ../../Source/WTF/wtf/glib/RunLoopGLib.cpp:44
No locals.
#19 0x00007f5801682b9d in WTF::&lt;lambda(GSource*, GSourceFunc, gpointer)&gt;::_FUN(GSource *, GSourceFunc, gpointer) ()
    at ../../Source/WTF/wtf/glib/RunLoopGLib.cpp:45
No locals.
#20 0x00007f57f9a1633e in g_main_dispatch (context=0x2180c80)
    at /home/mcatanzaro/Projects/GNOME/glib/glib/gmain.c:3203
        dispatch = 0x7f5801682b70 &lt;WTF::&lt;lambda(GSource*, GSourceFunc, gpointer)&gt;::_FUN(GSource *, GSourceFunc, gpointer)&gt;
        prev_source = 0x0
        was_in_call = 0
        user_data = 0x7f57eebf9180
        callback = 0x7f5801682bd5 &lt;WTF::RunLoop::&lt;lambda(gpointer)&gt;::_FUN(gpointer)&gt;
        cb_funcs = 0x7f57f9ceca40 &lt;g_source_callback_funcs&gt;
        cb_data = 0x2180dd0
        need_destroy = 0
        source = 0x2181600
        current = 0x216a730
        i = 0
        __func__ = &quot;g_main_dispatch&quot;
#21 0x00007f57f9a171c0 in g_main_context_dispatch (context=0x2180c80)
    at /home/mcatanzaro/Projects/GNOME/glib/glib/gmain.c:3856
No locals.
#22 0x00007f57f9a173a4 in g_main_context_iterate (context=0x2180c80, block=1, 
    dispatch=1, self=0x2184600)
    at /home/mcatanzaro/Projects/GNOME/glib/glib/gmain.c:3929
        max_priority = 0
        timeout = 0
        some_ready = 1
        nfds = 2
        allocated_nfds = 2
        fds = 0x29bf020
#23 0x00007f57f9a177ca in g_main_loop_run (loop=0x2180d90)
    at /home/mcatanzaro/Projects/GNOME/glib/glib/gmain.c:4125
        self = 0x2184600
        __func__ = &quot;g_main_loop_run&quot;
#24 0x00007f580168309d in WTF::RunLoop::run ()
    at ../../Source/WTF/wtf/glib/RunLoopGLib.cpp:94
        runLoop = 
    @0x7f57eebf9180: {&lt;WTF::FunctionDispatcher&gt; = {&lt;WTF::ThreadSafeRefCounted&lt;WTF::FunctionDispatcher&gt;&gt; = {&lt;WTF::ThreadSafeRefCountedBase&gt; = {
                m_refCount = {&lt;std::__atomic_base&lt;unsigned int&gt;&gt; = {
                    static _S_alignment = 4, 
                    _M_i = 1}, &lt;No data fields&gt;}}, &lt;No data fields&gt;}, 
            _vptr.FunctionDispatcher = 0x7f5802612ac8 &lt;vtable for WTF::RunLoop+16&gt;}, m_functionQueueLock = {m_mutex = {__data = {__lock = 0, __count = 0, 
                __owner = 0, __nusers = 0, __kind = 512, __spins = 0, 
                __elision = 0, __list = {__prev = 0x0, __next = 0x0}}, 
              __size = &apos;\000&apos; &lt;repeats 17 times&gt;, &quot;\002&quot;, &apos;\000&apos; &lt;repeats 21 times&gt;, __align = 0}}, m_functionQueue = {m_start = 2, m_end = 4, 
            m_buffer = {&lt;WTF::VectorBufferBase&lt;WTF::Function&lt;void()&gt; &gt;&gt; = {
                m_buffer = 0x7f57eebf1180, m_capacity = 16, 
                m_size = 0}, &lt;No data fields&gt;}, m_iterators = 0x0}, 
          m_mainContext = {m_ptr = 0x2180c80}, 
          m_mainLoops = {&lt;WTF::VectorBuffer&lt;WTF::GRefPtr&lt;_GMainLoop&gt;, 0ul&gt;&gt; = {&lt;WTF::VectorBufferBase&lt;WTF::GRefPtr&lt;_GMainLoop&gt; &gt;&gt; = {
                m_buffer = 0x7f57eebf9200, m_capacity = 16, 
                m_size = 1}, &lt;No data fields&gt;}, &lt;No data fields&gt;}, m_source = {
            m_ptr = 0x2181600}}
        mainContext = 0x2180c80
        __PRETTY_FUNCTION__ = &quot;static void WTF::RunLoop::run()&quot;
        innermostLoop = 0x2180d90
        nestedMainLoop = 0x0
#25 0x00007f580999862e in (anonymous namespace)::ChildProcessMain&lt;WebKit::NetworkProcess, WebKit::ChildProcessMainBase&gt; (argc=2, argv=0x7ffc03efa828)
    at ../../Source/WebKit2/Shared/unix/ChildProcessMain.h:61
        childMain = &lt;incomplete type&gt;
#26 0x00007f58099985a5 in (anonymous namespace)::NetworkProcessMainUnix (
    argc=2, argv=0x7ffc03efa828)
    at ../../Source/WebKit2/NetworkProcess/soup/NetworkProcessMainSoup.cpp:37
No locals.
#27 0x0000000000400bea in main (argc=2, argv=0x7ffc03efa828)
    at ../../Source/WebKit2/NetworkProcess/EntryPoint/unix/NetworkProcessMain.cpp:44
No locals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277267</commentid>
    <comment_count>1</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-15 11:00:01 -0800</bug_when>
    <thetext>I don&apos;t think it&apos;s r212283, there&apos;s absolutely no change in behavior in that revision. If any, it would be r212345.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277269</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-15 11:03:31 -0800</bug_when>
    <thetext>hmm, I was thinking in the UI process, in the web process I updated the cookies observer, there shouldn&apos;t be any change in behavior, but it could be... I still think it&apos;s more likely r212345, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277293</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-02-15 11:49:49 -0800</bug_when>
    <thetext>Ah, this is a debug assertion:

void startObservingCookieChanges(const NetworkStorageSession&amp; storageSession, std::function&lt;void ()&gt;&amp;&amp; callback)
{
    auto* jar = storageSession.cookieStorage();
    ASSERT(!cookieChangeCallbackMap().contains(jar));
    cookieChangeCallbackMap().add(jar, WTFMove(callback));
    g_signal_connect(jar, &quot;changed&quot;, G_CALLBACK(soupCookiesChanged), nullptr);
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277294</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-02-15 11:51:08 -0800</bug_when>
    <thetext>Er sorry, it&apos;s stop not start. Crash is on shutdown:

void stopObservingCookieChanges(const NetworkStorageSession&amp; storageSession)
{
    auto* jar = storageSession.cookieStorage();
    ASSERT(cookieChangeCallbackMap().contains(jar));
    cookieChangeCallbackMap().remove(jar);
    g_signal_handlers_disconnect_by_func(jar, reinterpret_cast&lt;void*&gt;(soupCookiesChanged), nullptr);
}

So I guess it&apos;s not properly paired with a call to startObservingCookieChanges().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277560</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-16 00:25:04 -0800</bug_when>
    <thetext>I can&apos;t reproduce the issue, but I think there are several things with the session management that could leave to problems. This crash could be because because cookie manager sends the stop observing cookie changes relaunching the network process, so if we call this after the network process finishes, we launch a new network process for which start observing changes was not called. But there are more situations this can fail in one way or another. The main problem is that the website data store creates the session ID, but it&apos;s web page on creation the one ensuring the session in the web and network processes. So, if you setup your cookie manager before the first web page is created, the start message will not work for ephemeral sessions, because it doesn&apos;t exist yet in the network process. But it will exist when we call stop. Were you using a private session when it crashed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277570</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-16 00:44:17 -0800</bug_when>
    <thetext>In the GTK+ port we always want to observe cookie changes, so we could probably get rid of the start/stop messages and all the inconsistencies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277709</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-02-16 09:42:44 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; I can&apos;t reproduce the issue, but I think there are several things with the
&gt; session management that could leave to problems. This crash could be because
&gt; because cookie manager sends the stop observing cookie changes relaunching
&gt; the network process, so if we call this after the network process finishes,
&gt; we launch a new network process for which start observing changes was not
&gt; called. 

That could definitely be it. I likely closed Epiphany with Ctrl+C, which would have caused network process termination to race with this shutdown message.

&gt; But there are more situations this can fail in one way or another.
&gt; The main problem is that the website data store creates the session ID, but
&gt; it&apos;s web page on creation the one ensuring the session in the web and
&gt; network processes. So, if you setup your cookie manager before the first web
&gt; page is created, the start message will not work for ephemeral sessions,
&gt; because it doesn&apos;t exist yet in the network process. But it will exist when
&gt; we call stop. Were you using a private session when it crashed?

No, I was not using a private session, but it sounds like we need to fix that too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278165</commentid>
    <comment_count>8</comment_count>
      <attachid>301898</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-17 00:55:05 -0800</bug_when>
    <thetext>Created attachment 301898
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278167</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-17 00:57:51 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278168</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-17 00:58:00 -0800</bug_when>
    <thetext>Attachment 301898 did not pass style-queue:


ERROR: Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp:128:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:146:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/NetworkStorageSession.h:78:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/NetworkStorageSession.h:99:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:80:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/soup/CookieStorageSoup.cpp:26:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 6 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278271</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-02-17 08:36:23 -0800</bug_when>
    <thetext>r=me on the soup and GTK changes. Also needs an owner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278626</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-18 02:34:19 -0800</bug_when>
    <thetext>Alex?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278864</commentid>
    <comment_count>13</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-20 00:32:44 -0800</bug_when>
    <thetext>Committed r212626: &lt;http://trac.webkit.org/changeset/212626&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301898</attachid>
            <date>2017-02-17 00:55:05 -0800</date>
            <delta_ts>2017-02-20 00:16:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-cookies-issues.diff</filename>
            <type>text/plain</type>
            <size>24698</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmNGYyN2M2NGY2Zi4uYzg4N2Y0ODUyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxNy0wMi0xNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTihyMjEyMzQ1KTogW0dUS10gQVNTRVJUKGNv
b2tpZUNoYW5nZUNhbGxiYWNrTWFwKCkuY29udGFpbnMoamFyKSkgZmFpbGVkIGluIFdlYkNvcmU6
OnN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzOjU0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjgzNzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTaW1wbGlmeSB0aGUgd2F5IGNvb2tpZSBzdG9yYWdlIGlz
IGhhbmRsZWQgaW4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC4gTm93IHdlIGFsd2F5cyBrZWVw
IGEgcmVmZXJlbmNlIHRvIHRoZQorICAgICAgICBjb29raWUgamFyLCBubyBtYXR0ZXIgaWYgd2Ug
aGF2ZSBhIHNlc3Npb24gb3Igbm90LCB0aGF0IGlzIGFsd2F5cyBrZXB0IGluIHN5bmMgd2l0aCB0
aGUgb25lIGFjdHVhbGx5IHVzZWQgYnkgdGhlCisgICAgICAgIHNlc3Npb24uIFdlIGFsd2F5cyBj
b25uZWN0IHRvIHRoZSBjaGFuZ2VkIHNpZ25hbCBvZiB0aGUgY3VycmVudCBjb29raWUgamFyIGFu
ZCBub3RpZnkgdGhlIG9ic2VydmVyIGlmIGl0IGhhcyBiZWVuCisgICAgICAgIHNldC4KKworICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyk6IFJlbW92ZSB0aGlzIGltcGxl
bWVudGF0aW9uIGFuZCBhZGQgYW4gQVNTRVJUIHRvIGVuc3VyZSB3ZSBkb24ndCB1c2UgdGhpcyBh
bnltb3JlLgorICAgICAgICAoV2ViQ29yZTo6c3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNvb2tpZUNoYW5nZUNhbGxiYWNrTWFwKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OnNvdXBDb29raWVzQ2hhbmdlZCk6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24pOiBJbml0aWFsaXplIHRoZSBjb29raWUgc3RvcmFnZS4KKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6fk5ldHdvcmtTdG9yYWdlU2Vzc2lvbik6IERpc2Nv
bm5lY3QgdGhlIGNoYW5nZWQgc2lnbmFsLgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpnZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vzc2lvbik6IEFsd2F5cyBwYXNzIHRo
ZSBjdXJyZW50IGNvb2tpZSBzdG9yYWdlLgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjb29raWVzRGlkQ2hhbmdlKTogTm90aWZ5IHRoZSBvYnNlcnZlci4KKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llU3RvcmFnZSk6IFJldHVy
biB0aGUgY3VycmVudCBjb29raWUgc3RvcmFnZS4KKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llU3RvcmFnZSk6IFVwZGF0ZSB0aGUgY3VycmVudCBjb29r
aWUgc3RvcmFnZSBhbmQgdXBkYXRlIHRoZSBzZXNzaW9uIGlmCisgICAgICAgIG5lZWRlZCB0b28u
IFdlIGFsd2F5cyBoYXZlIGEgdmFsaWQgY29va2llIHN0b3JhZ2Ugc28gaWYgbnVsbHB0ciBpcyBn
aXZlbiB3ZSBjcmVhdGUgYSBuZXcgb25lLgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpzZXRDb29raWVPYnNlcnZlckhhbmRsZXIpOiBTZXQgYSBjb29raWUgb2JzZXJ2
ZXIgaGFuZGxlci4KKwogMjAxNy0wMi0xNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4KIAogICAgICAgICBbSlNDXSBEcm9wIFBhc3NSZWZQdHIgZnJvbSBBcnJheUJ1ZmZl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmgKaW5kZXggMTkxNzM1NDYxNTIuLmFlZGIwOGE3Zjg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmgKQEAgLTc0LDYgKzc0LDggQEAgcHVibGljOgogICAgIFNvdXBOZXR3b3JrU2Vzc2lvbiog
c291cE5ldHdvcmtTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uLmdldCgpOyB9Owog
ICAgIFNvdXBOZXR3b3JrU2Vzc2lvbiYgZ2V0T3JDcmVhdGVTb3VwTmV0d29ya1Nlc3Npb24oKSBj
b25zdDsKICAgICBTb3VwQ29va2llSmFyKiBjb29raWVTdG9yYWdlKCkgY29uc3Q7CisgICAgdm9p
ZCBzZXRDb29raWVTdG9yYWdlKFNvdXBDb29raWVKYXIqKTsKKyAgICB2b2lkIHNldENvb2tpZU9i
c2VydmVySGFuZGxlcihGdW5jdGlvbjx2b2lkICgpPiYmKTsKICAgICB2b2lkIGdldENyZWRlbnRp
YWxGcm9tUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiwgRnVuY3Rpb248
dm9pZCAoQ3JlZGVudGlhbCYmKT4gY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgc2F2ZUNy
ZWRlbnRpYWxUb1BlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYsIGNvbnN0
IENyZWRlbnRpYWwmKTsKICNlbHNlCkBAIC05MCw4ICs5MiwxMSBAQCBwcml2YXRlOgogI2lmIFBM
QVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIFJldGFpblB0cjxDRlVS
TFN0b3JhZ2VTZXNzaW9uUmVmPiBtX3BsYXRmb3JtU2Vzc2lvbjsKICNlbGlmIFVTRShTT1VQKQor
ICAgIHN0YXRpYyB2b2lkIGNvb2tpZXNEaWRDaGFuZ2UoTmV0d29ya1N0b3JhZ2VTZXNzaW9uKik7
CisKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxTb3VwTmV0d29ya1Nlc3Npb24+IG1fc2Vz
c2lvbjsKLSAgICBtdXRhYmxlIEdSZWZQdHI8U291cENvb2tpZUphcj4gbV9jb29raWVTdG9yYWdl
OworICAgIEdSZWZQdHI8U291cENvb2tpZUphcj4gbV9jb29raWVTdG9yYWdlOworICAgIEZ1bmN0
aW9uPHZvaWQgKCk+IG1fY29va2llT2JzZXJ2ZXJIYW5kbGVyOwogI2lmIFVTRShMSUJTRUNSRVQp
CiAgICAgRnVuY3Rpb248dm9pZCAoQ3JlZGVudGlhbCYmKT4gbV9wZXJzaXNlbnRTdG9yYWdlQ29t
cGxldGlvbkhhbmRsZXI7CiAgICAgR1JlZlB0cjxHQ2FuY2VsbGFibGU+IG1fcGVyc2lzZW50U3Rv
cmFnZUNhbmNlbGxhYmxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9Db29raWVTdG9yYWdlU291cC5jcHAKaW5kZXggYjczNDk2NmI1ZWEuLmVh
NmE2YjI5Mjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvQ29va2llU3RvcmFnZVNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9Db29raWVTdG9yYWdlU291cC5jcHAKQEAgLTIxLDM5ICsyMSwxNiBAQAogCiAj
aWYgVVNFKFNPVVApCiAKLSNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKLSNpbmNs
dWRlIDxsaWJzb3VwL3NvdXAuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBI
YXNoTWFwPFNvdXBDb29raWVKYXIqLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+PiYgY29va2llQ2hh
bmdlQ2FsbGJhY2tNYXAoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFNv
dXBDb29raWVKYXIqLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+Pj4gbWFwOwotICAgIHJldHVybiBt
YXA7Ci19Ci0KLXN0YXRpYyB2b2lkIHNvdXBDb29raWVzQ2hhbmdlZChTb3VwQ29va2llSmFyKiBq
YXIpCi17Ci0gICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBjb29raWVDaGFuZ2VDYWxsYmFja01hcCgp
LmdldChqYXIpKQotICAgICAgICBjYWxsYmFjaygpOwotfQotCi12b2lkIHN0YXJ0T2JzZXJ2aW5n
Q29va2llQ2hhbmdlcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9u
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYgY2FsbGJhY2spCit2b2lkIHN0YXJ0T2JzZXJ2aW5n
Q29va2llQ2hhbmdlcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBzdGQ6OmZ1bmN0aW9u
PHZvaWQgKCk+JiYpCiB7Ci0gICAgYXV0byogamFyID0gc3RvcmFnZVNlc3Npb24uY29va2llU3Rv
cmFnZSgpOwotICAgIEFTU0VSVCghY29va2llQ2hhbmdlQ2FsbGJhY2tNYXAoKS5jb250YWlucyhq
YXIpKTsKLSAgICBjb29raWVDaGFuZ2VDYWxsYmFja01hcCgpLmFkZChqYXIsIFdURk1vdmUoY2Fs
bGJhY2spKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KGphciwgImNoYW5nZWQiLCBHX0NBTExCQUNL
KHNvdXBDb29raWVzQ2hhbmdlZCksIG51bGxwdHIpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogfQogCi12b2lkIHN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24pCit2b2lkIHN0b3BPYnNlcnZpbmdDb29raWVDaGFu
Z2VzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpCiB7Ci0gICAgYXV0byogamFyID0gc3Rv
cmFnZVNlc3Npb24uY29va2llU3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29raWVDaGFuZ2VDYWxs
YmFja01hcCgpLmNvbnRhaW5zKGphcikpOwotICAgIGNvb2tpZUNoYW5nZUNhbGxiYWNrTWFwKCku
cmVtb3ZlKGphcik7Ci0gICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKGph
ciwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc291cENvb2tpZXNDaGFuZ2VkKSwgbnVsbHB0cik7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25Tb3VwLmNwcAppbmRleCBkNDgzNjc5NjNmMC4uODQxNzY5MWU4NWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Np
b25Tb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKQEAgLTUxLDEwICs1MSwxMyBAQCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbihTZXNzaW9uSUQgc2Vzc2lvbklELCBz
dGQ6OnVuaXF1ZV9wdAogICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogICAgICwgbV9zZXNz
aW9uKFdURk1vdmUoc2Vzc2lvbikpCiB7CisgICAgc2V0Q29va2llU3RvcmFnZShtX3Nlc3Npb24g
PyBtX3Nlc3Npb24tPmNvb2tpZUphcigpIDogbnVsbHB0cik7CiB9CiAKIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6fk5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpCiB7CisgICAgZ19zaWduYWxfaGFuZGxl
cnNfZGlzY29ubmVjdF9tYXRjaGVkKG1fY29va2llU3RvcmFnZS5nZXQoKSwgR19TSUdOQUxfTUFU
Q0hfREFUQSwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgdGhpcyk7CisKICNpZiBVU0UoTElCU0VD
UkVUKQogICAgIGdfY2FuY2VsbGFibGVfY2FuY2VsKG1fcGVyc2lzZW50U3RvcmFnZUNhbmNlbGxh
YmxlLmdldCgpKTsKICNlbmRpZgpAQCAtODksMjMgKzkyLDQyIEBAIHZvaWQgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkKIFNvdXBOZXR3b3JrU2Vzc2lv
biYgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vzc2lvbigp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX3Nlc3Npb24pCi0gICAgICAgIG1fc2Vzc2lvbiA9IHN0ZDo6
bWFrZV91bmlxdWU8U291cE5ldHdvcmtTZXNzaW9uPihjb29raWVTdG9yYWdlKCkpOworICAgICAg
ICBtX3Nlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNvdXBOZXR3b3JrU2Vzc2lvbj4obV9jb29r
aWVTdG9yYWdlLmdldCgpKTsKICAgICByZXR1cm4gKm1fc2Vzc2lvbjsKIH0KIAordm9pZCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNEaWRDaGFuZ2UoTmV0d29ya1N0b3JhZ2VTZXNzaW9u
KiBzZXNzaW9uKQoreworICAgIGlmIChzZXNzaW9uLT5tX2Nvb2tpZU9ic2VydmVySGFuZGxlcikK
KyAgICAgICAgc2Vzc2lvbi0+bV9jb29raWVPYnNlcnZlckhhbmRsZXIoKTsKK30KKwogU291cENv
b2tpZUphciogTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVTdG9yYWdlKCkgY29uc3QKIHsK
LSAgICBpZiAobV9zZXNzaW9uKSB7Ci0gICAgICAgIG1fY29va2llU3RvcmFnZSA9IG51bGxwdHI7
Ci0gICAgICAgIEFTU0VSVChtX3Nlc3Npb24tPmNvb2tpZUphcigpKTsKLSAgICAgICAgcmV0dXJu
IG1fc2Vzc2lvbi0+Y29va2llSmFyKCk7Ci0gICAgfQorICAgIFJFTEVBU0VfQVNTRVJUKCFtX3Nl
c3Npb24gfHwgbV9zZXNzaW9uLT5jb29raWVKYXIoKSA9PSBtX2Nvb2tpZVN0b3JhZ2UuZ2V0KCkp
OworICAgIHJldHVybiBtX2Nvb2tpZVN0b3JhZ2UuZ2V0KCk7Cit9CiAKLSAgICBpZiAoIW1fY29v
a2llU3RvcmFnZSkgewordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZVN0b3Jh
Z2UoU291cENvb2tpZUphciogamFyKQoreworICAgIGlmIChtX2Nvb2tpZVN0b3JhZ2UpCisgICAg
ICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfbWF0Y2hlZChtX2Nvb2tpZVN0b3JhZ2Uu
Z2V0KCksIEdfU0lHTkFMX01BVENIX0RBVEEsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIHRoaXMp
OworCisgICAgLy8gV2UgYWx3YXlzIGhhdmUgYSB2YWxpZCBjb29raWVTdG9yYWdlLgorICAgIGlm
IChqYXIpCisgICAgICAgIG1fY29va2llU3RvcmFnZSA9IGphcjsKKyAgICBlbHNlIHsKICAgICAg
ICAgbV9jb29raWVTdG9yYWdlID0gYWRvcHRHUmVmKHNvdXBfY29va2llX2phcl9uZXcoKSk7CiAg
ICAgICAgIHNvdXBfY29va2llX2phcl9zZXRfYWNjZXB0X3BvbGljeShtX2Nvb2tpZVN0b3JhZ2Uu
Z2V0KCksIFNPVVBfQ09PS0lFX0pBUl9BQ0NFUFRfTk9fVEhJUkRfUEFSVFkpOwogICAgIH0KLSAg
ICByZXR1cm4gbV9jb29raWVTdG9yYWdlLmdldCgpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dh
cHBlZChtX2Nvb2tpZVN0b3JhZ2UuZ2V0KCksICJjaGFuZ2VkIiwgR19DQUxMQkFDSyhjb29raWVz
RGlkQ2hhbmdlKSwgdGhpcyk7CisgICAgaWYgKG1fc2Vzc2lvbiAmJiBtX3Nlc3Npb24tPmNvb2tp
ZUphcigpICE9IG1fY29va2llU3RvcmFnZS5nZXQoKSkKKyAgICAgICAgbV9zZXNzaW9uLT5zZXRD
b29raWVKYXIobV9jb29raWVTdG9yYWdlLmdldCgpKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnNldENvb2tpZU9ic2VydmVySGFuZGxlcihGdW5jdGlvbjx2b2lkICgpPiYmIGhh
bmRsZXIpCit7CisgICAgbV9jb29raWVPYnNlcnZlckhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIp
OwogfQogCiAjaWYgVVNFKExJQlNFQ1JFVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjMzUyMzU4ZjhlYi4uZjk4
ZmYzZWYwNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxNy0wMi0xNyAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lP
TihyMjEyMzQ1KTogW0dUS10gQVNTRVJUKGNvb2tpZUNoYW5nZUNhbGxiYWNrTWFwKCkuY29udGFp
bnMoamFyKSkgZmFpbGVkIGluIFdlYkNvcmU6OnN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzOjU0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjgzNzUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW1wbGlm
eSB0aGUgY29va2llcyBjaGFuZ2Ugbm90aWZpY2F0aW9uLiBUaGUgY3VycmVudCBhcHByb2FjaCBv
ZiB0aGUgVUkgcHJvY2VzcyB0ZWxsaW5nIHRoZSBuZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgd2hl
biB0byBzdGFydCBhbmQgc3RvcCBvYnNlcnZpbmcgY29va2llIGNoYW5nZXMgaXMgcXVpdGUgZnJh
Z2lsZSBhbmQgZXJyb3IgcHJvbmUuIEluIHRoZSBHVEsrIHBvcnQgd2UgYWx3YXlzCisgICAgICAg
IG9ic2VydmUgY29va2llcywgc28gb3VyIGNvb2tpZSBtYW5hZ2VyIGFsd2F5cyBjYWxscyBzdGFy
dCBpbiB0aGUgY29uc3RydWN0b3IgYW5kIHN0b3AgaW4gdGhlIGRlc3RydWN0b3IuCisgICAgICAg
IEV2ZXJ5dGhpbmcgd291bGQgYmUgYSBsb3Qgc2ltcGxlciBpZiB0aGUgbmV0d29yayBwcm9jZXNz
IGFsd2F5cyBtb25pdG9yZWQgY29va2llcy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Np
b25Tb3VwOjpOZXR3b3JrU2Vzc2lvblNvdXApOiBTZXQgY29va2llcyBvYnNlcnZlciBoYW5kbGVy
IGZvciB0aGUgc2Vzc2lvbi4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Tb3VwOjp+
TmV0d29ya1Nlc3Npb25Tb3VwKTogUmVtb3ZlIHRoZSBjb29raWVzIG9ic2VydmVyIGhhbmRsZXIu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29va2llTWFuYWdlci5jcHA6Cisg
ICAgICAgIChfV2ViS2l0Q29va2llTWFuYWdlclByaXZhdGU6On5fV2ViS2l0Q29va2llTWFuYWdl
clByaXZhdGUpOiBSZW1vdmUgdGhlIGNvb2tpZXMgb2JzZXJ2ZXIgY2FsbGJhY2suCisgICAgICAg
ICh3ZWJraXRfY29va2llX21hbmFnZXJfY2xhc3NfaW5pdCk6IFJlbW92ZSBkaXNwb3NlIGltcGxl
bWVudGF0aW9uIHRoYXQgaXMgbm8gbG9uZ2VyIG5lZWRlZC4KKyAgICAgICAgKHdlYmtpdENvb2tp
ZU1hbmFnZXJDcmVhdGUpOiBTZXQgdGhlIGNvb2tpZXMgb2JzZXJ2ZXIgY2FsbGJhY2suCisgICAg
ICAgICh3ZWJraXRfY29va2llX21hbmFnZXJfc2V0X3BlcnNpc3RlbnRfc3RvcmFnZSk6IFJlbW92
ZSBjb2RlIHRvIHN0YXJ0L3N0b3Agb2JzZXJ2aW5nIGNvb2tpZXMgd2hlbiB0aGUgamFyCisgICAg
ICAgIGNoYW5nZXMsIHRoZSBuZXR3b3JrIHByb2Nlc3MgZGVhbHMgd2l0aCB0aGF0IG5vdy4KKyAg
ICAgICAgKHdlYmtpdENvb2tpZU1hbmFnZXJEaXNwb3NlKTogRGVsZXRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29va2llTWFuYWdlclByb3h5OjpzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMpOiBSZW1vdmUg
dGhlIG9wdGlvbmFsIGNhbGxiYWNrIG1ldGhvZCBpbiBmYXZvciBvZiBhbgorICAgICAgICBleHBs
aWNpdCBtZXRob2QgdG8gdGhlIHNldCB0aGUgY2FsbGJhY2sgdGhhdCBkb2Vzbid0IHNlbmQgdGhl
IFN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyBtZXNzYWdlIHRvIHRoZSBuZXR3b3JrCisgICAg
ICAgIHByb2Nlc3MuCisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6c3Rv
cE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMpOiBEbyBub3QgY2hhbmdlIHRoZSBjYWxsYmFjayBtYXAg
aGVyZS4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVP
YnNlcnZlckNhbGxiYWNrKTogQWRkIHRoZSBjYWxsYmFjayB0byB0aGUgbWFwIG9yIHJlbW92ZSB0
aGUgc2Vzc2lvbiBpZgorICAgICAgICBudWxscHRyIGlzIGdpdmVuLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Nvb2tp
ZXMvV2ViQ29va2llTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFn
ZXI6Om5vdGlmeUNvb2tpZXNEaWRDaGFuZ2UpOiBTZW5kIENvb2tpZXNEaWRDaGFuZ2UgbWVzc2Fn
ZSB0byB0aGUgVUkgcHJvY2Vzcy4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6
c3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKTogVXNlIG5vdGlmeUNvb2tpZXNEaWRDaGFuZ2Uo
KS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvQ29va2llcy9zb3VwL1dlYkNvb2tpZU1hbmFnZXJTb3VwLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6cGxhdGZvcm1TZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KTogU2V0IHRoZSBwb2xpY3kgb24gYWxsIHNlc3Npb25zLiBDb2RlIG1vdmVk
IGZyb20KKyAgICAgICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dCBzaW5jZSBpdCBkb2Vzbid0
IGJlbG9uZyB0aGVyZS4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6c2V0Q29v
a2llUGVyc2lzdGVudFN0b3JhZ2UpOiBVc2UgbmV3IG1ldGhvZCB0byBzZXQgdGhlIGNvb2tpZSBz
dG9yYWdlIGluIHRoZQorICAgICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb24uCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRDb29r
aWVBY2NlcHRQb2xpY3lGb3JBbGxDb250ZXh0cyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaDoKKwog
MjAxNy0wMi0xNiAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVtb3ZlIHVudXNlZCBtZXRob2RzIFdLUGFnZUdldERlYnVnUGFpbnRGbGFncyBhbmQgV0tQ
YWdlU2V0RGVidWdQYWludEZsYWdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHAKaW5kZXggNzFjNGI0NDNjNjgu
LmY2YmFlZGFjMTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuY3BwCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb25Tb3VwLmgiCiAKKyNpbmNs
dWRlICJOZXR3b3JrUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXIuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU291cE5ldHdvcmtTZXNzaW9uLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CkBAIC0z
NywxMCArMzksMTUgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBOZXR3b3JrU2Vzc2lvblNvdXA6Ok5l
dHdvcmtTZXNzaW9uU291cChTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIDogTmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKQogeworICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLnNldENvb2tpZU9i
c2VydmVySGFuZGxlcihbdGhpc10geworICAgICAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9u
KCkuc3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyPigpLT5ub3RpZnlDb29raWVzRGlkQ2hhbmdl
KG1fc2Vzc2lvbklEKTsKKyAgICB9KTsKIH0KIAogTmV0d29ya1Nlc3Npb25Tb3VwOjp+TmV0d29y
a1Nlc3Npb25Tb3VwKCkKIHsKKyAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKG1fc2Vzc2lvbklEKSkKKyAgICAgICAgc3Rv
cmFnZVNlc3Npb24tPnNldENvb2tpZU9ic2VydmVySGFuZGxlcihudWxscHRyKTsKIH0KIAogU291
cFNlc3Npb24qIE5ldHdvcmtTZXNzaW9uU291cDo6c291cFNlc3Npb24oKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29va2llTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb29raWVNYW5h
Z2VyLmNwcAppbmRleCBjZjkxODgwYmM3OS4uNzVhNjZlYzYxOGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvb2tpZU1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvb2tpZU1hbmFnZXIuY3Bw
CkBAIC01MSw2ICs1MSwxMyBAQCBlbnVtIHsKIH07CiAKIHN0cnVjdCBfV2ViS2l0Q29va2llTWFu
YWdlclByaXZhdGUgeworICAgIH5fV2ViS2l0Q29va2llTWFuYWdlclByaXZhdGUoKQorICAgIHsK
KyAgICAgICAgYXV0byBzZXNzaW9uSUQgPSB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRh
U3RvcmUoZGF0YU1hbmFnZXIpLndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKTsKKyAgICAg
ICAgZm9yIChhdXRvKiBwcm9jZXNzUG9vbCA6IHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldFBy
b2Nlc3NQb29scyhkYXRhTWFuYWdlcikpCisgICAgICAgICAgICBwcm9jZXNzUG9vbC0+c3VwcGxl
bWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCktPnNldENvb2tpZU9ic2VydmVyQ2FsbGJhY2so
c2Vzc2lvbklELCBudWxscHRyKTsKKyAgICB9CisKICAgICBXZWJLaXRXZWJzaXRlRGF0YU1hbmFn
ZXIqIGRhdGFNYW5hZ2VyOwogfTsKIApAQCAtMTAxLDI0ICsxMDgsOSBAQCBzdGF0aWMgaW5saW5l
IEhUVFBDb29raWVBY2NlcHRQb2xpY3kgdG9IVFRQQ29va2llQWNjZXB0UG9saWN5KFdlYktpdENv
b2tpZUFjY2VwdAogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgd2Via2l0Q29va2llTWFuYWdlckRp
c3Bvc2UoR09iamVjdCogb2JqZWN0KQotewotICAgIFdlYktpdENvb2tpZU1hbmFnZXIqIG1hbmFn
ZXIgPSBXRUJLSVRfQ09PS0lFX01BTkFHRVIob2JqZWN0KTsKLSAgICBpZiAobWFuYWdlci0+cHJp
di0+ZGF0YU1hbmFnZXIpIHsKLSAgICAgICAgYXV0byBzZXNzaW9uSUQgPSB3ZWJraXRXZWJzaXRl
RGF0YU1hbmFnZXJHZXREYXRhU3RvcmUobWFuYWdlci0+cHJpdi0+ZGF0YU1hbmFnZXIpLndlYnNp
dGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKTsKLSAgICAgICAgZm9yIChhdXRvKiBwcm9jZXNzUG9v
bCA6IHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldFByb2Nlc3NQb29scyhtYW5hZ2VyLT5wcml2
LT5kYXRhTWFuYWdlcikpCi0gICAgICAgICAgICBwcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJD
b29raWVNYW5hZ2VyUHJveHk+KCktPnN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKHNlc3Npb25J
RCk7Ci0KLSAgICAgICAgbWFuYWdlci0+cHJpdi0+ZGF0YU1hbmFnZXIgPSBudWxscHRyOwotICAg
IH0KLQotICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9jb29raWVfbWFuYWdlcl9wYXJlbnRfY2xh
c3MpLT5kaXNwb3NlKG9iamVjdCk7Ci19Ci0KIHN0YXRpYyB2b2lkIHdlYmtpdF9jb29raWVfbWFu
YWdlcl9jbGFzc19pbml0KFdlYktpdENvb2tpZU1hbmFnZXJDbGFzcyogZmluZENsYXNzKQogewog
ICAgIEdPYmplY3RDbGFzcyogZ09iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MoZmluZENsYXNz
KTsKLSAgICBnT2JqZWN0Q2xhc3MtPmRpc3Bvc2UgPSB3ZWJraXRDb29raWVNYW5hZ2VyRGlzcG9z
ZTsKIAogICAgIC8qKgogICAgICAqIFdlYktpdENvb2tpZU1hbmFnZXI6OmNoYW5nZWQ6CkBAIC0x
NDEsNyArMTMzLDcgQEAgV2ViS2l0Q29va2llTWFuYWdlciogd2Via2l0Q29va2llTWFuYWdlckNy
ZWF0ZShXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqIGRhdGFNYW4KICAgICBtYW5hZ2VyLT5wcml2
LT5kYXRhTWFuYWdlciA9IGRhdGFNYW5hZ2VyOwogICAgIGF1dG8gc2Vzc2lvbklEID0gd2Via2l0
V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKG1hbmFnZXItPnByaXYtPmRhdGFNYW5hZ2Vy
KS53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCk7CiAgICAgZm9yIChhdXRvKiBwcm9jZXNz
UG9vbCA6IHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldFByb2Nlc3NQb29scyhtYW5hZ2VyLT5w
cml2LT5kYXRhTWFuYWdlcikpIHsKLSAgICAgICAgcHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2Vi
Q29va2llTWFuYWdlclByb3h5PigpLT5zdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoc2Vzc2lv
bklELCBbbWFuYWdlcl0geworICAgICAgICBwcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJDb29r
aWVNYW5hZ2VyUHJveHk+KCktPnNldENvb2tpZU9ic2VydmVyQ2FsbGJhY2soc2Vzc2lvbklELCBb
bWFuYWdlcl0gewogICAgICAgICAgICAgZ19zaWduYWxfZW1pdChtYW5hZ2VyLCBzaWduYWxzW0NI
QU5HRURdLCAwKTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAtMTcwLDE1ICsxNjIsOCBAQCB2b2lk
IHdlYmtpdF9jb29raWVfbWFuYWdlcl9zZXRfcGVyc2lzdGVudF9zdG9yYWdlKFdlYktpdENvb2tp
ZU1hbmFnZXIqIG1hbmFnZXIsCiAgICAgZ19yZXR1cm5faWZfZmFpbChmaWxlbmFtZSk7CiAgICAg
Z19yZXR1cm5faWZfZmFpbCghd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2lzX2VwaGVtZXJh
bChtYW5hZ2VyLT5wcml2LT5kYXRhTWFuYWdlcikpOwogCi0gICAgZm9yIChhdXRvKiBwcm9jZXNz
UG9vbCA6IHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldFByb2Nlc3NQb29scyhtYW5hZ2VyLT5w
cml2LT5kYXRhTWFuYWdlcikpIHsKLSAgICAgICAgYXV0byogY29va2llTWFuYWdlciA9IHByb2Nl
c3NQb29sLT5zdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKLQotICAgICAgICBj
b29raWVNYW5hZ2VyLT5zdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhXZWJDb3JlOjpTZXNzaW9u
SUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7Ci0gICAgICAgIGNvb2tpZU1hbmFnZXItPnNldENvb2tp
ZVBlcnNpc3RlbnRTdG9yYWdlKFN0cmluZzo6ZnJvbVVURjgoZmlsZW5hbWUpLCB0b1NvdXBDb29r
aWVQZXJzaXN0ZW50U3RvcmFnZVR5cGUoc3RvcmFnZSkpOwotICAgICAgICBjb29raWVNYW5hZ2Vy
LT5zdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklEOjpkZWZhdWx0
U2Vzc2lvbklEKCksIFttYW5hZ2VyXSB7Ci0gICAgICAgICAgICBnX3NpZ25hbF9lbWl0KG1hbmFn
ZXIsIHNpZ25hbHNbQ0hBTkdFRF0sIDApOwotICAgICAgICB9KTsKLSAgICB9CisgICAgZm9yIChh
dXRvKiBwcm9jZXNzUG9vbCA6IHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldFByb2Nlc3NQb29s
cyhtYW5hZ2VyLT5wcml2LT5kYXRhTWFuYWdlcikpCisgICAgICAgIHByb2Nlc3NQb29sLT5zdXBw
bGVtZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4oKS0+c2V0Q29va2llUGVyc2lzdGVudFN0b3Jh
Z2UoU3RyaW5nOjpmcm9tVVRGOChmaWxlbmFtZSksIHRvU291cENvb2tpZVBlcnNpc3RlbnRTdG9y
YWdlVHlwZShzdG9yYWdlKSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcAppbmRleCBhMWIyYzZkZTY5MC4uMmE5YjBk
ZDRjNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5h
Z2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5h
Z2VyUHJveHkuY3BwCkBAIC0xMzMsMTkgKzEzMywyNCBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6YWRkQ29va2llKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNv
cgogICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJ
Zk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6QWRkQ29va2llKHNlc3Npb25J
RCwgY29va2llLCBob3N0bmFtZSkpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6
c3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViQ29va2llTWFuYWdl
clByb3h5OjpzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNl
c3Npb25JRCkKIHsKLSAgICBpZiAoY2FsbGJhY2spCi0gICAgICAgIG1fY29va2llT2JzZXJ2ZXJz
LnNldChzZXNzaW9uSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBwcm9jZXNzUG9vbCgpLT5z
ZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXI6OlN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhzZXNzaW9uSUQpKTsK
IH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnN0b3BPYnNlcnZpbmdDb29raWVDaGFu
Z2VzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgbV9jb29raWVPYnNlcnZl
cnMucmVtb3ZlKHNlc3Npb25JRCk7CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2lu
Z1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2Vy
OjpTdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhzZXNzaW9uSUQpKTsKIH0KIAordm9pZCBXZWJD
b29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZU9ic2VydmVyQ2FsbGJhY2soV2ViQ29yZTo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiYmIGNhbGxiYWNrKQorewor
ICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAgbV9jb29raWVPYnNlcnZlcnMuc2V0KHNlc3Npb25J
RCwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIGVsc2UKKyAgICAgICAgbV9jb29raWVPYnNlcnZl
cnMucmVtb3ZlKHNlc3Npb25JRCk7Cit9CisKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpj
b29raWVzRGlkQ2hhbmdlKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgbV9j
bGllbnQuY29va2llc0RpZENoYW5nZSh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaAppbmRleCA3MjA2Y2E2NzBmZC4uNDQwMDViYzM2
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2Vy
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclBy
b3h5LmgKQEAgLTc0LDkgKzc0LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSk7CiAgICAgdm9pZCBnZXRIVFRQQ29v
a2llQWNjZXB0UG9saWN5KHN0ZDo6ZnVuY3Rpb248dm9pZCAoSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsKIAotICAgIHZvaWQgc3RhcnRPYnNlcnZpbmdDb29r
aWVDaGFuZ2VzKFdlYkNvcmU6OlNlc3Npb25JRCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiYmID0g
bnVsbHB0cik7CisgICAgdm9pZCBzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6
U2Vzc2lvbklEKTsKICAgICB2b2lkIHN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFdlYkNvcmU6
OlNlc3Npb25JRCk7CiAKKyAgICB2b2lkIHNldENvb2tpZU9ic2VydmVyQ2FsbGJhY2soV2ViQ29y
ZTo6U2Vzc2lvbklELCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYpOworCiAjaWYgVVNFKFNPVVAp
CiAgICAgdm9pZCBzZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShjb25zdCBTdHJpbmcmIHN0b3Jh
Z2VQYXRoLCB1aW50MzJfdCBzdG9yYWdlVHlwZSk7CiAgICAgdm9pZCBnZXRDb29raWVQZXJzaXN0
ZW50U3RvcmFnZShTdHJpbmcmIHN0b3JhZ2VQYXRoLCB1aW50MzJfdCYgc3RvcmFnZVR5cGUpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNv
b2tpZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNv
b2tpZU1hbmFnZXIuY3BwCmluZGV4IGE1N2Y5Mzc0YzI4Li40YmY2NzczZGMwMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2Vy
LmNwcApAQCAtODksMTIgKzg5LDE3IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6YWRkQ29va2ll
KFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCBjb25zCiAgICAgICAg
IFdlYkNvcmU6OmFkZENvb2tpZSgqc3RvcmFnZVNlc3Npb24sIFVSTChVUkwoKSwgaG9zdG5hbWUp
LCBjb29raWUpOwogfQogCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6Om5vdGlmeUNvb2tpZXNEaWRD
aGFuZ2UoU2Vzc2lvbklEIHNlc3Npb25JRCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5
OjpDb29raWVzRGlkQ2hhbmdlKHNlc3Npb25JRCksIDApOworfQorCiB2b2lkIFdlYkNvb2tpZU1h
bmFnZXI6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhTZXNzaW9uSUQgc2Vzc2lvbklEKQog
ewogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBXZWJDb3JlOjpzdGFydE9ic2Vy
dmluZ0Nvb2tpZUNoYW5nZXMoKnN0b3JhZ2VTZXNzaW9uLCBbdGhpcywgc2Vzc2lvbklEXSB7Ci0g
ICAgICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkNvb2tpZXNEaWRDaGFu
Z2Uoc2Vzc2lvbklEKSwgMCk7CisgICAgICAgICAgICBub3RpZnlDb29raWVzRGlkQ2hhbmdlKHNl
c3Npb25JRCk7CiAgICAgICAgIH0pOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCmluZGV4IGZjM2IyZDk4ZDk4
Li43ZWQ2NThmNGZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29r
aWVzL1dlYkNvb2tpZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nv
b2tpZXMvV2ViQ29va2llTWFuYWdlci5oCkBAIC01OSw2ICs1OSw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFN0cmluZyYgc3RvcmFnZVBhdGgs
IHVpbnQzMl90IHN0b3JhZ2VUeXBlKTsKICNlbmRpZgogCisgICAgdm9pZCBub3RpZnlDb29raWVz
RGlkQ2hhbmdlKFdlYkNvcmU6OlNlc3Npb25JRCk7CisKIHByaXZhdGU6CiAgICAgLy8gSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViQ29va2llTWFuYWdlclNvdXAuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViQ29va2llTWFuYWdlclNvdXAuY3Bw
CmluZGV4IGM1OGUwODI5YWI4Li43ZDAwZDI5ZWI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViQ29va2llTWFuYWdlclNvdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9zb3VwL1dlYkNvb2tpZU1hbmFnZXJT
b3VwLmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXIuaCIK
IAogI2luY2x1ZGUgIkNoaWxkUHJvY2Vzcy5oIgotI2luY2x1ZGUgIldlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQuaCIKICNpbmNsdWRlICJXZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NvdXBOZXR3b3JrU2Vzc2lvbi5oPgpAQCAtNDEsNyArNDAsMjIgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6cGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KQogewotICAgIFdlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQ6OnNldENvb2tpZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRzKHBvbGlj
eSk7CisgICAgU291cENvb2tpZUphckFjY2VwdFBvbGljeSBzb3VwUG9saWN5ID0gU09VUF9DT09L
SUVfSkFSX0FDQ0VQVF9OT19USElSRF9QQVJUWTsKKyAgICBzd2l0Y2ggKHBvbGljeSkgeworICAg
IGNhc2UgSFRUUENvb2tpZUFjY2VwdFBvbGljeUFsd2F5czoKKyAgICAgICAgc291cFBvbGljeSA9
IFNPVVBfQ09PS0lFX0pBUl9BQ0NFUFRfQUxXQVlTOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEhUVFBDb29raWVBY2NlcHRQb2xpY3lOZXZlcjoKKyAgICAgICAgc291cFBvbGljeSA9IFNPVVBf
Q09PS0lFX0pBUl9BQ0NFUFRfTkVWRVI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSFRUUENv
b2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluOgorICAgICAgICBzb3Vw
UG9saWN5ID0gU09VUF9DT09LSUVfSkFSX0FDQ0VQVF9OT19USElSRF9QQVJUWTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorCisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpmb3JFYWNoKFtzb3Vw
UG9saWN5XSAoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKSB7CisgICAgICAg
IHNvdXBfY29va2llX2phcl9zZXRfYWNjZXB0X3BvbGljeShzZXNzaW9uLmNvb2tpZVN0b3JhZ2Uo
KSwgc291cFBvbGljeSk7CisgICAgfSk7CiB9CiAKIEhUVFBDb29raWVBY2NlcHRQb2xpY3kgV2Vi
Q29va2llTWFuYWdlcjo6cGxhdGZvcm1HZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KCkKQEAgLTc1
LDcgKzg5LDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWVQZXJzaXN0ZW50U3Rv
cmFnZShjb25zdCBTdHJpbmcmIHN0b3JhZ2VQYXRoLCB1aW4KIAogICAgIGF1dG8mIHN0b3JhZ2VT
ZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsK
ICAgICBzb3VwX2Nvb2tpZV9qYXJfc2V0X2FjY2VwdF9wb2xpY3koamFyLmdldCgpLCBzb3VwX2Nv
b2tpZV9qYXJfZ2V0X2FjY2VwdF9wb2xpY3koc3RvcmFnZVNlc3Npb24uY29va2llU3RvcmFnZSgp
KSk7Ci0gICAgc3RvcmFnZVNlc3Npb24uZ2V0T3JDcmVhdGVTb3VwTmV0d29ya1Nlc3Npb24oKS5z
ZXRDb29raWVKYXIoamFyLmdldCgpKTsKKyAgICBzdG9yYWdlU2Vzc2lvbi5zZXRDb29raWVTdG9y
YWdlKGphci5nZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCmluZGV4IGZlOWQ5NjQyNTFl
Li5hNjQ3NmYxZjE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0LmNwcApAQCAtNTIsMjggKzUyLDYgQEAgdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRCBzZXNzaW9uSUQK
ICAgICBTZXNzaW9uVHJhY2tlcjo6c2V0U2Vzc2lvbihzZXNzaW9uSUQsIE5ldHdvcmtTZXNzaW9u
OjpjcmVhdGUoc2Vzc2lvbklEKSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dDo6c2V0Q29va2llQWNjZXB0UG9saWN5Rm9yQWxsQ29udGV4dHMoSFRUUENvb2tpZUFjY2VwdFBv
bGljeSBwb2xpY3kpCi17Ci0gICAgU291cENvb2tpZUphckFjY2VwdFBvbGljeSBzb3VwUG9saWN5
ID0gU09VUF9DT09LSUVfSkFSX0FDQ0VQVF9BTFdBWVM7Ci0gICAgc3dpdGNoIChwb2xpY3kpIHsK
LSAgICBjYXNlIEhUVFBDb29raWVBY2NlcHRQb2xpY3lBbHdheXM6Ci0gICAgICAgIHNvdXBQb2xp
Y3kgPSBTT1VQX0NPT0tJRV9KQVJfQUNDRVBUX0FMV0FZUzsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBIVFRQQ29va2llQWNjZXB0UG9saWN5TmV2ZXI6Ci0gICAgICAgIHNvdXBQb2xpY3kgPSBT
T1VQX0NPT0tJRV9KQVJfQUNDRVBUX05FVkVSOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEhU
VFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbjoKLSAgICAgICAg
c291cFBvbGljeSA9IFNPVVBfQ09PS0lFX0pBUl9BQ0NFUFRfTk9fVEhJUkRfUEFSVFk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIH0KLQotICAgIHNvdXBfY29va2llX2phcl9zZXRfYWNjZXB0X3BvbGlj
eShOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNvb2tpZVN0
b3JhZ2UoKSwgc291cFBvbGljeSk7Ci0KLSAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZvckVh
Y2goWyZdIChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24pIHsKLSAgICAgICAg
c291cF9jb29raWVfamFyX3NldF9hY2NlcHRfcG9saWN5KHNlc3Npb24uY29va2llU3RvcmFnZSgp
LCBzb3VwUG9saWN5KTsKLSAgICB9KTsKLX0KLQogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dChXZWJGcmFtZSogZnJhbWUpCiAgICAgOiBGcmFtZU5l
dHdvcmtpbmdDb250ZXh0KGZyYW1lLT5jb3JlRnJhbWUoKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3Nv
dXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCmluZGV4IDJjNmVlYTdmMzNjLi41ZGZhOGRi
YjliMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5o
CkBAIC0yNSwxMCArMjUsOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLSNpZm5kZWYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dF9oCi0jZGVmaW5lIFdlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHRfaAorI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJIVFRQQ29v
a2llQWNjZXB0UG9saWN5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZU5ldHdvcmtpbmdDb250
ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KIApAQCAtNDUsNyArNDMsNiBA
QCBwdWJsaWM6CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbihXZWJDb3JlOjpTZXNzaW9uSUQpOwotICAgIHN0YXRpYyB2b2lkIHNldENvb2tpZUFj
Y2VwdFBvbGljeUZvckFsbENvbnRleHRzKEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwogCiAgICAg
V2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVyQ2xpZW50KCkgY29uc3Q7CiAKQEAg
LTU2LDUgKzUzLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0KLQotI2VuZGlmIC8vIFdlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHRfaAo=
</data>
<flag name="review"
          id="323645"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>