<?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>215830</bug_id>
          
          <creation_ts>2020-08-25 16:50:36 -0700</creation_ts>
          <short_desc>HashMap&lt;Ref&lt;T&gt;&gt;::take should return RefPtr&lt;T&gt;</short_desc>
          <delta_ts>2020-08-25 19:43:11 -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>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=215562</see_also>
          <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="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>alecflett</cc>
    
    <cc>apinheiro</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mjs</cc>
    
    <cc>philipj</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1682851</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-08-25 16:50:36 -0700</bug_when>
    <thetext>HashMap&lt;Ref&lt;T&gt;&gt;::take should return RefPtr&lt;T&gt; instead of Optional&lt;Ref&lt;T&gt;&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682860</commentid>
    <comment_count>1</comment_count>
      <attachid>407253</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-08-25 17:33:59 -0700</bug_when>
    <thetext>Created attachment 407253
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682861</commentid>
    <comment_count>2</comment_count>
      <attachid>407253</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-25 18:05:30 -0700</bug_when>
    <thetext>Comment on attachment 407253
Patch

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

Looks like an improvement at almost every call site.

&gt; Source/WTF/wtf/HashTraits.h:215
&gt; +    typedef RefPtr&lt;P&gt; TakeType;

Since we’re touching it we could use using instead of typedef.

&gt; Source/WebCore/dom/ScriptRunner.cpp:102
&gt; -        ASSERT(m_pendingAsyncScripts.contains(pendingScript));
&gt; -        m_scriptsToExecuteSoon.append(m_pendingAsyncScripts.take(pendingScript)-&gt;ptr());
&gt; +        auto script = m_pendingAsyncScripts.take(pendingScript);
&gt; +        ASSERT(script);
&gt; +        m_scriptsToExecuteSoon.append(script.releaseNonNull());

This is an example where the &quot;after&quot; looks worse because releaseNonNull is such a long function name. But I see that there was reference count churn in the old version!

No need to assert non-null separately before calling releaseNonNull, because that asserts. I would write this as a one-liner, I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682870</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-08-25 18:40:54 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Comment on attachment 407253 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=407253&amp;action=review
&gt; 
&gt; Looks like an improvement at almost every call site.
&gt; 
&gt; &gt; Source/WTF/wtf/HashTraits.h:215
&gt; &gt; +    typedef RefPtr&lt;P&gt; TakeType;
&gt; 
&gt; Since we’re touching it we could use using instead of typedef.

Fixed. I&apos;m gonna also fix PeekType.

&gt; &gt; Source/WebCore/dom/ScriptRunner.cpp:102
&gt; &gt; -        ASSERT(m_pendingAsyncScripts.contains(pendingScript));
&gt; &gt; -        m_scriptsToExecuteSoon.append(m_pendingAsyncScripts.take(pendingScript)-&gt;ptr());
&gt; &gt; +        auto script = m_pendingAsyncScripts.take(pendingScript);
&gt; &gt; +        ASSERT(script);
&gt; &gt; +        m_scriptsToExecuteSoon.append(script.releaseNonNull());
&gt; 
&gt; This is an example where the &quot;after&quot; looks worse because releaseNonNull is
&gt; such a long function name. But I see that there was reference count churn in
&gt; the old version!
&gt; 
&gt; No need to assert non-null separately before calling releaseNonNull, because
&gt; that asserts. I would write this as a one-liner, I think.

Sure, I&apos;d use the one liner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682871</commentid>
    <comment_count>4</comment_count>
      <attachid>407256</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-08-25 18:41:24 -0700</bug_when>
    <thetext>Created attachment 407256
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682882</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-25 19:25:10 -0700</bug_when>
    <thetext>Committed r266157: &lt;https://trac.webkit.org/changeset/266157&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 407256.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682883</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-25 19:26:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/67774006&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407253</attachid>
            <date>2020-08-25 17:33:59 -0700</date>
            <delta_ts>2020-08-25 18:41:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215830-20200825173359.patch</filename>
            <type>text/plain</type>
            <size>21479</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGEwMjkxNGMxMzZlNjFkZjQ0YTE3ZjFh
