<?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>184122</bug_id>
          
          <creation_ts>2018-03-28 19:54:31 -0700</creation_ts>
          <short_desc>REGRESSION(r230035): ASSERT(MACH_PORT_VALID(m_sendPort)) hit in IPC::Connection::initializeSendSource()</short_desc>
          <delta_ts>2018-03-29 14:59:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1410163</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-28 19:54:31 -0700</bug_when>
    <thetext>ASSERT(MACH_PORT_VALID(m_sendPort)) hit in IPC::Connection::initializeSendSource():
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.JavaScriptCore      	0x0000000657b2caa4 WTFCrash + 36 (Assertions.cpp:271)
1   com.apple.WebKit              	0x0000000101660379 IPC::Connection::initializeSendSource() + 313 (ConnectionMac.mm:390)
2   com.apple.WebKit              	0x000000010165f8a3 IPC::Connection::open() + 1171 (ConnectionMac.mm:206)
3   com.apple.WebKit              	0x0000000101ef8f1a WebKit::WebInspectorUI::establishConnection(IPC::Attachment, unsigned long long, bool, unsigned int) + 346 (WebInspectorUI.cpp:82)
4   com.apple.WebKit              	0x0000000101f0218f void IPC::callMemberFunctionImpl&lt;WebKit::WebInspectorUI, void (WebKit::WebInspectorUI::*)(IPC::Attachment, unsigned long long, bool, unsigned int), std::__1::tuple&lt;IPC::Attachment, unsigned long long, bool, unsigned int&gt;, 0ul, 1ul, 2ul, 3ul&gt;(WebKit::WebInspectorUI*, void (WebKit::WebInspectorUI::*)(IPC::Attachment, unsigned long long, bool, unsigned int), std::__1::tuple&lt;IPC::Attachment, unsigned long long, bool, unsigned int&gt;&amp;&amp;, std::__1::integer_sequence&lt;unsigned long, 0ul, 1ul, 2ul, 3ul&gt;) + 399 (HandleMessage.h:41)
5   com.apple.WebKit              	0x0000000101f01dd0 void IPC::callMemberFunction&lt;WebKit::WebInspectorUI, void (WebKit::WebInspectorUI::*)(IPC::Attachment, unsigned long long, bool, unsigned int), std::__1::tuple&lt;IPC::Attachment, unsigned long long, bool, unsigned int&gt;, std::__1::integer_sequence&lt;unsigned long, 0ul, 1ul, 2ul, 3ul&gt; &gt;(std::__1::tuple&lt;IPC::Attachment, unsigned long long, bool, unsigned int&gt;&amp;&amp;, WebKit::WebInspectorUI*, void (WebKit::WebInspectorUI::*)(IPC::Attachment, unsigned long long, bool, unsigned int)) + 96 (HandleMessage.h:47)
6   com.apple.WebKit              	0x0000000101f00a2a void IPC::handleMessage&lt;Messages::WebInspectorUI::EstablishConnection, WebKit::WebInspectorUI, void (WebKit::WebInspectorUI::*)(IPC::Attachment, unsigned long long, bool, unsigned int)&gt;(IPC::Decoder&amp;, WebKit::WebInspectorUI*, void (WebKit::WebInspectorUI::*)(IPC::Attachment, unsigned long long, bool, unsigned int)) + 330 (HandleMessage.h:127)
7   com.apple.WebKit              	0x0000000101efffe5 WebKit::WebInspectorUI::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;) + 133 (WebInspectorUIMessageReceiver.cpp:42)

Saw this locally when running the layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410300</commentid>
    <comment_count>1</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-03-29 10:26:10 -0700</bug_when>
    <thetext>This is probably happening because it&apos;s a dead mach port. That assertion is likely too strict (this can happen if the process its talking to has died, which need not be fatal).

