<?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>210142</bug_id>
          
          <creation_ts>2020-04-07 12:40:45 -0700</creation_ts>
          <short_desc>Simplify and fortify network getNetworkProcessConnection and getGPUProcessConnection</short_desc>
          <delta_ts>2020-04-07 17:04:16 -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>New Bugs</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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1638727</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-07 12:40:45 -0700</bug_when>
    <thetext>Simplify and fortify network getNetworkProcessConnection and getGPUProcessConnection</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638740</commentid>
    <comment_count>1</comment_count>
      <attachid>395726</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-07 12:50:03 -0700</bug_when>
    <thetext>Created attachment 395726
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638746</commentid>
    <comment_count>2</comment_count>
      <attachid>395726</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-04-07 12:58:15 -0700</bug_when>
    <thetext>Comment on attachment 395726
Patch

Test?

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

&gt; Source/WebKit/ChangeLog:20
&gt; +        I do the same changes to NetworkProcess and GPUProcess because they are intended to be the same.  The latter is based on the former.

If there is a lot of common code between the two, maybe we should refactor the code to share more between the two.

&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:745
&gt; +    m_networkProcess-&gt;getNetworkProcessConnection(webProcessProxy, [this, protectedThis = makeRef(*this), webProcessProxy = makeWeakPtr(webProcessProxy), reply = WTFMove(reply)] (auto&amp; connectionInfo) mutable {

weakThis instead of protectedThis might be better.

&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:749
&gt; +            m_networkProcess-&gt;getNetworkProcessConnection(*webProcessProxy, WTFMove(reply));

return to not have any else

&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:767
&gt; +    GPUProcessProxy::singleton().getGPUProcessConnection(webProcessProxy, [this, protectedThis = makeRef(*this), webProcessProxy = makeWeakPtr(webProcessProxy), reply = WTFMove(reply)] (auto&amp; connectionInfo) mutable {

Ditto.

&gt; Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp:186
&gt; +    sendWithAsyncReply(Messages::GPUProcess::CreateGPUConnectionToWebProcess { webProcessProxy.coreProcessIdentifier(), webProcessProxy.sessionID() }, [this, weakThis = makeWeakPtr(*this), reply = WTFMove(reply), activity = throttler().foregroundActivity(&quot;GPUProcessProxy::getGPUProcessConnection&quot;_s)](auto&amp;&amp; connectionIdentifier) mutable {

A background activity might be better here than a foreground activity, and in sync with release logging.

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:141
&gt; +    sendWithAsyncReply(Messages::NetworkProcess::CreateNetworkConnectionToWebProcess { webProcessProxy.coreProcessIdentifier(), webProcessProxy.sessionID() }, [this, weakThis = makeWeakPtr(*this), reply = WTFMove(reply), activity = throttler().backgroundActivity(&quot;NetworkProcessProxy::getNetworkProcessConnection&quot;_s)](auto&amp;&amp; connectionIdentifier, HTTPCookieAcceptPolicy cookieAcceptPolicy) mutable {

s/HTTPCookieAcceptPolicy/auto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638758</commentid>
    <comment_count>3</comment_count>
      <attachid>395728</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-07 13:14:47 -0700</bug_when>
    <thetext>Created attachment 395728
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638795</commentid>
    <comment_count>4</comment_count>
      <attachid>395736</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-07 14:14:31 -0700</bug_when>
    <thetext>Created attachment 395736
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638827</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-07 15:08:00 -0700</bug_when>
    <thetext>Committed r259673: &lt;https://trac.webkit.org/changeset/259673&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 395736.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638828</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-07 15:08:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/61412490&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395726</attachid>
            <date>2020-04-07 12:50:03 -0700</date>
            <delta_ts>2020-04-07 13:14:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210142-20200407125002.patch</filename>
            <type>text/plain</type>
            <size>20656</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTk2NTgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDIwLTA0LTA3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2ltcGxpZnkgYW5k
IGZvcnRpZnkgbmV0d29yayBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gYW5kIGdldEdQVVBy
b2Nlc3NDb25uZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTAxNDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5NDg4OTYzPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGhhdmUgcmVwb3J0
cyBvZiBoYW5ncyBpbnNpZGUgV2ViS2l0OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gdGhh
dCBzZWVtIHRvIGxhc3QgZm9yZXZlci4KKyAgICAgICAgU29tZSBvZiB0aGUgcmVwb3J0cyBpbmRp
Y2F0ZSB0aGUgbmV0d29yayBwcm9jZXNzIGlzIGJlaW5nIHN1c3BlbmRlZCB3aGlsZSBhIGNvbm5l
Y3Rpb24gaXMgYmVpbmcgZXN0YWJsaXNoZWQgd2l0aCBpdC4KKworICAgICAgICBUbyBmaXggdGhp
cyBpc3N1ZSB3ZSBkbyB0aHJlZSB0aGluZ3M6CisgICAgICAgIDEuIFdlIHRha2UgYSBmb3JlZ3Jv
dW5kQWN0aXZpdHkgd2hlbiBzZW5kaW5nIGFuIGFzeW5jIG1lc3NhZ2UgdG8gZXN0YWJsaXNoIGEg
Y29ubmVjdGlvbi4KKyAgICAgICAgMi4gV2UgdXNlIHNlbmRXaXRoQXN5bmNSZXBseSB3aGljaCBh
bHJlYWR5IGhhcyBsb2dpYyB0byBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgd2UgYXJlIGN1cnJlbnRs
eSBsYXVuY2hpbmcgdGhlIHByb2Nlc3MuCisgICAgICAgICAgIEluc3RlYWQgb2YgdGhlIGNvbXBs
aWNhdGVkIHJldHJ5IGxvZ2ljLCB3ZSBhZGQgYSByZXRyeSBhdHRlbXB0IGluIFdlYlByb2Nlc3NQ
b29sIGlmIHRoZSBjb25uZWN0aW9uIGlkZW50aWZpZXIgaXMgaW52YWxpZC4KKyAgICAgICAgMy4g
QWRkIHNvbWUgcmVsZWFzZSBsb2dnaW5nIHNvIHdlIGNhbiBiZXR0ZXIgZGlhZ25vc2UgcHJvYmxl
bXMgd2l0aCB0aGlzIGZsb3cgaW4gdGhlIGZ1dHVyZS4KKworICAgICAgICBUaGUgZnVuY3Rpb25h
bCBjaGFuZ2UgaXMgYWRkaW5nIHRoZSBmb3JlZ3JvdW5kIGFjdGl2aXR5LCB3aGljaCBzaG91bGQg
cHJldmVudCBzb21lIGhhbmdzLgorICAgICAgICBUaGUgcmVzdCBpcyBqdXN0IHRvIG1ha2UgdGhp
cyBjb2RlIG1vcmUgc2FuZSB0byB1bmRlcnN0YW5kIGFuZCBkZWJ1Zy4KKyAgICAgICAgSSBkbyB0
aGUgc2FtZSBjaGFuZ2VzIHRvIE5ldHdvcmtQcm9jZXNzIGFuZCBHUFVQcm9jZXNzIGJlY2F1c2Ug
dGhleSBhcmUgaW50ZW5kZWQgdG8gYmUgdGhlIHNhbWUuICBUaGUgbGF0dGVyIGlzIGJhc2VkIG9u
IHRoZSBmb3JtZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NQcm94eTo6Z2V0R1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5j
aGluZyk6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NQcm94eTo6fkdQVVByb2Nlc3NQcm94
eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NQcm94eTo6b3BlbkdQVVBy
b2Nlc3NDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp+TmV0d29y
a1Byb2Nlc3NQcm94eSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Omdl
dE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6Om9wZW5OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOiBEZWxldGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
R1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmg6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3ND
b25uZWN0aW9uSW5mbzo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkdQVVBy
b2Nlc3NDb25uZWN0aW9uSW5mbzo6aWRlbnRpZmllcik6IERlbGV0ZWQuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mbzo6aWRlbnRpZmllciBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm86OmlkZW50aWZp
ZXIpOiBEZWxldGVkLgorCiAyMDIwLTA0LTA3ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVu
ZXlAYXBwbGUuY29tPgogCiAgICAgICAgIFJldHVybiBhcHAtYm91bmQgc2Vzc2lvbnMgZm9yIGlu
c3RhbmNlcyB3aGVyZSBXS0FwcEJvdW5kRG9tYWlucyBpcwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMjU5NTc3KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSwxMSArMzksMTMgQEAKICNpbmNsdWRlICJBdXhpbGlhcnlQcm9jZXNzTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eU1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmgiCiAjaW5jbHVkZSAiR2Ft
ZXBhZERhdGEuaCIKICNpbmNsdWRlICJIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxl
ci5oIgogI2luY2x1ZGUgIkxlZ2FjeUdsb2JhbFNldHRpbmdzLmgiCiAjaW5jbHVkZSAiTG9nSW5p
dGlhbGl6YXRpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uSW5mby5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKQEAgLTcxMSw3ICs3MTMsNyBAQCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgcmV0dXJuICptX25ldHdvcmtQcm9j
ZXNzOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoTmV0
d29ya1Byb2Nlc3NQcm94eSYgbmV0d29ya1Byb2Nlc3NQcm94eSwgVmVjdG9yPHN0ZDo6cGFpcjxS
ZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+PiYmIHBlbmRpbmdSZXBsaWVzKQor
dm9pZCBXZWJQcm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKE5ldHdvcmtQcm9jZXNz
UHJveHkmIG5ldHdvcmtQcm9jZXNzUHJveHkpCiB7CiAgICAgQVNTRVJUKG1fbmV0d29ya1Byb2Nl
c3MpOwogICAgIEFTU0VSVCgmbmV0d29ya1Byb2Nlc3NQcm94eSA9PSBtX25ldHdvcmtQcm9jZXNz
LmdldCgpKTsKQEAgLTcyNywxMyArNzI5LDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6bmV0d29y
a1Byb2Nlc3NDcmFzaAogICAgIC8vIExlYXZlIHRoZSBwcm9jZXNzIHByb3h5IGFyb3VuZCBkdXJp
bmcgY2xpZW50IGNhbGwsIHNvIHRoYXQgdGhlIGNsaWVudCBjb3VsZCBxdWVyeSB0aGUgcHJvY2Vz
cyBpZGVudGlmaWVyLgogICAgIG1fbmV0d29ya1Byb2Nlc3MgPSBudWxscHRyOwogCi0gICAgLy8g
QXR0ZW1wdCB0byByZS1sYXVuY2guCi0gICAgaWYgKHBlbmRpbmdSZXBsaWVzLmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuOwotICAgIGF1dG8mIG5ld05ldHdvcmtQcm9jZXNzID0gZW5zdXJlTmV0
d29ya1Byb2Nlc3MoKTsKLSAgICBmb3IgKGF1dG8mIHJlcGx5IDogcGVuZGluZ1JlcGxpZXMpCi0g
ICAgICAgIG5ld05ldHdvcmtQcm9jZXNzLmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigqcmVw
bHkuZmlyc3QsIFdURk1vdmUocmVwbHkuc2Vjb25kKSk7Ci0KICAgICB0ZXJtaW5hdGVTZXJ2aWNl
V29ya2VycygpOwogfQogCkBAIC03NDcsOSArNzQyLDE0IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnNlcnZpY2VXb3JrZXJQcm9jZXMKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmdldE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94eSwgTWVzc2FnZXM6
OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVw
bHkmJiByZXBseSkKIHsKICAgICBlbnN1cmVOZXR3b3JrUHJvY2VzcygpOwotICAgIEFTU0VSVCht
X25ldHdvcmtQcm9jZXNzKTsKLQotICAgIG1fbmV0d29ya1Byb2Nlc3MtPmdldE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbih3ZWJQcm9jZXNzUHJveHksIFdURk1vdmUocmVwbHkpKTsKKyAgICBtX25l
dHdvcmtQcm9jZXNzLT5nZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24od2ViUHJvY2Vzc1Byb3h5
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB3ZWJQcm9jZXNzUHJveHkg
PSBtYWtlV2Vha1B0cih3ZWJQcm9jZXNzUHJveHkpLCByZXBseSA9IFdURk1vdmUocmVwbHkpXSAo
YXV0byYgY29ubmVjdGlvbkluZm8pIG11dGFibGUgeworICAgICAgICBpZiAoVU5MSUtFTFkoIUlQ
Qzo6Q29ubmVjdGlvbjo6aWRlbnRpZmllcklzVmFsaWQoY29ubmVjdGlvbkluZm8uaWRlbnRpZmll
cigpKSAmJiB3ZWJQcm9jZXNzUHJveHkpKSB7CisgICAgICAgICAgICBXRUJQUk9DRVNTUE9PTF9S
RUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAiZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOiBG
YWlsZWQgZmlyc3QgYXR0ZW1wdCwgcmV0cnlpbmciKTsKKyAgICAgICAgICAgIGVuc3VyZU5ldHdv
cmtQcm9jZXNzKCk7CisgICAgICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5nZXROZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24oKndlYlByb2Nlc3NQcm94eSwgV1RGTW92ZShyZXBseSkpOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIHJlcGx5KGNvbm5lY3Rpb25JbmZvKTsKKyAgICB9KTsKIH0K
IAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKQEAgLTc2NCw3ICs3NjQsMTMgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6Z3B1UHJvY2Vzc0NyYXNoZWQoUAogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpn
ZXRHUFVQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94eSwg
TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5
ZWRSZXBseSYmIHJlcGx5KQogewotICAgIEdQVVByb2Nlc3NQcm94eTo6c2luZ2xldG9uKCkuZ2V0
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24od2ViUHJvY2Vzc1Byb3h5LCBXVEZNb3ZlKHJlcGx5KSk7Cisg
ICAgR1BVUHJvY2Vzc1Byb3h5OjpzaW5nbGV0b24oKS5nZXRHUFVQcm9jZXNzQ29ubmVjdGlvbih3
ZWJQcm9jZXNzUHJveHksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHdl
YlByb2Nlc3NQcm94eSA9IG1ha2VXZWFrUHRyKHdlYlByb2Nlc3NQcm94eSksIHJlcGx5ID0gV1RG
TW92ZShyZXBseSldIChhdXRvJiBjb25uZWN0aW9uSW5mbykgbXV0YWJsZSB7CisgICAgICAgIGlm
IChVTkxJS0VMWSghSVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNWYWxpZChjb25uZWN0aW9u
SW5mby5pZGVudGlmaWVyKCkpICYmIHdlYlByb2Nlc3NQcm94eSkpIHsKKyAgICAgICAgICAgIFdF
QlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX0VSUk9SKFByb2Nlc3MsICJnZXRHUFVQcm9jZXNzQ29u
bmVjdGlvbjogRmFpbGVkIGZpcnN0IGF0dGVtcHQsIHJldHJ5aW5nIik7CisgICAgICAgICAgICBH
UFVQcm9jZXNzUHJveHk6OnNpbmdsZXRvbigpLmdldEdQVVByb2Nlc3NDb25uZWN0aW9uKCp3ZWJQ
cm9jZXNzUHJveHksIFdURk1vdmUocmVwbHkpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICByZXBseShjb25uZWN0aW9uSW5mbyk7CisgICAgfSk7CiB9CiAjZW5kaWYKIApJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCShyZXZpc2lvbiAyNTk1NzcpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zODksNyArMzg5LDcgQEAgcHVibGljOgogICAgIC8vIE5ldHdvcmsgUHJvY2VzcyBNYW5h
Z2VtZW50CiAgICAgTmV0d29ya1Byb2Nlc3NQcm94eSYgZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vi
c2l0ZURhdGFTdG9yZSogd2l0aFdlYnNpdGVEYXRhU3RvcmUgPSBudWxscHRyKTsKICAgICBOZXR3
b3JrUHJvY2Vzc1Byb3h5KiBuZXR3b3JrUHJvY2VzcygpIHsgcmV0dXJuIG1fbmV0d29ya1Byb2Nl
c3MuZ2V0KCk7IH0KLSAgICB2b2lkIG5ldHdvcmtQcm9jZXNzQ3Jhc2hlZChOZXR3b3JrUHJvY2Vz
c1Byb3h5JiwgVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiwgTWVzc2Fn
ZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uRGVsYXllZFJl
cGx5Pj4mJik7CisgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoTmV0d29ya1Byb2Nlc3NQ
cm94eSYpOwogCiAgICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vz
c1Byb3h5JiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uRGVsYXllZFJlcGx5JiYpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9H
UFUvR1BVUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjU5NTc3KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzMiwxMSArMTMyLDcgQEAgR1BVUHJvY2Vzc1Byb3h5OjpHUFVQcm9jZXNzUHJveHkoKQog
ICAgIGNvbm5lY3QoKTsKIH0KIAotR1BVUHJvY2Vzc1Byb3h5Ojp+R1BVUHJvY2Vzc1Byb3h5KCkK
LXsKLSAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBtX2Nvbm5lY3Rpb25SZXF1ZXN0cy52YWx1ZXMo
KSkKLSAgICAgICAgcmVxdWVzdC5yZXBseSh7IH0pOwotfQorR1BVUHJvY2Vzc1Byb3h5Ojp+R1BV
UHJvY2Vzc1Byb3h5KCkgPSBkZWZhdWx0OwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIHZv
aWQgR1BVUHJvY2Vzc1Byb3h5OjpzZXRVc2VNb2NrQ2FwdHVyZURldmljZXMoYm9vbCB2YWx1ZSkK
QEAgLTE3OCwxNiArMTc0LDcgQEAgdm9pZCBHUFVQcm9jZXNzUHJveHk6OnByb2Nlc3NXaWxsU2h1
dERvdwogCiB2b2lkIEdQVVByb2Nlc3NQcm94eTo6Z2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oV2Vi
UHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHksIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6
OkdldEdQVVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKLSAgICBt
X2Nvbm5lY3Rpb25SZXF1ZXN0cy5hZGQoKyttX2Nvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllciwg
Q29ubmVjdGlvblJlcXVlc3QgeyBtYWtlV2Vha1B0cih3ZWJQcm9jZXNzUHJveHkpLCBXVEZNb3Zl
KHJlcGx5KSB9KTsKLSAgICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6TGF1bmNoaW5nKQotICAgICAg
ICByZXR1cm47Ci0gICAgb3BlbkdQVVByb2Nlc3NDb25uZWN0aW9uKG1fY29ubmVjdGlvblJlcXVl
c3RJZGVudGlmaWVyLCB3ZWJQcm9jZXNzUHJveHkpOwotfQotCi12b2lkIEdQVVByb2Nlc3NQcm94
eTo6b3BlbkdQVVByb2Nlc3NDb25uZWN0aW9uKENvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllciBj
b25uZWN0aW9uUmVxdWVzdElkZW50aWZpZXIsIFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1By
b3h5KQotewogICAgIGFkZFNlc3Npb24od2ViUHJvY2Vzc1Byb3h5LndlYnNpdGVEYXRhU3RvcmUo
KSk7Ci0gICAgCiAjaWYgSEFWRShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCiAgICAgaWYg
KG1fY29udGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKQogICAgICAgICB3ZWJQcm9jZXNz
UHJveHkuZGlkQ3JlYXRlQ29udGV4dEluR1BVUHJvY2Vzc0ZvclZpc2liaWxpdHlQcm9wYWdhdGlv
bihtX2NvbnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdhdGlvbik7CkBAIC0xOTUsMjQgKzE4Miwx
NyBAQCB2b2lkIEdQVVByb2Nlc3NQcm94eTo6b3BlbkdQVVByb2Nlc3NDb25uCiAgICAgICAgIG1f
cHJvY2Vzc2VzUGVuZGluZ1Zpc2liaWxpdHlQcm9wYWdhdGlvbk5vdGlmaWNhdGlvbi5hcHBlbmQo
bWFrZVdlYWtQdHIod2ViUHJvY2Vzc1Byb3h5KSk7CiAjZW5kaWYKIAotICAgIHNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6R1BVUHJvY2Vzczo6Q3JlYXRlR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyB7IHdlYlByb2Nlc3NQcm94eS5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSwgd2ViUHJvY2Vz
c1Byb3h5LnNlc3Npb25JRCgpIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMp
LCB3ZWJQcm9jZXNzUHJveHkgPSBtYWtlV2Vha1B0cih3ZWJQcm9jZXNzUHJveHkpLCBjb25uZWN0
aW9uUmVxdWVzdElkZW50aWZpZXJdKGF1dG8mJiBjb25uZWN0aW9uSWRlbnRpZmllcikgbXV0YWJs
ZSB7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgaWYgKCFjb25uZWN0aW9uSWRlbnRpZmllcikgewotICAgICAgICAgICAgLy8gR1BVIHByb2Nl
c3MgcHJvYmFibHkgY3Jhc2hlZCwgdGhlIGNvbm5lY3Rpb24gcmVxdWVzdCBzaG91bGQgaGF2ZSBi
ZWVuIG1vdmVkLgotICAgICAgICAgICAgQVNTRVJUKG1fY29ubmVjdGlvblJlcXVlc3RzLmlzRW1w
dHkoKSk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3Bl
bnNpb24sICIlcCAtIEdQVVByb2Nlc3NQcm94eSBpcyB0YWtpbmcgYSBiYWNrZ3JvdW5kIGFzc2Vy
dGlvbiBiZWNhdXNlIGEgd2ViIHByb2Nlc3MgaXMgcmVxdWVzdGluZyBhIGNvbm5lY3Rpb24iLCB0
aGlzKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OkdQVVByb2Nlc3M6OkNyZWF0
ZUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgeyB3ZWJQcm9jZXNzUHJveHkuY29yZVByb2Nlc3NJ
ZGVudGlmaWVyKCksIHdlYlByb2Nlc3NQcm94eS5zZXNzaW9uSUQoKSB9LCBbdGhpcywgd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHJlcGx5ID0gV1RGTW92ZShyZXBseSksIGFjdGl2aXR5
ID0gdGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJHUFVQcm9jZXNzUHJveHk6OmdldEdQ
VVByb2Nlc3NDb25uZWN0aW9uIl9zKV0oYXV0byYmIGNvbm5lY3Rpb25JZGVudGlmaWVyKSBtdXRh
YmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykgeworICAgICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoUHJvY2VzcywgIkdQVVByb2Nlc3NQcm94eTo6Z2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb246
IEdQVVByb2Nlc3NQcm94eSBkZWFsbG9jYXRlZCBkdXJpbmcgY29ubmVjdGlvbiBlc3RhYmxpc2ht
ZW50Iik7CisgICAgICAgICAgICByZXR1cm4gcmVwbHkoeyB9KTsKICAgICAgICAgfQotCi0gICAg
ICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25SZXF1ZXN0cy5jb250YWlucyhjb25uZWN0aW9uUmVxdWVz
dElkZW50aWZpZXIpKTsKLSAgICAgICAgYXV0byByZXF1ZXN0ID0gbV9jb25uZWN0aW9uUmVxdWVz
dHMudGFrZShjb25uZWN0aW9uUmVxdWVzdElkZW50aWZpZXIpOwotCiAjaWYgVVNFKFVOSVhfRE9N
QUlOX1NPQ0tFVFMpIHx8IE9TKFdJTkRPV1MpCi0gICAgICAgIHJlcXVlc3QucmVwbHkoR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb25JbmZvIHsgV1RGTW92ZSgqY29ubmVjdGlvbklkZW50aWZpZXIpIH0pOwor
ICAgICAgICByZXBseShHUFVQcm9jZXNzQ29ubmVjdGlvbkluZm8geyBXVEZNb3ZlKCpjb25uZWN0
aW9uSWRlbnRpZmllcikgfSk7CiAjZWxpZiBPUyhEQVJXSU4pCiAgICAgICAgIE1FU1NBR0VfQ0hF
Q0soTUFDSF9QT1JUX1ZBTElEKGNvbm5lY3Rpb25JZGVudGlmaWVyLT5wb3J0KCkpKTsKLSAgICAg
ICAgcmVxdWVzdC5yZXBseShHUFVQcm9jZXNzQ29ubmVjdGlvbkluZm8geyBJUEM6OkF0dGFjaG1l
bnQgeyBjb25uZWN0aW9uSWRlbnRpZmllci0+cG9ydCgpLCBNQUNIX01TR19UWVBFX01PVkVfU0VO
RCB9LCB0aGlzLT5jb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKSB9KTsKKyAgICAgICAgcmVw
bHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvIHsgSVBDOjpBdHRhY2htZW50IHsgY29ubmVjdGlv
bklkZW50aWZpZXItPnBvcnQoKSwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQgfSwgdGhpcy0+Y29u
bmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCkgfSk7CiAjZWxzZQogICAgICAgICBub3RJbXBsZW1l
bnRlZCgpOwogI2VuZGlmCkBAIC0yNTMsMTQgKzIzMyw2IEBAIHZvaWQgR1BVUHJvY2Vzc1Byb3h5
OjpkaWRGaW5pc2hMYXVuY2hpbmcKICAgICAgICAgZ3B1UHJvY2Vzc0NyYXNoZWQoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLQotICAgIGF1dG8gY29ubmVjdGlvblJlcXVlc3RzID0gV1RGTW92
ZShtX2Nvbm5lY3Rpb25SZXF1ZXN0cyk7Ci0gICAgZm9yIChhdXRvJiBjb25uZWN0aW9uUmVxdWVz
dCA6IGNvbm5lY3Rpb25SZXF1ZXN0cy52YWx1ZXMoKSkgewotICAgICAgICBpZiAoY29ubmVjdGlv
blJlcXVlc3Qud2ViUHJvY2VzcykKLSAgICAgICAgICAgIGdldEdQVVByb2Nlc3NDb25uZWN0aW9u
KCpjb25uZWN0aW9uUmVxdWVzdC53ZWJQcm9jZXNzLCBXVEZNb3ZlKGNvbm5lY3Rpb25SZXF1ZXN0
LnJlcGx5KSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvbm5lY3Rpb25SZXF1ZXN0LnJl
cGx5KHsgfSk7Ci0gICAgfQogICAgIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYg
KHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiA9IHRoaXMtPmNvbm5lY3Rpb24oKS0+eHBjQ29u
bmVjdGlvbigpKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQ
cm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9j
ZXNzUHJveHkuaAkocmV2aXNpb24gMjU5NTc3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC05Niw5ICs5Niw2IEBAIHBy
aXZhdGU6CiAgICAgLy8gUHJvY2Vzc0xhdW5jaGVyOjpDbGllbnQKICAgICB2b2lkIGRpZEZpbmlz
aExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIp
IG92ZXJyaWRlOwogCi0gICAgdHlwZWRlZiB1aW50NjRfdCBDb25uZWN0aW9uUmVxdWVzdElkZW50
aWZpZXI7Ci0gICAgdm9pZCBvcGVuR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oQ29ubmVjdGlvblJlcXVl
c3RJZGVudGlmaWVyLCBXZWJQcm9jZXNzUHJveHkmKTsKLQogICAgIC8vIElQQzo6Q29ubmVjdGlv
bjo6Q2xpZW50CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlv
biYpIG92ZXJyaWRlOwpAQCAtMTEwLDEzICsxMDcsNiBAQCBwcml2YXRlOgogCiAgICAgc3RhdGlj
IEdQVVByb2Nlc3NQcm94eSogbV9zaW5nbGV0b247CiAKLSAgICBzdHJ1Y3QgQ29ubmVjdGlvblJl
cXVlc3QgewotICAgICAgICBXZWFrUHRyPFdlYlByb2Nlc3NQcm94eT4gd2ViUHJvY2VzczsKLSAg
ICAgICAgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb25E
ZWxheWVkUmVwbHkgcmVwbHk7Ci0gICAgfTsKLSAgICBDb25uZWN0aW9uUmVxdWVzdElkZW50aWZp
ZXIgbV9jb25uZWN0aW9uUmVxdWVzdElkZW50aWZpZXIgeyAwIH07Ci0gICAgSGFzaE1hcDxDb25u
ZWN0aW9uUmVxdWVzdElkZW50aWZpZXIsIENvbm5lY3Rpb25SZXF1ZXN0PiBtX2Nvbm5lY3Rpb25S
ZXF1ZXN0czsKLQogICAgIFByb2Nlc3NUaHJvdHRsZXIgbV90aHJvdHRsZXI7CiAgICAgUHJvY2Vz
c1Rocm90dGxlcjo6QWN0aXZpdHlWYXJpYW50IG1fYWN0aXZpdHlGcm9tV2ViUHJvY2Vzc2VzOwog
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDI1
OTU3NykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw5ICsxMDgsNiBAQCBOZXR3b3JrUHJvY2Vz
c1Byb3h5Ojp+TmV0d29ya1Byb2Nlc3NQcm94CiAKICAgICBpZiAobV9kb3dubG9hZFByb3h5TWFw
KQogICAgICAgICBtX2Rvd25sb2FkUHJveHlNYXAtPmludmFsaWRhdGUoKTsKLQotICAgIGZvciAo
YXV0byYgcmVxdWVzdCA6IG1fY29ubmVjdGlvblJlcXVlc3RzLnZhbHVlcygpKQotICAgICAgICBy
ZXF1ZXN0LnJlcGx5KHsgfSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0TGF1
bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlvbnMp
CkBAIC0xNDAsMzIgKzEzNywxOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnByb2Nlc3NX
aWxsU2h1CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5LCBNZXNzYWdlczo6V2ViUHJv
Y2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmIHJl
cGx5KQogewotICAgIG1fY29ubmVjdGlvblJlcXVlc3RzLmFkZCgrK21fY29ubmVjdGlvblJlcXVl
c3RJZGVudGlmaWVyLCBDb25uZWN0aW9uUmVxdWVzdCB7IG1ha2VXZWFrUHRyKHdlYlByb2Nlc3NQ
cm94eSksIFdURk1vdmUocmVwbHkpIH0pOwotICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpMYXVu
Y2hpbmcpCi0gICAgICAgIHJldHVybjsKLSAgICBvcGVuTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KG1fY29ubmVjdGlvblJlcXVlc3RJZGVudGlmaWVyLCB3ZWJQcm9jZXNzUHJveHkpOwotfQotCi12
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Om9wZW5OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24odWlu
dDY0X3QgY29ubmVjdGlvblJlcXVlc3RJZGVudGlmaWVyLCBXZWJQcm9jZXNzUHJveHkmIHdlYlBy
b2Nlc3NQcm94eSkKLXsKLSAgICBjb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3M6OkNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
IHsgd2ViUHJvY2Vzc1Byb3h5LmNvcmVQcm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQcm9jZXNzUHJv
eHkuc2Vzc2lvbklEKCkgfSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHdl
YlByb2Nlc3NQcm94eSA9IG1ha2VXZWFrUHRyKHdlYlByb2Nlc3NQcm94eSksIGNvbm5lY3Rpb25S
ZXF1ZXN0SWRlbnRpZmllcl0oYXV0byYmIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBIVFRQQ29va2ll
QWNjZXB0UG9saWN5IGNvb2tpZUFjY2VwdFBvbGljeSkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICgh
d2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKCFjb25uZWN0aW9u
SWRlbnRpZmllcikgewotICAgICAgICAgICAgLy8gTmV0d29yayBwcm9jZXNzIHByb2JhYmx5IGNy
YXNoZWQsIHRoZSBjb25uZWN0aW9uIHJlcXVlc3Qgc2hvdWxkIGhhdmUgYmVlbiBtb3ZlZC4KLSAg
ICAgICAgICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25SZXF1ZXN0cy5pc0VtcHR5KCkpOwotICAgICAg
ICAgICAgcmV0dXJuOworICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBO
ZXR3b3JrUHJvY2Vzc1Byb3h5IGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1
c2UgYSB3ZWIgcHJvY2VzcyBpcyByZXF1ZXN0aW5nIGEgY29ubmVjdGlvbiIsIHRoaXMpOworICAg
IHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNyZWF0ZU5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIHsgd2ViUHJvY2Vzc1Byb3h5LmNvcmVQcm9jZXNzSWRl
bnRpZmllcigpLCB3ZWJQcm9jZXNzUHJveHkuc2Vzc2lvbklEKCkgfSwgW3RoaXMsIHdlYWtUaGlz
ID0gbWFrZVdlYWtQdHIoKnRoaXMpLCByZXBseSA9IFdURk1vdmUocmVwbHkpLCBhY3Rpdml0eSA9
IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uIl9zKV0oYXV0byYmIGNvbm5lY3Rpb25JZGVudGlmaWVy
LCBIVFRQQ29va2llQWNjZXB0UG9saWN5IGNvb2tpZUFjY2VwdFBvbGljeSkgbXV0YWJsZSB7Cisg
ICAgICAgIGlmICghd2Vha1RoaXMpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFBy
b2Nlc3MsICJOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246
IE5ldHdvcmtQcm9jZXNzUHJveHkgZGVhbGxvY2F0ZWQgZHVyaW5nIGNvbm5lY3Rpb24gZXN0YWJs
aXNobWVudCIpOworICAgICAgICAgICAgcmV0dXJuIHJlcGx5KHsgfSk7CiAgICAgICAgIH0KIAot
ICAgICAgICBBU1NFUlQobV9jb25uZWN0aW9uUmVxdWVzdHMuY29udGFpbnMoY29ubmVjdGlvblJl
cXVlc3RJZGVudGlmaWVyKSk7Ci0gICAgICAgIGF1dG8gcmVxdWVzdCA9IG1fY29ubmVjdGlvblJl
cXVlc3RzLnRha2UoY29ubmVjdGlvblJlcXVlc3RJZGVudGlmaWVyKTsKLQogI2lmIFVTRShVTklY
X0RPTUFJTl9TT0NLRVRTKSB8fCBPUyhXSU5ET1dTKQotICAgICAgICByZXF1ZXN0LnJlcGx5KE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8geyBXVEZNb3ZlKCpjb25uZWN0aW9uSWRlbnRpZmll
ciksIGNvb2tpZUFjY2VwdFBvbGljeSB9KTsKKyAgICAgICAgcmVwbHkoTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uSW5mbyB7IFdURk1vdmUoKmNvbm5lY3Rpb25JZGVudGlmaWVyKSwgY29va2llQWNj
ZXB0UG9saWN5IH0pOwogI2VsaWYgT1MoREFSV0lOKQogICAgICAgICBNRVNTQUdFX0NIRUNLKE1B
Q0hfUE9SVF9WQUxJRChjb25uZWN0aW9uSWRlbnRpZmllci0+cG9ydCgpKSk7Ci0gICAgICAgIHJl
cXVlc3QucmVwbHkoTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mbyB7IElQQzo6QXR0YWNobWVu
dCB7IGNvbm5lY3Rpb25JZGVudGlmaWVyLT5wb3J0KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5E
IH0sIGNvb2tpZUFjY2VwdFBvbGljeSwgY29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCkgfSk7
CisgICAgICAgIHJlcGx5KE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8geyBJUEM6OkF0dGFj
aG1lbnQgeyBjb25uZWN0aW9uSWRlbnRpZmllci0+cG9ydCgpLCBNQUNIX01TR19UWVBFX01PVkVf
U0VORCB9LCBjb29raWVBY2NlcHRQb2xpY3ksIGNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigp
IH0pOwogI2Vsc2UKICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKICNlbmRpZgpAQCAtMjQ4LDE4
ICsyMzEsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Om5ldHdvcmtQcm9jZXNzCiB7CiAg
ICAgY2xlYXJDYWxsYmFja1N0YXRlcygpOwogCi0gICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8
V2ViUHJvY2Vzc1Byb3h5PiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+PiBwZW5kaW5nUmVxdWVzdHM7Ci0gICAgcGVu
ZGluZ1JlcXVlc3RzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9jb25uZWN0aW9uUmVxdWVzdHMu
c2l6ZSgpKTsKLSAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBtX2Nvbm5lY3Rpb25SZXF1ZXN0cy52
YWx1ZXMoKSkgewotICAgICAgICBpZiAocmVxdWVzdC53ZWJQcm9jZXNzKQotICAgICAgICAgICAg
cGVuZGluZ1JlcXVlc3RzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfcGFpcihtYWtlUmVmUHRy
KHJlcXVlc3Qud2ViUHJvY2Vzcy5nZXQoKSksIFdURk1vdmUocmVxdWVzdC5yZXBseSkpKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgcmVxdWVzdC5yZXBseSh7IH0pOwotICAgIH0KLSAgICBt
X2Nvbm5lY3Rpb25SZXF1ZXN0cy5jbGVhcigpOwotCiAgICAgLy8gVGVsbCB0aGUgbmV0d29yayBw
cm9jZXNzIG1hbmFnZXIgdG8gZm9yZ2V0IGFib3V0IHRoaXMgbmV0d29yayBwcm9jZXNzIHByb3h5
LiBUaGlzIHdpbGwgY2F1c2UgdXMgdG8gYmUgZGVsZXRlZC4KLSAgICBtX3Byb2Nlc3NQb29sLm5l
dHdvcmtQcm9jZXNzQ3Jhc2hlZCgqdGhpcywgV1RGTW92ZShwZW5kaW5nUmVxdWVzdHMpKTsKKyAg
ICBtX3Byb2Nlc3NQb29sLm5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCgqdGhpcyk7CiB9CiAKIHZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6Y2xlYXJDYWxsYmFja1N0YXRlcygpCkBAIC00MDksMTQgKzM4
Miw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmMKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gY29ubmVjdGlvblJlcXVlc3RzID0gV1RGTW92ZSht
X2Nvbm5lY3Rpb25SZXF1ZXN0cyk7Ci0gICAgZm9yIChhdXRvJiBjb25uZWN0aW9uUmVxdWVzdCA6
IGNvbm5lY3Rpb25SZXF1ZXN0cy52YWx1ZXMoKSkgewotICAgICAgICBpZiAoY29ubmVjdGlvblJl
cXVlc3Qud2ViUHJvY2VzcykKLSAgICAgICAgICAgIGdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bigqY29ubmVjdGlvblJlcXVlc3Qud2ViUHJvY2VzcywgV1RGTW92ZShjb25uZWN0aW9uUmVxdWVz
dC5yZXBseSkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb25uZWN0aW9uUmVxdWVzdC5y
ZXBseSh7IH0pOwotICAgIH0KLQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChtX3Byb2Nl
c3NQb29sLnByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoKSkKICAgICAgICAgc2V0UHJvY2Vzc1N1
cHByZXNzaW9uRW5hYmxlZCh0cnVlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAyNTk1Nzcp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aAkod29ya2luZyBjb3B5KQpAQCAtMjg2LDE5ICsyODYsMTAgQEAgcHJpdmF0ZToKICAgICAvLyBQ
cm9jZXNzTGF1bmNoZXI6OkNsaWVudAogICAgIHZvaWQgZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nl
c3NMYXVuY2hlciosIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcikgb3ZlcnJpZGU7CiAKLSAg
ICB2b2lkIG9wZW5OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24odWludDY0X3QgY29ubmVjdGlvblJl
cXVlc3RJZGVudGlmaWVyLCBXZWJQcm9jZXNzUHJveHkmKTsKLQogICAgIHZvaWQgcHJvY2Vzc0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBBTDo6U2Vzc2lvbklELCBSZWY8QXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eT4mJik7CiAKICAgICBXZWJQcm9jZXNzUG9vbCYgbV9wcm9jZXNzUG9vbDsK
IAotICAgIHN0cnVjdCBDb25uZWN0aW9uUmVxdWVzdCB7Ci0gICAgICAgIFdlYWtQdHI8V2ViUHJv
Y2Vzc1Byb3h5PiB3ZWJQcm9jZXNzOwotICAgICAgICBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5
OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25EZWxheWVkUmVwbHkgcmVwbHk7Ci0gICAgfTsK
LSAgICB1aW50NjRfdCBtX2Nvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllciB7IDAgfTsKLSAgICBI
YXNoTWFwPHVpbnQ2NF90LCBDb25uZWN0aW9uUmVxdWVzdD4gbV9jb25uZWN0aW9uUmVxdWVzdHM7
Ci0KICAgICBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYnNpdGVE
YXRhKT4+IG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFDYWxsYmFja3M7CiAgICAgSGFzaE1hcDx1
aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPj4gbV9wZW5kaW5nRGVsZXRlV2Vic2l0
ZURhdGFDYWxsYmFja3M7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPj4gbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zQ2FsbGJhY2tzOwpJ
bmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbklu
Zm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nl
c3NDb25uZWN0aW9uSW5mby5oCShyZXZpc2lvbiAyNTk1NzcpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uSW5mby5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSw3ICszNSw3IEBAIHN0cnVjdCBHUFVQcm9jZXNzQ29ubmVjdGlvbkluZm8gewogICAgIE9w
dGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW47CiAjZW5kaWYKIAotICAgIElQQzo6Q29u
bmVjdGlvbjo6SWRlbnRpZmllciBpZGVudGlmaWVyKCkKKyAgICBJUEM6OkNvbm5lY3Rpb246Oklk
ZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0CiAgICAgewogI2lmIFVTRShVTklYX0RPTUFJTl9T
T0NLRVRTKQogICAgICAgICByZXR1cm4gSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKGNvbm5l
Y3Rpb24uZmlsZURlc2NyaXB0b3IoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5m
by5oCShyZXZpc2lvbiAyNTk1NzcpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcg
KzM2LDcgQEAgc3RydWN0IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8gewogICAgIE9wdGlv
bmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW47CiAjZW5kaWYKIAotICAgIElQQzo6Q29ubmVj
dGlvbjo6SWRlbnRpZmllciBpZGVudGlmaWVyKCkKKyAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50
aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0CiAgICAgewogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NL
RVRTKQogICAgICAgICByZXR1cm4gSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKGNvbm5lY3Rp
b24uZmlsZURlc2NyaXB0b3IoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395728</attachid>
            <date>2020-04-07 13:14:47 -0700</date>
            <delta_ts>2020-04-07 14:14:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210142-20200407131446.patch</filename>
            <type>text/plain</type>
            <size>20966</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTk2NTgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDIwLTA0LTA3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2ltcGxpZnkgYW5k
IGZvcnRpZnkgbmV0d29yayBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gYW5kIGdldEdQVVBy
b2Nlc3NDb25uZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTAxNDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5NDg4OTYzPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgV2UgaGF2ZSByZXBvcnRz
IG9mIGhhbmdzIGluc2lkZSBXZWJLaXQ6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiB0aGF0
IHNlZW0gdG8gbGFzdCBmb3JldmVyLgorICAgICAgICBTb21lIG9mIHRoZSByZXBvcnRzIGluZGlj
YXRlIHRoZSBuZXR3b3JrIHByb2Nlc3MgaXMgYmVpbmcgc3VzcGVuZGVkIHdoaWxlIGEgY29ubmVj
dGlvbiBpcyBiZWluZyBlc3RhYmxpc2hlZCB3aXRoIGl0LgorCisgICAgICAgIFRvIGZpeCB0aGlz
IGlzc3VlIHdlIGRvIHRocmVlIHRoaW5nczoKKyAgICAgICAgMS4gV2UgdGFrZSBhIGZvcmVncm91
bmRBY3Rpdml0eSB3aGVuIHNlbmRpbmcgYW4gYXN5bmMgbWVzc2FnZSB0byBlc3RhYmxpc2ggYSBj
b25uZWN0aW9uLgorICAgICAgICAyLiBXZSB1c2Ugc2VuZFdpdGhBc3luY1JlcGx5IHdoaWNoIGFs
cmVhZHkgaGFzIGxvZ2ljIHRvIGhhbmRsZSB0aGUgY2FzZSB3aGVyZSB3ZSBhcmUgY3VycmVudGx5
IGxhdW5jaGluZyB0aGUgcHJvY2Vzcy4KKyAgICAgICAgICAgSW5zdGVhZCBvZiB0aGUgY29tcGxp
Y2F0ZWQgcmV0cnkgbG9naWMsIHdlIGFkZCBhIHJldHJ5IGF0dGVtcHQgaW4gV2ViUHJvY2Vzc1Bv
b2wgaWYgdGhlIGNvbm5lY3Rpb24gaWRlbnRpZmllciBpcyBpbnZhbGlkLgorICAgICAgICAzLiBB
ZGQgc29tZSByZWxlYXNlIGxvZ2dpbmcgc28gd2UgY2FuIGJldHRlciBkaWFnbm9zZSBwcm9ibGVt
cyB3aXRoIHRoaXMgZmxvdyBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgIFRoZSBmdW5jdGlvbmFs
IGNoYW5nZSBpcyBhZGRpbmcgdGhlIGZvcmVncm91bmQgYWN0aXZpdHksIHdoaWNoIHNob3VsZCBw
cmV2ZW50IHNvbWUgaGFuZ3MuCisgICAgICAgIFRoZSByZXN0IGlzIGp1c3QgdG8gbWFrZSB0aGlz
IGNvZGUgbW9yZSBzYW5lIHRvIHVuZGVyc3RhbmQgYW5kIGRlYnVnLgorICAgICAgICBJIGRvIHRo
ZSBzYW1lIGNoYW5nZXMgdG8gTmV0d29ya1Byb2Nlc3MgYW5kIEdQVVByb2Nlc3MgYmVjYXVzZSB0
aGV5IGFyZSBpbnRlbmRlZCB0byBiZSB0aGUgc2FtZS4gIFRoZSBsYXR0ZXIgaXMgYmFzZWQgb24g
dGhlIGZvcm1lci4KKworICAgICAgICBUaGUgQVBJIHRlc3QgV2ViS2l0Lk5ldHdvcmtQcm9jZXNz
Q3Jhc2hXaXRoUGVuZGluZ0Nvbm5lY3Rpb24gY292ZXJzIHdoYXQgaGFwcGVucyB3aGVuIHRoZSBu
ZXR3b3JrIHByb2Nlc3MgY3Jhc2hlcyBkdXJpbmcgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50Lgor
ICAgICAgICBJdCBmYWlscyBpZiB3ZSBkb24ndCByZXRyeSBzb21ld2hlcmUsIHdoaWNoIEkgZGlk
IGluIFdlYlByb2Nlc3NQb29sLiAgSWYgaXQgZmFpbHMgdHdpY2UsIHRoZXJlJ3Mgbm90aGluZyB3
ZSBjYW4gZG8uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NQcm94eTo6Z2V0R1BVUHJvY2Vzc0Nvbm5lY3Rp
b24pOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NQcm94eTo6fkdQVVByb2Nlc3NQcm94eSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NQcm94eTo6b3BlbkdQVVByb2Nl
c3NDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvR1BVL0dQVVByb2Nl
c3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp+TmV0d29ya1By
b2Nlc3NQcm94eSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmdldE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6Om9wZW5OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOiBEZWxldGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BV
UHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmg6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25u
ZWN0aW9uSW5mbzo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nl
c3NDb25uZWN0aW9uSW5mbzo6aWRlbnRpZmllcik6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mbzo6aWRlbnRpZmllciBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm86OmlkZW50aWZpZXIp
OiBEZWxldGVkLgorCiAyMDIwLTA0LTA3ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldHVybiBhcHAtYm91bmQgc2Vzc2lvbnMgZm9yIGluc3Rh
bmNlcyB3aGVyZSBXS0FwcEJvdW5kRG9tYWlucyBpcwpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMjU5NTc3KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwx
MSArMzksMTMgQEAKICNpbmNsdWRlICJBdXhpbGlhcnlQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eU1lc3NhZ2VzLmgi
CisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmgiCiAjaW5jbHVkZSAiR2FtZXBh
ZERhdGEuaCIKICNpbmNsdWRlICJIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5o
IgogI2luY2x1ZGUgIkxlZ2FjeUdsb2JhbFNldHRpbmdzLmgiCiAjaW5jbHVkZSAiTG9nSW5pdGlh
bGl6YXRpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uSW5mby5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtQcm9jZXNzUHJveHkuaCIKQEAgLTcxMSw3ICs3MTMsNyBAQCBOZXR3b3JrUHJvY2Vz
c1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgcmV0dXJuICptX25ldHdvcmtQcm9jZXNz
OwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoTmV0d29y
a1Byb2Nlc3NQcm94eSYgbmV0d29ya1Byb2Nlc3NQcm94eSwgVmVjdG9yPHN0ZDo6cGFpcjxSZWZQ
dHI8V2ViUHJvY2Vzc1Byb3h5PiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+PiYmIHBlbmRpbmdSZXBsaWVzKQordm9p
ZCBXZWJQcm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKE5ldHdvcmtQcm9jZXNzUHJv
eHkmIG5ldHdvcmtQcm9jZXNzUHJveHkpCiB7CiAgICAgQVNTRVJUKG1fbmV0d29ya1Byb2Nlc3Mp
OwogICAgIEFTU0VSVCgmbmV0d29ya1Byb2Nlc3NQcm94eSA9PSBtX25ldHdvcmtQcm9jZXNzLmdl
dCgpKTsKQEAgLTcyNywxMyArNzI5LDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6bmV0d29ya1By
b2Nlc3NDcmFzaAogICAgIC8vIExlYXZlIHRoZSBwcm9jZXNzIHByb3h5IGFyb3VuZCBkdXJpbmcg
Y2xpZW50IGNhbGwsIHNvIHRoYXQgdGhlIGNsaWVudCBjb3VsZCBxdWVyeSB0aGUgcHJvY2VzcyBp
ZGVudGlmaWVyLgogICAgIG1fbmV0d29ya1Byb2Nlc3MgPSBudWxscHRyOwogCi0gICAgLy8gQXR0
ZW1wdCB0byByZS1sYXVuY2guCi0gICAgaWYgKHBlbmRpbmdSZXBsaWVzLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIGF1dG8mIG5ld05ldHdvcmtQcm9jZXNzID0gZW5zdXJlTmV0d29y
a1Byb2Nlc3MoKTsKLSAgICBmb3IgKGF1dG8mIHJlcGx5IDogcGVuZGluZ1JlcGxpZXMpCi0gICAg
ICAgIG5ld05ldHdvcmtQcm9jZXNzLmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigqcmVwbHku
Zmlyc3QsIFdURk1vdmUocmVwbHkuc2Vjb25kKSk7Ci0KICAgICB0ZXJtaW5hdGVTZXJ2aWNlV29y
a2VycygpOwogfQogCkBAIC03NDcsOSArNzQyLDE1IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNl
cnZpY2VXb3JrZXJQcm9jZXMKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmdldE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94eSwgTWVzc2FnZXM6Oldl
YlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkm
JiByZXBseSkKIHsKICAgICBlbnN1cmVOZXR3b3JrUHJvY2VzcygpOwotICAgIEFTU0VSVChtX25l
dHdvcmtQcm9jZXNzKTsKLQotICAgIG1fbmV0d29ya1Byb2Nlc3MtPmdldE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbih3ZWJQcm9jZXNzUHJveHksIFdURk1vdmUocmVwbHkpKTsKKyAgICBtX25ldHdv
cmtQcm9jZXNzLT5nZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24od2ViUHJvY2Vzc1Byb3h5LCBb
dGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHdlYlByb2Nlc3NQcm94eSA9IG1h
a2VXZWFrUHRyKHdlYlByb2Nlc3NQcm94eSksIHJlcGx5ID0gV1RGTW92ZShyZXBseSldIChhdXRv
JiBjb25uZWN0aW9uSW5mbykgbXV0YWJsZSB7CisgICAgICAgIGlmIChVTkxJS0VMWSghSVBDOjpD
b25uZWN0aW9uOjppZGVudGlmaWVySXNWYWxpZChjb25uZWN0aW9uSW5mby5pZGVudGlmaWVyKCkp
ICYmIHdlYlByb2Nlc3NQcm94eSAmJiB3ZWFrVGhpcykpIHsKKyAgICAgICAgICAgIFdFQlBST0NF
U1NQT09MX1JFTEVBU0VfTE9HX0VSUk9SKFByb2Nlc3MsICJnZXROZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb246IEZhaWxlZCBmaXJzdCBhdHRlbXB0LCByZXRyeWluZyIpOworICAgICAgICAgICAgZW5z
dXJlTmV0d29ya1Byb2Nlc3MoKTsKKyAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmdldE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigqd2ViUHJvY2Vzc1Byb3h5LCBXVEZNb3ZlKHJlcGx5KSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcmVwbHkoY29ubmVjdGlv
bkluZm8pOworICAgIH0pOwogfQogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQpAQCAtNzY0LDcg
Kzc2NSwxNCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpncHVQcm9jZXNzQ3Jhc2hlZChQCiAKIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OmdldEdQVVByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94
eSYgd2ViUHJvY2Vzc1Byb3h5LCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRHUFVQcm9j
ZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7Ci0gICAgR1BVUHJvY2Vzc1By
b3h5OjpzaW5nbGV0b24oKS5nZXRHUFVQcm9jZXNzQ29ubmVjdGlvbih3ZWJQcm9jZXNzUHJveHks
IFdURk1vdmUocmVwbHkpKTsKKyAgICBHUFVQcm9jZXNzUHJveHk6OnNpbmdsZXRvbigpLmdldEdQ
VVByb2Nlc3NDb25uZWN0aW9uKHdlYlByb2Nlc3NQcm94eSwgW3RoaXMsIHdlYWtUaGlzID0gbWFr
ZVdlYWtQdHIoKnRoaXMpLCB3ZWJQcm9jZXNzUHJveHkgPSBtYWtlV2Vha1B0cih3ZWJQcm9jZXNz
UHJveHkpLCByZXBseSA9IFdURk1vdmUocmVwbHkpXSAoYXV0byYgY29ubmVjdGlvbkluZm8pIG11
dGFibGUgeworICAgICAgICBpZiAoVU5MSUtFTFkoIUlQQzo6Q29ubmVjdGlvbjo6aWRlbnRpZmll
cklzVmFsaWQoY29ubmVjdGlvbkluZm8uaWRlbnRpZmllcigpKSAmJiB3ZWJQcm9jZXNzUHJveHkg
JiYgd2Vha1RoaXMpKSB7CisgICAgICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19F
UlJPUihQcm9jZXNzLCAiZ2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb246IEZhaWxlZCBmaXJzdCBhdHRl
bXB0LCByZXRyeWluZyIpOworICAgICAgICAgICAgR1BVUHJvY2Vzc1Byb3h5OjpzaW5nbGV0b24o
KS5nZXRHUFVQcm9jZXNzQ29ubmVjdGlvbigqd2ViUHJvY2Vzc1Byb3h5LCBXVEZNb3ZlKHJlcGx5
KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcmVwbHkoY29ubmVj
dGlvbkluZm8pOworICAgIH0pOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAkocmV2aXNpb24gMjU5NTc3KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtMzg5LDcgKzM4
OSw3IEBAIHB1YmxpYzoKICAgICAvLyBOZXR3b3JrIFByb2Nlc3MgTWFuYWdlbWVudAogICAgIE5l
dHdvcmtQcm9jZXNzUHJveHkmIGVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUq
IHdpdGhXZWJzaXRlRGF0YVN0b3JlID0gbnVsbHB0cik7CiAgICAgTmV0d29ya1Byb2Nlc3NQcm94
eSogbmV0d29ya1Byb2Nlc3MoKSB7IHJldHVybiBtX25ldHdvcmtQcm9jZXNzLmdldCgpOyB9Ci0g
ICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoTmV0d29ya1Byb2Nlc3NQcm94eSYsIFZlY3Rv
cjxzdGQ6OnBhaXI8UmVmUHRyPFdlYlByb2Nlc3NQcm94eT4sIE1lc3NhZ2VzOjpXZWJQcm9jZXNz
UHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBseT4+JiYpOworICAg
IHZvaWQgbmV0d29ya1Byb2Nlc3NDcmFzaGVkKE5ldHdvcmtQcm9jZXNzUHJveHkmKTsKIAogICAg
IHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRS
ZXBseSYmKTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQ
cm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDI1OTU3NykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsMTEgKzEz
Miw3IEBAIEdQVVByb2Nlc3NQcm94eTo6R1BVUHJvY2Vzc1Byb3h5KCkKICAgICBjb25uZWN0KCk7
CiB9CiAKLUdQVVByb2Nlc3NQcm94eTo6fkdQVVByb2Nlc3NQcm94eSgpCi17Ci0gICAgZm9yIChh
dXRvJiByZXF1ZXN0IDogbV9jb25uZWN0aW9uUmVxdWVzdHMudmFsdWVzKCkpCi0gICAgICAgIHJl
cXVlc3QucmVwbHkoeyB9KTsKLX0KK0dQVVByb2Nlc3NQcm94eTo6fkdQVVByb2Nlc3NQcm94eSgp
ID0gZGVmYXVsdDsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiB2b2lkIEdQVVByb2Nlc3NQ
cm94eTo6c2V0VXNlTW9ja0NhcHR1cmVEZXZpY2VzKGJvb2wgdmFsdWUpCkBAIC0xNzgsMTYgKzE3
NCw3IEBAIHZvaWQgR1BVUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2lsbFNodXREb3cKIAogdm9pZCBH
UFVQcm9jZXNzUHJveHk6OmdldEdQVVByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYg
d2ViUHJvY2Vzc1Byb3h5LCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRHUFVQcm9jZXNz
Q29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7Ci0gICAgbV9jb25uZWN0aW9uUmVx
dWVzdHMuYWRkKCsrbV9jb25uZWN0aW9uUmVxdWVzdElkZW50aWZpZXIsIENvbm5lY3Rpb25SZXF1
ZXN0IHsgbWFrZVdlYWtQdHIod2ViUHJvY2Vzc1Byb3h5KSwgV1RGTW92ZShyZXBseSkgfSk7Ci0g
ICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6OkxhdW5jaGluZykKLSAgICAgICAgcmV0dXJuOwotICAg
IG9wZW5HUFVQcm9jZXNzQ29ubmVjdGlvbihtX2Nvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllciwg
d2ViUHJvY2Vzc1Byb3h5KTsKLX0KLQotdm9pZCBHUFVQcm9jZXNzUHJveHk6Om9wZW5HUFVQcm9j
ZXNzQ29ubmVjdGlvbihDb25uZWN0aW9uUmVxdWVzdElkZW50aWZpZXIgY29ubmVjdGlvblJlcXVl
c3RJZGVudGlmaWVyLCBXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94eSkKLXsKICAgICBh
ZGRTZXNzaW9uKHdlYlByb2Nlc3NQcm94eS53ZWJzaXRlRGF0YVN0b3JlKCkpOwotICAgIAogI2lm
IEhBVkUoVklTSUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQogICAgIGlmIChtX2NvbnRleHRJREZv
clZpc2liaWxpdHlQcm9wYWdhdGlvbikKICAgICAgICAgd2ViUHJvY2Vzc1Byb3h5LmRpZENyZWF0
ZUNvbnRleHRJbkdQVVByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24obV9jb250ZXh0SURG
b3JWaXNpYmlsaXR5UHJvcGFnYXRpb24pOwpAQCAtMTk1LDI0ICsxODIsMTcgQEAgdm9pZCBHUFVQ
cm9jZXNzUHJveHk6Om9wZW5HUFVQcm9jZXNzQ29ubgogICAgICAgICBtX3Byb2Nlc3Nlc1BlbmRp
bmdWaXNpYmlsaXR5UHJvcGFnYXRpb25Ob3RpZmljYXRpb24uYXBwZW5kKG1ha2VXZWFrUHRyKHdl
YlByb2Nlc3NQcm94eSkpOwogI2VuZGlmCiAKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OkdQVVByb2Nlc3M6OkNyZWF0ZUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgeyB3ZWJQcm9j
ZXNzUHJveHkuY29yZVByb2Nlc3NJZGVudGlmaWVyKCksIHdlYlByb2Nlc3NQcm94eS5zZXNzaW9u
SUQoKSB9LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgd2ViUHJvY2Vzc1By
b3h5ID0gbWFrZVdlYWtQdHIod2ViUHJvY2Vzc1Byb3h5KSwgY29ubmVjdGlvblJlcXVlc3RJZGVu
dGlmaWVyXShhdXRvJiYgY29ubmVjdGlvbklkZW50aWZpZXIpIG11dGFibGUgewotICAgICAgICBp
ZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICghY29ubmVj
dGlvbklkZW50aWZpZXIpIHsKLSAgICAgICAgICAgIC8vIEdQVSBwcm9jZXNzIHByb2JhYmx5IGNy
YXNoZWQsIHRoZSBjb25uZWN0aW9uIHJlcXVlc3Qgc2hvdWxkIGhhdmUgYmVlbiBtb3ZlZC4KLSAg
ICAgICAgICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25SZXF1ZXN0cy5pc0VtcHR5KCkpOwotICAgICAg
ICAgICAgcmV0dXJuOworICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBH
UFVQcm9jZXNzUHJveHkgaXMgdGFraW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBh
IHdlYiBwcm9jZXNzIGlzIHJlcXVlc3RpbmcgYSBjb25uZWN0aW9uIiwgdGhpcyk7CisgICAgc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpHUFVQcm9jZXNzOjpDcmVhdGVHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzIHsgd2ViUHJvY2Vzc1Byb3h5LmNvcmVQcm9jZXNzSWRlbnRpZmllcigpLCB3
ZWJQcm9jZXNzUHJveHkuc2Vzc2lvbklEKCkgfSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQ
dHIoKnRoaXMpLCByZXBseSA9IFdURk1vdmUocmVwbHkpLCBhY3Rpdml0eSA9IHRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eSgiR1BVUHJvY2Vzc1Byb3h5OjpnZXRHUFVQcm9jZXNzQ29ubmVj
dGlvbiJfcyldKGF1dG8mJiBjb25uZWN0aW9uSWRlbnRpZmllcikgbXV0YWJsZSB7CisgICAgICAg
IGlmICghd2Vha1RoaXMpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByb2Nlc3Ms
ICJHUFVQcm9jZXNzUHJveHk6OmdldEdQVVByb2Nlc3NDb25uZWN0aW9uOiBHUFVQcm9jZXNzUHJv
eHkgZGVhbGxvY2F0ZWQgZHVyaW5nIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCIpOworICAgICAg
ICAgICAgcmV0dXJuIHJlcGx5KHsgfSk7CiAgICAgICAgIH0KLQotICAgICAgICBBU1NFUlQobV9j
b25uZWN0aW9uUmVxdWVzdHMuY29udGFpbnMoY29ubmVjdGlvblJlcXVlc3RJZGVudGlmaWVyKSk7
Ci0gICAgICAgIGF1dG8gcmVxdWVzdCA9IG1fY29ubmVjdGlvblJlcXVlc3RzLnRha2UoY29ubmVj
dGlvblJlcXVlc3RJZGVudGlmaWVyKTsKLQogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKSB8
fCBPUyhXSU5ET1dTKQotICAgICAgICByZXF1ZXN0LnJlcGx5KEdQVVByb2Nlc3NDb25uZWN0aW9u
SW5mbyB7IFdURk1vdmUoKmNvbm5lY3Rpb25JZGVudGlmaWVyKSB9KTsKKyAgICAgICAgcmVwbHko
R1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvIHsgV1RGTW92ZSgqY29ubmVjdGlvbklkZW50aWZpZXIp
IH0pOwogI2VsaWYgT1MoREFSV0lOKQogICAgICAgICBNRVNTQUdFX0NIRUNLKE1BQ0hfUE9SVF9W
QUxJRChjb25uZWN0aW9uSWRlbnRpZmllci0+cG9ydCgpKSk7Ci0gICAgICAgIHJlcXVlc3QucmVw
bHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvIHsgSVBDOjpBdHRhY2htZW50IHsgY29ubmVjdGlv
bklkZW50aWZpZXItPnBvcnQoKSwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQgfSwgdGhpcy0+Y29u
bmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCkgfSk7CisgICAgICAgIHJlcGx5KEdQVVByb2Nlc3ND
b25uZWN0aW9uSW5mbyB7IElQQzo6QXR0YWNobWVudCB7IGNvbm5lY3Rpb25JZGVudGlmaWVyLT5w
b3J0KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EIH0sIHRoaXMtPmNvbm5lY3Rpb24oKS0+Z2V0
QXVkaXRUb2tlbigpIH0pOwogI2Vsc2UKICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKICNlbmRp
ZgpAQCAtMjUzLDE0ICsyMzMsNiBAQCB2b2lkIEdQVVByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1
bmNoaW5nCiAgICAgICAgIGdwdVByb2Nlc3NDcmFzaGVkKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0KLSAgICBhdXRvIGNvbm5lY3Rpb25SZXF1ZXN0cyA9IFdURk1vdmUobV9jb25uZWN0aW9u
UmVxdWVzdHMpOwotICAgIGZvciAoYXV0byYgY29ubmVjdGlvblJlcXVlc3QgOiBjb25uZWN0aW9u
UmVxdWVzdHMudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKGNvbm5lY3Rpb25SZXF1ZXN0LndlYlBy
b2Nlc3MpCi0gICAgICAgICAgICBnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbigqY29ubmVjdGlvblJl
cXVlc3Qud2ViUHJvY2VzcywgV1RGTW92ZShjb25uZWN0aW9uUmVxdWVzdC5yZXBseSkpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBjb25uZWN0aW9uUmVxdWVzdC5yZXBseSh7IH0pOwotICAg
IH0KICAgICAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICh4cGNfY29ubmVjdGlv
bl90IGNvbm5lY3Rpb24gPSB0aGlzLT5jb25uZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24oKSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmgJKHJl
dmlzaW9uIDI1OTU3NykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNz
UHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtOTYsOSArOTYsNiBAQCBwcml2YXRlOgogICAgIC8v
IFByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50CiAgICAgdm9pZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJv
Y2Vzc0xhdW5jaGVyKiwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKSBvdmVycmlkZTsKIAot
ICAgIHR5cGVkZWYgdWludDY0X3QgQ29ubmVjdGlvblJlcXVlc3RJZGVudGlmaWVyOwotICAgIHZv
aWQgb3BlbkdQVVByb2Nlc3NDb25uZWN0aW9uKENvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllciwg
V2ViUHJvY2Vzc1Byb3h5Jik7Ci0KICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsK
QEAgLTExMCwxMyArMTA3LDYgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyBHUFVQcm9jZXNzUHJv
eHkqIG1fc2luZ2xldG9uOwogCi0gICAgc3RydWN0IENvbm5lY3Rpb25SZXF1ZXN0IHsKLSAgICAg
ICAgV2Vha1B0cjxXZWJQcm9jZXNzUHJveHk+IHdlYlByb2Nlc3M7Ci0gICAgICAgIE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OkdldEdQVVByb2Nlc3NDb25uZWN0aW9uRGVsYXllZFJlcGx5IHJl
cGx5OwotICAgIH07Ci0gICAgQ29ubmVjdGlvblJlcXVlc3RJZGVudGlmaWVyIG1fY29ubmVjdGlv
blJlcXVlc3RJZGVudGlmaWVyIHsgMCB9OwotICAgIEhhc2hNYXA8Q29ubmVjdGlvblJlcXVlc3RJ
ZGVudGlmaWVyLCBDb25uZWN0aW9uUmVxdWVzdD4gbV9jb25uZWN0aW9uUmVxdWVzdHM7Ci0KICAg
ICBQcm9jZXNzVGhyb3R0bGVyIG1fdGhyb3R0bGVyOwogICAgIFByb2Nlc3NUaHJvdHRsZXI6OkFj
dGl2aXR5VmFyaWFudCBtX2FjdGl2aXR5RnJvbVdlYlByb2Nlc3NlczsKICNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyNTk1NzcpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDgsOSArMTA4LDYgQEAgTmV0d29ya1Byb2Nlc3NQcm94eTo6fk5ldHdv
cmtQcm9jZXNzUHJveAogCiAgICAgaWYgKG1fZG93bmxvYWRQcm94eU1hcCkKICAgICAgICAgbV9k
b3dubG9hZFByb3h5TWFwLT5pbnZhbGlkYXRlKCk7Ci0KLSAgICBmb3IgKGF1dG8mIHJlcXVlc3Qg
OiBtX2Nvbm5lY3Rpb25SZXF1ZXN0cy52YWx1ZXMoKSkKLSAgICAgICAgcmVxdWVzdC5yZXBseSh7
IH0pOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdldExhdW5jaE9wdGlvbnMoUHJv
Y2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBsYXVuY2hPcHRpb25zKQpAQCAtMTQwLDMyICsx
MzcsMTggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2lsbFNodQogCiB2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9j
ZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94eSwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKLSAgICBt
X2Nvbm5lY3Rpb25SZXF1ZXN0cy5hZGQoKyttX2Nvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllciwg
Q29ubmVjdGlvblJlcXVlc3QgeyBtYWtlV2Vha1B0cih3ZWJQcm9jZXNzUHJveHkpLCBXVEZNb3Zl
KHJlcGx5KSB9KTsKLSAgICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6TGF1bmNoaW5nKQotICAgICAg
ICByZXR1cm47Ci0gICAgb3Blbk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihtX2Nvbm5lY3Rpb25S
ZXF1ZXN0SWRlbnRpZmllciwgd2ViUHJvY2Vzc1Byb3h5KTsKLX0KLQotdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpvcGVuTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90IGNvbm5lY3Rp
b25SZXF1ZXN0SWRlbnRpZmllciwgV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHkpCi17
Ci0gICAgY29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzOjpDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyB7IHdlYlByb2Nlc3NQ
cm94eS5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSwgd2ViUHJvY2Vzc1Byb3h5LnNlc3Npb25JRCgp
IH0sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB3ZWJQcm9jZXNzUHJveHkg
PSBtYWtlV2Vha1B0cih3ZWJQcm9jZXNzUHJveHkpLCBjb25uZWN0aW9uUmVxdWVzdElkZW50aWZp
ZXJdKGF1dG8mJiBjb25uZWN0aW9uSWRlbnRpZmllciwgSFRUUENvb2tpZUFjY2VwdFBvbGljeSBj
b29raWVBY2NlcHRQb2xpY3kpIG11dGFibGUgewotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICghY29ubmVjdGlvbklkZW50aWZpZXIpIHsK
LSAgICAgICAgICAgIC8vIE5ldHdvcmsgcHJvY2VzcyBwcm9iYWJseSBjcmFzaGVkLCB0aGUgY29u
bmVjdGlvbiByZXF1ZXN0IHNob3VsZCBoYXZlIGJlZW4gbW92ZWQuCi0gICAgICAgICAgICBBU1NF
UlQobV9jb25uZWN0aW9uUmVxdWVzdHMuaXNFbXB0eSgpKTsKLSAgICAgICAgICAgIHJldHVybjsK
KyAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nlc3NQ
cm94eSBpcyB0YWtpbmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIGEgd2ViIHByb2Nl
c3MgaXMgcmVxdWVzdGluZyBhIGNvbm5lY3Rpb24iLCB0aGlzKTsKKyAgICBzZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyB7IHdlYlByb2Nlc3NQcm94eS5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSwgd2Vi
UHJvY2Vzc1Byb3h5LnNlc3Npb25JRCgpIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKSwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KSwgYWN0aXZpdHkgPSB0aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHkoIk5ldHdvcmtQcm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbiJfcyldKGF1dG8mJiBjb25uZWN0aW9uSWRlbnRpZmllciwgYXV0byBjb29raWVB
Y2NlcHRQb2xpY3kpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CisgICAgICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAiTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOiBOZXR3b3JrUHJvY2Vzc1Byb3h5IGRlYWxsb2NhdGVk
IGR1cmluZyBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQiKTsKKyAgICAgICAgICAgIHJldHVybiBy
ZXBseSh7IH0pOwogICAgICAgICB9CiAKLSAgICAgICAgQVNTRVJUKG1fY29ubmVjdGlvblJlcXVl
c3RzLmNvbnRhaW5zKGNvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllcikpOwotICAgICAgICBhdXRv
IHJlcXVlc3QgPSBtX2Nvbm5lY3Rpb25SZXF1ZXN0cy50YWtlKGNvbm5lY3Rpb25SZXF1ZXN0SWRl
bnRpZmllcik7Ci0KICNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykgfHwgT1MoV0lORE9XUykK
LSAgICAgICAgcmVxdWVzdC5yZXBseShOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvIHsgV1RG
TW92ZSgqY29ubmVjdGlvbklkZW50aWZpZXIpLCBjb29raWVBY2NlcHRQb2xpY3kgfSk7CisgICAg
ICAgIHJlcGx5KE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8geyBXVEZNb3ZlKCpjb25uZWN0
aW9uSWRlbnRpZmllciksIGNvb2tpZUFjY2VwdFBvbGljeSB9KTsKICNlbGlmIE9TKERBUldJTikK
ICAgICAgICAgTUVTU0FHRV9DSEVDSyhNQUNIX1BPUlRfVkFMSUQoY29ubmVjdGlvbklkZW50aWZp
ZXItPnBvcnQoKSkpOwotICAgICAgICByZXF1ZXN0LnJlcGx5KE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbkluZm8geyBJUEM6OkF0dGFjaG1lbnQgeyBjb25uZWN0aW9uSWRlbnRpZmllci0+cG9ydCgp
LCBNQUNIX01TR19UWVBFX01PVkVfU0VORCB9LCBjb29raWVBY2NlcHRQb2xpY3ksIGNvbm5lY3Rp
b24oKS0+Z2V0QXVkaXRUb2tlbigpIH0pOworICAgICAgICByZXBseShOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb25JbmZvIHsgSVBDOjpBdHRhY2htZW50IHsgY29ubmVjdGlvbklkZW50aWZpZXItPnBv
cnQoKSwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQgfSwgY29va2llQWNjZXB0UG9saWN5LCBjb25u
ZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKSB9KTsKICNlbHNlCiAgICAgICAgIG5vdEltcGxlbWVu
dGVkKCk7CiAjZW5kaWYKQEAgLTI0OCwxOCArMjMxLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpuZXR3b3JrUHJvY2VzcwogewogICAgIGNsZWFyQ2FsbGJhY2tTdGF0ZXMoKTsKIAotICAg
IFZlY3RvcjxzdGQ6OnBhaXI8UmVmUHRyPFdlYlByb2Nlc3NQcm94eT4sIE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pj4g
cGVuZGluZ1JlcXVlc3RzOwotICAgIHBlbmRpbmdSZXF1ZXN0cy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KG1fY29ubmVjdGlvblJlcXVlc3RzLnNpemUoKSk7Ci0gICAgZm9yIChhdXRvJiByZXF1ZXN0
IDogbV9jb25uZWN0aW9uUmVxdWVzdHMudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKHJlcXVlc3Qu
d2ViUHJvY2VzcykKLSAgICAgICAgICAgIHBlbmRpbmdSZXF1ZXN0cy51bmNoZWNrZWRBcHBlbmQo
c3RkOjptYWtlX3BhaXIobWFrZVJlZlB0cihyZXF1ZXN0LndlYlByb2Nlc3MuZ2V0KCkpLCBXVEZN
b3ZlKHJlcXVlc3QucmVwbHkpKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlcXVlc3Qu
cmVwbHkoeyB9KTsKLSAgICB9Ci0gICAgbV9jb25uZWN0aW9uUmVxdWVzdHMuY2xlYXIoKTsKLQog
ICAgIC8vIFRlbGwgdGhlIG5ldHdvcmsgcHJvY2VzcyBtYW5hZ2VyIHRvIGZvcmdldCBhYm91dCB0
aGlzIG5ldHdvcmsgcHJvY2VzcyBwcm94eS4gVGhpcyB3aWxsIGNhdXNlIHVzIHRvIGJlIGRlbGV0
ZWQuCi0gICAgbV9wcm9jZXNzUG9vbC5uZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKnRoaXMsIFdURk1v
dmUocGVuZGluZ1JlcXVlc3RzKSk7CisgICAgbV9wcm9jZXNzUG9vbC5uZXR3b3JrUHJvY2Vzc0Ny
YXNoZWQoKnRoaXMpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNsZWFyQ2FsbGJh
Y2tTdGF0ZXMoKQpAQCAtNDA5LDE0ICszODIsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OmRpZEZpbmlzaExhdW5jCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNvbm5l
Y3Rpb25SZXF1ZXN0cyA9IFdURk1vdmUobV9jb25uZWN0aW9uUmVxdWVzdHMpOwotICAgIGZvciAo
YXV0byYgY29ubmVjdGlvblJlcXVlc3QgOiBjb25uZWN0aW9uUmVxdWVzdHMudmFsdWVzKCkpIHsK
LSAgICAgICAgaWYgKGNvbm5lY3Rpb25SZXF1ZXN0LndlYlByb2Nlc3MpCi0gICAgICAgICAgICBn
ZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKmNvbm5lY3Rpb25SZXF1ZXN0LndlYlByb2Nlc3Ms
IFdURk1vdmUoY29ubmVjdGlvblJlcXVlc3QucmVwbHkpKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgY29ubmVjdGlvblJlcXVlc3QucmVwbHkoeyB9KTsKLSAgICB9Ci0KICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICBpZiAobV9wcm9jZXNzUG9vbC5wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVk
KCkpCiAgICAgICAgIHNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQodHJ1ZSk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaAkocmV2aXNpb24gMjU5NTc3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4NiwxOSArMjg2
LDEwIEBAIHByaXZhdGU6CiAgICAgLy8gUHJvY2Vzc0xhdW5jaGVyOjpDbGllbnQKICAgICB2b2lk
IGRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBJUEM6OkNvbm5lY3Rpb246Oklk
ZW50aWZpZXIpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBvcGVuTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKHVpbnQ2NF90IGNvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllciwgV2ViUHJvY2Vzc1Byb3h5
Jik7Ci0KICAgICB2b2lkIHByb2Nlc3NBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQQUw6OlNlc3Np
b25JRCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+JiYpOwogCiAgICAgV2ViUHJv
Y2Vzc1Bvb2wmIG1fcHJvY2Vzc1Bvb2w7CiAKLSAgICBzdHJ1Y3QgQ29ubmVjdGlvblJlcXVlc3Qg
ewotICAgICAgICBXZWFrUHRyPFdlYlByb2Nlc3NQcm94eT4gd2ViUHJvY2VzczsKLSAgICAgICAg
TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uRGVs
YXllZFJlcGx5IHJlcGx5OwotICAgIH07Ci0gICAgdWludDY0X3QgbV9jb25uZWN0aW9uUmVxdWVz
dElkZW50aWZpZXIgeyAwIH07Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgQ29ubmVjdGlvblJlcXVl
c3Q+IG1fY29ubmVjdGlvblJlcXVlc3RzOwotCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJzaXRlRGF0YSk+PiBtX3BlbmRpbmdGZXRjaFdlYnNpdGVEYXRh
Q2FsbGJhY2tzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4+IG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhQ2FsbGJhY2tzOwogICAgIEhhc2hNYXA8dWlu
dDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4+IG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVE
YXRhRm9yT3JpZ2luc0NhbGxiYWNrczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbkluZm8uaAkocmV2aXNpb24gMjU5
NTc3KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlv
bkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBzdHJ1Y3QgR1BVUHJvY2Vz
c0Nvbm5lY3Rpb25JbmZvIHsKICAgICBPcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2Vu
OwogI2VuZGlmCiAKLSAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgaWRlbnRpZmllcigp
CisgICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdAogICAg
IHsKICNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKICAgICAgICAgcmV0dXJuIElQQzo6Q29u
bmVjdGlvbjo6SWRlbnRpZmllcihjb25uZWN0aW9uLmZpbGVEZXNjcmlwdG9yKCkpOwpJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
SW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaAkocmV2aXNpb24gMjU5NTc3KQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIHN0cnVjdCBOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb25JbmZvIHsKICAgICBPcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuOwog
I2VuZGlmCiAKLSAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgaWRlbnRpZmllcigpCisg
ICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdAogICAgIHsK
ICNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKICAgICAgICAgcmV0dXJuIElQQzo6Q29ubmVj
dGlvbjo6SWRlbnRpZmllcihjb25uZWN0aW9uLmZpbGVEZXNjcmlwdG9yKCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395736</attachid>
            <date>2020-04-07 14:14:31 -0700</date>
            <delta_ts>2020-04-07 15:08:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210142-20200407141429.patch</filename>
            <type>text/plain</type>
            <size>23980</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTk2NTgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBACisyMDIwLTA0LTA3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2ltcGxpZnkgYW5k
IGZvcnRpZnkgbmV0d29yayBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gYW5kIGdldEdQVVBy
b2Nlc3NDb25uZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTAxNDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5NDg4OTYzPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgV2UgaGF2ZSByZXBvcnRz
IG9mIGhhbmdzIGluc2lkZSBXZWJLaXQ6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiB0aGF0
IHNlZW0gdG8gbGFzdCBmb3JldmVyLgorICAgICAgICBTb21lIG9mIHRoZSByZXBvcnRzIGluZGlj
YXRlIHRoZSBuZXR3b3JrIHByb2Nlc3MgaXMgYmVpbmcgc3VzcGVuZGVkIHdoaWxlIGEgY29ubmVj
dGlvbiBpcyBiZWluZyBlc3RhYmxpc2hlZCB3aXRoIGl0LgorCisgICAgICAgIFRvIGZpeCB0aGlz
IGlzc3VlIHdlIGRvIHRocmVlIHRoaW5nczoKKyAgICAgICAgMS4gV2UgdGFrZSBhIGZvcmVncm91
bmRBY3Rpdml0eSB3aGVuIHNlbmRpbmcgYW4gYXN5bmMgbWVzc2FnZSB0byBlc3RhYmxpc2ggYSBj
b25uZWN0aW9uLgorICAgICAgICAyLiBXZSB1c2Ugc2VuZFdpdGhBc3luY1JlcGx5IHdoaWNoIGFs
cmVhZHkgaGFzIGxvZ2ljIHRvIGhhbmRsZSB0aGUgY2FzZSB3aGVyZSB3ZSBhcmUgY3VycmVudGx5
IGxhdW5jaGluZyB0aGUgcHJvY2Vzcy4KKyAgICAgICAgICAgSW5zdGVhZCBvZiB0aGUgY29tcGxp
Y2F0ZWQgcmV0cnkgbG9naWMsIHdlIGFkZCBhIHJldHJ5IGF0dGVtcHQgaW4gV2ViUHJvY2Vzc1Bv
b2wgaWYgdGhlIGNvbm5lY3Rpb24gaWRlbnRpZmllciBpcyBpbnZhbGlkLgorICAgICAgICAzLiBB
ZGQgc29tZSByZWxlYXNlIGxvZ2dpbmcgc28gd2UgY2FuIGJldHRlciBkaWFnbm9zZSBwcm9ibGVt
cyB3aXRoIHRoaXMgZmxvdyBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgIFRoZSBmdW5jdGlvbmFs
IGNoYW5nZSBpcyBhZGRpbmcgdGhlIGZvcmVncm91bmQgYWN0aXZpdHksIHdoaWNoIHNob3VsZCBw
cmV2ZW50IHNvbWUgaGFuZ3MuCisgICAgICAgIFRoZSByZXN0IGlzIGp1c3QgdG8gbWFrZSB0aGlz
IGNvZGUgbW9yZSBzYW5lIHRvIHVuZGVyc3RhbmQgYW5kIGRlYnVnLgorICAgICAgICBJIGRvIHRo
ZSBzYW1lIGNoYW5nZXMgdG8gTmV0d29ya1Byb2Nlc3MgYW5kIEdQVVByb2Nlc3MgYmVjYXVzZSB0
aGV5IGFyZSBpbnRlbmRlZCB0byBiZSB0aGUgc2FtZS4gIFRoZSBsYXR0ZXIgaXMgYmFzZWQgb24g
dGhlIGZvcm1lci4KKworICAgICAgICBUaGUgQVBJIHRlc3QgV2ViS2l0Lk5ldHdvcmtQcm9jZXNz
Q3Jhc2hXaXRoUGVuZGluZ0Nvbm5lY3Rpb24gY292ZXJzIHdoYXQgaGFwcGVucyB3aGVuIHRoZSBu
ZXR3b3JrIHByb2Nlc3MgY3Jhc2hlcyBkdXJpbmcgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50Lgor
ICAgICAgICBJdCBmYWlscyBpZiB3ZSBkb24ndCByZXRyeSBzb21ld2hlcmUsIHdoaWNoIEkgZGlk
IGluIFdlYlByb2Nlc3NQb29sLiAgV2UgYWxzbyBuZWVkIHRvIHRyeSBhZ2FpbiBpbiBnZXROZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gYW5kIGdldEdQVVByb2Nlc3NDb25uZWN0aW9uLgorICAgICAg
ICBJZiBpdCBmYWlscyB0d2ljZSwgdGhlcmUncyBub3RoaW5nIHdlIGNhbiBkbywgYW5kIHdlIGNy
YXNoIHRoZSB3ZWIgcHJvY2VzcyB0byBhdm9pZCBhIGNyYXNoIGxvb3AuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVVBy
b2Nlc3NQcm94eTo6Z2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpH
UFVQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyk6CisgICAgICAgIChXZWJLaXQ6OkdQ
VVByb2Nlc3NQcm94eTo6fkdQVVByb2Nlc3NQcm94eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OkdQVVByb2Nlc3NQcm94eTo6b3BlbkdQVVByb2Nlc3NDb25uZWN0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp+TmV0d29ya1Byb2Nlc3NQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Om5ldHdvcmtQcm9jZXNzQ3Jh
c2hlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExh
dW5jaGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Om9wZW5OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nl
c3NDcmFzaGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmdldE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpnZXRH
UFVQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmg6
CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uSW5mbzo6aWRlbnRpZmllciBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uSW5mbzo6aWRlbnRp
Zmllcik6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbkluZm8uaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uSW5mbzo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbkluZm86OmlkZW50aWZpZXIpOiBEZWxldGVkLgorCiAyMDIwLTA0LTA3
ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dHVybiBhcHAtYm91bmQgc2Vzc2lvbnMgZm9yIGluc3RhbmNlcyB3aGVyZSBXS0FwcEJvdW5kRG9t
YWlucyBpcwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cAkocmV2aXNpb24gMjU5NTc3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMSArMzksMTMgQEAKICNpbmNsdWRlICJB
dXhpbGlhcnlQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCiAj
aW5jbHVkZSAiRG93bmxvYWRQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nv
bm5lY3Rpb25JbmZvLmgiCiAjaW5jbHVkZSAiR2FtZXBhZERhdGEuaCIKICNpbmNsdWRlICJIaWdo
UGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5oIgogI2luY2x1ZGUgIkxlZ2FjeUdsb2Jh
bFNldHRpbmdzLmgiCiAjaW5jbHVkZSAiTG9nSW5pdGlhbGl6YXRpb24uaCIKICNpbmNsdWRlICJM
b2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIK
QEAgLTcxMSw3ICs3MTMsNyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6
ZW5zCiAgICAgcmV0dXJuICptX25ldHdvcmtQcm9jZXNzOwogfQogCi12b2lkIFdlYlByb2Nlc3NQ
b29sOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoTmV0d29ya1Byb2Nlc3NQcm94eSYgbmV0d29ya1By
b2Nlc3NQcm94eSwgVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiwgTWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxh
eWVkUmVwbHk+PiYmIHBlbmRpbmdSZXBsaWVzKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6bmV0d29y
a1Byb2Nlc3NDcmFzaGVkKE5ldHdvcmtQcm9jZXNzUHJveHkmIG5ldHdvcmtQcm9jZXNzUHJveHkp
CiB7CiAgICAgQVNTRVJUKG1fbmV0d29ya1Byb2Nlc3MpOwogICAgIEFTU0VSVCgmbmV0d29ya1By
b2Nlc3NQcm94eSA9PSBtX25ldHdvcmtQcm9jZXNzLmdldCgpKTsKQEAgLTcyNywxMyArNzI5LDYg
QEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NDcmFzaAogICAgIC8vIExlYXZl
IHRoZSBwcm9jZXNzIHByb3h5IGFyb3VuZCBkdXJpbmcgY2xpZW50IGNhbGwsIHNvIHRoYXQgdGhl
IGNsaWVudCBjb3VsZCBxdWVyeSB0aGUgcHJvY2VzcyBpZGVudGlmaWVyLgogICAgIG1fbmV0d29y
a1Byb2Nlc3MgPSBudWxscHRyOwogCi0gICAgLy8gQXR0ZW1wdCB0byByZS1sYXVuY2guCi0gICAg
aWYgKHBlbmRpbmdSZXBsaWVzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGF1dG8m
IG5ld05ldHdvcmtQcm9jZXNzID0gZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKLSAgICBmb3IgKGF1
dG8mIHJlcGx5IDogcGVuZGluZ1JlcGxpZXMpCi0gICAgICAgIG5ld05ldHdvcmtQcm9jZXNzLmdl
dE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigqcmVwbHkuZmlyc3QsIFdURk1vdmUocmVwbHkuc2Vj
b25kKSk7Ci0KICAgICB0ZXJtaW5hdGVTZXJ2aWNlV29ya2VycygpOwogfQogCkBAIC03NDcsOSAr
NzQyLDE1IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNlcnZpY2VXb3JrZXJQcm9jZXMKIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJv
eHkmIHdlYlByb2Nlc3NQcm94eSwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBlbnN1cmVO
ZXR3b3JrUHJvY2VzcygpOwotICAgIEFTU0VSVChtX25ldHdvcmtQcm9jZXNzKTsKLQotICAgIG1f
bmV0d29ya1Byb2Nlc3MtPmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbih3ZWJQcm9jZXNzUHJv
eHksIFdURk1vdmUocmVwbHkpKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5nZXROZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24od2ViUHJvY2Vzc1Byb3h5LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cigqdGhpcyksIHdlYlByb2Nlc3NQcm94eSA9IG1ha2VXZWFrUHRyKHdlYlByb2Nlc3NQcm94
eSksIHJlcGx5ID0gV1RGTW92ZShyZXBseSldIChhdXRvJiBjb25uZWN0aW9uSW5mbykgbXV0YWJs
ZSB7CisgICAgICAgIGlmIChVTkxJS0VMWSghSVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNW
YWxpZChjb25uZWN0aW9uSW5mby5pZGVudGlmaWVyKCkpICYmIHdlYlByb2Nlc3NQcm94eSAmJiB3
ZWFrVGhpcykpIHsKKyAgICAgICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX0VSUk9S
KFByb2Nlc3MsICJnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246IEZhaWxlZCBmaXJzdCBhdHRl
bXB0LCByZXRyeWluZyIpOworICAgICAgICAgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKKyAg
ICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigq
d2ViUHJvY2Vzc1Byb3h5LCBXVEZNb3ZlKHJlcGx5KSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgcmVwbHkoY29ubmVjdGlvbkluZm8pOworICAgIH0pOwogfQogCiAj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQpAQCAtNzY0LDcgKzc2NSwxNCBAQCB2b2lkIFdlYlByb2Nl
c3NQb29sOjpncHVQcm9jZXNzQ3Jhc2hlZChQCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmdldEdQ
VVByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5LCBNZXNz
YWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRHUFVQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJl
cGx5JiYgcmVwbHkpCiB7Ci0gICAgR1BVUHJvY2Vzc1Byb3h5OjpzaW5nbGV0b24oKS5nZXRHUFVQ
cm9jZXNzQ29ubmVjdGlvbih3ZWJQcm9jZXNzUHJveHksIFdURk1vdmUocmVwbHkpKTsKKyAgICBH
UFVQcm9jZXNzUHJveHk6OnNpbmdsZXRvbigpLmdldEdQVVByb2Nlc3NDb25uZWN0aW9uKHdlYlBy
b2Nlc3NQcm94eSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB3ZWJQcm9j
ZXNzUHJveHkgPSBtYWtlV2Vha1B0cih3ZWJQcm9jZXNzUHJveHkpLCByZXBseSA9IFdURk1vdmUo
cmVwbHkpXSAoYXV0byYgY29ubmVjdGlvbkluZm8pIG11dGFibGUgeworICAgICAgICBpZiAoVU5M
SUtFTFkoIUlQQzo6Q29ubmVjdGlvbjo6aWRlbnRpZmllcklzVmFsaWQoY29ubmVjdGlvbkluZm8u
aWRlbnRpZmllcigpKSAmJiB3ZWJQcm9jZXNzUHJveHkgJiYgd2Vha1RoaXMpKSB7CisgICAgICAg
ICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAiZ2V0R1BVUHJv
Y2Vzc0Nvbm5lY3Rpb246IEZhaWxlZCBmaXJzdCBhdHRlbXB0LCByZXRyeWluZyIpOworICAgICAg
ICAgICAgR1BVUHJvY2Vzc1Byb3h5OjpzaW5nbGV0b24oKS5nZXRHUFVQcm9jZXNzQ29ubmVjdGlv
bigqd2ViUHJvY2Vzc1Byb3h5LCBXVEZNb3ZlKHJlcGx5KSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgcmVwbHkoY29ubmVjdGlvbkluZm8pOworICAgIH0pOwogfQog
I2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAko
cmV2aXNpb24gMjU5NTc3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaAkod29ya2luZyBjb3B5KQpAQCAtMzg5LDcgKzM4OSw3IEBAIHB1YmxpYzoKICAgICAvLyBO
ZXR3b3JrIFByb2Nlc3MgTWFuYWdlbWVudAogICAgIE5ldHdvcmtQcm9jZXNzUHJveHkmIGVuc3Vy
ZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGhXZWJzaXRlRGF0YVN0b3JlID0g
bnVsbHB0cik7CiAgICAgTmV0d29ya1Byb2Nlc3NQcm94eSogbmV0d29ya1Byb2Nlc3MoKSB7IHJl
dHVybiBtX25ldHdvcmtQcm9jZXNzLmdldCgpOyB9Ci0gICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0Ny
YXNoZWQoTmV0d29ya1Byb2Nlc3NQcm94eSYsIFZlY3RvcjxzdGQ6OnBhaXI8UmVmUHRyPFdlYlBy
b2Nlc3NQcm94eT4sIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbkRlbGF5ZWRSZXBseT4+JiYpOworICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NDcmFz
aGVkKE5ldHdvcmtQcm9jZXNzUHJveHkmKTsKIAogICAgIHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6Okdl
dE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBseSYmKTsKIApJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9u
IDI1OTU3NykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsMTEgKzEzMiw3IEBAIEdQVVByb2Nlc3NQcm94eTo6
R1BVUHJvY2Vzc1Byb3h5KCkKICAgICBjb25uZWN0KCk7CiB9CiAKLUdQVVByb2Nlc3NQcm94eTo6
fkdQVVByb2Nlc3NQcm94eSgpCi17Ci0gICAgZm9yIChhdXRvJiByZXF1ZXN0IDogbV9jb25uZWN0
aW9uUmVxdWVzdHMudmFsdWVzKCkpCi0gICAgICAgIHJlcXVlc3QucmVwbHkoeyB9KTsKLX0KK0dQ
VVByb2Nlc3NQcm94eTo6fkdQVVByb2Nlc3NQcm94eSgpID0gZGVmYXVsdDsKIAogI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCiB2b2lkIEdQVVByb2Nlc3NQcm94eTo6c2V0VXNlTW9ja0NhcHR1cmVE
ZXZpY2VzKGJvb2wgdmFsdWUpCkBAIC0xNzgsMTYgKzE3NCw3IEBAIHZvaWQgR1BVUHJvY2Vzc1By
b3h5Ojpwcm9jZXNzV2lsbFNodXREb3cKIAogdm9pZCBHUFVQcm9jZXNzUHJveHk6OmdldEdQVVBy
b2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5LCBNZXNzYWdl
czo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRHUFVQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5
JiYgcmVwbHkpCiB7Ci0gICAgbV9jb25uZWN0aW9uUmVxdWVzdHMuYWRkKCsrbV9jb25uZWN0aW9u
UmVxdWVzdElkZW50aWZpZXIsIENvbm5lY3Rpb25SZXF1ZXN0IHsgbWFrZVdlYWtQdHIod2ViUHJv
Y2Vzc1Byb3h5KSwgV1RGTW92ZShyZXBseSkgfSk7Ci0gICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6
OkxhdW5jaGluZykKLSAgICAgICAgcmV0dXJuOwotICAgIG9wZW5HUFVQcm9jZXNzQ29ubmVjdGlv
bihtX2Nvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllciwgd2ViUHJvY2Vzc1Byb3h5KTsKLX0KLQot
dm9pZCBHUFVQcm9jZXNzUHJveHk6Om9wZW5HUFVQcm9jZXNzQ29ubmVjdGlvbihDb25uZWN0aW9u
UmVxdWVzdElkZW50aWZpZXIgY29ubmVjdGlvblJlcXVlc3RJZGVudGlmaWVyLCBXZWJQcm9jZXNz
UHJveHkmIHdlYlByb2Nlc3NQcm94eSkKLXsKICAgICBhZGRTZXNzaW9uKHdlYlByb2Nlc3NQcm94
eS53ZWJzaXRlRGF0YVN0b3JlKCkpOwotICAgIAogI2lmIEhBVkUoVklTSUJJTElUWV9QUk9QQUdB
VElPTl9WSUVXKQogICAgIGlmIChtX2NvbnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdhdGlvbikK
ICAgICAgICAgd2ViUHJvY2Vzc1Byb3h5LmRpZENyZWF0ZUNvbnRleHRJbkdQVVByb2Nlc3NGb3JW
aXNpYmlsaXR5UHJvcGFnYXRpb24obV9jb250ZXh0SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24p
OwpAQCAtMTk1LDI0ICsxODIsMTcgQEAgdm9pZCBHUFVQcm9jZXNzUHJveHk6Om9wZW5HUFVQcm9j
ZXNzQ29ubgogICAgICAgICBtX3Byb2Nlc3Nlc1BlbmRpbmdWaXNpYmlsaXR5UHJvcGFnYXRpb25O
b3RpZmljYXRpb24uYXBwZW5kKG1ha2VXZWFrUHRyKHdlYlByb2Nlc3NQcm94eSkpOwogI2VuZGlm
CiAKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OkdQVVByb2Nlc3M6OkNyZWF0ZUdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgeyB3ZWJQcm9jZXNzUHJveHkuY29yZVByb2Nlc3NJZGVu
dGlmaWVyKCksIHdlYlByb2Nlc3NQcm94eS5zZXNzaW9uSUQoKSB9LCBbdGhpcywgd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cih0aGlzKSwgd2ViUHJvY2Vzc1Byb3h5ID0gbWFrZVdlYWtQdHIod2ViUHJv
Y2Vzc1Byb3h5KSwgY29ubmVjdGlvblJlcXVlc3RJZGVudGlmaWVyXShhdXRvJiYgY29ubmVjdGlv
bklkZW50aWZpZXIpIG11dGFibGUgewotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIGlmICghY29ubmVjdGlvbklkZW50aWZpZXIpIHsKLSAgICAg
ICAgICAgIC8vIEdQVSBwcm9jZXNzIHByb2JhYmx5IGNyYXNoZWQsIHRoZSBjb25uZWN0aW9uIHJl
cXVlc3Qgc2hvdWxkIGhhdmUgYmVlbiBtb3ZlZC4KLSAgICAgICAgICAgIEFTU0VSVChtX2Nvbm5l
Y3Rpb25SZXF1ZXN0cy5pc0VtcHR5KCkpOwotICAgICAgICAgICAgcmV0dXJuOworICAgIFJFTEVB
U0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBHUFVQcm9jZXNzUHJveHkgaXMgdGFraW5n
IGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBhIHdlYiBwcm9jZXNzIGlzIHJlcXVlc3Rp
bmcgYSBjb25uZWN0aW9uIiwgdGhpcyk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpHUFVQcm9jZXNzOjpDcmVhdGVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIHsgd2ViUHJvY2Vz
c1Byb3h5LmNvcmVQcm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQcm9jZXNzUHJveHkuc2Vzc2lvbklE
KCkgfSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCByZXBseSA9IFdURk1v
dmUocmVwbHkpLCBhY3Rpdml0eSA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiR1BV
UHJvY2Vzc1Byb3h5OjpnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbiJfcyldKGF1dG8mJiBjb25uZWN0
aW9uSWRlbnRpZmllcikgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpIHsKKyAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByb2Nlc3MsICJHUFVQcm9jZXNzUHJveHk6OmdldEdQ
VVByb2Nlc3NDb25uZWN0aW9uOiBHUFVQcm9jZXNzUHJveHkgZGVhbGxvY2F0ZWQgZHVyaW5nIGNv
bm5lY3Rpb24gZXN0YWJsaXNobWVudCIpOworICAgICAgICAgICAgcmV0dXJuIHJlcGx5KHsgfSk7
CiAgICAgICAgIH0KLQotICAgICAgICBBU1NFUlQobV9jb25uZWN0aW9uUmVxdWVzdHMuY29udGFp
bnMoY29ubmVjdGlvblJlcXVlc3RJZGVudGlmaWVyKSk7Ci0gICAgICAgIGF1dG8gcmVxdWVzdCA9
IG1fY29ubmVjdGlvblJlcXVlc3RzLnRha2UoY29ubmVjdGlvblJlcXVlc3RJZGVudGlmaWVyKTsK
LQogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKSB8fCBPUyhXSU5ET1dTKQotICAgICAgICBy
ZXF1ZXN0LnJlcGx5KEdQVVByb2Nlc3NDb25uZWN0aW9uSW5mbyB7IFdURk1vdmUoKmNvbm5lY3Rp
b25JZGVudGlmaWVyKSB9KTsKKyAgICAgICAgcmVwbHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZv
IHsgV1RGTW92ZSgqY29ubmVjdGlvbklkZW50aWZpZXIpIH0pOwogI2VsaWYgT1MoREFSV0lOKQog
ICAgICAgICBNRVNTQUdFX0NIRUNLKE1BQ0hfUE9SVF9WQUxJRChjb25uZWN0aW9uSWRlbnRpZmll
ci0+cG9ydCgpKSk7Ci0gICAgICAgIHJlcXVlc3QucmVwbHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb25J
bmZvIHsgSVBDOjpBdHRhY2htZW50IHsgY29ubmVjdGlvbklkZW50aWZpZXItPnBvcnQoKSwgTUFD
SF9NU0dfVFlQRV9NT1ZFX1NFTkQgfSwgdGhpcy0+Y29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2Vu
KCkgfSk7CisgICAgICAgIHJlcGx5KEdQVVByb2Nlc3NDb25uZWN0aW9uSW5mbyB7IElQQzo6QXR0
YWNobWVudCB7IGNvbm5lY3Rpb25JZGVudGlmaWVyLT5wb3J0KCksIE1BQ0hfTVNHX1RZUEVfTU9W
RV9TRU5EIH0sIHRoaXMtPmNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpIH0pOwogI2Vsc2UK
ICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKICNlbmRpZgpAQCAtMjUzLDE0ICsyMzMsNiBAQCB2
b2lkIEdQVVByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nCiAgICAgICAgIGdwdVByb2Nl
c3NDcmFzaGVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KLSAgICBhdXRvIGNvbm5lY3Rp
b25SZXF1ZXN0cyA9IFdURk1vdmUobV9jb25uZWN0aW9uUmVxdWVzdHMpOwotICAgIGZvciAoYXV0
byYgY29ubmVjdGlvblJlcXVlc3QgOiBjb25uZWN0aW9uUmVxdWVzdHMudmFsdWVzKCkpIHsKLSAg
ICAgICAgaWYgKGNvbm5lY3Rpb25SZXF1ZXN0LndlYlByb2Nlc3MpCi0gICAgICAgICAgICBnZXRH
UFVQcm9jZXNzQ29ubmVjdGlvbigqY29ubmVjdGlvblJlcXVlc3Qud2ViUHJvY2VzcywgV1RGTW92
ZShjb25uZWN0aW9uUmVxdWVzdC5yZXBseSkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBj
b25uZWN0aW9uUmVxdWVzdC5yZXBseSh7IH0pOwotICAgIH0KICAgICAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIGlmICh4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24gPSB0aGlzLT5j
b25uZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24oKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDI1OTU3NykKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpA
QCAtOTYsOSArOTYsNiBAQCBwcml2YXRlOgogICAgIC8vIFByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50
CiAgICAgdm9pZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgSVBDOjpDb25u
ZWN0aW9uOjpJZGVudGlmaWVyKSBvdmVycmlkZTsKIAotICAgIHR5cGVkZWYgdWludDY0X3QgQ29u
bmVjdGlvblJlcXVlc3RJZGVudGlmaWVyOwotICAgIHZvaWQgb3BlbkdQVVByb2Nlc3NDb25uZWN0
aW9uKENvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllciwgV2ViUHJvY2Vzc1Byb3h5Jik7Ci0KICAg
ICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRD
bG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKQEAgLTExMCwxMyArMTA3LDYgQEAgcHJp
dmF0ZToKIAogICAgIHN0YXRpYyBHUFVQcm9jZXNzUHJveHkqIG1fc2luZ2xldG9uOwogCi0gICAg
c3RydWN0IENvbm5lY3Rpb25SZXF1ZXN0IHsKLSAgICAgICAgV2Vha1B0cjxXZWJQcm9jZXNzUHJv
eHk+IHdlYlByb2Nlc3M7Ci0gICAgICAgIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldEdQ
VVByb2Nlc3NDb25uZWN0aW9uRGVsYXllZFJlcGx5IHJlcGx5OwotICAgIH07Ci0gICAgQ29ubmVj
dGlvblJlcXVlc3RJZGVudGlmaWVyIG1fY29ubmVjdGlvblJlcXVlc3RJZGVudGlmaWVyIHsgMCB9
OwotICAgIEhhc2hNYXA8Q29ubmVjdGlvblJlcXVlc3RJZGVudGlmaWVyLCBDb25uZWN0aW9uUmVx
dWVzdD4gbV9jb25uZWN0aW9uUmVxdWVzdHM7Ci0KICAgICBQcm9jZXNzVGhyb3R0bGVyIG1fdGhy
b3R0bGVyOwogICAgIFByb2Nlc3NUaHJvdHRsZXI6OkFjdGl2aXR5VmFyaWFudCBtX2FjdGl2aXR5
RnJvbVdlYlByb2Nlc3NlczsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCShyZXZpc2lvbiAyNTk1NzcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsOSArMTA4
LDYgQEAgTmV0d29ya1Byb2Nlc3NQcm94eTo6fk5ldHdvcmtQcm9jZXNzUHJveAogCiAgICAgaWYg
KG1fZG93bmxvYWRQcm94eU1hcCkKICAgICAgICAgbV9kb3dubG9hZFByb3h5TWFwLT5pbnZhbGlk
YXRlKCk7Ci0KLSAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBtX2Nvbm5lY3Rpb25SZXF1ZXN0cy52
YWx1ZXMoKSkKLSAgICAgICAgcmVxdWVzdC5yZXBseSh7IH0pOwogfQogCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OmdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRp
b25zJiBsYXVuY2hPcHRpb25zKQpAQCAtMTQwLDMyICsxMzcsMTggQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5Ojpwcm9jZXNzV2lsbFNodQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Omdl
dE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94
eSwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
OjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKLSAgICBtX2Nvbm5lY3Rpb25SZXF1ZXN0cy5hZGQo
KyttX2Nvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllciwgQ29ubmVjdGlvblJlcXVlc3QgeyBtYWtl
V2Vha1B0cih3ZWJQcm9jZXNzUHJveHkpLCBXVEZNb3ZlKHJlcGx5KSB9KTsKLSAgICBpZiAoc3Rh
dGUoKSA9PSBTdGF0ZTo6TGF1bmNoaW5nKQotICAgICAgICByZXR1cm47Ci0gICAgb3Blbk5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbihtX2Nvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllciwgd2ViUHJv
Y2Vzc1Byb3h5KTsKLX0KLQotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpvcGVuTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90IGNvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllciwgV2Vi
UHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHkpCi17Ci0gICAgY29ubmVjdGlvbigpLT5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDcmVhdGVOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyB7IHdlYlByb2Nlc3NQcm94eS5jb3JlUHJvY2Vzc0lkZW50aWZp
ZXIoKSwgd2ViUHJvY2Vzc1Byb3h5LnNlc3Npb25JRCgpIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKHRoaXMpLCB3ZWJQcm9jZXNzUHJveHkgPSBtYWtlV2Vha1B0cih3ZWJQcm9jZXNz
UHJveHkpLCBjb25uZWN0aW9uUmVxdWVzdElkZW50aWZpZXJdKGF1dG8mJiBjb25uZWN0aW9uSWRl
bnRpZmllciwgSFRUUENvb2tpZUFjY2VwdFBvbGljeSBjb29raWVBY2NlcHRQb2xpY3kpIG11dGFi
bGUgewotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIGlmICghY29ubmVjdGlvbklkZW50aWZpZXIpIHsKLSAgICAgICAgICAgIC8vIE5ldHdvcmsg
cHJvY2VzcyBwcm9iYWJseSBjcmFzaGVkLCB0aGUgY29ubmVjdGlvbiByZXF1ZXN0IHNob3VsZCBo
YXZlIGJlZW4gbW92ZWQuCi0gICAgICAgICAgICBBU1NFUlQobV9jb25uZWN0aW9uUmVxdWVzdHMu
aXNFbXB0eSgpKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICBSRUxFQVNFX0xPRyhQcm9jZXNz
U3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nlc3NQcm94eSBpcyB0YWtpbmcgYSBiYWNrZ3Jv
dW5kIGFzc2VydGlvbiBiZWNhdXNlIGEgd2ViIHByb2Nlc3MgaXMgcmVxdWVzdGluZyBhIGNvbm5l
Y3Rpb24iLCB0aGlzKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzOjpDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyB7IHdlYlByb2Nlc3NQ
cm94eS5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSwgd2ViUHJvY2Vzc1Byb3h5LnNlc3Npb25JRCgp
IH0sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVwbHkgPSBXVEZNb3Zl
KHJlcGx5KSwgYWN0aXZpdHkgPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIk5ldHdv
cmtQcm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiJfcyldKGF1dG8mJiBj
b25uZWN0aW9uSWRlbnRpZmllciwgYXV0byBjb29raWVBY2NlcHRQb2xpY3kpIG11dGFibGUgewor
ICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQ
cm9jZXNzLCAiTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
OiBOZXR3b3JrUHJvY2Vzc1Byb3h5IGRlYWxsb2NhdGVkIGR1cmluZyBjb25uZWN0aW9uIGVzdGFi
bGlzaG1lbnQiKTsKKyAgICAgICAgICAgIHJldHVybiByZXBseSh7IH0pOwogICAgICAgICB9CiAK
LSAgICAgICAgQVNTRVJUKG1fY29ubmVjdGlvblJlcXVlc3RzLmNvbnRhaW5zKGNvbm5lY3Rpb25S
ZXF1ZXN0SWRlbnRpZmllcikpOwotICAgICAgICBhdXRvIHJlcXVlc3QgPSBtX2Nvbm5lY3Rpb25S
ZXF1ZXN0cy50YWtlKGNvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllcik7Ci0KICNpZiBVU0UoVU5J
WF9ET01BSU5fU09DS0VUUykgfHwgT1MoV0lORE9XUykKLSAgICAgICAgcmVxdWVzdC5yZXBseShO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvIHsgV1RGTW92ZSgqY29ubmVjdGlvbklkZW50aWZp
ZXIpLCBjb29raWVBY2NlcHRQb2xpY3kgfSk7CisgICAgICAgIHJlcGx5KE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbkluZm8geyBXVEZNb3ZlKCpjb25uZWN0aW9uSWRlbnRpZmllciksIGNvb2tpZUFj
Y2VwdFBvbGljeSB9KTsKICNlbGlmIE9TKERBUldJTikKICAgICAgICAgTUVTU0FHRV9DSEVDSyhN
QUNIX1BPUlRfVkFMSUQoY29ubmVjdGlvbklkZW50aWZpZXItPnBvcnQoKSkpOwotICAgICAgICBy
ZXF1ZXN0LnJlcGx5KE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8geyBJUEM6OkF0dGFjaG1l
bnQgeyBjb25uZWN0aW9uSWRlbnRpZmllci0+cG9ydCgpLCBNQUNIX01TR19UWVBFX01PVkVfU0VO
RCB9LCBjb29raWVBY2NlcHRQb2xpY3ksIGNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpIH0p
OworICAgICAgICByZXBseShOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvIHsgSVBDOjpBdHRh
Y2htZW50IHsgY29ubmVjdGlvbklkZW50aWZpZXItPnBvcnQoKSwgTUFDSF9NU0dfVFlQRV9NT1ZF
X1NFTkQgfSwgY29va2llQWNjZXB0UG9saWN5LCBjb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4o
KSB9KTsKICNlbHNlCiAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CiAjZW5kaWYKQEAgLTI0OCwx
OCArMjMxLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpuZXR3b3JrUHJvY2Vzcwogewog
ICAgIGNsZWFyQ2FsbGJhY2tTdGF0ZXMoKTsKIAotICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmVmUHRy
PFdlYlByb2Nlc3NQcm94eT4sIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pj4gcGVuZGluZ1JlcXVlc3RzOwotICAgIHBl
bmRpbmdSZXF1ZXN0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fY29ubmVjdGlvblJlcXVlc3Rz
LnNpemUoKSk7Ci0gICAgZm9yIChhdXRvJiByZXF1ZXN0IDogbV9jb25uZWN0aW9uUmVxdWVzdHMu
dmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKHJlcXVlc3Qud2ViUHJvY2VzcykKLSAgICAgICAgICAg
IHBlbmRpbmdSZXF1ZXN0cy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3BhaXIobWFrZVJlZlB0
cihyZXF1ZXN0LndlYlByb2Nlc3MuZ2V0KCkpLCBXVEZNb3ZlKHJlcXVlc3QucmVwbHkpKSk7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlcXVlc3QucmVwbHkoeyB9KTsKLSAgICB9Ci0gICAg
bV9jb25uZWN0aW9uUmVxdWVzdHMuY2xlYXIoKTsKLQogICAgIC8vIFRlbGwgdGhlIG5ldHdvcmsg
cHJvY2VzcyBtYW5hZ2VyIHRvIGZvcmdldCBhYm91dCB0aGlzIG5ldHdvcmsgcHJvY2VzcyBwcm94
eS4gVGhpcyB3aWxsIGNhdXNlIHVzIHRvIGJlIGRlbGV0ZWQuCi0gICAgbV9wcm9jZXNzUG9vbC5u
ZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKnRoaXMsIFdURk1vdmUocGVuZGluZ1JlcXVlc3RzKSk7Cisg
ICAgbV9wcm9jZXNzUG9vbC5uZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKnRoaXMpOwogfQogCiB2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OmNsZWFyQ2FsbGJhY2tTdGF0ZXMoKQpAQCAtNDA5LDE0ICsz
ODIsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNvbm5lY3Rpb25SZXF1ZXN0cyA9IFdURk1vdmUo
bV9jb25uZWN0aW9uUmVxdWVzdHMpOwotICAgIGZvciAoYXV0byYgY29ubmVjdGlvblJlcXVlc3Qg
OiBjb25uZWN0aW9uUmVxdWVzdHMudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKGNvbm5lY3Rpb25S
ZXF1ZXN0LndlYlByb2Nlc3MpCi0gICAgICAgICAgICBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oKmNvbm5lY3Rpb25SZXF1ZXN0LndlYlByb2Nlc3MsIFdURk1vdmUoY29ubmVjdGlvblJlcXVl
c3QucmVwbHkpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgY29ubmVjdGlvblJlcXVlc3Qu
cmVwbHkoeyB9KTsKLSAgICB9Ci0KICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAobV9wcm9j
ZXNzUG9vbC5wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCkpCiAgICAgICAgIHNldFByb2Nlc3NT
dXBwcmVzc2lvbkVuYWJsZWQodHJ1ZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjU5NTc3
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4NiwxOSArMjg2LDEwIEBAIHByaXZhdGU6CiAgICAgLy8g
UHJvY2Vzc0xhdW5jaGVyOjpDbGllbnQKICAgICB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9j
ZXNzTGF1bmNoZXIqLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpIG92ZXJyaWRlOwogCi0g
ICAgdm9pZCBvcGVuTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90IGNvbm5lY3Rpb25S
ZXF1ZXN0SWRlbnRpZmllciwgV2ViUHJvY2Vzc1Byb3h5Jik7Ci0KICAgICB2b2lkIHByb2Nlc3NB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShQQUw6OlNlc3Npb25JRCwgUmVmPEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlUHJveHk+JiYpOwogCiAgICAgV2ViUHJvY2Vzc1Bvb2wmIG1fcHJvY2Vzc1Bvb2w7
CiAKLSAgICBzdHJ1Y3QgQ29ubmVjdGlvblJlcXVlc3QgewotICAgICAgICBXZWFrUHRyPFdlYlBy
b2Nlc3NQcm94eT4gd2ViUHJvY2VzczsKLSAgICAgICAgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94
eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uRGVsYXllZFJlcGx5IHJlcGx5OwotICAgIH07
Ci0gICAgdWludDY0X3QgbV9jb25uZWN0aW9uUmVxdWVzdElkZW50aWZpZXIgeyAwIH07Ci0gICAg
SGFzaE1hcDx1aW50NjRfdCwgQ29ubmVjdGlvblJlcXVlc3Q+IG1fY29ubmVjdGlvblJlcXVlc3Rz
OwotCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJzaXRl
RGF0YSk+PiBtX3BlbmRpbmdGZXRjaFdlYnNpdGVEYXRhQ2FsbGJhY2tzOwogICAgIEhhc2hNYXA8
dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4+IG1fcGVuZGluZ0RlbGV0ZVdlYnNp
dGVEYXRhQ2FsbGJhY2tzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4+IG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2luc0NhbGxiYWNrczsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI1
OTU3NykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA5NCwxNiArMTA5NCwyMCBAQCBzdGF0aWMgTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uSW5mbyBnZXROCiB7CiAgICAgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mbyBjb25u
ZWN0aW9uSW5mbzsKICAgICBpZiAoIWNvbm5lY3Rpb24uc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCksIE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6UmVwbHkoY29ubmVjdGlv
bkluZm8pLCAwKSkgeworICAgICAgICAvLyBJZiB3ZSBmYWlsZWQgdGhlIGZpcnN0IHRpbWUsIHJl
dHJ5IG9uY2UuIFRoZSBhdHRhY2htZW50IG1heSBoYXZlIGJlY29tZSBpbnZhbGlkCisgICAgICAg
IC8vIGJlZm9yZSBpdCB3YXMgcmVjZWl2ZWQgYnkgdGhlIHdlYiBwcm9jZXNzIGlmIHRoZSBuZXR3
b3JrIHByb2Nlc3MgY3Jhc2hlZC4KKyAgICAgICAgaWYgKCFjb25uZWN0aW9uLnNlbmRTeW5jKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLCBN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OlJl
cGx5KGNvbm5lY3Rpb25JbmZvKSwgMCkpIHsKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JN
KFdQRSkKLSAgICAgICAgLy8gR1RLKyBhbmQgV1BFIHBvcnRzIGRvbid0IGV4aXQgb24gc2VuZCBz
eW5jIG1lc3NhZ2UgZmFpbHVyZS4KLSAgICAgICAgLy8gSW4gdGhpcyBwYXJ0aWN1bGFyIGNhc2Us
IHRoZSBuZXR3b3JrIHByb2Nlc3MgY2FuIGJlIHRlcm1pbmF0ZWQgYnkgdGhlIFVJIHByb2Nlc3Mg
d2hpbGUgdGhlCi0gICAgICAgIC8vIFdlYiBwcm9jZXNzIGlzIHN0aWxsIGluaXRpYWxpemluZywg
c28gd2UgYWx3YXlzIHdhbnQgdG8gZXhpdCBpbnN0ZWFkIG9mIGNyYXNoaW5nLiBUaGlzIGNhbgot
ICAgICAgICAvLyBoYXBwZW4gd2hlbiB0aGUgV2ViVmlldyBpcyBjcmVhdGVkIGFuZCB0aGVuIGRl
c3Ryb3llZCBxdWlja2x5LgotICAgICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4MzM0OC4KLSAgICAgICAgZXhpdCgwKTsKKyAgICAgICAgICAgIC8v
IEdUSysgYW5kIFdQRSBwb3J0cyBkb24ndCBleGl0IG9uIHNlbmQgc3luYyBtZXNzYWdlIGZhaWx1
cmUuCisgICAgICAgICAgICAvLyBJbiB0aGlzIHBhcnRpY3VsYXIgY2FzZSwgdGhlIG5ldHdvcmsg
cHJvY2VzcyBjYW4gYmUgdGVybWluYXRlZCBieSB0aGUgVUkgcHJvY2VzcyB3aGlsZSB0aGUKKyAg
ICAgICAgICAgIC8vIFdlYiBwcm9jZXNzIGlzIHN0aWxsIGluaXRpYWxpemluZywgc28gd2UgYWx3
YXlzIHdhbnQgdG8gZXhpdCBpbnN0ZWFkIG9mIGNyYXNoaW5nLiBUaGlzIGNhbgorICAgICAgICAg
ICAgLy8gaGFwcGVuIHdoZW4gdGhlIFdlYlZpZXcgaXMgY3JlYXRlZCBhbmQgdGhlbiBkZXN0cm95
ZWQgcXVpY2tseS4KKyAgICAgICAgICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTgzMzQ4LgorICAgICAgICAgICAgZXhpdCgwKTsKICNlbHNlCi0gICAg
ICAgIENSQVNIKCk7CisgICAgICAgICAgICBDUkFTSCgpOwogI2VuZGlmCisgICAgICAgIH0KICAg
ICB9CiAKICAgICByZXR1cm4gY29ubmVjdGlvbkluZm87CkBAIC0xMjE3LDggKzEyMjEsMTIgQEAg
V2ViTG9hZGVyU3RyYXRlZ3kmIFdlYlByb2Nlc3M6OndlYkxvYWRlcgogc3RhdGljIEdQVVByb2Nl
c3NDb25uZWN0aW9uSW5mbyBnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24pCiB7CiAgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvIGNvbm5lY3Rpb25J
bmZvOwotICAgIGlmICghY29ubmVjdGlvbi5zZW5kU3luYyhNZXNzYWdlczo6V2ViUHJvY2Vzc1By
b3h5OjpHZXRHUFVQcm9jZXNzQ29ubmVjdGlvbigpLCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5
OjpHZXRHUFVQcm9jZXNzQ29ubmVjdGlvbjo6UmVwbHkoY29ubmVjdGlvbkluZm8pLCAwKSkKLSAg
ICAgICAgQ1JBU0goKTsKKyAgICBpZiAoIWNvbm5lY3Rpb24uc2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlByb2Nlc3NQcm94eTo6R2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKSwgTWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6R2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OlJlcGx5KGNvbm5lY3Rpb25JbmZv
KSwgMCkpIHsKKyAgICAgICAgLy8gSWYgd2UgZmFpbGVkIHRoZSBmaXJzdCB0aW1lLCByZXRyeSBv
bmNlLiBUaGUgYXR0YWNobWVudCBtYXkgaGF2ZSBiZWNvbWUgaW52YWxpZAorICAgICAgICAvLyBi
ZWZvcmUgaXQgd2FzIHJlY2VpdmVkIGJ5IHRoZSB3ZWIgcHJvY2VzcyBpZiB0aGUgbmV0d29yayBw
cm9jZXNzIGNyYXNoZWQuCisgICAgICAgIGlmICghY29ubmVjdGlvbi5zZW5kU3luYyhNZXNzYWdl
czo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRHUFVQcm9jZXNzQ29ubmVjdGlvbigpLCBNZXNzYWdlczo6
V2ViUHJvY2Vzc1Byb3h5OjpHZXRHUFVQcm9jZXNzQ29ubmVjdGlvbjo6UmVwbHkoY29ubmVjdGlv
bkluZm8pLCAwKSkKKyAgICAgICAgICAgIENSQVNIKCk7CisgICAgfQogCiAgICAgcmV0dXJuIGNv
bm5lY3Rpb25JbmZvOwogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQ
cm9jZXNzQ29ubmVjdGlvbkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uSW5mby5oCShyZXZpc2lvbiAyNTk1NzcpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uSW5mby5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIHN0cnVjdCBHUFVQcm9jZXNzQ29ubmVj
dGlvbkluZm8gewogICAgIE9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW47CiAjZW5k
aWYKIAotICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBpZGVudGlmaWVyKCkKKyAgICBJ
UEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0CiAgICAgewogI2lm
IFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgICAgICByZXR1cm4gSVBDOjpDb25uZWN0aW9u
OjpJZGVudGlmaWVyKGNvbm5lY3Rpb24uZmlsZURlc2NyaXB0b3IoKSk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uSW5mby5oCShyZXZpc2lvbiAyNTk1NzcpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgc3RydWN0IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bkluZm8gewogICAgIE9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW47CiAjZW5kaWYK
IAotICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBpZGVudGlmaWVyKCkKKyAgICBJUEM6
OkNvbm5lY3Rpb246OklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0CiAgICAgewogI2lmIFVT
RShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgICAgICByZXR1cm4gSVBDOjpDb25uZWN0aW9uOjpJ
ZGVudGlmaWVyKGNvbm5lY3Rpb24uZmlsZURlc2NyaXB0b3IoKSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>