NzgwMTNhZDIzYTJmNDgzYTEuLmYzMWQ5OGE4MzZhZmI5MzI1M2JkM2JlMjA1NDRjOWUxOThlZmZj
OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDgtMjUgIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgSGFzaE1hcDxSZWY8VD4+Ojp0YWtlIHNob3VsZCByZXR1
cm4gUmVmUHRyPFQ+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTU4MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVcGRhdGVkIHRoZSBoYXNoIHRyYWl0cyBmb3IgUmVmPFQ+IHRvIG1ha2UgSGFzaE1hcDxS
ZWY8VD4+IGFuZCBIYXNoU2V0PFJlZjxUPj4KKyAgICAgICAgcmV0dXJuIFJlZlB0cjxUPiBpbnN0
YWQgb2YgT3B0aW9uYWw8UmVmPFQ+Pi4KKworICAgICAgICAqIHd0Zi9IYXNoVHJhaXRzLmg6Cisg
ICAgICAgIChXVEY6OlJlZkhhc2hUcmFpdHM6OnRha2UpOgorCiAyMDIwLTA4LTI1ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBBc3NlcnQgZmFp
bHVyZSB1bmRlciBSdW5Mb29wOjpSdW5Mb29wCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWI3ZGRkYjIzMGY1YjUy
ZTYwZTk1ZTEwOTkxYmE2MDI3Y2M0YzZiMi4uMDRkODRiNmRiMGYxNTQ5ZDA5YzhiMzQ1NWNhYzNi
NGUyMjQzNWVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIwLTA4LTI1ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEhhc2hNYXA8UmVmPFQ+Pjo6
dGFrZSBzaG91bGQgcmV0dXJuIFJlZlB0cjxUPgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1ODMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVj
dGlvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlv
blByb3h5OjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVUcmVlRm9yUGFnZUlEKToKKyAgICAgICAgKiBj
cnlwdG8vU3VidGxlQ3J5cHRvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFByb21pc2UpOgor
ICAgICAgICAqIGRvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjphZGRFbGVtZW50RGVmaW5pdGlvbik6CisgICAgICAg
ICogZG9tL1NjcmlwdFJ1bm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRSdW5uZXI6
Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNT
U0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpkaWRSZW1v
dmVET01Ob2RlKToKKyAgICAgICAgKiBwYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlT3ZlcmxheUNvbnRyb2xsZXI6OnVuaW5zdGFsbFBhZ2VPdmVy
bGF5KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudHM6OmNsYWltKToKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpjYW5jZWxGZXRj
aCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6d29ya2VyQ29udGV4dFRlcm1pbmF0ZWQpOgorCiAyMDIw
LTA4LTI1ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAgV2hlbiB1
c2luZyBhaXJwbGF5IHdpdGggWW91dHViZSwgdGhlIFlvdXR1YmUgdGFiIGJlY29tZXMgY29tcGxl
dGVseSBlbXB0eSBhbmQgaXMgdW5yZXNwb25zaXZlIGZvciBhbiBleHRlbmRlZCBwZXJpb2Qgb2Yg
dGltZSBpZiB3ZSBzd2l0Y2ggdGhlIHRhYgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiNTM3ZTFiNDllY2NiNzQ1NTJh
YWFkYjA4MDVmODk1Njk4MmQ3N2QzLi5kOTI1ZmMyZTdlNjBiNDcwYzljM2FhYTI1ZTczMzcxZGU0
M2JjZWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTA4LTI1ICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEhhc2hNYXA8UmVmPFQ+Pjo6dGFrZSBz
aG91bGQgcmV0dXJuIFJlZlB0cjxUPgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE1ODMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25N
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFn
ZXI6OmRlbGV0ZUF1ZGlvRGVzdGluYXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3Vy
Y2VMb2FkTWFwOjp0YWtlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9u
Ojp3aWxsQ2xvc2VQYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXI6OnRhc2tDb21wbGV0
ZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyOjp1c2VyTWVkaWFBY2Nlc3NXYXNHcmFudGVkKToKKyAgICAgICAgKFdl
YktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjp1c2VyTWVkaWFBY2Nlc3NX
YXNEZW5pZWQpOgorCiAyMDIwLTA4LTI1ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBh
cHBsZS5jb20+CiAKICAgICAgICAgVHJ5aW5nIHRvIGxvb2t1cCB3aGVuIFdlYlZpZXcgaXMgaW4g
YSBwb3BvdmVyIGNhdXNlcyBwcm9jZXNzIHRvIGhhbmcuIEZpeCBmb3IgTGVnYWN5IFdlYlZpZXcu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggMjczNmQ3ZjljMjM1MjI0NDhlYWNjNTU4
MWFjY2RjYzNmYjJmNzUwNy4uY2Y4NWFlZWQ0MTBkNGIxMzY2MWIyM2Q4YmVjMjMxNDljNDRjNTJm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTA4
LTI1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEhhc2hNYXA8
UmVmPFQ+Pjo6dGFrZSBzaG91bGQgcmV0dXJuIFJlZlB0cjxUPgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1ODMwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQubW06CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmRpZENoZWNrU3VjY2VlZCk6CisK
IDIwMjAtMDgtMjUgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBUcnlpbmcgdG8gbG9va3VwIHdoZW4gV2ViVmlldyBpcyBpbiBhIHBvcG92ZXIgY2F1
c2VzIHByb2Nlc3MgdG8gaGFuZy4gRml4IGZvciBMZWdhY3kgV2ViVmlldy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0hhc2hUcmFpdHMuaCBiL1NvdXJjZS9XVEYvd3RmL0hhc2hUcmFpdHMu
aAppbmRleCBmZmFmOGU0YmZhNjA5ODU0MTQzMzg4YmRhMjYyOGZjOTBjMzI0ZWFkLi43YWU4M2Nk
ZGU3NjE0MTNmMjNhMjFlZDg3Y2FkMjA4MWRmMzRlYWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9IYXNoVHJhaXRzLmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaFRyYWl0cy5oCkBAIC0y
MTIsOCArMjEyLDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IFJlZkhhc2hUcmFpdHMg
OiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8UmVmPFA+PiB7CiAgICAgc3RhdGljIFBlZWtUeXBlIHBl
ZWsoY29uc3QgUmVmPFA+JiB2YWx1ZSkgeyByZXR1cm4gY29uc3RfY2FzdDxQZWVrVHlwZT4odmFs
dWUucHRyQWxsb3dpbmdIYXNoVGFibGVFbXB0eVZhbHVlKCkpOyB9CiAgICAgc3RhdGljIFBlZWtU
eXBlIHBlZWsoUCogdmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9CiAKLSAgICB0eXBlZGVmIE9wdGlv
bmFsPFJlZjxQPj4gVGFrZVR5cGU7Ci0gICAgc3RhdGljIFRha2VUeXBlIHRha2UoUmVmPFA+JiYg
dmFsdWUpIHsgcmV0dXJuIGlzRW1wdHlWYWx1ZSh2YWx1ZSkgPyBXVEY6Om51bGxvcHQgOiBPcHRp
b25hbDxSZWY8UD4+KFdURk1vdmUodmFsdWUpKTsgfQorICAgIHR5cGVkZWYgUmVmUHRyPFA+IFRh
a2VUeXBlOworICAgIHN0YXRpYyBUYWtlVHlwZSB0YWtlKFJlZjxQPiYmIHZhbHVlKSB7IHJldHVy
biBpc0VtcHR5VmFsdWUodmFsdWUpID8gbnVsbHB0ciA6IFJlZlB0cjxQPihXVEZNb3ZlKHZhbHVl
KSk7IH0KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFA+IHN0cnVjdCBIYXNoVHJhaXRzPFJlZjxQ
Pj4gOiBSZWZIYXNoVHJhaXRzPFA+IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5jcHAKaW5k
ZXggMzk3MTI4NWM4MGQ1NDUzZmExZTVkYTAxMmJjMmMxYzA4MjUzMmM4ZC4uY2QzNjk5Y2I4ZDQ0
OTVlMWI4YjVmOTY1YjkwNGE5ODhlNjFmNWE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5j
cHAKQEAgLTUyOCwxMiArNTI4LDkgQEAgdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmRpZEdldEFs
bERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhjb25zdCBJREJSZXNvdXJjZUlkZW4KICAgICBSZWZQ
dHI8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvblJlcXVlc3Q+IHJlcXVlc3Q7CiAgICAgewogICAg
ICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1fZGF0YWJhc2VJbmZvTWFwTG9jayk7Ci0gICAgICAg
IGF1dG8gdGFrZW5SZXF1ZXN0ID0gbV9kYXRhYmFzZUluZm9DYWxsYmFja3MudGFrZShyZXF1ZXN0
SWRlbnRpZmllcik7Ci0KLSAgICAgICAgaWYgKCF0YWtlblJlcXVlc3QpCisgICAgICAgIHJlcXVl
c3QgPSBtX2RhdGFiYXNlSW5mb0NhbGxiYWNrcy50YWtlKHJlcXVlc3RJZGVudGlmaWVyKTsKKyAg
ICAgICAgaWYgKCFyZXF1ZXN0KQogICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHJlcXVl
c3QgPSBXVEZNb3ZlKCp0YWtlblJlcXVlc3QpOwogICAgIH0KIAogICAgIHJlcXVlc3QtPnBlcmZv
cm1DYWxsYmFja09uT3JpZ2luVGhyZWFkKCpyZXF1ZXN0LCAmSURCRGF0YWJhc2VOYW1lQW5kVmVy
c2lvblJlcXVlc3Q6OmNvbXBsZXRlLCBXVEZNb3ZlKGRhdGFiYXNlcykpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZFRyZWUuY3BwCmluZGV4IGFkYmNjZDNmNWE1MDY4OWE1NjNhYmI3MDJlOWZhNmE2MmM0OGQ4OWEu
LjUyYzYzYzU0NWRjNDllMjQ2MWY5ODY0Yjc1OTQ3NjY1OTJiODliNjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xh
dGVkVHJlZS5jcHAKQEAgLTEyMSw4ICsxMjEsNyBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpyZW1v
dmVUcmVlRm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogICAgIExvY2tIb2xkZXIgbG9ja2VyKHNfY2FjaGVMb2NrKTsKIAotICAgIGlm
IChhdXRvIG9wdGlvbmFsVHJlZSA9IHRyZWVQYWdlQ2FjaGUoKS50YWtlKHBhZ2VJRCkpIHsKLSAg
ICAgICAgYXV0byYgdHJlZSB7ICpvcHRpb25hbFRyZWUgfTsKKyAgICBpZiAoYXV0byB0cmVlID0g
dHJlZVBhZ2VDYWNoZSgpLnRha2UocGFnZUlEKSkgewogICAgICAgICB0cmVlLT5jbGVhcigpOwog
ICAgICAgICB0cmVlSURDYWNoZSgpLnJlbW92ZSh0cmVlLT50cmVlSUQoKSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL1N1YnRsZUNyeXB0by5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcAppbmRleCA0NTAzOGJkMWIwYjdiZDhlMzQz
NDE3MTc3Yjc0N2RjZTIyNjQ2NzI4Li5lZWU1NmU0OTk5YmE3NDkwZDY4ZmIzZmQzOWJhYzI4MjYx
YjdkOGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcApAQCAtNTA5LDEw
ICs1MDksOCBAQCBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZEV4cG9ydEtleShDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyIGlkZW50aWZpZXIpCiAKIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+IGdldFBy
b21pc2UoRGVmZXJyZWRQcm9taXNlKiBpbmRleCwgV2Vha1B0cjxTdWJ0bGVDcnlwdG8+IHN1YnRs
ZUNyeXB0b1dlYWtQb2ludGVyKQogewotICAgIGlmIChzdWJ0bGVDcnlwdG9XZWFrUG9pbnRlcikg
ewotICAgICAgICBpZiAoYXV0byBwcm9taXNlID0gc3VidGxlQ3J5cHRvV2Vha1BvaW50ZXItPm1f
cGVuZGluZ1Byb21pc2VzLnRha2UoaW5kZXgpKQotICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUo
cHJvbWlzZS52YWx1ZSgpKTsKLSAgICB9CisgICAgaWYgKHN1YnRsZUNyeXB0b1dlYWtQb2ludGVy
KQorICAgICAgICByZXR1cm4gc3VidGxlQ3J5cHRvV2Vha1BvaW50ZXItPm1fcGVuZGluZ1Byb21p
c2VzLnRha2UoaW5kZXgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwCmluZGV4IDY4Yzc4ZDUzMDE3N2RlM2Vl
OGY0MWJmNGJmMDkwZWUwNGEyMGNlNGYuLjQzMzU0ZTNhOTRjZmNiMmM1NzJlMmY4ZGQzNTI2ZTMy
ZmZiZWJjOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVn
aXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnku
Y3BwCkBAIC03Niw5ICs3Niw3IEBAIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+IEN1c3RvbUVsZW1l
bnRSZWdpc3RyeTo6YWRkRWxlbWVudERlZmluaXRpb24oUmVmPEpTQ3VzdG9tCiAgICAgaWYgKGF1
dG8qIGRvY3VtZW50ID0gbV93aW5kb3cuZG9jdW1lbnQoKSkKICAgICAgICAgZW5xdWV1ZVVwZ3Jh
ZGVJblNoYWRvd0luY2x1ZGluZ1RyZWVPcmRlcigqZG9jdW1lbnQsIGVsZW1lbnRJbnRlcmZhY2Uu
Z2V0KCkpOwogCi0gICAgaWYgKGF1dG8gcHJvbWlzZSA9IG1fcHJvbWlzZU1hcC50YWtlKGxvY2Fs
TmFtZSkpCi0gICAgICAgIHJldHVybiBXVEZNb3ZlKCpwcm9taXNlKTsKLSAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICByZXR1cm4gbV9wcm9taXNlTWFwLnRha2UobG9jYWxOYW1lKTsKIH0KIAogSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlKiBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmZpbmRJbnRlcmZh
Y2UoY29uc3QgRWxlbWVudCYgZWxlbWVudCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRSdW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdFJ1bm5l
ci5jcHAKaW5kZXggNTllMjA5MmJhOGIyYWYxZGU2Yjk3OTljNDg3MTA1NWNlZDRkYmQxNy4uNzIw
OWVjMDZlOWQ3Yzc2YWQ1YmE4NzBhODZhMzQyM2YwM2Y4ODQ4NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdFJ1bm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdFJ1bm5lci5jcHAKQEAgLTk3LDggKzk3LDkgQEAgdm9pZCBTY3JpcHRSdW5uZXI6Om5vdGlm
eUZpbmlzaGVkKFBlbmRpbmdTY3JpcHQmIHBlbmRpbmdTY3JpcHQpCiAgICAgaWYgKHBlbmRpbmdT
Y3JpcHQuZWxlbWVudCgpLndpbGxFeGVjdXRlSW5PcmRlcigpKQogICAgICAgICBBU1NFUlQoIW1f
c2NyaXB0c1RvRXhlY3V0ZUluT3JkZXIuaXNFbXB0eSgpKTsKICAgICBlbHNlIHsKLSAgICAgICAg
QVNTRVJUKG1fcGVuZGluZ0FzeW5jU2NyaXB0cy5jb250YWlucyhwZW5kaW5nU2NyaXB0KSk7Ci0g
ICAgICAgIG1fc2NyaXB0c1RvRXhlY3V0ZVNvb24uYXBwZW5kKG1fcGVuZGluZ0FzeW5jU2NyaXB0
cy50YWtlKHBlbmRpbmdTY3JpcHQpLT5wdHIoKSk7CisgICAgICAgIGF1dG8gc2NyaXB0ID0gbV9w
ZW5kaW5nQXN5bmNTY3JpcHRzLnRha2UocGVuZGluZ1NjcmlwdCk7CisgICAgICAgIEFTU0VSVChz
Y3JpcHQpOworICAgICAgICBtX3NjcmlwdHNUb0V4ZWN1dGVTb29uLmFwcGVuZChzY3JpcHQucmVs
ZWFzZU5vbk51bGwoKSk7CiAgICAgfQogICAgIHBlbmRpbmdTY3JpcHQuY2xlYXJDbGllbnQoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JD
U1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNT
U0FnZW50LmNwcAppbmRleCBmNGZhNzcwZTAzYjcwNzA2NGQxMjMyZmY4NDQzOTA2MzhjMTg0MTdj
Li41NjVlYmUwODJjMDc4YmI2Njg3NzQwMzg5ZWIzNzJlZTExOWI3NDFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcApA
QCAtMTAzMCw3ICsxMDMwLDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkUmVtb3ZlRE9N
Tm9kZShOb2RlJiBub2RlLCBpbnQgbm9kZUlkKQogICAgIGF1dG8gc2hlZXQgPSBtX25vZGVUb0lu
c3BlY3RvclN0eWxlU2hlZXQudGFrZSgmbm9kZSk7CiAgICAgaWYgKCFzaGVldCkKICAgICAgICAg
cmV0dXJuOwotICAgIG1faWRUb0luc3BlY3RvclN0eWxlU2hlZXQucmVtb3ZlKHNoZWV0LnZhbHVl
KCktPmlkKCkpOworICAgIG1faWRUb0luc3BlY3RvclN0eWxlU2hlZXQucmVtb3ZlKHNoZWV0LT5p
ZCgpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkTW9kaWZ5RE9NQXR0cihFbGVt
ZW50JiBlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlT3Zlcmxh
eUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlT3ZlcmxheUNvbnRyb2xs
ZXIuY3BwCmluZGV4IDQ4MTAyYTU3MjI4MTkwOTEyOTFjZjc2NDk0MTBkYjA0NjZkMGQwODMuLmE1
YWRjM2FhOWM5OGIyZTk1MDNhYzU5YTFhNTJhYjEzMDliMThjMDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZU92ZXJsYXlDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5jcHAKQEAgLTIyNyw3ICsyMjcsNyBAQCB2
b2lkIFBhZ2VPdmVybGF5Q29udHJvbGxlcjo6dW5pbnN0YWxsUGFnZU92ZXJsYXkoUGFnZU92ZXJs
YXkmIG92ZXJsYXksIFBhZ2VPdmVybAogICAgIG92ZXJsYXkuc2V0UGFnZShudWxscHRyKTsKIAog
ICAgIGlmIChhdXRvIG9wdGlvbmFsTGF5ZXIgPSBtX292ZXJsYXlHcmFwaGljc0xheWVycy50YWtl
KCZvdmVybGF5KSkKLSAgICAgICAgb3B0aW9uYWxMYXllci52YWx1ZSgpLT5yZW1vdmVGcm9tUGFy
ZW50KCk7CisgICAgICAgIG9wdGlvbmFsTGF5ZXItPnJlbW92ZUZyb21QYXJlbnQoKTsKIAogICAg
IGJvb2wgcmVtb3ZlZCA9IG1fcGFnZU92ZXJsYXlzLnJlbW92ZUZpcnN0KCZvdmVybGF5KTsKICAg
ICBBU1NFUlRfVU5VU0VEKHJlbW92ZWQsIHJlbW92ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHAKaW5kZXggY2I4
ZjY2YWMyYzE3OWI3ZmNiMTBhNjA1NTc0YTQ1OTIzYmJiNWI5ZC4uYmE0MmVhMjM4ZGM2Zjg1NjQ5
NzdkZTM4ODAyMjMwNWU2ZmY1YTA2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwCkBAIC0xMjQsNyArMTI0LDcg
QEAgdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50czo6Y2xhaW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgUmVmPERlZmVycmVkUHIKICAgICAgICAgY29ubmVjdGlvbi0+Y2xhaW0oc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIFtwcm9taXNlUG9pbnRlciwgc2VydmljZVdvcmtlcklkZW50
aWZpZXJdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgU1dDb250ZXh0TWFu
YWdlcjo6c2luZ2xldG9uKCkucG9zdFRhc2tUb1NlcnZpY2VXb3JrZXIoc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIFtwcm9taXNlUG9pbnRlciwgcmVzdWx0ID0gaXNvbGF0ZWRDb3B5KFdURk1vdmUo
cmVzdWx0KSldKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0
byBwcm9taXNlID0gc2NvcGUuY2xpZW50cygpLm1fcGVuZGluZ1Byb21pc2VzLnRha2UocHJvbWlz
ZVBvaW50ZXIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIERPTVByb21pc2VEZWZlcnJlZDx2b2lk
PiBwZW5kaW5nUHJvbWlzZSB7IFdURk1vdmUocHJvbWlzZS52YWx1ZSgpKSB9OworICAgICAgICAg
ICAgICAgICAgICBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4gcGVuZGluZ1Byb21pc2UgeyBwcm9t
aXNlLnJlbGVhc2VOb25OdWxsKCkgfTsKICAgICAgICAgICAgICAgICAgICAgcGVuZGluZ1Byb21p
c2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAppbmRleCA1ZDFlZDEx
ZDZlODcwNTgyOGJiOWRiMTI5MDY0YzliNDIzMGMyM2U2Li5iNzdmMzc0NTJiYzA2NWVlYWQzZmZi
ZjY0MmQ0MWY4YTMxNTFjZGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5j
cHAKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6Y2Fu
Y2VsRmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aQogICAgIGlmICht
X29uZ29pbmdGZXRjaFRhc2tzLmlzRW1wdHkoKSkKICAgICAgICAgdGhyZWFkKCkuc3RvcEZldGNo
RXZlbnRNb25pdG9yaW5nKCk7CiAKLSAgICBwb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNj
b3BlKFtjbGllbnQgPSBXVEZNb3ZlKGNsaWVudC52YWx1ZSgpKV0gKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmKSB7CisgICAgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbY2xpZW50
ID0gY2xpZW50LnJlbGVhc2VOb25OdWxsKCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jikgewog
ICAgICAgICBjbGllbnQtPmNhbmNlbCgpOwogICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRN
b2RlKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyLmNwcAppbmRleCAxNjQ2YjFmYjdlZGJjY2Q2OWMzNzEyNTg3ZDYwMDYyMDc1Zjc3
YThmLi4zMTVlZmE2ODNiYjg4OTBhMjM0NmVlOTEzZDllYmMxYTJmODE3NGU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAt
NzgxLDcgKzc4MSw3IEBAIHZvaWQgU1dTZXJ2ZXI6OndvcmtlckNvbnRleHRUZXJtaW5hdGVkKFNX
U2VydmVyV29ya2VyJiB3b3JrZXIpCiAgICAgLy8gQXQgdGhpcyBwb2ludCBpZiBubyByZWdpc3Ry
YXRpb25zIGFyZSByZWZlcmVuY2luZyB0aGUgd29ya2VyIHRoZW4gaXQgd2lsbCBiZSBkZXN0cm95
ZWQsCiAgICAgLy8gcmVtb3ZpbmcgaXRzZWxmIGZyb20gdGhlIG1fd29ya2Vyc0J5SUQgbWFwLgog
ICAgIGF1dG8gcmVzdWx0ID0gbV9ydW5uaW5nT3JUZXJtaW5hdGluZ1dvcmtlcnMudGFrZSh3b3Jr
ZXIuaWRlbnRpZmllcigpKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ICYmIHJl
c3VsdC0+cHRyKCkgPT0gJndvcmtlcik7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3Vs
dCA9PSAmd29ya2VyKTsKIAogICAgIHdvcmtlci5zZXRTdGF0ZShTV1NlcnZlcldvcmtlcjo6U3Rh
dGU6Ok5vdFJ1bm5pbmcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcAppbmRleCA0
NmFjNzhiZDIyOGRiZjFmOGM1MzBlM2ExOGNkNDQ5NmEyOGExOTc5Li42YTEwMWMzOTU5M2NjNGMx
NTRjNzQ1ZjZkNzk3MzdhMDJhOTIzZjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5j
cHAKQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2Vy
OjpkZWxldGVBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpbwogewogICAgIGF1
dG8gZGVzdGluYXRpb24gPSBtX2F1ZGlvRGVzdGluYXRpb25zLnRha2UoaWQpOwogICAgIGlmIChk
ZXN0aW5hdGlvbikKLSAgICAgICAgZGVzdGluYXRpb24udmFsdWUoKS0+c2NoZWR1bGVHcmFjZWZ1
bFNodXRkb3duSWZOZWVkZWQoKTsKKyAgICAgICAgZGVzdGluYXRpb24tPnNjaGVkdWxlR3JhY2Vm
dWxTaHV0ZG93bklmTmVlZGVkKCk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
TWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZE1hcC5jcHAKaW5kZXggN2RmMDhiMmM2N2Y2OGRlOTAzYTI0ZjVjZGIwZTg3Y2ViNGQ2ZmIyYS4u
ZGI5N2Y1NTJmZWU3YTM4OTE2NTFmM2JkZDZlNGFkZWU2MjQ3YTJlOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkTWFwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRNYXAuY3Bw
CkBAIC02NiwxMCArNjYsMTAgQEAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gTmV0d29y
a1Jlc291cmNlTG9hZE1hcDo6dGFrZShSZXNvdXJjZUxvYWRJZGVudGlmaWUKICAgICBpZiAoIWxv
YWRlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAoKCpsb2FkZXIpLT5vcmln
aW5hbFJlcXVlc3QoKS5oYXNVcGxvYWQoKSkKKyAgICBpZiAobG9hZGVyLT5vcmlnaW5hbFJlcXVl
c3QoKS5oYXNVcGxvYWQoKSkKICAgICAgICAgc2V0SGFzVXBsb2FkKFdURjo6YW55T2YobV9sb2Fk
ZXJzLnZhbHVlcygpLCBbXShhdXRvJiBsb2FkZXIpIHsgcmV0dXJuIGxvYWRlci0+b3JpZ2luYWxS
ZXF1ZXN0KCkuaGFzVXBsb2FkKCk7IH0pKTsKIAotICAgIHJldHVybiBXVEZNb3ZlKCpsb2FkZXIp
OworICAgIHJldHVybiBsb2FkZXI7CiB9CiAKIE5ldHdvcmtSZXNvdXJjZUxvYWRlciogTmV0d29y
a1Jlc291cmNlTG9hZE1hcDo6Z2V0KFJlc291cmNlTG9hZElkZW50aWZpZXIgaWRlbnRpZmllcikg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggZTZlNGFjYzExYTkxYTM3MGZiNjg4ZmFi
NDhkMjUyMDY5NmQ1MDI4Zi4uZDg3YTRkZmVjNzk0ZjMxZGNiNjRlNWU5ZWY0YmNlNGIxOGMxOTJh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTgzNSw5ICs4MzUsOCBAQCB2b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uOjp3aWxsQ2xvc2VQYWdlKGNvbnN0IFdlYlBhZ2VQcm94eSYgcGFnZSkK
IAogI2lmIEVOQUJMRShXRUJEUklWRVJfQUNUSU9OU19BUEkpCiAgICAgLy8gVGhlbiB0ZWxsIHRo
ZSBpbnB1dCBkaXNwYXRjaGVyIHRvIGNhbmNlbCBzbyB0aW1lcnMgYXJlIHN0b3BwZWQsIGFuZCBs
ZXQgaXQgZ28gb3V0IG9mIHNjb3BlLgotICAgIE9wdGlvbmFsPFJlZjxTaW11bGF0ZWRJbnB1dERp
c3BhdGNoZXI+PiBpbnB1dERpc3BhdGNoZXIgPSBtX2lucHV0RGlzcGF0Y2hlcnNCeVBhZ2UudGFr
ZShwYWdlLmlkZW50aWZpZXIoKSk7Ci0gICAgaWYgKGlucHV0RGlzcGF0Y2hlci5oYXNWYWx1ZSgp
KQotICAgICAgICBpbnB1dERpc3BhdGNoZXIudmFsdWUoKS0+Y2FuY2VsKCk7CisgICAgaWYgKGF1
dG8gaW5wdXREaXNwYXRjaGVyID0gbV9pbnB1dERpc3BhdGNoZXJzQnlQYWdlLnRha2UocGFnZS5p
ZGVudGlmaWVyKCkpKQorICAgICAgICBpbnB1dERpc3BhdGNoZXItPmNhbmNlbCgpOwogI2VuZGlm
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5j
cHAKaW5kZXggNGE5Mjc2YWU0ZGViNGViNmUzNjA5MGVmOTRkNzU3ZTNhZDVlZTgxNC4uZmNhNDE5
NTQ2MDFmNTNkNzc5ZjI2ZDYwYWYxYTkwMmU0OWI2ZjcwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCB2
b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXI6OnN0b3BUYXNrKFdlYlBhZ2VQcm94eSYgcGFnZSwgdWlu
dDY0X3QgdGFza0lkZW50aWZpZXIpCiB2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXI6OnRhc2tDb21w
bGV0ZWQoV2ViVVJMU2NoZW1lVGFzayYgdGFzaykKIHsKICAgICBhdXRvIHRha2VuVGFzayA9IG1f
dGFza3MudGFrZSh0YXNrLmlkZW50aWZpZXIoKSk7Ci0gICAgQVNTRVJUX1VOVVNFRCh0YWtlblRh
c2ssIHRha2VuVGFzay0+cHRyKCkgPT0gJnRhc2spOworICAgIEFTU0VSVF9VTlVTRUQodGFrZW5U
YXNrLCB0YWtlblRhc2sgPT0gJnRhc2spOwogICAgIHJlbW92ZVRhc2tGcm9tUGFnZU1hcCh0YXNr
LnBhZ2VQcm94eUlEKCksIHRhc2suaWRlbnRpZmllcigpKTsKIAogICAgIHBsYXRmb3JtVGFza0Nv
bXBsZXRlZCh0YXNrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRp
YVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlci5jcHAKaW5kZXggMzU5OTQxM2NjZTEzZmZkMzZiOWY0ZDc4NzI0OWVjMmQyOWY5NmI3Ny4u
ZmQ2YWI0ZGY3MmYyMWQwOTg5NzcxYTUwYTBkODI1ZDAyZThhZmYzNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFt
L1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKQEAgLTEyNSw3ICsxMjUsNyBA
QCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6dXNlck1lZGlhQWNjZXNz
V2FzR3JhbnRlZCh1aW50NjRfdCByZXF1ZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
cmVxdWVzdC52YWx1ZSgpLT5hbGxvdyhXVEZNb3ZlKGF1ZGlvRGV2aWNlKSwgV1RGTW92ZSh2aWRl
b0RldmljZSksIFdURk1vdmUoZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworICAgIHJlcXVlc3QtPmFsbG93KFdURk1vdmUoYXVkaW9EZXZpY2Up
LCBXVEZNb3ZlKHZpZGVvRGV2aWNlKSwgV1RGTW92ZShkZXZpY2VJZGVudGlmaWVySGFzaFNhbHQp
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyOjp1c2VyTWVkaWFBY2Nlc3NXYXNEZW5pZWQodWludDY0X3QgcmVx
dWVzdElELCBVc2VyTWVkaWFSZXF1ZXN0OjpNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbiByZWFzb24s
IFN0cmluZyYmIGludmFsaWRDb25zdHJhaW50KQpAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjp1c2VyTWVkaWFBY2Nlc3NXYXNEZW5pZWQo
dWludDY0X3QgcmVxdWVzCiAgICAgaWYgKCFyZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAKLSAg
ICByZXF1ZXN0LnZhbHVlKCktPmRlbnkocmVhc29uLCBXVEZNb3ZlKGludmFsaWRDb25zdHJhaW50
KSk7CisgICAgcmVxdWVzdC0+ZGVueShyZWFzb24sIFdURk1vdmUoaW52YWxpZENvbnN0cmFpbnQp
KTsKIH0KIAogdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmVudW1lcmF0
ZU1lZGlhRGV2aWNlcyhEb2N1bWVudCYgZG9jdW1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiwgY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXggMjVhZDdkZTcyMTk0ZWZkNjFjODdhOTdm
YTc3YmQ1YjhkZDUyZmQwYy4uOTJmYThmYmUxMmY4ODI0MDJlMzQ1Yzg3MjdlNzc1N2E5MDY4NDU5
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtMTIyMSwxMiArMTIyMSwxMSBAQCB2b2lkIFdlYkVk
aXRvckNsaWVudDo6aGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hl
Y2tpbmdSZXN1bHQgYQogCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6ZGlkQ2hlY2tTdWNjZWVkKFRl
eHRDaGVja2luZ1JlcXVlc3RJZGVudGlmaWVyIGlkZW50aWZpZXIsIE5TQXJyYXkgKnJlc3VsdHMp
CiB7Ci0gICAgYXV0byByZXF1ZXN0T3B0aW9uYWwgPSBtX3JlcXVlc3RzSW5GbGlnaHQudGFrZShp
ZGVudGlmaWVyKTsKLSAgICBBU1NFUlQocmVxdWVzdE9wdGlvbmFsKTsKLSAgICBpZiAoIXJlcXVl
c3RPcHRpb25hbCkKKyAgICBhdXRvIHJlcXVlc3QgPSBtX3JlcXVlc3RzSW5GbGlnaHQudGFrZShp
ZGVudGlmaWVyKTsKKyAgICBBU1NFUlQocmVxdWVzdCk7CisgICAgaWYgKCFyZXF1ZXN0KQogICAg
ICAgICByZXR1cm47Ci0gICAgCi0gICAgYXV0byByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0T3B0
aW9uYWwudmFsdWUoKSk7CisKICAgICBBU1NFUlQoaWRlbnRpZmllciA9PSByZXF1ZXN0LT5kYXRh
KCkuaWRlbnRpZmllcigpLnZhbHVlKCkpOwogICAgIHJlcXVlc3QtPmRpZFN1Y2NlZWQoY29yZShy
ZXN1bHRzLCByZXF1ZXN0LT5kYXRhKCkuY2hlY2tpbmdUeXBlcygpKSk7CiB9CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZGQwZWMwMzczZTdlMjNl
MGZmYWZlNTdkNGM2MWQwZDJjNzU5YjhlMi4uZGQ0M2QxZDBiNGJmZWE0NDM4OWFiMzMwY2U1ZjJl
ZTEzODdiMjU5ZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA4LTI1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3
ZWJraXQub3JnPgorCisgICAgICAgIEhhc2hNYXA8UmVmPFQ+Pjo6dGFrZSBzaG91bGQgcmV0dXJu
IFJlZlB0cjxUPgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE1ODMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoTWFwLmNwcDoKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hT
ZXQuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjAtMDgtMjUgIENh
cmxvcyBBbGJlcnRvIExvcGV6IFBlcmV6ICA8Y2xvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAg
W1dQRV1bUXRdIEZpeCBxdC13cGUtbWluaWJyb3dzZXIgb24gRGViaWFuMTAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKaW5kZXggMDM0OGNiYzNjZjc3NDMzNWNiNzVh
NmZmZDdmN2QzYTJkNjUwYTBiOS4uMmNjYTczOTE4ODM0OGEyZWVjMzc4ZjhhNmNjMWQzMjU3MDNi
YjY2MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKQEAgLTk0
Niw3ICs5NDYsNyBAQCBURVNUKFdURl9IYXNoTWFwLCBSZWZfVmFsdWUpCiAgICAgICAgIAogICAg
ICAgICBhdXRvIGFPdXQgPSBtYXAudGFrZSgxKTsKICAgICAgICAgQVNTRVJUX1RSVUUoc3RhdGlj
X2Nhc3Q8Ym9vbD4oYU91dCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIGFPdXQudmFsdWUoKS5w
dHIoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgYU91dC5nZXQoKSk7CiAgICAgfQogCiAgICAg
QVNTRVJUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaFNldC5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoU2V0LmNwcAppbmRleCAxYTlkN2Q3MzQ5
MjRjYTZjMzRlNjQ1ZTJmNWZlZWJjYTgzYjMwZmE5Li5lN2NmYmNjYWQxZDQ1OWNkNjRjYTIxMjg4
OGE3YTk2MmNkNWUzMDMxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9IYXNoU2V0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoU2V0
LmNwcApAQCAtNDA0LDcgKzQwNCw3IEBAIFRFU1QoV1RGX0hhc2hTZXQsIFJlZikKIAogICAgICAg
ICBhdXRvIGFPdXQgPSBzZXQudGFrZSgmYSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHN0YXRpY19j
YXN0PGJvb2w+KGFPdXQpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBhT3V0LnZhbHVlKCkucHRy
KCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIGFPdXQuZ2V0KCkpOwogICAgIH0KIAogICAgIEFT
U0VSVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKQEAg
LTQxOSw3ICs0MTksNyBAQCBURVNUKFdURl9IYXNoU2V0LCBSZWYpCiAKICAgICAgICAgYXV0byBh
T3V0ID0gc2V0LnRha2VBbnkoKTsKICAgICAgICAgQVNTRVJUX1RSVUUoc3RhdGljX2Nhc3Q8Ym9v
bD4oYU91dCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIGFPdXQudmFsdWUoKS5wdHIoKSk7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYSwgYU91dC5nZXQoKSk7CiAgICAgfQogCiAgICAgQVNTRVJUX1NU
UkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407256</attachid>
            <date>2020-08-25 18:41:24 -0700</date>
            <delta_ts>2020-08-25 19:25:11 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-215830-20200825184124.patch</filename>
            <type>text/plain</type>
            <size>21680</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGEwMjkxNGMxMzZlNjFkZjQ0YTE3ZjFh