This should probably be weekend, but I want to review the code again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410301</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-03-29 10:26:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/39003606&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410311</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-29 10:43:12 -0700</bug_when>
    <thetext>Code:
    ASSERT(MACH_PORT_VALID(m_sendPort));
    mach_port_t sendPort = m_sendPort;
    dispatch_source_set_cancel_handler(m_sendSource, ^{
        // Release our send right.
        mach_port_deallocate(mach_task_self(), sendPort);
    });</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410317</commentid>
    <comment_count>4</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-03-29 11:02:05 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #1)
&gt; This is probably happening because it&apos;s a dead mach port. That assertion is
&gt; likely too strict (this can happen if the process its talking to has died,
&gt; which need not be fatal).
&gt; 
&gt; This should probably be weekend, but I want to review the code again.

lol. This should probably be WEAKENED.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410323</commentid>
    <comment_count>5</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-03-29 11:20:47 -0700</bug_when>
    <thetext>It looks like the WebContent process is being asked to establish a connection to a dead mach port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410334</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-29 11:53:26 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #5)
&gt; It looks like the WebContent process is being asked to establish a
&gt; connection to a dead mach port.

I think I was running this when I saw the assertion yesterday:
Tools/Scripts/run-webkit-tests LayoutTests/http/tests/xmlhttprequest/ LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/

Note that there was no test failure. However, on the results page, there was a WebContent crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410363</commentid>
    <comment_count>7</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-03-29 13:17:25 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #6)