NzgwMTNhZDIzYTJmNDgzYTEuLjE2YTJiNWFkN2I2MjgxYTdlNmI5NDJjNDcxNjFlMGM4Nzc3ZWNi
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDgtMjUgIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgSGFzaE1hcDxSZWY8VD4+Ojp0YWtlIHNob3VsZCByZXR1
cm4gUmVmUHRyPFQ+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTU4MzAKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAg
ICBVcGRhdGVkIHRoZSBoYXNoIHRyYWl0cyBmb3IgUmVmPFQ+IHRvIG1ha2UgSGFzaE1hcDxSZWY8
VD4+IGFuZCBIYXNoU2V0PFJlZjxUPj4KKyAgICAgICAgcmV0dXJuIFJlZlB0cjxUPiBpbnN0YWQg
b2YgT3B0aW9uYWw8UmVmPFQ+Pi4KKworICAgICAgICAqIHd0Zi9IYXNoVHJhaXRzLmg6CisgICAg
ICAgIChXVEY6OlJlZkhhc2hUcmFpdHM6OnRha2UpOgorCiAyMDIwLTA4LTI1ICBQZXIgQXJuZSBW
b2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBBc3NlcnQgZmFpbHVy
ZSB1bmRlciBSdW5Mb29wOjpSdW5Mb29wCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWI3ZGRkYjIzMGY1YjUyZTYw
ZTk1ZTEwOTkxYmE2MDI3Y2M0YzZiMi4uZGRkZmQ4ZjhhMjI1MDljMDBlM2JhMDk4YmEyMWZlNGU5
MTk3MmM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIwLTA4LTI1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEhhc2hNYXA8UmVmPFQ+Pjo6dGFr
ZSBzaG91bGQgcmV0dXJuIFJlZlB0cjxUPgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE1ODMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5
OjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMpOgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVUcmVlRm9yUGFnZUlEKToKKyAgICAgICAgKiBjcnlwdG8v
U3VidGxlQ3J5cHRvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFByb21pc2UpOgorICAgICAg
ICAqIGRvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Vz
dG9tRWxlbWVudFJlZ2lzdHJ5OjphZGRFbGVtZW50RGVmaW5pdGlvbik6CisgICAgICAgICogZG9t
L1NjcmlwdFJ1bm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRSdW5uZXI6Om5vdGlm
eUZpbmlzaGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpkaWRSZW1vdmVET01O
b2RlKToKKyAgICAgICAgKiBwYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlT3ZlcmxheUNvbnRyb2xsZXI6OnVuaW5zdGFsbFBhZ2VPdmVybGF5KToK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudHM6OmNsYWltKToKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpjYW5jZWxGZXRjaCk6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcjo6d29ya2VyQ29udGV4dFRlcm1pbmF0ZWQpOgorCiAyMDIwLTA4LTI1
ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAgV2hlbiB1c2luZyBh
aXJwbGF5IHdpdGggWW91dHViZSwgdGhlIFlvdXR1YmUgdGFiIGJlY29tZXMgY29tcGxldGVseSBl
bXB0eSBhbmQgaXMgdW5yZXNwb25zaXZlIGZvciBhbiBleHRlbmRlZCBwZXJpb2Qgb2YgdGltZSBp
ZiB3ZSBzd2l0Y2ggdGhlIHRhYgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiNTM3ZTFiNDllY2NiNzQ1NTJhYWFkYjA4
MDVmODk1Njk4MmQ3N2QzLi41YjMwMjcxMmYwNjEzY2ExZjNhMGY5ZmU4YjhmMjBlOGY5N2YwN2Ji
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTA4LTI1ICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEhhc2hNYXA8UmVmPFQ+Pjo6dGFrZSBzaG91bGQg
cmV0dXJuIFJlZlB0cjxUPgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE1ODMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmRlbGV0
ZUF1ZGlvRGVzdGluYXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkTWFw
Ojp0YWtlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjp3aWxsQ2xv
c2VQYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXI6OnRhc2tDb21wbGV0ZWQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyOjp1c2VyTWVkaWFBY2Nlc3NXYXNHcmFudGVkKToKKyAgICAgICAgKFdlYktpdDo6VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjp1c2VyTWVkaWFBY2Nlc3NXYXNEZW5pZWQp
OgorCiAyMDIwLTA4LTI1ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+
CiAKICAgICAgICAgVHJ5aW5nIHRvIGxvb2t1cCB3aGVuIFdlYlZpZXcgaXMgaW4gYSBwb3BvdmVy
IGNhdXNlcyBwcm9jZXNzIHRvIGhhbmcuIEZpeCBmb3IgTGVnYWN5IFdlYlZpZXcuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggMjczNmQ3ZjljMjM1MjI0NDhlYWNjNTU4MWFjY2RjYzNm
YjJmNzUwNy4uZDZmNmU0ZThmYmE1MzA1M2EwMzQzYzY0MjQ5MzM2NzA4NjE3MGZlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTA4LTI1ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEhhc2hNYXA8UmVmPFQ+Pjo6
dGFrZSBzaG91bGQgcmV0dXJuIFJlZlB0cjxUPgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1ODMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06Cisg
ICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmRpZENoZWNrU3VjY2VlZCk6CisKIDIwMjAtMDgtMjUg
IE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBUcnlp
bmcgdG8gbG9va3VwIHdoZW4gV2ViVmlldyBpcyBpbiBhIHBvcG92ZXIgY2F1c2VzIHByb2Nlc3Mg
dG8gaGFuZy4gRml4IGZvciBMZWdhY3kgV2ViVmlldy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL0hhc2hUcmFpdHMuaCBiL1NvdXJjZS9XVEYvd3RmL0hhc2hUcmFpdHMuaAppbmRleCBmZmFm
OGU0YmZhNjA5ODU0MTQzMzg4YmRhMjYyOGZjOTBjMzI0ZWFkLi45ODM5ZWYyYTQzYmNkNjM4ZTJj
MTFjZTZkMzY4YzhlYzNkNjdkZmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVHJh
aXRzLmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaFRyYWl0cy5oCkBAIC0yMDgsMTIgKzIwOCwx
MiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgUmVmSGFzaFRyYWl0cyA6IFNpbXBsZUNs
YXNzSGFzaFRyYWl0czxSZWY8UD4+IHsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzSXNF
bXB0eVZhbHVlRnVuY3Rpb24gPSB0cnVlOwogICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShj
b25zdCBSZWY8UD4mIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5pc0hhc2hUYWJsZUVtcHR5VmFsdWUo
KTsgfQogCi0gICAgdHlwZWRlZiBQKiBQZWVrVHlwZTsKKyAgICB1c2luZyBQZWVrVHlwZSA9IFAq
OwogICAgIHN0YXRpYyBQZWVrVHlwZSBwZWVrKGNvbnN0IFJlZjxQPiYgdmFsdWUpIHsgcmV0dXJu
IGNvbnN0X2Nhc3Q8UGVla1R5cGU+KHZhbHVlLnB0ckFsbG93aW5nSGFzaFRhYmxlRW1wdHlWYWx1
ZSgpKTsgfQogICAgIHN0YXRpYyBQZWVrVHlwZSBwZWVrKFAqIHZhbHVlKSB7IHJldHVybiB2YWx1
ZTsgfQogCi0gICAgdHlwZWRlZiBPcHRpb25hbDxSZWY8UD4+IFRha2VUeXBlOwotICAgIHN0YXRp
YyBUYWtlVHlwZSB0YWtlKFJlZjxQPiYmIHZhbHVlKSB7IHJldHVybiBpc0VtcHR5VmFsdWUodmFs
dWUpID8gV1RGOjpudWxsb3B0IDogT3B0aW9uYWw8UmVmPFA+PihXVEZNb3ZlKHZhbHVlKSk7IH0K
KyAgICB1c2luZyBUYWtlVHlwZSA9IFJlZlB0cjxQPjsKKyAgICBzdGF0aWMgVGFrZVR5cGUgdGFr
ZShSZWY8UD4mJiB2YWx1ZSkgeyByZXR1cm4gaXNFbXB0eVZhbHVlKHZhbHVlKSA/IG51bGxwdHIg
OiBSZWZQdHI8UD4oV1RGTW92ZSh2YWx1ZSkpOyB9CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQ
PiBzdHJ1Y3QgSGFzaFRyYWl0czxSZWY8UD4+IDogUmVmSGFzaFRyYWl0czxQPiB7IH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVj
dGlvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9J
REJDb25uZWN0aW9uUHJveHkuY3BwCmluZGV4IDM5NzEyODVjODBkNTQ1M2ZhMWU1ZGEwMTJiYzJj
MWMwODI1MzJjOGQuLmNkMzY5OWNiOGQ0NDk1ZTFiOGI1Zjk2NWI5MDRhOTg4ZTYxZjVhOTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25u
ZWN0aW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2Ns
aWVudC9JREJDb25uZWN0aW9uUHJveHkuY3BwCkBAIC01MjgsMTIgKzUyOCw5IEBAIHZvaWQgSURC
Q29ubmVjdGlvblByb3h5OjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoY29uc3Qg
SURCUmVzb3VyY2VJZGVuCiAgICAgUmVmUHRyPElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb25SZXF1
ZXN0PiByZXF1ZXN0OwogICAgIHsKICAgICAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX2RhdGFi
YXNlSW5mb01hcExvY2spOwotICAgICAgICBhdXRvIHRha2VuUmVxdWVzdCA9IG1fZGF0YWJhc2VJ
bmZvQ2FsbGJhY2tzLnRha2UocmVxdWVzdElkZW50aWZpZXIpOwotCi0gICAgICAgIGlmICghdGFr
ZW5SZXF1ZXN0KQorICAgICAgICByZXF1ZXN0ID0gbV9kYXRhYmFzZUluZm9DYWxsYmFja3MudGFr
ZShyZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIGlmICghcmVxdWVzdCkKICAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICByZXF1ZXN0ID0gV1RGTW92ZSgqdGFrZW5SZXF1ZXN0KTsKICAg
ICB9CiAKICAgICByZXF1ZXN0LT5wZXJmb3JtQ2FsbGJhY2tPbk9yaWdpblRocmVhZCgqcmVxdWVz
dCwgJklEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb25SZXF1ZXN0Ojpjb21wbGV0ZSwgV1RGTW92ZShk
YXRhYmFzZXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAppbmRleCBhZGJjY2QzZjVhNTA2ODlh
NTYzYWJiNzAyZTlmYTZhNjJjNDhkODlhLi41MmM2M2M1NDVkYzQ5ZTI0NjFmOTg2NGI3NTk0NzY2
NTkyYjg5YjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCkBAIC0xMjEsOCArMTIxLDcgQEAg
dm9pZCBBWElzb2xhdGVkVHJlZTo6cmVtb3ZlVHJlZUZvclBhZ2VJRChQYWdlSWRlbnRpZmllciBw
YWdlSUQpCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBMb2NrSG9sZGVyIGxvY2tl
cihzX2NhY2hlTG9jayk7CiAKLSAgICBpZiAoYXV0byBvcHRpb25hbFRyZWUgPSB0cmVlUGFnZUNh
Y2hlKCkudGFrZShwYWdlSUQpKSB7Ci0gICAgICAgIGF1dG8mIHRyZWUgeyAqb3B0aW9uYWxUcmVl
IH07CisgICAgaWYgKGF1dG8gdHJlZSA9IHRyZWVQYWdlQ2FjaGUoKS50YWtlKHBhZ2VJRCkpIHsK
ICAgICAgICAgdHJlZS0+Y2xlYXIoKTsKICAgICAgICAgdHJlZUlEQ2FjaGUoKS5yZW1vdmUodHJl
ZS0+dHJlZUlEKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9T
dWJ0bGVDcnlwdG8uY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL1N1YnRsZUNyeXB0by5jcHAK
aW5kZXggNDUwMzhiZDFiMGI3YmQ4ZTM0MzQxNzE3N2I3NDdkY2UyMjY0NjcyOC4uZWVlNTZlNDk5
OWJhNzQ5MGQ2OGZiM2ZkMzliYWMyODI2MWI3ZDhhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL1N1YnRsZUNyeXB0by5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL1N1
YnRsZUNyeXB0by5jcHAKQEAgLTUwOSwxMCArNTA5LDggQEAgc3RhdGljIGJvb2wgaXNTdXBwb3J0
ZWRFeHBvcnRLZXkoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKQogCiBSZWZQ
dHI8RGVmZXJyZWRQcm9taXNlPiBnZXRQcm9taXNlKERlZmVycmVkUHJvbWlzZSogaW5kZXgsIFdl
YWtQdHI8U3VidGxlQ3J5cHRvPiBzdWJ0bGVDcnlwdG9XZWFrUG9pbnRlcikKIHsKLSAgICBpZiAo
c3VidGxlQ3J5cHRvV2Vha1BvaW50ZXIpIHsKLSAgICAgICAgaWYgKGF1dG8gcHJvbWlzZSA9IHN1
YnRsZUNyeXB0b1dlYWtQb2ludGVyLT5tX3BlbmRpbmdQcm9taXNlcy50YWtlKGluZGV4KSkKLSAg
ICAgICAgICAgIHJldHVybiBXVEZNb3ZlKHByb21pc2UudmFsdWUoKSk7Ci0gICAgfQorICAgIGlm
IChzdWJ0bGVDcnlwdG9XZWFrUG9pbnRlcikKKyAgICAgICAgcmV0dXJuIHN1YnRsZUNyeXB0b1dl
YWtQb2ludGVyLT5tX3BlbmRpbmdQcm9taXNlcy50YWtlKGluZGV4KTsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRS
ZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNw
cAppbmRleCA2OGM3OGQ1MzAxNzdkZTNlZThmNDFiZjRiZjA5MGVlMDRhMjBjZTRmLi40MzM1NGUz
YTk0Y2ZjYjJjNTcyZTJmOGRkMzUyNmUzMmZmYmViYzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcApAQCAtNzYsOSArNzYsNyBAQCBSZWZQdHI8RGVm
ZXJyZWRQcm9taXNlPiBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmFkZEVsZW1lbnREZWZpbml0aW9u
KFJlZjxKU0N1c3RvbQogICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1fd2luZG93LmRvY3VtZW50
KCkpCiAgICAgICAgIGVucXVldWVVcGdyYWRlSW5TaGFkb3dJbmNsdWRpbmdUcmVlT3JkZXIoKmRv
Y3VtZW50LCBlbGVtZW50SW50ZXJmYWNlLmdldCgpKTsKIAotICAgIGlmIChhdXRvIHByb21pc2Ug
PSBtX3Byb21pc2VNYXAudGFrZShsb2NhbE5hbWUpKQotICAgICAgICByZXR1cm4gV1RGTW92ZSgq
cHJvbWlzZSk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fcHJvbWlzZU1hcC50
YWtlKGxvY2FsTmFtZSk7CiB9CiAKIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSogQ3VzdG9tRWxl
bWVudFJlZ2lzdHJ5OjpmaW5kSW50ZXJmYWNlKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRSdW5uZXIuY3BwCmluZGV4IDU5ZTIwOTJiYThiMmFmMWRlNmI5
Nzk5YzQ4NzEwNTVjZWQ0ZGJkMTcuLjMxMTg4YTk4MDgxYWJmMTY5NTY0MDFhZTgzMTZiMWU2NmU0
MTg2YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRSdW5uZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRSdW5uZXIuY3BwCkBAIC05NiwxMCArOTYsOCBA
QCB2b2lkIFNjcmlwdFJ1bm5lcjo6bm90aWZ5RmluaXNoZWQoUGVuZGluZ1NjcmlwdCYgcGVuZGlu
Z1NjcmlwdCkKIHsKICAgICBpZiAocGVuZGluZ1NjcmlwdC5lbGVtZW50KCkud2lsbEV4ZWN1dGVJ
bk9yZGVyKCkpCiAgICAgICAgIEFTU0VSVCghbV9zY3JpcHRzVG9FeGVjdXRlSW5PcmRlci5pc0Vt
cHR5KCkpOwotICAgIGVsc2UgewotICAgICAgICBBU1NFUlQobV9wZW5kaW5nQXN5bmNTY3JpcHRz
LmNvbnRhaW5zKHBlbmRpbmdTY3JpcHQpKTsKLSAgICAgICAgbV9zY3JpcHRzVG9FeGVjdXRlU29v
bi5hcHBlbmQobV9wZW5kaW5nQXN5bmNTY3JpcHRzLnRha2UocGVuZGluZ1NjcmlwdCktPnB0cigp
KTsKLSAgICB9CisgICAgZWxzZQorICAgICAgICBtX3NjcmlwdHNUb0V4ZWN1dGVTb29uLmFwcGVu
ZChtX3BlbmRpbmdBc3luY1NjcmlwdHMudGFrZShwZW5kaW5nU2NyaXB0KS5yZWxlYXNlTm9uTnVs
bCgpKTsKICAgICBwZW5kaW5nU2NyaXB0LmNsZWFyQ2xpZW50KCk7CiAKICAgICBpZiAoIW1fZG9j
dW1lbnQuaGFzQWN0aXZlUGFyc2VyWWllbGRUb2tlbigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCBmNGZhNzcw
ZTAzYjcwNzA2NGQxMjMyZmY4NDQzOTA2MzhjMTg0MTdjLi41NjVlYmUwODJjMDc4YmI2Njg3NzQw
Mzg5ZWIzNzJlZTExOWI3NDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtMTAzMCw3ICsxMDMwLDcgQEAgdm9p
ZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkUmVtb3ZlRE9NTm9kZShOb2RlJiBub2RlLCBpbnQgbm9k
ZUlkKQogICAgIGF1dG8gc2hlZXQgPSBtX25vZGVUb0luc3BlY3RvclN0eWxlU2hlZXQudGFrZSgm
bm9kZSk7CiAgICAgaWYgKCFzaGVldCkKICAgICAgICAgcmV0dXJuOwotICAgIG1faWRUb0luc3Bl
Y3RvclN0eWxlU2hlZXQucmVtb3ZlKHNoZWV0LnZhbHVlKCktPmlkKCkpOworICAgIG1faWRUb0lu
c3BlY3RvclN0eWxlU2hlZXQucmVtb3ZlKHNoZWV0LT5pZCgpKTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JDU1NBZ2VudDo6ZGlkTW9kaWZ5RE9NQXR0cihFbGVtZW50JiBlbGVtZW50KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwCmluZGV4IDQ4MTAyYTU3MjI4
MTkwOTEyOTFjZjc2NDk0MTBkYjA0NjZkMGQwODMuLmE1YWRjM2FhOWM5OGIyZTk1MDNhYzU5YTFh
NTJhYjEzMDliMThjMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZU92ZXJs
YXlDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VPdmVybGF5Q29u
dHJvbGxlci5jcHAKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIFBhZ2VPdmVybGF5Q29udHJvbGxl
cjo6dW5pbnN0YWxsUGFnZU92ZXJsYXkoUGFnZU92ZXJsYXkmIG92ZXJsYXksIFBhZ2VPdmVybAog
ICAgIG92ZXJsYXkuc2V0UGFnZShudWxscHRyKTsKIAogICAgIGlmIChhdXRvIG9wdGlvbmFsTGF5
ZXIgPSBtX292ZXJsYXlHcmFwaGljc0xheWVycy50YWtlKCZvdmVybGF5KSkKLSAgICAgICAgb3B0
aW9uYWxMYXllci52YWx1ZSgpLT5yZW1vdmVGcm9tUGFyZW50KCk7CisgICAgICAgIG9wdGlvbmFs
TGF5ZXItPnJlbW92ZUZyb21QYXJlbnQoKTsKIAogICAgIGJvb2wgcmVtb3ZlZCA9IG1fcGFnZU92
ZXJsYXlzLnJlbW92ZUZpcnN0KCZvdmVybGF5KTsKICAgICBBU1NFUlRfVU5VU0VEKHJlbW92ZWQs
IHJlbW92ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHAKaW5kZXggY2I4ZjY2YWMyYzE3OWI3ZmNiMTBhNjA1NTc0
YTQ1OTIzYmJiNWI5ZC4uYmE0MmVhMjM4ZGM2Zjg1NjQ5NzdkZTM4ODAyMjMwNWU2ZmY1YTA2NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
bGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNsaWVudHMuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ2xp
ZW50czo6Y2xhaW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPERlZmVycmVk
UHIKICAgICAgICAgY29ubmVjdGlvbi0+Y2xhaW0oc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFtw
cm9taXNlUG9pbnRlciwgc2VydmljZVdvcmtlcklkZW50aWZpZXJdKGF1dG8mJiByZXN1bHQpIG11
dGFibGUgewogICAgICAgICAgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkucG9zdFRh
c2tUb1NlcnZpY2VXb3JrZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFtwcm9taXNlUG9pbnRl
ciwgcmVzdWx0ID0gaXNvbGF0ZWRDb3B5KFdURk1vdmUocmVzdWx0KSldKGF1dG8mIHNjb3BlKSBt
dXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBwcm9taXNlID0gc2NvcGUuY2xpZW50
cygpLm1fcGVuZGluZ1Byb21pc2VzLnRha2UocHJvbWlzZVBvaW50ZXIpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiBwZW5kaW5nUHJvbWlzZSB7IFdURk1v
dmUocHJvbWlzZS52YWx1ZSgpKSB9OworICAgICAgICAgICAgICAgICAgICBET01Qcm9taXNlRGVm
ZXJyZWQ8dm9pZD4gcGVuZGluZ1Byb21pc2UgeyBwcm9taXNlLnJlbGVhc2VOb25OdWxsKCkgfTsK
ICAgICAgICAgICAgICAgICAgICAgcGVuZGluZ1Byb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0
KSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZFByb3h5LmNwcAppbmRleCA1ZDFlZDExZDZlODcwNTgyOGJiOWRiMTI5MDY0Yzli
NDIzMGMyM2U2Li5iNzdmMzc0NTJiYzA2NWVlYWQzZmZiZjY0MmQ0MWY4YTMxNTFjZGUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKQEAgLTIyMiw3ICsyMjIsNyBAQCB2
b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6Y2FuY2VsRmV0Y2goU1dTZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciBjb25uZWN0aQogICAgIGlmIChtX29uZ29pbmdGZXRjaFRhc2tzLmlzRW1w
dHkoKSkKICAgICAgICAgdGhyZWFkKCkuc3RvcEZldGNoRXZlbnRNb25pdG9yaW5nKCk7CiAKLSAg
ICBwb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFtjbGllbnQgPSBXVEZNb3ZlKGNs
aWVudC52YWx1ZSgpKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgcG9zdFRhc2tG
b3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbY2xpZW50ID0gY2xpZW50LnJlbGVhc2VOb25OdWxs
KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICBjbGllbnQtPmNhbmNlbCgp
OwogICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCAxNjQ2
YjFmYjdlZGJjY2Q2OWMzNzEyNTg3ZDYwMDYyMDc1Zjc3YThmLi4zMTVlZmE2ODNiYjg4OTBhMjM0
NmVlOTEzZDllYmMxYTJmODE3NGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtNzgxLDcgKzc4MSw3IEBAIHZvaWQgU1dT
ZXJ2ZXI6OndvcmtlckNvbnRleHRUZXJtaW5hdGVkKFNXU2VydmVyV29ya2VyJiB3b3JrZXIpCiAg
ICAgLy8gQXQgdGhpcyBwb2ludCBpZiBubyByZWdpc3RyYXRpb25zIGFyZSByZWZlcmVuY2luZyB0
aGUgd29ya2VyIHRoZW4gaXQgd2lsbCBiZSBkZXN0cm95ZWQsCiAgICAgLy8gcmVtb3ZpbmcgaXRz
ZWxmIGZyb20gdGhlIG1fd29ya2Vyc0J5SUQgbWFwLgogICAgIGF1dG8gcmVzdWx0ID0gbV9ydW5u
aW5nT3JUZXJtaW5hdGluZ1dvcmtlcnMudGFrZSh3b3JrZXIuaWRlbnRpZmllcigpKTsKLSAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ICYmIHJlc3VsdC0+cHRyKCkgPT0gJndvcmtlcik7
CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCA9PSAmd29ya2VyKTsKIAogICAgIHdv
cmtlci5zZXRTdGF0ZShTV1NlcnZlcldvcmtlcjo6U3RhdGU6Ok5vdFJ1bm5pbmcpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1
ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcAppbmRleCA0NmFjNzhiZDIyOGRiZjFmOGM1MzBlM2Ex
OGNkNDQ5NmEyOGExOTc5Li42YTEwMWMzOTU5M2NjNGMxNTRjNzQ1ZjZkNzk3MzdhMDJhOTIzZjZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAKQEAgLTE1MCw3ICsxNTAsNyBAQCB2
b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpkZWxldGVBdWRpb0Rlc3RpbmF0aW9u
KFJlbW90ZUF1ZGlvRGVzdGluYXRpbwogewogICAgIGF1dG8gZGVzdGluYXRpb24gPSBtX2F1ZGlv
RGVzdGluYXRpb25zLnRha2UoaWQpOwogICAgIGlmIChkZXN0aW5hdGlvbikKLSAgICAgICAgZGVz
dGluYXRpb24udmFsdWUoKS0+c2NoZWR1bGVHcmFjZWZ1bFNodXRkb3duSWZOZWVkZWQoKTsKKyAg
ICAgICAgZGVzdGluYXRpb24tPnNjaGVkdWxlR3JhY2VmdWxTaHV0ZG93bklmTmVlZGVkKCk7CiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkTWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZE1hcC5jcHAKaW5kZXggN2RmMDhiMmM2
N2Y2OGRlOTAzYTI0ZjVjZGIwZTg3Y2ViNGQ2ZmIyYS4uZGI5N2Y1NTJmZWU3YTM4OTE2NTFmM2Jk
ZDZlNGFkZWU2MjQ3YTJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRNYXAuY3BwCkBAIC02NiwxMCArNjYsMTAgQEAgUmVm
UHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gTmV0d29ya1Jlc291cmNlTG9hZE1hcDo6dGFrZShS
ZXNvdXJjZUxvYWRJZGVudGlmaWUKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBpZiAoKCpsb2FkZXIpLT5vcmlnaW5hbFJlcXVlc3QoKS5oYXNVcGxvYWQo
KSkKKyAgICBpZiAobG9hZGVyLT5vcmlnaW5hbFJlcXVlc3QoKS5oYXNVcGxvYWQoKSkKICAgICAg
ICAgc2V0SGFzVXBsb2FkKFdURjo6YW55T2YobV9sb2FkZXJzLnZhbHVlcygpLCBbXShhdXRvJiBs
b2FkZXIpIHsgcmV0dXJuIGxvYWRlci0+b3JpZ2luYWxSZXF1ZXN0KCkuaGFzVXBsb2FkKCk7IH0p
KTsKIAotICAgIHJldHVybiBXVEZNb3ZlKCpsb2FkZXIpOworICAgIHJldHVybiBsb2FkZXI7CiB9
CiAKIE5ldHdvcmtSZXNvdXJjZUxvYWRlciogTmV0d29ya1Jlc291cmNlTG9hZE1hcDo6Z2V0KFJl
c291cmNlTG9hZElkZW50aWZpZXIgaWRlbnRpZmllcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5j
cHAKaW5kZXggZTZlNGFjYzExYTkxYTM3MGZiNjg4ZmFiNDhkMjUyMDY5NmQ1MDI4Zi4uZDg3YTRk
ZmVjNzk0ZjMxZGNiNjRlNWU5ZWY0YmNlNGIxOGMxOTJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5j
cHAKQEAgLTgzNSw5ICs4MzUsOCBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjp3aWxsQ2xv
c2VQYWdlKGNvbnN0IFdlYlBhZ2VQcm94eSYgcGFnZSkKIAogI2lmIEVOQUJMRShXRUJEUklWRVJf
QUNUSU9OU19BUEkpCiAgICAgLy8gVGhlbiB0ZWxsIHRoZSBpbnB1dCBkaXNwYXRjaGVyIHRvIGNh
bmNlbCBzbyB0aW1lcnMgYXJlIHN0b3BwZWQsIGFuZCBsZXQgaXQgZ28gb3V0IG9mIHNjb3BlLgot
ICAgIE9wdGlvbmFsPFJlZjxTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI+PiBpbnB1dERpc3BhdGNo
ZXIgPSBtX2lucHV0RGlzcGF0Y2hlcnNCeVBhZ2UudGFrZShwYWdlLmlkZW50aWZpZXIoKSk7Ci0g
ICAgaWYgKGlucHV0RGlzcGF0Y2hlci5oYXNWYWx1ZSgpKQotICAgICAgICBpbnB1dERpc3BhdGNo
ZXIudmFsdWUoKS0+Y2FuY2VsKCk7CisgICAgaWYgKGF1dG8gaW5wdXREaXNwYXRjaGVyID0gbV9p
bnB1dERpc3BhdGNoZXJzQnlQYWdlLnRha2UocGFnZS5pZGVudGlmaWVyKCkpKQorICAgICAgICBp
bnB1dERpc3BhdGNoZXItPmNhbmNlbCgpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5jcHAKaW5kZXggNGE5Mjc2YWU0ZGViNGVi
NmUzNjA5MGVmOTRkNzU3ZTNhZDVlZTgxNC4uZmNhNDE5NTQ2MDFmNTNkNzc5ZjI2ZDYwYWYxYTkw
MmU0OWI2ZjcwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2No
ZW1lSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1l
SGFuZGxlci5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXI6
OnN0b3BUYXNrKFdlYlBhZ2VQcm94eSYgcGFnZSwgdWludDY0X3QgdGFza0lkZW50aWZpZXIpCiB2
b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXI6OnRhc2tDb21wbGV0ZWQoV2ViVVJMU2NoZW1lVGFzayYg
dGFzaykKIHsKICAgICBhdXRvIHRha2VuVGFzayA9IG1fdGFza3MudGFrZSh0YXNrLmlkZW50aWZp
ZXIoKSk7Ci0gICAgQVNTRVJUX1VOVVNFRCh0YWtlblRhc2ssIHRha2VuVGFzay0+cHRyKCkgPT0g
JnRhc2spOworICAgIEFTU0VSVF9VTlVTRUQodGFrZW5UYXNrLCB0YWtlblRhc2sgPT0gJnRhc2sp
OwogICAgIHJlbW92ZVRhc2tGcm9tUGFnZU1hcCh0YXNrLnBhZ2VQcm94eUlEKCksIHRhc2suaWRl
bnRpZmllcigpKTsKIAogICAgIHBsYXRmb3JtVGFza0NvbXBsZXRlZCh0YXNrKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3Ry
ZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKaW5kZXggMzU5OTQxM2Nj
ZTEzZmZkMzZiOWY0ZDc4NzI0OWVjMmQyOWY5NmI3Ny4uZmQ2YWI0ZGY3MmYyMWQwOTg5NzcxYTUw
YTBkODI1ZDAyZThhZmYzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01l
ZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlci5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlcjo6dXNlck1lZGlhQWNjZXNzV2FzR3JhbnRlZCh1aW50NjRfdCByZXF1
ZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcmVxdWVzdC52YWx1ZSgpLT5hbGxvdyhX
VEZNb3ZlKGF1ZGlvRGV2aWNlKSwgV1RGTW92ZSh2aWRlb0RldmljZSksIFdURk1vdmUoZGV2aWNl
SWRlbnRpZmllckhhc2hTYWx0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHJl
cXVlc3QtPmFsbG93KFdURk1vdmUoYXVkaW9EZXZpY2UpLCBXVEZNb3ZlKHZpZGVvRGV2aWNlKSwg
V1RGTW92ZShkZXZpY2VJZGVudGlmaWVySGFzaFNhbHQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjp1c2Vy
TWVkaWFBY2Nlc3NXYXNEZW5pZWQodWludDY0X3QgcmVxdWVzdElELCBVc2VyTWVkaWFSZXF1ZXN0
OjpNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbiByZWFzb24sIFN0cmluZyYmIGludmFsaWRDb25zdHJh
aW50KQpAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyOjp1c2VyTWVkaWFBY2Nlc3NXYXNEZW5pZWQodWludDY0X3QgcmVxdWVzCiAgICAgaWYg
KCFyZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAKLSAgICByZXF1ZXN0LnZhbHVlKCktPmRlbnko
cmVhc29uLCBXVEZNb3ZlKGludmFsaWRDb25zdHJhaW50KSk7CisgICAgcmVxdWVzdC0+ZGVueShy
ZWFzb24sIFdURk1vdmUoaW52YWxpZENvbnN0cmFpbnQpKTsKIH0KIAogdm9pZCBVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmVudW1lcmF0ZU1lZGlhRGV2aWNlcyhEb2N1bWVudCYg
ZG9jdW1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPENhcHR1cmVEZXZp
Y2U+JiwgY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
bW0KaW5kZXggMjVhZDdkZTcyMTk0ZWZkNjFjODdhOTdmYTc3YmQ1YjhkZDUyZmQwYy4uOTJmYThm
YmUxMmY4ODI0MDJlMzQ1Yzg3MjdlNzc1N2E5MDY4NDU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpA
QCAtMTIyMSwxMiArMTIyMSwxMSBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6aGFuZGxlQWNjZXB0
ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQgYQogCiB2b2lkIFdl
YkVkaXRvckNsaWVudDo6ZGlkQ2hlY2tTdWNjZWVkKFRleHRDaGVja2luZ1JlcXVlc3RJZGVudGlm
aWVyIGlkZW50aWZpZXIsIE5TQXJyYXkgKnJlc3VsdHMpCiB7Ci0gICAgYXV0byByZXF1ZXN0T3B0
aW9uYWwgPSBtX3JlcXVlc3RzSW5GbGlnaHQudGFrZShpZGVudGlmaWVyKTsKLSAgICBBU1NFUlQo
cmVxdWVzdE9wdGlvbmFsKTsKLSAgICBpZiAoIXJlcXVlc3RPcHRpb25hbCkKKyAgICBhdXRvIHJl
cXVlc3QgPSBtX3JlcXVlc3RzSW5GbGlnaHQudGFrZShpZGVudGlmaWVyKTsKKyAgICBBU1NFUlQo
cmVxdWVzdCk7CisgICAgaWYgKCFyZXF1ZXN0KQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAg
YXV0byByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0T3B0aW9uYWwudmFsdWUoKSk7CisKICAgICBB
U1NFUlQoaWRlbnRpZmllciA9PSByZXF1ZXN0LT5kYXRhKCkuaWRlbnRpZmllcigpLnZhbHVlKCkp
OwogICAgIHJlcXVlc3QtPmRpZFN1Y2NlZWQoY29yZShyZXN1bHRzLCByZXF1ZXN0LT5kYXRhKCku
Y2hlY2tpbmdUeXBlcygpKSk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggZGQwZWMwMzczZTdlMjNlMGZmYWZlNTdkNGM2MWQwZDJjNzU5Yjhl
Mi4uMDVhYmZiYmZlZDc2ZWMyMzZkMTU3ZThmODRlMjAwZDllMjI1ZWFkMyAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDIwLTA4LTI1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEhh
c2hNYXA8UmVmPFQ+Pjo6dGFrZSBzaG91bGQgcmV0dXJuIFJlZlB0cjxUPgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1ODMwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9IYXNoTWFwLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hTZXQuY3BwOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisKIDIwMjAtMDgtMjUgIENhcmxvcyBBbGJlcnRvIExvcGV6IFBlcmV6ICA8
Y2xvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV1bUXRdIEZpeCBxdC13cGUtbWluaWJy
b3dzZXIgb24gRGViaWFuMTAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0hhc2hNYXAuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5j
cHAKaW5kZXggMDM0OGNiYzNjZjc3NDMzNWNiNzVhNmZmZDdmN2QzYTJkNjUwYTBiOS4uMmNjYTcz
OTE4ODM0OGEyZWVjMzc4ZjhhNmNjMWQzMjU3MDNiYjY2MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKQEAgLTk0Niw3ICs5NDYsNyBAQCBURVNUKFdURl9IYXNo
TWFwLCBSZWZfVmFsdWUpCiAgICAgICAgIAogICAgICAgICBhdXRvIGFPdXQgPSBtYXAudGFrZSgx
KTsKICAgICAgICAgQVNTRVJUX1RSVUUoc3RhdGljX2Nhc3Q8Ym9vbD4oYU91dCkpOwotICAgICAg
ICBBU1NFUlRfRVEoJmEsIGFPdXQudmFsdWUoKS5wdHIoKSk7CisgICAgICAgIEFTU0VSVF9FUSgm
YSwgYU91dC5nZXQoKSk7CiAgICAgfQogCiAgICAgQVNTRVJUX1NUUkVRKCJyZWYoYSkgZGVyZWYo
YSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvSGFzaFNldC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9IYXNoU2V0LmNwcAppbmRleCAxYTlkN2Q3MzQ5MjRjYTZjMzRlNjQ1ZTJmNWZlZWJjYTgzYjMw
ZmE5Li5lN2NmYmNjYWQxZDQ1OWNkNjRjYTIxMjg4OGE3YTk2MmNkNWUzMDMxIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoU2V0LmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoU2V0LmNwcApAQCAtNDA0LDcgKzQwNCw3IEBAIFRF
U1QoV1RGX0hhc2hTZXQsIFJlZikKIAogICAgICAgICBhdXRvIGFPdXQgPSBzZXQudGFrZSgmYSk7
CiAgICAgICAgIEFTU0VSVF9UUlVFKHN0YXRpY19jYXN0PGJvb2w+KGFPdXQpKTsKLSAgICAgICAg
QVNTRVJUX0VRKCZhLCBhT3V0LnZhbHVlKCkucHRyKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEs
IGFPdXQuZ2V0KCkpOwogICAgIH0KIAogICAgIEFTU0VSVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEp
ICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKQEAgLTQxOSw3ICs0MTksNyBAQCBURVNUKFdURl9I
YXNoU2V0LCBSZWYpCiAKICAgICAgICAgYXV0byBhT3V0ID0gc2V0LnRha2VBbnkoKTsKICAgICAg
ICAgQVNTRVJUX1RSVUUoc3RhdGljX2Nhc3Q8Ym9vbD4oYU91dCkpOwotICAgICAgICBBU1NFUlRf
RVEoJmEsIGFPdXQudmFsdWUoKS5wdHIoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgYU91dC5n
ZXQoKSk7CiAgICAgfQogCiAgICAgQVNTRVJUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFr
ZUxvZ1N0cigpLmNfc3RyKCkpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>