&gt; (In reply to Brent Fulgham from comment #5)
&gt; &gt; It looks like the WebContent process is being asked to establish a
&gt; &gt; connection to a dead mach port.
&gt; 
&gt; I think I was running this when I saw the assertion yesterday:
&gt; Tools/Scripts/run-webkit-tests LayoutTests/http/tests/xmlhttprequest/
&gt; LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/
&gt; 
&gt; Note that there was no test failure. However, on the results page, there was
&gt; a WebContent crash.

Yeah -- I think this is a case where the WebInspector process has a connection to a WebContent process that has shut down. We shouldn&apos;t assert in that case, we should recover gracefully.

We should also avoid establishing new connections to dead processes, so this patch will be a little larger than just changing the assertion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410385</commentid>
    <comment_count>8</comment_count>
      <attachid>336803</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-03-29 13:43:57 -0700</bug_when>
    <thetext>Created attachment 336803
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410389</commentid>
    <comment_count>9</comment_count>
      <attachid>336803</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-29 13:53:18 -0700</bug_when>
    <thetext>Comment on attachment 336803
Patch

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

&gt; Source/WebKit/Platform/IPC/Connection.h:138
&gt; +    static bool identifierIsDead(Identifier identifier) { return identifier.port == MACH_PORT_DEAD; }

Do we ever need to distinguish null and dead? It does not look like it. If so, could we rename identifierIsNull() to identifierIdValid() and have it use MACH_PORT_VALID() internally?

&gt; Source/WebKit/Platform/IPC/mac/ConnectionMac.mm:399
&gt; +        if (sendPort)

I do not think this check is useful, is it? We copied m_sendPort into sendPort above and asserted that it was valid before that. There is no way for sendPort to check after that since it is a copy.
If we want to be extra safe still, why not use if (MACH_PORT_VALID(sendPort)) ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410413</commentid>
    <comment_count>10</comment_count>
      <attachid>336803</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-03-29 14:50:03 -0700</bug_when>
    <thetext>Comment on attachment 336803
Patch

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

&gt;&gt; Source/WebKit/Platform/IPC/Connection.h:138
&gt;&gt; +    static bool identifierIsDead(Identifier identifier) { return identifier.port == MACH_PORT_DEAD; }
&gt; 
&gt; Do we ever need to distinguish null and dead? It does not look like it. If so, could we rename identifierIsNull() to identifierIdValid() and have it use MACH_PORT_VALID() internally?

Agreed. I&apos;ll change it.

&gt;&gt; Source/WebKit/Platform/IPC/mac/ConnectionMac.mm:399
&gt;&gt; +        if (sendPort)
&gt; 
&gt; I do not think this check is useful, is it? We copied m_sendPort into sendPort above and asserted that it was valid before that. There is no way for sendPort to check after that since it is a copy.
&gt; If we want to be extra safe still, why not use if (MACH_PORT_VALID(sendPort)) ?

Ok -- I&apos;ll remove it.

The main reason I added it is that there is no reason to send mach_port_deallocate to a null port (though there IS value in sending it to a dead port if you used it to allocate a connection). So this was more about avoiding an unnecessary IPC call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410417</commentid>
    <comment_count>11</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-03-29 14:59:56 -0700</bug_when>
    <thetext>Committed r230084: &lt;https://trac.webkit.org/changeset/230084&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336803</attachid>
            <date>2018-03-29 13:43:57 -0700</date>
            <delta_ts>2018-03-29 13:53:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184122-20180329134356.patch</filename>
            <type>text/plain</type>
            <size>14280</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzAwNzgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDE4LTAzLTI5ICBCcmVudCBGdWxn
aGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04ocjIzMDAzNSk6
IEFTU0VSVChNQUNIX1BPUlRfVkFMSUQobV9zZW5kUG9ydCkpIGhpdCBpbiBJUEM6OkNvbm5lY3Rp
b246OmluaXRpYWxpemVTZW5kU291cmNlKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4NDEyMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzkwMDM2
MDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT25l
IG9mIHRoZSBuZXcgYXNzZXJ0aW9ucyBhZGRlZCBpbiByMjMwMDM1IGJlZ2luIGZpcmluZyB3aGls
ZSBydW5uaW5nIHRlc3RzIGxvY2FsbHkuIFRoaXMgd2FzIGhhcHBlbmluZworICAgICAgICBiZWNh
dXNlIHRoZSBXZWJJbnNwZWN0b3Igd2FzIGF0dGVtcHRpbmcgdG8gb3BlbiBhIG5ldyBjb25uZWN0
aW9uIHRvIGEgd2ViIHByb2Nlc3MgdGhhdCBoYWQgYWxyZWFkeQorICAgICAgICB0ZXJtaW5hdGVk
IGl0cyBtYWNoIHBvcnQgY29ubmVjdGlvbiAoYSBkZWFkIHBvcnQpLgorICAgICAgICAKKyAgICAg
ICAgV2Ugc2hvdWxkIGF2b2lkIG9wZW5pbmcgbmV3IGNvbm5lY3Rpb25zIHdoZW4gdGhlIHBvcnQg
d2Ugd2VyZSBnaXZlbiBpcyBhbHJlYWR5IGRlYWQuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
Q29ubmVjdGlvbi5oOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNEZWFk
KTogQWRkZWQuCisgICAgICAgICogUGxhdGZvcm0vSVBDL21hYy9Db25uZWN0aW9uTWFjLm1tOgor
ICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpwbGF0Zm9ybUluaXRpYWxpemUpOiBEbyBub3QgcGVy
Zm9ybSBpbml0aWFsaXphdGlvbiBvbiBhIGRlYWQgKG9yIG51bGwpIHBvcnQuCisgICAgICAgIChJ
UEM6OkNvbm5lY3Rpb246Om9wZW4pOiBBZGQgc29tZSBhc3NlcnRpb25zIHRoYXQgcG9ydHMgYXJl
IGluIGEgdmFsaWQgc3RhdGUuCisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRPdXRnb2lu
Z01lc3NhZ2UpOiBBc3NlcnQgdGhhdCB0aGUgc2VuZCBwb3J0IGlzIG5vdCBkZWFkLgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjppbml0aWFsaXplU2VuZFNvdXJjZSk6IERvbid0IGNhbGwgbWFj
aF9wb3J0X2RlYWxsb2NhdGUgb24gYSBudWxsIHBvcnQuCisgICAgICAgIChJUEM6OkNvbm5lY3Rp
b246OnJlY2VpdmVTb3VyY2VFdmVudEhhbmRsZXIpOiBBc3NlcnQgdGhhdCB0aGUgcmVjZWl2ZSBw
b3J0IGlzIHZhbGlkLgorICAgICAgICAqIFVJUHJvY2Vzcy9DaGlsZFByb2Nlc3NQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcp
OiBUcmVhdCBhIGRlYWQgcG9ydCBhcyBhIHNpZ25hbCB0aGF0IHRoZQorICAgICAgICBjaGlsZCBw
cm9jZXNzIGZhaWxlZCB0byBsYXVuY2guCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OmRpZEZpbmlzaExhdW5jaGluZyk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nl
c3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNz
L1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyk6IERpdHRvLgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uKTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
Ykluc3BlY3RvclVJLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OmVzdGFi
bGlzaENvbm5lY3Rpb24pOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjplbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZW5zdXJlV2Vi
VG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24pOiBEaXR0by4KKwogMjAxOC0wMy0yOSAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyMjk0
ODApOiBFUlJPUjogVW5oYW5kbGVkIHdlYiBwcm9jZXNzIG1lc3NhZ2UgJ1dlYkNvb2tpZU1hbmFn
ZXI6U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeScKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmgJKHJldmlzaW9uIDIzMDA3NSkKKysrIFNvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSw3IEBA
IHB1YmxpYzoKICNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKICAgICB0eXBlZGVmIGludCBJ
ZGVudGlmaWVyOwogICAgIHN0YXRpYyBib29sIGlkZW50aWZpZXJJc051bGwoSWRlbnRpZmllciBp
ZGVudGlmaWVyKSB7IHJldHVybiBpZGVudGlmaWVyID09IC0xOyB9CisgICAgc3RhdGljIGJvb2wg
aWRlbnRpZmllcklzRGVhZChJZGVudGlmaWVyIGlkZW50aWZpZXIpIHsgcmV0dXJuIGZhbHNlOyB9
CiAKICAgICBzdHJ1Y3QgU29ja2V0UGFpciB7CiAgICAgICAgIGludCBjbGllbnQ7CkBAIC0xMzQs
NiArMTM1LDcgQEAgcHVibGljOgogICAgICAgICBPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90
PiB4cGNDb25uZWN0aW9uOwogICAgIH07CiAgICAgc3RhdGljIGJvb2wgaWRlbnRpZmllcklzTnVs
bChJZGVudGlmaWVyIGlkZW50aWZpZXIpIHsgcmV0dXJuIGlkZW50aWZpZXIucG9ydCA9PSBNQUNI
X1BPUlRfTlVMTDsgfQorICAgIHN0YXRpYyBib29sIGlkZW50aWZpZXJJc0RlYWQoSWRlbnRpZmll
ciBpZGVudGlmaWVyKSB7IHJldHVybiBpZGVudGlmaWVyLnBvcnQgPT0gTUFDSF9QT1JUX0RFQUQ7
IH0KICAgICB4cGNfY29ubmVjdGlvbl90IHhwY0Nvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X3hwY0Nvbm5lY3Rpb24uZ2V0KCk7IH0KICAgICBib29sIGdldEF1ZGl0VG9rZW4oYXVkaXRfdG9r
ZW5fdCYpOwogICAgIHBpZF90IHJlbW90ZVByb2Nlc3NJRCgpIGNvbnN0OwpAQCAtMTQxLDYgKzE0
Myw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEhBTkRMRSBJZGVudGlmaWVyOwogICAgIHN0YXRp
YyBib29sIGNyZWF0ZVNlcnZlckFuZENsaWVudElkZW50aWZpZXJzKElkZW50aWZpZXImIHNlcnZl
cklkZW50aWZpZXIsIElkZW50aWZpZXImIGNsaWVudElkZW50aWZpZXIpOwogICAgIHN0YXRpYyBi
b29sIGlkZW50aWZpZXJJc051bGwoSWRlbnRpZmllciBpZGVudGlmaWVyKSB7IHJldHVybiAhaWRl
bnRpZmllcjsgfQorICAgIHN0YXRpYyBib29sIGlkZW50aWZpZXJJc0RlYWQoSWRlbnRpZmllciBp
ZGVudGlmaWVyKSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKICAgICBzdGF0aWMgUmVmPENv
bm5lY3Rpb24+IGNyZWF0ZVNlcnZlckNvbm5lY3Rpb24oSWRlbnRpZmllciwgQ2xpZW50Jik7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9tYWMvQ29ubmVjdGlvbk1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9tYWMvQ29ubmVjdGlvbk1hYy5t
bQkocmV2aXNpb24gMjMwMDc1KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvbWFjL0Nv
bm5lY3Rpb25NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE1Niw2ICsxNTYsOSBAQCB2b2lkIENv
bm5lY3Rpb246OnRlcm1pbmF0ZVNvb24oU2Vjb25kcyBpCiAgICAgCiB2b2lkIENvbm5lY3Rpb246
OnBsYXRmb3JtSW5pdGlhbGl6ZShJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CisgICAgaWYgKCFN
QUNIX1BPUlRfVkFMSUQoaWRlbnRpZmllci5wb3J0KSkKKyAgICAgICAgcmV0dXJuOworCiAgICAg
aWYgKG1faXNTZXJ2ZXIpIHsKICAgICAgICAgbV9yZWNlaXZlUG9ydCA9IGlkZW50aWZpZXIucG9y
dDsKICAgICAgICAgbV9zZW5kUG9ydCA9IE1BQ0hfUE9SVF9OVUxMOwpAQCAtMTc5LDEwICsxODIs
MTEgQEAgYm9vbCBDb25uZWN0aW9uOjpvcGVuKCkKICAgICBpZiAobV9pc1NlcnZlcikgewogICAg
ICAgICBBU1NFUlQobV9yZWNlaXZlUG9ydCk7CiAgICAgICAgIEFTU0VSVCghbV9zZW5kUG9ydCk7
Ci0gICAgICAgIAorICAgICAgICBBU1NFUlQoTUFDSF9QT1JUX1ZBTElEKG1fcmVjZWl2ZVBvcnQp
KTsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQoIW1fcmVjZWl2ZVBvcnQpOwogICAgICAg
ICBBU1NFUlQobV9zZW5kUG9ydCk7CisgICAgICAgIEFTU0VSVChNQUNIX1BPUlRfVkFMSUQobV9z
ZW5kUG9ydCkpOwogCiAgICAgICAgIGF1dG8ga3IgPSBtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90
YXNrX3NlbGYoKSwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZtX3JlY2VpdmVQb3J0KTsKICAg
ICAgICAgaWYgKGtyICE9IEtFUk5fU1VDQ0VTUykgewpAQCAtMzU4LDYgKzM2Miw3IEBAIGJvb2wg
Q29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZShzdGQKICAgICAgICAgbWVtY3B5KG1lc3Nh
Z2VEYXRhLCBlbmNvZGVyLT5idWZmZXIoKSwgZW5jb2Rlci0+YnVmZmVyU2l6ZSgpKTsKIAogICAg
IEFTU0VSVChtX3NlbmRQb3J0KTsKKyAgICBBU1NFUlQoTUFDSF9QT1JUX1ZBTElEKG1fc2VuZFBv
cnQpKTsKIAogICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KQEAg
LTM5MSw3ICszOTYsOCBAQCB2b2lkIENvbm5lY3Rpb246OmluaXRpYWxpemVTZW5kU291cmNlKCkK
ICAgICBtYWNoX3BvcnRfdCBzZW5kUG9ydCA9IG1fc2VuZFBvcnQ7CiAgICAgZGlzcGF0Y2hfc291
cmNlX3NldF9jYW5jZWxfaGFuZGxlcihtX3NlbmRTb3VyY2UsIF57CiAgICAgICAgIC8vIFJlbGVh
c2Ugb3VyIHNlbmQgcmlnaHQuCi0gICAgICAgIG1hY2hfcG9ydF9kZWFsbG9jYXRlKG1hY2hfdGFz
a19zZWxmKCksIHNlbmRQb3J0KTsKKyAgICAgICAgaWYgKHNlbmRQb3J0KQorICAgICAgICAgICAg
bWFjaF9wb3J0X2RlYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgc2VuZFBvcnQpOwogICAgIH0p
OwogfQogCkBAIC00OTMsNiArNDk5LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpyZWNlaXZlU291cmNl
RXZlbnRIYW5kbAogewogICAgIFJlY2VpdmVCdWZmZXIgYnVmZmVyOwogCisgICAgQVNTRVJUKE1B
Q0hfUE9SVF9WQUxJRChtX3JlY2VpdmVQb3J0KSk7CiAgICAgbWFjaF9tc2dfaGVhZGVyX3QqIGhl
YWRlciA9IHJlYWRGcm9tTWFjaFBvcnQobV9yZWNlaXZlUG9ydCwgYnVmZmVyKTsKICAgICBpZiAo
IWhlYWRlcikKICAgICAgICAgcmV0dXJuOwpAQCAtNTMyLDYgKzUzOSw3IEBAIHZvaWQgQ29ubmVj
dGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGwKICAgICAgICAgbV9zZW5kUG9ydCA9IHBvcnQu
cG9ydCgpOwogICAgICAgICAKICAgICAgICAgaWYgKG1fc2VuZFBvcnQpIHsKKyAgICAgICAgICAg
IEFTU0VSVChNQUNIX1BPUlRfVkFMSUQobV9yZWNlaXZlUG9ydCkpOwogICAgICAgICAgICAgbWFj
aF9wb3J0X3QgcHJldmlvdXNOb3RpZmljYXRpb25Qb3J0ID0gTUFDSF9QT1JUX05VTEw7CiAgICAg
ICAgICAgICBhdXRvIGtyID0gbWFjaF9wb3J0X3JlcXVlc3Rfbm90aWZpY2F0aW9uKG1hY2hfdGFz
a19zZWxmKCksIG1fcmVjZWl2ZVBvcnQsIE1BQ0hfTk9USUZZX05PX1NFTkRFUlMsIDAsIE1BQ0hf
UE9SVF9OVUxMLCBNQUNIX01TR19UWVBFX01PVkVfU0VORF9PTkNFLCAmcHJldmlvdXNOb3RpZmlj
YXRpb25Qb3J0KTsKICAgICAgICAgICAgIEFTU0VSVChrciA9PSBLRVJOX1NVQ0NFU1MpOwpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ2hpbGRQcm9jZXNzUHJveHkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NoaWxkUHJvY2Vzc1Byb3h5LmNwcAkocmV2
aXNpb24gMjMwMDc1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ2hpbGRQcm9jZXNzUHJv
eHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTItMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIENoaWxkUHJvY2Vzc1By
b3h5OjpkaWRGaW5pc2hMYXVuY2hpCiB7CiAgICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb24pOwogCi0g
ICAgaWYgKElQQzo6Q29ubmVjdGlvbjo6aWRlbnRpZmllcklzTnVsbChjb25uZWN0aW9uSWRlbnRp
ZmllcikpCisgICAgaWYgKElQQzo6Q29ubmVjdGlvbjo6aWRlbnRpZmllcklzTnVsbChjb25uZWN0
aW9uSWRlbnRpZmllcikgfHwgSVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNEZWFkKGNvbm5l
Y3Rpb25JZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9jb25uZWN0aW9uID0g
SVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlm
aWVyLCAqdGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDIzMDA3NSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEy
LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zMjcsNyArMzI3LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpkaWRGaW5pc2hMYXVuYwogewogICAgIENoaWxkUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVu
Y2hpbmcobGF1bmNoZXIsIGNvbm5lY3Rpb25JZGVudGlmaWVyKTsKIAotICAgIGlmIChJUEM6OkNv
bm5lY3Rpb246OmlkZW50aWZpZXJJc051bGwoY29ubmVjdGlvbklkZW50aWZpZXIpKSB7CisgICAg
aWYgKElQQzo6Q29ubmVjdGlvbjo6aWRlbnRpZmllcklzTnVsbChjb25uZWN0aW9uSWRlbnRpZmll
cikgfHwgSVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNEZWFkKGNvbm5lY3Rpb25JZGVudGlm
aWVyKSkgewogICAgICAgICBuZXR3b3JrUHJvY2Vzc0ZhaWxlZFRvTGF1bmNoKCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyMzAwNzUpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRG
aW5pc2hMYXVuY2gKIHsKICAgICBBU1NFUlQoIW1fY29ubmVjdGlvbik7CiAKLSAgICBpZiAoSVBD
OjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNOdWxsKGNvbm5lY3Rpb25JZGVudGlmaWVyKSkgewor
ICAgIGlmIChJUEM6OkNvbm5lY3Rpb246OmlkZW50aWZpZXJJc051bGwoY29ubmVjdGlvbklkZW50
aWZpZXIpIHx8IElQQzo6Q29ubmVjdGlvbjo6aWRlbnRpZmllcklzRGVhZChjb25uZWN0aW9uSWRl
bnRpZmllcikpIHsKICAgICAgICAgcGx1Z2luUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNo
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9u
IDIzMDA3NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nl
c3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgU3RvcmFnZVBy
b2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmMKIHsKICAgICBDaGlsZFByb2Nlc3NQcm94eTo6ZGlk
RmluaXNoTGF1bmNoaW5nKGxhdW5jaGVyLCBjb25uZWN0aW9uSWRlbnRpZmllcik7CiAKLSAgICBp
ZiAoSVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNOdWxsKGNvbm5lY3Rpb25JZGVudGlmaWVy
KSkgeworICAgIGlmIChJUEM6OkNvbm5lY3Rpb246OmlkZW50aWZpZXJJc051bGwoY29ubmVjdGlv
bklkZW50aWZpZXIpIHx8IElQQzo6Q29ubmVjdGlvbjo6aWRlbnRpZmllcklzRGVhZChjb25uZWN0
aW9uSWRlbnRpZmllcikpIHsKICAgICAgICAgLy8gRklYTUU6IERvIGJldHRlciBjbGVhbnVwIGhl
cmUuCiAgICAgICAgIHJldHVybjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyMzAwNzUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTU2LDcgKzExNTYsNyBA
QCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24mIFdlYlByb2Nlc3M6OmVuCiAjZWxzZQogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICNlbmRpZgotICAgICAgICBpZiAoSVBDOjpDb25uZWN0
aW9uOjppZGVudGlmaWVySXNOdWxsKGNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgaWYg
KElQQzo6Q29ubmVjdGlvbjo6aWRlbnRpZmllcklzTnVsbChjb25uZWN0aW9uSWRlbnRpZmllcikg
fHwgSVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNEZWFkKGNvbm5lY3Rpb25JZGVudGlmaWVy
KSkKICAgICAgICAgICAgIENSQVNIKCk7CiAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uID0gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoY29ubmVjdGlvbklkZW50aWZp
ZXIpOwogICAgIH0KQEAgLTEyMzAsOCArMTIzMCw5IEBAIFdlYlRvU3RvcmFnZVByb2Nlc3NDb25u
ZWN0aW9uJiBXZWJQcm9jZXMKICNlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
I2VuZGlmCi0gICAgICAgIGlmIChJUEM6OkNvbm5lY3Rpb246OmlkZW50aWZpZXJJc051bGwoY29u
bmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICBpZiAoSVBDOjpDb25uZWN0aW9uOjppZGVudGlm
aWVySXNOdWxsKGNvbm5lY3Rpb25JZGVudGlmaWVyKSB8fCBJUEM6OkNvbm5lY3Rpb246OmlkZW50
aWZpZXJJc0RlYWQoY29ubmVjdGlvbklkZW50aWZpZXIpKQogICAgICAgICAgICAgQ1JBU0goKTsK
KwogICAgICAgICBtX3dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uID0gV2ViVG9TdG9yYWdl
UHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShjb25uZWN0aW9uSWRlbnRpZmllcik7CiAKICAgICB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAJKHJldmlzaW9uIDIz
MDA3NSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3ND
b25uZWN0aW9uTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzIsNyArNzIsNyBAQCBQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbiogUGx1Z2luUHJvY2Vzc0NvCiAgICAgYm9vbCBzdXBwb3J0c0FzeW5j
aHJvbm91c0luaXRpYWxpemF0aW9uOwogICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlByb2Nlc3NQ
cm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24ocGx1Z2luUHJvY2Vzc1Rva2VuKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2Fn
ZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OlJlcGx5KGVu
Y29kZWRDb25uZWN0aW9uSWRlbnRpZmllciwgc3VwcG9ydHNBc3luY2hyb25vdXNJbml0aWFsaXph
dGlvbiksIDApKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKICAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50
aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIgPSBlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIu
cmVsZWFzZUZpbGVEZXNjcmlwdG9yKCk7CkBAIC04MSw3ICs4MSw3IEBAIFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uKiBQbHVnaW5Qcm9jZXNzQ28KICNlbGlmIE9TKFdJTkRPV1MpCiAgICAgSVBDOjpD
b25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyID0gZW5jb2RlZENvbm5l
Y3Rpb25JZGVudGlmaWVyLmhhbmRsZSgpOwogI2VuZGlmCi0gICAgaWYgKElQQzo6Q29ubmVjdGlv
bjo6aWRlbnRpZmllcklzTnVsbChjb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgaWYgKElQQzo6
Q29ubmVjdGlvbjo6aWRlbnRpZmllcklzTnVsbChjb25uZWN0aW9uSWRlbnRpZmllcikgfHwgSVBD
OjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNEZWFkKGNvbm5lY3Rpb25JZGVudGlmaWVyKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWZQdHI8UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24+IHBsdWdpblByb2Nlc3NDb25uZWN0aW9uID0gUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmNy
ZWF0ZSh0aGlzLCBwbHVnaW5Qcm9jZXNzVG9rZW4sIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBw
b3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5jcHAJKHJldmlzaW9uIDIz
MDA3NSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJ
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgV2ViSW5zcGVjdG9y
VUk6OmVzdGFibGlzaENvbm5lY3Rpb24KICAgICByZXR1cm47CiAjZW5kaWYKIAotICAgIGlmIChJ
UEM6OkNvbm5lY3Rpb246OmlkZW50aWZpZXJJc051bGwoY29ubmVjdGlvbklkZW50aWZpZXIpKQor
ICAgIGlmIChJUEM6OkNvbm5lY3Rpb246OmlkZW50aWZpZXJJc051bGwoY29ubmVjdGlvbklkZW50
aWZpZXIpIHx8IElQQzo6Q29ubmVjdGlvbjo6aWRlbnRpZmllcklzRGVhZChjb25uZWN0aW9uSWRl
bnRpZmllcikpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1faW5zcGVjdGVkUGFnZUlkZW50aWZp
ZXIgPSBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllcjsK
</data>
<flag name="review"
          id="355289"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>