<?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>239481</bug_id>
          
          <creation_ts>2022-04-18 21:34:36 -0700</creation_ts>
          <short_desc>Use more r-value references for Text / CharacterData classes</short_desc>
          <delta_ts>2022-04-19 20:07:17 -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>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sam</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1862420</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-18 21:34:36 -0700</bug_when>
    <thetext>Use more r-value references for Text / CharacterData classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862421</commentid>
    <comment_count>1</comment_count>
      <attachid>457853</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-18 21:41:27 -0700</bug_when>
    <thetext>Created attachment 457853
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862559</commentid>
    <comment_count>2</comment_count>
      <attachid>457895</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-19 08:33:58 -0700</bug_when>
    <thetext>Created attachment 457895
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862581</commentid>
    <comment_count>3</comment_count>
      <attachid>457904</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-19 09:10:31 -0700</bug_when>
    <thetext>Created attachment 457904
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862624</commentid>
    <comment_count>4</comment_count>
      <attachid>457915</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-19 10:30:58 -0700</bug_when>
    <thetext>Created attachment 457915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862717</commentid>
    <comment_count>5</comment_count>
      <attachid>457935</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-19 14:03:16 -0700</bug_when>
    <thetext>Created attachment 457935
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862787</commentid>
    <comment_count>6</comment_count>
      <attachid>457935</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2022-04-19 18:25:57 -0700</bug_when>
    <thetext>Comment on attachment 457935
Patch

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

&gt; Source/WebCore/dom/CDATASection.h:32
&gt; +    static Ref&lt;CDATASection&gt; create(Document&amp;, String&amp;&amp;);

I have come to the concluding that just using &quot;String&quot;, no &quot;&amp;&amp;&quot; is better in cases like this, and has the same behavior, because it will work for both l-values and r-values equally well. 

If this were a template function, the &amp;&amp; would make it a universal reference, which would be even more general, but not useful for things like this.

The downside of not using &quot;String&amp;&amp;&quot; is that it is harder to find people who might be doing the wrong thing, which might be a big enough reason to keep &amp;&amp; in these cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862788</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-19 18:29:42 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #6)
&gt; Comment on attachment 457935 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=457935&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/CDATASection.h:32
&gt; &gt; +    static Ref&lt;CDATASection&gt; create(Document&amp;, String&amp;&amp;);
&gt; 
&gt; I have come to the concluding that just using &quot;String&quot;, no &quot;&amp;&amp;&quot; is better in
&gt; cases like this, and has the same behavior, because it will work for both
&gt; l-values and r-values equally well. 
&gt; 
&gt; If this were a template function, the &amp;&amp; would make it a universal
&gt; reference, which would be even more general, but not useful for things like
&gt; this.
&gt; 
&gt; The downside of not using &quot;String&amp;&amp;&quot; is that it is harder to find people who
&gt; might be doing the wrong thing, which might be a big enough reason to keep
&gt; &amp;&amp; in these cases.

I feel pretty strongly against using just &quot;String&quot; personally :/
I think it looks confusing and it makes it likely callers will fail/forget to &quot;move&quot; and we&apos;ll end up calling the copy constructor.

Yes, people can write efficient code with just &quot;String&quot; but in my opinion, they are unlikely too. &quot;String&amp;&amp;&quot; forces people to do the right thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862789</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-19 18:30:07 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #7)
&gt; (In reply to Sam Weinig from comment #6)
&gt; &gt; Comment on attachment 457935 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=457935&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/dom/CDATASection.h:32
&gt; &gt; &gt; +    static Ref&lt;CDATASection&gt; create(Document&amp;, String&amp;&amp;);
&gt; &gt; 
&gt; &gt; I have come to the concluding that just using &quot;String&quot;, no &quot;&amp;&amp;&quot; is better in
&gt; &gt; cases like this, and has the same behavior, because it will work for both
&gt; &gt; l-values and r-values equally well. 
&gt; &gt; 
&gt; &gt; If this were a template function, the &amp;&amp; would make it a universal
&gt; &gt; reference, which would be even more general, but not useful for things like
&gt; &gt; this.
&gt; &gt; 
&gt; &gt; The downside of not using &quot;String&amp;&amp;&quot; is that it is harder to find people who
&gt; &gt; might be doing the wrong thing, which might be a big enough reason to keep
&gt; &gt; &amp;&amp; in these cases.
&gt; 
&gt; I feel pretty strongly against using just &quot;String&quot; personally :/
&gt; I think it looks confusing and it makes it likely callers will fail/forget
&gt; to &quot;move&quot; and we&apos;ll end up calling the copy constructor.
&gt; 
&gt; Yes, people can write efficient code with just &quot;String&quot; but in my opinion,
&gt; they are unlikely too. &quot;String&amp;&amp;&quot; forces people to do the right thing.

*unlikely to</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862798</commentid>
    <comment_count>9</comment_count>
      <attachid>457950</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-19 19:26:18 -0700</bug_when>
    <thetext>Created attachment 457950
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862801</commentid>
    <comment_count>10</comment_count>
      <attachid>457950</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-19 20:06:00 -0700</bug_when>
    <thetext>Comment on attachment 457950
Patch

Clearing flags on attachment: 457950

Committed r293059 (249790@trunk): &lt;https://commits.webkit.org/249790@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862802</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-19 20:06:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862804</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-19 20:07:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/92002308&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457853</attachid>
            <date>2022-04-18 21:41:27 -0700</date>
            <delta_ts>2022-04-19 08:33:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239481-20220418214126.patch</filename>
            <type>text/plain</type>
            <size>88176</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQ1YjZkODU5OTk3NmQ4M2EwMjk2ZDkw
YmYzNzc5MTAxZmE3NGVjMGIuLjgwZTZmYWZjNGM4ZWI5NjJiYWQ1N2UxYmIxZWUyYzA2N2Y3Zjk4
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDQtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgbW9yZSByLXZhbHVlIHJlZmVyZW5jZXMgZm9yIFRl
eHQgLyBDaGFyYWN0ZXJEYXRhIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzOTQ4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBhIGZ1bmN0aW9uIHRvIEF0b21TdHJpbmcgdG8gcmVsZWFz
ZSBpdHMgU3RyaW5nLiBUaGlzIGlzIGNvbnZlbmllbnQgd2hlbiB5b3UgaGF2ZSBhbiBBdG9tU3Ry
aW5nCisgICAgICAgIGFuZCBuZWVkIGEgU3RyaW5nJiYuCisKKyAgICAgICAgKiB3dGYvdGV4dC9B
dG9tU3RyaW5nLmg6CisKIDIwMjItMDQtMTggIEVsbGlvdHQgV2lsbGlhbXMgIDxlbXdAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtYQ0J1aWxkXSBVc2UgWENCdWlsZCBmb3IgYWxsIGNvbW1hbmQtbGlu
ZSBhbmQgcHJvamVjdCBidWlsZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5MWRmYmUzODg3Yjg2ZDc1ZjI3ZWIz
ZTI0NDQzMTg4YTQ5Yjc4ODI0Li44MjU3ZGJiZDMxMWMzYTQ2YjUyY2FlYjhhMDVlMDQ1NjAxODgx
YzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYxIEBACisyMDIyLTA0LTE4ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIG1vcmUgci12YWx1ZSByZWZlcmVu
Y2VzIGZvciBUZXh0IC8gQ2hhcmFjdGVyRGF0YSBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk0ODEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgbW9yZSByLXZhbHVlIHJlZmVyZW5jZXMg
Zm9yIFRleHQgLyBDaGFyYWN0ZXJEYXRhIGNsYXNzZXMsIHdoaWNoIGluZmVjdGVkCisgICAgICAg
IGEgbG90IG9mIHRoZSBzdXJyb3VuZGluZyBjb2RlLiBUaGlzIGF2b2lkcyBzb21lIHJlZi1jb3Vu
dGluZyBjaHVybi4KKworICAgICAgICAqIGRvbS9DREFUQVNlY3Rpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0RBVEFTZWN0aW9uOjpDREFUQVNlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
Q0RBVEFTZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RBVEFTZWN0aW9uOjpj
bG9uZU5vZGVJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDREFUQVNlY3Rpb246OnZpcnR1
YWxDcmVhdGUpOgorICAgICAgICAqIGRvbS9DREFUQVNlY3Rpb24uaDoKKyAgICAgICAgKiBkb20v
Q2hhcmFjdGVyRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRGF0YTo6Q2hhcmFj
dGVyRGF0YSk6CisgICAgICAgICogZG9tL0NvbW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29tbWVudDo6Q29tbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDb21tZW50OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tbWVudDo6Y2xvbmVOb2RlSW50ZXJuYWwpOgorICAgICAgICAq
IGRvbS9Db21tZW50Lmg6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6c3RyaW5nUmVwbGFjZUFsbCk6CisgICAgICAgICog
ZG9tL0NvbnRhaW5lck5vZGUuaDoKKyAgICAgICAgKiBkb20vRE9NSW1wbGVtZW50YXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZUhUTUxEb2N1bWVu
dCk6CisgICAgICAgICogZG9tL0RPTUltcGxlbWVudGF0aW9uLmg6CisgICAgICAgICogZG9tL0Rv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjcmVhdGVUZXh0Tm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlQ29tbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlQ0RBVEFTZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpjcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6c2V0VGl0bGUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAq
IGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6Omluc2VydEFkamFj
ZW50VGV4dCk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vSW1hZ2VP
dmVybGF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3ZlcmxheTo6aW5zdGFsbEltYWdl
T3ZlcmxheVN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5Ojp1cGRh
dGVTdWJ0cmVlKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlOjpjb252ZXJ0Tm9kZXNPclN0cmluZ3NJbnRvTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlOjpzZXRUZXh0Q29udGVudCk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKiBk
b20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3Np
bmdJbnN0cnVjdGlvbjo6UHJvY2Vzc2luZ0luc3RydWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nl
c3NpbmdJbnN0cnVjdGlvbjo6Y2xvbmVOb2RlSW50ZXJuYWwpOgorICAgICAgICAqIGRvbS9Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKiBkb20vVGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dDo6Y3JlYXRlRWRp
dGluZ1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dDo6Y2xvbmVOb2RlSW50ZXJuYWwpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dDo6dmlydHVhbENyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0OjpjcmVhdGVXaXRoTGVuZ3RoTGltaXQpOgorICAgICAgICAqIGRvbS9UZXh0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0OjpUZXh0KToKKyAgICAgICAgKiBkb20vbWFjL0ltYWdlQ29u
dHJvbHNNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VDb250cm9sc01hYzo6Y3JlYXRl
SW1hZ2VDb250cm9scyk6CisgICAgICAgICogZWRpdGluZy9DcmVhdGVMaW5rQ29tbWFuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDcmVhdGVMaW5rQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAg
ICogZWRpdGluZy9FZGl0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRhYlNwYW5F
bGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmcuaDoKKyAgICAgICAgKiBlZGl0aW5n
L0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnN0eWxlRm9yU2VsZWN0aW9u
U3RhcnQpOgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjpkb0FwcGx5KToKKyAgICAg
ICAgKiBlZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c2VydFRleHRDb21tYW5kOjpwb3NpdGlvbkluc2lkZVRleHROb2RlKToKKyAgICAgICAgKiBlZGl0
aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjphZGRTcGFjZXNGb3JTbWFydFJlcGxhY2UpOgorICAgICAgICAq
IGVkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnJlcGxhY2UpOgorICAgICAgICAqIGVkaXRp
bmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50RnJvbVRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRGb3JUcmFuc2Zvcm1Ub0ZyYWdtZW50
KToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5oOgorICAgICAgICAqIGh0bWwvQmFzZURhdGVB
bmRUaW1lSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlu
cHV0VHlwZTo6dXBkYXRlSW5uZXJUZXh0VmFsdWUpOgorICAgICAgICAqIGh0bWwvQmFzZURhdGVB
bmRUaW1lSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6YXBwZW5k
RW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmNy
ZWF0ZVRERm9yRmlsZW5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1l
bnRQYXJzZXI6OnBhcnNlQW5kQXBwZW5kT25lTGluZSk6CisgICAgICAgICogaHRtbC9IVE1MQW5j
aG9yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6c2V0
VGV4dCk6CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldElu
bmVyVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6c2V0T3V0ZXJUZXh0KToK
KyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWV0ZXJF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZXRlckVsZW1lbnQ6OmRpZEFkZFVz
ZXJBZ2VudFNoYWRvd1Jvb3QpOgorICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6OmNyZWF0ZUZvckxlZ2FjeUZh
Y3RvcnlGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6c2V0
VGV4dCk6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE91dHB1dEVs
ZW1lbnQ6OnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPdXRwdXRFbGVtZW50Ojpz
ZXREZWZhdWx0VmFsdWUpOgorICAgICAgICAqIGh0bWwvSFRNTE91dHB1dEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxTY3JpcHRFbGVtZW50OjpzZXRUZXh0KToKKyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVt
ZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldFZhbHVlQ29tbW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldERlZmF1bHRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojp1cGRhdGVQbGFjZWhvbGRlclRleHQpOgor
ICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQ6OnNldElubmVyVGV4dFZhbHVlKToKKyAgICAgICAgKiBodG1sL0hU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVGl0bGVFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUaXRsZUVsZW1lbnQ6OnNldFRleHQpOgor
ICAgICAgICAqIGh0bWwvSFRNTFRpdGxlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvVGV4dEZp
ZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6
dXBkYXRlUGxhY2Vob2xkZXJUZXh0KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9BdG9tSFRNTFRv
a2VuLmg6CisgICAgICAgIChXZWJDb3JlOjpBdG9tSFRNTFRva2VuOjpjb21tZW50KToKKyAgICAg
ICAgKiBodG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0Q29tbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0Q29tbWVudE9uRG9jdW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydENvbW1lbnRPbkhUTUxI
dG1sRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5z
ZXJ0VGV4dE5vZGUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0RhdGVUaW1lRWRpdEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVFZGl0QnVpbGRlcjo6dmlzaXRMaXRlcmFs
KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRlVGltZUZpZWxkRWxlbWVudDo6dXBkYXRlVmlzaWJsZVZhbHVlKToK
KyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0VHJhY2tDdWU6OnJlYnVpbGREaXNwbGF5VHJlZSk6CisgICAgICAgICogaHRtbC90cmFj
ay9WVFRDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VlRUQ3VlOjpnZXREaXNwbGF5VHJlZSk6
CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViVlRUVHJlZUJ1aWxkZXI6OmJ1aWxkRnJvbVN0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJWVFRUcmVlQnVpbGRlcjo6Y29uc3RydWN0VHJlZUZyb21Ub2tlbik6CisgICAgICAgICog
cGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2N1bWVudEZyYWdt
ZW50RnJvbURyYWdEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0RhdGVUaW1lRm9ybWF0
Lmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEYXRlVGltZVN0cmluZ0J1aWxkZXI6OnZpc2l0TGl0ZXJhbCk6CisgICAgICAg
ICogc3ZnL1NWR1RSZWZFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RSZWZFbGVt
ZW50Ojp1cGRhdGVSZWZlcmVuY2VkVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUUmVmRWxl
bWVudDo6ZGV0YWNoVGFyZ2V0KToKKyAgICAgICAgKiB4bWwvWE1MRXJyb3JzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6WE1MRXJyb3JzOjppbnNlcnRFcnJvck1lc3NhZ2VCbG9jayk6CisgICAgICAgICogeG1s
L1hNTFRyZWVWaWV3ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MVHJlZVZpZXdlcjo6dHJh
bnNmb3JtRG9jdW1lbnRUb1RyZWVWaWV3KToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3Nvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xUUHJvY2Vzc29yOjp0cmFuc2Zvcm1Ub0ZyYWdtZW50
KToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpjcmVhdGVMZWFmVGV4dE5vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlRG9jdW1lbnRGcmFnbWVudCk6CisK
IDIwMjItMDQtMTggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBJbXBsZW1lbnQgQ1NTVHJhbnNmb3JtVmFsdWUuaXMyRApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0
b21TdHJpbmcuaAppbmRleCBiZjRiZTRkOTljZDdjNGRlNGVhZDA5YjY0NzlhZjE5ZWFmNTIxY2Rj
Li4wYWRmNTIyM2JiNjAyOWMzZGU5ODljNjgzMTc0MDE2NmYwNmM3MDY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L0F0b21TdHJpbmcuaApAQCAtOTMsNiArOTMsNyBAQCBwdWJsaWM6CiAKICAgICBvcGVyYXRvciBj
b25zdCBTdHJpbmcmKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KICAgICBjb25zdCBTdHJp
bmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9OworICAgIFN0cmluZyByZWxl
YXNlU3RyaW5nKCkgeyByZXR1cm4gV1RGTW92ZShtX3N0cmluZyk7IH0KIAogICAgIC8vIEZJWE1F
OiBXaGF0IGd1YXJhbnRlZXMgdGhpcyBpc24ndCBhIFN5bWJvbEltcGwgcmF0aGVyIHRoYW4gYW4g
QXRvbVN0cmluZ0ltcGw/CiAgICAgQXRvbVN0cmluZ0ltcGwqIGltcGwoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxBdG9tU3RyaW5nSW1wbCo+KG1fc3RyaW5nLmltcGwoKSk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0NEQVRBU2VjdGlvbi5jcHAKaW5kZXggNzU0ZjQ4Mjg4ZmUxOTZhM2QyODJhMjk2ZDg3
OGQyMzM0ZDM5Nzg0Yi4uMjAyZGQ0NzBmMjBkNzYyN2Y4ZTRiNTI4OTIyYWMyZTAxYjg2NmI5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5jcHAKQEAgLTI5LDE0ICsyOSwxNCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChDREFUQVNlY3Rp
b24pOwogCi1pbmxpbmUgQ0RBVEFTZWN0aW9uOjpDREFUQVNlY3Rpb24oRG9jdW1lbnQmIGRvY3Vt
ZW50LCBjb25zdCBTdHJpbmcmIGRhdGEpCi0gICAgOiBUZXh0KGRvY3VtZW50LCBkYXRhLCBDcmVh
dGVUZXh0KQoraW5saW5lIENEQVRBU2VjdGlvbjo6Q0RBVEFTZWN0aW9uKERvY3VtZW50JiBkb2N1
bWVudCwgU3RyaW5nJiYgZGF0YSkKKyAgICA6IFRleHQoZG9jdW1lbnQsIFdURk1vdmUoZGF0YSks
IENyZWF0ZVRleHQpCiB7CiB9CiAKLVJlZjxDREFUQVNlY3Rpb24+IENEQVRBU2VjdGlvbjo6Y3Jl
YXRlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBkYXRhKQorUmVmPENEQVRBU2Vj
dGlvbj4gQ0RBVEFTZWN0aW9uOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmcmJiBk
YXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENEQVRBU2VjdGlvbihkb2N1bWVudCwg
ZGF0YSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENEQVRBU2VjdGlvbihkb2N1bWVudCwg
V1RGTW92ZShkYXRhKSkpOwogfQogCiBTdHJpbmcgQ0RBVEFTZWN0aW9uOjpub2RlTmFtZSgpIGNv
bnN0CkBAIC01MSw3ICs1MSw3IEBAIE5vZGU6Ok5vZGVUeXBlIENEQVRBU2VjdGlvbjo6bm9kZVR5
cGUoKSBjb25zdAogCiBSZWY8Tm9kZT4gQ0RBVEFTZWN0aW9uOjpjbG9uZU5vZGVJbnRlcm5hbChE
b2N1bWVudCYgdGFyZ2V0RG9jdW1lbnQsIENsb25pbmdPcGVyYXRpb24pCiB7Ci0gICAgcmV0dXJu
IGNyZWF0ZSh0YXJnZXREb2N1bWVudCwgZGF0YSgpKTsKKyAgICByZXR1cm4gY3JlYXRlKHRhcmdl
dERvY3VtZW50LCBTdHJpbmcgeyBkYXRhKCkgfSk7CiB9CiAKIGJvb2wgQ0RBVEFTZWN0aW9uOjpj
aGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdApAQCAtNTksOSArNTksOSBAQCBib29sIENE
QVRBU2VjdGlvbjo6Y2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3QKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLVJlZjxUZXh0PiBDREFUQVNlY3Rpb246OnZpcnR1YWxDcmVhdGUoY29uc3Qg
U3RyaW5nJiBkYXRhKQorUmVmPFRleHQ+IENEQVRBU2VjdGlvbjo6dmlydHVhbENyZWF0ZShTdHJp
bmcmJiBkYXRhKQogewotICAgIHJldHVybiBjcmVhdGUoZG9jdW1lbnQoKSwgZGF0YSk7CisgICAg
cmV0dXJuIGNyZWF0ZShkb2N1bWVudCgpLCBXVEZNb3ZlKGRhdGEpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5oCmluZGV4IGQ5NDA1Y2FlMzY5
YWQ3OGZmYzczYTkzODNiZjdiMWM2MzlhZDMyNTQuLmE1OTY4YzQxZDJjODk3NWRkNWNlODUwNzE4
MTkzNmM0ZTE4NzZhMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DREFUQVNlY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9uLmgKQEAgLTI5LDE2ICsy
OSwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDREFUQVNlY3Rpb24gZmluYWwgOiBw
dWJsaWMgVGV4dCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChDREFUQVNlY3Rpb24pOwog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8Q0RBVEFTZWN0aW9uPiBjcmVhdGUoRG9jdW1lbnQmLCBj
b25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgUmVmPENEQVRBU2VjdGlvbj4gY3JlYXRlKERvY3Vt
ZW50JiwgU3RyaW5nJiYpOwogCiBwcml2YXRlOgotICAgIENEQVRBU2VjdGlvbihEb2N1bWVudCYs
IGNvbnN0IFN0cmluZyYpOworICAgIENEQVRBU2VjdGlvbihEb2N1bWVudCYsIFN0cmluZyYmKTsK
IAogICAgIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIE5vZGVUeXBlIG5v
ZGVUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUmVmPE5vZGU+IGNsb25lTm9kZUludGVybmFs
KERvY3VtZW50JiwgQ2xvbmluZ09wZXJhdGlvbikgb3ZlcnJpZGU7CiAgICAgYm9vbCBjaGlsZFR5
cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdCBvdmVycmlkZTsKLSAgICBSZWY8VGV4dD4gdmlydHVh
bENyZWF0ZShjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBSZWY8VGV4dD4gdmlydHVhbENy
ZWF0ZShTdHJpbmcmJikgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaAppbmRleCAwMzFhZjQ5ZTJjYWVlNGRkNzMzOGRiZTMw
ZDFhNGQzMTMwOGVmODk2Li41M2E0ZWI5NzNiMjFjNzNhODk5NWNmMzM5NGU2NmY3N2QzZTRlNzIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgKQEAgLTQ1LDkgKzQ1LDkgQEAgcHVibGlj
OgogICAgIHVuc2lnbmVkIHBhcnNlckFwcGVuZERhdGEoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVu
c2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoTGltaXQpOwogCiBwcm90ZWN0ZWQ6Ci0gICAg
Q2hhcmFjdGVyRGF0YShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgQ29u
c3RydWN0aW9uVHlwZSB0eXBlID0gQ3JlYXRlQ2hhcmFjdGVyRGF0YSkKKyAgICBDaGFyYWN0ZXJE
YXRhKERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5nJiYgdGV4dCwgQ29uc3RydWN0aW9uVHlwZSB0
eXBlID0gQ3JlYXRlQ2hhcmFjdGVyRGF0YSkKICAgICAgICAgOiBOb2RlKGRvY3VtZW50LCB0eXBl
KQotICAgICAgICAsIG1fZGF0YSghdGV4dC5pc051bGwoKSA/IHRleHQgOiBlbXB0eVN0cmluZygp
KQorICAgICAgICAsIG1fZGF0YSghdGV4dC5pc051bGwoKSA/IFdURk1vdmUodGV4dCkgOiBlbXB0
eVN0cmluZygpKQogICAgIHsKICAgICAgICAgQVNTRVJUKHR5cGUgPT0gQ3JlYXRlQ2hhcmFjdGVy
RGF0YSB8fCB0eXBlID09IENyZWF0ZVRleHQgfHwgdHlwZSA9PSBDcmVhdGVFZGl0aW5nVGV4dCk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQuY3BwCmluZGV4IDhhM2UzMmY3NzM5MzQ5MWYyNTMyMjMw
N2RkMTY0OGZlYzE2ZWJmOWIuLmFmODg3NmIxOTJmNTk2YjY1NDgxNjcwMmQyMTIxYTg3ZGQ2ZTg0
YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21tZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29tbWVudC5jcHAKQEAgLTI5LDE0ICsyOSwxNCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChDb21tZW50KTsKIAotaW5s
aW5lIENvbW1lbnQ6OkNvbW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRl
eHQpCi0gICAgOiBDaGFyYWN0ZXJEYXRhKGRvY3VtZW50LCB0ZXh0KQoraW5saW5lIENvbW1lbnQ6
OkNvbW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmcmJiB0ZXh0KQorICAgIDogQ2hhcmFj
dGVyRGF0YShkb2N1bWVudCwgV1RGTW92ZSh0ZXh0KSkKIHsKIH0KIAotUmVmPENvbW1lbnQ+IENv
bW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4dCkKK1Jl
ZjxDb21tZW50PiBDb21tZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmcmJiB0
ZXh0KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbW1lbnQoZG9jdW1lbnQsIHRleHQp
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb21tZW50KGRvY3VtZW50LCBXVEZNb3ZlKHRl
eHQpKSk7CiB9CiAKIFN0cmluZyBDb21tZW50Ojpub2RlTmFtZSgpIGNvbnN0CkBAIC01MSw3ICs1
MSw3IEBAIE5vZGU6Ok5vZGVUeXBlIENvbW1lbnQ6Om5vZGVUeXBlKCkgY29uc3QKIAogUmVmPE5v
ZGU+IENvbW1lbnQ6OmNsb25lTm9kZUludGVybmFsKERvY3VtZW50JiB0YXJnZXREb2N1bWVudCwg
Q2xvbmluZ09wZXJhdGlvbikKIHsKLSAgICByZXR1cm4gY3JlYXRlKHRhcmdldERvY3VtZW50LCBk
YXRhKCkpOworICAgIHJldHVybiBjcmVhdGUodGFyZ2V0RG9jdW1lbnQsIFN0cmluZyB7IGRhdGEo
KSB9KTsKIH0KIAogYm9vbCBDb21tZW50OjpjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db21tZW50LmgKaW5kZXggZDRjMWU5NWQ1NGE2OTI1MzEwZDYwODkwNzI5NTYwZmQw
ZGFiYzI1NS4uMjc3ZDJjMjYzYmVmZTYxY2VjOWJiMDU2MTY5NzIwNTUyYjZkNTdlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29tbWVudC5oCkBAIC0yOSwxMCArMjksMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgQ29tbWVudCBmaW5hbCA6IHB1YmxpYyBDaGFyYWN0ZXJEYXRhIHsKICAgICBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEKENvbW1lbnQpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q29tbWVudD4g
Y3JlYXRlKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIFJlZjxDb21tZW50
PiBjcmVhdGUoRG9jdW1lbnQmLCBTdHJpbmcmJik7CiAKIHByaXZhdGU6Ci0gICAgQ29tbWVudChE
b2N1bWVudCYsIGNvbnN0IFN0cmluZyYpOworICAgIENvbW1lbnQoRG9jdW1lbnQmLCBTdHJpbmcm
Jik7CiAKICAgICBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICBOb2RlVHlw
ZSBub2RlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUu
Y3BwCmluZGV4IDY0MWE3ODc3ZGMwNTc5OTNhYWJjZDFiNDcxNWRlYzg4OGIzYTJmM2MuLmQ1NDA0
MWI1MDkxZDZlZTcwYTU3MmRkYTZjNGNhNzJiOTFlNWUyZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5jcHAKQEAgLTcyNCw5ICs3MjQsOSBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnJl
cGxhY2VBbGwoTm9kZSogbm9kZSkKIH0KIAogLy8gaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3Jn
LyNzdHJpbmctcmVwbGFjZS1hbGwKLXZvaWQgQ29udGFpbmVyTm9kZTo6c3RyaW5nUmVwbGFjZUFs
bChjb25zdCBTdHJpbmcmIHN0cmluZykKK3ZvaWQgQ29udGFpbmVyTm9kZTo6c3RyaW5nUmVwbGFj
ZUFsbChTdHJpbmcmJiBzdHJpbmcpCiB7Ci0gICAgcmVwbGFjZUFsbChzdHJpbmcuaXNFbXB0eSgp
ID8gbnVsbHB0ciA6IGRvY3VtZW50KCkuY3JlYXRlVGV4dE5vZGUoc3RyaW5nKS5wdHIoKSk7Cisg
ICAgcmVwbGFjZUFsbChzdHJpbmcuaXNFbXB0eSgpID8gbnVsbHB0ciA6IGRvY3VtZW50KCkuY3Jl
YXRlVGV4dE5vZGUoV1RGTW92ZShzdHJpbmcpKS5wdHIoKSk7CiB9CiAKIGlubGluZSB2b2lkIENv
bnRhaW5lck5vZGU6OnJlYnVpbGRTVkdFeHRlbnNpb25zRWxlbWVudHNJZk5lY2Vzc2FyeSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAppbmRleCA4MDgzZDQyNmYwMWRmZTVjNTQ4YjMxZGJk
MTZjZWZhYTRlOTA1NGIwLi4xMTk0ZTM2YWRlZWFlYWQxN2I2OGE0MWYxZDZlMzI2NjA4MzM5MzUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGlj
OgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlcGxhY2VDaGlsZChOb2RlJiBuZXdDaGlsZCwgTm9k
ZSYgb2xkQ2hpbGQpOwogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlbW92
ZUNoaWxkKE5vZGUmIGNoaWxkKTsKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lk
PiBhcHBlbmRDaGlsZChOb2RlJiBuZXdDaGlsZCk7Ci0gICAgdm9pZCBzdHJpbmdSZXBsYWNlQWxs
KGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc3RyaW5nUmVwbGFjZUFsbChTdHJpbmcmJik7CiAg
ICAgdm9pZCByZXBsYWNlQWxsKE5vZGUqKTsKIAogICAgIENvbnRhaW5lck5vZGUmIHJvb3ROb2Rl
KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8Q29udGFpbmVyTm9kZT4oTm9kZTo6cm9vdE5vZGUo
KSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCmluZGV4IDU4NDM1
YmMzZmNhZDNjZGE3ODk3MGEyMTFlNzYyYmZjY2YwMTJmNzUuLjY4ZGRkNmM5MzM2NWU5YWM5YmZk
ZTU3MjkyNmY1ZTg2ZTNlOWFkODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01J
bXBsZW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0
aW9uLmNwcApAQCAtMTIzLDE0ICsxMjMsMTQgQEAgUmVmPENTU1N0eWxlU2hlZXQ+IERPTUltcGxl
bWVudGF0aW9uOjpjcmVhdGVDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYsIGNvbnN0IFMKICAg
ICByZXR1cm4gc2hlZXQ7CiB9CiAKLVJlZjxIVE1MRG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9u
OjpjcmVhdGVIVE1MRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0aXRsZSkKK1JlZjxIVE1MRG9jdW1l
bnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVIVE1MRG9jdW1lbnQoU3RyaW5nJiYgdGl0bGUp
CiB7CiAgICAgYXV0byBkb2N1bWVudCA9IEhUTUxEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIG1f
ZG9jdW1lbnQuc2V0dGluZ3MoKSwgVVJMKCksIHsgfSk7CiAgICAgZG9jdW1lbnQtPm9wZW4oKTsK
ICAgICBkb2N1bWVudC0+d3JpdGUobnVsbHB0ciwgeyAiPCFkb2N0eXBlIGh0bWw+PGh0bWw+PGhl
YWQ+PC9oZWFkPjxib2R5PjwvYm9keT48L2h0bWw+Il9zIH0pOwogICAgIGlmICghdGl0bGUuaXNO
dWxsKCkpIHsKICAgICAgICAgYXV0byB0aXRsZUVsZW1lbnQgPSBIVE1MVGl0bGVFbGVtZW50Ojpj
cmVhdGUodGl0bGVUYWcsIGRvY3VtZW50KTsKLSAgICAgICAgdGl0bGVFbGVtZW50LT5hcHBlbmRD
aGlsZChkb2N1bWVudC0+Y3JlYXRlVGV4dE5vZGUodGl0bGUpKTsKKyAgICAgICAgdGl0bGVFbGVt
ZW50LT5hcHBlbmRDaGlsZChkb2N1bWVudC0+Y3JlYXRlVGV4dE5vZGUoV1RGTW92ZSh0aXRsZSkp
KTsKICAgICAgICAgQVNTRVJUKGRvY3VtZW50LT5oZWFkKCkpOwogICAgICAgICBkb2N1bWVudC0+
aGVhZCgpLT5hcHBlbmRDaGlsZCh0aXRsZUVsZW1lbnQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RPTUltcGxlbWVudGF0aW9uLmgKaW5kZXggZTg5ZTJmZTYzNWY5YTczZmIxYTJiMGY2NDFjMDk5
NDgzZDU3MzA2Ni4uMjcyYTY0ZWNhNmJkMTFhYTZmMzU2MDhkZmNkYjZkMTkyOWEyOGY5OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVi
bGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVmPERvY3VtZW50VHlwZT4+
IGNyZWF0ZURvY3VtZW50VHlwZShjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsIGNvbnN0IFN0
cmluZyYgcHVibGljSWQsIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIEV4Y2VwdGlvbk9yPFJlZjxYTUxEb2N1bWVudD4+IGNyZWF0ZURvY3VtZW50KGNvbnN0IFN0
cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsIERvY3VtZW50
VHlwZSopOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxIVE1MRG9jdW1lbnQ+IGNyZWF0ZUhUTUxE
b2N1bWVudChjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8SFRN
TERvY3VtZW50PiBjcmVhdGVIVE1MRG9jdW1lbnQoU3RyaW5nJiYgdGl0bGUpOwogICAgIHN0YXRp
YyBib29sIGhhc0ZlYXR1cmUoKSB7IHJldHVybiB0cnVlOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxDU1NTdHlsZVNoZWV0PiBjcmVhdGVDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgbWVkaWEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApp
bmRleCA1NGRjNDU5ZjNiNTJlMjUwMjk4NjczNjAwMDJlZDllYzQ2ZTAyYWI4Li5hMjdiNDMxNGM0
MDA1YjMwYThkMjUyZTdhMmVjZjY1M2QzNTc3Mjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
QEAgLTEwNjksMTcgKzEwNjksMTcgQEAgUmVmPERvY3VtZW50RnJhZ21lbnQ+IERvY3VtZW50Ojpj
cmVhdGVEb2N1bWVudEZyYWdtZW50KCkKICAgICByZXR1cm4gRG9jdW1lbnRGcmFnbWVudDo6Y3Jl
YXRlKGRvY3VtZW50KCkpOwogfQogCi1SZWY8VGV4dD4gRG9jdW1lbnQ6OmNyZWF0ZVRleHROb2Rl
KGNvbnN0IFN0cmluZyYgZGF0YSkKK1JlZjxUZXh0PiBEb2N1bWVudDo6Y3JlYXRlVGV4dE5vZGUo
U3RyaW5nJiYgZGF0YSkKIHsKLSAgICByZXR1cm4gVGV4dDo6Y3JlYXRlKCp0aGlzLCBkYXRhKTsK
KyAgICByZXR1cm4gVGV4dDo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGRhdGEpKTsKIH0KIAotUmVm
PENvbW1lbnQ+IERvY3VtZW50OjpjcmVhdGVDb21tZW50KGNvbnN0IFN0cmluZyYgZGF0YSkKK1Jl
ZjxDb21tZW50PiBEb2N1bWVudDo6Y3JlYXRlQ29tbWVudChTdHJpbmcmJiBkYXRhKQogewotICAg
IHJldHVybiBDb21tZW50OjpjcmVhdGUoKnRoaXMsIGRhdGEpOworICAgIHJldHVybiBDb21tZW50
OjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoZGF0YSkpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8Q0RB
VEFTZWN0aW9uPj4gRG9jdW1lbnQ6OmNyZWF0ZUNEQVRBU2VjdGlvbihjb25zdCBTdHJpbmcmIGRh
dGEpCitFeGNlcHRpb25PcjxSZWY8Q0RBVEFTZWN0aW9uPj4gRG9jdW1lbnQ6OmNyZWF0ZUNEQVRB
U2VjdGlvbihTdHJpbmcmJiBkYXRhKQogewogICAgIGlmIChpc0hUTUxEb2N1bWVudCgpKQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKQEAgLTEwODcsMTAg
KzEwODcsMTAgQEAgRXhjZXB0aW9uT3I8UmVmPENEQVRBU2VjdGlvbj4+IERvY3VtZW50OjpjcmVh
dGVDREFUQVNlY3Rpb24oY29uc3QgU3RyaW5nJiBkYXRhKQogICAgIGlmIChkYXRhLmNvbnRhaW5z
KCJdXT4iKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRDaGFyYWN0ZXJFcnJv
ciB9OwogCi0gICAgcmV0dXJuIENEQVRBU2VjdGlvbjo6Y3JlYXRlKCp0aGlzLCBkYXRhKTsKKyAg
ICByZXR1cm4gQ0RBVEFTZWN0aW9uOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoZGF0YSkpOwogfQog
Ci1FeGNlcHRpb25PcjxSZWY8UHJvY2Vzc2luZ0luc3RydWN0aW9uPj4gRG9jdW1lbnQ6OmNyZWF0
ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5n
JiBkYXRhKQorRXhjZXB0aW9uT3I8UmVmPFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4+IERvY3VtZW50
OjpjcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oU3RyaW5nJiYgdGFyZ2V0LCBTdHJpbmcmJiBk
YXRhKQogewogICAgIGlmICghaXNWYWxpZE5hbWUodGFyZ2V0KSkKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IEludmFsaWRDaGFyYWN0ZXJFcnJvciB9OwpAQCAtMTA5OCwxMiArMTA5OCwxMiBA
QCBFeGNlcHRpb25PcjxSZWY8UHJvY2Vzc2luZ0luc3RydWN0aW9uPj4gRG9jdW1lbnQ6OmNyZWF0
ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihjbwogICAgIGlmIChkYXRhLmNvbnRhaW5zKCI/PiIpKQog
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZENoYXJhY3RlckVycm9yIH07CiAKLSAg
ICByZXR1cm4gUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjcmVhdGUoKnRoaXMsIHRhcmdldCwgZGF0
YSk7CisgICAgcmV0dXJuIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y3JlYXRlKCp0aGlzLCBXVEZN
b3ZlKHRhcmdldCksIFdURk1vdmUoZGF0YSkpOwogfQogCi1SZWY8VGV4dD4gRG9jdW1lbnQ6OmNy
ZWF0ZUVkaXRpbmdUZXh0Tm9kZShjb25zdCBTdHJpbmcmIHRleHQpCitSZWY8VGV4dD4gRG9jdW1l
bnQ6OmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZShTdHJpbmcmJiB0ZXh0KQogewotICAgIHJldHVybiBU
ZXh0OjpjcmVhdGVFZGl0aW5nVGV4dCgqdGhpcywgdGV4dCk7CisgICAgcmV0dXJuIFRleHQ6OmNy
ZWF0ZUVkaXRpbmdUZXh0KCp0aGlzLCBXVEZNb3ZlKHRleHQpKTsKIH0KIAogUmVmPENTU1N0eWxl
RGVjbGFyYXRpb24+IERvY3VtZW50OjpjcmVhdGVDU1NTdHlsZURlY2xhcmF0aW9uKCkKQEAgLTE3
MzEsNyArMTczMSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVRpdGxlRnJvbVRpdGxlRWxlbWVu
dCgpCiAgICAgfQogfQogCi12b2lkIERvY3VtZW50OjpzZXRUaXRsZShjb25zdCBTdHJpbmcmIHRp
dGxlKQordm9pZCBEb2N1bWVudDo6c2V0VGl0bGUoU3RyaW5nJiYgdGl0bGUpCiB7CiAgICAgUmVm
UHRyIGVsZW1lbnQgPSBkb2N1bWVudEVsZW1lbnQoKTsKICAgICBpZiAoaXM8U1ZHU1ZHRWxlbWVu
dD4oZWxlbWVudCkpIHsKQEAgLTE3NDEsNyArMTc0MSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFRp
dGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAgICAgIH0KICAgICAgICAgLy8gaW5zZXJ0QmVm
b3JlIGFib3ZlIG1heSBoYXZlIHJhbiBzY3JpcHRzIHdoaWNoIHJlbW92ZWQgbV90aXRsZUVsZW1l
bnQuCiAgICAgICAgIGlmIChtX3RpdGxlRWxlbWVudCkKLSAgICAgICAgICAgIG1fdGl0bGVFbGVt
ZW50LT5zZXRUZXh0Q29udGVudCh0aXRsZSk7CisgICAgICAgICAgICBtX3RpdGxlRWxlbWVudC0+
c2V0VGV4dENvbnRlbnQoV1RGTW92ZSh0aXRsZSkpOwogICAgIH0gZWxzZSBpZiAoaXM8SFRNTEVs
ZW1lbnQ+KGVsZW1lbnQpKSB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBvbGRUaXRs
ZTsKICAgICAgICAgaWYgKCFtX3RpdGxlRWxlbWVudCkgewpAQCAtMTc1Nyw3ICsxNzU3LDcgQEAg
dm9pZCBEb2N1bWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICAgICAgaWYg
KCFtX3RpdGxlRWxlbWVudCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAKLSAgICAgICAgbV90
aXRsZUVsZW1lbnQtPnNldFRleHRDb250ZW50KHRpdGxlKTsKKyAgICAgICAgbV90aXRsZUVsZW1l
bnQtPnNldFRleHRDb250ZW50KFN0cmluZyB7IHRpdGxlIH0pOwogICAgICAgICBhdXRvKiB0ZXh0
TWFuaXB1bGF0aW9uQ29udHJvbGxlciA9IHRleHRNYW5pcHVsYXRpb25Db250cm9sbGVySWZFeGlz
dHMoKTsKICAgICAgICAgaWYgKFVOTElLRUxZKHRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyKSkg
ewogICAgICAgICAgICAgaWYgKCFvbGRUaXRsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggOTUx
ZGFlMmIwZDU5NmRlZjU2MzdhZTE0Njk1YmMyMjA2MDkzZmFjZi4uMTRmYmE1NmU2NjZkNzhkNzM4
OTU0MGE3NzAyMTU0Y2RjNzk3NGNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTQzNSwxMCAr
NDM1LDEwIEBAIHB1YmxpYzoKICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxS
ZWY8RWxlbWVudD4+IGNyZWF0ZUVsZW1lbnRGb3JCaW5kaW5ncyhjb25zdCBBdG9tU3RyaW5nJiB0
YWdOYW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRl
RG9jdW1lbnRGcmFnbWVudCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxUZXh0PiBjcmVhdGVU
ZXh0Tm9kZShjb25zdCBTdHJpbmcmIGRhdGEpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb21t
ZW50PiBjcmVhdGVDb21tZW50KGNvbnN0IFN0cmluZyYgZGF0YSk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgRXhjZXB0aW9uT3I8UmVmPENEQVRBU2VjdGlvbj4+IGNyZWF0ZUNEQVRBU2VjdGlvbihjb25z
dCBTdHJpbmcmIGRhdGEpOwotICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFJlZjxQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24+PiBjcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oY29uc3QgU3Ry
aW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgZGF0YSk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVm
PFRleHQ+IGNyZWF0ZVRleHROb2RlKFN0cmluZyYmIGRhdGEpOworICAgIFdFQkNPUkVfRVhQT1JU
IFJlZjxDb21tZW50PiBjcmVhdGVDb21tZW50KFN0cmluZyYmIGRhdGEpOworICAgIFdFQkNPUkVf
RVhQT1JUIEV4Y2VwdGlvbk9yPFJlZjxDREFUQVNlY3Rpb24+PiBjcmVhdGVDREFUQVNlY3Rpb24o
U3RyaW5nJiYgZGF0YSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVmPFByb2Nl
c3NpbmdJbnN0cnVjdGlvbj4+IGNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihTdHJpbmcmJiB0
YXJnZXQsIFN0cmluZyYmIGRhdGEpOwogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFJl
ZjxBdHRyPj4gY3JlYXRlQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpOwogICAgIFdF
QkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFJlZjxBdHRyPj4gY3JlYXRlQXR0cmlidXRlTlMoY29u
c3QgQXRvbVN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUs
IGJvb2wgc2hvdWxkSWdub3JlTmFtZXNwYWNlQ2hlY2tzID0gZmFsc2UpOwogICAgIFdFQkNPUkVf
RVhQT1JUIEV4Y2VwdGlvbk9yPFJlZjxOb2RlPj4gaW1wb3J0Tm9kZShOb2RlJiBub2RlVG9JbXBv
cnQsIGJvb2wgZGVlcCk7CkBAIC02MTIsNyArNjEyLDcgQEAgcHVibGljOgogCiAgICAgLy8gU3Bl
Y2lhbCBzdXBwb3J0IGZvciBlZGl0aW5nCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENTU1N0eWxl
RGVjbGFyYXRpb24+IGNyZWF0ZUNTU1N0eWxlRGVjbGFyYXRpb24oKTsKLSAgICBSZWY8VGV4dD4g
Y3JlYXRlRWRpdGluZ1RleHROb2RlKGNvbnN0IFN0cmluZyYpOworICAgIFJlZjxUZXh0PiBjcmVh
dGVFZGl0aW5nVGV4dE5vZGUoU3RyaW5nJiYpOwogCiAgICAgZW51bSBjbGFzcyBSZXNvbHZlU3R5
bGVUeXBlIHsgTm9ybWFsLCBSZWJ1aWxkIH07CiAgICAgdm9pZCByZXNvbHZlU3R5bGUoUmVzb2x2
ZVN0eWxlVHlwZSA9IFJlc29sdmVTdHlsZVR5cGU6Ok5vcm1hbCk7CkBAIC05NjgsNyArOTY4LDcg
QEAgcHVibGljOgogCiAgICAgLy8gVXNlZCBieSBET00gYmluZGluZ3M7IG5vIGRpcmVjdGlvbiBr
bm93bi4KICAgICBjb25zdCBTdHJpbmcmIHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV90aXRsZS5z
dHJpbmc7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGl0bGUoU3RyaW5nJiYpOwogICAgIGNvbnN0
IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlV2l0aERpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fdGl0bGU7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEF0b21TdHJpbmcmIGRpcigp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGViNzY5NWVkZTNjMzNjNTkxZGZlNWVh
MjU3ODNmMGM2NjAxNDk0YmQuLjA3MWI4N2Q1ZWFlYjg4YjQ0NGZmODE5NzBlOGZkY2FiNTUwNjY5
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTQ2NTEsOSArNDY1MSw5IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IEVsZW1lbnQ6Omluc2VydEFkamFjZW50SFRNTChjb25zdCBTdHJpbmcmIHdoZXJl
LCBjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIGluc2VydEFkamFjZW50SFRNTCh3aGVyZSwgbWFy
a3VwLCBudWxscHRyKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gRWxlbWVudDo6aW5zZXJ0QWRq
YWNlbnRUZXh0KGNvbnN0IFN0cmluZyYgd2hlcmUsIGNvbnN0IFN0cmluZyYgdGV4dCkKK0V4Y2Vw
dGlvbk9yPHZvaWQ+IEVsZW1lbnQ6Omluc2VydEFkamFjZW50VGV4dChjb25zdCBTdHJpbmcmIHdo
ZXJlLCBTdHJpbmcmJiB0ZXh0KQogewotICAgIGF1dG8gcmVzdWx0ID0gaW5zZXJ0QWRqYWNlbnQo
d2hlcmUsIGRvY3VtZW50KCkuY3JlYXRlVGV4dE5vZGUodGV4dCkpOworICAgIGF1dG8gcmVzdWx0
ID0gaW5zZXJ0QWRqYWNlbnQod2hlcmUsIGRvY3VtZW50KCkuY3JlYXRlVGV4dE5vZGUoV1RGTW92
ZSh0ZXh0KSkpOwogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaAppbmRleCBmMjUwOThjNzY5ZTc5MGUxZTFlMTY5MTZiYjE0NmUwMDQ1NjY0MDA4Li4yYjNl
Mzk5ZGE0Nzk3Y2U3NjgyY2U2NTUzNTQ3ZjlhNDMxYjJkY2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgK
QEAgLTM3Miw3ICszNzIsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRp
b25PcjxFbGVtZW50Kj4gaW5zZXJ0QWRqYWNlbnRFbGVtZW50KGNvbnN0IFN0cmluZyYgd2hlcmUs
IEVsZW1lbnQmIG5ld0NoaWxkKTsKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lk
PiBpbnNlcnRBZGphY2VudEhUTUwoY29uc3QgU3RyaW5nJiB3aGVyZSwgY29uc3QgU3RyaW5nJiBo
dG1sKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBpbnNlcnRBZGphY2Vu
dFRleHQoY29uc3QgU3RyaW5nJiB3aGVyZSwgY29uc3QgU3RyaW5nJiB0ZXh0KTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBpbnNlcnRBZGphY2VudFRleHQoY29uc3QgU3Ry
aW5nJiB3aGVyZSwgU3RyaW5nJiYgdGV4dCk7CiAKICAgICBjb25zdCBSZW5kZXJTdHlsZSogY29t
cHV0ZWRTdHlsZShQc2V1ZG9JZCA9IFBzZXVkb0lkOjpOb25lKSBvdmVycmlkZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdlT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vSW1hZ2VPdmVybGF5LmNwcAppbmRleCBlMDRjNzY2OWI2MzRjMDM2N2Y2Mjc4MDlkZjE2
ZmMzNDQ1NjU2ZTY5Li43ODRiNWFlYzA4MzA4ZDgwMDc5NjI2MzFhZjI4MTQyMzQzY2JkNDBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW1hZ2VPdmVybGF5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vSW1hZ2VPdmVybGF5LmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRp
YyB2b2lkIGluc3RhbGxJbWFnZU92ZXJsYXlTdHlsZVNoZWV0KFNoYWRvd1Jvb3QmIHNoYWRvd1Jv
b3QpCiB7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+
IHNoYWRvd1N0eWxlKFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKGltYWdlT3Zlcmxh
eVVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihpbWFnZU92ZXJsYXlVc2VyQWdlbnRTdHlsZVNo
ZWV0KSkpOwogICAgIGF1dG8gc3R5bGUgPSBIVE1MU3R5bGVFbGVtZW50OjpjcmVhdGUoSFRNTE5h
bWVzOjpzdHlsZVRhZywgc2hhZG93Um9vdC5kb2N1bWVudCgpLCBmYWxzZSk7Ci0gICAgc3R5bGUt
PnNldFRleHRDb250ZW50KHNoYWRvd1N0eWxlKTsKKyAgICBzdHlsZS0+c2V0VGV4dENvbnRlbnQo
U3RyaW5nIHsgc2hhZG93U3R5bGUgfSk7CiAgICAgc2hhZG93Um9vdC5hcHBlbmRDaGlsZChXVEZN
b3ZlKHN0eWxlKSk7CiB9CiAKQEAgLTM5Nyw3ICszOTcsNyBAQCBzdGF0aWMgRWxlbWVudHMgdXBk
YXRlU3VidHJlZShIVE1MRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVGV4dFJlY29nbml0aW9uUmVz
dWx0JgogICAgICAgICAgICAgICAgIGF1dG8gdGV4dENvbnRhaW5lciA9IEhUTUxEaXZFbGVtZW50
OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCkpOwogICAgICAgICAgICAgICAgIHRleHRDb250YWluZXIt
PmNsYXNzTGlzdCgpLmFkZChpbWFnZU92ZXJsYXlUZXh0Q2xhc3MoKSk7CiAgICAgICAgICAgICAg
ICAgbGluZUNvbnRhaW5lci0+YXBwZW5kQ2hpbGQodGV4dENvbnRhaW5lcik7Ci0gICAgICAgICAg
ICAgICAgdGV4dENvbnRhaW5lci0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50Lmdl
dCgpLCBjaGlsZC5oYXNMZWFkaW5nV2hpdGVzcGFjZSA/IG1ha2VTdHJpbmcoJ1xuJywgY2hpbGQu
dGV4dCkgOiBjaGlsZC50ZXh0KSk7CisgICAgICAgICAgICAgICAgdGV4dENvbnRhaW5lci0+YXBw
ZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50LmdldCgpLCBjaGlsZC5oYXNMZWFkaW5nV2hp
dGVzcGFjZSA/IG1ha2VTdHJpbmcoJ1xuJywgY2hpbGQudGV4dCkgOiBTdHJpbmcgeyBjaGlsZC50
ZXh0IH0pKTsKICAgICAgICAgICAgICAgICBsaW5lRWxlbWVudHMuY2hpbGRyZW4udW5jaGVja2Vk
QXBwZW5kKFdURk1vdmUodGV4dENvbnRhaW5lcikpOwogICAgICAgICAgICAgfQogCkBAIC00MjQs
MTAgKzQyNCwxMCBAQCBzdGF0aWMgRWxlbWVudHMgdXBkYXRlU3VidHJlZShIVE1MRWxlbWVudCYg
ZWxlbWVudCwgY29uc3QgVGV4dFJlY29nbml0aW9uUmVzdWx0JgogICAgICAgICAgICAgYXV0byBi
bG9ja0NvbnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCkpOwog
ICAgICAgICAgICAgYmxvY2tDb250YWluZXItPmNsYXNzTGlzdCgpLmFkZChpbWFnZU92ZXJsYXlC
bG9ja0NsYXNzKCkpOwogICAgICAgICAgICAgYXV0byBsaW5lcyA9IGJsb2NrLnRleHQuc3BsaXQo
bmV3bGluZUNoYXJhY3Rlcik7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIHRleHRDb250ZW50IDog
bGluZXMpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYmIHRleHRDb250ZW50IDogV1RGTW92ZShs
aW5lcykpIHsKICAgICAgICAgICAgICAgICBpZiAoYmxvY2tDb250YWluZXItPmhhc0NoaWxkTm9k
ZXMoKSkKICAgICAgICAgICAgICAgICAgICAgYmxvY2tDb250YWluZXItPmFwcGVuZENoaWxkKEhU
TUxCUkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudC5nZXQoKSkpOwotICAgICAgICAgICAgICAgIGJs
b2NrQ29udGFpbmVyLT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCksIHRl
eHRDb250ZW50KSk7CisgICAgICAgICAgICAgICAgYmxvY2tDb250YWluZXItPmFwcGVuZENoaWxk
KFRleHQ6OmNyZWF0ZShkb2N1bWVudC5nZXQoKSwgV1RGTW92ZSh0ZXh0Q29udGVudCkpKTsKICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgY29uc3RleHByIGF1dG8gbWF4TGluZUNvdW50Rm9y
Q2VudGVyQWxpZ25lZFRleHQgPSAyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGNiNDdlYWFlYzBkZTcw
NWIzNDgzNmY1NzAyN2I0ZGMxNTc4Yjk1MWUuLjNhZWEwYjQ1OWVmNTgxZGUwYTM0MjIxMzc5OWMx
NWRiNzY1MWQ1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTU1Miw3ICs1NTIsNyBAQCBFeGNlcHRp
b25PcjxSZWZQdHI8Tm9kZT4+IE5vZGU6OmNvbnZlcnROb2Rlc09yU3RyaW5nc0ludG9Ob2RlKEZp
eGVkVmVjdG9yPE5vZGVPcgogICAgIGZvciAoYXV0byYgdmFyaWFudCA6IG5vZGVPclN0cmluZ1Zl
Y3RvcikgewogICAgICAgICBXVEY6OnN3aXRjaE9uKHZhcmlhbnQsCiAgICAgICAgICAgICBbJl0o
UmVmUHRyPE5vZGU+JiBub2RlKSB7IG5vZGVzLnVuY2hlY2tlZEFwcGVuZCgqbm9kZS5nZXQoKSk7
IH0sCi0gICAgICAgICAgICBbJl0oU3RyaW5nJiBzdHJpbmcpIHsgbm9kZXMudW5jaGVja2VkQXBw
ZW5kKFRleHQ6OmNyZWF0ZShkb2N1bWVudCgpLCBzdHJpbmcpKTsgfQorICAgICAgICAgICAgWyZd
KFN0cmluZyYgc3RyaW5nKSB7IG5vZGVzLnVuY2hlY2tlZEFwcGVuZChUZXh0OjpjcmVhdGUoZG9j
dW1lbnQoKSwgV1RGTW92ZShzdHJpbmcpKSk7IH0KICAgICAgICAgKTsKICAgICB9CiAKQEAgLTE1
OTAsNyArMTU5MCw3IEBAIFN0cmluZyBOb2RlOjp0ZXh0Q29udGVudChib29sIGNvbnZlcnRCUnNU
b05ld2xpbmVzKSBjb25zdAogICAgIHJldHVybiBpc051bGxTdHJpbmcgPyBTdHJpbmcoKSA6IGNv
bnRlbnQudG9TdHJpbmcoKTsKIH0KIAotdm9pZCBOb2RlOjpzZXRUZXh0Q29udGVudChjb25zdCBT
dHJpbmcmIHRleHQpCit2b2lkIE5vZGU6OnNldFRleHRDb250ZW50KFN0cmluZyYmIHRleHQpCiB7
ICAgICAgICAgICAKICAgICBzd2l0Y2ggKG5vZGVUeXBlKCkpIHsKICAgICBjYXNlIEFUVFJJQlVU
RV9OT0RFOgpAQCAtMTU5OCwxMSArMTU5OCwxMSBAQCB2b2lkIE5vZGU6OnNldFRleHRDb250ZW50
KGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBjYXNlIENEQVRBX1NFQ1RJT05fTk9ERToKICAgICBj
YXNlIENPTU1FTlRfTk9ERToKICAgICBjYXNlIFBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToK
LSAgICAgICAgc2V0Tm9kZVZhbHVlKHRleHQpOworICAgICAgICBzZXROb2RlVmFsdWUoV1RGTW92
ZSh0ZXh0KSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEVMRU1FTlRfTk9ERToKICAgICBj
YXNlIERPQ1VNRU5UX0ZSQUdNRU5UX05PREU6Ci0gICAgICAgIGRvd25jYXN0PENvbnRhaW5lck5v
ZGU+KCp0aGlzKS5zdHJpbmdSZXBsYWNlQWxsKHRleHQpOworICAgICAgICBkb3duY2FzdDxDb250
YWluZXJOb2RlPigqdGhpcykuc3RyaW5nUmVwbGFjZUFsbChXVEZNb3ZlKHRleHQpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIGNhc2UgRE9DVU1FTlRfTk9ERToKICAgICBjYXNlIERPQ1VNRU5UX1RZ
UEVfTk9ERToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IGEzM2U2ODIyNjVlM2ExMWJhNWI1ODJjMTNkMDBjYTI4
OGZhZTM1ZTAuLmE4NTYwMzBiYzExZGFjODBlMjM5YTVhMjZlYTlkMTNkODVlZjJkMTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaApAQCAtMTc1LDcgKzE3NSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBj
b25zdCBBdG9tU3RyaW5nJiBsb29rdXBOYW1lc3BhY2VVUkkoY29uc3QgQXRvbVN0cmluZyYgcHJl
Zml4KSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0ZXh0Q29udGVudChib29s
IGNvbnZlcnRCUnNUb05ld2xpbmVzID0gZmFsc2UpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0VGV4dENvbnRlbnQoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRUZXh0Q29udGVudChTdHJpbmcmJik7CiAgICAgCiAgICAgTm9kZSogbGFzdERlc2Nl
bmRhbnQoKSBjb25zdDsKICAgICBOb2RlKiBmaXJzdERlc2NlbmRhbnQoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKaW5kZXggOTc0Njk2Mjlm
OTQ1M2U3ZDE2MzdhYTU1YTgzNjQxY2Q0ZTBlZWQzYy4uYzJmM2I3MzA3ZDBkMDkwYTMzY2M3MTY2
ZGE2MjM0OWY1MmI1MGNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3Np
bmdJbnN0cnVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0
cnVjdGlvbi5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdU
Rl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pOwogCi1pbmxp
bmUgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBkYXRhKQotICAg
IDogQ2hhcmFjdGVyRGF0YShkb2N1bWVudCwgZGF0YSkKLSAgICAsIG1fdGFyZ2V0KHRhcmdldCkK
K2lubGluZSBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OlByb2Nlc3NpbmdJbnN0cnVjdGlvbihEb2N1
bWVudCYgZG9jdW1lbnQsIFN0cmluZyYmIHRhcmdldCwgU3RyaW5nJiYgZGF0YSkKKyAgICA6IENo
YXJhY3RlckRhdGEoZG9jdW1lbnQsIFdURk1vdmUoZGF0YSkpCisgICAgLCBtX3RhcmdldChXVEZN
b3ZlKHRhcmdldCkpCiB7CiB9CiAKLVJlZjxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24+IFByb2Nlc3Np
bmdJbnN0cnVjdGlvbjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0
YXJnZXQsIGNvbnN0IFN0cmluZyYgZGF0YSkKK1JlZjxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24+IFBy
b2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5nJiYg
dGFyZ2V0LCBTdHJpbmcmJiBkYXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFByb2Nl
c3NpbmdJbnN0cnVjdGlvbihkb2N1bWVudCwgdGFyZ2V0LCBkYXRhKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUHJvY2Vzc2luZ0luc3RydWN0aW9uKGRvY3VtZW50LCBXVEZNb3ZlKHRhcmdl
dCksIFdURk1vdmUoZGF0YSkpKTsKIH0KIAogUHJvY2Vzc2luZ0luc3RydWN0aW9uOjp+UHJvY2Vz
c2luZ0luc3RydWN0aW9uKCkKQEAgLTgwLDcgKzgwLDcgQEAgUmVmPE5vZGU+IFByb2Nlc3NpbmdJ
bnN0cnVjdGlvbjo6Y2xvbmVOb2RlSW50ZXJuYWwoRG9jdW1lbnQmIHRhcmdldERvY3VtZW50LCBD
bG8KIHsKICAgICAvLyBGSVhNRTogSXMgaXQgYSBwcm9ibGVtIHRoYXQgdGhpcyBkb2VzIG5vdCBj
b3B5IG1fbG9jYWxIcmVmPwogICAgIC8vIFdoYXQgYWJvdXQgb3RoZXIgZGF0YSBtZW1iZXJzPwot
ICAgIHJldHVybiBjcmVhdGUodGFyZ2V0RG9jdW1lbnQsIG1fdGFyZ2V0LCBkYXRhKCkpOworICAg
IHJldHVybiBjcmVhdGUodGFyZ2V0RG9jdW1lbnQsIFN0cmluZyB7IG1fdGFyZ2V0IH0sIFN0cmlu
ZyB7IGRhdGEoKSB9KTsKIH0KIAogdm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNoZWNrU3R5
bGVTaGVldCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgKaW5k
ZXggNjQwZGM0YzlkOWEwMjg3NDE0ZmY3MjlhOWJiYWQzODJmMjc2OWMxMi4uNzMzMWIyNGMxOGVh
NjUwZTFlYzcyNGE3YTdiMzlhYzA4MjlhOTI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24uaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBDU1NTdHlsZVNoZWV0
OwogY2xhc3MgUHJvY2Vzc2luZ0luc3RydWN0aW9uIGZpbmFsIDogcHVibGljIENoYXJhY3RlckRh
dGEsIHByaXZhdGUgQ2FjaGVkU3R5bGVTaGVldENsaWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRChQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
UHJvY2Vzc2luZ0luc3RydWN0aW9uPiBjcmVhdGUoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIHRh
cmdldCwgY29uc3QgU3RyaW5nJiBkYXRhKTsKKyAgICBzdGF0aWMgUmVmPFByb2Nlc3NpbmdJbnN0
cnVjdGlvbj4gY3JlYXRlKERvY3VtZW50JiwgU3RyaW5nJiYgdGFyZ2V0LCBTdHJpbmcmJiBkYXRh
KTsKICAgICB2aXJ0dWFsIH5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oKTsKIAogICAgIGNvbnN0IFN0
cmluZyYgdGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXQ7IH0KQEAgLTUzLDcgKzUzLDcg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBDaGFyYWN0ZXJEYXRhOwot
ICAgIFByb2Nlc3NpbmdJbnN0cnVjdGlvbihEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0
LCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgIFByb2Nlc3NpbmdJbnN0cnVjdGlvbihEb2N1bWVu
dCYsIFN0cmluZyYmIHRhcmdldCwgU3RyaW5nJiYgZGF0YSk7CiAKICAgICBTdHJpbmcgbm9kZU5h
bWUoKSBjb25zdCBvdmVycmlkZTsKICAgICBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0IG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL1RleHQuY3BwCmluZGV4IDRiOTAzZjhmZGYyYmFkOTM5ZGRhYmE4MGNkZTg4MDU0
NDEyOTc2ZTIuLmU2N2IyYjIxMDk0ODM4NDJmMDA2MWUyZjI3YjZhNjY3MjI0ZmRmNGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVGV4dC5jcHAKQEAgLTQ0LDE0ICs0NCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdU
Rl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChUZXh0KTsKIAotUmVmPFRleHQ+IFRleHQ6OmNyZWF0
ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZGF0YSkKK1JlZjxUZXh0PiBUZXh0
OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmcmJiBkYXRhKQogewotICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFRleHQoZG9jdW1lbnQsIGRhdGEsIENyZWF0ZVRleHQpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0KGRvY3VtZW50LCBXVEZNb3ZlKGRhdGEpLCBDcmVhdGVU
ZXh0KSk7CiB9CiAKLVJlZjxUZXh0PiBUZXh0OjpjcmVhdGVFZGl0aW5nVGV4dChEb2N1bWVudCYg
ZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZGF0YSkKK1JlZjxUZXh0PiBUZXh0OjpjcmVhdGVFZGl0
aW5nVGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZyYmIGRhdGEpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgVGV4dChkb2N1bWVudCwgZGF0YSwgQ3JlYXRlRWRpdGluZ1RleHQpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0KGRvY3VtZW50LCBXVEZNb3ZlKGRhdGEpLCBD
cmVhdGVFZGl0aW5nVGV4dCkpOwogfQogCiBUZXh0Ojp+VGV4dCgpID0gZGVmYXVsdDsKQEAgLTE2
Myw3ICsxNjMsNyBAQCBOb2RlOjpOb2RlVHlwZSBUZXh0Ojpub2RlVHlwZSgpIGNvbnN0CiAKIFJl
ZjxOb2RlPiBUZXh0OjpjbG9uZU5vZGVJbnRlcm5hbChEb2N1bWVudCYgdGFyZ2V0RG9jdW1lbnQs
IENsb25pbmdPcGVyYXRpb24pCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZSh0YXJnZXREb2N1bWVudCwg
ZGF0YSgpKTsKKyAgICByZXR1cm4gY3JlYXRlKHRhcmdldERvY3VtZW50LCBTdHJpbmcgeyBkYXRh
KCkgfSk7CiB9CiAKIHN0YXRpYyBib29sIGlzU1ZHU2hhZG93VGV4dChUZXh0KiB0ZXh0KQpAQCAt
MTk1LDkgKzE5NSw5IEBAIGJvb2wgVGV4dDo6Y2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29u
c3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlZjxUZXh0PiBUZXh0Ojp2aXJ0dWFsQ3JlYXRl
KGNvbnN0IFN0cmluZyYgZGF0YSkKK1JlZjxUZXh0PiBUZXh0Ojp2aXJ0dWFsQ3JlYXRlKFN0cmlu
ZyYmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZShkb2N1bWVudCgpLCBkYXRhKTsKKyAgICBy
ZXR1cm4gY3JlYXRlKGRvY3VtZW50KCksIFdURk1vdmUoZGF0YSkpOwogfQogCiBSZWY8VGV4dD4g
VGV4dDo6Y3JlYXRlV2l0aExlbmd0aExpbWl0KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3Ry
aW5nJiBkYXRhLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoTGltaXQpCkBAIC0yMDUs
NyArMjA1LDcgQEAgUmVmPFRleHQ+IFRleHQ6OmNyZWF0ZVdpdGhMZW5ndGhMaW1pdChEb2N1bWVu
dCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZGF0YSwgdW4KICAgICB1bnNpZ25lZCBkYXRhTGVu
Z3RoID0gZGF0YS5sZW5ndGgoKTsKIAogICAgIGlmICghc3RhcnQgJiYgZGF0YUxlbmd0aCA8PSBs
ZW5ndGhMaW1pdCkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZShkb2N1bWVudCwgZGF0YSk7CisgICAg
ICAgIHJldHVybiBjcmVhdGUoZG9jdW1lbnQsIFN0cmluZyB7IGRhdGEgfSk7CiAKICAgICBSZWY8
VGV4dD4gcmVzdWx0ID0gVGV4dDo6Y3JlYXRlKGRvY3VtZW50LCBTdHJpbmcoKSk7CiAgICAgcmVz
dWx0LT5wYXJzZXJBcHBlbmREYXRhKGRhdGEsIHN0YXJ0LCBsZW5ndGhMaW1pdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQu
aAppbmRleCBlYmM5ZDEwY2M0OGUxMGE3NzZlZjExMmMxMzZhNWM2YjQ3MTcxYmIyLi42MmM3NWNl
MWM2ZjJmNzJmOWI3MzQ3YmZhYWRmNjdiYTYzN2M0NWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmgKQEAgLTM0LDkg
KzM0LDkgQEAgY2xhc3MgVGV4dCA6IHB1YmxpYyBDaGFyYWN0ZXJEYXRhIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZGVmYXVsdExlbmd0aExpbWl0ID0gMSA8PCAxNjsKIAot
ICAgIHN0YXRpYyBSZWY8VGV4dD4gY3JlYXRlKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJik7Cisg
ICAgc3RhdGljIFJlZjxUZXh0PiBjcmVhdGUoRG9jdW1lbnQmLCBTdHJpbmcmJik7CiAgICAgc3Rh
dGljIFJlZjxUZXh0PiBjcmVhdGVXaXRoTGVuZ3RoTGltaXQoRG9jdW1lbnQmLCBjb25zdCBTdHJp
bmcmLCB1bnNpZ25lZCBwb3NpdGlvbkluU3RyaW5nLCB1bnNpZ25lZCBsZW5ndGhMaW1pdCA9IGRl
ZmF1bHRMZW5ndGhMaW1pdCk7Ci0gICAgc3RhdGljIFJlZjxUZXh0PiBjcmVhdGVFZGl0aW5nVGV4
dChEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBSZWY8VGV4dD4gY3JlYXRl
RWRpdGluZ1RleHQoRG9jdW1lbnQmLCBTdHJpbmcmJik7CiAKICAgICB2aXJ0dWFsIH5UZXh0KCk7
CiAKQEAgLTU5LDggKzU5LDggQEAgcHVibGljOgogICAgIFN0cmluZyBkZWJ1Z0Rlc2NyaXB0aW9u
KCkgY29uc3QgZmluYWw7CiAKIHByb3RlY3RlZDoKLSAgICBUZXh0KERvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgU3RyaW5nJiBkYXRhLCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCi0gICAgICAgIDog
Q2hhcmFjdGVyRGF0YShkb2N1bWVudCwgZGF0YSwgdHlwZSkKKyAgICBUZXh0KERvY3VtZW50JiBk
b2N1bWVudCwgU3RyaW5nJiYgZGF0YSwgQ29uc3RydWN0aW9uVHlwZSB0eXBlKQorICAgICAgICA6
IENoYXJhY3RlckRhdGEoZG9jdW1lbnQsIFdURk1vdmUoZGF0YSksIHR5cGUpCiAgICAgewogICAg
IH0KIApAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgY2hpbGRUeXBlQWxsb3dl
ZChOb2RlVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXREYXRhQW5kVXBkYXRlKGNv
bnN0IFN0cmluZyYsIHVuc2lnbmVkIG9mZnNldE9mUmVwbGFjZWREYXRhLCB1bnNpZ25lZCBvbGRM
ZW5ndGgsIHVuc2lnbmVkIG5ld0xlbmd0aCwgVXBkYXRlTGl2ZVJhbmdlcykgZmluYWw7CiAKLSAg
ICB2aXJ0dWFsIFJlZjxUZXh0PiB2aXJ0dWFsQ3JlYXRlKGNvbnN0IFN0cmluZyYpOworICAgIHZp
cnR1YWwgUmVmPFRleHQ+IHZpcnR1YWxDcmVhdGUoU3RyaW5nJiYpOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL21hYy9JbWFnZUNv
bnRyb2xzTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWMvSW1hZ2VDb250cm9sc01hYy5j
cHAKaW5kZXggYmUyMzY4OGUzMWJlMzRhNjBiMGFiZWE3NjNiNWFiZmZhZGJlOWVlMS4uZWMwNzY4
ODIxMmUwMmJmZjBiMmIxMzEyYWVmZDg3N2MyNThmZmM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL21hYy9JbWFnZUNvbnRyb2xzTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vbWFjL0ltYWdlQ29udHJvbHNNYWMuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgY3JlYXRl
SW1hZ2VDb250cm9scyhIVE1MRWxlbWVudCYgZWxlbWVudCkKICAgICAKICAgICBzdGF0aWMgTWFp
blRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gc2hhZG93U3R5bGUoU3RyaW5nSW1w
bDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoaW1hZ2VDb250cm9sc01hY1VzZXJBZ2VudFN0eWxlU2hl
ZXQsIHNpemVvZihpbWFnZUNvbnRyb2xzTWFjVXNlckFnZW50U3R5bGVTaGVldCkpKTsKICAgICBh
dXRvIHN0eWxlID0gSFRNTFN0eWxlRWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6c3R5bGVUYWcs
IGRvY3VtZW50LmdldCgpLCBmYWxzZSk7Ci0gICAgc3R5bGUtPnNldFRleHRDb250ZW50KHNoYWRv
d1N0eWxlKTsKKyAgICBzdHlsZS0+c2V0VGV4dENvbnRlbnQoU3RyaW5nIHsgc2hhZG93U3R5bGUg
fSk7CiAgICAgc2hhZG93Um9vdC0+YXBwZW5kQ2hpbGQoV1RGTW92ZShzdHlsZSkpOwogICAgIAog
ICAgIGF1dG8gYnV0dG9uID0gSFRNTEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmJ1
dHRvblRhZywgZWxlbWVudC5kb2N1bWVudCgpLCBudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvQ3JlYXRlTGlua0NvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9DcmVhdGVMaW5rQ29tbWFuZC5jcHAKaW5kZXggNjZmYTMxMGI5ZjMzMjY1MDRmOTUy
YThkNTRjOGRhMWExMWVlYzY0My4uMGYzYTdmOTQ4NTU4NGYwNzg3YjhkMDRjYTY5MDkxNWMxMWI1
Y2M1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9DcmVhdGVMaW5rQ29tbWFu
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9DcmVhdGVMaW5rQ29tbWFuZC5jcHAK
QEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBDcmVhdGVMaW5rQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAg
ICAgIGFwcGx5U3R5bGVkRWxlbWVudChXVEZNb3ZlKGFuY2hvckVsZW1lbnQpKTsKICAgICBlbHNl
IHsKICAgICAgICAgaW5zZXJ0Tm9kZUF0KGFuY2hvckVsZW1lbnQuY29weVJlZigpLCBlbmRpbmdT
ZWxlY3Rpb24oKS5zdGFydCgpKTsKLSAgICAgICAgYXBwZW5kTm9kZShUZXh0OjpjcmVhdGUoZG9j
dW1lbnQoKSwgbV91cmwpLCBhbmNob3JFbGVtZW50LmNvcHlSZWYoKSk7CisgICAgICAgIGFwcGVu
ZE5vZGUoVGV4dDo6Y3JlYXRlKGRvY3VtZW50KCksIFN0cmluZyB7IG1fdXJsIH0pLCBhbmNob3JF
bGVtZW50LmNvcHlSZWYoKSk7CiAgICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2Vs
ZWN0aW9uKHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKGFuY2hvckVsZW1lbnQucHRyKCkpLCBw
b3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKGFuY2hvckVsZW1lbnQucHRyKCkpLCBBZmZpbml0eTo6
RG93bnN0cmVhbSwgZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpKSk7CiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKaW5kZXggODBmZmQxZWMzZjgyMGYxNjY3MmFi
MThiNjQyNTA0M2I5YmY0YmYyMy4uNjg0NWI4NzA3M2VkYjljNDJhODBiNDY0NDY3ODkwZDk1NzEy
ZmEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCkBAIC04MjcsOSArODI3LDkgQEAg
c3RhdGljIFJlZjxFbGVtZW50PiBjcmVhdGVUYWJTcGFuRWxlbWVudChEb2N1bWVudCYgZG9jdW1l
bnQsIFRleHQmIHRhYlRleHROb2RlKQogICAgIHJldHVybiBzcGFuRWxlbWVudDsKIH0KIAotUmVm
PEVsZW1lbnQ+IGNyZWF0ZVRhYlNwYW5FbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3Qg
U3RyaW5nJiB0YWJUZXh0KQorUmVmPEVsZW1lbnQ+IGNyZWF0ZVRhYlNwYW5FbGVtZW50KERvY3Vt
ZW50JiBkb2N1bWVudCwgU3RyaW5nJiYgdGFiVGV4dCkKIHsKLSAgICByZXR1cm4gY3JlYXRlVGFi
U3BhbkVsZW1lbnQoZG9jdW1lbnQsIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRhYlRleHQpKTsK
KyAgICByZXR1cm4gY3JlYXRlVGFiU3BhbkVsZW1lbnQoZG9jdW1lbnQsIGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKFdURk1vdmUodGFiVGV4dCkpKTsKIH0KIAogUmVmPEVsZW1lbnQ+IGNyZWF0ZVRh
YlNwYW5FbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdGluZy5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmgK
aW5kZXggOTZjZWM5N2NmN2UzYjE2Y2UwZjFjMDViZTc0ZDcyMDhjY2M0ZGFiOS4uMjc2MTIwYzRj
N2EyNWIyZmNhNzViODJlMjliNmMyYWY0MDI2MzUxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5n
LmgKQEAgLTE2OSw3ICsxNjksNyBAQCBOb2RlKiBlbmNsb3NpbmdMaXN0Q2hpbGQoTm9kZSopOwog
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCiBSZWY8RWxlbWVudD4gY3JlYXRlVGFiU3BhbkVsZW1lbnQo
RG9jdW1lbnQmKTsKLVJlZjxFbGVtZW50PiBjcmVhdGVUYWJTcGFuRWxlbWVudChEb2N1bWVudCYs
IGNvbnN0IFN0cmluZyYgdGFiVGV4dCk7CitSZWY8RWxlbWVudD4gY3JlYXRlVGFiU3BhbkVsZW1l
bnQoRG9jdW1lbnQmLCBTdHJpbmcmJiB0YWJUZXh0KTsKIFJlZjxFbGVtZW50PiBjcmVhdGVCbG9j
a1BsYWNlaG9sZGVyRWxlbWVudChEb2N1bWVudCYpOwogCiBFbGVtZW50KiBlZGl0YWJsZVJvb3RG
b3JQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYsIEVkaXRhYmxlVHlwZSA9IENvbnRlbnRJc0VkaXRh
YmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA1ZGY3YTM1MDhkYTc4YjMyNTAy
Mjg2NjBmMDQ0YWI0ZDQzNWM1NGYyLi42OGUxNGEwZjE2MmYzNDhmMGY5YTJiMjFjM2UxYTdiZTNm
MDIyYzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC00MzUzLDcgKzQzNTMsNyBA
QCBjb25zdCBSZW5kZXJTdHlsZSogRWRpdG9yOjpzdHlsZUZvclNlbGVjdGlvblN0YXJ0KFJlZlB0
cjxOb2RlPiYgbm9kZVRvUmVtb3ZlKQogICAgIFN0cmluZyBzdHlsZVRleHQgPSB0eXBpbmdTdHls
ZS0+c3R5bGUoKS0+YXNUZXh0KCkgKyAiIGRpc3BsYXk6IGlubGluZSI7CiAgICAgc3R5bGVFbGVt
ZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzdHlsZUF0dHIsIHN0eWxlVGV4dCk7CiAKLSAg
ICBzdHlsZUVsZW1lbnQtPmFwcGVuZENoaWxkKGRvY3VtZW50KCkuY3JlYXRlRWRpdGluZ1RleHRO
b2RlKGVtcHR5U3RyaW5nKCkpKTsKKyAgICBzdHlsZUVsZW1lbnQtPmFwcGVuZENoaWxkKGRvY3Vt
ZW50KCkuY3JlYXRlRWRpdGluZ1RleHROb2RlKFN0cmluZyB7IGVtcHR5U3RyaW5nKCkgfSkpOwog
CiAgICAgYXV0byBwb3NpdGlvbk5vZGUgPSBwb3NpdGlvbi5kZXByZWNhdGVkTm9kZSgpOwogICAg
IEFTU0VSVChwb3NpdGlvbk5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5z
ZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAKaW5kZXggM2UzMzczYWMzZjZmZDMxYTBhYzA0ZDQ2MWRh
OGM2NzEzOWEwMDA2Ny4uOTEyOWEzYmY4MzExYzVlYTg0Y2ViZTM3ZDkxZWVmNjhhYzQzMTBjYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQu
Y3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgdm9pZCBJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjpkb0Fw
cGx5KCkKICAgICAgICAgICAgIGlmICh0ZXh0Tm9kZS5pc0Nvbm5lY3RlZCgpKQogICAgICAgICAg
ICAgICAgIGluc2VydFRleHRJbnRvTm9kZSh0ZXh0Tm9kZSwgMCwgbm9uQnJlYWtpbmdTcGFjZVN0
cmluZygpKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGF1dG8gbmJzcE5v
ZGUgPSBkb2N1bWVudCgpLmNyZWF0ZVRleHROb2RlKG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSk7
CisgICAgICAgICAgICAgICAgYXV0byBuYnNwTm9kZSA9IGRvY3VtZW50KCkuY3JlYXRlVGV4dE5v
ZGUoU3RyaW5nIHsgbm9uQnJlYWtpbmdTcGFjZVN0cmluZygpIH0pOwogICAgICAgICAgICAgICAg
IGF1dG8qIG5ic3BOb2RlUHRyID0gbmJzcE5vZGUucHRyKCk7CiAgICAgICAgICAgICAgICAgaW5z
ZXJ0Tm9kZUF0KFdURk1vdmUobmJzcE5vZGUpLCBwb3NpdGlvbkJlZm9yZVRleHROb2RlKTsKICAg
ICAgICAgICAgICAgICBlbmRpbmdQb3NpdGlvbiA9IGZpcnN0UG9zaXRpb25Jbk5vZGUobmJzcE5v
ZGVQdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29t
bWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcApp
bmRleCA3MWZjYTIzNWVhZWViNWRlM2ZjNGFkY2QzMTY5MTMxOTFiOGZlYzVmLi4xZTVjMGYwN2Ji
NWU4ZDQ1Yzk1NzY4NDYyYjQwYTU2YmJhY2U3OTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0luc2VydFRleHRDb21tYW5kLmNwcApAQCAtNTgsNyArNTgsNyBAQCBQb3NpdGlvbiBJbnNl
cnRUZXh0Q29tbWFuZDo6cG9zaXRpb25JbnNpZGVUZXh0Tm9kZShjb25zdCBQb3NpdGlvbiYgcCkK
IHsKICAgICBQb3NpdGlvbiBwb3MgPSBwOwogICAgIGlmIChpc1RhYlNwYW5UZXh0Tm9kZShwb3Mu
YW5jaG9yTm9kZSgpKSkgewotICAgICAgICBhdXRvIHRleHROb2RlID0gZG9jdW1lbnQoKS5jcmVh
dGVFZGl0aW5nVGV4dE5vZGUoZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIGF1dG8gdGV4dE5vZGUg
PSBkb2N1bWVudCgpLmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZShTdHJpbmcgeyBlbXB0eVN0cmluZygp
IH0pOwogICAgICAgICBpbnNlcnROb2RlQXRUYWJTcGFuUG9zaXRpb24odGV4dE5vZGUuY29weVJl
ZigpLCBwb3MpOwogICAgICAgICByZXR1cm4gZmlyc3RQb3NpdGlvbkluTm9kZSh0ZXh0Tm9kZS5w
dHIoKSk7CiAgICAgfQpAQCAtNjYsNyArNjYsNyBAQCBQb3NpdGlvbiBJbnNlcnRUZXh0Q29tbWFu
ZDo6cG9zaXRpb25JbnNpZGVUZXh0Tm9kZShjb25zdCBQb3NpdGlvbiYgcCkKICAgICAvLyBQcmVw
YXJlIGZvciB0ZXh0IGlucHV0IGJ5IGxvb2tpbmcgYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbi4K
ICAgICAvLyBJdCBtYXkgYmUgbmVjZXNzYXJ5IHRvIGluc2VydCBhIHRleHQgbm9kZSB0byByZWNl
aXZlIGNoYXJhY3RlcnMuCiAgICAgaWYgKCFwb3MuY29udGFpbmVyTm9kZSgpLT5pc1RleHROb2Rl
KCkpIHsKLSAgICAgICAgYXV0byB0ZXh0Tm9kZSA9IGRvY3VtZW50KCkuY3JlYXRlRWRpdGluZ1Rl
eHROb2RlKGVtcHR5U3RyaW5nKCkpOworICAgICAgICBhdXRvIHRleHROb2RlID0gZG9jdW1lbnQo
KS5jcmVhdGVFZGl0aW5nVGV4dE5vZGUoU3RyaW5nIHsgZW1wdHlTdHJpbmcoKSB9KTsKICAgICAg
ICAgaW5zZXJ0Tm9kZUF0KHRleHROb2RlLmNvcHlSZWYoKSwgcG9zKTsKICAgICAgICAgcmV0dXJu
IGZpcnN0UG9zaXRpb25Jbk5vZGUodGV4dE5vZGUucHRyKCkpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggOTQx
ZGZlZThlZjc0MGUyY2RmZmJjMWU1ODU2NmEwNzE3YjdlN2NlZS4uNWViM2JkMDg3MzQzMmI0ZDBj
OGQ5ZjkxMGQyODdkYjFiNTk4ZGZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTE1OTgsNyArMTU5OCw3IEBAIHZvaWQg
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmFkZFNwYWNlc0ZvclNtYXJ0UmVwbGFjZSgpCiAgICAg
ICAgICAgICBpZiAobV9lbmRPZkluc2VydGVkQ29udGVudC5jb250YWluZXJOb2RlKCkgPT0gZW5k
Tm9kZSkKICAgICAgICAgICAgICAgICBtX2VuZE9mSW5zZXJ0ZWRDb250ZW50Lm1vdmVUb09mZnNl
dChtX2VuZE9mSW5zZXJ0ZWRDb250ZW50Lm9mZnNldEluQ29udGFpbmVyTm9kZSgpICsgMSk7CiAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhdXRvIG5vZGUgPSBkb2N1bWVudCgpLmNyZWF0
ZUVkaXRpbmdUZXh0Tm9kZShjb2xsYXBzZVdoaXRlU3BhY2UgPyBub25CcmVha2luZ1NwYWNlU3Ry
aW5nKCkgOiAiICJfcyk7CisgICAgICAgICAgICBhdXRvIG5vZGUgPSBkb2N1bWVudCgpLmNyZWF0
ZUVkaXRpbmdUZXh0Tm9kZShjb2xsYXBzZVdoaXRlU3BhY2UgPyBTdHJpbmcgeyBub25CcmVha2lu
Z1NwYWNlU3RyaW5nKCkgfSA6ICIgIl9zKTsKICAgICAgICAgICAgIGluc2VydE5vZGVBZnRlcihu
b2RlLmNvcHlSZWYoKSwgKmVuZE5vZGUpOwogICAgICAgICAgICAgdXBkYXRlTm9kZXNJbnNlcnRl
ZChub2RlLnB0cigpKTsKICAgICAgICAgfQpAQCAtMTYyMiw3ICsxNjIyLDcgQEAgdm9pZCBSZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZDo6YWRkU3BhY2VzRm9yU21hcnRSZXBsYWNlKCkKICAgICAgICAg
ICAgIGlmIChtX2VuZE9mSW5zZXJ0ZWRDb250ZW50LmNvbnRhaW5lck5vZGUoKSA9PSBzdGFydE5v
ZGUgJiYgbV9lbmRPZkluc2VydGVkQ29udGVudC5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSkKICAg
ICAgICAgICAgICAgICBtX2VuZE9mSW5zZXJ0ZWRDb250ZW50Lm1vdmVUb09mZnNldChtX2VuZE9m
SW5zZXJ0ZWRDb250ZW50Lm9mZnNldEluQ29udGFpbmVyTm9kZSgpICsgMSk7CiAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBhdXRvIG5vZGUgPSBkb2N1bWVudCgpLmNyZWF0ZUVkaXRpbmdU
ZXh0Tm9kZShjb2xsYXBzZVdoaXRlU3BhY2UgPyBub25CcmVha2luZ1NwYWNlU3RyaW5nKCkgOiAi
ICJfcyk7CisgICAgICAgICAgICBhdXRvIG5vZGUgPSBkb2N1bWVudCgpLmNyZWF0ZUVkaXRpbmdU
ZXh0Tm9kZShjb2xsYXBzZVdoaXRlU3BhY2UgPyBTdHJpbmcgeyBub25CcmVha2luZ1NwYWNlU3Ry
aW5nKCkgfSA6ICIgIl9zKTsKICAgICAgICAgICAgIC8vIERvbid0IHVwZGF0ZU5vZGVzSW5zZXJ0
ZWQuIERvaW5nIHNvIHdvdWxkIHNldCBtX2VuZE9mSW5zZXJ0ZWRDb250ZW50IHRvIGJlIHRoZSBu
b2RlIGNvbnRhaW5pbmcgdGhlIGxlYWRpbmcgc3BhY2UsCiAgICAgICAgICAgICAvLyBidXQgbV9l
bmRPZkluc2VydGVkQ29udGVudCBpcyBzdXBwb3NlZCB0byBtYXJrIHRoZSBlbmQgb2YgcGFzdGVk
IGNvbnRlbnQuCiAgICAgICAgICAgICBpbnNlcnROb2RlQmVmb3JlKG5vZGUsICpzdGFydE5vZGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250
cm9sbGVyLmNwcAppbmRleCAwMWM2ZWVhZTkxNmVhNWFhMjM0MjNlZjMxMjNhMTdjMGRkYjI2ZjFh
Li40MDYwZDAwMTI3MWE2MmFiNTZlMjk3MjA5MDQ4Y2I4ODFkOWU2NDYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcApA
QCAtODgxLDcgKzg4MSw3IEBAIGF1dG8gVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnJlcGxh
Y2UoY29uc3QgTWFuaXB1bGF0aW9uSXRlbURhdGEmIGl0ZW0sIGNvbnN0CiAgICAgICAgICAgICBm
b3IgKFJlZlB0cjxOb2RlPiBkZXNjZW5kZW50Tm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm9y
aWdpbmFsTm9kZSwgb3JpZ2luYWxOb2RlKTsgZGVzY2VuZGVudE5vZGU7IGRlc2NlbmRlbnROb2Rl
ID0gTm9kZVRyYXZlcnNhbDo6bmV4dCgqZGVzY2VuZGVudE5vZGUsIG9yaWdpbmFsTm9kZSkpCiAg
ICAgICAgICAgICAgICAgbm9kZXNUb1JlbW92ZS5yZW1vdmUoKmRlc2NlbmRlbnROb2RlKTsKICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZXBsYWNlbWVudE5vZGUgPSBUZXh0OjpjcmVhdGUo
Y29tbW9uQW5jZXN0b3ItPmRvY3VtZW50KCksIHJlcGxhY2VtZW50VGV4dCk7CisgICAgICAgICAg
ICByZXBsYWNlbWVudE5vZGUgPSBUZXh0OjpjcmVhdGUoY29tbW9uQW5jZXN0b3ItPmRvY3VtZW50
KCksIFdURk1vdmUocmVwbGFjZW1lbnRUZXh0KSk7CiAKICAgICAgICAgYXV0byB0b3BEb3duUGF0
aCA9IGdldFBhdGgoY29tbW9uQW5jZXN0b3IuZ2V0KCksIG9yaWdpbmFsTm9kZSk7CiAgICAgICAg
IHVwZGF0ZUluc2VydGlvbnMobGFzdFRvcERvd25QYXRoLCB0b3BEb3duUGF0aCwgcmVwbGFjZW1l
bnROb2RlLmdldCgpLCByZXVzZWRPcmlnaW5hbE5vZGVzLCBpbnNlcnRpb25zKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFya3VwLmNwcAppbmRleCBiNGM5NjRkMjFhMDQzZWM3YWI5NzkwNWJhY2U2NzQxOTBh
OTU2ZjVmLi40YmZmYTY4ZTU4MmFkMjQ5MTQ4YzVjMmQ2MzgwOGNhODFjYTg5OWJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC0xMTc5LDggKzExNzksOSBAQCBSZWY8RG9jdW1lbnRG
cmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChjb25zdCBTaW1wbGVSYW5nZSYgY29udGV4
dCwgY29uc3QgUwogICAgIH07CiAKICAgICBpZiAoY29udGV4dFByZXNlcnZlc05ld2xpbmUoY29u
dGV4dCkpIHsKLSAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKHN0cmluZykpOwotICAgICAgICBpZiAoc3RyaW5nLmVuZHNXaXRoKCdcbicpKSB7Cisg
ICAgICAgIGJvb2wgZW5kc1dpdGhOZXdMaW5lID0gc3RyaW5nLmVuZHNXaXRoKCdcbicpOworICAg
ICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoV1RGTW92
ZShzdHJpbmcpKSk7CisgICAgICAgIGlmIChlbmRzV2l0aE5ld0xpbmUpIHsKICAgICAgICAgICAg
IGZyYWdtZW50LT5hcHBlbmRDaGlsZChjcmVhdGVIVE1MQlJFbGVtZW50KCkpOwogICAgICAgICB9
CiAgICAgICAgIHJldHVybiBmcmFnbWVudDsKQEAgLTEyNzIsNyArMTI3Myw3IEBAIEV4Y2VwdGlv
bk9yPFJlZjxEb2N1bWVudEZyYWdtZW50Pj4gY3JlYXRlRnJhZ21lbnRGb3JJbm5lck91dGVySFRN
TChFbGVtZW50JiBjb250CiAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50Rm9yTWFya3VwKGNvbnRl
eHRFbGVtZW50LCBtYXJrdXAsIERvY3VtZW50RnJhZ21lbnRNb2RlOjpSZXVzZUZvcklubmVyT3V0
ZXJIVE1MLCBwYXJzZXJDb250ZW50UG9saWN5KTsKIH0KIAotUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IGNyZWF0ZUZyYWdtZW50Rm9yVHJhbnNmb3JtVG9GcmFnbWVudChEb2N1bWVudCYgb3V0cHV0
RG9jLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZywgY29uc3QgU3RyaW5nJiBzb3VyY2VNSU1F
VHlwZSkKK1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvclRyYW5zZm9y
bVRvRnJhZ21lbnQoRG9jdW1lbnQmIG91dHB1dERvYywgU3RyaW5nJiYgc291cmNlU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHNvdXJjZU1JTUVUeXBlKQogewogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBmcmFnbWVudCA9IG91dHB1dERvYy5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAgICAg
CkBAIC0xMjgyLDExICsxMjgzLDExIEBAIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVG
cmFnbWVudEZvclRyYW5zZm9ybVRvRnJhZ21lbnQoRG9jdW1lbnQmIG91dHB1dERvCiAgICAgICAg
IC8vIFVuZm9ydHVuYXRlbHksIHRoYXQncyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgb2YgdGhl
IHBhcnNlci4KICAgICAgICAgLy8gV2UgYWNoaWV2ZSB0aGF0IGVmZmVjdCBoZXJlIGJ5IHBhc3Np
bmcgaW4gYSBmYWtlIGJvZHkgZWxlbWVudCBhcyBjb250ZXh0IGZvciB0aGUgZnJhZ21lbnQuCiAg
ICAgICAgIGF1dG8gZmFrZUJvZHkgPSBIVE1MQm9keUVsZW1lbnQ6OmNyZWF0ZShvdXRwdXREb2Mp
OwotICAgICAgICBmcmFnbWVudC0+cGFyc2VIVE1MKHNvdXJjZVN0cmluZywgZmFrZUJvZHkucHRy
KCkpOworICAgICAgICBmcmFnbWVudC0+cGFyc2VIVE1MKFdURk1vdmUoc291cmNlU3RyaW5nKSwg
ZmFrZUJvZHkucHRyKCkpOwogICAgIH0gZWxzZSBpZiAoc291cmNlTUlNRVR5cGUgPT0gInRleHQv
cGxhaW4iKQotICAgICAgICBmcmFnbWVudC0+cGFyc2VyQXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRl
KG91dHB1dERvYywgc291cmNlU3RyaW5nKSk7CisgICAgICAgIGZyYWdtZW50LT5wYXJzZXJBcHBl
bmRDaGlsZChUZXh0OjpjcmVhdGUob3V0cHV0RG9jLCBXVEZNb3ZlKHNvdXJjZVN0cmluZykpKTsK
ICAgICBlbHNlIHsKLSAgICAgICAgYm9vbCBzdWNjZXNzZnVsUGFyc2UgPSBmcmFnbWVudC0+cGFy
c2VYTUwoc291cmNlU3RyaW5nLCAwKTsKKyAgICAgICAgYm9vbCBzdWNjZXNzZnVsUGFyc2UgPSBm
cmFnbWVudC0+cGFyc2VYTUwoV1RGTW92ZShzb3VyY2VTdHJpbmcpLCAwKTsKICAgICAgICAgaWYg
KCFzdWNjZXNzZnVsUGFyc2UpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYXJrdXAuaAppbmRleCA5MjUxMWE5MzQ2NmJhOTQ4NDEyNDFiYWZkNjRlMGZj
ZDEzZTExYWUzLi4zYmUxYTRjMmEyMTllNmViMzRkM2FhNmQxMmM1YTM2ZTMzNGJmMmVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFya3VwLmgKQEAgLTYxLDcgKzYxLDcgQEAgU3RyaW5nIHNhbml0aXplZE1h
cmt1cEZvckZyYWdtZW50SW5Eb2N1bWVudChSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiwgRG9jdW1l
bnQmLAogV0VCQ09SRV9FWFBPUlQgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50
RnJvbVRleHQoY29uc3QgU2ltcGxlUmFuZ2UmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGV4dCk7
CiBXRUJDT1JFX0VYUE9SVCBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9t
TWFya3VwKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBtYXJrdXAsIGNvbnN0IFN0cmluZyYgYmFz
ZVVSTCwgUGFyc2VyQ29udGVudFBvbGljeSA9IEFsbG93U2NyaXB0aW5nQ29udGVudCk7CiBFeGNl
cHRpb25PcjxSZWY8RG9jdW1lbnRGcmFnbWVudD4+IGNyZWF0ZUZyYWdtZW50Rm9ySW5uZXJPdXRl
ckhUTUwoRWxlbWVudCYsIGNvbnN0IFN0cmluZyYgbWFya3VwLCBQYXJzZXJDb250ZW50UG9saWN5
KTsKLVJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvclRyYW5zZm9ybVRv
RnJhZ21lbnQoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZywgY29uc3QgU3Ry
aW5nJiBzb3VyY2VNSU1FVHlwZSk7CitSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJh
Z21lbnRGb3JUcmFuc2Zvcm1Ub0ZyYWdtZW50KERvY3VtZW50JiwgU3RyaW5nJiYgc291cmNlU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHNvdXJjZU1JTUVUeXBlKTsKIFJlZjxEb2N1bWVudEZyYWdtZW50
PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQW5kVVJMKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiwg
UHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKTsKIEV4Y2VwdGlvbk9yPFJlZjxEb2N1bWVu
dEZyYWdtZW50Pj4gY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KEVsZW1lbnQmLCBjb25zdCBTdHJp
bmcmIG1hcmt1cCwgUGFyc2VyQ29udGVudFBvbGljeSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAppbmRleCAzNzU1MjgxZDE4MmUzYWFi
ZTE4Yzc5ZDlkMzUxMzY5YWM3MzU0ZTgyLi44NDUyZjVhNjM3MzRmOTQ0YzVmZjlmYjFhMTFmZTQ5
ZmU5ZmFkMmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGlt
ZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJ
bnB1dFR5cGUuY3BwCkBAIC0zNDYsNyArMzQ2LDcgQEAgdm9pZCBCYXNlRGF0ZUFuZFRpbWVJbnB1
dFR5cGU6OnVwZGF0ZUlubmVyVGV4dFZhbHVlKCkKICAgICAgICAgICAgIC8vIE5lZWQgdG8gcHV0
IHNvbWV0aGluZyB0byBrZWVwIHRleHQgYmFzZWxpbmUuCiAgICAgICAgICAgICBkaXNwbGF5VmFs
dWUgPSAiICJfczsKICAgICAgICAgfQotICAgICAgICBkb3duY2FzdDxIVE1MRWxlbWVudD4oKm5v
ZGUpLnNldElubmVyVGV4dChkaXNwbGF5VmFsdWUpOworICAgICAgICBkb3duY2FzdDxIVE1MRWxl
bWVudD4oKm5vZGUpLnNldElubmVyVGV4dChXVEZNb3ZlKGRpc3BsYXlWYWx1ZSkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VE
YXRlQW5kVGltZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRp
bWVJbnB1dFR5cGUuaAppbmRleCA2YmY2ZDZiOTAzYjRhZDc2NTk2YmJhY2NlNTRkMTdkMzdhMzFl
OGNmLi45NDhmOWUzZTkyNDc1YzZiOTJlZDE5OGNkYzBiMzUyZDVjNTQ3OTQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmgKQEAgLTg0LDcgKzg0
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgRGF0ZVRpbWVGb3JtYXRWYWxpZGF0b3IoKSB7IH0KIAog
ICAgICAgICB2b2lkIHZpc2l0RmllbGQoRGF0ZVRpbWVGb3JtYXQ6OkZpZWxkVHlwZSwgaW50KTsK
LSAgICAgICAgdm9pZCB2aXNpdExpdGVyYWwoY29uc3QgU3RyaW5nJikgeyB9CisgICAgICAgIHZv
aWQgdmlzaXRMaXRlcmFsKFN0cmluZyYmKSB7IH0KIAogICAgICAgICBib29sIHZhbGlkYXRlRm9y
bWF0KGNvbnN0IFN0cmluZyYgZm9ybWF0LCBjb25zdCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUm
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAppbmRl
eCAxNTYyOGQ5NTlmYmJhMmVjN2I4NTRkMzZlNjkwMTFiMTJlNjNmM2QyLi40MzVjZWRhZTE2YThj
MWUxNzBmMGI0MzFlYWQ1OGZlYzVlNGJlY2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZU
UERpcmVjdG9yeURvY3VtZW50LmNwcApAQCAtODMsOCArODMsOCBAQCBwcml2YXRlOgogICAgIHZv
aWQgY3JlYXRlQmFzaWNEb2N1bWVudCgpOwogCiAgICAgdm9pZCBwYXJzZUFuZEFwcGVuZE9uZUxp
bmUoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBhcHBlbmRFbnRyeShjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgc2l6ZSwgY29uc3QgU3RyaW5nJiBkYXRlLCBib29sIGlzRGlyZWN0
b3J5KTsgICAgCi0gICAgUmVmPEVsZW1lbnQ+IGNyZWF0ZVRERm9yRmlsZW5hbWUoY29uc3QgU3Ry
aW5nJik7CisgICAgdm9pZCBhcHBlbmRFbnRyeShTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBzaXpl
LCBTdHJpbmcmJiBkYXRlLCBib29sIGlzRGlyZWN0b3J5KTsKKyAgICBSZWY8RWxlbWVudD4gY3Jl
YXRlVERGb3JGaWxlbmFtZShTdHJpbmcmJik7CiAKICAgICBSZWZQdHI8SFRNTFRhYmxlRWxlbWVu
dD4gbV90YWJsZUVsZW1lbnQ7CiAKQEAgLTEwNSw3ICsxMDUsNyBAQCBGVFBEaXJlY3RvcnlEb2N1
bWVudFBhcnNlcjo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXIoSFRNTERvY3VtZW50JiBkb2N1
bWVudCkKIHsKIH0KIAotdm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6YXBwZW5kRW50
cnkoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBzaXplLCBjb25zdCBTdHJp
bmcmIGRhdGUsIGJvb2wgaXNEaXJlY3RvcnkpCit2b2lkIEZUUERpcmVjdG9yeURvY3VtZW50UGFy
c2VyOjphcHBlbmRFbnRyeShTdHJpbmcmJiBmaWxlbmFtZSwgU3RyaW5nJiYgc2l6ZSwgU3RyaW5n
JiYgZGF0ZSwgYm9vbCBpc0RpcmVjdG9yeSkKIHsKICAgICBhdXRvJiBkb2N1bWVudCA9ICp0aGlz
LT5kb2N1bWVudCgpOwogCkBAIC0xMjAsMjMgKzEyMCwyMyBAQCB2b2lkIEZUUERpcmVjdG9yeURv
Y3VtZW50UGFyc2VyOjphcHBlbmRFbnRyeShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBT
dHJpbgogICAgICAgICB0eXBlRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihIVE1MTmFtZXM6OmNsYXNzQXR0ciwgQXRvbVN0cmluZygiZnRwRGlyZWN0b3J5SWNvbiBm
dHBEaXJlY3RvcnlUeXBlRmlsZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CiAgICAgcm93RWxlbWVudC0+YXBwZW5kQ2hpbGQodHlwZUVsZW1lbnQpOwogCi0gICAgYXV0byBu
YW1lRWxlbWVudCA9IGNyZWF0ZVRERm9yRmlsZW5hbWUoZmlsZW5hbWUpOworICAgIGF1dG8gbmFt
ZUVsZW1lbnQgPSBjcmVhdGVUREZvckZpbGVuYW1lKFdURk1vdmUoZmlsZW5hbWUpKTsKICAgICBu
YW1lRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6
OmNsYXNzQXR0ciwgQXRvbVN0cmluZygiZnRwRGlyZWN0b3J5RmlsZU5hbWUiLCBBdG9tU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIHJvd0VsZW1lbnQtPmFwcGVuZENoaWxkKG5h
bWVFbGVtZW50KTsKIAogICAgIGF1dG8gZGF0ZUVsZW1lbnQgPSBIVE1MVGFibGVDZWxsRWxlbWVu
dDo6Y3JlYXRlKHRkVGFnLCBkb2N1bWVudCk7Ci0gICAgZGF0ZUVsZW1lbnQtPmFwcGVuZENoaWxk
KFRleHQ6OmNyZWF0ZShkb2N1bWVudCwgZGF0ZSkpOworICAgIGRhdGVFbGVtZW50LT5hcHBlbmRD
aGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIFdURk1vdmUoZGF0ZSkpKTsKICAgICBkYXRlRWxl
bWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmNsYXNz
QXR0ciwgQXRvbVN0cmluZygiZnRwRGlyZWN0b3J5RmlsZURhdGUiLCBBdG9tU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIHJvd0VsZW1lbnQtPmFwcGVuZENoaWxkKGRhdGVFbGVt
ZW50KTsKIAogICAgIGF1dG8gc2l6ZUVsZW1lbnQgPSBIVE1MVGFibGVDZWxsRWxlbWVudDo6Y3Jl
YXRlKHRkVGFnLCBkb2N1bWVudCk7Ci0gICAgc2l6ZUVsZW1lbnQtPmFwcGVuZENoaWxkKFRleHQ6
OmNyZWF0ZShkb2N1bWVudCwgc2l6ZSkpOworICAgIHNpemVFbGVtZW50LT5hcHBlbmRDaGlsZChU
ZXh0OjpjcmVhdGUoZG9jdW1lbnQsIFdURk1vdmUoc2l6ZSkpKTsKICAgICBzaXplRWxlbWVudC0+
c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmNsYXNzQXR0ciwg
QXRvbVN0cmluZygiZnRwRGlyZWN0b3J5RmlsZVNpemUiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOwogICAgIHJvd0VsZW1lbnQtPmFwcGVuZENoaWxkKHNpemVFbGVtZW50KTsK
ICAgICBkb2N1bWVudC5zZXRIYXNWaXN1YWxseU5vbkVtcHR5Q3VzdG9tQ29udGVudCgpOwogfQog
Ci1SZWY8RWxlbWVudD4gRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmNyZWF0ZVRERm9yRmls
ZW5hbWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKK1JlZjxFbGVtZW50PiBGVFBEaXJlY3RvcnlE
b2N1bWVudFBhcnNlcjo6Y3JlYXRlVERGb3JGaWxlbmFtZShTdHJpbmcmJiBmaWxlbmFtZSkKIHsK
ICAgICBhdXRvJiBkb2N1bWVudCA9ICp0aGlzLT5kb2N1bWVudCgpOwogCkBAIC0xNDgsNyArMTQ4
LDcgQEAgUmVmPEVsZW1lbnQ+IEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpjcmVhdGVUREZv
ckZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW4KIAogICAgIGF1dG8gYW5jaG9yRWxlbWVudCA9
IEhUTUxBbmNob3JFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIGFuY2hvckVsZW1lbnQt
PnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpocmVmQXR0ciwg
ZnVsbFVSTCk7Ci0gICAgYW5jaG9yRWxlbWVudC0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRv
Y3VtZW50LCBmaWxlbmFtZSkpOworICAgIGFuY2hvckVsZW1lbnQtPmFwcGVuZENoaWxkKFRleHQ6
OmNyZWF0ZShkb2N1bWVudCwgV1RGTW92ZShmaWxlbmFtZSkpKTsKIAogICAgIGF1dG8gdGRFbGVt
ZW50ID0gSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OmNyZWF0ZSh0ZFRhZywgZG9jdW1lbnQpOwogICAg
IHRkRWxlbWVudC0+YXBwZW5kQ2hpbGQoYW5jaG9yRWxlbWVudCk7CkBAIC0yNzQsNyArMjc0LDcg
QEAgdm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6cGFyc2VBbmRBcHBlbmRPbmVMaW5l
KGNvbnN0IFN0cmluZyYgaW5wdXRMaW5lKQogCiAgICAgTE9HKEZUUCwgIkFwcGVuZGluZyBlbnRy
eSAtICVzLCAlcyIsIGZpbGVuYW1lLmFzY2lpKCkuZGF0YSgpLCByZXN1bHQuZmlsZVNpemUuYXNj
aWkoKS5kYXRhKCkpOwogCi0gICAgYXBwZW5kRW50cnkoZmlsZW5hbWUsIHByb2Nlc3NGaWxlc2l6
ZVN0cmluZyhyZXN1bHQuZmlsZVNpemUsIHJlc3VsdC50eXBlID09IEZUUERpcmVjdG9yeUVudHJ5
KSwgcHJvY2Vzc0ZpbGVEYXRlU3RyaW5nKHJlc3VsdC5tb2RpZmllZFRpbWUpLCByZXN1bHQudHlw
ZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSk7CisgICAgYXBwZW5kRW50cnkoV1RGTW92ZShmaWxlbmFt
ZSksIHByb2Nlc3NGaWxlc2l6ZVN0cmluZyhyZXN1bHQuZmlsZVNpemUsIHJlc3VsdC50eXBlID09
IEZUUERpcmVjdG9yeUVudHJ5KSwgcHJvY2Vzc0ZpbGVEYXRlU3RyaW5nKHJlc3VsdC5tb2RpZmll
ZFRpbWUpLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSk7CiB9CiAKIHN0YXRpYyBp
bmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29u
c3QgU2V0dGluZ3MmIHNldHRpbmdzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQW5jaG9yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVt
ZW50LmNwcAppbmRleCA3NGZlNmFhZDc2MGNmM2FjOTU4MTM1YTM4MGM0MmNlZWJlODc5YmY0Li40
YWQ0NmRlMjljNWFlMDgxZDYzY2Q4Zjc1YWNjZjY2OWJjYzNlMTA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcApAQCAtMzUxLDkgKzM1MSw5IEBAIFN0cmluZyBI
VE1MQW5jaG9yRWxlbWVudDo6dGV4dCgpCiAgICAgcmV0dXJuIHRleHRDb250ZW50KCk7CiB9CiAK
LXZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQordm9p
ZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0VGV4dChTdHJpbmcmJiB0ZXh0KQogewotICAgIHNldFRl
eHRDb250ZW50KHRleHQpOworICAgIHNldFRleHRDb250ZW50KFdURk1vdmUodGV4dCkpOwogfQog
CiBib29sIEhUTUxBbmNob3JFbGVtZW50Ojppc0xpdmVMaW5rKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaAppbmRleCBhZGQ2MTgzMDg2YTQxNmJlNzNkYmZkNzVi
OTJhMmRjYWFhM2RkNDZlLi4zNDM4ZWE2NGI0NTY3M2M4NDcyM2M1YjA4NmM4MDdhMDFmYzAyOGU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oCkBAIC02MCw3ICs2MCw3
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgb3JpZ2luKCkgY29uc3Q7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdGV4dCgpOwotICAgIHZvaWQgc2V0VGV4dChjb25z
dCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldFRleHQoU3RyaW5nJiYpOwogCiAgICAgYm9vbCBpc0xp
dmVMaW5rKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggODE0
MTgxMDJmM2YwYmRkN2RiMjJkYTcwNDA3MzU0MmJjZjlmNjdlNC4uMjJhNjYyMDZhYzRhNmYwMTIz
MzkzMTI1YzFmNTM1MmYwZGQzODVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAK
QEAgLTQzNSwzNiArNDM1LDM2IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnNldERpcihjb25zdCBBdG9t
U3RyaW5nJiB2YWx1ZSkKICAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGRp
ckF0dHIsIHZhbHVlKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gSFRNTEVsZW1lbnQ6OnNldElu
bmVyVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCitFeGNlcHRpb25Pcjx2b2lkPiBIVE1MRWxlbWVu
dDo6c2V0SW5uZXJUZXh0KFN0cmluZyYmIHRleHQpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgZG9l
c24ndCB0YWtlIHdoaXRlc3BhY2UgY29sbGFwc2luZyBpbnRvIGFjY291bnQgYXQgYWxsLgogCiAg
ICAgaWYgKCF0ZXh0LmNvbnRhaW5zKCdcbicpICYmICF0ZXh0LmNvbnRhaW5zKCdccicpKSB7Ci0g
ICAgICAgIHN0cmluZ1JlcGxhY2VBbGwodGV4dCk7CisgICAgICAgIHN0cmluZ1JlcGxhY2VBbGwo
V1RGTW92ZSh0ZXh0KSk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgaWYgKGlz
Q29ubmVjdGVkKCkgJiYgaXNUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQoKSkgewogICAgICAg
ICBpZiAoIXRleHQuY29udGFpbnMoJ1xyJykpIHsKLSAgICAgICAgICAgIHN0cmluZ1JlcGxhY2VB
bGwodGV4dCk7CisgICAgICAgICAgICBzdHJpbmdSZXBsYWNlQWxsKFdURk1vdmUodGV4dCkpOwog
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQotICAgICAgICBTdHJpbmcgdGV4dFdp
dGhDb25zaXN0ZW50TGluZUJyZWFrcyA9IHRleHQ7CisgICAgICAgIFN0cmluZyB0ZXh0V2l0aENv
bnNpc3RlbnRMaW5lQnJlYWtzID0gV1RGTW92ZSh0ZXh0KTsKICAgICAgICAgdGV4dFdpdGhDb25z
aXN0ZW50TGluZUJyZWFrcy5yZXBsYWNlKCJcclxuIiwgIlxuIik7CiAgICAgICAgIHRleHRXaXRo
Q29uc2lzdGVudExpbmVCcmVha3MucmVwbGFjZSgnXHInLCAnXG4nKTsKLSAgICAgICAgc3RyaW5n
UmVwbGFjZUFsbCh0ZXh0V2l0aENvbnNpc3RlbnRMaW5lQnJlYWtzKTsKKyAgICAgICAgc3RyaW5n
UmVwbGFjZUFsbChXVEZNb3ZlKHRleHRXaXRoQ29uc2lzdGVudExpbmVCcmVha3MpKTsKICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgdXNlIHJl
cGxhY2VBbGwoKSwgYWZ0ZXIgd2UgZml4IHRoYXQgdG8gd29yayBwcm9wZXJseSBmb3IgRG9jdW1l
bnRGcmFnbWVudC4KICAgICAvLyBBZGQgdGV4dCBub2RlcyBhbmQgPGJyPiBlbGVtZW50cy4KLSAg
ICBhdXRvIGZyYWdtZW50ID0gdGV4dFRvRnJhZ21lbnQoZG9jdW1lbnQoKSwgdGV4dCk7CisgICAg
YXV0byBmcmFnbWVudCA9IHRleHRUb0ZyYWdtZW50KGRvY3VtZW50KCksIFdURk1vdmUodGV4dCkp
OwogICAgIC8vIEl0J3Mgc2FmZSB0byBkaXNwYXRjaCBldmVudHMgb24gdGhlIG5ldyBmcmFnbWVu
dCBzaW5jZSBhdXRob3Igc2NyaXB0cyBoYXZlIG5vIGFjY2VzcyB0byBpdCB5ZXQuCiAgICAgU2Ny
aXB0RGlzYWxsb3dlZFNjb3BlOjpFdmVudEFsbG93ZWRTY29wZSBhbGxvd2VkU2NvcGUoZnJhZ21l
bnQuZ2V0KCkpOwogICAgIHJldHVybiByZXBsYWNlQ2hpbGRyZW5XaXRoRnJhZ21lbnQoKnRoaXMs
IFdURk1vdmUoZnJhZ21lbnQpKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gSFRNTEVsZW1lbnQ6
OnNldE91dGVyVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCitFeGNlcHRpb25Pcjx2b2lkPiBIVE1M
RWxlbWVudDo6c2V0T3V0ZXJUZXh0KFN0cmluZyYmIHRleHQpCiB7CiAgICAgUmVmUHRyPENvbnRh
aW5lck5vZGU+IHBhcmVudCA9IHBhcmVudE5vZGUoKTsKICAgICBpZiAoIXBhcmVudCkKQEAgLTQ3
Niw5ICs0NzYsOSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBIVE1MRWxlbWVudDo6c2V0T3V0ZXJUZXh0
KGNvbnN0IFN0cmluZyYgdGV4dCkKIAogICAgIC8vIENvbnZlcnQgdGV4dCB0byBmcmFnbWVudCB3
aXRoIDxicj4gdGFncyBpbnN0ZWFkIG9mIGxpbmVicmVha3MgaWYgbmVlZGVkLgogICAgIGlmICh0
ZXh0LmNvbnRhaW5zKCdccicpIHx8IHRleHQuY29udGFpbnMoJ1xuJykpCi0gICAgICAgIG5ld0No
aWxkID0gdGV4dFRvRnJhZ21lbnQoZG9jdW1lbnQoKSwgdGV4dCk7CisgICAgICAgIG5ld0NoaWxk
ID0gdGV4dFRvRnJhZ21lbnQoZG9jdW1lbnQoKSwgV1RGTW92ZSh0ZXh0KSk7CiAgICAgZWxzZQot
ICAgICAgICBuZXdDaGlsZCA9IFRleHQ6OmNyZWF0ZShkb2N1bWVudCgpLCB0ZXh0KTsKKyAgICAg
ICAgbmV3Q2hpbGQgPSBUZXh0OjpjcmVhdGUoZG9jdW1lbnQoKSwgV1RGTW92ZSh0ZXh0KSk7CiAK
ICAgICBpZiAoIXBhcmVudE5vZGUoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEhpZXJh
cmNoeVJlcXVlc3RFcnJvciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCmluZGV4IGUwOGE4
ZTcxZmNmZGI3ZjQ5YzBhYjA4Mjc1ZDQ3NmQxMzA5Y2E5NzQuLmU0ZjFkMWQ0OThhOWViNDIxY2Vi
NDdkOGYyYzliZWE5YWIyZjI5NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKQEAgLTUz
LDggKzUzLDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRpdGxlKCkg
Y29uc3QgZmluYWw7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBzZXRJ
bm5lclRleHQoY29uc3QgU3RyaW5nJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8
dm9pZD4gc2V0T3V0ZXJUZXh0KGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIEV4
Y2VwdGlvbk9yPHZvaWQ+IHNldElubmVyVGV4dChTdHJpbmcmJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgRXhjZXB0aW9uT3I8dm9pZD4gc2V0T3V0ZXJUZXh0KFN0cmluZyYmKTsKIAogICAgIHZpcnR1
YWwgYm9vbCBoYXNDdXN0b21Gb2N1c0xvZ2ljKCkgY29uc3Q7CiAgICAgYm9vbCBzdXBwb3J0c0Zv
Y3VzKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZXRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50
LmNwcAppbmRleCBiZDQ0ZTJkMDI4YTcwMDg4NjM2ZmYyNjYwNjM3N2ViZWRkZjk3N2M1Li43ZWYw
Y2E5YjQwYmEwNGQ4OTA2NTY2ZTg5Mjg4Njk5N2UyZGQzNmIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1ldGVyRWxlbWVudC5jcHAKQEAgLTIyOSw4ICsyMjksOCBAQCB2b2lkIEhUTUxNZXRl
ckVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCYgcm9vdCkKICAg
ICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gc2hhZG93U3R5
bGUoU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcobWV0ZXJFbGVtZW50U2hhZG93VXNl
ckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKG1ldGVyRWxlbWVudFNoYWRvd1VzZXJBZ2VudFN0eWxl
U2hlZXQpKSk7CiAKICAgICBhdXRvIHN0eWxlID0gSFRNTFN0eWxlRWxlbWVudDo6Y3JlYXRlKEhU
TUxOYW1lczo6c3R5bGVUYWcsIGRvY3VtZW50KCksIGZhbHNlKTsKLSAgICBzdHlsZS0+c2V0VGV4
dENvbnRlbnQoc2hhZG93U3R5bGUpOwotICAgIHJvb3QuYXBwZW5kQ2hpbGQoc3R5bGUpOworICAg
IHN0eWxlLT5zZXRUZXh0Q29udGVudChTdHJpbmcgeyBzaGFkb3dTdHlsZSB9KTsKKyAgICByb290
LmFwcGVuZENoaWxkKFdURk1vdmUoc3R5bGUpKTsKIAogICAgIC8vIFBzZXVkb3MgYXJlIHNldCB0
byBhbGxvdyBhdXRob3Igc3R5bGluZy4KICAgICBhdXRvIGlubmVyID0gSFRNTERpdkVsZW1lbnQ6
OmNyZWF0ZShkb2N1bWVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9wdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVu
dC5jcHAKaW5kZXggYzAxNzMzMzc4ODZmYjc5Y2UyYmM3OTlmMzBmYjQ4YTY0ZDBhYTQ5OC4uZTIw
ZDNkYWQ0N2UxNDA3YWMyNDMwZDVkOTkzZDRlNzRmZTI2ZTE0YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKQEAgLTcwLDEyICs3MCwxMiBAQCBSZWY8SFRNTE9w
dGlvbkVsZW1lbnQ+IEhUTUxPcHRpb25FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxPcHRpb25FbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxIVE1MT3B0aW9uRWxl
bWVudD4+IEhUTUxPcHRpb25FbGVtZW50OjpjcmVhdGVGb3JMZWdhY3lGYWN0b3J5RnVuY3Rpb24o
RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEF0b21TdHJpbmcm
IHZhbHVlLCBib29sIGRlZmF1bHRTZWxlY3RlZCwgYm9vbCBzZWxlY3RlZCkKK0V4Y2VwdGlvbk9y
PFJlZjxIVE1MT3B0aW9uRWxlbWVudD4+IEhUTUxPcHRpb25FbGVtZW50OjpjcmVhdGVGb3JMZWdh
Y3lGYWN0b3J5RnVuY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmcmJiB0ZXh0LCBjb25z
dCBBdG9tU3RyaW5nJiB2YWx1ZSwgYm9vbCBkZWZhdWx0U2VsZWN0ZWQsIGJvb2wgc2VsZWN0ZWQp
CiB7CiAgICAgYXV0byBlbGVtZW50ID0gY3JlYXRlKGRvY3VtZW50KTsKIAogICAgIGlmICghdGV4
dC5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBhcHBlbmRSZXN1bHQgPSBlbGVtZW50LT5hcHBl
bmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIHRleHQpKTsKKyAgICAgICAgYXV0byBhcHBl
bmRSZXN1bHQgPSBlbGVtZW50LT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIFdU
Rk1vdmUodGV4dCkpKTsKICAgICAgICAgaWYgKGFwcGVuZFJlc3VsdC5oYXNFeGNlcHRpb24oKSkK
ICAgICAgICAgICAgIHJldHVybiBhcHBlbmRSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogICAg
IH0KQEAgLTExMiw3ICsxMTIsNyBAQCBTdHJpbmcgSFRNTE9wdGlvbkVsZW1lbnQ6OnRleHQoKSBj
b25zdAogICAgIHJldHVybiBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoZG9jdW1l
bnQoKS5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKHRleHQpKS5zaW1wbGlmeVdoaXRl
U3BhY2UoaXNIVE1MU3BhY2UpOwogfQogCi12b2lkIEhUTUxPcHRpb25FbGVtZW50OjpzZXRUZXh0
KGNvbnN0IFN0cmluZyAmdGV4dCkKK3ZvaWQgSFRNTE9wdGlvbkVsZW1lbnQ6OnNldFRleHQoU3Ry
aW5nJiYgdGV4dCkKIHsKICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07CiAKQEAgLTEy
NiwxMCArMTI2LDEwIEBAIHZvaWQgSFRNTE9wdGlvbkVsZW1lbnQ6OnNldFRleHQoY29uc3QgU3Ry
aW5nICZ0ZXh0KQogICAgIC8vIEhhbmRsZSB0aGUgY29tbW9uIHNwZWNpYWwgY2FzZSB3aGVyZSB0
aGVyZSdzIGV4YWN0bHkgMSBjaGlsZCBub2RlLCBhbmQgaXQncyBhIHRleHQgbm9kZS4KICAgICBS
ZWZQdHIgY2hpbGQgPSBmaXJzdENoaWxkKCk7CiAgICAgaWYgKGlzPFRleHQ+KGNoaWxkKSAmJiAh
Y2hpbGQtPm5leHRTaWJsaW5nKCkpCi0gICAgICAgIGRvd25jYXN0PFRleHQ+KCpjaGlsZCkuc2V0
RGF0YSh0ZXh0KTsKKyAgICAgICAgZG93bmNhc3Q8VGV4dD4oKmNoaWxkKS5zZXREYXRhKFdURk1v
dmUodGV4dCkpOwogICAgIGVsc2UgewogICAgICAgICByZW1vdmVDaGlsZHJlbigpOwotICAgICAg
ICBhcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQoKSwgdGV4dCkpOworICAgICAgICBh
cHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQoKSwgV1RGTW92ZSh0ZXh0KSkpOwogICAg
IH0KICAgICAKICAgICBpZiAoc2VsZWN0SXNNZW51TGlzdCAmJiBzZWxlY3QtPnNlbGVjdGVkSW5k
ZXgoKSAhPSBvbGRTZWxlY3RlZEluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3B0aW9uRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxl
bWVudC5oCmluZGV4IDZlMGJmNWM3ODc2MzJhZjA5NDU3OGQ4Yjk3ZmVmOTA4YzNjMmYxYjUuLjk4
NDg4YTQ3MjAxMTgxN2YyNDI1ODYzZmZkMmIxZTc4ZjY2ZjJjMzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPcHRpb25FbGVtZW50LmgKQEAgLTM3LDEwICszNywxMCBAQCBjbGFzcyBIVE1MT3B0
aW9uRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxIVE1MT3B0aW9uRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7CiAgICAgc3RhdGlj
IFJlZjxIVE1MT3B0aW9uRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCYpOwotICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8SFRNTE9wdGlvbkVsZW1lbnQ+PiBj
cmVhdGVGb3JMZWdhY3lGYWN0b3J5RnVuY3Rpb24oRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIHRl
eHQsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlLCBib29sIGRlZmF1bHRTZWxlY3RlZCwgYm9vbCBz
ZWxlY3RlZCk7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxIVE1MT3B0aW9uRWxlbWVudD4+
IGNyZWF0ZUZvckxlZ2FjeUZhY3RvcnlGdW5jdGlvbihEb2N1bWVudCYsIFN0cmluZyYmIHRleHQs
IGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlLCBib29sIGRlZmF1bHRTZWxlY3RlZCwgYm9vbCBzZWxl
Y3RlZCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdGV4dCgpIGNvbnN0OwotICAgIHZv
aWQgc2V0VGV4dChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldFRleHQoU3RyaW5nJiYpOwog
CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IGluZGV4KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKaW5kZXggMWZhMTZlZTc0ODQxM2EyY2Q5MzMzNWE2
NzU3ODhkNWE4ODM4ZWRjMC4uZDNiNjEwODE0OGE4MGU4NWVkY2Y2MjgxOWViMTRmOTU5MGI4MDYw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKQEAgLTg3LDEw
ICs4NywxMCBAQCBTdHJpbmcgSFRNTE91dHB1dEVsZW1lbnQ6OnZhbHVlKCkgY29uc3QKICAgICBy
ZXR1cm4gdGV4dENvbnRlbnQoKTsKIH0KIAotdm9pZCBIVE1MT3V0cHV0RWxlbWVudDo6c2V0VmFs
dWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgSFRNTE91dHB1dEVsZW1lbnQ6OnNldFZhbHVl
KFN0cmluZyYmIHZhbHVlKQogewogICAgIG1fZGVmYXVsdFZhbHVlT3ZlcnJpZGUgPSBkZWZhdWx0
VmFsdWUoKTsKLSAgICBzdHJpbmdSZXBsYWNlQWxsKHZhbHVlKTsKKyAgICBzdHJpbmdSZXBsYWNl
QWxsKFdURk1vdmUodmFsdWUpKTsKIH0KIAogU3RyaW5nIEhUTUxPdXRwdXRFbGVtZW50OjpkZWZh
dWx0VmFsdWUoKSBjb25zdApAQCAtOTgsMTIgKzk4LDEyIEBAIFN0cmluZyBIVE1MT3V0cHV0RWxl
bWVudDo6ZGVmYXVsdFZhbHVlKCkgY29uc3QKICAgICByZXR1cm4gbV9kZWZhdWx0VmFsdWVPdmVy
cmlkZS5pc051bGwoKSA/IHRleHRDb250ZW50KCkgOiBtX2RlZmF1bHRWYWx1ZU92ZXJyaWRlOwog
fQogCi12b2lkIEhUTUxPdXRwdXRFbGVtZW50OjpzZXREZWZhdWx0VmFsdWUoY29uc3QgU3RyaW5n
JiB2YWx1ZSkKK3ZvaWQgSFRNTE91dHB1dEVsZW1lbnQ6OnNldERlZmF1bHRWYWx1ZShTdHJpbmcm
JiB2YWx1ZSkKIHsKICAgICBpZiAobV9kZWZhdWx0VmFsdWVPdmVycmlkZS5pc051bGwoKSkKLSAg
ICAgICAgc3RyaW5nUmVwbGFjZUFsbCh2YWx1ZSk7CisgICAgICAgIHN0cmluZ1JlcGxhY2VBbGwo
V1RGTW92ZSh2YWx1ZSkpOwogICAgIGVsc2UKLSAgICAgICAgbV9kZWZhdWx0VmFsdWVPdmVycmlk
ZSA9IHZhbHVlOworICAgICAgICBtX2RlZmF1bHRWYWx1ZU92ZXJyaWRlID0gV1RGTW92ZSh2YWx1
ZSk7CiB9CiAKIERPTVRva2VuTGlzdCYgSFRNTE91dHB1dEVsZW1lbnQ6Omh0bWxGb3IoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5oCmluZGV4IGU0ODcxNzEzMjYzM2IxNDll
ZDdjMzVmNjFkMDg0MjEzYmE0YzE0NmQuLjAyYzQ5Y2UwMGE2NDY1ODRmMGRkOGYxNjExN2ZkMWM0
MDJkYWZhMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmgKQEAgLTQ0
LDkgKzQ0LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTE91dHB1dEVsZW1lbnQ+IGNy
ZWF0ZShEb2N1bWVudCYpOwogCiAgICAgU3RyaW5nIHZhbHVlKCkgY29uc3Q7Ci0gICAgdm9pZCBz
ZXRWYWx1ZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldFZhbHVlKFN0cmluZyYmKTsKICAg
ICBTdHJpbmcgZGVmYXVsdFZhbHVlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXREZWZhdWx0VmFsdWUo
Y29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXREZWZhdWx0VmFsdWUoU3RyaW5nJiYpOwogICAg
IERPTVRva2VuTGlzdCYgaHRtbEZvcigpOwogICAgIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggYjUzNTA5ZWJmM2Y3MjQ4M2Q3ZGJjNTFh
ZmRkNzk2Y2Y1NWQ3MjYwOS4uMGU3ODIzYTVmZWJiNjQzMDM1MmY2NTI2MzYzZDdhMWJkOTA1ZWIz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKQEAgLTg1LDkg
Kzg1LDkgQEAgdm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6ZGlkRmluaXNoSW5zZXJ0aW5nTm9kZSgp
CiB9CiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NjcmlwdGlu
Zy5odG1sI2RvbS1zY3JpcHQtdGV4dAotdm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6c2V0VGV4dChj
b25zdCBTdHJpbmcmIHZhbHVlKQordm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6c2V0VGV4dChTdHJp
bmcmJiB2YWx1ZSkKIHsKLSAgICBzZXRUZXh0Q29udGVudCh2YWx1ZSk7CisgICAgc2V0VGV4dENv
bnRlbnQoV1RGTW92ZSh2YWx1ZSkpOwogfQogCiB2b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpzZXRB
c3luYyhib29sIGFzeW5jKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2Ny
aXB0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oCmlu
ZGV4IDYwM2NmZTEwMjhiZWM4OThlOTAyN2RlNmRiMDA2ODYzMTg0Y2VmYWEuLmMwNDMwMzcwY2Yz
OTYxNGZhYTc4MGQ2NTJlMGUyNjBmMmI5N2U5NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
Y3JpcHRFbGVtZW50LmgKQEAgLTM0LDcgKzM0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8
SFRNTFNjcmlwdEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQm
LCBib29sIHdhc0luc2VydGVkQnlQYXJzZXIsIGJvb2wgYWxyZWFkeVN0YXJ0ZWQgPSBmYWxzZSk7
CiAKICAgICBTdHJpbmcgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIHNjcmlwdENvbnRlbnQoKTsgfQot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGV4dChjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFRleHQoU3RyaW5nJiYpOwogCiAgICAgVVJMIHNyYygpIGNvbnN0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAppbmRleCAy
ZjEwY2VkODQxMzFlZDdlOWRkMTg3YTM0MDFjZmRjZGVjNGJhNDNlLi5mOGRmZTU0Njc0OWJhYTY5
Y2RhNjZhZmFjOTMyMDY3M2Y4MTg4NzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRBcmVhRWxlbWVudC5jcHAKQEAgLTQwNCw3ICs0MDQsNyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVs
ZW1lbnQ6OnNldFZhbHVlQ29tbW9uKGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIFRleHRGaWVsZEV2
ZW50QgogICAgICAgICByZXR1cm47CiAKICAgICBtX3ZhbHVlID0gbm9ybWFsaXplZFZhbHVlOwot
ICAgIHNldElubmVyVGV4dFZhbHVlKG1fdmFsdWUpOworICAgIHNldElubmVyVGV4dFZhbHVlKFN0
cmluZyB7IG1fdmFsdWUgfSk7CiAgICAgc2V0TGFzdENoYW5nZVdhc05vdFVzZXJFZGl0KCk7CiAg
ICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KCk7CiAgICAgaW52YWxpZGF0ZVN0eWxlRm9y
U3VidHJlZSgpOwpAQCAtNDI4LDkgKzQyOCw5IEBAIFN0cmluZyBIVE1MVGV4dEFyZWFFbGVtZW50
OjpkZWZhdWx0VmFsdWUoKSBjb25zdAogICAgIHJldHVybiBUZXh0Tm9kZVRyYXZlcnNhbDo6Y2hp
bGRUZXh0Q29udGVudCgqdGhpcyk7CiB9CiAKLXZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6c2V0
RGVmYXVsdFZhbHVlKGNvbnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlKQordm9pZCBIVE1MVGV4dEFy
ZWFFbGVtZW50OjpzZXREZWZhdWx0VmFsdWUoU3RyaW5nJiYgZGVmYXVsdFZhbHVlKQogewotICAg
IHNldFRleHRDb250ZW50KGRlZmF1bHRWYWx1ZSk7CisgICAgc2V0VGV4dENvbnRlbnQoV1RGTW92
ZShkZWZhdWx0VmFsdWUpKTsKIH0KIAogU3RyaW5nIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnZhbGlk
YXRpb25NZXNzYWdlKCkgY29uc3QKQEAgLTU2MCw3ICs1NjAsNyBAQCB2b2lkIEhUTUxUZXh0QXJl
YUVsZW1lbnQ6OnVwZGF0ZVBsYWNlaG9sZGVyVGV4dCgpCiAgICAgICAgIG1fcGxhY2Vob2xkZXIg
PSBUZXh0Q29udHJvbFBsYWNlaG9sZGVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOwogICAg
ICAgICB1c2VyQWdlbnRTaGFkb3dSb290KCktPmluc2VydEJlZm9yZSgqbV9wbGFjZWhvbGRlciwg
aW5uZXJUZXh0RWxlbWVudCgpLT5uZXh0U2libGluZygpKTsKICAgICB9Ci0gICAgbV9wbGFjZWhv
bGRlci0+c2V0SW5uZXJUZXh0KHBsYWNlaG9sZGVyVGV4dCk7CisgICAgbV9wbGFjZWhvbGRlci0+
c2V0SW5uZXJUZXh0KFN0cmluZyB7IHBsYWNlaG9sZGVyVGV4dCB9KTsKIH0KIAogYm9vbCBIVE1M
VGV4dEFyZWFFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCmluZGV4IGYxZmNhNzg5YzY3MmJkNzcy
OTMyYmFiNDU2ZDMwM2ZkODNhZmJlNTcuLjU4OTJhMGIxMjA4YWE0OWVmYWViNDYyODU2NWMwNTA1
NGU4NjkyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCkBA
IC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdmFsdWUo
KSBjb25zdCBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBzZXRW
YWx1ZShjb25zdCBTdHJpbmcmLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yID0gRGlzcGF0Y2hOb0V2
ZW50LCBUZXh0Q29udHJvbFNldFZhbHVlU2VsZWN0aW9uID0gVGV4dENvbnRyb2xTZXRWYWx1ZVNl
bGVjdGlvbjo6U2V0U2VsZWN0aW9uVG9FbmQpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyBkZWZhdWx0VmFsdWUoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERl
ZmF1bHRWYWx1ZShjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERl
ZmF1bHRWYWx1ZShTdHJpbmcmJik7CiAgICAgaW50IHRleHRMZW5ndGgoKSBjb25zdCB7IHJldHVy
biB2YWx1ZSgpLmxlbmd0aCgpOyB9CiAgICAgaW50IGVmZmVjdGl2ZU1heExlbmd0aCgpIGNvbnN0
IHsgcmV0dXJuIG1heExlbmd0aCgpOyB9CiAgICAgLy8gRm9yIFZhbGlkaXR5U3RhdGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5k
ZXggZDY2ZDk5ZTVlNDZmMjZjNDI5ODZiMzE3ZjA0N2I5ZWVmMDYwNzc2Mi4uNmZiMTBmNjcxMjVk
ODczYjM3YWYyNTNmYTBlMDVmNWMyM2FkOGJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTYxMSw3ICs2MTEsNyBAQCBz
dGF0aWMgU3RyaW5nIGlubmVyVGV4dFZhbHVlRnJvbShUZXh0Q29udHJvbElubmVyVGV4dEVsZW1l
bnQmIGlubmVyVGV4dCkKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKLXZvaWQg
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldElubmVyVGV4dFZhbHVlKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCit2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRJbm5lclRleHRW
YWx1ZShTdHJpbmcmJiB2YWx1ZSkKIHsKICAgICBMYXlvdXREaXNhbGxvd2VkU2NvcGUgbGF5b3V0
RGlzYWxsb3dlZFNjb3BlKExheW91dERpc2FsbG93ZWRTY29wZTo6UmVhc29uOjpQZXJmb3JtYW5j
ZU9wdGltaXphdGlvbik7CiAgICAgYXV0byBpbm5lclRleHQgPSBpbm5lclRleHRFbGVtZW50Q3Jl
YXRpbmdTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKTsKQEAgLTY0Myw5ICs2NDMsMTAgQEAgdm9pZCBI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0SW5uZXJUZXh0VmFsdWUoY29uc3QgU3RyaW5n
JiB2YWx1ZSkKICAgICAgICAgICAgIC8vIEV2ZW50cyBkaXNwYXRjaGVkIG9uIHRoZSBpbm5lciB0
ZXh0IGVsZW1lbnQgY2Fubm90IGV4ZWN1dGUgYXJiaXRyYXJ5IGF1dGhvciBzY3JpcHRzLgogICAg
ICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpFdmVudEFsbG93ZWRTY29wZSBhbGxvd2Vk
U2NvcGUoKnVzZXJBZ2VudFNoYWRvd1Jvb3QoKSk7CiAKLSAgICAgICAgICAgIGlubmVyVGV4dC0+
c2V0SW5uZXJUZXh0KHZhbHVlKTsKKyAgICAgICAgICAgIGJvb2wgZW5kc1dpdGhOZXdMaW5lID0g
dmFsdWUuZW5kc1dpdGgoJ1xuJykgfHwgdmFsdWUuZW5kc1dpdGgoJ1xyJyk7CisgICAgICAgICAg
ICBpbm5lclRleHQtPnNldElubmVyVGV4dChXVEZNb3ZlKHZhbHVlKSk7CiAKLSAgICAgICAgICAg
IGlmICh2YWx1ZS5lbmRzV2l0aCgnXG4nKSB8fCB2YWx1ZS5lbmRzV2l0aCgnXHInKSkKKyAgICAg
ICAgICAgIGlmIChlbmRzV2l0aE5ld0xpbmUpCiAgICAgICAgICAgICAgICAgaW5uZXJUZXh0LT5h
cHBlbmRDaGlsZChIVE1MQlJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSkpOwogICAgICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQu
aAppbmRleCA4MDMxNGQxYjE4YTc4ZmRhMGYyOGEzOWMzMmIwNDlmZTllMzIyM2QwLi43ZDkzZjk1
MGNjOWRlODBkMjkxZjAxODc2ZWE2Zjc2OThjMmM0MTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCkBAIC05Nyw3ICs5Nyw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZChib29sIHNob3VsZEZpcmVTZWxlY3RF
dmVudCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBsYXN0Q2hhbmdlV2FzVXNlckVkaXQoKSBj
b25zdDsKLSAgICB2b2lkIHNldElubmVyVGV4dFZhbHVlKGNvbnN0IFN0cmluZyYpOworICAgIHZv
aWQgc2V0SW5uZXJUZXh0VmFsdWUoU3RyaW5nJiYpOwogICAgIFN0cmluZyBpbm5lclRleHRWYWx1
ZSgpIGNvbnN0OwogCiAgICAgU3RyaW5nIGRpcmVjdGlvbkZvckZvcm1EYXRhKCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcAppbmRleCBhNjcwN2JlNzI4YTE5
ODdjZWYxNzM4MDZjMmJkNDY1MWMyYWI2YjYzLi4xNzMzOTUzODM1NTFkZDhkODI2ODJkYmY1YjMz
NmFiZjZkOTFlZDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAK
QEAgLTkwLDkgKzkwLDkgQEAgU3RyaW5nV2l0aERpcmVjdGlvbiBIVE1MVGl0bGVFbGVtZW50Ojpj
b21wdXRlZFRleHRXaXRoRGlyZWN0aW9uKCkKICAgICByZXR1cm4geyB0ZXh0KCksIGRpcmVjdGlv
biB9OwogfQogCi12b2lkIEhUTUxUaXRsZUVsZW1lbnQ6OnNldFRleHQoY29uc3QgU3RyaW5nJiB2
YWx1ZSkKK3ZvaWQgSFRNTFRpdGxlRWxlbWVudDo6c2V0VGV4dChTdHJpbmcmJiB2YWx1ZSkKIHsK
LSAgICBzZXRUZXh0Q29udGVudCh2YWx1ZSk7CisgICAgc2V0VGV4dENvbnRlbnQoV1RGTW92ZSh2
YWx1ZSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRs
ZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5oCmluZGV4
IDhjMzdhODliMTA5NjdmMGViNDk3MTYwNmE3ZWMwNDViZTY3NGIwZTQuLjgxZDE0YmZkMTc1NWQ5
NzI1YzRhMGRiZjAwMGFhYzQzMzliMjJkNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRpdGxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxl
RWxlbWVudC5oCkBAIC0zMyw3ICszMyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhUTUxU
aXRsZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0ZXh0KCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRUZXh0KGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0VGV4dChTdHJpbmcmJik7CiAKICAgICBjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0ZXh0
V2l0aERpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGl0bGU7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCmluZGV4IDIzMzA4MmNlNzNiYmRiOGJlODgw
NDU3YTNmYTUwNjUwMDAyZTA2ZWQuLmFlNTgzYjgwODI0YTliMWQ3ZTRmYThlNzQxNWYyNzY0Y2E1
YWYzYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKQEAg
LTY2MCw3ICs2NjAsNyBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6dXBkYXRlUGxhY2Vob2xk
ZXJUZXh0KCkKICAgICAgICAgbV9wbGFjZWhvbGRlciA9IFRleHRDb250cm9sUGxhY2Vob2xkZXJF
bGVtZW50OjpjcmVhdGUoZWxlbWVudCgpLT5kb2N1bWVudCgpKTsKICAgICAgICAgZWxlbWVudCgp
LT51c2VyQWdlbnRTaGFkb3dSb290KCktPmluc2VydEJlZm9yZSgqbV9wbGFjZWhvbGRlciwgbV9j
b250YWluZXIgPyBtX2NvbnRhaW5lci5nZXQoKSA6IGlubmVyVGV4dEVsZW1lbnQoKS5nZXQoKSk7
CiAgICAgfQotICAgIG1fcGxhY2Vob2xkZXItPnNldElubmVyVGV4dChwbGFjZWhvbGRlclRleHQp
OworICAgIG1fcGxhY2Vob2xkZXItPnNldElubmVyVGV4dChXVEZNb3ZlKHBsYWNlaG9sZGVyVGV4
dCkpOwogfQogCiBib29sIFRleHRGaWVsZElucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEoRE9NRm9y
bURhdGEmIGZvcm1EYXRhKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvQXRvbUhUTUxUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQXRvbUhU
TUxUb2tlbi5oCmluZGV4IDQ2NGVjMTA3NWU0M2NlM2YyODhhNzA3NmEyNmYxMWMyNDJhMjVhZjAu
LjllZDdhNmE1YTVlZDQ0YWI2YjNmNWFmZWQyMjNlMGFjODUzOGU3MmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21IVE1MVG9rZW4uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9BdG9tSFRNTFRva2VuLmgKQEAgLTc0LDYgKzc0LDcgQEAgcHVibGlj
OgogICAgIC8vIENvbW1lbnQKIAogICAgIGNvbnN0IFN0cmluZyYgY29tbWVudCgpIGNvbnN0Owor
ICAgIFN0cmluZyYgY29tbWVudCgpOwogCiAgICAgSGFzRHVwbGljYXRlQXR0cmlidXRlIGhhc0R1
cGxpY2F0ZUF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzRHVwbGljYXRlQXR0cmlidXRl
OyB9OwogCkBAIC0xNjIsNiArMTYzLDEyIEBAIGlubGluZSBjb25zdCBTdHJpbmcmIEF0b21IVE1M
VG9rZW46OmNvbW1lbnQoKSBjb25zdAogICAgIHJldHVybiBtX2RhdGE7CiB9CiAKK2lubGluZSBT
dHJpbmcmIEF0b21IVE1MVG9rZW46OmNvbW1lbnQoKQoreworICAgIEFTU0VSVChtX3R5cGUgPT0g
SFRNTFRva2VuOjpDb21tZW50KTsKKyAgICByZXR1cm4gbV9kYXRhOworfQorCiBpbmxpbmUgYm9v
bCBBdG9tSFRNTFRva2VuOjpmb3JjZVF1aXJrcygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBIVE1MVG9rZW46OkRPQ1RZUEUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCmluZGV4IDE1ZGNmZmI4MmYxODk0OTAyMjFh
OWNmODI1Njk1YmNkYTNmODZiNDkuLjM2MTA2ZTM1ZDIzMzEzMWFlZTRiMGU1Y2VmMTM5OGMxMjBh
NGYzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1
Y3Rpb25TaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3Ry
dWN0aW9uU2l0ZS5jcHAKQEAgLTQ1MiwyMCArNDUyLDIwIEBAIHZvaWQgSFRNTENvbnN0cnVjdGlv
blNpdGU6Omluc2VydERvY3R5cGUoQXRvbUhUTUxUb2tlbiYmIHRva2VuKQogdm9pZCBIVE1MQ29u
c3RydWN0aW9uU2l0ZTo6aW5zZXJ0Q29tbWVudChBdG9tSFRNTFRva2VuJiYgdG9rZW4pCiB7CiAg
ICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OkNvbW1lbnQpOwotICAgIGF0dGFj
aExhdGVyKGN1cnJlbnROb2RlKCksIENvbW1lbnQ6OmNyZWF0ZShvd25lckRvY3VtZW50Rm9yQ3Vy
cmVudE5vZGUoKSwgdG9rZW4uY29tbWVudCgpKSk7CisgICAgYXR0YWNoTGF0ZXIoY3VycmVudE5v
ZGUoKSwgQ29tbWVudDo6Y3JlYXRlKG93bmVyRG9jdW1lbnRGb3JDdXJyZW50Tm9kZSgpLCBXVEZN
b3ZlKHRva2VuLmNvbW1lbnQoKSkpKTsKIH0KIAogdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6
aW5zZXJ0Q29tbWVudE9uRG9jdW1lbnQoQXRvbUhUTUxUb2tlbiYmIHRva2VuKQogewogICAgIEFT
U0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpDb21tZW50KTsKLSAgICBhdHRhY2hMYXRl
cihtX2F0dGFjaG1lbnRSb290LCBDb21tZW50OjpjcmVhdGUobV9kb2N1bWVudCwgdG9rZW4uY29t
bWVudCgpKSk7CisgICAgYXR0YWNoTGF0ZXIobV9hdHRhY2htZW50Um9vdCwgQ29tbWVudDo6Y3Jl
YXRlKG1fZG9jdW1lbnQsIFdURk1vdmUodG9rZW4uY29tbWVudCgpKSkpOwogfQogCiB2b2lkIEhU
TUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRDb21tZW50T25IVE1MSHRtbEVsZW1lbnQoQXRvbUhU
TUxUb2tlbiYmIHRva2VuKQogewogICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2Vu
OjpDb21tZW50KTsKICAgICBDb250YWluZXJOb2RlJiBwYXJlbnQgPSBtX29wZW5FbGVtZW50cy5y
b290Tm9kZSgpOwotICAgIGF0dGFjaExhdGVyKHBhcmVudCwgQ29tbWVudDo6Y3JlYXRlKHBhcmVu
dC5kb2N1bWVudCgpLCB0b2tlbi5jb21tZW50KCkpKTsKKyAgICBhdHRhY2hMYXRlcihwYXJlbnQs
IENvbW1lbnQ6OmNyZWF0ZShwYXJlbnQuZG9jdW1lbnQoKSwgV1RGTW92ZSh0b2tlbi5jb21tZW50
KCkpKSk7CiB9CiAKIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydEhUTUxIZWFkRWxl
bWVudChBdG9tSFRNTFRva2VuJiYgdG9rZW4pCkBAIC02MDAsNyArNjAwLDcgQEAgdm9pZCBIVE1M
Q29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0VGV4dE5vZGUoY29uc3QgU3RyaW5nJiBjaGFyYWN0ZXJz
LCBXaGl0ZXNwYWNlTW8KICAgICAgICAgaWYgKCF0ZXh0Tm9kZS0+bGVuZ3RoKCkpIHsKICAgICAg
ICAgICAgIFN0cmluZyBzdWJzdHJpbmcgPSBjaGFyYWN0ZXJzLnN1YnN0cmluZyhjdXJyZW50UG9z
aXRpb24pOwogICAgICAgICAgICAgQXRvbVN0cmluZyBzdWJzdHJpbmdBdG9tID0gbV93aGl0ZXNw
YWNlQ2FjaGUubG9va3VwKHN1YnN0cmluZywgd2hpdGVzcGFjZU1vZGUpOwotICAgICAgICAgICAg
dGV4dE5vZGUgPSBUZXh0OjpjcmVhdGUodGFzay5wYXJlbnQtPmRvY3VtZW50KCksIHN1YnN0cmlu
Z0F0b20uaXNOdWxsKCkgPyBzdWJzdHJpbmcgOiBzdWJzdHJpbmdBdG9tLnN0cmluZygpKTsKKyAg
ICAgICAgICAgIHRleHROb2RlID0gVGV4dDo6Y3JlYXRlKHRhc2sucGFyZW50LT5kb2N1bWVudCgp
LCBzdWJzdHJpbmdBdG9tLmlzTnVsbCgpID8gV1RGTW92ZShzdWJzdHJpbmcpIDogc3Vic3RyaW5n
QXRvbS5yZWxlYXNlU3RyaW5nKCkpOwogICAgICAgICB9CiAKICAgICAgICAgY3VycmVudFBvc2l0
aW9uICs9IHRleHROb2RlLT5sZW5ndGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0RhdGVUaW1lRWRpdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvRGF0ZVRpbWVFZGl0RWxlbWVudC5jcHAKaW5kZXggZDdkZmE3MzBmYWNmNzA3NzhjZTVk
YWY2MzRkNzdiMTExMTJiYzhhMy4uNGUyNzY3NmNkYTgxYjUwZTM1YTU5ODExMGVlNzBhZWZlYWYx
NWFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVFZGl0
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVFZGl0
RWxlbWVudC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICAvLyBE
YXRlVGltZUZvcm1hdDo6VG9rZW5IYW5kbGVyIGZ1bmN0aW9uczoKICAgICB2b2lkIHZpc2l0Rmll
bGQoRGF0ZVRpbWVGb3JtYXQ6OkZpZWxkVHlwZSwgaW50KTsKLSAgICB2b2lkIHZpc2l0TGl0ZXJh
bChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHZpc2l0TGl0ZXJhbChTdHJpbmcmJik7CiAKICAg
ICBEYXRlVGltZUVkaXRFbGVtZW50JiBtX2VkaXRFbGVtZW50OwogICAgIGNvbnN0IERhdGVUaW1l
RWRpdEVsZW1lbnQ6OkxheW91dFBhcmFtZXRlcnMmIG1fcGFyYW1ldGVyczsKQEAgLTE2Nyw3ICsx
NjcsNyBAQCB2b2lkIERhdGVUaW1lRWRpdEJ1aWxkZXI6OnZpc2l0RmllbGQoRGF0ZVRpbWVGb3Jt
YXQ6OkZpZWxkVHlwZSBmaWVsZFR5cGUsIGludCBjbwogICAgIH0KIH0KIAotdm9pZCBEYXRlVGlt
ZUVkaXRCdWlsZGVyOjp2aXNpdExpdGVyYWwoY29uc3QgU3RyaW5nJiB0ZXh0KQordm9pZCBEYXRl
VGltZUVkaXRCdWlsZGVyOjp2aXNpdExpdGVyYWwoU3RyaW5nJiYgdGV4dCkKIHsKICAgICBBU1NF
UlQodGV4dC5sZW5ndGgoKSk7CiAKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIERhdGVUaW1lRWRp
dEJ1aWxkZXI6OnZpc2l0TGl0ZXJhbChjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgaWYgKHRleHQu
ZW5kc1dpdGgoJyAnKSkKICAgICAgICAgZWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShD
U1NQcm9wZXJ0eU1hcmdpbklubGluZUVuZCwgLTEsIENTU1VuaXRUeXBlOjpDU1NfUFgpOwogCi0g
ICAgZWxlbWVudC0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKG1fZWRpdEVsZW1lbnQuZG9jdW1l
bnQoKSwgdGV4dCkpOworICAgIGVsZW1lbnQtPmFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShtX2Vk
aXRFbGVtZW50LmRvY3VtZW50KCksIFdURk1vdmUodGV4dCkpKTsKICAgICBtX2VkaXRFbGVtZW50
LmZpZWxkc1dyYXBwZXJFbGVtZW50KCkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50LmNwcApp
bmRleCA5ZTRmNjMzOGVlODA2Y2RkNWRiNTY1ZDNlYTk2NjVlNDlhZTQ2Mzk5Li40MWFjZGJhMTgw
YmJhNDRmMzhhMWZkYmI5NTY0MDg0NmRmZTAyY2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnQuY3BwCkBAIC0xODgsNyArMTg4LDcg
QEAgU3RyaW5nIERhdGVUaW1lRmllbGRFbGVtZW50Ojp2aXNpYmxlVmFsdWUoKSBjb25zdAogdm9p
ZCBEYXRlVGltZUZpZWxkRWxlbWVudDo6dXBkYXRlVmlzaWJsZVZhbHVlKEV2ZW50QmVoYXZpb3Ig
ZXZlbnRCZWhhdmlvcikKIHsKICAgICBpZiAoIWZpcnN0Q2hpbGQoKSkKLSAgICAgICAgYXBwZW5k
Q2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50KCksIGVtcHR5U3RyaW5nKCkpKTsKKyAgICAgICAg
YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50KCksIFN0cmluZyB7IGVtcHR5U3RyaW5n
KCkgfSkpOwogCiAgICAgYXV0byYgdGV4dE5vZGUgPSBkb3duY2FzdDxUZXh0PigqZmlyc3RDaGls
ZCgpKTsKICAgICBTdHJpbmcgbmV3VmlzaWJsZVZhbHVlID0gdmlzaWJsZVZhbHVlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKaW5kZXggNzdjNmExNjBiYTk1
YmQ1YTI4NmM1ZGE3NDkzOTgzNWU1MWI5YWQzZC4uYjMzZTJhYTIwNDA4YWNmM2YxMWExOTQxYTc5
NDQyZjUyMGU0ZDBmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2tDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3Vl
LmNwcApAQCAtNTEwLDggKzUxMCw4IEBAIHZvaWQgVGV4dFRyYWNrQ3VlOjpyZWJ1aWxkRGlzcGxh
eVRyZWUoKQogICAgICAgICBpZiAoY29uc3QgYXV0byYgc3R5bGVTaGVldHMgPSB0cmFjaygpLT5z
dHlsZVNoZWV0cygpKSB7CiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNzc1N0cmluZyA6
ICpzdHlsZVNoZWV0cykgewogICAgICAgICAgICAgICAgIGF1dG8gc3R5bGUgPSBIVE1MU3R5bGVF
bGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjpzdHlsZVRhZywgbV9kaXNwbGF5VHJlZS0+ZG9jdW1l
bnQoKSwgZmFsc2UpOwotICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRUZXh0Q29udGVudChjc3NT
dHJpbmcpOwotICAgICAgICAgICAgICAgIG1fZGlzcGxheVRyZWUtPmFwcGVuZENoaWxkKHN0eWxl
KTsKKyAgICAgICAgICAgICAgICBzdHlsZS0+c2V0VGV4dENvbnRlbnQoU3RyaW5nIHsgY3NzU3Ry
aW5nIH0pOworICAgICAgICAgICAgICAgIG1fZGlzcGxheVRyZWUtPmFwcGVuZENoaWxkKFdURk1v
dmUoc3R5bGUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVlRUQ3VlLmNwcAppbmRleCBlNzNkY2NhMjM4ZGE4Y2FhYWNlN2Y1OTAxM2NmNmNh
NzMwMzY5ZWQyLi5hYmY3NTY5NjRjMzc5ZTg3NzRkYWNlYWI4MTIwZTI4ZmNkMTRhYTdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCkBAIC0xMDAxLDE2ICsxMDAxLDE2IEBAIFJl
ZlB0cjxUZXh0VHJhY2tDdWVCb3g+IFZUVEN1ZTo6Z2V0RGlzcGxheVRyZWUoY29uc3QgSW50U2l6
ZSYgdmlkZW9TaXplLCBpbnQgZm9uCiAgICAgaWYgKGRpc3BsYXlUcmVlLT5kb2N1bWVudCgpLnBh
Z2UoKSkgewogICAgICAgICBhdXRvIGNzc1N0cmluZyA9IGRpc3BsYXlUcmVlLT5kb2N1bWVudCgp
LnBhZ2UoKS0+Y2FwdGlvblVzZXJQcmVmZXJlbmNlc1N0eWxlU2hlZXQoKTsKICAgICAgICAgYXV0
byBzdHlsZSA9IEhUTUxTdHlsZUVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OnN0eWxlVGFnLCBk
aXNwbGF5VHJlZS0+ZG9jdW1lbnQoKSwgZmFsc2UpOwotICAgICAgICBzdHlsZS0+c2V0VGV4dENv
bnRlbnQoY3NzU3RyaW5nKTsKLSAgICAgICAgZGlzcGxheVRyZWUtPmFwcGVuZENoaWxkKHN0eWxl
KTsKKyAgICAgICAgc3R5bGUtPnNldFRleHRDb250ZW50KFdURk1vdmUoY3NzU3RyaW5nKSk7Cisg
ICAgICAgIGRpc3BsYXlUcmVlLT5hcHBlbmRDaGlsZChXVEZNb3ZlKHN0eWxlKSk7CiAgICAgfQog
CiAgICAgY29uc3QgYXV0byYgc3R5bGVTaGVldHMgPSB0cmFjaygpLT5zdHlsZVNoZWV0cygpOwog
ICAgIGlmIChzdHlsZVNoZWV0cykgewogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNzc1N0cmlu
ZyA6ICpzdHlsZVNoZWV0cykgewogICAgICAgICAgICAgYXV0byBzdHlsZSA9IEhUTUxTdHlsZUVs
ZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OnN0eWxlVGFnLCBkaXNwbGF5VHJlZS0+ZG9jdW1lbnQo
KSwgZmFsc2UpOwotICAgICAgICAgICAgc3R5bGUtPnNldFRleHRDb250ZW50KGNzc1N0cmluZyk7
Ci0gICAgICAgICAgICBkaXNwbGF5VHJlZS0+YXBwZW5kQ2hpbGQoc3R5bGUpOworICAgICAgICAg
ICAgc3R5bGUtPnNldFRleHRDb250ZW50KFN0cmluZyB7IGNzc1N0cmluZyB9KTsKKyAgICAgICAg
ICAgIGRpc3BsYXlUcmVlLT5hcHBlbmRDaGlsZChXVEZNb3ZlKHN0eWxlKSk7CiAgICAgICAgIH0K
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAppbmRl
eCA4ZmQxYzMzNWIwNjY3MDg1MTQ5OTNlY2M5ZDdiZTRjMGNlZTlmYjI2Li5mOGRkYmQzODA1YjQ1
ODBhOGQ3NjQ0ODkxMjNjZDkyMWVjMjYwNWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9XZWJWVFRQYXJzZXIuY3BwCkBAIC01MTksNyArNTE5LDcgQEAgUmVmPERvY3VtZW50RnJhZ21l
bnQ+IFdlYlZUVFRyZWVCdWlsZGVyOjpidWlsZEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBjdWVU
ZXh0KQogICAgIGF1dG8gZnJhZ21lbnQgPSBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUobV9kb2N1
bWVudCk7CiAKICAgICBpZiAoY3VlVGV4dC5pc0VtcHR5KCkpIHsKLSAgICAgICAgZnJhZ21lbnQt
PnBhcnNlckFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShtX2RvY3VtZW50LCBlbXB0eVN0cmluZygp
KSk7CisgICAgICAgIGZyYWdtZW50LT5wYXJzZXJBcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUobV9k
b2N1bWVudCwgU3RyaW5nIHsgZW1wdHlTdHJpbmcoKSB9KSk7CiAgICAgICAgIHJldHVybiBmcmFn
bWVudDsKICAgICB9CiAKQEAgLTY1MCw3ICs2NTAsNyBAQCB2b2lkIFdlYlZUVFRyZWVCdWlsZGVy
Ojpjb25zdHJ1Y3RUcmVlRnJvbVRva2VuKERvY3VtZW50JiBkb2N1bWVudCkKIAogICAgIHN3aXRj
aCAobV90b2tlbi50eXBlKCkpIHsKICAgICBjYXNlIFdlYlZUVFRva2VuVHlwZXM6OkNoYXJhY3Rl
cjogewotICAgICAgICBtX2N1cnJlbnROb2RlLT5wYXJzZXJBcHBlbmRDaGlsZChUZXh0OjpjcmVh
dGUoZG9jdW1lbnQsIG1fdG9rZW4uY2hhcmFjdGVycygpKSk7CisgICAgICAgIG1fY3VycmVudE5v
ZGUtPnBhcnNlckFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVudCwgU3RyaW5nIHsgbV90
b2tlbi5jaGFyYWN0ZXJzKCkgfSkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBX
ZWJWVFRUb2tlblR5cGVzOjpTdGFydFRhZzogewpAQCAtNzA5LDcgKzcwOSw3IEBAIHZvaWQgV2Vi
VlRUVHJlZUJ1aWxkZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4oRG9jdW1lbnQmIGRvY3VtZW50
KQogICAgICAgICBTdHJpbmcgY2hhcmFjdGVyc1N0cmluZyA9IG1fdG9rZW4uY2hhcmFjdGVycygp
OwogICAgICAgICBNZWRpYVRpbWUgcGFyc2VkVGltZVN0YW1wOwogICAgICAgICBpZiAoV2ViVlRU
UGFyc2VyOjpjb2xsZWN0VGltZVN0YW1wKGNoYXJhY3RlcnNTdHJpbmcsIHBhcnNlZFRpbWVTdGFt
cCkpCi0gICAgICAgICAgICBtX2N1cnJlbnROb2RlLT5wYXJzZXJBcHBlbmRDaGlsZChQcm9jZXNz
aW5nSW5zdHJ1Y3Rpb246OmNyZWF0ZShkb2N1bWVudCwgInRpbWVzdGFtcCJfcywgY2hhcmFjdGVy
c1N0cmluZykpOworICAgICAgICAgICAgbV9jdXJyZW50Tm9kZS0+cGFyc2VyQXBwZW5kQ2hpbGQo
UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjcmVhdGUoZG9jdW1lbnQsICJ0aW1lc3RhbXAiX3MsIFdU
Rk1vdmUoY2hhcmFjdGVyc1N0cmluZykpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRl
ZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IGU2ZmM3OWEw
MjExMjQ0ZmNjN2UwOTQ5M2NiZWU5MGIwN2UxMjhkMWEuLjIxMWEzZjBjMGE5NjRkN2E3Y2NkNzEx
ZDZhYjkwZjZkYjU5ZGY0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3Bw
CkBAIC0xNzAsNyArMTcwLDcgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBkb2N1
bWVudEZyYWdtZW50RnJvbURyYWdEYXRhKGNvbnN0IERyYWdEYXRhJiBkcmEKICAgICAgICAgICAg
ICAgICAgICAgaWYgKHRpdGxlLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHRp
dGxlID0gdXJsOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBhbmNob3ItPmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRpdGxlKSk7CisgICAgICAgICAgICAg
ICAgYW5jaG9yLT5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShXVEZNb3ZlKHRp
dGxlKSkpOwogICAgICAgICAgICAgICAgIGF1dG8gZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVE
b2N1bWVudEZyYWdtZW50KCk7CiAgICAgICAgICAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxk
KGFuY2hvcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZyYWdtZW50OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9EYXRlVGltZUZvcm1hdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9EYXRlVGltZUZvcm1hdC5oCmluZGV4IGEzNzI2ZGZmYmUxZjNl
MTlkN2E4MzFkNzcwNzY5M2UxNWM2NTY2N2YuLjhkZTE5MDQ0YWFjMDI3YmYyZTZmYWViNTUwZDQ5
MGY3OTFkYWI5MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvRGF0
ZVRpbWVGb3JtYXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0RhdGVUaW1l
Rm9ybWF0LmgKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHB1YmxpYzoKICAgICAgICAg
dmlydHVhbCB+VG9rZW5IYW5kbGVyKCkgPSBkZWZhdWx0OwogICAgICAgICB2aXJ0dWFsIHZvaWQg
dmlzaXRGaWVsZChGaWVsZFR5cGUsIGludCBudW1iZXJPZlBhdHRlcm5DaGFyYWN0ZXJzKSA9IDA7
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdExpdGVyYWwoY29uc3QgU3RyaW5nJikgPSAwOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRMaXRlcmFsKFN0cmluZyYmKSA9IDA7CiAgICAgfTsK
IAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBzdWNjZWVkZWQsIGZhbHNlIGlmIGZhaWxlZC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxhdGZvcm1Mb2NhbGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5jcHAKaW5kZXgg
ZjQ3MjAwYjU3MjE2OGQ0ZWVmYWE3NGU5MDc1NzFhZDVjOTJhYjAxOS4uYTMyYmE5MGUzYWE5MDBj
ZDQwMjg2ZDBjN2UxMzg3YWNkZjY3YTgzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICAvLyBEYXRlVGltZUZvcm1hdDo6VG9rZW5IYW5kbGVyIGZ1bmN0aW9ucy4KICAg
ICB2b2lkIHZpc2l0RmllbGQoRGF0ZVRpbWVGb3JtYXQ6OkZpZWxkVHlwZSwgaW50KSBmaW5hbDsK
LSAgICB2b2lkIHZpc2l0TGl0ZXJhbChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHZp
c2l0TGl0ZXJhbChTdHJpbmcmJikgZmluYWw7CiAKICAgICBTdHJpbmcgemVyb1BhZFN0cmluZyhj
b25zdCBTdHJpbmcmLCBzaXplX3Qgd2lkdGgpOwogICAgIHZvaWQgYXBwZW5kTnVtYmVyKGludCBu
dW1iZXIsIHNpemVfdCB3aWR0aCk7CkBAIC0xNjgsMTAgKzE2OCwxMCBAQCB2b2lkIERhdGVUaW1l
U3RyaW5nQnVpbGRlcjo6dmlzaXRGaWVsZChEYXRlVGltZUZvcm1hdDo6RmllbGRUeXBlIGZpZWxk
VHlwZSwgaW50CiAgICAgfQogfQogCi12b2lkIERhdGVUaW1lU3RyaW5nQnVpbGRlcjo6dmlzaXRM
aXRlcmFsKGNvbnN0IFN0cmluZyYgdGV4dCkKK3ZvaWQgRGF0ZVRpbWVTdHJpbmdCdWlsZGVyOjp2
aXNpdExpdGVyYWwoU3RyaW5nJiYgdGV4dCkKIHsKICAgICBBU1NFUlQodGV4dC5sZW5ndGgoKSk7
Ci0gICAgbV9idWlsZGVyLmFwcGVuZCh0ZXh0KTsKKyAgICBtX2J1aWxkZXIuYXBwZW5kKFdURk1v
dmUodGV4dCkpOwogfQogCiBTdHJpbmcgRGF0ZVRpbWVTdHJpbmdCdWlsZGVyOjp0b1N0cmluZygp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAppbmRleCBhYWRhYzk5ZTUwNTlhZGVk
NTQyOWViYTNmZjRlOTUxYmI2NmM0YWY4Li44MDMwZDUzYTI4OGVkOWU0MDllZTBmYzYzZWY0MzAw
MzFmOTcwMGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKQEAgLTE0NSwx
MCArMTQ1LDEwIEBAIHZvaWQgU1ZHVFJlZkVsZW1lbnQ6OnVwZGF0ZVJlZmVyZW5jZWRUZXh0KEVs
ZW1lbnQqIHRhcmdldCkKICAgICBBU1NFUlQocm9vdCk7CiAgICAgU2NyaXB0RGlzYWxsb3dlZFNj
b3BlOjpFdmVudEFsbG93ZWRTY29wZSBhbGxvd2VkU2NvcGUoKnJvb3QpOwogICAgIGlmICghcm9v
dC0+Zmlyc3RDaGlsZCgpKQotICAgICAgICByb290LT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUo
ZG9jdW1lbnQoKSwgdGV4dENvbnRlbnQpKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kQ2hpbGQoVGV4
dDo6Y3JlYXRlKGRvY3VtZW50KCksIFdURk1vdmUodGV4dENvbnRlbnQpKSk7CiAgICAgZWxzZSB7
CiAgICAgICAgIEFTU0VSVChyb290LT5maXJzdENoaWxkKCktPmlzVGV4dE5vZGUoKSk7Ci0gICAg
ICAgIHJvb3QtPmZpcnN0Q2hpbGQoKS0+c2V0VGV4dENvbnRlbnQodGV4dENvbnRlbnQpOworICAg
ICAgICByb290LT5maXJzdENoaWxkKCktPnNldFRleHRDb250ZW50KFdURk1vdmUodGV4dENvbnRl
bnQpKTsKICAgICB9CiB9CiAKQEAgLTE1NywxMiArMTU3LDEwIEBAIHZvaWQgU1ZHVFJlZkVsZW1l
bnQ6OmRldGFjaFRhcmdldCgpCiAgICAgLy8gUmVtb3ZlIGFjdGl2ZSBsaXN0ZW5lcnMgYW5kIGNs
ZWFyIHRoZSB0ZXh0IGNvbnRlbnQuCiAgICAgbV90YXJnZXRMaXN0ZW5lci0+ZGV0YWNoKCk7CiAK
LSAgICBTdHJpbmcgZW1wdHlDb250ZW50OwotCiAgICAgQVNTRVJUKHNoYWRvd1Jvb3QoKSk7CiAg
ICAgUmVmUHRyIGNvbnRhaW5lciA9IHNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpOwogICAgIGlm
IChjb250YWluZXIpCi0gICAgICAgIGNvbnRhaW5lci0+c2V0VGV4dENvbnRlbnQoZW1wdHlDb250
ZW50KTsKKyAgICAgICAgY29udGFpbmVyLT5zZXRUZXh0Q29udGVudChTdHJpbmcgeyB9KTsKIAog
ICAgIGlmICghaXNDb25uZWN0ZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJy
b3JzLmNwcAppbmRleCBlZjRjZGVhYmRlNDlkZWM0MDQyYTZmODMyNTBiNmUyZjc3MjYwMTU1Li43
YTAyYzE4Yjk2Y2I0ZWY4NDBmMWFkMmZmNGVlMjA5NzRiYzJiYTBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
RXJyb3JzLmNwcApAQCAtODEsNyArODEsNyBAQCB2b2lkIFhNTEVycm9yczo6YXBwZW5kRXJyb3JN
ZXNzYWdlKEFTQ0lJTGl0ZXJhbCB0eXBlU3RyaW5nLCBUZXh0UG9zaXRpb24gcG9zaXRpbwogICAg
IG1fZXJyb3JNZXNzYWdlcy5hcHBlbmQodHlwZVN0cmluZywgIiBvbiBsaW5lICIsIHBvc2l0aW9u
Lm1fbGluZS5vbmVCYXNlZEludCgpLCAiIGF0IGNvbHVtbiAiLCBwb3NpdGlvbi5tX2NvbHVtbi5v
bmVCYXNlZEludCgpLCAiOiAiLCBtZXNzYWdlKTsKIH0KIAotc3RhdGljIGlubGluZSBSZWY8RWxl
bWVudD4gY3JlYXRlWEhUTUxQYXJzZXJFcnJvckhlYWRlcihEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlcykKK3N0YXRpYyBpbmxpbmUgUmVmPEVsZW1lbnQ+IGNy
ZWF0ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmcmJiBl
cnJvck1lc3NhZ2VzKQogewogICAgIFJlZjxFbGVtZW50PiByZXBvcnRFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudChRdWFsaWZpZWROYW1lKG51bGxBdG9tKCksICJwYXJzZXJlcnJvciJf
cywgeGh0bWxOYW1lc3BhY2VVUkkpLCB0cnVlKTsKIApAQCAtOTksNyArOTksNyBAQCBzdGF0aWMg
aW5saW5lIFJlZjxFbGVtZW50PiBjcmVhdGVYSFRNTFBhcnNlckVycm9ySGVhZGVyKERvY3VtZW50
JiBkb2N1bWVudCwgY29ucwogICAgIGZpeGVkLT5wYXJzZXJTZXRBdHRyaWJ1dGVzKGZpeGVkQXR0
cmlidXRlcyk7CiAgICAgcmVwb3J0RWxlbWVudC0+cGFyc2VyQXBwZW5kQ2hpbGQoZml4ZWQpOwog
Ci0gICAgZml4ZWQtPnBhcnNlckFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVudCwgZXJy
b3JNZXNzYWdlcykpOworICAgIGZpeGVkLT5wYXJzZXJBcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUo
ZG9jdW1lbnQsIFdURk1vdmUoZXJyb3JNZXNzYWdlcykpKTsKIAogICAgIGgzID0gSFRNTEhlYWRp
bmdFbGVtZW50OjpjcmVhdGUoaDNUYWcsIGRvY3VtZW50KTsKICAgICByZXBvcnRFbGVtZW50LT5w
YXJzZXJBcHBlbmRDaGlsZChoMyk7CkBAIC0xNDIsOCArMTQyLDcgQEAgdm9pZCBYTUxFcnJvcnM6
Omluc2VydEVycm9yTWVzc2FnZUJsb2NrKCkKICAgICAgICAgZG9jdW1lbnRFbGVtZW50ID0gV1RG
TW92ZShib2R5KTsKICAgICB9CiAKLSAgICBTdHJpbmcgZXJyb3JNZXNzYWdlcyA9IG1fZXJyb3JN
ZXNzYWdlcy50b1N0cmluZygpOwotICAgIGF1dG8gcmVwb3J0RWxlbWVudCA9IGNyZWF0ZVhIVE1M
UGFyc2VyRXJyb3JIZWFkZXIobV9kb2N1bWVudCwgZXJyb3JNZXNzYWdlcyk7CisgICAgYXV0byBy
ZXBvcnRFbGVtZW50ID0gY3JlYXRlWEhUTUxQYXJzZXJFcnJvckhlYWRlcihtX2RvY3VtZW50LCBt
X2Vycm9yTWVzc2FnZXMudG9TdHJpbmcoKSk7CiAKICNpZiBFTkFCTEUoWFNMVCkKICAgICBpZiAo
bV9kb2N1bWVudC50cmFuc2Zvcm1Tb3VyY2VEb2N1bWVudCgpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
VHJlZVZpZXdlci5jcHAKaW5kZXggMDJlZTk5MGNlMDdkYTBiZjM5MzA0YWIxZGI3MmFlMDc0ZTFj
MWE1Mi4uYTZhZDExYjc3MjE3ZTc3ODkxMjQ2ZGI5Y2ZhY2I1NWI2YzdhZWU4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxUcmVlVmlld2VyLmNwcApAQCAtNTgsNyArNTgsNyBAQCB2b2lkIFhNTFRyZWVW
aWV3ZXI6OnRyYW5zZm9ybURvY3VtZW50VG9UcmVlVmlldygpCiAgICAgbV9kb2N1bWVudC5mcmFt
ZSgpLT5zY3JpcHQoKS5ldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNvdXJjZUNvZGUo
QXRvbVN0cmluZygicHJlcGFyZVdlYktpdFhNTFZpZXdlcignVGhpcyBYTUwgZmlsZSBkb2VzIG5v
dCBhcHBlYXIgdG8gaGF2ZSBhbnkgc3R5bGUgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIGl0
LiBUaGUgZG9jdW1lbnQgdHJlZSBpcyBzaG93biBiZWxvdy4nKTsiX3MpKSk7CiAKICAgICBTdHJp
bmcgY3NzU3RyaW5nID0gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoWE1MVmlld2Vy
X2Nzcywgc2l6ZW9mKFhNTFZpZXdlcl9jc3MpKTsKLSAgICBhdXRvIHRleHQgPSBtX2RvY3VtZW50
LmNyZWF0ZVRleHROb2RlKGNzc1N0cmluZyk7CisgICAgYXV0byB0ZXh0ID0gbV9kb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZShXVEZNb3ZlKGNzc1N0cmluZykpOwogICAgIG1fZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoU3RyaW5nKCJ4bWwtdmlld2VyLXN0eWxlIl9zKSktPmFwcGVuZENoaWxkKHRleHQp
OwogICAgIG1fZG9jdW1lbnQuc3R5bGVTY29wZSgpLmRpZENoYW5nZUFjdGl2ZVN0eWxlU2hlZXRD
YW5kaWRhdGVzKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nl
c3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKaW5kZXggYmU1
OGQ2Zjc0NDFjZDA4M2IyMzJhNGNkNDVkNDBlMTRmNDhhNWJhMS4uYjQ1YWMxNWM2MjZjYjgzYjg2
MmJlNWJhZGRkNjg0ZGE0OWQ2MTY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hT
TFRQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNw
cApAQCAtMTI5LDcgKzEyOSw3IEBAIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBYU0xUUHJvY2Vz
c29yOjp0cmFuc2Zvcm1Ub0ZyYWdtZW50KE5vZGUmIHNvdXJjZU5vZGUsIERvCiAKICAgICBpZiAo
IXRyYW5zZm9ybVRvU3RyaW5nKHNvdXJjZU5vZGUsIHJlc3VsdE1JTUVUeXBlLCByZXN1bHRTdHJp
bmcsIHJlc3VsdEVuY29kaW5nKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJu
IGNyZWF0ZUZyYWdtZW50Rm9yVHJhbnNmb3JtVG9GcmFnbWVudChvdXRwdXREb2N1bWVudCwgcmVz
dWx0U3RyaW5nLCByZXN1bHRNSU1FVHlwZSk7CisgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50Rm9y
VHJhbnNmb3JtVG9GcmFnbWVudChvdXRwdXREb2N1bWVudCwgV1RGTW92ZShyZXN1bHRTdHJpbmcp
LCBXVEZNb3ZlKHJlc3VsdE1JTUVUeXBlKSk7CiB9CiAKIHZvaWQgWFNMVFByb2Nlc3Nvcjo6c2V0
UGFyYW1ldGVyKGNvbnN0IFN0cmluZyYgLypuYW1lc3BhY2VVUkkqLywgY29uc3QgU3RyaW5nJiBs
b2NhbE5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDFhYjhhMzUyNGE2Y2QwZjkzZmM2NWYx
YmY4MWI1ZDczMjBlYzE2N2QuLjg1NGUyNzZlZThiNTJjMTUzOWJjMGM0NDJiODVkZDk5OGQ2MDBl
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIu
Y3BwCkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6Y3JlYXRlTGVh
ZlRleHROb2RlKCkKIAogICAgIEFTU0VSVChtX2J1ZmZlcmVkVGV4dC5zaXplKCkgPT0gMCk7CiAg
ICAgQVNTRVJUKCFtX2xlYWZUZXh0Tm9kZSk7Ci0gICAgbV9sZWFmVGV4dE5vZGUgPSBUZXh0Ojpj
cmVhdGUobV9jdXJyZW50Tm9kZS0+ZG9jdW1lbnQoKSwgZW1wdHlTdHJpbmcoKSk7CisgICAgbV9s
ZWFmVGV4dE5vZGUgPSBUZXh0OjpjcmVhdGUobV9jdXJyZW50Tm9kZS0+ZG9jdW1lbnQoKSwgU3Ry
aW5nIHsgZW1wdHlTdHJpbmcoKSB9KTsKICAgICBtX2N1cnJlbnROb2RlLT5wYXJzZXJBcHBlbmRD
aGlsZCgqbV9sZWFmVGV4dE5vZGUpOwogfQogCkBAIC0yOTYsNyArMjk2LDcgQEAgYm9vbCBYTUxE
b2N1bWVudFBhcnNlcjo6cGFyc2VEb2N1bWVudEZyYWdtZW50KGNvbnN0IFN0cmluZyYgY2h1bmss
IERvY3VtZW50RnJhZ20KICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFw
cHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aGUteGh0bWwtc3ludGF4Lmh0bWwjeG1sLWZyYWdt
ZW50LXBhcnNpbmctYWxnb3JpdGhtCiAgICAgLy8gRm9yIG5vdyB3ZSBoYXZlIGEgaGFjayBmb3Ig
c2NyaXB0L3N0eWxlIGlubmVySFRNTCBzdXBwb3J0OgogICAgIGlmIChjb250ZXh0RWxlbWVudCAm
JiAoY29udGV4dEVsZW1lbnQtPmhhc0xvY2FsTmFtZShIVE1MTmFtZXM6OnNjcmlwdFRhZy0+bG9j
YWxOYW1lKCkpIHx8IGNvbnRleHRFbGVtZW50LT5oYXNMb2NhbE5hbWUoSFRNTE5hbWVzOjpzdHls
ZVRhZy0+bG9jYWxOYW1lKCkpKSkgewotICAgICAgICBmcmFnbWVudC5wYXJzZXJBcHBlbmRDaGls
ZChmcmFnbWVudC5kb2N1bWVudCgpLmNyZWF0ZVRleHROb2RlKGNodW5rKSk7CisgICAgICAgIGZy
YWdtZW50LnBhcnNlckFwcGVuZENoaWxkKGZyYWdtZW50LmRvY3VtZW50KCkuY3JlYXRlVGV4dE5v
ZGUoU3RyaW5nIHsgY2h1bmsgfSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457895</attachid>
            <date>2022-04-19 08:33:58 -0700</date>
            <delta_ts>2022-04-19 09:22:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239481-20220419083357.patch</filename>
            <type>text/plain</type>
            <size>89588</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQ1YjZkODU5OTk3NmQ4M2EwMjk2ZDkw
YmYzNzc5MTAxZmE3NGVjMGIuLjY3NGY4N2E5NTUwMzAwNWI3NTJmNjMyZjQxNTBkZWQ4YTE2ZGQ5
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDQtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgbW9yZSByLXZhbHVlIHJlZmVyZW5jZXMgZm9yIFRl
eHQgLyBDaGFyYWN0ZXJEYXRhIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzOTQ4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBhIGZ1bmN0aW9uIHRvIEF0b21TdHJpbmcgdG8gcmVsZWFz
ZSBpdHMgU3RyaW5nLiBUaGlzIGlzIGNvbnZlbmllbnQgd2hlbiB5b3UgaGF2ZSBhbiBBdG9tU3Ry
aW5nCisgICAgICAgIGFuZCBuZWVkIGEgU3RyaW5nJiYuCisKKyAgICAgICAgKiB3dGYvdGV4dC9B
dG9tU3RyaW5nLmg6CisKIDIwMjItMDQtMTggIEVsbGlvdHQgV2lsbGlhbXMgIDxlbXdAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtYQ0J1aWxkXSBVc2UgWENCdWlsZCBmb3IgYWxsIGNvbW1hbmQtbGlu
ZSBhbmQgcHJvamVjdCBidWlsZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1MTdmZGIxMTA4OWQ2OGExMmE2MmMy
NDZhNTFjNDQ3MDljOTRiM2NhLi4zNWFiNDlhMWRjYjBmMmFlNWJkMWYzN2IxNGM5MDhlODZhYjZl
OTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYxIEBACisyMDIyLTA0LTE5ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIG1vcmUgci12YWx1ZSByZWZlcmVu
Y2VzIGZvciBUZXh0IC8gQ2hhcmFjdGVyRGF0YSBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk0ODEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgbW9yZSByLXZhbHVlIHJlZmVyZW5jZXMg
Zm9yIFRleHQgLyBDaGFyYWN0ZXJEYXRhIGNsYXNzZXMsIHdoaWNoIGluZmVjdGVkCisgICAgICAg
IGEgbG90IG9mIHRoZSBzdXJyb3VuZGluZyBjb2RlLiBUaGlzIGF2b2lkcyBzb21lIHJlZi1jb3Vu
dGluZyBjaHVybi4KKworICAgICAgICAqIGRvbS9DREFUQVNlY3Rpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0RBVEFTZWN0aW9uOjpDREFUQVNlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
Q0RBVEFTZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RBVEFTZWN0aW9uOjpj
bG9uZU5vZGVJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDREFUQVNlY3Rpb246OnZpcnR1
YWxDcmVhdGUpOgorICAgICAgICAqIGRvbS9DREFUQVNlY3Rpb24uaDoKKyAgICAgICAgKiBkb20v
Q2hhcmFjdGVyRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRGF0YTo6Q2hhcmFj
dGVyRGF0YSk6CisgICAgICAgICogZG9tL0NvbW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29tbWVudDo6Q29tbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDb21tZW50OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tbWVudDo6Y2xvbmVOb2RlSW50ZXJuYWwpOgorICAgICAgICAq
IGRvbS9Db21tZW50Lmg6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6c3RyaW5nUmVwbGFjZUFsbCk6CisgICAgICAgICog
ZG9tL0NvbnRhaW5lck5vZGUuaDoKKyAgICAgICAgKiBkb20vRE9NSW1wbGVtZW50YXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZUhUTUxEb2N1bWVu
dCk6CisgICAgICAgICogZG9tL0RPTUltcGxlbWVudGF0aW9uLmg6CisgICAgICAgICogZG9tL0Rv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjcmVhdGVUZXh0Tm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlQ29tbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlQ0RBVEFTZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpjcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6c2V0VGl0bGUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAq
IGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6Omluc2VydEFkamFj
ZW50VGV4dCk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vSW1hZ2VP
dmVybGF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3ZlcmxheTo6aW5zdGFsbEltYWdl
T3ZlcmxheVN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5Ojp1cGRh
dGVTdWJ0cmVlKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlOjpjb252ZXJ0Tm9kZXNPclN0cmluZ3NJbnRvTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlOjpzZXRUZXh0Q29udGVudCk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKiBk
b20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3Np
bmdJbnN0cnVjdGlvbjo6UHJvY2Vzc2luZ0luc3RydWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nl
c3NpbmdJbnN0cnVjdGlvbjo6Y2xvbmVOb2RlSW50ZXJuYWwpOgorICAgICAgICAqIGRvbS9Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKiBkb20vVGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dDo6Y3JlYXRlRWRp
dGluZ1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dDo6Y2xvbmVOb2RlSW50ZXJuYWwpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dDo6dmlydHVhbENyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0OjpjcmVhdGVXaXRoTGVuZ3RoTGltaXQpOgorICAgICAgICAqIGRvbS9UZXh0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0OjpUZXh0KToKKyAgICAgICAgKiBkb20vbWFjL0ltYWdlQ29u
dHJvbHNNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VDb250cm9sc01hYzo6Y3JlYXRl
SW1hZ2VDb250cm9scyk6CisgICAgICAgICogZWRpdGluZy9DcmVhdGVMaW5rQ29tbWFuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDcmVhdGVMaW5rQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAg
ICogZWRpdGluZy9FZGl0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRhYlNwYW5F
bGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmcuaDoKKyAgICAgICAgKiBlZGl0aW5n
L0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnN0eWxlRm9yU2VsZWN0aW9u
U3RhcnQpOgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjpkb0FwcGx5KToKKyAgICAg
ICAgKiBlZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c2VydFRleHRDb21tYW5kOjpwb3NpdGlvbkluc2lkZVRleHROb2RlKToKKyAgICAgICAgKiBlZGl0
aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjphZGRTcGFjZXNGb3JTbWFydFJlcGxhY2UpOgorICAgICAgICAq
IGVkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnJlcGxhY2UpOgorICAgICAgICAqIGVkaXRp
bmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50RnJvbVRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRGb3JUcmFuc2Zvcm1Ub0ZyYWdtZW50
KToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5oOgorICAgICAgICAqIGh0bWwvQmFzZURhdGVB
bmRUaW1lSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlu
cHV0VHlwZTo6dXBkYXRlSW5uZXJUZXh0VmFsdWUpOgorICAgICAgICAqIGh0bWwvQmFzZURhdGVB
bmRUaW1lSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6YXBwZW5k
RW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmNy
ZWF0ZVRERm9yRmlsZW5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1l
bnRQYXJzZXI6OnBhcnNlQW5kQXBwZW5kT25lTGluZSk6CisgICAgICAgICogaHRtbC9IVE1MQW5j
aG9yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6c2V0
VGV4dCk6CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldElu
bmVyVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6c2V0T3V0ZXJUZXh0KToK
KyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWV0ZXJF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZXRlckVsZW1lbnQ6OmRpZEFkZFVz
ZXJBZ2VudFNoYWRvd1Jvb3QpOgorICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6OmNyZWF0ZUZvckxlZ2FjeUZh
Y3RvcnlGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6c2V0
VGV4dCk6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE91dHB1dEVs
ZW1lbnQ6OnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPdXRwdXRFbGVtZW50Ojpz
ZXREZWZhdWx0VmFsdWUpOgorICAgICAgICAqIGh0bWwvSFRNTE91dHB1dEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxTY3JpcHRFbGVtZW50OjpzZXRUZXh0KToKKyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVt
ZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldFZhbHVlQ29tbW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldERlZmF1bHRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojp1cGRhdGVQbGFjZWhvbGRlclRleHQpOgor
ICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQ6OnNldElubmVyVGV4dFZhbHVlKToKKyAgICAgICAgKiBodG1sL0hU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVGl0bGVFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUaXRsZUVsZW1lbnQ6OnNldFRleHQpOgor
ICAgICAgICAqIGh0bWwvSFRNTFRpdGxlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvVGV4dEZp
ZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6
dXBkYXRlUGxhY2Vob2xkZXJUZXh0KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9BdG9tSFRNTFRv
a2VuLmg6CisgICAgICAgIChXZWJDb3JlOjpBdG9tSFRNTFRva2VuOjpjb21tZW50KToKKyAgICAg
ICAgKiBodG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0Q29tbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0Q29tbWVudE9uRG9jdW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydENvbW1lbnRPbkhUTUxI
dG1sRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5z
ZXJ0VGV4dE5vZGUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0RhdGVUaW1lRWRpdEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVFZGl0QnVpbGRlcjo6dmlzaXRMaXRlcmFs
KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRlVGltZUZpZWxkRWxlbWVudDo6dXBkYXRlVmlzaWJsZVZhbHVlKToK
KyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0VHJhY2tDdWU6OnJlYnVpbGREaXNwbGF5VHJlZSk6CisgICAgICAgICogaHRtbC90cmFj
ay9WVFRDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VlRUQ3VlOjpnZXREaXNwbGF5VHJlZSk6
CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViVlRUVHJlZUJ1aWxkZXI6OmJ1aWxkRnJvbVN0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJWVFRUcmVlQnVpbGRlcjo6Y29uc3RydWN0VHJlZUZyb21Ub2tlbik6CisgICAgICAgICog
cGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2N1bWVudEZyYWdt
ZW50RnJvbURyYWdEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0RhdGVUaW1lRm9ybWF0
Lmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEYXRlVGltZVN0cmluZ0J1aWxkZXI6OnZpc2l0TGl0ZXJhbCk6CisgICAgICAg
ICogc3ZnL1NWR1RSZWZFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RSZWZFbGVt
ZW50Ojp1cGRhdGVSZWZlcmVuY2VkVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUUmVmRWxl
bWVudDo6ZGV0YWNoVGFyZ2V0KToKKyAgICAgICAgKiB4bWwvWE1MRXJyb3JzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6WE1MRXJyb3JzOjppbnNlcnRFcnJvck1lc3NhZ2VCbG9jayk6CisgICAgICAgICogeG1s
L1hNTFRyZWVWaWV3ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MVHJlZVZpZXdlcjo6dHJh
bnNmb3JtRG9jdW1lbnRUb1RyZWVWaWV3KToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3Nvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xUUHJvY2Vzc29yOjp0cmFuc2Zvcm1Ub0ZyYWdtZW50
KToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpjcmVhdGVMZWFmVGV4dE5vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlRG9jdW1lbnRGcmFnbWVudCk6CisK
IDIwMjItMDQtMTYgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHU3RyZWFtZXJdW1dlYlJUQ10gTWlub3IgY2xlYW51cCBpbiBJbmNvbWluZ1NvdXJj
ZUdTdHJlYW1lcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaAppbmRleCBiZjRiZTRkOTljZDdjNGRl
NGVhZDA5YjY0NzlhZjE5ZWFmNTIxY2RjLi4wYWRmNTIyM2JiNjAyOWMzZGU5ODljNjgzMTc0MDE2
NmYwNmM3MDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaApAQCAtOTMsNiArOTMsNyBAQCBw
dWJsaWM6CiAKICAgICBvcGVyYXRvciBjb25zdCBTdHJpbmcmKCkgY29uc3QgeyByZXR1cm4gbV9z
dHJpbmc7IH0KICAgICBjb25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
aW5nOyB9OworICAgIFN0cmluZyByZWxlYXNlU3RyaW5nKCkgeyByZXR1cm4gV1RGTW92ZShtX3N0
cmluZyk7IH0KIAogICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgdGhpcyBpc24ndCBhIFN5
bWJvbEltcGwgcmF0aGVyIHRoYW4gYW4gQXRvbVN0cmluZ0ltcGw/CiAgICAgQXRvbVN0cmluZ0lt
cGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBdG9tU3RyaW5nSW1wbCo+KG1f
c3RyaW5nLmltcGwoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DREFUQVNl
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5jcHAKaW5kZXggNzU0
ZjQ4Mjg4ZmUxOTZhM2QyODJhMjk2ZDg3OGQyMzM0ZDM5Nzg0Yi4uMjAyZGQ0NzBmMjBkNzYyN2Y4
ZTRiNTI4OTIyYWMyZTAxYjg2NmI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NE
QVRBU2VjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5jcHAK
QEAgLTI5LDE0ICsyOSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChDREFUQVNlY3Rpb24pOwogCi1pbmxpbmUgQ0RBVEFTZWN0aW9uOjpDREFU
QVNlY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGRhdGEpCi0gICAgOiBU
ZXh0KGRvY3VtZW50LCBkYXRhLCBDcmVhdGVUZXh0KQoraW5saW5lIENEQVRBU2VjdGlvbjo6Q0RB
VEFTZWN0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5nJiYgZGF0YSkKKyAgICA6IFRleHQo
ZG9jdW1lbnQsIFdURk1vdmUoZGF0YSksIENyZWF0ZVRleHQpCiB7CiB9CiAKLVJlZjxDREFUQVNl
Y3Rpb24+IENEQVRBU2VjdGlvbjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3Ry
aW5nJiBkYXRhKQorUmVmPENEQVRBU2VjdGlvbj4gQ0RBVEFTZWN0aW9uOjpjcmVhdGUoRG9jdW1l
bnQmIGRvY3VtZW50LCBTdHJpbmcmJiBkYXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IENEQVRBU2VjdGlvbihkb2N1bWVudCwgZGF0YSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IENEQVRBU2VjdGlvbihkb2N1bWVudCwgV1RGTW92ZShkYXRhKSkpOwogfQogCiBTdHJpbmcgQ0RB
VEFTZWN0aW9uOjpub2RlTmFtZSgpIGNvbnN0CkBAIC01MSw3ICs1MSw3IEBAIE5vZGU6Ok5vZGVU
eXBlIENEQVRBU2VjdGlvbjo6bm9kZVR5cGUoKSBjb25zdAogCiBSZWY8Tm9kZT4gQ0RBVEFTZWN0
aW9uOjpjbG9uZU5vZGVJbnRlcm5hbChEb2N1bWVudCYgdGFyZ2V0RG9jdW1lbnQsIENsb25pbmdP
cGVyYXRpb24pCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZSh0YXJnZXREb2N1bWVudCwgZGF0YSgpKTsK
KyAgICByZXR1cm4gY3JlYXRlKHRhcmdldERvY3VtZW50LCBTdHJpbmcgeyBkYXRhKCkgfSk7CiB9
CiAKIGJvb2wgQ0RBVEFTZWN0aW9uOjpjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdApA
QCAtNTksOSArNTksOSBAQCBib29sIENEQVRBU2VjdGlvbjo6Y2hpbGRUeXBlQWxsb3dlZChOb2Rl
VHlwZSkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlZjxUZXh0PiBDREFUQVNlY3Rp
b246OnZpcnR1YWxDcmVhdGUoY29uc3QgU3RyaW5nJiBkYXRhKQorUmVmPFRleHQ+IENEQVRBU2Vj
dGlvbjo6dmlydHVhbENyZWF0ZShTdHJpbmcmJiBkYXRhKQogewotICAgIHJldHVybiBjcmVhdGUo
ZG9jdW1lbnQoKSwgZGF0YSk7CisgICAgcmV0dXJuIGNyZWF0ZShkb2N1bWVudCgpLCBXVEZNb3Zl
KGRhdGEpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2Vj
dGlvbi5oCmluZGV4IGQ5NDA1Y2FlMzY5YWQ3OGZmYzczYTkzODNiZjdiMWM2MzlhZDMyNTQuLmE1
OTY4YzQxZDJjODk3NWRkNWNlODUwNzE4MTkzNmM0ZTE4NzZhMzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ0RB
VEFTZWN0aW9uLmgKQEAgLTI5LDE2ICsyOSwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBDREFUQVNlY3Rpb24gZmluYWwgOiBwdWJsaWMgVGV4dCB7CiAgICAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRChDREFUQVNlY3Rpb24pOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q0RBVEFTZWN0
aW9uPiBjcmVhdGUoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgUmVmPENE
QVRBU2VjdGlvbj4gY3JlYXRlKERvY3VtZW50JiwgU3RyaW5nJiYpOwogCiBwcml2YXRlOgotICAg
IENEQVRBU2VjdGlvbihEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYpOworICAgIENEQVRBU2VjdGlv
bihEb2N1bWVudCYsIFN0cmluZyYmKTsKIAogICAgIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUmVm
PE5vZGU+IGNsb25lTm9kZUludGVybmFsKERvY3VtZW50JiwgQ2xvbmluZ09wZXJhdGlvbikgb3Zl
cnJpZGU7CiAgICAgYm9vbCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdCBvdmVycmlk
ZTsKLSAgICBSZWY8VGV4dD4gdmlydHVhbENyZWF0ZShjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsK
KyAgICBSZWY8VGV4dD4gdmlydHVhbENyZWF0ZShTdHJpbmcmJikgb3ZlcnJpZGU7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hh
cmFjdGVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaAppbmRleCAw
MzFhZjQ5ZTJjYWVlNGRkNzMzOGRiZTMwZDFhNGQzMTMwOGVmODk2Li41M2E0ZWI5NzNiMjFjNzNh
ODk5NWNmMzM5NGU2NmY3N2QzZTRlNzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q2hhcmFjdGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgK
QEAgLTQ1LDkgKzQ1LDkgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHBhcnNlckFwcGVuZERhdGEo
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoTGlt
aXQpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgQ2hhcmFjdGVyRGF0YShEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IFN0cmluZyYgdGV4dCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlID0gQ3JlYXRlQ2hhcmFj
dGVyRGF0YSkKKyAgICBDaGFyYWN0ZXJEYXRhKERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5nJiYg
dGV4dCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlID0gQ3JlYXRlQ2hhcmFjdGVyRGF0YSkKICAgICAg
ICAgOiBOb2RlKGRvY3VtZW50LCB0eXBlKQotICAgICAgICAsIG1fZGF0YSghdGV4dC5pc051bGwo
KSA/IHRleHQgOiBlbXB0eVN0cmluZygpKQorICAgICAgICAsIG1fZGF0YSghdGV4dC5pc051bGwo
KSA/IFdURk1vdmUodGV4dCkgOiBlbXB0eVN0cmluZygpKQogICAgIHsKICAgICAgICAgQVNTRVJU
KHR5cGUgPT0gQ3JlYXRlQ2hhcmFjdGVyRGF0YSB8fCB0eXBlID09IENyZWF0ZVRleHQgfHwgdHlw
ZSA9PSBDcmVhdGVFZGl0aW5nVGV4dCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0NvbW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQuY3BwCmluZGV4
IDhhM2UzMmY3NzM5MzQ5MWYyNTMyMjMwN2RkMTY0OGZlYzE2ZWJmOWIuLmFmODg3NmIxOTJmNTk2
YjY1NDgxNjcwMmQyMTIxYTg3ZGQ2ZTg0YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db21tZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tbWVudC5jcHAKQEAgLTI5
LDE0ICsyOSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FU
RURfSU1QTChDb21tZW50KTsKIAotaW5saW5lIENvbW1lbnQ6OkNvbW1lbnQoRG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBTdHJpbmcmIHRleHQpCi0gICAgOiBDaGFyYWN0ZXJEYXRhKGRvY3VtZW50
LCB0ZXh0KQoraW5saW5lIENvbW1lbnQ6OkNvbW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJp
bmcmJiB0ZXh0KQorICAgIDogQ2hhcmFjdGVyRGF0YShkb2N1bWVudCwgV1RGTW92ZSh0ZXh0KSkK
IHsKIH0KIAotUmVmPENvbW1lbnQ+IENvbW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IFN0cmluZyYgdGV4dCkKK1JlZjxDb21tZW50PiBDb21tZW50OjpjcmVhdGUoRG9jdW1l
bnQmIGRvY3VtZW50LCBTdHJpbmcmJiB0ZXh0KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IENvbW1lbnQoZG9jdW1lbnQsIHRleHQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb21t
ZW50KGRvY3VtZW50LCBXVEZNb3ZlKHRleHQpKSk7CiB9CiAKIFN0cmluZyBDb21tZW50Ojpub2Rl
TmFtZSgpIGNvbnN0CkBAIC01MSw3ICs1MSw3IEBAIE5vZGU6Ok5vZGVUeXBlIENvbW1lbnQ6Om5v
ZGVUeXBlKCkgY29uc3QKIAogUmVmPE5vZGU+IENvbW1lbnQ6OmNsb25lTm9kZUludGVybmFsKERv
Y3VtZW50JiB0YXJnZXREb2N1bWVudCwgQ2xvbmluZ09wZXJhdGlvbikKIHsKLSAgICByZXR1cm4g
Y3JlYXRlKHRhcmdldERvY3VtZW50LCBkYXRhKCkpOworICAgIHJldHVybiBjcmVhdGUodGFyZ2V0
RG9jdW1lbnQsIFN0cmluZyB7IGRhdGEoKSB9KTsKIH0KIAogYm9vbCBDb21tZW50OjpjaGlsZFR5
cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0NvbW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21tZW50LmgKaW5kZXggZDRjMWU5NWQ1
NGE2OTI1MzEwZDYwODkwNzI5NTYwZmQwZGFiYzI1NS4uMjc3ZDJjMjYzYmVmZTYxY2VjOWJiMDU2
MTY5NzIwNTUyYjZkNTdlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tbWVudC5oCkBAIC0yOSwxMCArMjksMTAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29tbWVudCBmaW5hbCA6IHB1YmxpYyBDaGFyYWN0
ZXJEYXRhIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKENvbW1lbnQpOwogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8Q29tbWVudD4gY3JlYXRlKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJik7
CisgICAgc3RhdGljIFJlZjxDb21tZW50PiBjcmVhdGUoRG9jdW1lbnQmLCBTdHJpbmcmJik7CiAK
IHByaXZhdGU6Ci0gICAgQ29tbWVudChEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYpOworICAgIENv
bW1lbnQoRG9jdW1lbnQmLCBTdHJpbmcmJik7CiAKICAgICBTdHJpbmcgbm9kZU5hbWUoKSBjb25z
dCBvdmVycmlkZTsKICAgICBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmluZGV4IDY0MWE3ODc3ZGMwNTc5OTNhYWJjZDFi
NDcxNWRlYzg4OGIzYTJmM2MuLmQ1NDA0MWI1MDkxZDZlZTcwYTU3MmRkYTZjNGNhNzJiOTFlNWUy
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTcyNCw5ICs3MjQsOSBA
QCB2b2lkIENvbnRhaW5lck5vZGU6OnJlcGxhY2VBbGwoTm9kZSogbm9kZSkKIH0KIAogLy8gaHR0
cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNzdHJpbmctcmVwbGFjZS1hbGwKLXZvaWQgQ29udGFp
bmVyTm9kZTo6c3RyaW5nUmVwbGFjZUFsbChjb25zdCBTdHJpbmcmIHN0cmluZykKK3ZvaWQgQ29u
dGFpbmVyTm9kZTo6c3RyaW5nUmVwbGFjZUFsbChTdHJpbmcmJiBzdHJpbmcpCiB7Ci0gICAgcmVw
bGFjZUFsbChzdHJpbmcuaXNFbXB0eSgpID8gbnVsbHB0ciA6IGRvY3VtZW50KCkuY3JlYXRlVGV4
dE5vZGUoc3RyaW5nKS5wdHIoKSk7CisgICAgcmVwbGFjZUFsbChzdHJpbmcuaXNFbXB0eSgpID8g
bnVsbHB0ciA6IGRvY3VtZW50KCkuY3JlYXRlVGV4dE5vZGUoV1RGTW92ZShzdHJpbmcpKS5wdHIo
KSk7CiB9CiAKIGlubGluZSB2b2lkIENvbnRhaW5lck5vZGU6OnJlYnVpbGRTVkdFeHRlbnNpb25z
RWxlbWVudHNJZk5lY2Vzc2FyeSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAppbmRleCA4
MDgzZDQyNmYwMWRmZTVjNTQ4YjMxZGJkMTZjZWZhYTRlOTA1NGIwLi4xMTk0ZTM2YWRlZWFlYWQx
N2I2OGE0MWYxZDZlMzI2NjA4MzM5MzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgK
QEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlcGxhY2VD
aGlsZChOb2RlJiBuZXdDaGlsZCwgTm9kZSYgb2xkQ2hpbGQpOwogICAgIFdFQkNPUkVfRVhQT1JU
IEV4Y2VwdGlvbk9yPHZvaWQ+IHJlbW92ZUNoaWxkKE5vZGUmIGNoaWxkKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBhcHBlbmRDaGlsZChOb2RlJiBuZXdDaGlsZCk7Ci0g
ICAgdm9pZCBzdHJpbmdSZXBsYWNlQWxsKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc3RyaW5n
UmVwbGFjZUFsbChTdHJpbmcmJik7CiAgICAgdm9pZCByZXBsYWNlQWxsKE5vZGUqKTsKIAogICAg
IENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8Q29udGFp
bmVyTm9kZT4oTm9kZTo6cm9vdE5vZGUoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVt
ZW50YXRpb24uY3BwCmluZGV4IDU4NDM1YmMzZmNhZDNjZGE3ODk3MGEyMTFlNzYyYmZjY2YwMTJm
NzUuLjY4ZGRkNmM5MzM2NWU5YWM5YmZkZTU3MjkyNmY1ZTg2ZTNlOWFkODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcApAQCAtMTIzLDE0ICsxMjMsMTQgQEAgUmVm
PENTU1N0eWxlU2hlZXQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVDU1NTdHlsZVNoZWV0KGNv
bnN0IFN0cmluZyYsIGNvbnN0IFMKICAgICByZXR1cm4gc2hlZXQ7CiB9CiAKLVJlZjxIVE1MRG9j
dW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVIVE1MRG9jdW1lbnQoY29uc3QgU3RyaW5n
JiB0aXRsZSkKK1JlZjxIVE1MRG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVIVE1M
RG9jdW1lbnQoU3RyaW5nJiYgdGl0bGUpCiB7CiAgICAgYXV0byBkb2N1bWVudCA9IEhUTUxEb2N1
bWVudDo6Y3JlYXRlKG51bGxwdHIsIG1fZG9jdW1lbnQuc2V0dGluZ3MoKSwgVVJMKCksIHsgfSk7
CiAgICAgZG9jdW1lbnQtPm9wZW4oKTsKICAgICBkb2N1bWVudC0+d3JpdGUobnVsbHB0ciwgeyAi
PCFkb2N0eXBlIGh0bWw+PGh0bWw+PGhlYWQ+PC9oZWFkPjxib2R5PjwvYm9keT48L2h0bWw+Il9z
IH0pOwogICAgIGlmICghdGl0bGUuaXNOdWxsKCkpIHsKICAgICAgICAgYXV0byB0aXRsZUVsZW1l
bnQgPSBIVE1MVGl0bGVFbGVtZW50OjpjcmVhdGUodGl0bGVUYWcsIGRvY3VtZW50KTsKLSAgICAg
ICAgdGl0bGVFbGVtZW50LT5hcHBlbmRDaGlsZChkb2N1bWVudC0+Y3JlYXRlVGV4dE5vZGUodGl0
bGUpKTsKKyAgICAgICAgdGl0bGVFbGVtZW50LT5hcHBlbmRDaGlsZChkb2N1bWVudC0+Y3JlYXRl
VGV4dE5vZGUoV1RGTW92ZSh0aXRsZSkpKTsKICAgICAgICAgQVNTRVJUKGRvY3VtZW50LT5oZWFk
KCkpOwogICAgICAgICBkb2N1bWVudC0+aGVhZCgpLT5hcHBlbmRDaGlsZCh0aXRsZUVsZW1lbnQp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmgKaW5kZXggZTg5ZTJm
ZTYzNWY5YTczZmIxYTJiMGY2NDFjMDk5NDgzZDU3MzA2Ni4uMjcyYTY0ZWNhNmJkMTFhYTZmMzU2
MDhkZmNkYjZkMTkyOWEyOGY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUlt
cGxlbWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9u
LmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0
aW9uT3I8UmVmPERvY3VtZW50VHlwZT4+IGNyZWF0ZURvY3VtZW50VHlwZShjb25zdCBTdHJpbmcm
IHF1YWxpZmllZE5hbWUsIGNvbnN0IFN0cmluZyYgcHVibGljSWQsIGNvbnN0IFN0cmluZyYgc3lz
dGVtSWQpOwogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFJlZjxYTUxEb2N1bWVudD4+
IGNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcm
IHF1YWxpZmllZE5hbWUsIERvY3VtZW50VHlwZSopOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxI
VE1MRG9jdW1lbnQ+IGNyZWF0ZUhUTUxEb2N1bWVudChjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZWY8SFRNTERvY3VtZW50PiBjcmVhdGVIVE1MRG9jdW1lbnQoU3Ry
aW5nJiYgdGl0bGUpOwogICAgIHN0YXRpYyBib29sIGhhc0ZlYXR1cmUoKSB7IHJldHVybiB0cnVl
OyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxDU1NTdHlsZVNoZWV0PiBjcmVhdGVD
U1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgbWVkaWEpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA1NGRjNDU5ZjNiNTJlMjUwMjk4NjczNjAwMDJl
ZDllYzQ2ZTAyYWI4Li5hMjdiNDMxNGM0MDA1YjMwYThkMjUyZTdhMmVjZjY1M2QzNTc3Mjc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTEwNjksMTcgKzEwNjksMTcgQEAgUmVmPERvY3Vt
ZW50RnJhZ21lbnQ+IERvY3VtZW50OjpjcmVhdGVEb2N1bWVudEZyYWdtZW50KCkKICAgICByZXR1
cm4gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOwogfQogCi1SZWY8VGV4dD4g
RG9jdW1lbnQ6OmNyZWF0ZVRleHROb2RlKGNvbnN0IFN0cmluZyYgZGF0YSkKK1JlZjxUZXh0PiBE
b2N1bWVudDo6Y3JlYXRlVGV4dE5vZGUoU3RyaW5nJiYgZGF0YSkKIHsKLSAgICByZXR1cm4gVGV4
dDo6Y3JlYXRlKCp0aGlzLCBkYXRhKTsKKyAgICByZXR1cm4gVGV4dDo6Y3JlYXRlKCp0aGlzLCBX
VEZNb3ZlKGRhdGEpKTsKIH0KIAotUmVmPENvbW1lbnQ+IERvY3VtZW50OjpjcmVhdGVDb21tZW50
KGNvbnN0IFN0cmluZyYgZGF0YSkKK1JlZjxDb21tZW50PiBEb2N1bWVudDo6Y3JlYXRlQ29tbWVu
dChTdHJpbmcmJiBkYXRhKQogewotICAgIHJldHVybiBDb21tZW50OjpjcmVhdGUoKnRoaXMsIGRh
dGEpOworICAgIHJldHVybiBDb21tZW50OjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoZGF0YSkpOwog
fQogCi1FeGNlcHRpb25PcjxSZWY8Q0RBVEFTZWN0aW9uPj4gRG9jdW1lbnQ6OmNyZWF0ZUNEQVRB
U2VjdGlvbihjb25zdCBTdHJpbmcmIGRhdGEpCitFeGNlcHRpb25PcjxSZWY8Q0RBVEFTZWN0aW9u
Pj4gRG9jdW1lbnQ6OmNyZWF0ZUNEQVRBU2VjdGlvbihTdHJpbmcmJiBkYXRhKQogewogICAgIGlm
IChpc0hUTUxEb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9y
dGVkRXJyb3IgfTsKQEAgLTEwODcsMTAgKzEwODcsMTAgQEAgRXhjZXB0aW9uT3I8UmVmPENEQVRB
U2VjdGlvbj4+IERvY3VtZW50OjpjcmVhdGVDREFUQVNlY3Rpb24oY29uc3QgU3RyaW5nJiBkYXRh
KQogICAgIGlmIChkYXRhLmNvbnRhaW5zKCJdXT4iKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IEludmFsaWRDaGFyYWN0ZXJFcnJvciB9OwogCi0gICAgcmV0dXJuIENEQVRBU2VjdGlvbjo6
Y3JlYXRlKCp0aGlzLCBkYXRhKTsKKyAgICByZXR1cm4gQ0RBVEFTZWN0aW9uOjpjcmVhdGUoKnRo
aXMsIFdURk1vdmUoZGF0YSkpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8UHJvY2Vzc2luZ0luc3Ry
dWN0aW9uPj4gRG9jdW1lbnQ6OmNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihjb25zdCBTdHJp
bmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBkYXRhKQorRXhjZXB0aW9uT3I8UmVmPFByb2Nlc3Np
bmdJbnN0cnVjdGlvbj4+IERvY3VtZW50OjpjcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oU3Ry
aW5nJiYgdGFyZ2V0LCBTdHJpbmcmJiBkYXRhKQogewogICAgIGlmICghaXNWYWxpZE5hbWUodGFy
Z2V0KSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRDaGFyYWN0ZXJFcnJvciB9
OwpAQCAtMTA5OCwxMiArMTA5OCwxMiBAQCBFeGNlcHRpb25PcjxSZWY8UHJvY2Vzc2luZ0luc3Ry
dWN0aW9uPj4gRG9jdW1lbnQ6OmNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihjbwogICAgIGlm
IChkYXRhLmNvbnRhaW5zKCI/PiIpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxp
ZENoYXJhY3RlckVycm9yIH07CiAKLSAgICByZXR1cm4gUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpj
cmVhdGUoKnRoaXMsIHRhcmdldCwgZGF0YSk7CisgICAgcmV0dXJuIFByb2Nlc3NpbmdJbnN0cnVj
dGlvbjo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKHRhcmdldCksIFdURk1vdmUoZGF0YSkpOwogfQog
Ci1SZWY8VGV4dD4gRG9jdW1lbnQ6OmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZShjb25zdCBTdHJpbmcm
IHRleHQpCitSZWY8VGV4dD4gRG9jdW1lbnQ6OmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZShTdHJpbmcm
JiB0ZXh0KQogewotICAgIHJldHVybiBUZXh0OjpjcmVhdGVFZGl0aW5nVGV4dCgqdGhpcywgdGV4
dCk7CisgICAgcmV0dXJuIFRleHQ6OmNyZWF0ZUVkaXRpbmdUZXh0KCp0aGlzLCBXVEZNb3ZlKHRl
eHQpKTsKIH0KIAogUmVmPENTU1N0eWxlRGVjbGFyYXRpb24+IERvY3VtZW50OjpjcmVhdGVDU1NT
dHlsZURlY2xhcmF0aW9uKCkKQEAgLTE3MzEsNyArMTczMSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnVw
ZGF0ZVRpdGxlRnJvbVRpdGxlRWxlbWVudCgpCiAgICAgfQogfQogCi12b2lkIERvY3VtZW50Ojpz
ZXRUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQordm9pZCBEb2N1bWVudDo6c2V0VGl0bGUoU3Ry
aW5nJiYgdGl0bGUpCiB7CiAgICAgUmVmUHRyIGVsZW1lbnQgPSBkb2N1bWVudEVsZW1lbnQoKTsK
ICAgICBpZiAoaXM8U1ZHU1ZHRWxlbWVudD4oZWxlbWVudCkpIHsKQEAgLTE3NDEsNyArMTc0MSw3
IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAgICAg
IH0KICAgICAgICAgLy8gaW5zZXJ0QmVmb3JlIGFib3ZlIG1heSBoYXZlIHJhbiBzY3JpcHRzIHdo
aWNoIHJlbW92ZWQgbV90aXRsZUVsZW1lbnQuCiAgICAgICAgIGlmIChtX3RpdGxlRWxlbWVudCkK
LSAgICAgICAgICAgIG1fdGl0bGVFbGVtZW50LT5zZXRUZXh0Q29udGVudCh0aXRsZSk7CisgICAg
ICAgICAgICBtX3RpdGxlRWxlbWVudC0+c2V0VGV4dENvbnRlbnQoV1RGTW92ZSh0aXRsZSkpOwog
ICAgIH0gZWxzZSBpZiAoaXM8SFRNTEVsZW1lbnQ+KGVsZW1lbnQpKSB7CiAgICAgICAgIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBvbGRUaXRsZTsKICAgICAgICAgaWYgKCFtX3RpdGxlRWxlbWVudCkg
ewpAQCAtMTc1Nyw3ICsxNzU3LDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0VGl0bGUoY29uc3QgU3Ry
aW5nJiB0aXRsZSkKICAgICAgICAgaWYgKCFtX3RpdGxlRWxlbWVudCkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAKLSAgICAgICAgbV90aXRsZUVsZW1lbnQtPnNldFRleHRDb250ZW50KHRpdGxl
KTsKKyAgICAgICAgbV90aXRsZUVsZW1lbnQtPnNldFRleHRDb250ZW50KFN0cmluZyB7IHRpdGxl
IH0pOwogICAgICAgICBhdXRvKiB0ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlciA9IHRleHRNYW5p
cHVsYXRpb25Db250cm9sbGVySWZFeGlzdHMoKTsKICAgICAgICAgaWYgKFVOTElLRUxZKHRleHRN
YW5pcHVsYXRpb25Db250cm9sbGVyKSkgewogICAgICAgICAgICAgaWYgKCFvbGRUaXRsZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKaW5kZXggOTUxZGFlMmIwZDU5NmRlZjU2MzdhZTE0Njk1YmMyMjA2MDkz
ZmFjZi4uMTRmYmE1NmU2NjZkNzhkNzM4OTU0MGE3NzAyMTU0Y2RjNzk3NGNmNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKQEAgLTQzNSwxMCArNDM1LDEwIEBAIHB1YmxpYzoKICAgICAKICAgICBXRUJD
T1JFX0VYUE9SVCBFeGNlcHRpb25PcjxSZWY8RWxlbWVudD4+IGNyZWF0ZUVsZW1lbnRGb3JCaW5k
aW5ncyhjb25zdCBBdG9tU3RyaW5nJiB0YWdOYW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCBSZWY8
RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwotICAgIFdFQkNPUkVf
RVhQT1JUIFJlZjxUZXh0PiBjcmVhdGVUZXh0Tm9kZShjb25zdCBTdHJpbmcmIGRhdGEpOwotICAg
IFdFQkNPUkVfRVhQT1JUIFJlZjxDb21tZW50PiBjcmVhdGVDb21tZW50KGNvbnN0IFN0cmluZyYg
ZGF0YSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVmPENEQVRBU2VjdGlvbj4+
IGNyZWF0ZUNEQVRBU2VjdGlvbihjb25zdCBTdHJpbmcmIGRhdGEpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIEV4Y2VwdGlvbk9yPFJlZjxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24+PiBjcmVhdGVQcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24oY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgZGF0YSk7
CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFRleHQ+IGNyZWF0ZVRleHROb2RlKFN0cmluZyYmIGRh
dGEpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb21tZW50PiBjcmVhdGVDb21tZW50KFN0cmlu
ZyYmIGRhdGEpOworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFJlZjxDREFUQVNlY3Rp
b24+PiBjcmVhdGVDREFUQVNlY3Rpb24oU3RyaW5nJiYgZGF0YSk7CisgICAgV0VCQ09SRV9FWFBP
UlQgRXhjZXB0aW9uT3I8UmVmPFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4+IGNyZWF0ZVByb2Nlc3Np
bmdJbnN0cnVjdGlvbihTdHJpbmcmJiB0YXJnZXQsIFN0cmluZyYmIGRhdGEpOwogICAgIFdFQkNP
UkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFJlZjxBdHRyPj4gY3JlYXRlQXR0cmlidXRlKGNvbnN0IEF0
b21TdHJpbmcmIG5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFJlZjxBdHRy
Pj4gY3JlYXRlQXR0cmlidXRlTlMoY29uc3QgQXRvbVN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25z
dCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsIGJvb2wgc2hvdWxkSWdub3JlTmFtZXNwYWNlQ2hlY2tz
ID0gZmFsc2UpOwogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFJlZjxOb2RlPj4gaW1w
b3J0Tm9kZShOb2RlJiBub2RlVG9JbXBvcnQsIGJvb2wgZGVlcCk7CkBAIC02MTIsNyArNjEyLDcg
QEAgcHVibGljOgogCiAgICAgLy8gU3BlY2lhbCBzdXBwb3J0IGZvciBlZGl0aW5nCiAgICAgV0VC
Q09SRV9FWFBPUlQgUmVmPENTU1N0eWxlRGVjbGFyYXRpb24+IGNyZWF0ZUNTU1N0eWxlRGVjbGFy
YXRpb24oKTsKLSAgICBSZWY8VGV4dD4gY3JlYXRlRWRpdGluZ1RleHROb2RlKGNvbnN0IFN0cmlu
ZyYpOworICAgIFJlZjxUZXh0PiBjcmVhdGVFZGl0aW5nVGV4dE5vZGUoU3RyaW5nJiYpOwogCiAg
ICAgZW51bSBjbGFzcyBSZXNvbHZlU3R5bGVUeXBlIHsgTm9ybWFsLCBSZWJ1aWxkIH07CiAgICAg
dm9pZCByZXNvbHZlU3R5bGUoUmVzb2x2ZVN0eWxlVHlwZSA9IFJlc29sdmVTdHlsZVR5cGU6Ok5v
cm1hbCk7CkBAIC05NjgsNyArOTY4LDcgQEAgcHVibGljOgogCiAgICAgLy8gVXNlZCBieSBET00g
YmluZGluZ3M7IG5vIGRpcmVjdGlvbiBrbm93bi4KICAgICBjb25zdCBTdHJpbmcmIHRpdGxlKCkg
Y29uc3QgeyByZXR1cm4gbV90aXRsZS5zdHJpbmc7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldFRpdGxlKGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGl0
bGUoU3RyaW5nJiYpOwogICAgIGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlV2l0aERp
cmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGl0bGU7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JU
IGNvbnN0IEF0b21TdHJpbmcmIGRpcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4
IGI3NTYxM2MyOTYzYzg3YjI1ZjU5NTI3YzFiYzJiMzg0NzlhYTM3NWMuLjBjMzk2NTkwZWIwZDAw
YzQ1OGY1NmY2NWNlYjhkZTAwYmYwZmJiMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTQ2
NTMsOSArNDY1Myw5IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEVsZW1lbnQ6Omluc2VydEFkamFjZW50
SFRNTChjb25zdCBTdHJpbmcmIHdoZXJlLCBjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIGluc2Vy
dEFkamFjZW50SFRNTCh3aGVyZSwgbWFya3VwLCBudWxscHRyKTsKIH0KIAotRXhjZXB0aW9uT3I8
dm9pZD4gRWxlbWVudDo6aW5zZXJ0QWRqYWNlbnRUZXh0KGNvbnN0IFN0cmluZyYgd2hlcmUsIGNv
bnN0IFN0cmluZyYgdGV4dCkKK0V4Y2VwdGlvbk9yPHZvaWQ+IEVsZW1lbnQ6Omluc2VydEFkamFj
ZW50VGV4dChjb25zdCBTdHJpbmcmIHdoZXJlLCBTdHJpbmcmJiB0ZXh0KQogewotICAgIGF1dG8g
cmVzdWx0ID0gaW5zZXJ0QWRqYWNlbnQod2hlcmUsIGRvY3VtZW50KCkuY3JlYXRlVGV4dE5vZGUo
dGV4dCkpOworICAgIGF1dG8gcmVzdWx0ID0gaW5zZXJ0QWRqYWNlbnQod2hlcmUsIGRvY3VtZW50
KCkuY3JlYXRlVGV4dE5vZGUoV1RGTW92ZSh0ZXh0KSkpOwogICAgIGlmIChyZXN1bHQuaGFzRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogICAg
IHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCBmMjUwOThjNzY5ZTc5MGUxZTFlMTY5
MTZiYjE0NmUwMDQ1NjY0MDA4Li4yYjNlMzk5ZGE0Nzk3Y2U3NjgyY2U2NTUzNTQ3ZjlhNDMxYjJk
Y2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTM3Miw3ICszNzIsNyBAQCBwdWJsaWM6CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxFbGVtZW50Kj4gaW5zZXJ0QWRqYWNlbnRFbGVt
ZW50KGNvbnN0IFN0cmluZyYgd2hlcmUsIEVsZW1lbnQmIG5ld0NoaWxkKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBpbnNlcnRBZGphY2VudEhUTUwoY29uc3QgU3RyaW5n
JiB3aGVyZSwgY29uc3QgU3RyaW5nJiBodG1sKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRp
b25Pcjx2b2lkPiBpbnNlcnRBZGphY2VudFRleHQoY29uc3QgU3RyaW5nJiB3aGVyZSwgY29uc3Qg
U3RyaW5nJiB0ZXh0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBpbnNl
cnRBZGphY2VudFRleHQoY29uc3QgU3RyaW5nJiB3aGVyZSwgU3RyaW5nJiYgdGV4dCk7CiAKICAg
ICBjb25zdCBSZW5kZXJTdHlsZSogY29tcHV0ZWRTdHlsZShQc2V1ZG9JZCA9IFBzZXVkb0lkOjpO
b25lKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdlT3Zl
cmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW1hZ2VPdmVybGF5LmNwcAppbmRleCBlMDRj
NzY2OWI2MzRjMDM2N2Y2Mjc4MDlkZjE2ZmMzNDQ1NjU2ZTY5Li43ODRiNWFlYzA4MzA4ZDgwMDc5
NjI2MzFhZjI4MTQyMzQzY2JkNDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW1h
Z2VPdmVybGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW1hZ2VPdmVybGF5LmNwcApA
QCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRpYyB2b2lkIGluc3RhbGxJbWFnZU92ZXJsYXlTdHlsZVNo
ZWV0KFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QpCiB7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZl
ckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHNoYWRvd1N0eWxlKFN0cmluZ0ltcGw6OmNyZWF0ZVdp
dGhvdXRDb3B5aW5nKGltYWdlT3ZlcmxheVVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihpbWFn
ZU92ZXJsYXlVc2VyQWdlbnRTdHlsZVNoZWV0KSkpOwogICAgIGF1dG8gc3R5bGUgPSBIVE1MU3R5
bGVFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjpzdHlsZVRhZywgc2hhZG93Um9vdC5kb2N1bWVu
dCgpLCBmYWxzZSk7Ci0gICAgc3R5bGUtPnNldFRleHRDb250ZW50KHNoYWRvd1N0eWxlKTsKKyAg
ICBzdHlsZS0+c2V0VGV4dENvbnRlbnQoU3RyaW5nIHsgc2hhZG93U3R5bGUgfSk7CiAgICAgc2hh
ZG93Um9vdC5hcHBlbmRDaGlsZChXVEZNb3ZlKHN0eWxlKSk7CiB9CiAKQEAgLTM5Nyw3ICszOTcs
NyBAQCBzdGF0aWMgRWxlbWVudHMgdXBkYXRlU3VidHJlZShIVE1MRWxlbWVudCYgZWxlbWVudCwg
Y29uc3QgVGV4dFJlY29nbml0aW9uUmVzdWx0JgogICAgICAgICAgICAgICAgIGF1dG8gdGV4dENv
bnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCkpOwogICAgICAg
ICAgICAgICAgIHRleHRDb250YWluZXItPmNsYXNzTGlzdCgpLmFkZChpbWFnZU92ZXJsYXlUZXh0
Q2xhc3MoKSk7CiAgICAgICAgICAgICAgICAgbGluZUNvbnRhaW5lci0+YXBwZW5kQ2hpbGQodGV4
dENvbnRhaW5lcik7Ci0gICAgICAgICAgICAgICAgdGV4dENvbnRhaW5lci0+YXBwZW5kQ2hpbGQo
VGV4dDo6Y3JlYXRlKGRvY3VtZW50LmdldCgpLCBjaGlsZC5oYXNMZWFkaW5nV2hpdGVzcGFjZSA/
IG1ha2VTdHJpbmcoJ1xuJywgY2hpbGQudGV4dCkgOiBjaGlsZC50ZXh0KSk7CisgICAgICAgICAg
ICAgICAgdGV4dENvbnRhaW5lci0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50Lmdl
dCgpLCBjaGlsZC5oYXNMZWFkaW5nV2hpdGVzcGFjZSA/IG1ha2VTdHJpbmcoJ1xuJywgY2hpbGQu
dGV4dCkgOiBTdHJpbmcgeyBjaGlsZC50ZXh0IH0pKTsKICAgICAgICAgICAgICAgICBsaW5lRWxl
bWVudHMuY2hpbGRyZW4udW5jaGVja2VkQXBwZW5kKFdURk1vdmUodGV4dENvbnRhaW5lcikpOwog
ICAgICAgICAgICAgfQogCkBAIC00MjQsMTAgKzQyNCwxMCBAQCBzdGF0aWMgRWxlbWVudHMgdXBk
YXRlU3VidHJlZShIVE1MRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVGV4dFJlY29nbml0aW9uUmVz
dWx0JgogICAgICAgICAgICAgYXV0byBibG9ja0NvbnRhaW5lciA9IEhUTUxEaXZFbGVtZW50Ojpj
cmVhdGUoZG9jdW1lbnQuZ2V0KCkpOwogICAgICAgICAgICAgYmxvY2tDb250YWluZXItPmNsYXNz
TGlzdCgpLmFkZChpbWFnZU92ZXJsYXlCbG9ja0NsYXNzKCkpOwogICAgICAgICAgICAgYXV0byBs
aW5lcyA9IGJsb2NrLnRleHQuc3BsaXQobmV3bGluZUNoYXJhY3Rlcik7Ci0gICAgICAgICAgICBm
b3IgKGF1dG8mIHRleHRDb250ZW50IDogbGluZXMpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYm
IHRleHRDb250ZW50IDogV1RGTW92ZShsaW5lcykpIHsKICAgICAgICAgICAgICAgICBpZiAoYmxv
Y2tDb250YWluZXItPmhhc0NoaWxkTm9kZXMoKSkKICAgICAgICAgICAgICAgICAgICAgYmxvY2tD
b250YWluZXItPmFwcGVuZENoaWxkKEhUTUxCUkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudC5nZXQo
KSkpOwotICAgICAgICAgICAgICAgIGJsb2NrQ29udGFpbmVyLT5hcHBlbmRDaGlsZChUZXh0Ojpj
cmVhdGUoZG9jdW1lbnQuZ2V0KCksIHRleHRDb250ZW50KSk7CisgICAgICAgICAgICAgICAgYmxv
Y2tDb250YWluZXItPmFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVudC5nZXQoKSwgV1RG
TW92ZSh0ZXh0Q29udGVudCkpKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgY29uc3Rl
eHByIGF1dG8gbWF4TGluZUNvdW50Rm9yQ2VudGVyQWxpZ25lZFRleHQgPSAyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwCmluZGV4IGNiNDdlYWFlYzBkZTcwNWIzNDgzNmY1NzAyN2I0ZGMxNTc4Yjk1MWUuLjNhZWEw
YjQ1OWVmNTgxZGUwYTM0MjIxMzc5OWMxNWRiNzY1MWQ1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAg
LTU1Miw3ICs1NTIsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Tm9kZT4+IE5vZGU6OmNvbnZlcnRO
b2Rlc09yU3RyaW5nc0ludG9Ob2RlKEZpeGVkVmVjdG9yPE5vZGVPcgogICAgIGZvciAoYXV0byYg
dmFyaWFudCA6IG5vZGVPclN0cmluZ1ZlY3RvcikgewogICAgICAgICBXVEY6OnN3aXRjaE9uKHZh
cmlhbnQsCiAgICAgICAgICAgICBbJl0oUmVmUHRyPE5vZGU+JiBub2RlKSB7IG5vZGVzLnVuY2hl
Y2tlZEFwcGVuZCgqbm9kZS5nZXQoKSk7IH0sCi0gICAgICAgICAgICBbJl0oU3RyaW5nJiBzdHJp
bmcpIHsgbm9kZXMudW5jaGVja2VkQXBwZW5kKFRleHQ6OmNyZWF0ZShkb2N1bWVudCgpLCBzdHJp
bmcpKTsgfQorICAgICAgICAgICAgWyZdKFN0cmluZyYgc3RyaW5nKSB7IG5vZGVzLnVuY2hlY2tl
ZEFwcGVuZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQoKSwgV1RGTW92ZShzdHJpbmcpKSk7IH0KICAg
ICAgICAgKTsKICAgICB9CiAKQEAgLTE1OTAsNyArMTU5MCw3IEBAIFN0cmluZyBOb2RlOjp0ZXh0
Q29udGVudChib29sIGNvbnZlcnRCUnNUb05ld2xpbmVzKSBjb25zdAogICAgIHJldHVybiBpc051
bGxTdHJpbmcgPyBTdHJpbmcoKSA6IGNvbnRlbnQudG9TdHJpbmcoKTsKIH0KIAotdm9pZCBOb2Rl
OjpzZXRUZXh0Q29udGVudChjb25zdCBTdHJpbmcmIHRleHQpCit2b2lkIE5vZGU6OnNldFRleHRD
b250ZW50KFN0cmluZyYmIHRleHQpCiB7ICAgICAgICAgICAKICAgICBzd2l0Y2ggKG5vZGVUeXBl
KCkpIHsKICAgICBjYXNlIEFUVFJJQlVURV9OT0RFOgpAQCAtMTU5OCwxMSArMTU5OCwxMSBAQCB2
b2lkIE5vZGU6OnNldFRleHRDb250ZW50KGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBjYXNlIENE
QVRBX1NFQ1RJT05fTk9ERToKICAgICBjYXNlIENPTU1FTlRfTk9ERToKICAgICBjYXNlIFBST0NF
U1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKLSAgICAgICAgc2V0Tm9kZVZhbHVlKHRleHQpOworICAg
ICAgICBzZXROb2RlVmFsdWUoV1RGTW92ZSh0ZXh0KSk7CiAgICAgICAgIHJldHVybjsKICAgICBj
YXNlIEVMRU1FTlRfTk9ERToKICAgICBjYXNlIERPQ1VNRU5UX0ZSQUdNRU5UX05PREU6Ci0gICAg
ICAgIGRvd25jYXN0PENvbnRhaW5lck5vZGU+KCp0aGlzKS5zdHJpbmdSZXBsYWNlQWxsKHRleHQp
OworICAgICAgICBkb3duY2FzdDxDb250YWluZXJOb2RlPigqdGhpcykuc3RyaW5nUmVwbGFjZUFs
bChXVEZNb3ZlKHRleHQpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRE9DVU1FTlRfTk9E
RToKICAgICBjYXNlIERPQ1VNRU5UX1RZUEVfTk9ERToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IGEzM2U2ODIy
NjVlM2ExMWJhNWI1ODJjMTNkMDBjYTI4OGZhZTM1ZTAuLmE4NTYwMzBiYzExZGFjODBlMjM5YTVh
MjZlYTlkMTNkODVlZjJkMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMTc1LDcgKzE3NSw3IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBBdG9tU3RyaW5nJiBsb29rdXBOYW1lc3BhY2VV
UkkoY29uc3QgQXRvbVN0cmluZyYgcHJlZml4KSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyB0ZXh0Q29udGVudChib29sIGNvbnZlcnRCUnNUb05ld2xpbmVzID0gZmFsc2UpIGNv
bnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGV4dENvbnRlbnQoY29uc3QgU3RyaW5n
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUZXh0Q29udGVudChTdHJpbmcmJik7CiAg
ICAgCiAgICAgTm9kZSogbGFzdERlc2NlbmRhbnQoKSBjb25zdDsKICAgICBOb2RlKiBmaXJzdERl
c2NlbmRhbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVj
dGlvbi5jcHAKaW5kZXggOTc0Njk2MjlmOTQ1M2U3ZDE2MzdhYTU1YTgzNjQxY2Q0ZTBlZWQzYy4u
YzJmM2I3MzA3ZDBkMDkwYTMzY2M3MTY2ZGE2MjM0OWY1MmI1MGNlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChQcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24pOwogCi1pbmxpbmUgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpQcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRhcmdldCwg
Y29uc3QgU3RyaW5nJiBkYXRhKQotICAgIDogQ2hhcmFjdGVyRGF0YShkb2N1bWVudCwgZGF0YSkK
LSAgICAsIG1fdGFyZ2V0KHRhcmdldCkKK2lubGluZSBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OlBy
b2Nlc3NpbmdJbnN0cnVjdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZyYmIHRhcmdldCwg
U3RyaW5nJiYgZGF0YSkKKyAgICA6IENoYXJhY3RlckRhdGEoZG9jdW1lbnQsIFdURk1vdmUoZGF0
YSkpCisgICAgLCBtX3RhcmdldChXVEZNb3ZlKHRhcmdldCkpCiB7CiB9CiAKLVJlZjxQcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24+IFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y3JlYXRlKERvY3VtZW50JiBk
b2N1bWVudCwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgZGF0YSkKK1JlZjxQ
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24+IFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y3JlYXRlKERvY3Vt
ZW50JiBkb2N1bWVudCwgU3RyaW5nJiYgdGFyZ2V0LCBTdHJpbmcmJiBkYXRhKQogewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFByb2Nlc3NpbmdJbnN0cnVjdGlvbihkb2N1bWVudCwgdGFyZ2V0
LCBkYXRhKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUHJvY2Vzc2luZ0luc3RydWN0aW9u
KGRvY3VtZW50LCBXVEZNb3ZlKHRhcmdldCksIFdURk1vdmUoZGF0YSkpKTsKIH0KIAogUHJvY2Vz
c2luZ0luc3RydWN0aW9uOjp+UHJvY2Vzc2luZ0luc3RydWN0aW9uKCkKQEAgLTgwLDcgKzgwLDcg
QEAgUmVmPE5vZGU+IFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y2xvbmVOb2RlSW50ZXJuYWwoRG9j
dW1lbnQmIHRhcmdldERvY3VtZW50LCBDbG8KIHsKICAgICAvLyBGSVhNRTogSXMgaXQgYSBwcm9i
bGVtIHRoYXQgdGhpcyBkb2VzIG5vdCBjb3B5IG1fbG9jYWxIcmVmPwogICAgIC8vIFdoYXQgYWJv
dXQgb3RoZXIgZGF0YSBtZW1iZXJzPwotICAgIHJldHVybiBjcmVhdGUodGFyZ2V0RG9jdW1lbnQs
IG1fdGFyZ2V0LCBkYXRhKCkpOworICAgIHJldHVybiBjcmVhdGUodGFyZ2V0RG9jdW1lbnQsIFN0
cmluZyB7IG1fdGFyZ2V0IH0sIFN0cmluZyB7IGRhdGEoKSB9KTsKIH0KIAogdm9pZCBQcm9jZXNz
aW5nSW5zdHJ1Y3Rpb246OmNoZWNrU3R5bGVTaGVldCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJv
Y2Vzc2luZ0luc3RydWN0aW9uLmgKaW5kZXggNjQwZGM0YzlkOWEwMjg3NDE0ZmY3MjlhOWJiYWQz
ODJmMjc2OWMxMi4uNzMzMWIyNGMxOGVhNjUwZTFlYzcyNGE3YTdiMzlhYzA4MjlhOTI0NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaApAQCAtMzQsNyArMzQs
NyBAQCBjbGFzcyBDU1NTdHlsZVNoZWV0OwogY2xhc3MgUHJvY2Vzc2luZ0luc3RydWN0aW9uIGZp
bmFsIDogcHVibGljIENoYXJhY3RlckRhdGEsIHByaXZhdGUgQ2FjaGVkU3R5bGVTaGVldENsaWVu
dCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pOwog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8UHJvY2Vzc2luZ0luc3RydWN0aW9uPiBjcmVhdGUoRG9j
dW1lbnQmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBkYXRhKTsKKyAgICBz
dGF0aWMgUmVmPFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4gY3JlYXRlKERvY3VtZW50JiwgU3RyaW5n
JiYgdGFyZ2V0LCBTdHJpbmcmJiBkYXRhKTsKICAgICB2aXJ0dWFsIH5Qcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24oKTsKIAogICAgIGNvbnN0IFN0cmluZyYgdGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV90
YXJnZXQ7IH0KQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBDaGFyYWN0ZXJEYXRhOwotICAgIFByb2Nlc3NpbmdJbnN0cnVjdGlvbihEb2N1bWVu
dCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgIFByb2Nl
c3NpbmdJbnN0cnVjdGlvbihEb2N1bWVudCYsIFN0cmluZyYmIHRhcmdldCwgU3RyaW5nJiYgZGF0
YSk7CiAKICAgICBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICBOb2RlVHlw
ZSBub2RlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCmluZGV4IDRiOTAzZjhm
ZGYyYmFkOTM5ZGRhYmE4MGNkZTg4MDU0NDEyOTc2ZTIuLmU2N2IyYjIxMDk0ODM4NDJmMDA2MWUy
ZjI3YjZhNjY3MjI0ZmRmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKQEAgLTQ0LDE0ICs0NCwxNCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChUZXh0KTsK
IAotUmVmPFRleHQ+IFRleHQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmlu
ZyYgZGF0YSkKK1JlZjxUZXh0PiBUZXh0OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJp
bmcmJiBkYXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHQoZG9jdW1lbnQsIGRh
dGEsIENyZWF0ZVRleHQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0KGRvY3VtZW50
LCBXVEZNb3ZlKGRhdGEpLCBDcmVhdGVUZXh0KSk7CiB9CiAKLVJlZjxUZXh0PiBUZXh0OjpjcmVh
dGVFZGl0aW5nVGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZGF0YSkKK1Jl
ZjxUZXh0PiBUZXh0OjpjcmVhdGVFZGl0aW5nVGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmlu
ZyYmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dChkb2N1bWVudCwgZGF0
YSwgQ3JlYXRlRWRpdGluZ1RleHQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0KGRv
Y3VtZW50LCBXVEZNb3ZlKGRhdGEpLCBDcmVhdGVFZGl0aW5nVGV4dCkpOwogfQogCiBUZXh0Ojp+
VGV4dCgpID0gZGVmYXVsdDsKQEAgLTE2Myw3ICsxNjMsNyBAQCBOb2RlOjpOb2RlVHlwZSBUZXh0
Ojpub2RlVHlwZSgpIGNvbnN0CiAKIFJlZjxOb2RlPiBUZXh0OjpjbG9uZU5vZGVJbnRlcm5hbChE
b2N1bWVudCYgdGFyZ2V0RG9jdW1lbnQsIENsb25pbmdPcGVyYXRpb24pCiB7Ci0gICAgcmV0dXJu
IGNyZWF0ZSh0YXJnZXREb2N1bWVudCwgZGF0YSgpKTsKKyAgICByZXR1cm4gY3JlYXRlKHRhcmdl
dERvY3VtZW50LCBTdHJpbmcgeyBkYXRhKCkgfSk7CiB9CiAKIHN0YXRpYyBib29sIGlzU1ZHU2hh
ZG93VGV4dChUZXh0KiB0ZXh0KQpAQCAtMTk1LDkgKzE5NSw5IEBAIGJvb2wgVGV4dDo6Y2hpbGRU
eXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlZjxU
ZXh0PiBUZXh0Ojp2aXJ0dWFsQ3JlYXRlKGNvbnN0IFN0cmluZyYgZGF0YSkKK1JlZjxUZXh0PiBU
ZXh0Ojp2aXJ0dWFsQ3JlYXRlKFN0cmluZyYmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZShk
b2N1bWVudCgpLCBkYXRhKTsKKyAgICByZXR1cm4gY3JlYXRlKGRvY3VtZW50KCksIFdURk1vdmUo
ZGF0YSkpOwogfQogCiBSZWY8VGV4dD4gVGV4dDo6Y3JlYXRlV2l0aExlbmd0aExpbWl0KERvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBkYXRhLCB1bnNpZ25lZCBzdGFydCwgdW5zaWdu
ZWQgbGVuZ3RoTGltaXQpCkBAIC0yMDUsNyArMjA1LDcgQEAgUmVmPFRleHQ+IFRleHQ6OmNyZWF0
ZVdpdGhMZW5ndGhMaW1pdChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZGF0YSwg
dW4KICAgICB1bnNpZ25lZCBkYXRhTGVuZ3RoID0gZGF0YS5sZW5ndGgoKTsKIAogICAgIGlmICgh
c3RhcnQgJiYgZGF0YUxlbmd0aCA8PSBsZW5ndGhMaW1pdCkKLSAgICAgICAgcmV0dXJuIGNyZWF0
ZShkb2N1bWVudCwgZGF0YSk7CisgICAgICAgIHJldHVybiBjcmVhdGUoZG9jdW1lbnQsIFN0cmlu
ZyB7IGRhdGEgfSk7CiAKICAgICBSZWY8VGV4dD4gcmVzdWx0ID0gVGV4dDo6Y3JlYXRlKGRvY3Vt
ZW50LCBTdHJpbmcoKSk7CiAgICAgcmVzdWx0LT5wYXJzZXJBcHBlbmREYXRhKGRhdGEsIHN0YXJ0
LCBsZW5ndGhMaW1pdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL1RleHQuaAppbmRleCBlYmM5ZDEwY2M0OGUxMGE3NzZlZjExMmMx
MzZhNWM2YjQ3MTcxYmIyLi42MmM3NWNlMWM2ZjJmNzJmOWI3MzQ3YmZhYWRmNjdiYTYzN2M0NWY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9UZXh0LmgKQEAgLTM0LDkgKzM0LDkgQEAgY2xhc3MgVGV4dCA6IHB1YmxpYyBDaGFy
YWN0ZXJEYXRhIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZGVmYXVsdExl
bmd0aExpbWl0ID0gMSA8PCAxNjsKIAotICAgIHN0YXRpYyBSZWY8VGV4dD4gY3JlYXRlKERvY3Vt
ZW50JiwgY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIFJlZjxUZXh0PiBjcmVhdGUoRG9jdW1l
bnQmLCBTdHJpbmcmJik7CiAgICAgc3RhdGljIFJlZjxUZXh0PiBjcmVhdGVXaXRoTGVuZ3RoTGlt
aXQoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBwb3NpdGlvbkluU3RyaW5nLCB1
bnNpZ25lZCBsZW5ndGhMaW1pdCA9IGRlZmF1bHRMZW5ndGhMaW1pdCk7Ci0gICAgc3RhdGljIFJl
ZjxUZXh0PiBjcmVhdGVFZGl0aW5nVGV4dChEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYpOworICAg
IHN0YXRpYyBSZWY8VGV4dD4gY3JlYXRlRWRpdGluZ1RleHQoRG9jdW1lbnQmLCBTdHJpbmcmJik7
CiAKICAgICB2aXJ0dWFsIH5UZXh0KCk7CiAKQEAgLTU5LDggKzU5LDggQEAgcHVibGljOgogICAg
IFN0cmluZyBkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3QgZmluYWw7CiAKIHByb3RlY3RlZDoKLSAg
ICBUZXh0KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBkYXRhLCBDb25zdHJ1Y3Rp
b25UeXBlIHR5cGUpCi0gICAgICAgIDogQ2hhcmFjdGVyRGF0YShkb2N1bWVudCwgZGF0YSwgdHlw
ZSkKKyAgICBUZXh0KERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5nJiYgZGF0YSwgQ29uc3RydWN0
aW9uVHlwZSB0eXBlKQorICAgICAgICA6IENoYXJhY3RlckRhdGEoZG9jdW1lbnQsIFdURk1vdmUo
ZGF0YSksIHR5cGUpCiAgICAgewogICAgIH0KIApAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
dm9pZCBzZXREYXRhQW5kVXBkYXRlKGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIG9mZnNldE9mUmVw
bGFjZWREYXRhLCB1bnNpZ25lZCBvbGRMZW5ndGgsIHVuc2lnbmVkIG5ld0xlbmd0aCwgVXBkYXRl
TGl2ZVJhbmdlcykgZmluYWw7CiAKLSAgICB2aXJ0dWFsIFJlZjxUZXh0PiB2aXJ0dWFsQ3JlYXRl
KGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgUmVmPFRleHQ+IHZpcnR1YWxDcmVhdGUoU3Ry
aW5nJiYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL21hYy9JbWFnZUNvbnRyb2xzTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9tYWMvSW1hZ2VDb250cm9sc01hYy5jcHAKaW5kZXggYmUyMzY4OGUzMWJlMzRhNjBiMGFiZWE3
NjNiNWFiZmZhZGJlOWVlMS4uZWMwNzY4ODIxMmUwMmJmZjBiMmIxMzEyYWVmZDg3N2MyNThmZmM3
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL21hYy9JbWFnZUNvbnRyb2xzTWFjLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWFjL0ltYWdlQ29udHJvbHNNYWMuY3BwCkBAIC05
NSw3ICs5NSw3IEBAIHZvaWQgY3JlYXRlSW1hZ2VDb250cm9scyhIVE1MRWxlbWVudCYgZWxlbWVu
dCkKICAgICAKICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmlu
Zz4gc2hhZG93U3R5bGUoU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoaW1hZ2VDb250
cm9sc01hY1VzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihpbWFnZUNvbnRyb2xzTWFjVXNlckFn
ZW50U3R5bGVTaGVldCkpKTsKICAgICBhdXRvIHN0eWxlID0gSFRNTFN0eWxlRWxlbWVudDo6Y3Jl
YXRlKEhUTUxOYW1lczo6c3R5bGVUYWcsIGRvY3VtZW50LmdldCgpLCBmYWxzZSk7Ci0gICAgc3R5
bGUtPnNldFRleHRDb250ZW50KHNoYWRvd1N0eWxlKTsKKyAgICBzdHlsZS0+c2V0VGV4dENvbnRl
bnQoU3RyaW5nIHsgc2hhZG93U3R5bGUgfSk7CiAgICAgc2hhZG93Um9vdC0+YXBwZW5kQ2hpbGQo
V1RGTW92ZShzdHlsZSkpOwogICAgIAogICAgIGF1dG8gYnV0dG9uID0gSFRNTEJ1dHRvbkVsZW1l
bnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmJ1dHRvblRhZywgZWxlbWVudC5kb2N1bWVudCgpLCBudWxs
cHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ3JlYXRlTGlua0NvbW1h
bmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9DcmVhdGVMaW5rQ29tbWFuZC5jcHAKaW5k
ZXggNjZmYTMxMGI5ZjMzMjY1MDRmOTUyYThkNTRjOGRhMWExMWVlYzY0My4uMGYzYTdmOTQ4NTU4
NGYwNzg3YjhkMDRjYTY5MDkxNWMxMWI1Y2M1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9DcmVhdGVMaW5rQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9DcmVhdGVMaW5rQ29tbWFuZC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBDcmVhdGVMaW5r
Q29tbWFuZDo6ZG9BcHBseSgpCiAgICAgICAgIGFwcGx5U3R5bGVkRWxlbWVudChXVEZNb3ZlKGFu
Y2hvckVsZW1lbnQpKTsKICAgICBlbHNlIHsKICAgICAgICAgaW5zZXJ0Tm9kZUF0KGFuY2hvckVs
ZW1lbnQuY29weVJlZigpLCBlbmRpbmdTZWxlY3Rpb24oKS5zdGFydCgpKTsKLSAgICAgICAgYXBw
ZW5kTm9kZShUZXh0OjpjcmVhdGUoZG9jdW1lbnQoKSwgbV91cmwpLCBhbmNob3JFbGVtZW50LmNv
cHlSZWYoKSk7CisgICAgICAgIGFwcGVuZE5vZGUoVGV4dDo6Y3JlYXRlKGRvY3VtZW50KCksIFN0
cmluZyB7IG1fdXJsIH0pLCBhbmNob3JFbGVtZW50LmNvcHlSZWYoKSk7CiAgICAgICAgIHNldEVu
ZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2Rl
KGFuY2hvckVsZW1lbnQucHRyKCkpLCBwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKGFuY2hvckVs
ZW1lbnQucHRyKCkpLCBBZmZpbml0eTo6RG93bnN0cmVhbSwgZW5kaW5nU2VsZWN0aW9uKCkuaXNE
aXJlY3Rpb25hbCgpKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKaW5k
ZXggODBmZmQxZWMzZjgyMGYxNjY3MmFiMThiNjQyNTA0M2I5YmY0YmYyMy4uNjg0NWI4NzA3M2Vk
YjljNDJhODBiNDY0NDY3ODkwZDk1NzEyZmEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcu
Y3BwCkBAIC04MjcsOSArODI3LDkgQEAgc3RhdGljIFJlZjxFbGVtZW50PiBjcmVhdGVUYWJTcGFu
RWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIFRleHQmIHRhYlRleHROb2RlKQogICAgIHJldHVy
biBzcGFuRWxlbWVudDsKIH0KIAotUmVmPEVsZW1lbnQ+IGNyZWF0ZVRhYlNwYW5FbGVtZW50KERv
Y3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0YWJUZXh0KQorUmVmPEVsZW1lbnQ+IGNy
ZWF0ZVRhYlNwYW5FbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5nJiYgdGFiVGV4dCkK
IHsKLSAgICByZXR1cm4gY3JlYXRlVGFiU3BhbkVsZW1lbnQoZG9jdW1lbnQsIGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKHRhYlRleHQpKTsKKyAgICByZXR1cm4gY3JlYXRlVGFiU3BhbkVsZW1lbnQo
ZG9jdW1lbnQsIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFdURk1vdmUodGFiVGV4dCkpKTsKIH0K
IAogUmVmPEVsZW1lbnQ+IGNyZWF0ZVRhYlNwYW5FbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0aW5nLmgKaW5kZXggOTZjZWM5N2NmN2UzYjE2Y2UwZjFjMDViZTc0
ZDcyMDhjY2M0ZGFiOS4uMjc2MTIwYzRjN2EyNWIyZmNhNzViODJlMjliNmMyYWY0MDI2MzUxNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmgKQEAgLTE2OSw3ICsxNjksNyBAQCBOb2RlKiBlbmNs
b3NpbmdMaXN0Q2hpbGQoTm9kZSopOwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBSZWY8RWxlbWVu
dD4gY3JlYXRlVGFiU3BhbkVsZW1lbnQoRG9jdW1lbnQmKTsKLVJlZjxFbGVtZW50PiBjcmVhdGVU
YWJTcGFuRWxlbWVudChEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgdGFiVGV4dCk7CitSZWY8RWxl
bWVudD4gY3JlYXRlVGFiU3BhbkVsZW1lbnQoRG9jdW1lbnQmLCBTdHJpbmcmJiB0YWJUZXh0KTsK
IFJlZjxFbGVtZW50PiBjcmVhdGVCbG9ja1BsYWNlaG9sZGVyRWxlbWVudChEb2N1bWVudCYpOwog
CiBFbGVtZW50KiBlZGl0YWJsZVJvb3RGb3JQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYsIEVkaXRh
YmxlVHlwZSA9IENvbnRlbnRJc0VkaXRhYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApp
bmRleCA1ZGY3YTM1MDhkYTc4YjMyNTAyMjg2NjBmMDQ0YWI0ZDQzNWM1NGYyLi42OGUxNGEwZjE2
MmYzNDhmMGY5YTJiMjFjM2UxYTdiZTNmMDIyYzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCkBAIC00MzUzLDcgKzQzNTMsNyBAQCBjb25zdCBSZW5kZXJTdHlsZSogRWRpdG9yOjpzdHls
ZUZvclNlbGVjdGlvblN0YXJ0KFJlZlB0cjxOb2RlPiYgbm9kZVRvUmVtb3ZlKQogICAgIFN0cmlu
ZyBzdHlsZVRleHQgPSB0eXBpbmdTdHlsZS0+c3R5bGUoKS0+YXNUZXh0KCkgKyAiIGRpc3BsYXk6
IGlubGluZSI7CiAgICAgc3R5bGVFbGVtZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzdHls
ZUF0dHIsIHN0eWxlVGV4dCk7CiAKLSAgICBzdHlsZUVsZW1lbnQtPmFwcGVuZENoaWxkKGRvY3Vt
ZW50KCkuY3JlYXRlRWRpdGluZ1RleHROb2RlKGVtcHR5U3RyaW5nKCkpKTsKKyAgICBzdHlsZUVs
ZW1lbnQtPmFwcGVuZENoaWxkKGRvY3VtZW50KCkuY3JlYXRlRWRpdGluZ1RleHROb2RlKFN0cmlu
ZyB7IGVtcHR5U3RyaW5nKCkgfSkpOwogCiAgICAgYXV0byBwb3NpdGlvbk5vZGUgPSBwb3NpdGlv
bi5kZXByZWNhdGVkTm9kZSgpOwogICAgIEFTU0VSVChwb3NpdGlvbk5vZGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAKaW5kZXggM2Uz
MzczYWMzZjZmZDMxYTBhYzA0ZDQ2MWRhOGM2NzEzOWEwMDA2Ny4uOTEyOWEzYmY4MzExYzVlYTg0
Y2ViZTM3ZDkxZWVmNjhhYzQzMTBjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgdm9pZCBJbnNl
cnRMaW5lQnJlYWtDb21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgICAgIGlmICh0ZXh0Tm9kZS5p
c0Nvbm5lY3RlZCgpKQogICAgICAgICAgICAgICAgIGluc2VydFRleHRJbnRvTm9kZSh0ZXh0Tm9k
ZSwgMCwgbm9uQnJlYWtpbmdTcGFjZVN0cmluZygpKTsKICAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgIGF1dG8gbmJzcE5vZGUgPSBkb2N1bWVudCgpLmNyZWF0ZVRleHROb2RlKG5v
bkJyZWFraW5nU3BhY2VTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgYXV0byBuYnNwTm9kZSA9
IGRvY3VtZW50KCkuY3JlYXRlVGV4dE5vZGUoU3RyaW5nIHsgbm9uQnJlYWtpbmdTcGFjZVN0cmlu
ZygpIH0pOwogICAgICAgICAgICAgICAgIGF1dG8qIG5ic3BOb2RlUHRyID0gbmJzcE5vZGUucHRy
KCk7CiAgICAgICAgICAgICAgICAgaW5zZXJ0Tm9kZUF0KFdURk1vdmUobmJzcE5vZGUpLCBwb3Np
dGlvbkJlZm9yZVRleHROb2RlKTsKICAgICAgICAgICAgICAgICBlbmRpbmdQb3NpdGlvbiA9IGZp
cnN0UG9zaXRpb25Jbk5vZGUobmJzcE5vZGVQdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0luc2VydFRleHRDb21tYW5kLmNwcAppbmRleCA3MWZjYTIzNWVhZWViNWRlM2ZjNGFkY2QzMTY5
MTMxOTFiOGZlYzVmLi4xZTVjMGYwN2JiNWU4ZDQ1Yzk1NzY4NDYyYjQwYTU2YmJhY2U3OTM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcApAQCAtNTgs
NyArNTgsNyBAQCBQb3NpdGlvbiBJbnNlcnRUZXh0Q29tbWFuZDo6cG9zaXRpb25JbnNpZGVUZXh0
Tm9kZShjb25zdCBQb3NpdGlvbiYgcCkKIHsKICAgICBQb3NpdGlvbiBwb3MgPSBwOwogICAgIGlm
IChpc1RhYlNwYW5UZXh0Tm9kZShwb3MuYW5jaG9yTm9kZSgpKSkgewotICAgICAgICBhdXRvIHRl
eHROb2RlID0gZG9jdW1lbnQoKS5jcmVhdGVFZGl0aW5nVGV4dE5vZGUoZW1wdHlTdHJpbmcoKSk7
CisgICAgICAgIGF1dG8gdGV4dE5vZGUgPSBkb2N1bWVudCgpLmNyZWF0ZUVkaXRpbmdUZXh0Tm9k
ZShTdHJpbmcgeyBlbXB0eVN0cmluZygpIH0pOwogICAgICAgICBpbnNlcnROb2RlQXRUYWJTcGFu
UG9zaXRpb24odGV4dE5vZGUuY29weVJlZigpLCBwb3MpOwogICAgICAgICByZXR1cm4gZmlyc3RQ
b3NpdGlvbkluTm9kZSh0ZXh0Tm9kZS5wdHIoKSk7CiAgICAgfQpAQCAtNjYsNyArNjYsNyBAQCBQ
b3NpdGlvbiBJbnNlcnRUZXh0Q29tbWFuZDo6cG9zaXRpb25JbnNpZGVUZXh0Tm9kZShjb25zdCBQ
b3NpdGlvbiYgcCkKICAgICAvLyBQcmVwYXJlIGZvciB0ZXh0IGlucHV0IGJ5IGxvb2tpbmcgYXQg
dGhlIHNwZWNpZmllZCBwb3NpdGlvbi4KICAgICAvLyBJdCBtYXkgYmUgbmVjZXNzYXJ5IHRvIGlu
c2VydCBhIHRleHQgbm9kZSB0byByZWNlaXZlIGNoYXJhY3RlcnMuCiAgICAgaWYgKCFwb3MuY29u
dGFpbmVyTm9kZSgpLT5pc1RleHROb2RlKCkpIHsKLSAgICAgICAgYXV0byB0ZXh0Tm9kZSA9IGRv
Y3VtZW50KCkuY3JlYXRlRWRpdGluZ1RleHROb2RlKGVtcHR5U3RyaW5nKCkpOworICAgICAgICBh
dXRvIHRleHROb2RlID0gZG9jdW1lbnQoKS5jcmVhdGVFZGl0aW5nVGV4dE5vZGUoU3RyaW5nIHsg
ZW1wdHlTdHJpbmcoKSB9KTsKICAgICAgICAgaW5zZXJ0Tm9kZUF0KHRleHROb2RlLmNvcHlSZWYo
KSwgcG9zKTsKICAgICAgICAgcmV0dXJuIGZpcnN0UG9zaXRpb25Jbk5vZGUodGV4dE5vZGUucHRy
KCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0
aW9uQ29tbWFuZC5jcHAKaW5kZXggOTQxZGZlZThlZjc0MGUyY2RmZmJjMWU1ODU2NmEwNzE3Yjdl
N2NlZS4uNWViM2JkMDg3MzQzMmI0ZDBjOGQ5ZjkxMGQyODdkYjFiNTk4ZGZjMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAg
LTE1OTgsNyArMTU5OCw3IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmFkZFNwYWNl
c0ZvclNtYXJ0UmVwbGFjZSgpCiAgICAgICAgICAgICBpZiAobV9lbmRPZkluc2VydGVkQ29udGVu
dC5jb250YWluZXJOb2RlKCkgPT0gZW5kTm9kZSkKICAgICAgICAgICAgICAgICBtX2VuZE9mSW5z
ZXJ0ZWRDb250ZW50Lm1vdmVUb09mZnNldChtX2VuZE9mSW5zZXJ0ZWRDb250ZW50Lm9mZnNldElu
Q29udGFpbmVyTm9kZSgpICsgMSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhdXRv
IG5vZGUgPSBkb2N1bWVudCgpLmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZShjb2xsYXBzZVdoaXRlU3Bh
Y2UgPyBub25CcmVha2luZ1NwYWNlU3RyaW5nKCkgOiAiICJfcyk7CisgICAgICAgICAgICBhdXRv
IG5vZGUgPSBkb2N1bWVudCgpLmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZShjb2xsYXBzZVdoaXRlU3Bh
Y2UgPyBTdHJpbmcgeyBub25CcmVha2luZ1NwYWNlU3RyaW5nKCkgfSA6ICIgIl9zKTsKICAgICAg
ICAgICAgIGluc2VydE5vZGVBZnRlcihub2RlLmNvcHlSZWYoKSwgKmVuZE5vZGUpOwogICAgICAg
ICAgICAgdXBkYXRlTm9kZXNJbnNlcnRlZChub2RlLnB0cigpKTsKICAgICAgICAgfQpAQCAtMTYy
Miw3ICsxNjIyLDcgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6YWRkU3BhY2VzRm9y
U21hcnRSZXBsYWNlKCkKICAgICAgICAgICAgIGlmIChtX2VuZE9mSW5zZXJ0ZWRDb250ZW50LmNv
bnRhaW5lck5vZGUoKSA9PSBzdGFydE5vZGUgJiYgbV9lbmRPZkluc2VydGVkQ29udGVudC5vZmZz
ZXRJbkNvbnRhaW5lck5vZGUoKSkKICAgICAgICAgICAgICAgICBtX2VuZE9mSW5zZXJ0ZWRDb250
ZW50Lm1vdmVUb09mZnNldChtX2VuZE9mSW5zZXJ0ZWRDb250ZW50Lm9mZnNldEluQ29udGFpbmVy
Tm9kZSgpICsgMSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhdXRvIG5vZGUgPSBk
b2N1bWVudCgpLmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZShjb2xsYXBzZVdoaXRlU3BhY2UgPyBub25C
cmVha2luZ1NwYWNlU3RyaW5nKCkgOiAiICJfcyk7CisgICAgICAgICAgICBhdXRvIG5vZGUgPSBk
b2N1bWVudCgpLmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZShjb2xsYXBzZVdoaXRlU3BhY2UgPyBTdHJp
bmcgeyBub25CcmVha2luZ1NwYWNlU3RyaW5nKCkgfSA6ICIgIl9zKTsKICAgICAgICAgICAgIC8v
IERvbid0IHVwZGF0ZU5vZGVzSW5zZXJ0ZWQuIERvaW5nIHNvIHdvdWxkIHNldCBtX2VuZE9mSW5z
ZXJ0ZWRDb250ZW50IHRvIGJlIHRoZSBub2RlIGNvbnRhaW5pbmcgdGhlIGxlYWRpbmcgc3BhY2Us
CiAgICAgICAgICAgICAvLyBidXQgbV9lbmRPZkluc2VydGVkQ29udGVudCBpcyBzdXBwb3NlZCB0
byBtYXJrIHRoZSBlbmQgb2YgcGFzdGVkIGNvbnRlbnQuCiAgICAgICAgICAgICBpbnNlcnROb2Rl
QmVmb3JlKG5vZGUsICpzdGFydE5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcAppbmRleCAwMWM2ZWVhZTkxNmVhNWFh
MjM0MjNlZjMxMjNhMTdjMGRkYjI2ZjFhLi40MDYwZDAwMTI3MWE2MmFiNTZlMjk3MjA5MDQ4Y2I4
ODFkOWU2NDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVs
YXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5p
cHVsYXRpb25Db250cm9sbGVyLmNwcApAQCAtODgxLDcgKzg4MSw3IEBAIGF1dG8gVGV4dE1hbmlw
dWxhdGlvbkNvbnRyb2xsZXI6OnJlcGxhY2UoY29uc3QgTWFuaXB1bGF0aW9uSXRlbURhdGEmIGl0
ZW0sIGNvbnN0CiAgICAgICAgICAgICBmb3IgKFJlZlB0cjxOb2RlPiBkZXNjZW5kZW50Tm9kZSA9
IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm9yaWdpbmFsTm9kZSwgb3JpZ2luYWxOb2RlKTsgZGVzY2Vu
ZGVudE5vZGU7IGRlc2NlbmRlbnROb2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dCgqZGVzY2VuZGVu
dE5vZGUsIG9yaWdpbmFsTm9kZSkpCiAgICAgICAgICAgICAgICAgbm9kZXNUb1JlbW92ZS5yZW1v
dmUoKmRlc2NlbmRlbnROb2RlKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZXBsYWNl
bWVudE5vZGUgPSBUZXh0OjpjcmVhdGUoY29tbW9uQW5jZXN0b3ItPmRvY3VtZW50KCksIHJlcGxh
Y2VtZW50VGV4dCk7CisgICAgICAgICAgICByZXBsYWNlbWVudE5vZGUgPSBUZXh0OjpjcmVhdGUo
Y29tbW9uQW5jZXN0b3ItPmRvY3VtZW50KCksIFdURk1vdmUocmVwbGFjZW1lbnRUZXh0KSk7CiAK
ICAgICAgICAgYXV0byB0b3BEb3duUGF0aCA9IGdldFBhdGgoY29tbW9uQW5jZXN0b3IuZ2V0KCks
IG9yaWdpbmFsTm9kZSk7CiAgICAgICAgIHVwZGF0ZUluc2VydGlvbnMobGFzdFRvcERvd25QYXRo
LCB0b3BEb3duUGF0aCwgcmVwbGFjZW1lbnROb2RlLmdldCgpLCByZXVzZWRPcmlnaW5hbE5vZGVz
LCBpbnNlcnRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
RGF0YURldGVjdGlvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVj
dGlvbi5tbQppbmRleCBkNjNiYjlhMmFmNTI2MmYwZTE0NzIxNTdhNDZiMzQzMmU4MGU2N2ExLi44
MWY2NGU4NjQ0YzY0OTliOTU1YjNmNjhmNmEzZDg5MTQ2YWJkZTc0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCkBAIC01ODQsMTMgKzU4NCwxMyBA
QCBOU0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShjb25zdCBTaW1w
bGVSYW5nZSYgY29udGV4dFJhbmdlLCBPcAogICAgICAgICAgICAgICAgIHRleHROb2RlRGF0YSA9
IGN1cnJlbnRUZXh0Tm9kZS5kYXRhKCkuc3Vic3RyaW5nKGNvbnRlbnRPZmZzZXQsIHJhbmdlLnN0
YXJ0Lm9mZnNldCAtIGNvbnRlbnRPZmZzZXQpOwogCiAgICAgICAgICAgICBpZiAoIXRleHROb2Rl
RGF0YS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBwYXJlbnROb2RlLT5pbnNlcnRCZWZv
cmUoVGV4dDo6Y3JlYXRlKGRvY3VtZW50LCB0ZXh0Tm9kZURhdGEpLCAmY3VycmVudFRleHROb2Rl
KTsKKyAgICAgICAgICAgICAgICBwYXJlbnROb2RlLT5pbnNlcnRCZWZvcmUoVGV4dDo6Y3JlYXRl
KGRvY3VtZW50LCBXVEZNb3ZlKHRleHROb2RlRGF0YSkpLCAmY3VycmVudFRleHROb2RlKTsKICAg
ICAgICAgICAgICAgICBjb250ZW50T2Zmc2V0ID0gcmFuZ2Uuc3RhcnQub2Zmc2V0OwogICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICAvLyBDcmVhdGUgdGhlIGFjdHVhbCBhbmNob3Igbm9kZSBh
bmQgaW5zZXJ0IGl0IGJlZm9yZSB0aGUgY3VycmVudCBub2RlLgogICAgICAgICAgICAgdGV4dE5v
ZGVEYXRhID0gY3VycmVudFRleHROb2RlLmRhdGEoKS5zdWJzdHJpbmcocmFuZ2Uuc3RhcnQub2Zm
c2V0LCByYW5nZS5lbmQub2Zmc2V0IC0gcmFuZ2Uuc3RhcnQub2Zmc2V0KTsKLSAgICAgICAgICAg
IGF1dG8gbmV3VGV4dE5vZGUgPSBUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIHRleHROb2RlRGF0YSk7
CisgICAgICAgICAgICBhdXRvIG5ld1RleHROb2RlID0gVGV4dDo6Y3JlYXRlKGRvY3VtZW50LCBX
VEZNb3ZlKHRleHROb2RlRGF0YSkpOwogICAgICAgICAgICAgcGFyZW50Tm9kZS0+aW5zZXJ0QmVm
b3JlKG5ld1RleHROb2RlLmNvcHlSZWYoKSwgJmN1cnJlbnRUZXh0Tm9kZSk7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIFJlZjxIVE1MQW5jaG9yRWxlbWVudD4gYW5jaG9yRWxlbWVudCA9IEhU
TUxBbmNob3JFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAu
Y3BwCmluZGV4IGI0Yzk2NGQyMWEwNDNlYzdhYjk3OTA1YmFjZTY3NDE5MGE5NTZmNWYuLjRiZmZh
NjhlNTgyYWQyNDkxNDhjNWMyZDYzODA4Y2E4MWNhODk5YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
cmt1cC5jcHAKQEAgLTExNzksOCArMTE3OSw5IEBAIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVh
dGVGcmFnbWVudEZyb21UZXh0KGNvbnN0IFNpbXBsZVJhbmdlJiBjb250ZXh0LCBjb25zdCBTCiAg
ICAgfTsKIAogICAgIGlmIChjb250ZXh0UHJlc2VydmVzTmV3bGluZShjb250ZXh0KSkgewotICAg
ICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyaW5n
KSk7Ci0gICAgICAgIGlmIChzdHJpbmcuZW5kc1dpdGgoJ1xuJykpIHsKKyAgICAgICAgYm9vbCBl
bmRzV2l0aE5ld0xpbmUgPSBzdHJpbmcuZW5kc1dpdGgoJ1xuJyk7CisgICAgICAgIGZyYWdtZW50
LT5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShXVEZNb3ZlKHN0cmluZykpKTsK
KyAgICAgICAgaWYgKGVuZHNXaXRoTmV3TGluZSkgewogICAgICAgICAgICAgZnJhZ21lbnQtPmFw
cGVuZENoaWxkKGNyZWF0ZUhUTUxCUkVsZW1lbnQoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0
dXJuIGZyYWdtZW50OwpAQCAtMTI3Miw3ICsxMjczLDcgQEAgRXhjZXB0aW9uT3I8UmVmPERvY3Vt
ZW50RnJhZ21lbnQ+PiBjcmVhdGVGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1MKEVsZW1lbnQmIGNv
bnQKICAgICByZXR1cm4gY3JlYXRlRnJhZ21lbnRGb3JNYXJrdXAoY29udGV4dEVsZW1lbnQsIG1h
cmt1cCwgRG9jdW1lbnRGcmFnbWVudE1vZGU6OlJldXNlRm9ySW5uZXJPdXRlckhUTUwsIHBhcnNl
ckNvbnRlbnRQb2xpY3kpOwogfQogCi1SZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJh
Z21lbnRGb3JUcmFuc2Zvcm1Ub0ZyYWdtZW50KERvY3VtZW50JiBvdXRwdXREb2MsIGNvbnN0IFN0
cmluZyYgc291cmNlU3RyaW5nLCBjb25zdCBTdHJpbmcmIHNvdXJjZU1JTUVUeXBlKQorUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9yVHJhbnNmb3JtVG9GcmFnbWVudChE
b2N1bWVudCYgb3V0cHV0RG9jLCBTdHJpbmcmJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYg
c291cmNlTUlNRVR5cGUpCiB7CiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50
ID0gb3V0cHV0RG9jLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKICAgICAKQEAgLTEyODIsMTEg
KzEyODMsMTEgQEAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9yVHJh
bnNmb3JtVG9GcmFnbWVudChEb2N1bWVudCYgb3V0cHV0RG8KICAgICAgICAgLy8gVW5mb3J0dW5h
dGVseSwgdGhhdCdzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCBvZiB0aGUgcGFyc2VyLgogICAg
ICAgICAvLyBXZSBhY2hpZXZlIHRoYXQgZWZmZWN0IGhlcmUgYnkgcGFzc2luZyBpbiBhIGZha2Ug
Ym9keSBlbGVtZW50IGFzIGNvbnRleHQgZm9yIHRoZSBmcmFnbWVudC4KICAgICAgICAgYXV0byBm
YWtlQm9keSA9IEhUTUxCb2R5RWxlbWVudDo6Y3JlYXRlKG91dHB1dERvYyk7Ci0gICAgICAgIGZy
YWdtZW50LT5wYXJzZUhUTUwoc291cmNlU3RyaW5nLCBmYWtlQm9keS5wdHIoKSk7CisgICAgICAg
IGZyYWdtZW50LT5wYXJzZUhUTUwoV1RGTW92ZShzb3VyY2VTdHJpbmcpLCBmYWtlQm9keS5wdHIo
KSk7CiAgICAgfSBlbHNlIGlmIChzb3VyY2VNSU1FVHlwZSA9PSAidGV4dC9wbGFpbiIpCi0gICAg
ICAgIGZyYWdtZW50LT5wYXJzZXJBcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUob3V0cHV0RG9jLCBz
b3VyY2VTdHJpbmcpKTsKKyAgICAgICAgZnJhZ21lbnQtPnBhcnNlckFwcGVuZENoaWxkKFRleHQ6
OmNyZWF0ZShvdXRwdXREb2MsIFdURk1vdmUoc291cmNlU3RyaW5nKSkpOwogICAgIGVsc2Ugewot
ICAgICAgICBib29sIHN1Y2Nlc3NmdWxQYXJzZSA9IGZyYWdtZW50LT5wYXJzZVhNTChzb3VyY2VT
dHJpbmcsIDApOworICAgICAgICBib29sIHN1Y2Nlc3NmdWxQYXJzZSA9IGZyYWdtZW50LT5wYXJz
ZVhNTChXVEZNb3ZlKHNvdXJjZVN0cmluZyksIDApOwogICAgICAgICBpZiAoIXN1Y2Nlc3NmdWxQ
YXJzZSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
cmt1cC5oCmluZGV4IDkyNTExYTkzNDY2YmE5NDg0MTI0MWJhZmQ2NGUwZmNkMTNlMTFhZTMuLjNi
ZTFhNGMyYTIxOWU2ZWIzNGQzYWE2ZDEyYzVhMzZlMzM0YmYyZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YXJrdXAuaApAQCAtNjEsNyArNjEsNyBAQCBTdHJpbmcgc2FuaXRpemVkTWFya3VwRm9yRnJhZ21l
bnRJbkRvY3VtZW50KFJlZjxEb2N1bWVudEZyYWdtZW50PiYmLCBEb2N1bWVudCYsCiBXRUJDT1JF
X0VYUE9SVCBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChjb25z
dCBTaW1wbGVSYW5nZSYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB0ZXh0KTsKIFdFQkNPUkVfRVhQ
T1JUIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoRG9jdW1l
bnQmLCBjb25zdCBTdHJpbmcmIG1hcmt1cCwgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBQYXJzZXJD
b250ZW50UG9saWN5ID0gQWxsb3dTY3JpcHRpbmdDb250ZW50KTsKIEV4Y2VwdGlvbk9yPFJlZjxE
b2N1bWVudEZyYWdtZW50Pj4gY3JlYXRlRnJhZ21lbnRGb3JJbm5lck91dGVySFRNTChFbGVtZW50
JiwgY29uc3QgU3RyaW5nJiBtYXJrdXAsIFBhcnNlckNvbnRlbnRQb2xpY3kpOwotUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9yVHJhbnNmb3JtVG9GcmFnbWVudChEb2N1
bWVudCYsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nLCBjb25zdCBTdHJpbmcmIHNvdXJjZU1J
TUVUeXBlKTsKK1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvclRyYW5z
Zm9ybVRvRnJhZ21lbnQoRG9jdW1lbnQmLCBTdHJpbmcmJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0
cmluZyYgc291cmNlTUlNRVR5cGUpOwogUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdt
ZW50Rm9ySW1hZ2VBbmRVUkwoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25T
aXplIHByZWZlcnJlZFNpemUpOwogRXhjZXB0aW9uT3I8UmVmPERvY3VtZW50RnJhZ21lbnQ+PiBj
cmVhdGVDb250ZXh0dWFsRnJhZ21lbnQoRWxlbWVudCYsIGNvbnN0IFN0cmluZyYgbWFya3VwLCBQ
YXJzZXJDb250ZW50UG9saWN5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9C
YXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0
ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCmluZGV4IDM3NTUyODFkMTgyZTNhYWJlMThjNzlkOWQzNTEz
NjlhYzczNTRlODIuLjg0NTJmNWE2MzczNGY5NDRjNWZmOWZiMWExMWZlNDlmZTlmYWQyYmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAK
QEAgLTM0Niw3ICszNDYsNyBAQCB2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6dXBkYXRl
SW5uZXJUZXh0VmFsdWUoKQogICAgICAgICAgICAgLy8gTmVlZCB0byBwdXQgc29tZXRoaW5nIHRv
IGtlZXAgdGV4dCBiYXNlbGluZS4KICAgICAgICAgICAgIGRpc3BsYXlWYWx1ZSA9ICIgIl9zOwog
ICAgICAgICB9Ci0gICAgICAgIGRvd25jYXN0PEhUTUxFbGVtZW50Pigqbm9kZSkuc2V0SW5uZXJU
ZXh0KGRpc3BsYXlWYWx1ZSk7CisgICAgICAgIGRvd25jYXN0PEhUTUxFbGVtZW50Pigqbm9kZSku
c2V0SW5uZXJUZXh0KFdURk1vdmUoZGlzcGxheVZhbHVlKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5w
dXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5o
CmluZGV4IDZiZjZkNmI5MDNiNGFkNzY1OTZiYmFjY2U1NGQxN2QzN2EzMWU4Y2YuLjk0OGY5ZTNl
OTI0NzVjNmI5MmVkMTk4Y2RjMGIzNTJkNWM1NDc5NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaApAQCAtODQsNyArODQsNyBAQCBwcml2YXRl
OgogICAgICAgICBEYXRlVGltZUZvcm1hdFZhbGlkYXRvcigpIHsgfQogCiAgICAgICAgIHZvaWQg
dmlzaXRGaWVsZChEYXRlVGltZUZvcm1hdDo6RmllbGRUeXBlLCBpbnQpOwotICAgICAgICB2b2lk
IHZpc2l0TGl0ZXJhbChjb25zdCBTdHJpbmcmKSB7IH0KKyAgICAgICAgdm9pZCB2aXNpdExpdGVy
YWwoU3RyaW5nJiYpIHsgfQogCiAgICAgICAgIGJvb2wgdmFsaWRhdGVGb3JtYXQoY29uc3QgU3Ry
aW5nJiBmb3JtYXQsIGNvbnN0IEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZSYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCmluZGV4IDE1NjI4ZDk1OWZi
YmEyZWM3Yjg1NGQzNmU2OTAxMWIxMmU2M2YzZDIuLjQzNWNlZGFlMTZhOGMxZTE3MGYwYjQzMWVh
ZDU4ZmVjNWU0YmVjZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0
b3J5RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9j
dW1lbnQuY3BwCkBAIC04Myw4ICs4Myw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVCYXNp
Y0RvY3VtZW50KCk7CiAKICAgICB2b2lkIHBhcnNlQW5kQXBwZW5kT25lTGluZShjb25zdCBTdHJp
bmcmKTsKLSAgICB2b2lkIGFwcGVuZEVudHJ5KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBzaXplLCBjb25zdCBTdHJpbmcmIGRhdGUsIGJvb2wgaXNEaXJlY3RvcnkpOyAgICAKLSAg
ICBSZWY8RWxlbWVudD4gY3JlYXRlVERGb3JGaWxlbmFtZShjb25zdCBTdHJpbmcmKTsKKyAgICB2
b2lkIGFwcGVuZEVudHJ5KFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIHNpemUsIFN0cmluZyYmIGRh
dGUsIGJvb2wgaXNEaXJlY3RvcnkpOworICAgIFJlZjxFbGVtZW50PiBjcmVhdGVUREZvckZpbGVu
YW1lKFN0cmluZyYmKTsKIAogICAgIFJlZlB0cjxIVE1MVGFibGVFbGVtZW50PiBtX3RhYmxlRWxl
bWVudDsKIApAQCAtMTA1LDcgKzEwNSw3IEBAIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpG
VFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcihIVE1MRG9jdW1lbnQmIGRvY3VtZW50KQogewogfQog
Ci12b2lkIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjphcHBlbmRFbnRyeShjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHNpemUsIGNvbnN0IFN0cmluZyYgZGF0ZSwgYm9v
bCBpc0RpcmVjdG9yeSkKK3ZvaWQgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmFwcGVuZEVu
dHJ5KFN0cmluZyYmIGZpbGVuYW1lLCBTdHJpbmcmJiBzaXplLCBTdHJpbmcmJiBkYXRlLCBib29s
IGlzRGlyZWN0b3J5KQogewogICAgIGF1dG8mIGRvY3VtZW50ID0gKnRoaXMtPmRvY3VtZW50KCk7
CiAKQEAgLTEyMCwyMyArMTIwLDIzIEBAIHZvaWQgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6
OmFwcGVuZEVudHJ5KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluCiAgICAgICAg
IHR5cGVFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1l
czo6Y2xhc3NBdHRyLCBBdG9tU3RyaW5nKCJmdHBEaXJlY3RvcnlJY29uIGZ0cERpcmVjdG9yeVR5
cGVGaWxlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICByb3dFbGVt
ZW50LT5hcHBlbmRDaGlsZCh0eXBlRWxlbWVudCk7CiAKLSAgICBhdXRvIG5hbWVFbGVtZW50ID0g
Y3JlYXRlVERGb3JGaWxlbmFtZShmaWxlbmFtZSk7CisgICAgYXV0byBuYW1lRWxlbWVudCA9IGNy
ZWF0ZVRERm9yRmlsZW5hbWUoV1RGTW92ZShmaWxlbmFtZSkpOwogICAgIG5hbWVFbGVtZW50LT5z
ZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6Y2xhc3NBdHRyLCBB
dG9tU3RyaW5nKCJmdHBEaXJlY3RvcnlGaWxlTmFtZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CiAgICAgcm93RWxlbWVudC0+YXBwZW5kQ2hpbGQobmFtZUVsZW1lbnQpOwog
CiAgICAgYXV0byBkYXRlRWxlbWVudCA9IEhUTUxUYWJsZUNlbGxFbGVtZW50OjpjcmVhdGUodGRU
YWcsIGRvY3VtZW50KTsKLSAgICBkYXRlRWxlbWVudC0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRl
KGRvY3VtZW50LCBkYXRlKSk7CisgICAgZGF0ZUVsZW1lbnQtPmFwcGVuZENoaWxkKFRleHQ6OmNy
ZWF0ZShkb2N1bWVudCwgV1RGTW92ZShkYXRlKSkpOwogICAgIGRhdGVFbGVtZW50LT5zZXRBdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6Y2xhc3NBdHRyLCBBdG9tU3Ry
aW5nKCJmdHBEaXJlY3RvcnlGaWxlRGF0ZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CiAgICAgcm93RWxlbWVudC0+YXBwZW5kQ2hpbGQoZGF0ZUVsZW1lbnQpOwogCiAgICAg
YXV0byBzaXplRWxlbWVudCA9IEhUTUxUYWJsZUNlbGxFbGVtZW50OjpjcmVhdGUodGRUYWcsIGRv
Y3VtZW50KTsKLSAgICBzaXplRWxlbWVudC0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3Vt
ZW50LCBzaXplKSk7CisgICAgc2l6ZUVsZW1lbnQtPmFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShk
b2N1bWVudCwgV1RGTW92ZShzaXplKSkpOwogICAgIHNpemVFbGVtZW50LT5zZXRBdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6Y2xhc3NBdHRyLCBBdG9tU3RyaW5nKCJm
dHBEaXJlY3RvcnlGaWxlU2l6ZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CiAgICAgcm93RWxlbWVudC0+YXBwZW5kQ2hpbGQoc2l6ZUVsZW1lbnQpOwogICAgIGRvY3VtZW50
LnNldEhhc1Zpc3VhbGx5Tm9uRW1wdHlDdXN0b21Db250ZW50KCk7CiB9CiAKLVJlZjxFbGVtZW50
PiBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6Y3JlYXRlVERGb3JGaWxlbmFtZShjb25zdCBT
dHJpbmcmIGZpbGVuYW1lKQorUmVmPEVsZW1lbnQ+IEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2Vy
OjpjcmVhdGVUREZvckZpbGVuYW1lKFN0cmluZyYmIGZpbGVuYW1lKQogewogICAgIGF1dG8mIGRv
Y3VtZW50ID0gKnRoaXMtPmRvY3VtZW50KCk7CiAKQEAgLTE0OCw3ICsxNDgsNyBAQCBSZWY8RWxl
bWVudD4gRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmNyZWF0ZVRERm9yRmlsZW5hbWUoY29u
c3QgU3RyaW5nJiBmaWxlbgogCiAgICAgYXV0byBhbmNob3JFbGVtZW50ID0gSFRNTEFuY2hvckVs
ZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgYW5jaG9yRWxlbWVudC0+c2V0QXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmhyZWZBdHRyLCBmdWxsVVJMKTsKLSAg
ICBhbmNob3JFbGVtZW50LT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIGZpbGVu
YW1lKSk7CisgICAgYW5jaG9yRWxlbWVudC0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3Vt
ZW50LCBXVEZNb3ZlKGZpbGVuYW1lKSkpOwogCiAgICAgYXV0byB0ZEVsZW1lbnQgPSBIVE1MVGFi
bGVDZWxsRWxlbWVudDo6Y3JlYXRlKHRkVGFnLCBkb2N1bWVudCk7CiAgICAgdGRFbGVtZW50LT5h
cHBlbmRDaGlsZChhbmNob3JFbGVtZW50KTsKQEAgLTI3NCw3ICsyNzQsNyBAQCB2b2lkIEZUUERp
cmVjdG9yeURvY3VtZW50UGFyc2VyOjpwYXJzZUFuZEFwcGVuZE9uZUxpbmUoY29uc3QgU3RyaW5n
JiBpbnB1dExpbmUpCiAKICAgICBMT0coRlRQLCAiQXBwZW5kaW5nIGVudHJ5IC0gJXMsICVzIiwg
ZmlsZW5hbWUuYXNjaWkoKS5kYXRhKCksIHJlc3VsdC5maWxlU2l6ZS5hc2NpaSgpLmRhdGEoKSk7
CiAKLSAgICBhcHBlbmRFbnRyeShmaWxlbmFtZSwgcHJvY2Vzc0ZpbGVzaXplU3RyaW5nKHJlc3Vs
dC5maWxlU2l6ZSwgcmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkpLCBwcm9jZXNzRmls
ZURhdGVTdHJpbmcocmVzdWx0Lm1vZGlmaWVkVGltZSksIHJlc3VsdC50eXBlID09IEZUUERpcmVj
dG9yeUVudHJ5KTsKKyAgICBhcHBlbmRFbnRyeShXVEZNb3ZlKGZpbGVuYW1lKSwgcHJvY2Vzc0Zp
bGVzaXplU3RyaW5nKHJlc3VsdC5maWxlU2l6ZSwgcmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5
RW50cnkpLCBwcm9jZXNzRmlsZURhdGVTdHJpbmcocmVzdWx0Lm1vZGlmaWVkVGltZSksIHJlc3Vs
dC50eXBlID09IEZUUERpcmVjdG9yeUVudHJ5KTsKIH0KIAogc3RhdGljIGlubGluZSBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYg
c2V0dGluZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCmluZGV4
IDc0ZmU2YWFkNzYwY2YzYWM5NTgxMzVhMzgwYzQyY2VlYmU4NzliZjQuLjRhZDQ2ZGUyOWM1YWUw
ODFkNjNjZDhmNzVhY2NmNjY5YmNjM2UxMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFu
Y2hvckVsZW1lbnQuY3BwCkBAIC0zNTEsOSArMzUxLDkgQEAgU3RyaW5nIEhUTUxBbmNob3JFbGVt
ZW50Ojp0ZXh0KCkKICAgICByZXR1cm4gdGV4dENvbnRlbnQoKTsKIH0KIAotdm9pZCBIVE1MQW5j
aG9yRWxlbWVudDo6c2V0VGV4dChjb25zdCBTdHJpbmcmIHRleHQpCit2b2lkIEhUTUxBbmNob3JF
bGVtZW50OjpzZXRUZXh0KFN0cmluZyYmIHRleHQpCiB7Ci0gICAgc2V0VGV4dENvbnRlbnQodGV4
dCk7CisgICAgc2V0VGV4dENvbnRlbnQoV1RGTW92ZSh0ZXh0KSk7CiB9CiAKIGJvb2wgSFRNTEFu
Y2hvckVsZW1lbnQ6OmlzTGl2ZUxpbmsoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5j
aG9yRWxlbWVudC5oCmluZGV4IGFkZDYxODMwODZhNDE2YmU3M2RiZmQ3NWI5MmEyZGNhYWEzZGQ0
NmUuLjM0MzhlYTY0YjQ1NjczYzg0NzIzYzViMDg2YzgwN2EwMWZjMDI4ZTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBvcmlnaW4oKSBjb25zdDsKIAogICAgIFdFQkNPUkVf
RVhQT1JUIFN0cmluZyB0ZXh0KCk7Ci0gICAgdm9pZCBzZXRUZXh0KGNvbnN0IFN0cmluZyYpOwor
ICAgIHZvaWQgc2V0VGV4dChTdHJpbmcmJik7CiAKICAgICBib29sIGlzTGl2ZUxpbmsoKSBjb25z
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCA4MTQxODEwMmYzZjBiZGQ3
ZGIyMmRhNzA0MDczNTQyYmNmOWY2N2U0Li4yMmE2NjIwNmFjNGE2ZjAxMjMzOTMxMjVjMWY1MzUy
ZjBkZDM4NWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApAQCAtNDM1LDM2ICs0
MzUsMzYgQEAgdm9pZCBIVE1MRWxlbWVudDo6c2V0RGlyKGNvbnN0IEF0b21TdHJpbmcmIHZhbHVl
KQogICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZGlyQXR0ciwgdmFsdWUp
OwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBIVE1MRWxlbWVudDo6c2V0SW5uZXJUZXh0KGNvbnN0
IFN0cmluZyYgdGV4dCkKK0V4Y2VwdGlvbk9yPHZvaWQ+IEhUTUxFbGVtZW50OjpzZXRJbm5lclRl
eHQoU3RyaW5nJiYgdGV4dCkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IHRha2Ugd2hp
dGVzcGFjZSBjb2xsYXBzaW5nIGludG8gYWNjb3VudCBhdCBhbGwuCiAKICAgICBpZiAoIXRleHQu
Y29udGFpbnMoJ1xuJykgJiYgIXRleHQuY29udGFpbnMoJ1xyJykpIHsKLSAgICAgICAgc3RyaW5n
UmVwbGFjZUFsbCh0ZXh0KTsKKyAgICAgICAgc3RyaW5nUmVwbGFjZUFsbChXVEZNb3ZlKHRleHQp
KTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAgICBpZiAoaXNDb25uZWN0ZWQoKSAm
JiBpc1RleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudCgpKSB7CiAgICAgICAgIGlmICghdGV4dC5j
b250YWlucygnXHInKSkgewotICAgICAgICAgICAgc3RyaW5nUmVwbGFjZUFsbCh0ZXh0KTsKKyAg
ICAgICAgICAgIHN0cmluZ1JlcGxhY2VBbGwoV1RGTW92ZSh0ZXh0KSk7CiAgICAgICAgICAgICBy
ZXR1cm4geyB9OwogICAgICAgICB9Ci0gICAgICAgIFN0cmluZyB0ZXh0V2l0aENvbnNpc3RlbnRM
aW5lQnJlYWtzID0gdGV4dDsKKyAgICAgICAgU3RyaW5nIHRleHRXaXRoQ29uc2lzdGVudExpbmVC
cmVha3MgPSBXVEZNb3ZlKHRleHQpOwogICAgICAgICB0ZXh0V2l0aENvbnNpc3RlbnRMaW5lQnJl
YWtzLnJlcGxhY2UoIlxyXG4iLCAiXG4iKTsKICAgICAgICAgdGV4dFdpdGhDb25zaXN0ZW50TGlu
ZUJyZWFrcy5yZXBsYWNlKCdccicsICdcbicpOwotICAgICAgICBzdHJpbmdSZXBsYWNlQWxsKHRl
eHRXaXRoQ29uc2lzdGVudExpbmVCcmVha3MpOworICAgICAgICBzdHJpbmdSZXBsYWNlQWxsKFdU
Rk1vdmUodGV4dFdpdGhDb25zaXN0ZW50TGluZUJyZWFrcykpOwogICAgICAgICByZXR1cm4geyB9
OwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCB1c2UgcmVwbGFjZUFsbCgpLCBh
ZnRlciB3ZSBmaXggdGhhdCB0byB3b3JrIHByb3Blcmx5IGZvciBEb2N1bWVudEZyYWdtZW50Lgog
ICAgIC8vIEFkZCB0ZXh0IG5vZGVzIGFuZCA8YnI+IGVsZW1lbnRzLgotICAgIGF1dG8gZnJhZ21l
bnQgPSB0ZXh0VG9GcmFnbWVudChkb2N1bWVudCgpLCB0ZXh0KTsKKyAgICBhdXRvIGZyYWdtZW50
ID0gdGV4dFRvRnJhZ21lbnQoZG9jdW1lbnQoKSwgV1RGTW92ZSh0ZXh0KSk7CiAgICAgLy8gSXQn
cyBzYWZlIHRvIGRpc3BhdGNoIGV2ZW50cyBvbiB0aGUgbmV3IGZyYWdtZW50IHNpbmNlIGF1dGhv
ciBzY3JpcHRzIGhhdmUgbm8gYWNjZXNzIHRvIGl0IHlldC4KICAgICBTY3JpcHREaXNhbGxvd2Vk
U2NvcGU6OkV2ZW50QWxsb3dlZFNjb3BlIGFsbG93ZWRTY29wZShmcmFnbWVudC5nZXQoKSk7CiAg
ICAgcmV0dXJuIHJlcGxhY2VDaGlsZHJlbldpdGhGcmFnbWVudCgqdGhpcywgV1RGTW92ZShmcmFn
bWVudCkpOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBIVE1MRWxlbWVudDo6c2V0T3V0ZXJUZXh0
KGNvbnN0IFN0cmluZyYgdGV4dCkKK0V4Y2VwdGlvbk9yPHZvaWQ+IEhUTUxFbGVtZW50OjpzZXRP
dXRlclRleHQoU3RyaW5nJiYgdGV4dCkKIHsKICAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gcGFy
ZW50ID0gcGFyZW50Tm9kZSgpOwogICAgIGlmICghcGFyZW50KQpAQCAtNDc2LDkgKzQ3Niw5IEBA
IEV4Y2VwdGlvbk9yPHZvaWQ+IEhUTUxFbGVtZW50OjpzZXRPdXRlclRleHQoY29uc3QgU3RyaW5n
JiB0ZXh0KQogCiAgICAgLy8gQ29udmVydCB0ZXh0IHRvIGZyYWdtZW50IHdpdGggPGJyPiB0YWdz
IGluc3RlYWQgb2YgbGluZWJyZWFrcyBpZiBuZWVkZWQuCiAgICAgaWYgKHRleHQuY29udGFpbnMo
J1xyJykgfHwgdGV4dC5jb250YWlucygnXG4nKSkKLSAgICAgICAgbmV3Q2hpbGQgPSB0ZXh0VG9G
cmFnbWVudChkb2N1bWVudCgpLCB0ZXh0KTsKKyAgICAgICAgbmV3Q2hpbGQgPSB0ZXh0VG9GcmFn
bWVudChkb2N1bWVudCgpLCBXVEZNb3ZlKHRleHQpKTsKICAgICBlbHNlCi0gICAgICAgIG5ld0No
aWxkID0gVGV4dDo6Y3JlYXRlKGRvY3VtZW50KCksIHRleHQpOworICAgICAgICBuZXdDaGlsZCA9
IFRleHQ6OmNyZWF0ZShkb2N1bWVudCgpLCBXVEZNb3ZlKHRleHQpKTsKIAogICAgIGlmICghcGFy
ZW50Tm9kZSgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSGllcmFyY2h5UmVxdWVzdEVy
cm9yIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKaW5kZXggZTA4YThlNzFmY2ZkYjdmNDlj
MGFiMDgyNzVkNDc2ZDEzMDljYTk3NC4uZTRmMWQxZDQ5OGE5ZWI0MjFjZWI0N2Q4ZjJjOWJlYTlh
YjJmMjk3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaApAQCAtNTMsOCArNTMsOCBAQCBw
dWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdGl0bGUoKSBjb25zdCBmaW5hbDsK
IAotICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldElubmVyVGV4dChjb25z
dCBTdHJpbmcmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBzZXRPdXRl
clRleHQoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9p
ZD4gc2V0SW5uZXJUZXh0KFN0cmluZyYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25P
cjx2b2lkPiBzZXRPdXRlclRleHQoU3RyaW5nJiYpOwogCiAgICAgdmlydHVhbCBib29sIGhhc0N1
c3RvbUZvY3VzTG9naWMoKSBjb25zdDsKICAgICBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdCBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCmluZGV4IGJk
NDRlMmQwMjhhNzAwODg2MzZmZjI2NjA2Mzc3ZWJlZGRmOTc3YzUuLjdlZjBjYTliNDBiYTA0ZDg5
MDY1NjZlODkyODg2OTk3ZTJkZDM2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1ldGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJF
bGVtZW50LmNwcApAQCAtMjI5LDggKzIyOSw4IEBAIHZvaWQgSFRNTE1ldGVyRWxlbWVudDo6ZGlk
QWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290JiByb290KQogICAgIHN0YXRpYyBNYWlu
VGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBzaGFkb3dTdHlsZShTdHJpbmdJbXBs
OjpjcmVhdGVXaXRob3V0Q29weWluZyhtZXRlckVsZW1lbnRTaGFkb3dVc2VyQWdlbnRTdHlsZVNo
ZWV0LCBzaXplb2YobWV0ZXJFbGVtZW50U2hhZG93VXNlckFnZW50U3R5bGVTaGVldCkpKTsKIAog
ICAgIGF1dG8gc3R5bGUgPSBIVE1MU3R5bGVFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjpzdHls
ZVRhZywgZG9jdW1lbnQoKSwgZmFsc2UpOwotICAgIHN0eWxlLT5zZXRUZXh0Q29udGVudChzaGFk
b3dTdHlsZSk7Ci0gICAgcm9vdC5hcHBlbmRDaGlsZChzdHlsZSk7CisgICAgc3R5bGUtPnNldFRl
eHRDb250ZW50KFN0cmluZyB7IHNoYWRvd1N0eWxlIH0pOworICAgIHJvb3QuYXBwZW5kQ2hpbGQo
V1RGTW92ZShzdHlsZSkpOwogCiAgICAgLy8gUHNldWRvcyBhcmUgc2V0IHRvIGFsbG93IGF1dGhv
ciBzdHlsaW5nLgogICAgIGF1dG8gaW5uZXIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3Vt
ZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAppbmRleCBj
MDE3MzMzNzg4NmZiNzljZTJiYzc5OWYzMGZiNDhhNjRkMGFhNDk4Li5lMjBkM2RhZDQ3ZTE0MDdh
YzI0MzBkNWQ5OTNkNGU3NGZlMjZlMTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPcHRpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRp
b25FbGVtZW50LmNwcApAQCAtNzAsMTIgKzcwLDEyIEBAIFJlZjxIVE1MT3B0aW9uRWxlbWVudD4g
SFRNTE9wdGlvbkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRNTE9wdGlvbkVsZW1lbnQodGFnTmFtZSwgZG9j
dW1lbnQpKTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPEhUTUxPcHRpb25FbGVtZW50Pj4gSFRNTE9w
dGlvbkVsZW1lbnQ6OmNyZWF0ZUZvckxlZ2FjeUZhY3RvcnlGdW5jdGlvbihEb2N1bWVudCYgZG9j
dW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUsIGJvb2wg
ZGVmYXVsdFNlbGVjdGVkLCBib29sIHNlbGVjdGVkKQorRXhjZXB0aW9uT3I8UmVmPEhUTUxPcHRp
b25FbGVtZW50Pj4gSFRNTE9wdGlvbkVsZW1lbnQ6OmNyZWF0ZUZvckxlZ2FjeUZhY3RvcnlGdW5j
dGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZyYmIHRleHQsIGNvbnN0IEF0b21TdHJpbmcm
IHZhbHVlLCBib29sIGRlZmF1bHRTZWxlY3RlZCwgYm9vbCBzZWxlY3RlZCkKIHsKICAgICBhdXRv
IGVsZW1lbnQgPSBjcmVhdGUoZG9jdW1lbnQpOwogCiAgICAgaWYgKCF0ZXh0LmlzRW1wdHkoKSkg
ewotICAgICAgICBhdXRvIGFwcGVuZFJlc3VsdCA9IGVsZW1lbnQtPmFwcGVuZENoaWxkKFRleHQ6
OmNyZWF0ZShkb2N1bWVudCwgdGV4dCkpOworICAgICAgICBhdXRvIGFwcGVuZFJlc3VsdCA9IGVs
ZW1lbnQtPmFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVudCwgV1RGTW92ZSh0ZXh0KSkp
OwogICAgICAgICBpZiAoYXBwZW5kUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAg
cmV0dXJuIGFwcGVuZFJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgfQpAQCAtMTEyLDcg
KzExMiw3IEBAIFN0cmluZyBIVE1MT3B0aW9uRWxlbWVudDo6dGV4dCgpIGNvbnN0CiAgICAgcmV0
dXJuIHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhkb2N1bWVudCgpLmRpc3BsYXlT
dHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcodGV4dCkpLnNpbXBsaWZ5V2hpdGVTcGFjZShpc0hUTUxT
cGFjZSk7CiB9CiAKLXZvaWQgSFRNTE9wdGlvbkVsZW1lbnQ6OnNldFRleHQoY29uc3QgU3RyaW5n
ICZ0ZXh0KQordm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6c2V0VGV4dChTdHJpbmcmJiB0ZXh0KQog
ewogICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKIApAQCAtMTI2LDEwICsxMjYsMTAg
QEAgdm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6c2V0VGV4dChjb25zdCBTdHJpbmcgJnRleHQpCiAg
ICAgLy8gSGFuZGxlIHRoZSBjb21tb24gc3BlY2lhbCBjYXNlIHdoZXJlIHRoZXJlJ3MgZXhhY3Rs
eSAxIGNoaWxkIG5vZGUsIGFuZCBpdCdzIGEgdGV4dCBub2RlLgogICAgIFJlZlB0ciBjaGlsZCA9
IGZpcnN0Q2hpbGQoKTsKICAgICBpZiAoaXM8VGV4dD4oY2hpbGQpICYmICFjaGlsZC0+bmV4dFNp
YmxpbmcoKSkKLSAgICAgICAgZG93bmNhc3Q8VGV4dD4oKmNoaWxkKS5zZXREYXRhKHRleHQpOwor
ICAgICAgICBkb3duY2FzdDxUZXh0PigqY2hpbGQpLnNldERhdGEoV1RGTW92ZSh0ZXh0KSk7CiAg
ICAgZWxzZSB7CiAgICAgICAgIHJlbW92ZUNoaWxkcmVuKCk7Ci0gICAgICAgIGFwcGVuZENoaWxk
KFRleHQ6OmNyZWF0ZShkb2N1bWVudCgpLCB0ZXh0KSk7CisgICAgICAgIGFwcGVuZENoaWxkKFRl
eHQ6OmNyZWF0ZShkb2N1bWVudCgpLCBXVEZNb3ZlKHRleHQpKSk7CiAgICAgfQogICAgIAogICAg
IGlmIChzZWxlY3RJc01lbnVMaXN0ICYmIHNlbGVjdC0+c2VsZWN0ZWRJbmRleCgpICE9IG9sZFNl
bGVjdGVkSW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25F
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmgKaW5kZXgg
NmUwYmY1Yzc4NzYzMmFmMDk0NTc4ZDhiOTdmZWY5MDhjM2MyZjFiNS4uOTg0ODhhNDcyMDExODE3
ZjI0MjU4NjNmZmQyYjFlNzhmNjZmMmMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3B0aW9uRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlv
bkVsZW1lbnQuaApAQCAtMzcsMTAgKzM3LDEwIEBAIGNsYXNzIEhUTUxPcHRpb25FbGVtZW50IGZp
bmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhUTUxP
cHRpb25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKICAgICBzdGF0aWMgUmVmPEhUTUxPcHRp
b25FbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7Ci0gICAg
c3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxIVE1MT3B0aW9uRWxlbWVudD4+IGNyZWF0ZUZvckxlZ2Fj
eUZhY3RvcnlGdW5jdGlvbihEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgQXRv
bVN0cmluZyYgdmFsdWUsIGJvb2wgZGVmYXVsdFNlbGVjdGVkLCBib29sIHNlbGVjdGVkKTsKKyAg
ICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEhUTUxPcHRpb25FbGVtZW50Pj4gY3JlYXRlRm9yTGVn
YWN5RmFjdG9yeUZ1bmN0aW9uKERvY3VtZW50JiwgU3RyaW5nJiYgdGV4dCwgY29uc3QgQXRvbVN0
cmluZyYgdmFsdWUsIGJvb2wgZGVmYXVsdFNlbGVjdGVkLCBib29sIHNlbGVjdGVkKTsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0ZXh0KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRUZXh0KGNv
bnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0VGV4dChTdHJpbmcmJik7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBpbnQgaW5kZXgoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRw
dXRFbGVtZW50LmNwcAppbmRleCAxZmExNmVlNzQ4NDEzYTJjZDkzMzM1YTY3NTc4OGQ1YTg4Mzhl
ZGMwLi5kM2I2MTA4MTQ4YTgwZTg1ZWRjZjYyODE5ZWIxNGY5NTkwYjgwNjBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcApAQCAtODcsMTAgKzg3LDEwIEBAIFN0
cmluZyBIVE1MT3V0cHV0RWxlbWVudDo6dmFsdWUoKSBjb25zdAogICAgIHJldHVybiB0ZXh0Q29u
dGVudCgpOwogfQogCi12b2lkIEhUTUxPdXRwdXRFbGVtZW50OjpzZXRWYWx1ZShjb25zdCBTdHJp
bmcmIHZhbHVlKQordm9pZCBIVE1MT3V0cHV0RWxlbWVudDo6c2V0VmFsdWUoU3RyaW5nJiYgdmFs
dWUpCiB7CiAgICAgbV9kZWZhdWx0VmFsdWVPdmVycmlkZSA9IGRlZmF1bHRWYWx1ZSgpOwotICAg
IHN0cmluZ1JlcGxhY2VBbGwodmFsdWUpOworICAgIHN0cmluZ1JlcGxhY2VBbGwoV1RGTW92ZSh2
YWx1ZSkpOwogfQogCiBTdHJpbmcgSFRNTE91dHB1dEVsZW1lbnQ6OmRlZmF1bHRWYWx1ZSgpIGNv
bnN0CkBAIC05OCwxMiArOTgsMTIgQEAgU3RyaW5nIEhUTUxPdXRwdXRFbGVtZW50OjpkZWZhdWx0
VmFsdWUoKSBjb25zdAogICAgIHJldHVybiBtX2RlZmF1bHRWYWx1ZU92ZXJyaWRlLmlzTnVsbCgp
ID8gdGV4dENvbnRlbnQoKSA6IG1fZGVmYXVsdFZhbHVlT3ZlcnJpZGU7CiB9CiAKLXZvaWQgSFRN
TE91dHB1dEVsZW1lbnQ6OnNldERlZmF1bHRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQordm9p
ZCBIVE1MT3V0cHV0RWxlbWVudDo6c2V0RGVmYXVsdFZhbHVlKFN0cmluZyYmIHZhbHVlKQogewog
ICAgIGlmIChtX2RlZmF1bHRWYWx1ZU92ZXJyaWRlLmlzTnVsbCgpKQotICAgICAgICBzdHJpbmdS
ZXBsYWNlQWxsKHZhbHVlKTsKKyAgICAgICAgc3RyaW5nUmVwbGFjZUFsbChXVEZNb3ZlKHZhbHVl
KSk7CiAgICAgZWxzZQotICAgICAgICBtX2RlZmF1bHRWYWx1ZU92ZXJyaWRlID0gdmFsdWU7Cisg
ICAgICAgIG1fZGVmYXVsdFZhbHVlT3ZlcnJpZGUgPSBXVEZNb3ZlKHZhbHVlKTsKIH0KIAogRE9N
VG9rZW5MaXN0JiBIVE1MT3V0cHV0RWxlbWVudDo6aHRtbEZvcigpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPdXRwdXRFbGVtZW50LmgKaW5kZXggZTQ4NzE3MTMyNjMzYjE0OWVkN2MzNWY2MWQwODQy
MTNiYTRjMTQ2ZC4uMDJjNDljZTAwYTY0NjU4NGYwZGQ4ZjE2MTE3ZmQxYzQwMmRhZmEzNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuaApAQCAtNDQsOSArNDQsOSBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxIVE1MT3V0cHV0RWxlbWVudD4gY3JlYXRlKERvY3VtZW50
Jik7CiAKICAgICBTdHJpbmcgdmFsdWUoKSBjb25zdDsKLSAgICB2b2lkIHNldFZhbHVlKGNvbnN0
IFN0cmluZyYpOworICAgIHZvaWQgc2V0VmFsdWUoU3RyaW5nJiYpOwogICAgIFN0cmluZyBkZWZh
dWx0VmFsdWUoKSBjb25zdDsKLSAgICB2b2lkIHNldERlZmF1bHRWYWx1ZShjb25zdCBTdHJpbmcm
KTsKKyAgICB2b2lkIHNldERlZmF1bHRWYWx1ZShTdHJpbmcmJik7CiAgICAgRE9NVG9rZW5MaXN0
JiBodG1sRm9yKCk7CiAgICAgCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3Jp
cHRFbGVtZW50LmNwcAppbmRleCBiNTM1MDllYmYzZjcyNDgzZDdkYmM1MWFmZGQ3OTZjZjU1ZDcy
NjA5Li4wZTc4MjNhNWZlYmI2NDMwMzUyZjY1MjYzNjNkN2ExYmQ5MDVlYjMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcApAQCAtODUsOSArODUsOSBAQCB2b2lk
IEhUTUxTY3JpcHRFbGVtZW50OjpkaWRGaW5pc2hJbnNlcnRpbmdOb2RlKCkKIH0KIAogLy8gaHR0
cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc2NyaXB0aW5nLmh0bWwjZG9tLXNj
cmlwdC10ZXh0Ci12b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpzZXRUZXh0KGNvbnN0IFN0cmluZyYg
dmFsdWUpCit2b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpzZXRUZXh0KFN0cmluZyYmIHZhbHVlKQog
ewotICAgIHNldFRleHRDb250ZW50KHZhbHVlKTsKKyAgICBzZXRUZXh0Q29udGVudChXVEZNb3Zl
KHZhbHVlKSk7CiB9CiAKIHZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6OnNldEFzeW5jKGJvb2wgYXN5
bmMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmgKaW5kZXggNjAzY2ZlMTAy
OGJlYzg5OGU5MDI3ZGU2ZGIwMDY4NjMxODRjZWZhYS4uYzA0MzAzNzBjZjM5NjE0ZmFhNzgwZDY1
MmUwZTI2MGYyYjk3ZTk0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2Ny
aXB0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQu
aApAQCAtMzQsNyArMzQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxIVE1MU2NyaXB0RWxl
bWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIGJvb2wgd2FzSW5z
ZXJ0ZWRCeVBhcnNlciwgYm9vbCBhbHJlYWR5U3RhcnRlZCA9IGZhbHNlKTsKIAogICAgIFN0cmlu
ZyB0ZXh0KCkgY29uc3QgeyByZXR1cm4gc2NyaXB0Q29udGVudCgpOyB9Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRUZXh0KGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0VGV4dChTdHJpbmcmJik7CiAKICAgICBVUkwgc3JjKCkgY29uc3Q7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCmluZGV4IDJmMTBjZWQ4NDEzMWVk
N2U5ZGQxODdhMzQwMWNmZGNkZWM0YmE0M2UuLmY4ZGZlNTQ2NzQ5YmFhNjljZGE2NmFmYWM5MzIw
NjczZjgxODg3MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVh
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50
LmNwcApAQCAtNDA0LDcgKzQwNCw3IEBAIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6c2V0VmFs
dWVDb21tb24oY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgVGV4dEZpZWxkRXZlbnRCCiAgICAgICAg
IHJldHVybjsKIAogICAgIG1fdmFsdWUgPSBub3JtYWxpemVkVmFsdWU7Ci0gICAgc2V0SW5uZXJU
ZXh0VmFsdWUobV92YWx1ZSk7CisgICAgc2V0SW5uZXJUZXh0VmFsdWUoU3RyaW5nIHsgbV92YWx1
ZSB9KTsKICAgICBzZXRMYXN0Q2hhbmdlV2FzTm90VXNlckVkaXQoKTsKICAgICB1cGRhdGVQbGFj
ZWhvbGRlclZpc2liaWxpdHkoKTsKICAgICBpbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7CkBA
IC00MjgsOSArNDI4LDkgQEAgU3RyaW5nIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmRlZmF1bHRWYWx1
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIFRleHROb2RlVHJhdmVyc2FsOjpjaGlsZFRleHRDb250ZW50
KCp0aGlzKTsKIH0KIAotdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpzZXREZWZhdWx0VmFsdWUo
Y29uc3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUpCit2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNl
dERlZmF1bHRWYWx1ZShTdHJpbmcmJiBkZWZhdWx0VmFsdWUpCiB7Ci0gICAgc2V0VGV4dENvbnRl
bnQoZGVmYXVsdFZhbHVlKTsKKyAgICBzZXRUZXh0Q29udGVudChXVEZNb3ZlKGRlZmF1bHRWYWx1
ZSkpOwogfQogCiBTdHJpbmcgSFRNTFRleHRBcmVhRWxlbWVudDo6dmFsaWRhdGlvbk1lc3NhZ2Uo
KSBjb25zdApAQCAtNTYwLDcgKzU2MCw3IEBAIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6dXBk
YXRlUGxhY2Vob2xkZXJUZXh0KCkKICAgICAgICAgbV9wbGFjZWhvbGRlciA9IFRleHRDb250cm9s
UGxhY2Vob2xkZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CiAgICAgICAgIHVzZXJBZ2Vu
dFNoYWRvd1Jvb3QoKS0+aW5zZXJ0QmVmb3JlKCptX3BsYWNlaG9sZGVyLCBpbm5lclRleHRFbGVt
ZW50KCktPm5leHRTaWJsaW5nKCkpOwogICAgIH0KLSAgICBtX3BsYWNlaG9sZGVyLT5zZXRJbm5l
clRleHQocGxhY2Vob2xkZXJUZXh0KTsKKyAgICBtX3BsYWNlaG9sZGVyLT5zZXRJbm5lclRleHQo
U3RyaW5nIHsgcGxhY2Vob2xkZXJUZXh0IH0pOwogfQogCiBib29sIEhUTUxUZXh0QXJlYUVsZW1l
bnQ6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGV4dEFyZWFFbGVtZW50LmgKaW5kZXggZjFmY2E3ODljNjcyYmQ3NzI5MzJiYWI0NTZkMzAz
ZmQ4M2FmYmU1Ny4uNTg5MmEwYjEyMDhhYTQ5ZWZhZWI0NjI4NTY1YzA1MDU0ZTg2OTIxMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKQEAgLTQ2LDcgKzQ2LDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB2YWx1ZSgpIGNvbnN0IGZpbmFs
OwogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFZhbHVlKGNvbnN0IFN0
cmluZyYsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IgPSBEaXNwYXRjaE5vRXZlbnQsIFRleHRDb250
cm9sU2V0VmFsdWVTZWxlY3Rpb24gPSBUZXh0Q29udHJvbFNldFZhbHVlU2VsZWN0aW9uOjpTZXRT
ZWxlY3Rpb25Ub0VuZCkgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGRlZmF1bHRW
YWx1ZSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RGVmYXVsdFZhbHVlKGNv
bnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RGVmYXVsdFZhbHVlKFN0
cmluZyYmKTsKICAgICBpbnQgdGV4dExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlKCkubGVu
Z3RoKCk7IH0KICAgICBpbnQgZWZmZWN0aXZlTWF4TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbWF4
TGVuZ3RoKCk7IH0KICAgICAvLyBGb3IgVmFsaWRpdHlTdGF0ZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCBkNjZkOTllNWU0
NmYyNmM0Mjk4NmIzMTdmMDQ3YjllZWYwNjA3NzYyLi42ZmIxMGY2NzEyNWQ4NzNiMzdhZjI1M2Zh
MGUwNWY1YzIzYWQ4YmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtNjExLDcgKzYxMSw3IEBAIHN0YXRpYyBTdHJpbmcg
aW5uZXJUZXh0VmFsdWVGcm9tKFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudCYgaW5uZXJUZXh0
KQogICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKIH0KIAotdm9pZCBIVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudDo6c2V0SW5uZXJUZXh0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3Zv
aWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldElubmVyVGV4dFZhbHVlKFN0cmluZyYm
IHZhbHVlKQogewogICAgIExheW91dERpc2FsbG93ZWRTY29wZSBsYXlvdXREaXNhbGxvd2VkU2Nv
cGUoTGF5b3V0RGlzYWxsb3dlZFNjb3BlOjpSZWFzb246OlBlcmZvcm1hbmNlT3B0aW1pemF0aW9u
KTsKICAgICBhdXRvIGlubmVyVGV4dCA9IGlubmVyVGV4dEVsZW1lbnRDcmVhdGluZ1NoYWRvd1N1
YnRyZWVJZk5lZWRlZCgpOwpAQCAtNjQzLDkgKzY0MywxMCBAQCB2b2lkIEhUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50OjpzZXRJbm5lclRleHRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQogICAg
ICAgICAgICAgLy8gRXZlbnRzIGRpc3BhdGNoZWQgb24gdGhlIGlubmVyIHRleHQgZWxlbWVudCBj
YW5ub3QgZXhlY3V0ZSBhcmJpdHJhcnkgYXV0aG9yIHNjcmlwdHMuCiAgICAgICAgICAgICBTY3Jp
cHREaXNhbGxvd2VkU2NvcGU6OkV2ZW50QWxsb3dlZFNjb3BlIGFsbG93ZWRTY29wZSgqdXNlckFn
ZW50U2hhZG93Um9vdCgpKTsKIAotICAgICAgICAgICAgaW5uZXJUZXh0LT5zZXRJbm5lclRleHQo
dmFsdWUpOworICAgICAgICAgICAgYm9vbCBlbmRzV2l0aE5ld0xpbmUgPSB2YWx1ZS5lbmRzV2l0
aCgnXG4nKSB8fCB2YWx1ZS5lbmRzV2l0aCgnXHInKTsKKyAgICAgICAgICAgIGlubmVyVGV4dC0+
c2V0SW5uZXJUZXh0KFdURk1vdmUodmFsdWUpKTsKIAotICAgICAgICAgICAgaWYgKHZhbHVlLmVu
ZHNXaXRoKCdcbicpIHx8IHZhbHVlLmVuZHNXaXRoKCdccicpKQorICAgICAgICAgICAgaWYgKGVu
ZHNXaXRoTmV3TGluZSkKICAgICAgICAgICAgICAgICBpbm5lclRleHQtPmFwcGVuZENoaWxkKEhU
TUxCUkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCmluZGV4IDgwMzE0
ZDFiMThhNzhmZGEwZjI4YTM5YzMyYjA0OWZlOWUzMjIzZDAuLjdkOTNmOTUwY2M5ZGU4MGQyOTFm
MDE4NzZlYTZmNzY5OGMyYzQxMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTk3LDcgKzk3LDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBzZWxlY3Rpb25DaGFuZ2VkKGJvb2wgc2hvdWxkRmlyZVNlbGVjdEV2ZW50KTsKICAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGxhc3RDaGFuZ2VXYXNVc2VyRWRpdCgpIGNvbnN0OwotICAgIHZv
aWQgc2V0SW5uZXJUZXh0VmFsdWUoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRJbm5lclRl
eHRWYWx1ZShTdHJpbmcmJik7CiAgICAgU3RyaW5nIGlubmVyVGV4dFZhbHVlKCkgY29uc3Q7CiAK
ICAgICBTdHJpbmcgZGlyZWN0aW9uRm9yRm9ybURhdGEoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwCmluZGV4IGE2NzA3YmU3MjhhMTk4N2NlZjE3MzgwNmMy
YmQ0NjUxYzJhYjZiNjMuLjE3MzM5NTM4MzU1MWRkOGQ4MjY4MmRiZjViMzM2YWJmNmQ5MWVkNjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcApAQCAtOTAsOSArOTAs
OSBAQCBTdHJpbmdXaXRoRGlyZWN0aW9uIEhUTUxUaXRsZUVsZW1lbnQ6OmNvbXB1dGVkVGV4dFdp
dGhEaXJlY3Rpb24oKQogICAgIHJldHVybiB7IHRleHQoKSwgZGlyZWN0aW9uIH07CiB9CiAKLXZv
aWQgSFRNTFRpdGxlRWxlbWVudDo6c2V0VGV4dChjb25zdCBTdHJpbmcmIHZhbHVlKQordm9pZCBI
VE1MVGl0bGVFbGVtZW50OjpzZXRUZXh0KFN0cmluZyYmIHZhbHVlKQogewotICAgIHNldFRleHRD
b250ZW50KHZhbHVlKTsKKyAgICBzZXRUZXh0Q29udGVudChXVEZNb3ZlKHZhbHVlKSk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmgKaW5kZXggOGMzN2E4OWIxMDk2
N2YwZWI0OTcxNjA2YTdlYzA0NWJlNjc0YjBlNC4uODFkMTRiZmQxNzU1ZDk3MjVjNGEwZGJmMDAw
YWFjNDMzOWIyMmQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmgKQEAg
LTMzLDcgKzMzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTFRpdGxlRWxlbWVudD4g
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIHRleHQoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRl
eHQoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUZXh0KFN0cmlu
ZyYmKTsKIAogICAgIGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRleHRXaXRoRGlyZWN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV90aXRsZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRG
aWVsZElucHV0VHlwZS5jcHAKaW5kZXggMjMzMDgyY2U3M2JiZGI4YmU4ODA0NTdhM2ZhNTA2NTAw
MDJlMDZlZC4uYWU1ODNiODA4MjRhOWIxZDdlNGZhOGU3NDE1ZjI3NjRjYTVhZjNjNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAtNjYwLDcgKzY2MCw3
IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjp1cGRhdGVQbGFjZWhvbGRlclRleHQoKQogICAg
ICAgICBtX3BsYWNlaG9sZGVyID0gVGV4dENvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ6OmNyZWF0
ZShlbGVtZW50KCktPmRvY3VtZW50KCkpOwogICAgICAgICBlbGVtZW50KCktPnVzZXJBZ2VudFNo
YWRvd1Jvb3QoKS0+aW5zZXJ0QmVmb3JlKCptX3BsYWNlaG9sZGVyLCBtX2NvbnRhaW5lciA/IG1f
Y29udGFpbmVyLmdldCgpIDogaW5uZXJUZXh0RWxlbWVudCgpLmdldCgpKTsKICAgICB9Ci0gICAg
bV9wbGFjZWhvbGRlci0+c2V0SW5uZXJUZXh0KHBsYWNlaG9sZGVyVGV4dCk7CisgICAgbV9wbGFj
ZWhvbGRlci0+c2V0SW5uZXJUZXh0KFdURk1vdmUocGxhY2Vob2xkZXJUZXh0KSk7CiB9CiAKIGJv
b2wgVGV4dEZpZWxkSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YShET01Gb3JtRGF0YSYgZm9ybURh
dGEpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9BdG9tSFRN
TFRva2VuLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9BdG9tSFRNTFRva2VuLmgKaW5k
ZXggNDY0ZWMxMDc1ZTQzY2UzZjI4OGE3MDc2YTI2ZjExYzI0MmEyNWFmMC4uOWVkN2E2YTVhNWVk
NDRhYjZiM2Y1YWZlZDIyM2UwYWM4NTM4ZTcyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvQXRvbUhUTUxUb2tlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0F0b21IVE1MVG9rZW4uaApAQCAtNzQsNiArNzQsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ29t
bWVudAogCiAgICAgY29uc3QgU3RyaW5nJiBjb21tZW50KCkgY29uc3Q7CisgICAgU3RyaW5nJiBj
b21tZW50KCk7CiAKICAgICBIYXNEdXBsaWNhdGVBdHRyaWJ1dGUgaGFzRHVwbGljYXRlQXR0cmli
dXRlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNEdXBsaWNhdGVBdHRyaWJ1dGU7IH07CiAKQEAgLTE2
Miw2ICsxNjMsMTIgQEAgaW5saW5lIGNvbnN0IFN0cmluZyYgQXRvbUhUTUxUb2tlbjo6Y29tbWVu
dCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGF0YTsKIH0KIAoraW5saW5lIFN0cmluZyYgQXRvbUhU
TUxUb2tlbjo6Y29tbWVudCgpCit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW46OkNv
bW1lbnQpOworICAgIHJldHVybiBtX2RhdGE7Cit9CisKIGlubGluZSBib29sIEF0b21IVE1MVG9r
ZW46OmZvcmNlUXVpcmtzKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tl
bjo6RE9DVFlQRSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
Q29uc3RydWN0aW9uU2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29u
c3RydWN0aW9uU2l0ZS5jcHAKaW5kZXggMTVkY2ZmYjgyZjE4OTQ5MDIyMWE5Y2Y4MjU2OTViY2Rh
M2Y4NmI0OS4uMzYxMDZlMzVkMjMzMTMxYWVlNGIwZTVjZWYxMzk4YzEyMGE0ZjNhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNw
cApAQCAtNDUyLDIwICs0NTIsMjAgQEAgdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0
RG9jdHlwZShBdG9tSFRNTFRva2VuJiYgdG9rZW4pCiB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRl
OjppbnNlcnRDb21tZW50KEF0b21IVE1MVG9rZW4mJiB0b2tlbikKIHsKICAgICBBU1NFUlQodG9r
ZW4udHlwZSgpID09IEhUTUxUb2tlbjo6Q29tbWVudCk7Ci0gICAgYXR0YWNoTGF0ZXIoY3VycmVu
dE5vZGUoKSwgQ29tbWVudDo6Y3JlYXRlKG93bmVyRG9jdW1lbnRGb3JDdXJyZW50Tm9kZSgpLCB0
b2tlbi5jb21tZW50KCkpKTsKKyAgICBhdHRhY2hMYXRlcihjdXJyZW50Tm9kZSgpLCBDb21tZW50
OjpjcmVhdGUob3duZXJEb2N1bWVudEZvckN1cnJlbnROb2RlKCksIFdURk1vdmUodG9rZW4uY29t
bWVudCgpKSkpOwogfQogCiB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRDb21tZW50
T25Eb2N1bWVudChBdG9tSFRNTFRva2VuJiYgdG9rZW4pCiB7CiAgICAgQVNTRVJUKHRva2VuLnR5
cGUoKSA9PSBIVE1MVG9rZW46OkNvbW1lbnQpOwotICAgIGF0dGFjaExhdGVyKG1fYXR0YWNobWVu
dFJvb3QsIENvbW1lbnQ6OmNyZWF0ZShtX2RvY3VtZW50LCB0b2tlbi5jb21tZW50KCkpKTsKKyAg
ICBhdHRhY2hMYXRlcihtX2F0dGFjaG1lbnRSb290LCBDb21tZW50OjpjcmVhdGUobV9kb2N1bWVu
dCwgV1RGTW92ZSh0b2tlbi5jb21tZW50KCkpKSk7CiB9CiAKIHZvaWQgSFRNTENvbnN0cnVjdGlv
blNpdGU6Omluc2VydENvbW1lbnRPbkhUTUxIdG1sRWxlbWVudChBdG9tSFRNTFRva2VuJiYgdG9r
ZW4pCiB7CiAgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OkNvbW1lbnQpOwog
ICAgIENvbnRhaW5lck5vZGUmIHBhcmVudCA9IG1fb3BlbkVsZW1lbnRzLnJvb3ROb2RlKCk7Ci0g
ICAgYXR0YWNoTGF0ZXIocGFyZW50LCBDb21tZW50OjpjcmVhdGUocGFyZW50LmRvY3VtZW50KCks
IHRva2VuLmNvbW1lbnQoKSkpOworICAgIGF0dGFjaExhdGVyKHBhcmVudCwgQ29tbWVudDo6Y3Jl
YXRlKHBhcmVudC5kb2N1bWVudCgpLCBXVEZNb3ZlKHRva2VuLmNvbW1lbnQoKSkpKTsKIH0KIAog
dm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0SFRNTEhlYWRFbGVtZW50KEF0b21IVE1M
VG9rZW4mJiB0b2tlbikKQEAgLTYwMCw3ICs2MDAsNyBAQCB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25T
aXRlOjppbnNlcnRUZXh0Tm9kZShjb25zdCBTdHJpbmcmIGNoYXJhY3RlcnMsIFdoaXRlc3BhY2VN
bwogICAgICAgICBpZiAoIXRleHROb2RlLT5sZW5ndGgoKSkgewogICAgICAgICAgICAgU3RyaW5n
IHN1YnN0cmluZyA9IGNoYXJhY3RlcnMuc3Vic3RyaW5nKGN1cnJlbnRQb3NpdGlvbik7CiAgICAg
ICAgICAgICBBdG9tU3RyaW5nIHN1YnN0cmluZ0F0b20gPSBtX3doaXRlc3BhY2VDYWNoZS5sb29r
dXAoc3Vic3RyaW5nLCB3aGl0ZXNwYWNlTW9kZSk7Ci0gICAgICAgICAgICB0ZXh0Tm9kZSA9IFRl
eHQ6OmNyZWF0ZSh0YXNrLnBhcmVudC0+ZG9jdW1lbnQoKSwgc3Vic3RyaW5nQXRvbS5pc051bGwo
KSA/IHN1YnN0cmluZyA6IHN1YnN0cmluZ0F0b20uc3RyaW5nKCkpOworICAgICAgICAgICAgdGV4
dE5vZGUgPSBUZXh0OjpjcmVhdGUodGFzay5wYXJlbnQtPmRvY3VtZW50KCksIHN1YnN0cmluZ0F0
b20uaXNOdWxsKCkgPyBXVEZNb3ZlKHN1YnN0cmluZykgOiBzdWJzdHJpbmdBdG9tLnJlbGVhc2VT
dHJpbmcoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBjdXJyZW50UG9zaXRpb24gKz0gdGV4dE5v
ZGUtPmxlbmd0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0
ZVRpbWVFZGl0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGlt
ZUVkaXRFbGVtZW50LmNwcAppbmRleCBkN2RmYTczMGZhY2Y3MDc3OGNlNWRhZjYzNGQ3N2IxMTEx
MmJjOGEzLi40ZTI3Njc2Y2RhODFiNTBlMzVhNTk4MTEwZWU3MGFlZmVhZjE1YWNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUVkaXRFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUVkaXRFbGVtZW50LmNwcApA
QCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIERhdGVUaW1lRm9ybWF0
OjpUb2tlbkhhbmRsZXIgZnVuY3Rpb25zOgogICAgIHZvaWQgdmlzaXRGaWVsZChEYXRlVGltZUZv
cm1hdDo6RmllbGRUeXBlLCBpbnQpOwotICAgIHZvaWQgdmlzaXRMaXRlcmFsKGNvbnN0IFN0cmlu
ZyYpOworICAgIHZvaWQgdmlzaXRMaXRlcmFsKFN0cmluZyYmKTsKIAogICAgIERhdGVUaW1lRWRp
dEVsZW1lbnQmIG1fZWRpdEVsZW1lbnQ7CiAgICAgY29uc3QgRGF0ZVRpbWVFZGl0RWxlbWVudDo6
TGF5b3V0UGFyYW1ldGVycyYgbV9wYXJhbWV0ZXJzOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQg
RGF0ZVRpbWVFZGl0QnVpbGRlcjo6dmlzaXRGaWVsZChEYXRlVGltZUZvcm1hdDo6RmllbGRUeXBl
IGZpZWxkVHlwZSwgaW50IGNvCiAgICAgfQogfQogCi12b2lkIERhdGVUaW1lRWRpdEJ1aWxkZXI6
OnZpc2l0TGl0ZXJhbChjb25zdCBTdHJpbmcmIHRleHQpCit2b2lkIERhdGVUaW1lRWRpdEJ1aWxk
ZXI6OnZpc2l0TGl0ZXJhbChTdHJpbmcmJiB0ZXh0KQogewogICAgIEFTU0VSVCh0ZXh0Lmxlbmd0
aCgpKTsKIApAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgRGF0ZVRpbWVFZGl0QnVpbGRlcjo6dmlz
aXRMaXRlcmFsKGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBpZiAodGV4dC5lbmRzV2l0aCgnICcp
KQogICAgICAgICBlbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWFy
Z2luSW5saW5lRW5kLCAtMSwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7CiAKLSAgICBlbGVtZW50LT5h
cHBlbmRDaGlsZChUZXh0OjpjcmVhdGUobV9lZGl0RWxlbWVudC5kb2N1bWVudCgpLCB0ZXh0KSk7
CisgICAgZWxlbWVudC0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKG1fZWRpdEVsZW1lbnQuZG9j
dW1lbnQoKSwgV1RGTW92ZSh0ZXh0KSkpOwogICAgIG1fZWRpdEVsZW1lbnQuZmllbGRzV3JhcHBl
ckVsZW1lbnQoKS5hcHBlbmRDaGlsZChlbGVtZW50KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnQuY3BwCmluZGV4IDllNGY2MzM4
ZWU4MDZjZGQ1ZGI1NjVkM2VhOTY2NWU0OWFlNDYzOTkuLjQxYWNkYmExODBiYmE0NGYzOGExZmRi
Yjk1NjQwODQ2ZGZlMDJjZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0RhdGVUaW1lRmllbGRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9EYXRlVGltZUZpZWxkRWxlbWVudC5jcHAKQEAgLTE4OCw3ICsxODgsNyBAQCBTdHJpbmcgRGF0
ZVRpbWVGaWVsZEVsZW1lbnQ6OnZpc2libGVWYWx1ZSgpIGNvbnN0CiB2b2lkIERhdGVUaW1lRmll
bGRFbGVtZW50Ojp1cGRhdGVWaXNpYmxlVmFsdWUoRXZlbnRCZWhhdmlvciBldmVudEJlaGF2aW9y
KQogewogICAgIGlmICghZmlyc3RDaGlsZCgpKQotICAgICAgICBhcHBlbmRDaGlsZChUZXh0Ojpj
cmVhdGUoZG9jdW1lbnQoKSwgZW1wdHlTdHJpbmcoKSkpOworICAgICAgICBhcHBlbmRDaGlsZChU
ZXh0OjpjcmVhdGUoZG9jdW1lbnQoKSwgU3RyaW5nIHsgZW1wdHlTdHJpbmcoKSB9KSk7CiAKICAg
ICBhdXRvJiB0ZXh0Tm9kZSA9IGRvd25jYXN0PFRleHQ+KCpmaXJzdENoaWxkKCkpOwogICAgIFN0
cmluZyBuZXdWaXNpYmxlVmFsdWUgPSB2aXNpYmxlVmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAppbmRleCA3N2M2YTE2MGJhOTViZDVhMjg2YzVkYTc0
OTM5ODM1ZTUxYjlhZDNkLi5iMzNlMmFhMjA0MDhhY2YzZjExYTE5NDFhNzk0NDJmNTIwZTRkMGYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCkBAIC01MTAs
OCArNTEwLDggQEAgdm9pZCBUZXh0VHJhY2tDdWU6OnJlYnVpbGREaXNwbGF5VHJlZSgpCiAgICAg
ICAgIGlmIChjb25zdCBhdXRvJiBzdHlsZVNoZWV0cyA9IHRyYWNrKCktPnN0eWxlU2hlZXRzKCkp
IHsKICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgY3NzU3RyaW5nIDogKnN0eWxlU2hlZXRz
KSB7CiAgICAgICAgICAgICAgICAgYXV0byBzdHlsZSA9IEhUTUxTdHlsZUVsZW1lbnQ6OmNyZWF0
ZShIVE1MTmFtZXM6OnN0eWxlVGFnLCBtX2Rpc3BsYXlUcmVlLT5kb2N1bWVudCgpLCBmYWxzZSk7
Ci0gICAgICAgICAgICAgICAgc3R5bGUtPnNldFRleHRDb250ZW50KGNzc1N0cmluZyk7Ci0gICAg
ICAgICAgICAgICAgbV9kaXNwbGF5VHJlZS0+YXBwZW5kQ2hpbGQoc3R5bGUpOworICAgICAgICAg
ICAgICAgIHN0eWxlLT5zZXRUZXh0Q29udGVudChTdHJpbmcgeyBjc3NTdHJpbmcgfSk7CisgICAg
ICAgICAgICAgICAgbV9kaXNwbGF5VHJlZS0+YXBwZW5kQ2hpbGQoV1RGTW92ZShzdHlsZSkpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9WVFRDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRD
dWUuY3BwCmluZGV4IGU3M2RjY2EyMzhkYThjYWFhY2U3ZjU5MDEzY2Y2Y2E3MzAzNjllZDIuLmFi
Zjc1Njk2NGMzNzllODc3NGRhY2VhYjgxMjBlMjhmY2QxNGFhN2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1ZUVEN1ZS5jcHAKQEAgLTEwMDEsMTYgKzEwMDEsMTYgQEAgUmVmUHRyPFRleHRUcmFj
a0N1ZUJveD4gVlRUQ3VlOjpnZXREaXNwbGF5VHJlZShjb25zdCBJbnRTaXplJiB2aWRlb1NpemUs
IGludCBmb24KICAgICBpZiAoZGlzcGxheVRyZWUtPmRvY3VtZW50KCkucGFnZSgpKSB7CiAgICAg
ICAgIGF1dG8gY3NzU3RyaW5nID0gZGlzcGxheVRyZWUtPmRvY3VtZW50KCkucGFnZSgpLT5jYXB0
aW9uVXNlclByZWZlcmVuY2VzU3R5bGVTaGVldCgpOwogICAgICAgICBhdXRvIHN0eWxlID0gSFRN
TFN0eWxlRWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6c3R5bGVUYWcsIGRpc3BsYXlUcmVlLT5k
b2N1bWVudCgpLCBmYWxzZSk7Ci0gICAgICAgIHN0eWxlLT5zZXRUZXh0Q29udGVudChjc3NTdHJp
bmcpOwotICAgICAgICBkaXNwbGF5VHJlZS0+YXBwZW5kQ2hpbGQoc3R5bGUpOworICAgICAgICBz
dHlsZS0+c2V0VGV4dENvbnRlbnQoV1RGTW92ZShjc3NTdHJpbmcpKTsKKyAgICAgICAgZGlzcGxh
eVRyZWUtPmFwcGVuZENoaWxkKFdURk1vdmUoc3R5bGUpKTsKICAgICB9CiAKICAgICBjb25zdCBh
dXRvJiBzdHlsZVNoZWV0cyA9IHRyYWNrKCktPnN0eWxlU2hlZXRzKCk7CiAgICAgaWYgKHN0eWxl
U2hlZXRzKSB7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgY3NzU3RyaW5nIDogKnN0eWxlU2hl
ZXRzKSB7CiAgICAgICAgICAgICBhdXRvIHN0eWxlID0gSFRNTFN0eWxlRWxlbWVudDo6Y3JlYXRl
KEhUTUxOYW1lczo6c3R5bGVUYWcsIGRpc3BsYXlUcmVlLT5kb2N1bWVudCgpLCBmYWxzZSk7Ci0g
ICAgICAgICAgICBzdHlsZS0+c2V0VGV4dENvbnRlbnQoY3NzU3RyaW5nKTsKLSAgICAgICAgICAg
IGRpc3BsYXlUcmVlLT5hcHBlbmRDaGlsZChzdHlsZSk7CisgICAgICAgICAgICBzdHlsZS0+c2V0
VGV4dENvbnRlbnQoU3RyaW5nIHsgY3NzU3RyaW5nIH0pOworICAgICAgICAgICAgZGlzcGxheVRy
ZWUtPmFwcGVuZENoaWxkKFdURk1vdmUoc3R5bGUpKTsKICAgICAgICAgfQogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCmluZGV4IDhmZDFjMzM1YjA2
NjcwODUxNDk5M2VjYzlkN2JlNGMwY2VlOWZiMjYuLmY4ZGRiZDM4MDViNDU4MGE4ZDc2NDQ4OTEy
M2NkOTIxZWMyNjA1ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2Vi
VlRUUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNl
ci5jcHAKQEAgLTUxOSw3ICs1MTksNyBAQCBSZWY8RG9jdW1lbnRGcmFnbWVudD4gV2ViVlRUVHJl
ZUJ1aWxkZXI6OmJ1aWxkRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIGN1ZVRleHQpCiAgICAgYXV0
byBmcmFnbWVudCA9IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShtX2RvY3VtZW50KTsKIAogICAg
IGlmIChjdWVUZXh0LmlzRW1wdHkoKSkgewotICAgICAgICBmcmFnbWVudC0+cGFyc2VyQXBwZW5k
Q2hpbGQoVGV4dDo6Y3JlYXRlKG1fZG9jdW1lbnQsIGVtcHR5U3RyaW5nKCkpKTsKKyAgICAgICAg
ZnJhZ21lbnQtPnBhcnNlckFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShtX2RvY3VtZW50LCBTdHJp
bmcgeyBlbXB0eVN0cmluZygpIH0pKTsKICAgICAgICAgcmV0dXJuIGZyYWdtZW50OwogICAgIH0K
IApAQCAtNjUwLDcgKzY1MCw3IEBAIHZvaWQgV2ViVlRUVHJlZUJ1aWxkZXI6OmNvbnN0cnVjdFRy
ZWVGcm9tVG9rZW4oRG9jdW1lbnQmIGRvY3VtZW50KQogCiAgICAgc3dpdGNoIChtX3Rva2VuLnR5
cGUoKSkgewogICAgIGNhc2UgV2ViVlRUVG9rZW5UeXBlczo6Q2hhcmFjdGVyOiB7Ci0gICAgICAg
IG1fY3VycmVudE5vZGUtPnBhcnNlckFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVudCwg
bV90b2tlbi5jaGFyYWN0ZXJzKCkpKTsKKyAgICAgICAgbV9jdXJyZW50Tm9kZS0+cGFyc2VyQXBw
ZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50LCBTdHJpbmcgeyBtX3Rva2VuLmNoYXJhY3Rl
cnMoKSB9KSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFdlYlZUVFRva2VuVHlw
ZXM6OlN0YXJ0VGFnOiB7CkBAIC03MDksNyArNzA5LDcgQEAgdm9pZCBXZWJWVFRUcmVlQnVpbGRl
cjo6Y29uc3RydWN0VHJlZUZyb21Ub2tlbihEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgICAgIFN0
cmluZyBjaGFyYWN0ZXJzU3RyaW5nID0gbV90b2tlbi5jaGFyYWN0ZXJzKCk7CiAgICAgICAgIE1l
ZGlhVGltZSBwYXJzZWRUaW1lU3RhbXA7CiAgICAgICAgIGlmIChXZWJWVFRQYXJzZXI6OmNvbGxl
Y3RUaW1lU3RhbXAoY2hhcmFjdGVyc1N0cmluZywgcGFyc2VkVGltZVN0YW1wKSkKLSAgICAgICAg
ICAgIG1fY3VycmVudE5vZGUtPnBhcnNlckFwcGVuZENoaWxkKFByb2Nlc3NpbmdJbnN0cnVjdGlv
bjo6Y3JlYXRlKGRvY3VtZW50LCAidGltZXN0YW1wIl9zLCBjaGFyYWN0ZXJzU3RyaW5nKSk7Cisg
ICAgICAgICAgICBtX2N1cnJlbnROb2RlLT5wYXJzZXJBcHBlbmRDaGlsZChQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb246OmNyZWF0ZShkb2N1bWVudCwgInRpbWVzdGFtcCJfcywgV1RGTW92ZShjaGFyYWN0
ZXJzU3RyaW5nKSkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggZTZmYzc5YTAyMTEyNDRmY2M3ZTA5
NDkzY2JlZTkwYjA3ZTEyOGQxYS4uMjExYTNmMGMwYTk2NGQ3YTdjY2Q3MTFkNmFiOTBmNmRiNTlk
ZjRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTE3MCw3ICsx
NzAsNyBAQCBzdGF0aWMgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGRvY3VtZW50RnJhZ21lbnRG
cm9tRHJhZ0RhdGEoY29uc3QgRHJhZ0RhdGEmIGRyYQogICAgICAgICAgICAgICAgICAgICBpZiAo
dGl0bGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSB1cmw7CiAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGFuY2hvci0+YXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUodGl0bGUpKTsKKyAgICAgICAgICAgICAgICBhbmNob3ItPmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFdURk1vdmUodGl0bGUpKSk7CiAgICAg
ICAgICAgICAgICAgYXV0byBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21l
bnQoKTsKICAgICAgICAgICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoYW5jaG9yKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gZnJhZ21lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L0RhdGVUaW1lRm9ybWF0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L0RhdGVUaW1lRm9ybWF0LmgKaW5kZXggYTM3MjZkZmZiZTFmM2UxOWQ3YTgzMWQ3NzA3
NjkzZTE1YzY1NjY3Zi4uOGRlMTkwNDRhYWMwMjdiZjJlNmZhZWI1NTBkNDkwZjc5MWRhYjkwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9EYXRlVGltZUZvcm1hdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvRGF0ZVRpbWVGb3JtYXQuaApAQCAt
OTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5Ub2tl
bkhhbmRsZXIoKSA9IGRlZmF1bHQ7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdEZpZWxkKEZp
ZWxkVHlwZSwgaW50IG51bWJlck9mUGF0dGVybkNoYXJhY3RlcnMpID0gMDsKLSAgICAgICAgdmly
dHVhbCB2b2lkIHZpc2l0TGl0ZXJhbChjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgICAgIHZpcnR1
YWwgdm9pZCB2aXNpdExpdGVyYWwoU3RyaW5nJiYpID0gMDsKICAgICB9OwogCiAgICAgLy8gUmV0
dXJucyB0cnVlIGlmIHN1Y2NlZWRlZCwgZmFsc2UgaWYgZmFpbGVkLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1BsYXRmb3JtTG9jYWxlLmNwcAppbmRleCBmNDcyMDBiNTcyMTY4
ZDRlZWZhYTc0ZTkwNzU3MWFkNWM5MmFiMDE5Li5hMzJiYTkwZTNhYTkwMGNkNDAyODZkMGM3ZTEz
ODdhY2RmNjdhODNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Bs
YXRmb3JtTG9jYWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1BsYXRm
b3JtTG9jYWxlLmNwcApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8v
IERhdGVUaW1lRm9ybWF0OjpUb2tlbkhhbmRsZXIgZnVuY3Rpb25zLgogICAgIHZvaWQgdmlzaXRG
aWVsZChEYXRlVGltZUZvcm1hdDo6RmllbGRUeXBlLCBpbnQpIGZpbmFsOwotICAgIHZvaWQgdmlz
aXRMaXRlcmFsKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgdmlzaXRMaXRlcmFsKFN0
cmluZyYmKSBmaW5hbDsKIAogICAgIFN0cmluZyB6ZXJvUGFkU3RyaW5nKGNvbnN0IFN0cmluZyYs
IHNpemVfdCB3aWR0aCk7CiAgICAgdm9pZCBhcHBlbmROdW1iZXIoaW50IG51bWJlciwgc2l6ZV90
IHdpZHRoKTsKQEAgLTE2OCwxMCArMTY4LDEwIEBAIHZvaWQgRGF0ZVRpbWVTdHJpbmdCdWlsZGVy
Ojp2aXNpdEZpZWxkKERhdGVUaW1lRm9ybWF0OjpGaWVsZFR5cGUgZmllbGRUeXBlLCBpbnQKICAg
ICB9CiB9CiAKLXZvaWQgRGF0ZVRpbWVTdHJpbmdCdWlsZGVyOjp2aXNpdExpdGVyYWwoY29uc3Qg
U3RyaW5nJiB0ZXh0KQordm9pZCBEYXRlVGltZVN0cmluZ0J1aWxkZXI6OnZpc2l0TGl0ZXJhbChT
dHJpbmcmJiB0ZXh0KQogewogICAgIEFTU0VSVCh0ZXh0Lmxlbmd0aCgpKTsKLSAgICBtX2J1aWxk
ZXIuYXBwZW5kKHRleHQpOworICAgIG1fYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh0ZXh0KSk7CiB9
CiAKIFN0cmluZyBEYXRlVGltZVN0cmluZ0J1aWxkZXI6OnRvU3RyaW5nKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVFJlZkVsZW1lbnQuY3BwCmluZGV4IGFhZGFjOTllNTA1OWFkZWQ1NDI5ZWJhM2ZmNGU5
NTFiYjY2YzRhZjguLjgwMzBkNTNhMjg4ZWQ5ZTQwOWVlMGZjNjNlZjQzMDAzMWY5NzAwZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcApAQCAtMTQ1LDEwICsxNDUsMTAgQEAg
dm9pZCBTVkdUUmVmRWxlbWVudDo6dXBkYXRlUmVmZXJlbmNlZFRleHQoRWxlbWVudCogdGFyZ2V0
KQogICAgIEFTU0VSVChyb290KTsKICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkV2ZW50QWxs
b3dlZFNjb3BlIGFsbG93ZWRTY29wZSgqcm9vdCk7CiAgICAgaWYgKCFyb290LT5maXJzdENoaWxk
KCkpCi0gICAgICAgIHJvb3QtPmFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVudCgpLCB0
ZXh0Q29udGVudCkpOworICAgICAgICByb290LT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9j
dW1lbnQoKSwgV1RGTW92ZSh0ZXh0Q29udGVudCkpKTsKICAgICBlbHNlIHsKICAgICAgICAgQVNT
RVJUKHJvb3QtPmZpcnN0Q2hpbGQoKS0+aXNUZXh0Tm9kZSgpKTsKLSAgICAgICAgcm9vdC0+Zmly
c3RDaGlsZCgpLT5zZXRUZXh0Q29udGVudCh0ZXh0Q29udGVudCk7CisgICAgICAgIHJvb3QtPmZp
cnN0Q2hpbGQoKS0+c2V0VGV4dENvbnRlbnQoV1RGTW92ZSh0ZXh0Q29udGVudCkpOwogICAgIH0K
IH0KIApAQCAtMTU3LDEyICsxNTcsMTAgQEAgdm9pZCBTVkdUUmVmRWxlbWVudDo6ZGV0YWNoVGFy
Z2V0KCkKICAgICAvLyBSZW1vdmUgYWN0aXZlIGxpc3RlbmVycyBhbmQgY2xlYXIgdGhlIHRleHQg
Y29udGVudC4KICAgICBtX3RhcmdldExpc3RlbmVyLT5kZXRhY2goKTsKIAotICAgIFN0cmluZyBl
bXB0eUNvbnRlbnQ7Ci0KICAgICBBU1NFUlQoc2hhZG93Um9vdCgpKTsKICAgICBSZWZQdHIgY29u
dGFpbmVyID0gc2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCk7CiAgICAgaWYgKGNvbnRhaW5lcikK
LSAgICAgICAgY29udGFpbmVyLT5zZXRUZXh0Q29udGVudChlbXB0eUNvbnRlbnQpOworICAgICAg
ICBjb250YWluZXItPnNldFRleHRDb250ZW50KFN0cmluZyB7IH0pOwogCiAgICAgaWYgKCFpc0Nv
bm5lY3RlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MRXJyb3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuY3BwCmluZGV4
IGVmNGNkZWFiZGU0OWRlYzQwNDJhNmY4MzI1MGI2ZTJmNzcyNjAxNTUuLjdhMDJjMThiOTZjYjRl
Zjg0MGYxYWQyZmY0ZWUyMDk3NGJjMmJhMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxFcnJvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuY3BwCkBA
IC04MSw3ICs4MSw3IEBAIHZvaWQgWE1MRXJyb3JzOjphcHBlbmRFcnJvck1lc3NhZ2UoQVNDSUlM
aXRlcmFsIHR5cGVTdHJpbmcsIFRleHRQb3NpdGlvbiBwb3NpdGlvCiAgICAgbV9lcnJvck1lc3Nh
Z2VzLmFwcGVuZCh0eXBlU3RyaW5nLCAiIG9uIGxpbmUgIiwgcG9zaXRpb24ubV9saW5lLm9uZUJh
c2VkSW50KCksICIgYXQgY29sdW1uICIsIHBvc2l0aW9uLm1fY29sdW1uLm9uZUJhc2VkSW50KCks
ICI6ICIsIG1lc3NhZ2UpOwogfQogCi1zdGF0aWMgaW5saW5lIFJlZjxFbGVtZW50PiBjcmVhdGVY
SFRNTFBhcnNlckVycm9ySGVhZGVyKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBl
cnJvck1lc3NhZ2VzKQorc3RhdGljIGlubGluZSBSZWY8RWxlbWVudD4gY3JlYXRlWEhUTUxQYXJz
ZXJFcnJvckhlYWRlcihEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZyYmIGVycm9yTWVzc2FnZXMp
CiB7CiAgICAgUmVmPEVsZW1lbnQ+IHJlcG9ydEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KFF1YWxpZmllZE5hbWUobnVsbEF0b20oKSwgInBhcnNlcmVycm9yIl9zLCB4aHRtbE5hbWVz
cGFjZVVSSSksIHRydWUpOwogCkBAIC05OSw3ICs5OSw3IEBAIHN0YXRpYyBpbmxpbmUgUmVmPEVs
ZW1lbnQ+IGNyZWF0ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBj
b25zCiAgICAgZml4ZWQtPnBhcnNlclNldEF0dHJpYnV0ZXMoZml4ZWRBdHRyaWJ1dGVzKTsKICAg
ICByZXBvcnRFbGVtZW50LT5wYXJzZXJBcHBlbmRDaGlsZChmaXhlZCk7CiAKLSAgICBmaXhlZC0+
cGFyc2VyQXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50LCBlcnJvck1lc3NhZ2VzKSk7
CisgICAgZml4ZWQtPnBhcnNlckFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVudCwgV1RG
TW92ZShlcnJvck1lc3NhZ2VzKSkpOwogCiAgICAgaDMgPSBIVE1MSGVhZGluZ0VsZW1lbnQ6OmNy
ZWF0ZShoM1RhZywgZG9jdW1lbnQpOwogICAgIHJlcG9ydEVsZW1lbnQtPnBhcnNlckFwcGVuZENo
aWxkKGgzKTsKQEAgLTE0Miw4ICsxNDIsNyBAQCB2b2lkIFhNTEVycm9yczo6aW5zZXJ0RXJyb3JN
ZXNzYWdlQmxvY2soKQogICAgICAgICBkb2N1bWVudEVsZW1lbnQgPSBXVEZNb3ZlKGJvZHkpOwog
ICAgIH0KIAotICAgIFN0cmluZyBlcnJvck1lc3NhZ2VzID0gbV9lcnJvck1lc3NhZ2VzLnRvU3Ry
aW5nKCk7Ci0gICAgYXV0byByZXBvcnRFbGVtZW50ID0gY3JlYXRlWEhUTUxQYXJzZXJFcnJvckhl
YWRlcihtX2RvY3VtZW50LCBlcnJvck1lc3NhZ2VzKTsKKyAgICBhdXRvIHJlcG9ydEVsZW1lbnQg
PSBjcmVhdGVYSFRNTFBhcnNlckVycm9ySGVhZGVyKG1fZG9jdW1lbnQsIG1fZXJyb3JNZXNzYWdl
cy50b1N0cmluZygpKTsKIAogI2lmIEVOQUJMRShYU0xUKQogICAgIGlmIChtX2RvY3VtZW50LnRy
YW5zZm9ybVNvdXJjZURvY3VtZW50KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxUcmVlVmlld2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxUcmVlVmlld2VyLmNw
cAppbmRleCAwMmVlOTkwY2UwN2RhMGJmMzkzMDRhYjFkYjcyYWUwNzRlMWMxYTUyLi5hNmFkMTFi
NzcyMTdlNzc4OTEyNDZkYjljZmFjYjU1YjZjN2FlZTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTFRy
ZWVWaWV3ZXIuY3BwCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgWE1MVHJlZVZpZXdlcjo6dHJhbnNm
b3JtRG9jdW1lbnRUb1RyZWVWaWV3KCkKICAgICBtX2RvY3VtZW50LmZyYW1lKCktPnNjcmlwdCgp
LmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oU2NyaXB0U291cmNlQ29kZShBdG9tU3RyaW5nKCJw
cmVwYXJlV2ViS2l0WE1MVmlld2VyKCdUaGlzIFhNTCBmaWxlIGRvZXMgbm90IGFwcGVhciB0byBo
YXZlIGFueSBzdHlsZSBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggaXQuIFRoZSBkb2N1bWVu
dCB0cmVlIGlzIHNob3duIGJlbG93LicpOyJfcykpKTsKIAogICAgIFN0cmluZyBjc3NTdHJpbmcg
PSBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhYTUxWaWV3ZXJfY3NzLCBzaXplb2Yo
WE1MVmlld2VyX2NzcykpOwotICAgIGF1dG8gdGV4dCA9IG1fZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoY3NzU3RyaW5nKTsKKyAgICBhdXRvIHRleHQgPSBtX2RvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KFdURk1vdmUoY3NzU3RyaW5nKSk7CiAgICAgbV9kb2N1bWVudC5nZXRFbGVtZW50QnlJZChTdHJp
bmcoInhtbC12aWV3ZXItc3R5bGUiX3MpKS0+YXBwZW5kQ2hpbGQodGV4dCk7CiAgICAgbV9kb2N1
bWVudC5zdHlsZVNjb3BlKCkuZGlkQ2hhbmdlQWN0aXZlU3R5bGVTaGVldENhbmRpZGF0ZXMoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcAppbmRleCBiZTU4ZDZmNzQ0MWNkMDgz
YjIzMmE0Y2Q0NWQ0MGUxNGY0OGE1YmExLi5iNDVhYzE1YzYyNmNiODNiODYyYmU1YmFkZGQ2ODRk
YTQ5ZDYxNjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCkBAIC0xMjksNyAr
MTI5LDcgQEAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IFhTTFRQcm9jZXNzb3I6OnRyYW5zZm9y
bVRvRnJhZ21lbnQoTm9kZSYgc291cmNlTm9kZSwgRG8KIAogICAgIGlmICghdHJhbnNmb3JtVG9T
dHJpbmcoc291cmNlTm9kZSwgcmVzdWx0TUlNRVR5cGUsIHJlc3VsdFN0cmluZywgcmVzdWx0RW5j
b2RpbmcpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gY3JlYXRlRnJhZ21l
bnRGb3JUcmFuc2Zvcm1Ub0ZyYWdtZW50KG91dHB1dERvY3VtZW50LCByZXN1bHRTdHJpbmcsIHJl
c3VsdE1JTUVUeXBlKTsKKyAgICByZXR1cm4gY3JlYXRlRnJhZ21lbnRGb3JUcmFuc2Zvcm1Ub0Zy
YWdtZW50KG91dHB1dERvY3VtZW50LCBXVEZNb3ZlKHJlc3VsdFN0cmluZyksIFdURk1vdmUocmVz
dWx0TUlNRVR5cGUpKTsKIH0KIAogdm9pZCBYU0xUUHJvY2Vzc29yOjpzZXRQYXJhbWV0ZXIoY29u
c3QgU3RyaW5nJiAvKm5hbWVzcGFjZVVSSSovLCBjb25zdCBTdHJpbmcmIGxvY2FsTmFtZSwgY29u
c3QgU3RyaW5nJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
WE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1
bWVudFBhcnNlci5jcHAKaW5kZXggMWFiOGEzNTI0YTZjZDBmOTNmYzY1ZjFiZjgxYjVkNzMyMGVj
MTY3ZC4uODU0ZTI3NmVlOGI1MmMxNTM5YmMwYzQ0MmI4NWRkOTk4ZDYwMGUzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTE0Nyw3
ICsxNDcsNyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpjcmVhdGVMZWFmVGV4dE5vZGUoKQog
CiAgICAgQVNTRVJUKG1fYnVmZmVyZWRUZXh0LnNpemUoKSA9PSAwKTsKICAgICBBU1NFUlQoIW1f
bGVhZlRleHROb2RlKTsKLSAgICBtX2xlYWZUZXh0Tm9kZSA9IFRleHQ6OmNyZWF0ZShtX2N1cnJl
bnROb2RlLT5kb2N1bWVudCgpLCBlbXB0eVN0cmluZygpKTsKKyAgICBtX2xlYWZUZXh0Tm9kZSA9
IFRleHQ6OmNyZWF0ZShtX2N1cnJlbnROb2RlLT5kb2N1bWVudCgpLCBTdHJpbmcgeyBlbXB0eVN0
cmluZygpIH0pOwogICAgIG1fY3VycmVudE5vZGUtPnBhcnNlckFwcGVuZENoaWxkKCptX2xlYWZU
ZXh0Tm9kZSk7CiB9CiAKQEAgLTI5Niw3ICsyOTYsNyBAQCBib29sIFhNTERvY3VtZW50UGFyc2Vy
OjpwYXJzZURvY3VtZW50RnJhZ21lbnQoY29uc3QgU3RyaW5nJiBjaHVuaywgRG9jdW1lbnRGcmFn
bQogICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdv
cmsvbXVsdGlwYWdlL3RoZS14aHRtbC1zeW50YXguaHRtbCN4bWwtZnJhZ21lbnQtcGFyc2luZy1h
bGdvcml0aG0KICAgICAvLyBGb3Igbm93IHdlIGhhdmUgYSBoYWNrIGZvciBzY3JpcHQvc3R5bGUg
aW5uZXJIVE1MIHN1cHBvcnQ6CiAgICAgaWYgKGNvbnRleHRFbGVtZW50ICYmIChjb250ZXh0RWxl
bWVudC0+aGFzTG9jYWxOYW1lKEhUTUxOYW1lczo6c2NyaXB0VGFnLT5sb2NhbE5hbWUoKSkgfHwg
Y29udGV4dEVsZW1lbnQtPmhhc0xvY2FsTmFtZShIVE1MTmFtZXM6OnN0eWxlVGFnLT5sb2NhbE5h
bWUoKSkpKSB7Ci0gICAgICAgIGZyYWdtZW50LnBhcnNlckFwcGVuZENoaWxkKGZyYWdtZW50LmRv
Y3VtZW50KCkuY3JlYXRlVGV4dE5vZGUoY2h1bmspKTsKKyAgICAgICAgZnJhZ21lbnQucGFyc2Vy
QXBwZW5kQ2hpbGQoZnJhZ21lbnQuZG9jdW1lbnQoKS5jcmVhdGVUZXh0Tm9kZShTdHJpbmcgeyBj
aHVuayB9KSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAo=
</data>
<flag name="commit-queue"
          id="486626"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457904</attachid>
            <date>2022-04-19 09:10:31 -0700</date>
            <delta_ts>2022-04-19 10:30:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239481-20220419091030.patch</filename>
            <type>text/plain</type>
            <size>92176</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQ1YjZkODU5OTk3NmQ4M2EwMjk2ZDkw
YmYzNzc5MTAxZmE3NGVjMGIuLjY3NGY4N2E5NTUwMzAwNWI3NTJmNjMyZjQxNTBkZWQ4YTE2ZGQ5
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDQtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgbW9yZSByLXZhbHVlIHJlZmVyZW5jZXMgZm9yIFRl
eHQgLyBDaGFyYWN0ZXJEYXRhIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzOTQ4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBhIGZ1bmN0aW9uIHRvIEF0b21TdHJpbmcgdG8gcmVsZWFz
ZSBpdHMgU3RyaW5nLiBUaGlzIGlzIGNvbnZlbmllbnQgd2hlbiB5b3UgaGF2ZSBhbiBBdG9tU3Ry
aW5nCisgICAgICAgIGFuZCBuZWVkIGEgU3RyaW5nJiYuCisKKyAgICAgICAgKiB3dGYvdGV4dC9B
dG9tU3RyaW5nLmg6CisKIDIwMjItMDQtMTggIEVsbGlvdHQgV2lsbGlhbXMgIDxlbXdAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtYQ0J1aWxkXSBVc2UgWENCdWlsZCBmb3IgYWxsIGNvbW1hbmQtbGlu
ZSBhbmQgcHJvamVjdCBidWlsZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1MTdmZGIxMTA4OWQ2OGExMmE2MmMy
NDZhNTFjNDQ3MDljOTRiM2NhLi4zNWFiNDlhMWRjYjBmMmFlNWJkMWYzN2IxNGM5MDhlODZhYjZl
OTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYxIEBACisyMDIyLTA0LTE5ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIG1vcmUgci12YWx1ZSByZWZlcmVu
Y2VzIGZvciBUZXh0IC8gQ2hhcmFjdGVyRGF0YSBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk0ODEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgbW9yZSByLXZhbHVlIHJlZmVyZW5jZXMg
Zm9yIFRleHQgLyBDaGFyYWN0ZXJEYXRhIGNsYXNzZXMsIHdoaWNoIGluZmVjdGVkCisgICAgICAg
IGEgbG90IG9mIHRoZSBzdXJyb3VuZGluZyBjb2RlLiBUaGlzIGF2b2lkcyBzb21lIHJlZi1jb3Vu
dGluZyBjaHVybi4KKworICAgICAgICAqIGRvbS9DREFUQVNlY3Rpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0RBVEFTZWN0aW9uOjpDREFUQVNlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
Q0RBVEFTZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RBVEFTZWN0aW9uOjpj
bG9uZU5vZGVJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDREFUQVNlY3Rpb246OnZpcnR1
YWxDcmVhdGUpOgorICAgICAgICAqIGRvbS9DREFUQVNlY3Rpb24uaDoKKyAgICAgICAgKiBkb20v
Q2hhcmFjdGVyRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRGF0YTo6Q2hhcmFj
dGVyRGF0YSk6CisgICAgICAgICogZG9tL0NvbW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29tbWVudDo6Q29tbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDb21tZW50OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tbWVudDo6Y2xvbmVOb2RlSW50ZXJuYWwpOgorICAgICAgICAq
IGRvbS9Db21tZW50Lmg6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6c3RyaW5nUmVwbGFjZUFsbCk6CisgICAgICAgICog
ZG9tL0NvbnRhaW5lck5vZGUuaDoKKyAgICAgICAgKiBkb20vRE9NSW1wbGVtZW50YXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZUhUTUxEb2N1bWVu
dCk6CisgICAgICAgICogZG9tL0RPTUltcGxlbWVudGF0aW9uLmg6CisgICAgICAgICogZG9tL0Rv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjcmVhdGVUZXh0Tm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlQ29tbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlQ0RBVEFTZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpjcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6c2V0VGl0bGUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAq
IGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6Omluc2VydEFkamFj
ZW50VGV4dCk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vSW1hZ2VP
dmVybGF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3ZlcmxheTo6aW5zdGFsbEltYWdl
T3ZlcmxheVN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5Ojp1cGRh
dGVTdWJ0cmVlKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlOjpjb252ZXJ0Tm9kZXNPclN0cmluZ3NJbnRvTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlOjpzZXRUZXh0Q29udGVudCk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKiBk
b20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3Np
bmdJbnN0cnVjdGlvbjo6UHJvY2Vzc2luZ0luc3RydWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nl
c3NpbmdJbnN0cnVjdGlvbjo6Y2xvbmVOb2RlSW50ZXJuYWwpOgorICAgICAgICAqIGRvbS9Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKiBkb20vVGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dDo6Y3JlYXRlRWRp
dGluZ1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dDo6Y2xvbmVOb2RlSW50ZXJuYWwpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dDo6dmlydHVhbENyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0OjpjcmVhdGVXaXRoTGVuZ3RoTGltaXQpOgorICAgICAgICAqIGRvbS9UZXh0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0OjpUZXh0KToKKyAgICAgICAgKiBkb20vbWFjL0ltYWdlQ29u
dHJvbHNNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VDb250cm9sc01hYzo6Y3JlYXRl
SW1hZ2VDb250cm9scyk6CisgICAgICAgICogZWRpdGluZy9DcmVhdGVMaW5rQ29tbWFuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDcmVhdGVMaW5rQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAg
ICogZWRpdGluZy9FZGl0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRhYlNwYW5F
bGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmcuaDoKKyAgICAgICAgKiBlZGl0aW5n
L0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnN0eWxlRm9yU2VsZWN0aW9u
U3RhcnQpOgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjpkb0FwcGx5KToKKyAgICAg
ICAgKiBlZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c2VydFRleHRDb21tYW5kOjpwb3NpdGlvbkluc2lkZVRleHROb2RlKToKKyAgICAgICAgKiBlZGl0
aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjphZGRTcGFjZXNGb3JTbWFydFJlcGxhY2UpOgorICAgICAgICAq
IGVkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnJlcGxhY2UpOgorICAgICAgICAqIGVkaXRp
bmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50RnJvbVRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRGb3JUcmFuc2Zvcm1Ub0ZyYWdtZW50
KToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5oOgorICAgICAgICAqIGh0bWwvQmFzZURhdGVB
bmRUaW1lSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlu
cHV0VHlwZTo6dXBkYXRlSW5uZXJUZXh0VmFsdWUpOgorICAgICAgICAqIGh0bWwvQmFzZURhdGVB
bmRUaW1lSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6YXBwZW5k
RW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmNy
ZWF0ZVRERm9yRmlsZW5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1l
bnRQYXJzZXI6OnBhcnNlQW5kQXBwZW5kT25lTGluZSk6CisgICAgICAgICogaHRtbC9IVE1MQW5j
aG9yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6c2V0
VGV4dCk6CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldElu
bmVyVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6c2V0T3V0ZXJUZXh0KToK
KyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWV0ZXJF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZXRlckVsZW1lbnQ6OmRpZEFkZFVz
ZXJBZ2VudFNoYWRvd1Jvb3QpOgorICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6OmNyZWF0ZUZvckxlZ2FjeUZh
Y3RvcnlGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6c2V0
VGV4dCk6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE91dHB1dEVs
ZW1lbnQ6OnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPdXRwdXRFbGVtZW50Ojpz
ZXREZWZhdWx0VmFsdWUpOgorICAgICAgICAqIGh0bWwvSFRNTE91dHB1dEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxTY3JpcHRFbGVtZW50OjpzZXRUZXh0KToKKyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVt
ZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldFZhbHVlQ29tbW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldERlZmF1bHRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojp1cGRhdGVQbGFjZWhvbGRlclRleHQpOgor
ICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQ6OnNldElubmVyVGV4dFZhbHVlKToKKyAgICAgICAgKiBodG1sL0hU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVGl0bGVFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUaXRsZUVsZW1lbnQ6OnNldFRleHQpOgor
ICAgICAgICAqIGh0bWwvSFRNTFRpdGxlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvVGV4dEZp
ZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6
dXBkYXRlUGxhY2Vob2xkZXJUZXh0KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9BdG9tSFRNTFRv
a2VuLmg6CisgICAgICAgIChXZWJDb3JlOjpBdG9tSFRNTFRva2VuOjpjb21tZW50KToKKyAgICAg
ICAgKiBodG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0Q29tbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0Q29tbWVudE9uRG9jdW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydENvbW1lbnRPbkhUTUxI
dG1sRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5z
ZXJ0VGV4dE5vZGUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0RhdGVUaW1lRWRpdEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVFZGl0QnVpbGRlcjo6dmlzaXRMaXRlcmFs
KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRlVGltZUZpZWxkRWxlbWVudDo6dXBkYXRlVmlzaWJsZVZhbHVlKToK
KyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0VHJhY2tDdWU6OnJlYnVpbGREaXNwbGF5VHJlZSk6CisgICAgICAgICogaHRtbC90cmFj
ay9WVFRDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VlRUQ3VlOjpnZXREaXNwbGF5VHJlZSk6
CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViVlRUVHJlZUJ1aWxkZXI6OmJ1aWxkRnJvbVN0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJWVFRUcmVlQnVpbGRlcjo6Y29uc3RydWN0VHJlZUZyb21Ub2tlbik6CisgICAgICAgICog
cGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2N1bWVudEZyYWdt
ZW50RnJvbURyYWdEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0RhdGVUaW1lRm9ybWF0
Lmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEYXRlVGltZVN0cmluZ0J1aWxkZXI6OnZpc2l0TGl0ZXJhbCk6CisgICAgICAg
ICogc3ZnL1NWR1RSZWZFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RSZWZFbGVt
ZW50Ojp1cGRhdGVSZWZlcmVuY2VkVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUUmVmRWxl
bWVudDo6ZGV0YWNoVGFyZ2V0KToKKyAgICAgICAgKiB4bWwvWE1MRXJyb3JzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6WE1MRXJyb3JzOjppbnNlcnRFcnJvck1lc3NhZ2VCbG9jayk6CisgICAgICAgICogeG1s
L1hNTFRyZWVWaWV3ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MVHJlZVZpZXdlcjo6dHJh
bnNmb3JtRG9jdW1lbnRUb1RyZWVWaWV3KToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3Nvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xUUHJvY2Vzc29yOjp0cmFuc2Zvcm1Ub0ZyYWdtZW50
KToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpjcmVhdGVMZWFmVGV4dE5vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlRG9jdW1lbnRGcmFnbWVudCk6CisK
IDIwMjItMDQtMTYgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHU3RyZWFtZXJdW1dlYlJUQ10gTWlub3IgY2xlYW51cCBpbiBJbmNvbWluZ1NvdXJj
ZUdTdHJlYW1lcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaAppbmRleCBiZjRiZTRkOTljZDdjNGRl
NGVhZDA5YjY0NzlhZjE5ZWFmNTIxY2RjLi4wYWRmNTIyM2JiNjAyOWMzZGU5ODljNjgzMTc0MDE2
NmYwNmM3MDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaApAQCAtOTMsNiArOTMsNyBAQCBw
dWJsaWM6CiAKICAgICBvcGVyYXRvciBjb25zdCBTdHJpbmcmKCkgY29uc3QgeyByZXR1cm4gbV9z
dHJpbmc7IH0KICAgICBjb25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
aW5nOyB9OworICAgIFN0cmluZyByZWxlYXNlU3RyaW5nKCkgeyByZXR1cm4gV1RGTW92ZShtX3N0
cmluZyk7IH0KIAogICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgdGhpcyBpc24ndCBhIFN5
bWJvbEltcGwgcmF0aGVyIHRoYW4gYW4gQXRvbVN0cmluZ0ltcGw/CiAgICAgQXRvbVN0cmluZ0lt
cGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBdG9tU3RyaW5nSW1wbCo+KG1f
c3RyaW5nLmltcGwoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DREFUQVNl
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5jcHAKaW5kZXggNzU0
ZjQ4Mjg4ZmUxOTZhM2QyODJhMjk2ZDg3OGQyMzM0ZDM5Nzg0Yi4uMjAyZGQ0NzBmMjBkNzYyN2Y4
ZTRiNTI4OTIyYWMyZTAxYjg2NmI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NE
QVRBU2VjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5jcHAK
QEAgLTI5LDE0ICsyOSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChDREFUQVNlY3Rpb24pOwogCi1pbmxpbmUgQ0RBVEFTZWN0aW9uOjpDREFU
QVNlY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGRhdGEpCi0gICAgOiBU
ZXh0KGRvY3VtZW50LCBkYXRhLCBDcmVhdGVUZXh0KQoraW5saW5lIENEQVRBU2VjdGlvbjo6Q0RB
VEFTZWN0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5nJiYgZGF0YSkKKyAgICA6IFRleHQo
ZG9jdW1lbnQsIFdURk1vdmUoZGF0YSksIENyZWF0ZVRleHQpCiB7CiB9CiAKLVJlZjxDREFUQVNl
Y3Rpb24+IENEQVRBU2VjdGlvbjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3Ry
aW5nJiBkYXRhKQorUmVmPENEQVRBU2VjdGlvbj4gQ0RBVEFTZWN0aW9uOjpjcmVhdGUoRG9jdW1l
bnQmIGRvY3VtZW50LCBTdHJpbmcmJiBkYXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IENEQVRBU2VjdGlvbihkb2N1bWVudCwgZGF0YSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IENEQVRBU2VjdGlvbihkb2N1bWVudCwgV1RGTW92ZShkYXRhKSkpOwogfQogCiBTdHJpbmcgQ0RB
VEFTZWN0aW9uOjpub2RlTmFtZSgpIGNvbnN0CkBAIC01MSw3ICs1MSw3IEBAIE5vZGU6Ok5vZGVU
eXBlIENEQVRBU2VjdGlvbjo6bm9kZVR5cGUoKSBjb25zdAogCiBSZWY8Tm9kZT4gQ0RBVEFTZWN0
aW9uOjpjbG9uZU5vZGVJbnRlcm5hbChEb2N1bWVudCYgdGFyZ2V0RG9jdW1lbnQsIENsb25pbmdP
cGVyYXRpb24pCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZSh0YXJnZXREb2N1bWVudCwgZGF0YSgpKTsK
KyAgICByZXR1cm4gY3JlYXRlKHRhcmdldERvY3VtZW50LCBTdHJpbmcgeyBkYXRhKCkgfSk7CiB9
CiAKIGJvb2wgQ0RBVEFTZWN0aW9uOjpjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdApA
QCAtNTksOSArNTksOSBAQCBib29sIENEQVRBU2VjdGlvbjo6Y2hpbGRUeXBlQWxsb3dlZChOb2Rl
VHlwZSkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlZjxUZXh0PiBDREFUQVNlY3Rp
b246OnZpcnR1YWxDcmVhdGUoY29uc3QgU3RyaW5nJiBkYXRhKQorUmVmPFRleHQ+IENEQVRBU2Vj
dGlvbjo6dmlydHVhbENyZWF0ZShTdHJpbmcmJiBkYXRhKQogewotICAgIHJldHVybiBjcmVhdGUo
ZG9jdW1lbnQoKSwgZGF0YSk7CisgICAgcmV0dXJuIGNyZWF0ZShkb2N1bWVudCgpLCBXVEZNb3Zl
KGRhdGEpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2Vj
dGlvbi5oCmluZGV4IGQ5NDA1Y2FlMzY5YWQ3OGZmYzczYTkzODNiZjdiMWM2MzlhZDMyNTQuLmE1
OTY4YzQxZDJjODk3NWRkNWNlODUwNzE4MTkzNmM0ZTE4NzZhMzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ0RB
VEFTZWN0aW9uLmgKQEAgLTI5LDE2ICsyOSwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBDREFUQVNlY3Rpb24gZmluYWwgOiBwdWJsaWMgVGV4dCB7CiAgICAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRChDREFUQVNlY3Rpb24pOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q0RBVEFTZWN0
aW9uPiBjcmVhdGUoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgUmVmPENE
QVRBU2VjdGlvbj4gY3JlYXRlKERvY3VtZW50JiwgU3RyaW5nJiYpOwogCiBwcml2YXRlOgotICAg
IENEQVRBU2VjdGlvbihEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYpOworICAgIENEQVRBU2VjdGlv
bihEb2N1bWVudCYsIFN0cmluZyYmKTsKIAogICAgIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUmVm
PE5vZGU+IGNsb25lTm9kZUludGVybmFsKERvY3VtZW50JiwgQ2xvbmluZ09wZXJhdGlvbikgb3Zl
cnJpZGU7CiAgICAgYm9vbCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdCBvdmVycmlk
ZTsKLSAgICBSZWY8VGV4dD4gdmlydHVhbENyZWF0ZShjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsK
KyAgICBSZWY8VGV4dD4gdmlydHVhbENyZWF0ZShTdHJpbmcmJikgb3ZlcnJpZGU7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hh
cmFjdGVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaAppbmRleCAw
MzFhZjQ5ZTJjYWVlNGRkNzMzOGRiZTMwZDFhNGQzMTMwOGVmODk2Li41M2E0ZWI5NzNiMjFjNzNh
ODk5NWNmMzM5NGU2NmY3N2QzZTRlNzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q2hhcmFjdGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgK
QEAgLTQ1LDkgKzQ1LDkgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHBhcnNlckFwcGVuZERhdGEo
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoTGlt
aXQpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgQ2hhcmFjdGVyRGF0YShEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IFN0cmluZyYgdGV4dCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlID0gQ3JlYXRlQ2hhcmFj
dGVyRGF0YSkKKyAgICBDaGFyYWN0ZXJEYXRhKERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5nJiYg
dGV4dCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlID0gQ3JlYXRlQ2hhcmFjdGVyRGF0YSkKICAgICAg
ICAgOiBOb2RlKGRvY3VtZW50LCB0eXBlKQotICAgICAgICAsIG1fZGF0YSghdGV4dC5pc051bGwo
KSA/IHRleHQgOiBlbXB0eVN0cmluZygpKQorICAgICAgICAsIG1fZGF0YSghdGV4dC5pc051bGwo
KSA/IFdURk1vdmUodGV4dCkgOiBlbXB0eVN0cmluZygpKQogICAgIHsKICAgICAgICAgQVNTRVJU
KHR5cGUgPT0gQ3JlYXRlQ2hhcmFjdGVyRGF0YSB8fCB0eXBlID09IENyZWF0ZVRleHQgfHwgdHlw
ZSA9PSBDcmVhdGVFZGl0aW5nVGV4dCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0NvbW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQuY3BwCmluZGV4
IDhhM2UzMmY3NzM5MzQ5MWYyNTMyMjMwN2RkMTY0OGZlYzE2ZWJmOWIuLmFmODg3NmIxOTJmNTk2
YjY1NDgxNjcwMmQyMTIxYTg3ZGQ2ZTg0YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db21tZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tbWVudC5jcHAKQEAgLTI5
LDE0ICsyOSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FU
RURfSU1QTChDb21tZW50KTsKIAotaW5saW5lIENvbW1lbnQ6OkNvbW1lbnQoRG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBTdHJpbmcmIHRleHQpCi0gICAgOiBDaGFyYWN0ZXJEYXRhKGRvY3VtZW50
LCB0ZXh0KQoraW5saW5lIENvbW1lbnQ6OkNvbW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJp
bmcmJiB0ZXh0KQorICAgIDogQ2hhcmFjdGVyRGF0YShkb2N1bWVudCwgV1RGTW92ZSh0ZXh0KSkK
IHsKIH0KIAotUmVmPENvbW1lbnQ+IENvbW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IFN0cmluZyYgdGV4dCkKK1JlZjxDb21tZW50PiBDb21tZW50OjpjcmVhdGUoRG9jdW1l
bnQmIGRvY3VtZW50LCBTdHJpbmcmJiB0ZXh0KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IENvbW1lbnQoZG9jdW1lbnQsIHRleHQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb21t
ZW50KGRvY3VtZW50LCBXVEZNb3ZlKHRleHQpKSk7CiB9CiAKIFN0cmluZyBDb21tZW50Ojpub2Rl
TmFtZSgpIGNvbnN0CkBAIC01MSw3ICs1MSw3IEBAIE5vZGU6Ok5vZGVUeXBlIENvbW1lbnQ6Om5v
ZGVUeXBlKCkgY29uc3QKIAogUmVmPE5vZGU+IENvbW1lbnQ6OmNsb25lTm9kZUludGVybmFsKERv
Y3VtZW50JiB0YXJnZXREb2N1bWVudCwgQ2xvbmluZ09wZXJhdGlvbikKIHsKLSAgICByZXR1cm4g
Y3JlYXRlKHRhcmdldERvY3VtZW50LCBkYXRhKCkpOworICAgIHJldHVybiBjcmVhdGUodGFyZ2V0
RG9jdW1lbnQsIFN0cmluZyB7IGRhdGEoKSB9KTsKIH0KIAogYm9vbCBDb21tZW50OjpjaGlsZFR5
cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0NvbW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21tZW50LmgKaW5kZXggZDRjMWU5NWQ1
NGE2OTI1MzEwZDYwODkwNzI5NTYwZmQwZGFiYzI1NS4uMjc3ZDJjMjYzYmVmZTYxY2VjOWJiMDU2
MTY5NzIwNTUyYjZkNTdlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tbWVudC5oCkBAIC0yOSwxMCArMjksMTAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29tbWVudCBmaW5hbCA6IHB1YmxpYyBDaGFyYWN0
ZXJEYXRhIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKENvbW1lbnQpOwogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8Q29tbWVudD4gY3JlYXRlKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJik7
CisgICAgc3RhdGljIFJlZjxDb21tZW50PiBjcmVhdGUoRG9jdW1lbnQmLCBTdHJpbmcmJik7CiAK
IHByaXZhdGU6Ci0gICAgQ29tbWVudChEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYpOworICAgIENv
bW1lbnQoRG9jdW1lbnQmLCBTdHJpbmcmJik7CiAKICAgICBTdHJpbmcgbm9kZU5hbWUoKSBjb25z
dCBvdmVycmlkZTsKICAgICBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmluZGV4IDY0MWE3ODc3ZGMwNTc5OTNhYWJjZDFi
NDcxNWRlYzg4OGIzYTJmM2MuLmQ1NDA0MWI1MDkxZDZlZTcwYTU3MmRkYTZjNGNhNzJiOTFlNWUy
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTcyNCw5ICs3MjQsOSBA
QCB2b2lkIENvbnRhaW5lck5vZGU6OnJlcGxhY2VBbGwoTm9kZSogbm9kZSkKIH0KIAogLy8gaHR0
cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNzdHJpbmctcmVwbGFjZS1hbGwKLXZvaWQgQ29udGFp
bmVyTm9kZTo6c3RyaW5nUmVwbGFjZUFsbChjb25zdCBTdHJpbmcmIHN0cmluZykKK3ZvaWQgQ29u
dGFpbmVyTm9kZTo6c3RyaW5nUmVwbGFjZUFsbChTdHJpbmcmJiBzdHJpbmcpCiB7Ci0gICAgcmVw
bGFjZUFsbChzdHJpbmcuaXNFbXB0eSgpID8gbnVsbHB0ciA6IGRvY3VtZW50KCkuY3JlYXRlVGV4
dE5vZGUoc3RyaW5nKS5wdHIoKSk7CisgICAgcmVwbGFjZUFsbChzdHJpbmcuaXNFbXB0eSgpID8g
bnVsbHB0ciA6IGRvY3VtZW50KCkuY3JlYXRlVGV4dE5vZGUoV1RGTW92ZShzdHJpbmcpKS5wdHIo
KSk7CiB9CiAKIGlubGluZSB2b2lkIENvbnRhaW5lck5vZGU6OnJlYnVpbGRTVkdFeHRlbnNpb25z
RWxlbWVudHNJZk5lY2Vzc2FyeSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAppbmRleCA4
MDgzZDQyNmYwMWRmZTVjNTQ4YjMxZGJkMTZjZWZhYTRlOTA1NGIwLi4xMTk0ZTM2YWRlZWFlYWQx
N2I2OGE0MWYxZDZlMzI2NjA4MzM5MzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgK
QEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlcGxhY2VD
aGlsZChOb2RlJiBuZXdDaGlsZCwgTm9kZSYgb2xkQ2hpbGQpOwogICAgIFdFQkNPUkVfRVhQT1JU
IEV4Y2VwdGlvbk9yPHZvaWQ+IHJlbW92ZUNoaWxkKE5vZGUmIGNoaWxkKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBhcHBlbmRDaGlsZChOb2RlJiBuZXdDaGlsZCk7Ci0g
ICAgdm9pZCBzdHJpbmdSZXBsYWNlQWxsKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc3RyaW5n
UmVwbGFjZUFsbChTdHJpbmcmJik7CiAgICAgdm9pZCByZXBsYWNlQWxsKE5vZGUqKTsKIAogICAg
IENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8Q29udGFp
bmVyTm9kZT4oTm9kZTo6cm9vdE5vZGUoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVt
ZW50YXRpb24uY3BwCmluZGV4IDU4NDM1YmMzZmNhZDNjZGE3ODk3MGEyMTFlNzYyYmZjY2YwMTJm
NzUuLjY4ZGRkNmM5MzM2NWU5YWM5YmZkZTU3MjkyNmY1ZTg2ZTNlOWFkODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcApAQCAtMTIzLDE0ICsxMjMsMTQgQEAgUmVm
PENTU1N0eWxlU2hlZXQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVDU1NTdHlsZVNoZWV0KGNv
bnN0IFN0cmluZyYsIGNvbnN0IFMKICAgICByZXR1cm4gc2hlZXQ7CiB9CiAKLVJlZjxIVE1MRG9j
dW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVIVE1MRG9jdW1lbnQoY29uc3QgU3RyaW5n
JiB0aXRsZSkKK1JlZjxIVE1MRG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVIVE1M
RG9jdW1lbnQoU3RyaW5nJiYgdGl0bGUpCiB7CiAgICAgYXV0byBkb2N1bWVudCA9IEhUTUxEb2N1
bWVudDo6Y3JlYXRlKG51bGxwdHIsIG1fZG9jdW1lbnQuc2V0dGluZ3MoKSwgVVJMKCksIHsgfSk7
CiAgICAgZG9jdW1lbnQtPm9wZW4oKTsKICAgICBkb2N1bWVudC0+d3JpdGUobnVsbHB0ciwgeyAi
PCFkb2N0eXBlIGh0bWw+PGh0bWw+PGhlYWQ+PC9oZWFkPjxib2R5PjwvYm9keT48L2h0bWw+Il9z
IH0pOwogICAgIGlmICghdGl0bGUuaXNOdWxsKCkpIHsKICAgICAgICAgYXV0byB0aXRsZUVsZW1l
bnQgPSBIVE1MVGl0bGVFbGVtZW50OjpjcmVhdGUodGl0bGVUYWcsIGRvY3VtZW50KTsKLSAgICAg
ICAgdGl0bGVFbGVtZW50LT5hcHBlbmRDaGlsZChkb2N1bWVudC0+Y3JlYXRlVGV4dE5vZGUodGl0
bGUpKTsKKyAgICAgICAgdGl0bGVFbGVtZW50LT5hcHBlbmRDaGlsZChkb2N1bWVudC0+Y3JlYXRl
VGV4dE5vZGUoV1RGTW92ZSh0aXRsZSkpKTsKICAgICAgICAgQVNTRVJUKGRvY3VtZW50LT5oZWFk
KCkpOwogICAgICAgICBkb2N1bWVudC0+aGVhZCgpLT5hcHBlbmRDaGlsZCh0aXRsZUVsZW1lbnQp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmgKaW5kZXggZTg5ZTJm
ZTYzNWY5YTczZmIxYTJiMGY2NDFjMDk5NDgzZDU3MzA2Ni4uMjcyYTY0ZWNhNmJkMTFhYTZmMzU2
MDhkZmNkYjZkMTkyOWEyOGY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUlt
cGxlbWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9u
LmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0
aW9uT3I8UmVmPERvY3VtZW50VHlwZT4+IGNyZWF0ZURvY3VtZW50VHlwZShjb25zdCBTdHJpbmcm
IHF1YWxpZmllZE5hbWUsIGNvbnN0IFN0cmluZyYgcHVibGljSWQsIGNvbnN0IFN0cmluZyYgc3lz
dGVtSWQpOwogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFJlZjxYTUxEb2N1bWVudD4+
IGNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcm
IHF1YWxpZmllZE5hbWUsIERvY3VtZW50VHlwZSopOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxI
VE1MRG9jdW1lbnQ+IGNyZWF0ZUhUTUxEb2N1bWVudChjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZWY8SFRNTERvY3VtZW50PiBjcmVhdGVIVE1MRG9jdW1lbnQoU3Ry
aW5nJiYgdGl0bGUpOwogICAgIHN0YXRpYyBib29sIGhhc0ZlYXR1cmUoKSB7IHJldHVybiB0cnVl
OyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxDU1NTdHlsZVNoZWV0PiBjcmVhdGVD
U1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgbWVkaWEpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA1NGRjNDU5ZjNiNTJlMjUwMjk4NjczNjAwMDJl
ZDllYzQ2ZTAyYWI4Li5hMjdiNDMxNGM0MDA1YjMwYThkMjUyZTdhMmVjZjY1M2QzNTc3Mjc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTEwNjksMTcgKzEwNjksMTcgQEAgUmVmPERvY3Vt
ZW50RnJhZ21lbnQ+IERvY3VtZW50OjpjcmVhdGVEb2N1bWVudEZyYWdtZW50KCkKICAgICByZXR1
cm4gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOwogfQogCi1SZWY8VGV4dD4g
RG9jdW1lbnQ6OmNyZWF0ZVRleHROb2RlKGNvbnN0IFN0cmluZyYgZGF0YSkKK1JlZjxUZXh0PiBE
b2N1bWVudDo6Y3JlYXRlVGV4dE5vZGUoU3RyaW5nJiYgZGF0YSkKIHsKLSAgICByZXR1cm4gVGV4
dDo6Y3JlYXRlKCp0aGlzLCBkYXRhKTsKKyAgICByZXR1cm4gVGV4dDo6Y3JlYXRlKCp0aGlzLCBX
VEZNb3ZlKGRhdGEpKTsKIH0KIAotUmVmPENvbW1lbnQ+IERvY3VtZW50OjpjcmVhdGVDb21tZW50
KGNvbnN0IFN0cmluZyYgZGF0YSkKK1JlZjxDb21tZW50PiBEb2N1bWVudDo6Y3JlYXRlQ29tbWVu
dChTdHJpbmcmJiBkYXRhKQogewotICAgIHJldHVybiBDb21tZW50OjpjcmVhdGUoKnRoaXMsIGRh
dGEpOworICAgIHJldHVybiBDb21tZW50OjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoZGF0YSkpOwog
fQogCi1FeGNlcHRpb25PcjxSZWY8Q0RBVEFTZWN0aW9uPj4gRG9jdW1lbnQ6OmNyZWF0ZUNEQVRB
U2VjdGlvbihjb25zdCBTdHJpbmcmIGRhdGEpCitFeGNlcHRpb25PcjxSZWY8Q0RBVEFTZWN0aW9u
Pj4gRG9jdW1lbnQ6OmNyZWF0ZUNEQVRBU2VjdGlvbihTdHJpbmcmJiBkYXRhKQogewogICAgIGlm
IChpc0hUTUxEb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9y
dGVkRXJyb3IgfTsKQEAgLTEwODcsMTAgKzEwODcsMTAgQEAgRXhjZXB0aW9uT3I8UmVmPENEQVRB
U2VjdGlvbj4+IERvY3VtZW50OjpjcmVhdGVDREFUQVNlY3Rpb24oY29uc3QgU3RyaW5nJiBkYXRh
KQogICAgIGlmIChkYXRhLmNvbnRhaW5zKCJdXT4iKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IEludmFsaWRDaGFyYWN0ZXJFcnJvciB9OwogCi0gICAgcmV0dXJuIENEQVRBU2VjdGlvbjo6
Y3JlYXRlKCp0aGlzLCBkYXRhKTsKKyAgICByZXR1cm4gQ0RBVEFTZWN0aW9uOjpjcmVhdGUoKnRo
aXMsIFdURk1vdmUoZGF0YSkpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8UHJvY2Vzc2luZ0luc3Ry
dWN0aW9uPj4gRG9jdW1lbnQ6OmNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihjb25zdCBTdHJp
bmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBkYXRhKQorRXhjZXB0aW9uT3I8UmVmPFByb2Nlc3Np
bmdJbnN0cnVjdGlvbj4+IERvY3VtZW50OjpjcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oU3Ry
aW5nJiYgdGFyZ2V0LCBTdHJpbmcmJiBkYXRhKQogewogICAgIGlmICghaXNWYWxpZE5hbWUodGFy
Z2V0KSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRDaGFyYWN0ZXJFcnJvciB9
OwpAQCAtMTA5OCwxMiArMTA5OCwxMiBAQCBFeGNlcHRpb25PcjxSZWY8UHJvY2Vzc2luZ0luc3Ry
dWN0aW9uPj4gRG9jdW1lbnQ6OmNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihjbwogICAgIGlm
IChkYXRhLmNvbnRhaW5zKCI/PiIpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxp
ZENoYXJhY3RlckVycm9yIH07CiAKLSAgICByZXR1cm4gUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpj
cmVhdGUoKnRoaXMsIHRhcmdldCwgZGF0YSk7CisgICAgcmV0dXJuIFByb2Nlc3NpbmdJbnN0cnVj
dGlvbjo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKHRhcmdldCksIFdURk1vdmUoZGF0YSkpOwogfQog
Ci1SZWY8VGV4dD4gRG9jdW1lbnQ6OmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZShjb25zdCBTdHJpbmcm
IHRleHQpCitSZWY8VGV4dD4gRG9jdW1lbnQ6OmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZShTdHJpbmcm
JiB0ZXh0KQogewotICAgIHJldHVybiBUZXh0OjpjcmVhdGVFZGl0aW5nVGV4dCgqdGhpcywgdGV4
dCk7CisgICAgcmV0dXJuIFRleHQ6OmNyZWF0ZUVkaXRpbmdUZXh0KCp0aGlzLCBXVEZNb3ZlKHRl
eHQpKTsKIH0KIAogUmVmPENTU1N0eWxlRGVjbGFyYXRpb24+IERvY3VtZW50OjpjcmVhdGVDU1NT
dHlsZURlY2xhcmF0aW9uKCkKQEAgLTE3MzEsNyArMTczMSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnVw
ZGF0ZVRpdGxlRnJvbVRpdGxlRWxlbWVudCgpCiAgICAgfQogfQogCi12b2lkIERvY3VtZW50Ojpz
ZXRUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQordm9pZCBEb2N1bWVudDo6c2V0VGl0bGUoU3Ry
aW5nJiYgdGl0bGUpCiB7CiAgICAgUmVmUHRyIGVsZW1lbnQgPSBkb2N1bWVudEVsZW1lbnQoKTsK
ICAgICBpZiAoaXM8U1ZHU1ZHRWxlbWVudD4oZWxlbWVudCkpIHsKQEAgLTE3NDEsNyArMTc0MSw3
IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAgICAg
IH0KICAgICAgICAgLy8gaW5zZXJ0QmVmb3JlIGFib3ZlIG1heSBoYXZlIHJhbiBzY3JpcHRzIHdo
aWNoIHJlbW92ZWQgbV90aXRsZUVsZW1lbnQuCiAgICAgICAgIGlmIChtX3RpdGxlRWxlbWVudCkK
LSAgICAgICAgICAgIG1fdGl0bGVFbGVtZW50LT5zZXRUZXh0Q29udGVudCh0aXRsZSk7CisgICAg
ICAgICAgICBtX3RpdGxlRWxlbWVudC0+c2V0VGV4dENvbnRlbnQoV1RGTW92ZSh0aXRsZSkpOwog
ICAgIH0gZWxzZSBpZiAoaXM8SFRNTEVsZW1lbnQ+KGVsZW1lbnQpKSB7CiAgICAgICAgIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBvbGRUaXRsZTsKICAgICAgICAgaWYgKCFtX3RpdGxlRWxlbWVudCkg
ewpAQCAtMTc1Nyw3ICsxNzU3LDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0VGl0bGUoY29uc3QgU3Ry
aW5nJiB0aXRsZSkKICAgICAgICAgaWYgKCFtX3RpdGxlRWxlbWVudCkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAKLSAgICAgICAgbV90aXRsZUVsZW1lbnQtPnNldFRleHRDb250ZW50KHRpdGxl
KTsKKyAgICAgICAgbV90aXRsZUVsZW1lbnQtPnNldFRleHRDb250ZW50KFN0cmluZyB7IHRpdGxl
IH0pOwogICAgICAgICBhdXRvKiB0ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlciA9IHRleHRNYW5p
cHVsYXRpb25Db250cm9sbGVySWZFeGlzdHMoKTsKICAgICAgICAgaWYgKFVOTElLRUxZKHRleHRN
YW5pcHVsYXRpb25Db250cm9sbGVyKSkgewogICAgICAgICAgICAgaWYgKCFvbGRUaXRsZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKaW5kZXggOTUxZGFlMmIwZDU5NmRlZjU2MzdhZTE0Njk1YmMyMjA2MDkz
ZmFjZi4uMTRmYmE1NmU2NjZkNzhkNzM4OTU0MGE3NzAyMTU0Y2RjNzk3NGNmNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKQEAgLTQzNSwxMCArNDM1LDEwIEBAIHB1YmxpYzoKICAgICAKICAgICBXRUJD
T1JFX0VYUE9SVCBFeGNlcHRpb25PcjxSZWY8RWxlbWVudD4+IGNyZWF0ZUVsZW1lbnRGb3JCaW5k
aW5ncyhjb25zdCBBdG9tU3RyaW5nJiB0YWdOYW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCBSZWY8
RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwotICAgIFdFQkNPUkVf
RVhQT1JUIFJlZjxUZXh0PiBjcmVhdGVUZXh0Tm9kZShjb25zdCBTdHJpbmcmIGRhdGEpOwotICAg
IFdFQkNPUkVfRVhQT1JUIFJlZjxDb21tZW50PiBjcmVhdGVDb21tZW50KGNvbnN0IFN0cmluZyYg
ZGF0YSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVmPENEQVRBU2VjdGlvbj4+
IGNyZWF0ZUNEQVRBU2VjdGlvbihjb25zdCBTdHJpbmcmIGRhdGEpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIEV4Y2VwdGlvbk9yPFJlZjxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24+PiBjcmVhdGVQcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24oY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgZGF0YSk7
CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFRleHQ+IGNyZWF0ZVRleHROb2RlKFN0cmluZyYmIGRh
dGEpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb21tZW50PiBjcmVhdGVDb21tZW50KFN0cmlu
ZyYmIGRhdGEpOworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFJlZjxDREFUQVNlY3Rp
b24+PiBjcmVhdGVDREFUQVNlY3Rpb24oU3RyaW5nJiYgZGF0YSk7CisgICAgV0VCQ09SRV9FWFBP
UlQgRXhjZXB0aW9uT3I8UmVmPFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4+IGNyZWF0ZVByb2Nlc3Np
bmdJbnN0cnVjdGlvbihTdHJpbmcmJiB0YXJnZXQsIFN0cmluZyYmIGRhdGEpOwogICAgIFdFQkNP
UkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFJlZjxBdHRyPj4gY3JlYXRlQXR0cmlidXRlKGNvbnN0IEF0
b21TdHJpbmcmIG5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFJlZjxBdHRy
Pj4gY3JlYXRlQXR0cmlidXRlTlMoY29uc3QgQXRvbVN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25z
dCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsIGJvb2wgc2hvdWxkSWdub3JlTmFtZXNwYWNlQ2hlY2tz
ID0gZmFsc2UpOwogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFJlZjxOb2RlPj4gaW1w
b3J0Tm9kZShOb2RlJiBub2RlVG9JbXBvcnQsIGJvb2wgZGVlcCk7CkBAIC02MTIsNyArNjEyLDcg
QEAgcHVibGljOgogCiAgICAgLy8gU3BlY2lhbCBzdXBwb3J0IGZvciBlZGl0aW5nCiAgICAgV0VC
Q09SRV9FWFBPUlQgUmVmPENTU1N0eWxlRGVjbGFyYXRpb24+IGNyZWF0ZUNTU1N0eWxlRGVjbGFy
YXRpb24oKTsKLSAgICBSZWY8VGV4dD4gY3JlYXRlRWRpdGluZ1RleHROb2RlKGNvbnN0IFN0cmlu
ZyYpOworICAgIFJlZjxUZXh0PiBjcmVhdGVFZGl0aW5nVGV4dE5vZGUoU3RyaW5nJiYpOwogCiAg
ICAgZW51bSBjbGFzcyBSZXNvbHZlU3R5bGVUeXBlIHsgTm9ybWFsLCBSZWJ1aWxkIH07CiAgICAg
dm9pZCByZXNvbHZlU3R5bGUoUmVzb2x2ZVN0eWxlVHlwZSA9IFJlc29sdmVTdHlsZVR5cGU6Ok5v
cm1hbCk7CkBAIC05NjgsNyArOTY4LDcgQEAgcHVibGljOgogCiAgICAgLy8gVXNlZCBieSBET00g
YmluZGluZ3M7IG5vIGRpcmVjdGlvbiBrbm93bi4KICAgICBjb25zdCBTdHJpbmcmIHRpdGxlKCkg
Y29uc3QgeyByZXR1cm4gbV90aXRsZS5zdHJpbmc7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldFRpdGxlKGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGl0
bGUoU3RyaW5nJiYpOwogICAgIGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlV2l0aERp
cmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGl0bGU7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JU
IGNvbnN0IEF0b21TdHJpbmcmIGRpcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4
IGI3NTYxM2MyOTYzYzg3YjI1ZjU5NTI3YzFiYzJiMzg0NzlhYTM3NWMuLjBjMzk2NTkwZWIwZDAw
YzQ1OGY1NmY2NWNlYjhkZTAwYmYwZmJiMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTQ2
NTMsOSArNDY1Myw5IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEVsZW1lbnQ6Omluc2VydEFkamFjZW50
SFRNTChjb25zdCBTdHJpbmcmIHdoZXJlLCBjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIGluc2Vy
dEFkamFjZW50SFRNTCh3aGVyZSwgbWFya3VwLCBudWxscHRyKTsKIH0KIAotRXhjZXB0aW9uT3I8
dm9pZD4gRWxlbWVudDo6aW5zZXJ0QWRqYWNlbnRUZXh0KGNvbnN0IFN0cmluZyYgd2hlcmUsIGNv
bnN0IFN0cmluZyYgdGV4dCkKK0V4Y2VwdGlvbk9yPHZvaWQ+IEVsZW1lbnQ6Omluc2VydEFkamFj
ZW50VGV4dChjb25zdCBTdHJpbmcmIHdoZXJlLCBTdHJpbmcmJiB0ZXh0KQogewotICAgIGF1dG8g
cmVzdWx0ID0gaW5zZXJ0QWRqYWNlbnQod2hlcmUsIGRvY3VtZW50KCkuY3JlYXRlVGV4dE5vZGUo
dGV4dCkpOworICAgIGF1dG8gcmVzdWx0ID0gaW5zZXJ0QWRqYWNlbnQod2hlcmUsIGRvY3VtZW50
KCkuY3JlYXRlVGV4dE5vZGUoV1RGTW92ZSh0ZXh0KSkpOwogICAgIGlmIChyZXN1bHQuaGFzRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogICAg
IHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCBmMjUwOThjNzY5ZTc5MGUxZTFlMTY5
MTZiYjE0NmUwMDQ1NjY0MDA4Li4yYjNlMzk5ZGE0Nzk3Y2U3NjgyY2U2NTUzNTQ3ZjlhNDMxYjJk
Y2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTM3Miw3ICszNzIsNyBAQCBwdWJsaWM6CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxFbGVtZW50Kj4gaW5zZXJ0QWRqYWNlbnRFbGVt
ZW50KGNvbnN0IFN0cmluZyYgd2hlcmUsIEVsZW1lbnQmIG5ld0NoaWxkKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBpbnNlcnRBZGphY2VudEhUTUwoY29uc3QgU3RyaW5n
JiB3aGVyZSwgY29uc3QgU3RyaW5nJiBodG1sKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRp
b25Pcjx2b2lkPiBpbnNlcnRBZGphY2VudFRleHQoY29uc3QgU3RyaW5nJiB3aGVyZSwgY29uc3Qg
U3RyaW5nJiB0ZXh0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBpbnNl
cnRBZGphY2VudFRleHQoY29uc3QgU3RyaW5nJiB3aGVyZSwgU3RyaW5nJiYgdGV4dCk7CiAKICAg
ICBjb25zdCBSZW5kZXJTdHlsZSogY29tcHV0ZWRTdHlsZShQc2V1ZG9JZCA9IFBzZXVkb0lkOjpO
b25lKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdlT3Zl
cmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW1hZ2VPdmVybGF5LmNwcAppbmRleCBlMDRj
NzY2OWI2MzRjMDM2N2Y2Mjc4MDlkZjE2ZmMzNDQ1NjU2ZTY5Li43ODRiNWFlYzA4MzA4ZDgwMDc5
NjI2MzFhZjI4MTQyMzQzY2JkNDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW1h
Z2VPdmVybGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW1hZ2VPdmVybGF5LmNwcApA
QCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRpYyB2b2lkIGluc3RhbGxJbWFnZU92ZXJsYXlTdHlsZVNo
ZWV0KFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QpCiB7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZl
ckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHNoYWRvd1N0eWxlKFN0cmluZ0ltcGw6OmNyZWF0ZVdp
dGhvdXRDb3B5aW5nKGltYWdlT3ZlcmxheVVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihpbWFn
ZU92ZXJsYXlVc2VyQWdlbnRTdHlsZVNoZWV0KSkpOwogICAgIGF1dG8gc3R5bGUgPSBIVE1MU3R5
bGVFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjpzdHlsZVRhZywgc2hhZG93Um9vdC5kb2N1bWVu
dCgpLCBmYWxzZSk7Ci0gICAgc3R5bGUtPnNldFRleHRDb250ZW50KHNoYWRvd1N0eWxlKTsKKyAg
ICBzdHlsZS0+c2V0VGV4dENvbnRlbnQoU3RyaW5nIHsgc2hhZG93U3R5bGUgfSk7CiAgICAgc2hh
ZG93Um9vdC5hcHBlbmRDaGlsZChXVEZNb3ZlKHN0eWxlKSk7CiB9CiAKQEAgLTM5Nyw3ICszOTcs
NyBAQCBzdGF0aWMgRWxlbWVudHMgdXBkYXRlU3VidHJlZShIVE1MRWxlbWVudCYgZWxlbWVudCwg
Y29uc3QgVGV4dFJlY29nbml0aW9uUmVzdWx0JgogICAgICAgICAgICAgICAgIGF1dG8gdGV4dENv
bnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCkpOwogICAgICAg
ICAgICAgICAgIHRleHRDb250YWluZXItPmNsYXNzTGlzdCgpLmFkZChpbWFnZU92ZXJsYXlUZXh0
Q2xhc3MoKSk7CiAgICAgICAgICAgICAgICAgbGluZUNvbnRhaW5lci0+YXBwZW5kQ2hpbGQodGV4
dENvbnRhaW5lcik7Ci0gICAgICAgICAgICAgICAgdGV4dENvbnRhaW5lci0+YXBwZW5kQ2hpbGQo
VGV4dDo6Y3JlYXRlKGRvY3VtZW50LmdldCgpLCBjaGlsZC5oYXNMZWFkaW5nV2hpdGVzcGFjZSA/
IG1ha2VTdHJpbmcoJ1xuJywgY2hpbGQudGV4dCkgOiBjaGlsZC50ZXh0KSk7CisgICAgICAgICAg
ICAgICAgdGV4dENvbnRhaW5lci0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50Lmdl
dCgpLCBjaGlsZC5oYXNMZWFkaW5nV2hpdGVzcGFjZSA/IG1ha2VTdHJpbmcoJ1xuJywgY2hpbGQu
dGV4dCkgOiBTdHJpbmcgeyBjaGlsZC50ZXh0IH0pKTsKICAgICAgICAgICAgICAgICBsaW5lRWxl
bWVudHMuY2hpbGRyZW4udW5jaGVja2VkQXBwZW5kKFdURk1vdmUodGV4dENvbnRhaW5lcikpOwog
ICAgICAgICAgICAgfQogCkBAIC00MjQsMTAgKzQyNCwxMCBAQCBzdGF0aWMgRWxlbWVudHMgdXBk
YXRlU3VidHJlZShIVE1MRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVGV4dFJlY29nbml0aW9uUmVz
dWx0JgogICAgICAgICAgICAgYXV0byBibG9ja0NvbnRhaW5lciA9IEhUTUxEaXZFbGVtZW50Ojpj
cmVhdGUoZG9jdW1lbnQuZ2V0KCkpOwogICAgICAgICAgICAgYmxvY2tDb250YWluZXItPmNsYXNz
TGlzdCgpLmFkZChpbWFnZU92ZXJsYXlCbG9ja0NsYXNzKCkpOwogICAgICAgICAgICAgYXV0byBs
aW5lcyA9IGJsb2NrLnRleHQuc3BsaXQobmV3bGluZUNoYXJhY3Rlcik7Ci0gICAgICAgICAgICBm
b3IgKGF1dG8mIHRleHRDb250ZW50IDogbGluZXMpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYm
IHRleHRDb250ZW50IDogV1RGTW92ZShsaW5lcykpIHsKICAgICAgICAgICAgICAgICBpZiAoYmxv
Y2tDb250YWluZXItPmhhc0NoaWxkTm9kZXMoKSkKICAgICAgICAgICAgICAgICAgICAgYmxvY2tD
b250YWluZXItPmFwcGVuZENoaWxkKEhUTUxCUkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudC5nZXQo
KSkpOwotICAgICAgICAgICAgICAgIGJsb2NrQ29udGFpbmVyLT5hcHBlbmRDaGlsZChUZXh0Ojpj
cmVhdGUoZG9jdW1lbnQuZ2V0KCksIHRleHRDb250ZW50KSk7CisgICAgICAgICAgICAgICAgYmxv
Y2tDb250YWluZXItPmFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVudC5nZXQoKSwgV1RG
TW92ZSh0ZXh0Q29udGVudCkpKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgY29uc3Rl
eHByIGF1dG8gbWF4TGluZUNvdW50Rm9yQ2VudGVyQWxpZ25lZFRleHQgPSAyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwCmluZGV4IGNiNDdlYWFlYzBkZTcwNWIzNDgzNmY1NzAyN2I0ZGMxNTc4Yjk1MWUuLjNhZWEw
YjQ1OWVmNTgxZGUwYTM0MjIxMzc5OWMxNWRiNzY1MWQ1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAg
LTU1Miw3ICs1NTIsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Tm9kZT4+IE5vZGU6OmNvbnZlcnRO
b2Rlc09yU3RyaW5nc0ludG9Ob2RlKEZpeGVkVmVjdG9yPE5vZGVPcgogICAgIGZvciAoYXV0byYg
dmFyaWFudCA6IG5vZGVPclN0cmluZ1ZlY3RvcikgewogICAgICAgICBXVEY6OnN3aXRjaE9uKHZh
cmlhbnQsCiAgICAgICAgICAgICBbJl0oUmVmUHRyPE5vZGU+JiBub2RlKSB7IG5vZGVzLnVuY2hl
Y2tlZEFwcGVuZCgqbm9kZS5nZXQoKSk7IH0sCi0gICAgICAgICAgICBbJl0oU3RyaW5nJiBzdHJp
bmcpIHsgbm9kZXMudW5jaGVja2VkQXBwZW5kKFRleHQ6OmNyZWF0ZShkb2N1bWVudCgpLCBzdHJp
bmcpKTsgfQorICAgICAgICAgICAgWyZdKFN0cmluZyYgc3RyaW5nKSB7IG5vZGVzLnVuY2hlY2tl
ZEFwcGVuZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQoKSwgV1RGTW92ZShzdHJpbmcpKSk7IH0KICAg
ICAgICAgKTsKICAgICB9CiAKQEAgLTE1OTAsNyArMTU5MCw3IEBAIFN0cmluZyBOb2RlOjp0ZXh0
Q29udGVudChib29sIGNvbnZlcnRCUnNUb05ld2xpbmVzKSBjb25zdAogICAgIHJldHVybiBpc051
bGxTdHJpbmcgPyBTdHJpbmcoKSA6IGNvbnRlbnQudG9TdHJpbmcoKTsKIH0KIAotdm9pZCBOb2Rl
OjpzZXRUZXh0Q29udGVudChjb25zdCBTdHJpbmcmIHRleHQpCit2b2lkIE5vZGU6OnNldFRleHRD
b250ZW50KFN0cmluZyYmIHRleHQpCiB7ICAgICAgICAgICAKICAgICBzd2l0Y2ggKG5vZGVUeXBl
KCkpIHsKICAgICBjYXNlIEFUVFJJQlVURV9OT0RFOgpAQCAtMTU5OCwxMSArMTU5OCwxMSBAQCB2
b2lkIE5vZGU6OnNldFRleHRDb250ZW50KGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBjYXNlIENE
QVRBX1NFQ1RJT05fTk9ERToKICAgICBjYXNlIENPTU1FTlRfTk9ERToKICAgICBjYXNlIFBST0NF
U1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKLSAgICAgICAgc2V0Tm9kZVZhbHVlKHRleHQpOworICAg
ICAgICBzZXROb2RlVmFsdWUoV1RGTW92ZSh0ZXh0KSk7CiAgICAgICAgIHJldHVybjsKICAgICBj
YXNlIEVMRU1FTlRfTk9ERToKICAgICBjYXNlIERPQ1VNRU5UX0ZSQUdNRU5UX05PREU6Ci0gICAg
ICAgIGRvd25jYXN0PENvbnRhaW5lck5vZGU+KCp0aGlzKS5zdHJpbmdSZXBsYWNlQWxsKHRleHQp
OworICAgICAgICBkb3duY2FzdDxDb250YWluZXJOb2RlPigqdGhpcykuc3RyaW5nUmVwbGFjZUFs
bChXVEZNb3ZlKHRleHQpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRE9DVU1FTlRfTk9E
RToKICAgICBjYXNlIERPQ1VNRU5UX1RZUEVfTk9ERToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IGEzM2U2ODIy
NjVlM2ExMWJhNWI1ODJjMTNkMDBjYTI4OGZhZTM1ZTAuLmE4NTYwMzBiYzExZGFjODBlMjM5YTVh
MjZlYTlkMTNkODVlZjJkMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMTc1LDcgKzE3NSw3IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBBdG9tU3RyaW5nJiBsb29rdXBOYW1lc3BhY2VV
UkkoY29uc3QgQXRvbVN0cmluZyYgcHJlZml4KSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyB0ZXh0Q29udGVudChib29sIGNvbnZlcnRCUnNUb05ld2xpbmVzID0gZmFsc2UpIGNv
bnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGV4dENvbnRlbnQoY29uc3QgU3RyaW5n
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUZXh0Q29udGVudChTdHJpbmcmJik7CiAg
ICAgCiAgICAgTm9kZSogbGFzdERlc2NlbmRhbnQoKSBjb25zdDsKICAgICBOb2RlKiBmaXJzdERl
c2NlbmRhbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVj
dGlvbi5jcHAKaW5kZXggOTc0Njk2MjlmOTQ1M2U3ZDE2MzdhYTU1YTgzNjQxY2Q0ZTBlZWQzYy4u
YzJmM2I3MzA3ZDBkMDkwYTMzY2M3MTY2ZGE2MjM0OWY1MmI1MGNlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChQcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24pOwogCi1pbmxpbmUgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpQcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRhcmdldCwg
Y29uc3QgU3RyaW5nJiBkYXRhKQotICAgIDogQ2hhcmFjdGVyRGF0YShkb2N1bWVudCwgZGF0YSkK
LSAgICAsIG1fdGFyZ2V0KHRhcmdldCkKK2lubGluZSBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OlBy
b2Nlc3NpbmdJbnN0cnVjdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZyYmIHRhcmdldCwg
U3RyaW5nJiYgZGF0YSkKKyAgICA6IENoYXJhY3RlckRhdGEoZG9jdW1lbnQsIFdURk1vdmUoZGF0
YSkpCisgICAgLCBtX3RhcmdldChXVEZNb3ZlKHRhcmdldCkpCiB7CiB9CiAKLVJlZjxQcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24+IFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y3JlYXRlKERvY3VtZW50JiBk
b2N1bWVudCwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgZGF0YSkKK1JlZjxQ
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24+IFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y3JlYXRlKERvY3Vt
ZW50JiBkb2N1bWVudCwgU3RyaW5nJiYgdGFyZ2V0LCBTdHJpbmcmJiBkYXRhKQogewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFByb2Nlc3NpbmdJbnN0cnVjdGlvbihkb2N1bWVudCwgdGFyZ2V0
LCBkYXRhKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUHJvY2Vzc2luZ0luc3RydWN0aW9u
KGRvY3VtZW50LCBXVEZNb3ZlKHRhcmdldCksIFdURk1vdmUoZGF0YSkpKTsKIH0KIAogUHJvY2Vz
c2luZ0luc3RydWN0aW9uOjp+UHJvY2Vzc2luZ0luc3RydWN0aW9uKCkKQEAgLTgwLDcgKzgwLDcg
QEAgUmVmPE5vZGU+IFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y2xvbmVOb2RlSW50ZXJuYWwoRG9j
dW1lbnQmIHRhcmdldERvY3VtZW50LCBDbG8KIHsKICAgICAvLyBGSVhNRTogSXMgaXQgYSBwcm9i
bGVtIHRoYXQgdGhpcyBkb2VzIG5vdCBjb3B5IG1fbG9jYWxIcmVmPwogICAgIC8vIFdoYXQgYWJv
dXQgb3RoZXIgZGF0YSBtZW1iZXJzPwotICAgIHJldHVybiBjcmVhdGUodGFyZ2V0RG9jdW1lbnQs
IG1fdGFyZ2V0LCBkYXRhKCkpOworICAgIHJldHVybiBjcmVhdGUodGFyZ2V0RG9jdW1lbnQsIFN0
cmluZyB7IG1fdGFyZ2V0IH0sIFN0cmluZyB7IGRhdGEoKSB9KTsKIH0KIAogdm9pZCBQcm9jZXNz
aW5nSW5zdHJ1Y3Rpb246OmNoZWNrU3R5bGVTaGVldCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJv
Y2Vzc2luZ0luc3RydWN0aW9uLmgKaW5kZXggNjQwZGM0YzlkOWEwMjg3NDE0ZmY3MjlhOWJiYWQz
ODJmMjc2OWMxMi4uNzMzMWIyNGMxOGVhNjUwZTFlYzcyNGE3YTdiMzlhYzA4MjlhOTI0NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaApAQCAtMzQsNyArMzQs
NyBAQCBjbGFzcyBDU1NTdHlsZVNoZWV0OwogY2xhc3MgUHJvY2Vzc2luZ0luc3RydWN0aW9uIGZp
bmFsIDogcHVibGljIENoYXJhY3RlckRhdGEsIHByaXZhdGUgQ2FjaGVkU3R5bGVTaGVldENsaWVu
dCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pOwog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8UHJvY2Vzc2luZ0luc3RydWN0aW9uPiBjcmVhdGUoRG9j
dW1lbnQmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBkYXRhKTsKKyAgICBz
dGF0aWMgUmVmPFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4gY3JlYXRlKERvY3VtZW50JiwgU3RyaW5n
JiYgdGFyZ2V0LCBTdHJpbmcmJiBkYXRhKTsKICAgICB2aXJ0dWFsIH5Qcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24oKTsKIAogICAgIGNvbnN0IFN0cmluZyYgdGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV90
YXJnZXQ7IH0KQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBDaGFyYWN0ZXJEYXRhOwotICAgIFByb2Nlc3NpbmdJbnN0cnVjdGlvbihEb2N1bWVu
dCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgIFByb2Nl
c3NpbmdJbnN0cnVjdGlvbihEb2N1bWVudCYsIFN0cmluZyYmIHRhcmdldCwgU3RyaW5nJiYgZGF0
YSk7CiAKICAgICBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICBOb2RlVHlw
ZSBub2RlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCmluZGV4IDRiOTAzZjhm
ZGYyYmFkOTM5ZGRhYmE4MGNkZTg4MDU0NDEyOTc2ZTIuLmU2N2IyYjIxMDk0ODM4NDJmMDA2MWUy
ZjI3YjZhNjY3MjI0ZmRmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKQEAgLTQ0LDE0ICs0NCwxNCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChUZXh0KTsK
IAotUmVmPFRleHQ+IFRleHQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmlu
ZyYgZGF0YSkKK1JlZjxUZXh0PiBUZXh0OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJp
bmcmJiBkYXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHQoZG9jdW1lbnQsIGRh
dGEsIENyZWF0ZVRleHQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0KGRvY3VtZW50
LCBXVEZNb3ZlKGRhdGEpLCBDcmVhdGVUZXh0KSk7CiB9CiAKLVJlZjxUZXh0PiBUZXh0OjpjcmVh
dGVFZGl0aW5nVGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZGF0YSkKK1Jl
ZjxUZXh0PiBUZXh0OjpjcmVhdGVFZGl0aW5nVGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmlu
ZyYmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dChkb2N1bWVudCwgZGF0
YSwgQ3JlYXRlRWRpdGluZ1RleHQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0KGRv
Y3VtZW50LCBXVEZNb3ZlKGRhdGEpLCBDcmVhdGVFZGl0aW5nVGV4dCkpOwogfQogCiBUZXh0Ojp+
VGV4dCgpID0gZGVmYXVsdDsKQEAgLTE2Myw3ICsxNjMsNyBAQCBOb2RlOjpOb2RlVHlwZSBUZXh0
Ojpub2RlVHlwZSgpIGNvbnN0CiAKIFJlZjxOb2RlPiBUZXh0OjpjbG9uZU5vZGVJbnRlcm5hbChE
b2N1bWVudCYgdGFyZ2V0RG9jdW1lbnQsIENsb25pbmdPcGVyYXRpb24pCiB7Ci0gICAgcmV0dXJu
IGNyZWF0ZSh0YXJnZXREb2N1bWVudCwgZGF0YSgpKTsKKyAgICByZXR1cm4gY3JlYXRlKHRhcmdl
dERvY3VtZW50LCBTdHJpbmcgeyBkYXRhKCkgfSk7CiB9CiAKIHN0YXRpYyBib29sIGlzU1ZHU2hh
ZG93VGV4dChUZXh0KiB0ZXh0KQpAQCAtMTk1LDkgKzE5NSw5IEBAIGJvb2wgVGV4dDo6Y2hpbGRU
eXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlZjxU
ZXh0PiBUZXh0Ojp2aXJ0dWFsQ3JlYXRlKGNvbnN0IFN0cmluZyYgZGF0YSkKK1JlZjxUZXh0PiBU
ZXh0Ojp2aXJ0dWFsQ3JlYXRlKFN0cmluZyYmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZShk
b2N1bWVudCgpLCBkYXRhKTsKKyAgICByZXR1cm4gY3JlYXRlKGRvY3VtZW50KCksIFdURk1vdmUo
ZGF0YSkpOwogfQogCiBSZWY8VGV4dD4gVGV4dDo6Y3JlYXRlV2l0aExlbmd0aExpbWl0KERvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBkYXRhLCB1bnNpZ25lZCBzdGFydCwgdW5zaWdu
ZWQgbGVuZ3RoTGltaXQpCkBAIC0yMDUsNyArMjA1LDcgQEAgUmVmPFRleHQ+IFRleHQ6OmNyZWF0
ZVdpdGhMZW5ndGhMaW1pdChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZGF0YSwg
dW4KICAgICB1bnNpZ25lZCBkYXRhTGVuZ3RoID0gZGF0YS5sZW5ndGgoKTsKIAogICAgIGlmICgh
c3RhcnQgJiYgZGF0YUxlbmd0aCA8PSBsZW5ndGhMaW1pdCkKLSAgICAgICAgcmV0dXJuIGNyZWF0
ZShkb2N1bWVudCwgZGF0YSk7CisgICAgICAgIHJldHVybiBjcmVhdGUoZG9jdW1lbnQsIFN0cmlu
ZyB7IGRhdGEgfSk7CiAKICAgICBSZWY8VGV4dD4gcmVzdWx0ID0gVGV4dDo6Y3JlYXRlKGRvY3Vt
ZW50LCBTdHJpbmcoKSk7CiAgICAgcmVzdWx0LT5wYXJzZXJBcHBlbmREYXRhKGRhdGEsIHN0YXJ0
LCBsZW5ndGhMaW1pdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL1RleHQuaAppbmRleCBlYmM5ZDEwY2M0OGUxMGE3NzZlZjExMmMx
MzZhNWM2YjQ3MTcxYmIyLi42MmM3NWNlMWM2ZjJmNzJmOWI3MzQ3YmZhYWRmNjdiYTYzN2M0NWY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9UZXh0LmgKQEAgLTM0LDkgKzM0LDkgQEAgY2xhc3MgVGV4dCA6IHB1YmxpYyBDaGFy
YWN0ZXJEYXRhIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZGVmYXVsdExl
bmd0aExpbWl0ID0gMSA8PCAxNjsKIAotICAgIHN0YXRpYyBSZWY8VGV4dD4gY3JlYXRlKERvY3Vt
ZW50JiwgY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIFJlZjxUZXh0PiBjcmVhdGUoRG9jdW1l
bnQmLCBTdHJpbmcmJik7CiAgICAgc3RhdGljIFJlZjxUZXh0PiBjcmVhdGVXaXRoTGVuZ3RoTGlt
aXQoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBwb3NpdGlvbkluU3RyaW5nLCB1
bnNpZ25lZCBsZW5ndGhMaW1pdCA9IGRlZmF1bHRMZW5ndGhMaW1pdCk7Ci0gICAgc3RhdGljIFJl
ZjxUZXh0PiBjcmVhdGVFZGl0aW5nVGV4dChEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYpOworICAg
IHN0YXRpYyBSZWY8VGV4dD4gY3JlYXRlRWRpdGluZ1RleHQoRG9jdW1lbnQmLCBTdHJpbmcmJik7
CiAKICAgICB2aXJ0dWFsIH5UZXh0KCk7CiAKQEAgLTU5LDggKzU5LDggQEAgcHVibGljOgogICAg
IFN0cmluZyBkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3QgZmluYWw7CiAKIHByb3RlY3RlZDoKLSAg
ICBUZXh0KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBkYXRhLCBDb25zdHJ1Y3Rp
b25UeXBlIHR5cGUpCi0gICAgICAgIDogQ2hhcmFjdGVyRGF0YShkb2N1bWVudCwgZGF0YSwgdHlw
ZSkKKyAgICBUZXh0KERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5nJiYgZGF0YSwgQ29uc3RydWN0
aW9uVHlwZSB0eXBlKQorICAgICAgICA6IENoYXJhY3RlckRhdGEoZG9jdW1lbnQsIFdURk1vdmUo
ZGF0YSksIHR5cGUpCiAgICAgewogICAgIH0KIApAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
dm9pZCBzZXREYXRhQW5kVXBkYXRlKGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIG9mZnNldE9mUmVw
bGFjZWREYXRhLCB1bnNpZ25lZCBvbGRMZW5ndGgsIHVuc2lnbmVkIG5ld0xlbmd0aCwgVXBkYXRl
TGl2ZVJhbmdlcykgZmluYWw7CiAKLSAgICB2aXJ0dWFsIFJlZjxUZXh0PiB2aXJ0dWFsQ3JlYXRl
KGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgUmVmPFRleHQ+IHZpcnR1YWxDcmVhdGUoU3Ry
aW5nJiYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL21hYy9JbWFnZUNvbnRyb2xzTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9tYWMvSW1hZ2VDb250cm9sc01hYy5jcHAKaW5kZXggYmUyMzY4OGUzMWJlMzRhNjBiMGFiZWE3
NjNiNWFiZmZhZGJlOWVlMS4uZWMwNzY4ODIxMmUwMmJmZjBiMmIxMzEyYWVmZDg3N2MyNThmZmM3
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL21hYy9JbWFnZUNvbnRyb2xzTWFjLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWFjL0ltYWdlQ29udHJvbHNNYWMuY3BwCkBAIC05
NSw3ICs5NSw3IEBAIHZvaWQgY3JlYXRlSW1hZ2VDb250cm9scyhIVE1MRWxlbWVudCYgZWxlbWVu
dCkKICAgICAKICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmlu
Zz4gc2hhZG93U3R5bGUoU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoaW1hZ2VDb250
cm9sc01hY1VzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihpbWFnZUNvbnRyb2xzTWFjVXNlckFn
ZW50U3R5bGVTaGVldCkpKTsKICAgICBhdXRvIHN0eWxlID0gSFRNTFN0eWxlRWxlbWVudDo6Y3Jl
YXRlKEhUTUxOYW1lczo6c3R5bGVUYWcsIGRvY3VtZW50LmdldCgpLCBmYWxzZSk7Ci0gICAgc3R5
bGUtPnNldFRleHRDb250ZW50KHNoYWRvd1N0eWxlKTsKKyAgICBzdHlsZS0+c2V0VGV4dENvbnRl
bnQoU3RyaW5nIHsgc2hhZG93U3R5bGUgfSk7CiAgICAgc2hhZG93Um9vdC0+YXBwZW5kQ2hpbGQo
V1RGTW92ZShzdHlsZSkpOwogICAgIAogICAgIGF1dG8gYnV0dG9uID0gSFRNTEJ1dHRvbkVsZW1l
bnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmJ1dHRvblRhZywgZWxlbWVudC5kb2N1bWVudCgpLCBudWxs
cHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ3JlYXRlTGlua0NvbW1h
bmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9DcmVhdGVMaW5rQ29tbWFuZC5jcHAKaW5k
ZXggNjZmYTMxMGI5ZjMzMjY1MDRmOTUyYThkNTRjOGRhMWExMWVlYzY0My4uMGYzYTdmOTQ4NTU4
NGYwNzg3YjhkMDRjYTY5MDkxNWMxMWI1Y2M1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9DcmVhdGVMaW5rQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9DcmVhdGVMaW5rQ29tbWFuZC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBDcmVhdGVMaW5r
Q29tbWFuZDo6ZG9BcHBseSgpCiAgICAgICAgIGFwcGx5U3R5bGVkRWxlbWVudChXVEZNb3ZlKGFu
Y2hvckVsZW1lbnQpKTsKICAgICBlbHNlIHsKICAgICAgICAgaW5zZXJ0Tm9kZUF0KGFuY2hvckVs
ZW1lbnQuY29weVJlZigpLCBlbmRpbmdTZWxlY3Rpb24oKS5zdGFydCgpKTsKLSAgICAgICAgYXBw
ZW5kTm9kZShUZXh0OjpjcmVhdGUoZG9jdW1lbnQoKSwgbV91cmwpLCBhbmNob3JFbGVtZW50LmNv
cHlSZWYoKSk7CisgICAgICAgIGFwcGVuZE5vZGUoVGV4dDo6Y3JlYXRlKGRvY3VtZW50KCksIFN0
cmluZyB7IG1fdXJsIH0pLCBhbmNob3JFbGVtZW50LmNvcHlSZWYoKSk7CiAgICAgICAgIHNldEVu
ZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2Rl
KGFuY2hvckVsZW1lbnQucHRyKCkpLCBwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKGFuY2hvckVs
ZW1lbnQucHRyKCkpLCBBZmZpbml0eTo6RG93bnN0cmVhbSwgZW5kaW5nU2VsZWN0aW9uKCkuaXNE
aXJlY3Rpb25hbCgpKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKaW5k
ZXggODBmZmQxZWMzZjgyMGYxNjY3MmFiMThiNjQyNTA0M2I5YmY0YmYyMy4uNjg0NWI4NzA3M2Vk
YjljNDJhODBiNDY0NDY3ODkwZDk1NzEyZmEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcu
Y3BwCkBAIC04MjcsOSArODI3LDkgQEAgc3RhdGljIFJlZjxFbGVtZW50PiBjcmVhdGVUYWJTcGFu
RWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIFRleHQmIHRhYlRleHROb2RlKQogICAgIHJldHVy
biBzcGFuRWxlbWVudDsKIH0KIAotUmVmPEVsZW1lbnQ+IGNyZWF0ZVRhYlNwYW5FbGVtZW50KERv
Y3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0YWJUZXh0KQorUmVmPEVsZW1lbnQ+IGNy
ZWF0ZVRhYlNwYW5FbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5nJiYgdGFiVGV4dCkK
IHsKLSAgICByZXR1cm4gY3JlYXRlVGFiU3BhbkVsZW1lbnQoZG9jdW1lbnQsIGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKHRhYlRleHQpKTsKKyAgICByZXR1cm4gY3JlYXRlVGFiU3BhbkVsZW1lbnQo
ZG9jdW1lbnQsIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFdURk1vdmUodGFiVGV4dCkpKTsKIH0K
IAogUmVmPEVsZW1lbnQ+IGNyZWF0ZVRhYlNwYW5FbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0aW5nLmgKaW5kZXggOTZjZWM5N2NmN2UzYjE2Y2UwZjFjMDViZTc0
ZDcyMDhjY2M0ZGFiOS4uMjc2MTIwYzRjN2EyNWIyZmNhNzViODJlMjliNmMyYWY0MDI2MzUxNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmgKQEAgLTE2OSw3ICsxNjksNyBAQCBOb2RlKiBlbmNs
b3NpbmdMaXN0Q2hpbGQoTm9kZSopOwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBSZWY8RWxlbWVu
dD4gY3JlYXRlVGFiU3BhbkVsZW1lbnQoRG9jdW1lbnQmKTsKLVJlZjxFbGVtZW50PiBjcmVhdGVU
YWJTcGFuRWxlbWVudChEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgdGFiVGV4dCk7CitSZWY8RWxl
bWVudD4gY3JlYXRlVGFiU3BhbkVsZW1lbnQoRG9jdW1lbnQmLCBTdHJpbmcmJiB0YWJUZXh0KTsK
IFJlZjxFbGVtZW50PiBjcmVhdGVCbG9ja1BsYWNlaG9sZGVyRWxlbWVudChEb2N1bWVudCYpOwog
CiBFbGVtZW50KiBlZGl0YWJsZVJvb3RGb3JQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYsIEVkaXRh
YmxlVHlwZSA9IENvbnRlbnRJc0VkaXRhYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApp
bmRleCA1ZGY3YTM1MDhkYTc4YjMyNTAyMjg2NjBmMDQ0YWI0ZDQzNWM1NGYyLi42OGUxNGEwZjE2
MmYzNDhmMGY5YTJiMjFjM2UxYTdiZTNmMDIyYzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCkBAIC00MzUzLDcgKzQzNTMsNyBAQCBjb25zdCBSZW5kZXJTdHlsZSogRWRpdG9yOjpzdHls
ZUZvclNlbGVjdGlvblN0YXJ0KFJlZlB0cjxOb2RlPiYgbm9kZVRvUmVtb3ZlKQogICAgIFN0cmlu
ZyBzdHlsZVRleHQgPSB0eXBpbmdTdHlsZS0+c3R5bGUoKS0+YXNUZXh0KCkgKyAiIGRpc3BsYXk6
IGlubGluZSI7CiAgICAgc3R5bGVFbGVtZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzdHls
ZUF0dHIsIHN0eWxlVGV4dCk7CiAKLSAgICBzdHlsZUVsZW1lbnQtPmFwcGVuZENoaWxkKGRvY3Vt
ZW50KCkuY3JlYXRlRWRpdGluZ1RleHROb2RlKGVtcHR5U3RyaW5nKCkpKTsKKyAgICBzdHlsZUVs
ZW1lbnQtPmFwcGVuZENoaWxkKGRvY3VtZW50KCkuY3JlYXRlRWRpdGluZ1RleHROb2RlKFN0cmlu
ZyB7IGVtcHR5U3RyaW5nKCkgfSkpOwogCiAgICAgYXV0byBwb3NpdGlvbk5vZGUgPSBwb3NpdGlv
bi5kZXByZWNhdGVkTm9kZSgpOwogICAgIEFTU0VSVChwb3NpdGlvbk5vZGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmgKaW5kZXggODVhMmYxMmExZDI3YjJjN2MzOGI5NzIwZDMzZTExZmFjNzE3MDA2
ZC4uZDA0ZTBmZjk5MGQxMmZhNGUxMTYxNTZjODJiYWEzNjkzOWE5ZGEzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5oCkBAIC00MjgsNyArNDI4LDcgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbmZpcm1NYXJrZWRUZXh0KCk7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUZXh0QXNDaGlsZE9mRWxlbWVudChjb25zdCBT
dHJpbmcmLCBFbGVtZW50Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUZXh0QXNDaGls
ZE9mRWxlbWVudChTdHJpbmcmJiwgRWxlbWVudCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGly
ZWN0aW9uKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluc2VydERpY3RhdGlvblBocmFzZXMo
VmVjdG9yPFZlY3RvcjxTdHJpbmc+PiYmIGRpY3RhdGlvblBocmFzZXMsIGlkIG1ldGFkYXRhKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERpY3RhdGlvblBocmFzZXNBc0NoaWxkT2ZFbGVt
ZW50KGNvbnN0IFZlY3RvcjxWZWN0b3I8U3RyaW5nPj4mIGRpY3RhdGlvblBocmFzZXMsIGlkIG1l
dGFkYXRhLCBFbGVtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0lu
c2VydExpbmVCcmVha0NvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRM
aW5lQnJlYWtDb21tYW5kLmNwcAppbmRleCAzZTMzNzNhYzNmNmZkMzFhMGFjMDRkNDYxZGE4YzY3
MTM5YTAwMDY3Li45MTI5YTNiZjgzMTFjNWVhODRjZWJlMzdkOTFlZWY2OGFjNDMxMGNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAK
QEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIEluc2VydExpbmVCcmVha0NvbW1hbmQ6OmRvQXBwbHko
KQogICAgICAgICAgICAgaWYgKHRleHROb2RlLmlzQ29ubmVjdGVkKCkpCiAgICAgICAgICAgICAg
ICAgaW5zZXJ0VGV4dEludG9Ob2RlKHRleHROb2RlLCAwLCBub25CcmVha2luZ1NwYWNlU3RyaW5n
KCkpOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgYXV0byBuYnNwTm9kZSA9
IGRvY3VtZW50KCkuY3JlYXRlVGV4dE5vZGUobm9uQnJlYWtpbmdTcGFjZVN0cmluZygpKTsKKyAg
ICAgICAgICAgICAgICBhdXRvIG5ic3BOb2RlID0gZG9jdW1lbnQoKS5jcmVhdGVUZXh0Tm9kZShT
dHJpbmcgeyBub25CcmVha2luZ1NwYWNlU3RyaW5nKCkgfSk7CiAgICAgICAgICAgICAgICAgYXV0
byogbmJzcE5vZGVQdHIgPSBuYnNwTm9kZS5wdHIoKTsKICAgICAgICAgICAgICAgICBpbnNlcnRO
b2RlQXQoV1RGTW92ZShuYnNwTm9kZSksIHBvc2l0aW9uQmVmb3JlVGV4dE5vZGUpOwogICAgICAg
ICAgICAgICAgIGVuZGluZ1Bvc2l0aW9uID0gZmlyc3RQb3NpdGlvbkluTm9kZShuYnNwTm9kZVB0
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwCmluZGV4
IDcxZmNhMjM1ZWFlZWI1ZGUzZmM0YWRjZDMxNjkxMzE5MWI4ZmVjNWYuLjFlNWMwZjA3YmI1ZThk
NDVjOTU3Njg0NjJiNDBhNTZiYmFjZTc5MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
SW5zZXJ0VGV4dENvbW1hbmQuY3BwCkBAIC01OCw3ICs1OCw3IEBAIFBvc2l0aW9uIEluc2VydFRl
eHRDb21tYW5kOjpwb3NpdGlvbkluc2lkZVRleHROb2RlKGNvbnN0IFBvc2l0aW9uJiBwKQogewog
ICAgIFBvc2l0aW9uIHBvcyA9IHA7CiAgICAgaWYgKGlzVGFiU3BhblRleHROb2RlKHBvcy5hbmNo
b3JOb2RlKCkpKSB7Ci0gICAgICAgIGF1dG8gdGV4dE5vZGUgPSBkb2N1bWVudCgpLmNyZWF0ZUVk
aXRpbmdUZXh0Tm9kZShlbXB0eVN0cmluZygpKTsKKyAgICAgICAgYXV0byB0ZXh0Tm9kZSA9IGRv
Y3VtZW50KCkuY3JlYXRlRWRpdGluZ1RleHROb2RlKFN0cmluZyB7IGVtcHR5U3RyaW5nKCkgfSk7
CiAgICAgICAgIGluc2VydE5vZGVBdFRhYlNwYW5Qb3NpdGlvbih0ZXh0Tm9kZS5jb3B5UmVmKCks
IHBvcyk7CiAgICAgICAgIHJldHVybiBmaXJzdFBvc2l0aW9uSW5Ob2RlKHRleHROb2RlLnB0cigp
KTsKICAgICB9CkBAIC02Niw3ICs2Niw3IEBAIFBvc2l0aW9uIEluc2VydFRleHRDb21tYW5kOjpw
b3NpdGlvbkluc2lkZVRleHROb2RlKGNvbnN0IFBvc2l0aW9uJiBwKQogICAgIC8vIFByZXBhcmUg
Zm9yIHRleHQgaW5wdXQgYnkgbG9va2luZyBhdCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLgogICAg
IC8vIEl0IG1heSBiZSBuZWNlc3NhcnkgdG8gaW5zZXJ0IGEgdGV4dCBub2RlIHRvIHJlY2VpdmUg
Y2hhcmFjdGVycy4KICAgICBpZiAoIXBvcy5jb250YWluZXJOb2RlKCktPmlzVGV4dE5vZGUoKSkg
ewotICAgICAgICBhdXRvIHRleHROb2RlID0gZG9jdW1lbnQoKS5jcmVhdGVFZGl0aW5nVGV4dE5v
ZGUoZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIGF1dG8gdGV4dE5vZGUgPSBkb2N1bWVudCgpLmNy
ZWF0ZUVkaXRpbmdUZXh0Tm9kZShTdHJpbmcgeyBlbXB0eVN0cmluZygpIH0pOwogICAgICAgICBp
bnNlcnROb2RlQXQodGV4dE5vZGUuY29weVJlZigpLCBwb3MpOwogICAgICAgICByZXR1cm4gZmly
c3RQb3NpdGlvbkluTm9kZSh0ZXh0Tm9kZS5wdHIoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCA5NDFkZmVl
OGVmNzQwZTJjZGZmYmMxZTU4NTY2YTA3MTdiN2U3Y2VlLi41ZWIzYmQwODczNDMyYjRkMGM4ZDlm
OTEwZDI4N2RiMWI1OThkZmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
cGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
cGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtMTU5OCw3ICsxNTk4LDcgQEAgdm9pZCBSZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZDo6YWRkU3BhY2VzRm9yU21hcnRSZXBsYWNlKCkKICAgICAgICAg
ICAgIGlmIChtX2VuZE9mSW5zZXJ0ZWRDb250ZW50LmNvbnRhaW5lck5vZGUoKSA9PSBlbmROb2Rl
KQogICAgICAgICAgICAgICAgIG1fZW5kT2ZJbnNlcnRlZENvbnRlbnQubW92ZVRvT2Zmc2V0KG1f
ZW5kT2ZJbnNlcnRlZENvbnRlbnQub2Zmc2V0SW5Db250YWluZXJOb2RlKCkgKyAxKTsKICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGF1dG8gbm9kZSA9IGRvY3VtZW50KCkuY3JlYXRlRWRp
dGluZ1RleHROb2RlKGNvbGxhcHNlV2hpdGVTcGFjZSA/IG5vbkJyZWFraW5nU3BhY2VTdHJpbmco
KSA6ICIgIl9zKTsKKyAgICAgICAgICAgIGF1dG8gbm9kZSA9IGRvY3VtZW50KCkuY3JlYXRlRWRp
dGluZ1RleHROb2RlKGNvbGxhcHNlV2hpdGVTcGFjZSA/IFN0cmluZyB7IG5vbkJyZWFraW5nU3Bh
Y2VTdHJpbmcoKSB9IDogIiAiX3MpOwogICAgICAgICAgICAgaW5zZXJ0Tm9kZUFmdGVyKG5vZGUu
Y29weVJlZigpLCAqZW5kTm9kZSk7CiAgICAgICAgICAgICB1cGRhdGVOb2Rlc0luc2VydGVkKG5v
ZGUucHRyKCkpOwogICAgICAgICB9CkBAIC0xNjIyLDcgKzE2MjIsNyBAQCB2b2lkIFJlcGxhY2VT
ZWxlY3Rpb25Db21tYW5kOjphZGRTcGFjZXNGb3JTbWFydFJlcGxhY2UoKQogICAgICAgICAgICAg
aWYgKG1fZW5kT2ZJbnNlcnRlZENvbnRlbnQuY29udGFpbmVyTm9kZSgpID09IHN0YXJ0Tm9kZSAm
JiBtX2VuZE9mSW5zZXJ0ZWRDb250ZW50Lm9mZnNldEluQ29udGFpbmVyTm9kZSgpKQogICAgICAg
ICAgICAgICAgIG1fZW5kT2ZJbnNlcnRlZENvbnRlbnQubW92ZVRvT2Zmc2V0KG1fZW5kT2ZJbnNl
cnRlZENvbnRlbnQub2Zmc2V0SW5Db250YWluZXJOb2RlKCkgKyAxKTsKICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIGF1dG8gbm9kZSA9IGRvY3VtZW50KCkuY3JlYXRlRWRpdGluZ1RleHRO
b2RlKGNvbGxhcHNlV2hpdGVTcGFjZSA/IG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSA6ICIgIl9z
KTsKKyAgICAgICAgICAgIGF1dG8gbm9kZSA9IGRvY3VtZW50KCkuY3JlYXRlRWRpdGluZ1RleHRO
b2RlKGNvbGxhcHNlV2hpdGVTcGFjZSA/IFN0cmluZyB7IG5vbkJyZWFraW5nU3BhY2VTdHJpbmco
KSB9IDogIiAiX3MpOwogICAgICAgICAgICAgLy8gRG9uJ3QgdXBkYXRlTm9kZXNJbnNlcnRlZC4g
RG9pbmcgc28gd291bGQgc2V0IG1fZW5kT2ZJbnNlcnRlZENvbnRlbnQgdG8gYmUgdGhlIG5vZGUg
Y29udGFpbmluZyB0aGUgbGVhZGluZyBzcGFjZSwKICAgICAgICAgICAgIC8vIGJ1dCBtX2VuZE9m
SW5zZXJ0ZWRDb250ZW50IGlzIHN1cHBvc2VkIHRvIG1hcmsgdGhlIGVuZCBvZiBwYXN0ZWQgY29u
dGVudC4KICAgICAgICAgICAgIGluc2VydE5vZGVCZWZvcmUobm9kZSwgKnN0YXJ0Tm9kZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xs
ZXIuY3BwCmluZGV4IDAxYzZlZWFlOTE2ZWE1YWEyMzQyM2VmMzEyM2ExN2MwZGRiMjZmMWEuLjQw
NjBkMDAxMjcxYTYyYWI1NmUyOTcyMDkwNDhjYjg4MWQ5ZTY0NjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC04
ODEsNyArODgxLDcgQEAgYXV0byBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6cmVwbGFjZShj
b25zdCBNYW5pcHVsYXRpb25JdGVtRGF0YSYgaXRlbSwgY29uc3QKICAgICAgICAgICAgIGZvciAo
UmVmUHRyPE5vZGU+IGRlc2NlbmRlbnROb2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dCgqb3JpZ2lu
YWxOb2RlLCBvcmlnaW5hbE5vZGUpOyBkZXNjZW5kZW50Tm9kZTsgZGVzY2VuZGVudE5vZGUgPSBO
b2RlVHJhdmVyc2FsOjpuZXh0KCpkZXNjZW5kZW50Tm9kZSwgb3JpZ2luYWxOb2RlKSkKICAgICAg
ICAgICAgICAgICBub2Rlc1RvUmVtb3ZlLnJlbW92ZSgqZGVzY2VuZGVudE5vZGUpOwogICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgIHJlcGxhY2VtZW50Tm9kZSA9IFRleHQ6OmNyZWF0ZShjb21t
b25BbmNlc3Rvci0+ZG9jdW1lbnQoKSwgcmVwbGFjZW1lbnRUZXh0KTsKKyAgICAgICAgICAgIHJl
cGxhY2VtZW50Tm9kZSA9IFRleHQ6OmNyZWF0ZShjb21tb25BbmNlc3Rvci0+ZG9jdW1lbnQoKSwg
V1RGTW92ZShyZXBsYWNlbWVudFRleHQpKTsKIAogICAgICAgICBhdXRvIHRvcERvd25QYXRoID0g
Z2V0UGF0aChjb21tb25BbmNlc3Rvci5nZXQoKSwgb3JpZ2luYWxOb2RlKTsKICAgICAgICAgdXBk
YXRlSW5zZXJ0aW9ucyhsYXN0VG9wRG93blBhdGgsIHRvcERvd25QYXRoLCByZXBsYWNlbWVudE5v
ZGUuZ2V0KCksIHJldXNlZE9yaWdpbmFsTm9kZXMsIGluc2VydGlvbnMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCmluZGV4IGQ2M2JiOWEyYWY1MjYy
ZjBlMTQ3MjE1N2E0NmIzNDMyZTgwZTY3YTEuLjgxZjY0ZTg2NDRjNjQ5OWI5NTViM2Y2OGY2YTNk
ODkxNDZhYmRlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0
YURldGVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRl
Y3Rpb24ubW0KQEAgLTU4NCwxMyArNTg0LDEzIEBAIE5TQXJyYXkgKkRhdGFEZXRlY3Rpb246OmRl
dGVjdENvbnRlbnRJblJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiBjb250ZXh0UmFuZ2UsIE9wCiAg
ICAgICAgICAgICAgICAgdGV4dE5vZGVEYXRhID0gY3VycmVudFRleHROb2RlLmRhdGEoKS5zdWJz
dHJpbmcoY29udGVudE9mZnNldCwgcmFuZ2Uuc3RhcnQub2Zmc2V0IC0gY29udGVudE9mZnNldCk7
CiAKICAgICAgICAgICAgIGlmICghdGV4dE5vZGVEYXRhLmlzRW1wdHkoKSkgewotICAgICAgICAg
ICAgICAgIHBhcmVudE5vZGUtPmluc2VydEJlZm9yZShUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIHRl
eHROb2RlRGF0YSksICZjdXJyZW50VGV4dE5vZGUpOworICAgICAgICAgICAgICAgIHBhcmVudE5v
ZGUtPmluc2VydEJlZm9yZShUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIFdURk1vdmUodGV4dE5vZGVE
YXRhKSksICZjdXJyZW50VGV4dE5vZGUpOwogICAgICAgICAgICAgICAgIGNvbnRlbnRPZmZzZXQg
PSByYW5nZS5zdGFydC5vZmZzZXQ7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIENy
ZWF0ZSB0aGUgYWN0dWFsIGFuY2hvciBub2RlIGFuZCBpbnNlcnQgaXQgYmVmb3JlIHRoZSBjdXJy
ZW50IG5vZGUuCiAgICAgICAgICAgICB0ZXh0Tm9kZURhdGEgPSBjdXJyZW50VGV4dE5vZGUuZGF0
YSgpLnN1YnN0cmluZyhyYW5nZS5zdGFydC5vZmZzZXQsIHJhbmdlLmVuZC5vZmZzZXQgLSByYW5n
ZS5zdGFydC5vZmZzZXQpOwotICAgICAgICAgICAgYXV0byBuZXdUZXh0Tm9kZSA9IFRleHQ6OmNy
ZWF0ZShkb2N1bWVudCwgdGV4dE5vZGVEYXRhKTsKKyAgICAgICAgICAgIGF1dG8gbmV3VGV4dE5v
ZGUgPSBUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIFdURk1vdmUodGV4dE5vZGVEYXRhKSk7CiAgICAg
ICAgICAgICBwYXJlbnROb2RlLT5pbnNlcnRCZWZvcmUobmV3VGV4dE5vZGUuY29weVJlZigpLCAm
Y3VycmVudFRleHROb2RlKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgUmVmPEhUTUxBbmNo
b3JFbGVtZW50PiBhbmNob3JFbGVtZW50ID0gSFRNTEFuY2hvckVsZW1lbnQ6OmNyZWF0ZShkb2N1
bWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1Mu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KaW5kZXggNjM2Mjkz
NjU3M2JhZWM2OGEyNTZlNWNhNmNlYjgxNzZmNDMzODMwMi4uNmMzM2Q2ZjZhMjJkNTJhNmRjYTFk
OTE5OWZjY2FkMzY4OTZmNjZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9p
b3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklP
Uy5tbQpAQCAtMzI4LDcgKzMyOCw3IEBAIHZvaWQgRWRpdG9yOjpjb25maXJtTWFya2VkVGV4dCgp
CiAgICAgICAgIGNvbmZpcm1Db21wb3NpdGlvbigpOwogfQogCi12b2lkIEVkaXRvcjo6c2V0VGV4
dEFzQ2hpbGRPZkVsZW1lbnQoY29uc3QgU3RyaW5nJiB0ZXh0LCBFbGVtZW50JiBlbGVtZW50KQor
dm9pZCBFZGl0b3I6OnNldFRleHRBc0NoaWxkT2ZFbGVtZW50KFN0cmluZyYmIHRleHQsIEVsZW1l
bnQmIGVsZW1lbnQpCiB7CiAgICAgLy8gQ2xlYXIgdGhlIGNvbXBvc2l0aW9uCiAgICAgY2xlYXIo
KTsKQEAgLTM0Niw3ICszNDYsNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFzQ2hpbGRPZkVsZW1l
bnQoY29uc3QgU3RyaW5nJiB0ZXh0LCBFbGVtZW50JiBlbGVtZW50KQogICAgIC8vIFdoYXQgZm9s
bG93cyBpcyBtb3JlIGV4cGVuc2l2ZSBpZiB0aGVyZSBpcyBhIHNlbGVjdGlvbiwgc28gY2xlYXIg
aXQgc2luY2UgaXQncyBnb2luZyB0byBjaGFuZ2UgYW55d2F5LgogICAgIG1fZG9jdW1lbnQuc2Vs
ZWN0aW9uKCkuY2xlYXIoKTsKIAotICAgIGVsZW1lbnQuc3RyaW5nUmVwbGFjZUFsbCh0ZXh0KTsK
KyAgICBlbGVtZW50LnN0cmluZ1JlcGxhY2VBbGwoV1RGTW92ZSh0ZXh0KSk7CiAKICAgICBWaXNp
YmxlUG9zaXRpb24gYWZ0ZXJDb250ZW50cyA9IG1ha2VDb250YWluZXJPZmZzZXRQb3NpdGlvbigm
ZWxlbWVudCwgZWxlbWVudC5jb3VudENoaWxkTm9kZXMoKSk7CiAgICAgaWYgKGFmdGVyQ29udGVu
dHMuaXNOdWxsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggYjRjOTY0ZDIxYTA0
M2VjN2FiOTc5MDViYWNlNjc0MTkwYTk1NmY1Zi4uNGJmZmE2OGU1ODJhZDI0OTE0OGM1YzJkNjM4
MDhjYTgxY2E4OTliZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtMTE3OSw4ICsx
MTc5LDkgQEAgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoY29u
c3QgU2ltcGxlUmFuZ2UmIGNvbnRleHQsIGNvbnN0IFMKICAgICB9OwogCiAgICAgaWYgKGNvbnRl
eHRQcmVzZXJ2ZXNOZXdsaW5lKGNvbnRleHQpKSB7Ci0gICAgICAgIGZyYWdtZW50LT5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHJpbmcpKTsKLSAgICAgICAgaWYgKHN0cmlu
Zy5lbmRzV2l0aCgnXG4nKSkgeworICAgICAgICBib29sIGVuZHNXaXRoTmV3TGluZSA9IHN0cmlu
Zy5lbmRzV2l0aCgnXG4nKTsKKyAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKFdURk1vdmUoc3RyaW5nKSkpOworICAgICAgICBpZiAoZW5kc1dpdGhO
ZXdMaW5lKSB7CiAgICAgICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoY3JlYXRlSFRNTEJS
RWxlbWVudCgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZnJhZ21lbnQ7CkBAIC0xMjcy
LDcgKzEyNzMsNyBAQCBFeGNlcHRpb25PcjxSZWY8RG9jdW1lbnRGcmFnbWVudD4+IGNyZWF0ZUZy
YWdtZW50Rm9ySW5uZXJPdXRlckhUTUwoRWxlbWVudCYgY29udAogICAgIHJldHVybiBjcmVhdGVG
cmFnbWVudEZvck1hcmt1cChjb250ZXh0RWxlbWVudCwgbWFya3VwLCBEb2N1bWVudEZyYWdtZW50
TW9kZTo6UmV1c2VGb3JJbm5lck91dGVySFRNTCwgcGFyc2VyQ29udGVudFBvbGljeSk7CiB9CiAK
LVJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvclRyYW5zZm9ybVRvRnJh
Z21lbnQoRG9jdW1lbnQmIG91dHB1dERvYywgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNv
bnN0IFN0cmluZyYgc291cmNlTUlNRVR5cGUpCitSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3Jl
YXRlRnJhZ21lbnRGb3JUcmFuc2Zvcm1Ub0ZyYWdtZW50KERvY3VtZW50JiBvdXRwdXREb2MsIFN0
cmluZyYmIHNvdXJjZVN0cmluZywgY29uc3QgU3RyaW5nJiBzb3VyY2VNSU1FVHlwZSkKIHsKICAg
ICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBvdXRwdXREb2MuY3JlYXRlRG9j
dW1lbnRGcmFnbWVudCgpOwogICAgIApAQCAtMTI4MiwxMSArMTI4MywxMSBAQCBSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JUcmFuc2Zvcm1Ub0ZyYWdtZW50KERvY3Vt
ZW50JiBvdXRwdXREbwogICAgICAgICAvLyBVbmZvcnR1bmF0ZWx5LCB0aGF0J3MgYW4gaW1wbGVt
ZW50YXRpb24gZGV0YWlsIG9mIHRoZSBwYXJzZXIuCiAgICAgICAgIC8vIFdlIGFjaGlldmUgdGhh
dCBlZmZlY3QgaGVyZSBieSBwYXNzaW5nIGluIGEgZmFrZSBib2R5IGVsZW1lbnQgYXMgY29udGV4
dCBmb3IgdGhlIGZyYWdtZW50LgogICAgICAgICBhdXRvIGZha2VCb2R5ID0gSFRNTEJvZHlFbGVt
ZW50OjpjcmVhdGUob3V0cHV0RG9jKTsKLSAgICAgICAgZnJhZ21lbnQtPnBhcnNlSFRNTChzb3Vy
Y2VTdHJpbmcsIGZha2VCb2R5LnB0cigpKTsKKyAgICAgICAgZnJhZ21lbnQtPnBhcnNlSFRNTChX
VEZNb3ZlKHNvdXJjZVN0cmluZyksIGZha2VCb2R5LnB0cigpKTsKICAgICB9IGVsc2UgaWYgKHNv
dXJjZU1JTUVUeXBlID09ICJ0ZXh0L3BsYWluIikKLSAgICAgICAgZnJhZ21lbnQtPnBhcnNlckFw
cGVuZENoaWxkKFRleHQ6OmNyZWF0ZShvdXRwdXREb2MsIHNvdXJjZVN0cmluZykpOworICAgICAg
ICBmcmFnbWVudC0+cGFyc2VyQXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKG91dHB1dERvYywgV1RG
TW92ZShzb3VyY2VTdHJpbmcpKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGJvb2wgc3VjY2Vzc2Z1
bFBhcnNlID0gZnJhZ21lbnQtPnBhcnNlWE1MKHNvdXJjZVN0cmluZywgMCk7CisgICAgICAgIGJv
b2wgc3VjY2Vzc2Z1bFBhcnNlID0gZnJhZ21lbnQtPnBhcnNlWE1MKFdURk1vdmUoc291cmNlU3Ry
aW5nKSwgMCk7CiAgICAgICAgIGlmICghc3VjY2Vzc2Z1bFBhcnNlKQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YXJrdXAuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKaW5kZXggOTI1MTFhOTM0
NjZiYTk0ODQxMjQxYmFmZDY0ZTBmY2QxM2UxMWFlMy4uM2JlMWE0YzJhMjE5ZTZlYjM0ZDNhYTZk
MTJjNWEzNmUzMzRiZjJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJr
dXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCkBAIC02MSw3ICs2MSw3
IEBAIFN0cmluZyBzYW5pdGl6ZWRNYXJrdXBGb3JGcmFnbWVudEluRG9jdW1lbnQoUmVmPERvY3Vt
ZW50RnJhZ21lbnQ+JiYsIERvY3VtZW50JiwKIFdFQkNPUkVfRVhQT1JUIFJlZjxEb2N1bWVudEZy
YWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21UZXh0KGNvbnN0IFNpbXBsZVJhbmdlJiBjb250ZXh0
LCBjb25zdCBTdHJpbmcmIHRleHQpOwogV0VCQ09SRV9FWFBPUlQgUmVmPERvY3VtZW50RnJhZ21l
bnQ+IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgbWFy
a3VwLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIFBhcnNlckNvbnRlbnRQb2xpY3kgPSBBbGxvd1Nj
cmlwdGluZ0NvbnRlbnQpOwogRXhjZXB0aW9uT3I8UmVmPERvY3VtZW50RnJhZ21lbnQ+PiBjcmVh
dGVGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1MKEVsZW1lbnQmLCBjb25zdCBTdHJpbmcmIG1hcmt1
cCwgUGFyc2VyQ29udGVudFBvbGljeSk7Ci1SZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRl
RnJhZ21lbnRGb3JUcmFuc2Zvcm1Ub0ZyYWdtZW50KERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBz
b3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgc291cmNlTUlNRVR5cGUpOworUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9yVHJhbnNmb3JtVG9GcmFnbWVudChEb2N1bWVu
dCYsIFN0cmluZyYmIHNvdXJjZVN0cmluZywgY29uc3QgU3RyaW5nJiBzb3VyY2VNSU1FVHlwZSk7
CiBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUFuZFVSTChEb2N1
bWVudCYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkU2l6ZSk7CiBF
eGNlcHRpb25PcjxSZWY8RG9jdW1lbnRGcmFnbWVudD4+IGNyZWF0ZUNvbnRleHR1YWxGcmFnbWVu
dChFbGVtZW50JiwgY29uc3QgU3RyaW5nJiBtYXJrdXAsIFBhcnNlckNvbnRlbnRQb2xpY3kpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAK
aW5kZXggMzc1NTI4MWQxODJlM2FhYmUxOGM3OWQ5ZDM1MTM2OWFjNzM1NGU4Mi4uODQ1MmY1YTYz
NzM0Zjk0NGM1ZmY5ZmIxYTExZmU0OWZlOWZhZDJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcApAQCAtMzQ2LDcgKzM0Niw3IEBAIHZv
aWQgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjp1cGRhdGVJbm5lclRleHRWYWx1ZSgpCiAgICAg
ICAgICAgICAvLyBOZWVkIHRvIHB1dCBzb21ldGhpbmcgdG8ga2VlcCB0ZXh0IGJhc2VsaW5lLgog
ICAgICAgICAgICAgZGlzcGxheVZhbHVlID0gIiAiX3M7CiAgICAgICAgIH0KLSAgICAgICAgZG93
bmNhc3Q8SFRNTEVsZW1lbnQ+KCpub2RlKS5zZXRJbm5lclRleHQoZGlzcGxheVZhbHVlKTsKKyAg
ICAgICAgZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KCpub2RlKS5zZXRJbm5lclRleHQoV1RGTW92ZShk
aXNwbGF5VmFsdWUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmgKaW5kZXggNmJmNmQ2YjkwM2I0YWQ3
NjU5NmJiYWNjZTU0ZDE3ZDM3YTMxZThjZi4uOTQ4ZjllM2U5MjQ3NWM2YjkyZWQxOThjZGMwYjM1
MmQ1YzU0Nzk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRp
bWVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlu
cHV0VHlwZS5oCkBAIC04NCw3ICs4NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIERhdGVUaW1lRm9y
bWF0VmFsaWRhdG9yKCkgeyB9CiAKICAgICAgICAgdm9pZCB2aXNpdEZpZWxkKERhdGVUaW1lRm9y
bWF0OjpGaWVsZFR5cGUsIGludCk7Ci0gICAgICAgIHZvaWQgdmlzaXRMaXRlcmFsKGNvbnN0IFN0
cmluZyYpIHsgfQorICAgICAgICB2b2lkIHZpc2l0TGl0ZXJhbChTdHJpbmcmJikgeyB9CiAKICAg
ICAgICAgYm9vbCB2YWxpZGF0ZUZvcm1hdChjb25zdCBTdHJpbmcmIGZvcm1hdCwgY29uc3QgQmFz
ZURhdGVBbmRUaW1lSW5wdXRUeXBlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJl
Y3RvcnlEb2N1bWVudC5jcHAKaW5kZXggMTU2MjhkOTU5ZmJiYTJlYzdiODU0ZDM2ZTY5MDExYjEy
ZTYzZjNkMi4uNDM1Y2VkYWUxNmE4YzFlMTcwZjBiNDMxZWFkNThmZWM1ZTRiZWNmMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKQEAgLTgzLDggKzgz
LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZUJhc2ljRG9jdW1lbnQoKTsKIAogICAgIHZv
aWQgcGFyc2VBbmRBcHBlbmRPbmVMaW5lKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgYXBwZW5k
RW50cnkoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHNpemUsIGNvbnN0IFN0cmlu
ZyYgZGF0ZSwgYm9vbCBpc0RpcmVjdG9yeSk7ICAgIAotICAgIFJlZjxFbGVtZW50PiBjcmVhdGVU
REZvckZpbGVuYW1lKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgYXBwZW5kRW50cnkoU3RyaW5n
JiYgbmFtZSwgU3RyaW5nJiYgc2l6ZSwgU3RyaW5nJiYgZGF0ZSwgYm9vbCBpc0RpcmVjdG9yeSk7
CisgICAgUmVmPEVsZW1lbnQ+IGNyZWF0ZVRERm9yRmlsZW5hbWUoU3RyaW5nJiYpOwogCiAgICAg
UmVmUHRyPEhUTUxUYWJsZUVsZW1lbnQ+IG1fdGFibGVFbGVtZW50OwogCkBAIC0xMDUsNyArMTA1
LDcgQEAgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OkZUUERpcmVjdG9yeURvY3VtZW50UGFy
c2VyKEhUTUxEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiB9CiAKLXZvaWQgRlRQRGlyZWN0b3J5RG9j
dW1lbnRQYXJzZXI6OmFwcGVuZEVudHJ5KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0
cmluZyYgc2l6ZSwgY29uc3QgU3RyaW5nJiBkYXRlLCBib29sIGlzRGlyZWN0b3J5KQordm9pZCBG
VFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6YXBwZW5kRW50cnkoU3RyaW5nJiYgZmlsZW5hbWUs
IFN0cmluZyYmIHNpemUsIFN0cmluZyYmIGRhdGUsIGJvb2wgaXNEaXJlY3RvcnkpCiB7CiAgICAg
YXV0byYgZG9jdW1lbnQgPSAqdGhpcy0+ZG9jdW1lbnQoKTsKIApAQCAtMTIwLDIzICsxMjAsMjMg
QEAgdm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6YXBwZW5kRW50cnkoY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW4KICAgICAgICAgdHlwZUVsZW1lbnQtPnNldEF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpjbGFzc0F0dHIsIEF0b21TdHJp
bmcoImZ0cERpcmVjdG9yeUljb24gZnRwRGlyZWN0b3J5VHlwZUZpbGUiLCBBdG9tU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIHJvd0VsZW1lbnQtPmFwcGVuZENoaWxkKHR5cGVF
bGVtZW50KTsKIAotICAgIGF1dG8gbmFtZUVsZW1lbnQgPSBjcmVhdGVUREZvckZpbGVuYW1lKGZp
bGVuYW1lKTsKKyAgICBhdXRvIG5hbWVFbGVtZW50ID0gY3JlYXRlVERGb3JGaWxlbmFtZShXVEZN
b3ZlKGZpbGVuYW1lKSk7CiAgICAgbmFtZUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oSFRNTE5hbWVzOjpjbGFzc0F0dHIsIEF0b21TdHJpbmcoImZ0cERpcmVjdG9y
eUZpbGVOYW1lIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICByb3dF
bGVtZW50LT5hcHBlbmRDaGlsZChuYW1lRWxlbWVudCk7CiAKICAgICBhdXRvIGRhdGVFbGVtZW50
ID0gSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OmNyZWF0ZSh0ZFRhZywgZG9jdW1lbnQpOwotICAgIGRh
dGVFbGVtZW50LT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIGRhdGUpKTsKKyAg
ICBkYXRlRWxlbWVudC0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50LCBXVEZNb3Zl
KGRhdGUpKSk7CiAgICAgZGF0ZUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oSFRNTE5hbWVzOjpjbGFzc0F0dHIsIEF0b21TdHJpbmcoImZ0cERpcmVjdG9yeUZpbGVE
YXRlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICByb3dFbGVtZW50
LT5hcHBlbmRDaGlsZChkYXRlRWxlbWVudCk7CiAKICAgICBhdXRvIHNpemVFbGVtZW50ID0gSFRN
TFRhYmxlQ2VsbEVsZW1lbnQ6OmNyZWF0ZSh0ZFRhZywgZG9jdW1lbnQpOwotICAgIHNpemVFbGVt
ZW50LT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIHNpemUpKTsKKyAgICBzaXpl
RWxlbWVudC0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50LCBXVEZNb3ZlKHNpemUp
KSk7CiAgICAgc2l6ZUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
SFRNTE5hbWVzOjpjbGFzc0F0dHIsIEF0b21TdHJpbmcoImZ0cERpcmVjdG9yeUZpbGVTaXplIiwg
QXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICByb3dFbGVtZW50LT5hcHBl
bmRDaGlsZChzaXplRWxlbWVudCk7CiAgICAgZG9jdW1lbnQuc2V0SGFzVmlzdWFsbHlOb25FbXB0
eUN1c3RvbUNvbnRlbnQoKTsKIH0KIAotUmVmPEVsZW1lbnQ+IEZUUERpcmVjdG9yeURvY3VtZW50
UGFyc2VyOjpjcmVhdGVUREZvckZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCitSZWY8
RWxlbWVudD4gRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmNyZWF0ZVRERm9yRmlsZW5hbWUo
U3RyaW5nJiYgZmlsZW5hbWUpCiB7CiAgICAgYXV0byYgZG9jdW1lbnQgPSAqdGhpcy0+ZG9jdW1l
bnQoKTsKIApAQCAtMTQ4LDcgKzE0OCw3IEBAIFJlZjxFbGVtZW50PiBGVFBEaXJlY3RvcnlEb2N1
bWVudFBhcnNlcjo6Y3JlYXRlVERGb3JGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVuCiAKICAg
ICBhdXRvIGFuY2hvckVsZW1lbnQgPSBIVE1MQW5jaG9yRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50
KTsKICAgICBhbmNob3JFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KEhUTUxOYW1lczo6aHJlZkF0dHIsIGZ1bGxVUkwpOwotICAgIGFuY2hvckVsZW1lbnQtPmFwcGVu
ZENoaWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVudCwgZmlsZW5hbWUpKTsKKyAgICBhbmNob3JFbGVt
ZW50LT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIFdURk1vdmUoZmlsZW5hbWUp
KSk7CiAKICAgICBhdXRvIHRkRWxlbWVudCA9IEhUTUxUYWJsZUNlbGxFbGVtZW50OjpjcmVhdGUo
dGRUYWcsIGRvY3VtZW50KTsKICAgICB0ZEVsZW1lbnQtPmFwcGVuZENoaWxkKGFuY2hvckVsZW1l
bnQpOwpAQCAtMjc0LDcgKzI3NCw3IEBAIHZvaWQgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6
OnBhcnNlQW5kQXBwZW5kT25lTGluZShjb25zdCBTdHJpbmcmIGlucHV0TGluZSkKIAogICAgIExP
RyhGVFAsICJBcHBlbmRpbmcgZW50cnkgLSAlcywgJXMiLCBmaWxlbmFtZS5hc2NpaSgpLmRhdGEo
KSwgcmVzdWx0LmZpbGVTaXplLmFzY2lpKCkuZGF0YSgpKTsKIAotICAgIGFwcGVuZEVudHJ5KGZp
bGVuYW1lLCBwcm9jZXNzRmlsZXNpemVTdHJpbmcocmVzdWx0LmZpbGVTaXplLCByZXN1bHQudHlw
ZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSksIHByb2Nlc3NGaWxlRGF0ZVN0cmluZyhyZXN1bHQubW9k
aWZpZWRUaW1lKSwgcmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkpOworICAgIGFwcGVu
ZEVudHJ5KFdURk1vdmUoZmlsZW5hbWUpLCBwcm9jZXNzRmlsZXNpemVTdHJpbmcocmVzdWx0LmZp
bGVTaXplLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSksIHByb2Nlc3NGaWxlRGF0
ZVN0cmluZyhyZXN1bHQubW9kaWZpZWRUaW1lKSwgcmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5
RW50cnkpOwogfQogCiBzdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRl
bXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKaW5kZXggNzRmZTZhYWQ3NjBjZjNhYzk1ODEz
NWEzODBjNDJjZWViZTg3OWJmNC4uNGFkNDZkZTI5YzVhZTA4MWQ2M2NkOGY3NWFjY2Y2NjliY2Mz
ZTEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKQEAgLTM1
MSw5ICszNTEsOSBAQCBTdHJpbmcgSFRNTEFuY2hvckVsZW1lbnQ6OnRleHQoKQogICAgIHJldHVy
biB0ZXh0Q29udGVudCgpOwogfQogCi12b2lkIEhUTUxBbmNob3JFbGVtZW50OjpzZXRUZXh0KGNv
bnN0IFN0cmluZyYgdGV4dCkKK3ZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldFRleHQoU3RyaW5n
JiYgdGV4dCkKIHsKLSAgICBzZXRUZXh0Q29udGVudCh0ZXh0KTsKKyAgICBzZXRUZXh0Q29udGVu
dChXVEZNb3ZlKHRleHQpKTsKIH0KIAogYm9vbCBIVE1MQW5jaG9yRWxlbWVudDo6aXNMaXZlTGlu
aygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmgKaW5kZXggYWRk
NjE4MzA4NmE0MTZiZTczZGJmZDc1YjkyYTJkY2FhYTNkZDQ2ZS4uMzQzOGVhNjRiNDU2NzNjODQ3
MjNjNWIwODZjODA3YTAxZmMwMjhlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQW5jaG9yRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVs
ZW1lbnQuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIG9yaWdpbigpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRleHQoKTsK
LSAgICB2b2lkIHNldFRleHQoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRUZXh0KFN0cmlu
ZyYmKTsKIAogICAgIGJvb2wgaXNMaXZlTGluaygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnQuY3BwCmluZGV4IDgxNDE4MTAyZjNmMGJkZDdkYjIyZGE3MDQwNzM1NDJiY2Y5ZjY3
ZTQuLjIyYTY2MjA2YWM0YTZmMDEyMzM5MzEyNWMxZjUzNTJmMGRkMzg1Y2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC00MzUsMzYgKzQzNSwzNiBAQCB2b2lkIEhUTUxFbGVt
ZW50OjpzZXREaXIoY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiAgICAgc2V0QXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihkaXJBdHRyLCB2YWx1ZSk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZv
aWQ+IEhUTUxFbGVtZW50OjpzZXRJbm5lclRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQorRXhjZXB0
aW9uT3I8dm9pZD4gSFRNTEVsZW1lbnQ6OnNldElubmVyVGV4dChTdHJpbmcmJiB0ZXh0KQogewog
ICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3QgdGFrZSB3aGl0ZXNwYWNlIGNvbGxhcHNpbmcgaW50
byBhY2NvdW50IGF0IGFsbC4KIAogICAgIGlmICghdGV4dC5jb250YWlucygnXG4nKSAmJiAhdGV4
dC5jb250YWlucygnXHInKSkgewotICAgICAgICBzdHJpbmdSZXBsYWNlQWxsKHRleHQpOworICAg
ICAgICBzdHJpbmdSZXBsYWNlQWxsKFdURk1vdmUodGV4dCkpOwogICAgICAgICByZXR1cm4geyB9
OwogICAgIH0KIAogICAgIGlmIChpc0Nvbm5lY3RlZCgpICYmIGlzVGV4dENvbnRyb2xJbm5lclRl
eHRFbGVtZW50KCkpIHsKICAgICAgICAgaWYgKCF0ZXh0LmNvbnRhaW5zKCdccicpKSB7Ci0gICAg
ICAgICAgICBzdHJpbmdSZXBsYWNlQWxsKHRleHQpOworICAgICAgICAgICAgc3RyaW5nUmVwbGFj
ZUFsbChXVEZNb3ZlKHRleHQpKTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0K
LSAgICAgICAgU3RyaW5nIHRleHRXaXRoQ29uc2lzdGVudExpbmVCcmVha3MgPSB0ZXh0OworICAg
ICAgICBTdHJpbmcgdGV4dFdpdGhDb25zaXN0ZW50TGluZUJyZWFrcyA9IFdURk1vdmUodGV4dCk7
CiAgICAgICAgIHRleHRXaXRoQ29uc2lzdGVudExpbmVCcmVha3MucmVwbGFjZSgiXHJcbiIsICJc
biIpOwogICAgICAgICB0ZXh0V2l0aENvbnNpc3RlbnRMaW5lQnJlYWtzLnJlcGxhY2UoJ1xyJywg
J1xuJyk7Ci0gICAgICAgIHN0cmluZ1JlcGxhY2VBbGwodGV4dFdpdGhDb25zaXN0ZW50TGluZUJy
ZWFrcyk7CisgICAgICAgIHN0cmluZ1JlcGxhY2VBbGwoV1RGTW92ZSh0ZXh0V2l0aENvbnNpc3Rl
bnRMaW5lQnJlYWtzKSk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgLy8gRklY
TUU6IFRoaXMgc2hvdWxkIHVzZSByZXBsYWNlQWxsKCksIGFmdGVyIHdlIGZpeCB0aGF0IHRvIHdv
cmsgcHJvcGVybHkgZm9yIERvY3VtZW50RnJhZ21lbnQuCiAgICAgLy8gQWRkIHRleHQgbm9kZXMg
YW5kIDxicj4gZWxlbWVudHMuCi0gICAgYXV0byBmcmFnbWVudCA9IHRleHRUb0ZyYWdtZW50KGRv
Y3VtZW50KCksIHRleHQpOworICAgIGF1dG8gZnJhZ21lbnQgPSB0ZXh0VG9GcmFnbWVudChkb2N1
bWVudCgpLCBXVEZNb3ZlKHRleHQpKTsKICAgICAvLyBJdCdzIHNhZmUgdG8gZGlzcGF0Y2ggZXZl
bnRzIG9uIHRoZSBuZXcgZnJhZ21lbnQgc2luY2UgYXV0aG9yIHNjcmlwdHMgaGF2ZSBubyBhY2Nl
c3MgdG8gaXQgeWV0LgogICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6RXZlbnRBbGxvd2VkU2Nv
cGUgYWxsb3dlZFNjb3BlKGZyYWdtZW50LmdldCgpKTsKICAgICByZXR1cm4gcmVwbGFjZUNoaWxk
cmVuV2l0aEZyYWdtZW50KCp0aGlzLCBXVEZNb3ZlKGZyYWdtZW50KSk7CiB9CiAKLUV4Y2VwdGlv
bk9yPHZvaWQ+IEhUTUxFbGVtZW50OjpzZXRPdXRlclRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQor
RXhjZXB0aW9uT3I8dm9pZD4gSFRNTEVsZW1lbnQ6OnNldE91dGVyVGV4dChTdHJpbmcmJiB0ZXh0
KQogewogICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBwYXJlbnQgPSBwYXJlbnROb2RlKCk7CiAg
ICAgaWYgKCFwYXJlbnQpCkBAIC00NzYsOSArNDc2LDkgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSFRN
TEVsZW1lbnQ6OnNldE91dGVyVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCiAKICAgICAvLyBDb252
ZXJ0IHRleHQgdG8gZnJhZ21lbnQgd2l0aCA8YnI+IHRhZ3MgaW5zdGVhZCBvZiBsaW5lYnJlYWtz
IGlmIG5lZWRlZC4KICAgICBpZiAodGV4dC5jb250YWlucygnXHInKSB8fCB0ZXh0LmNvbnRhaW5z
KCdcbicpKQotICAgICAgICBuZXdDaGlsZCA9IHRleHRUb0ZyYWdtZW50KGRvY3VtZW50KCksIHRl
eHQpOworICAgICAgICBuZXdDaGlsZCA9IHRleHRUb0ZyYWdtZW50KGRvY3VtZW50KCksIFdURk1v
dmUodGV4dCkpOwogICAgIGVsc2UKLSAgICAgICAgbmV3Q2hpbGQgPSBUZXh0OjpjcmVhdGUoZG9j
dW1lbnQoKSwgdGV4dCk7CisgICAgICAgIG5ld0NoaWxkID0gVGV4dDo6Y3JlYXRlKGRvY3VtZW50
KCksIFdURk1vdmUodGV4dCkpOwogCiAgICAgaWYgKCFwYXJlbnROb2RlKCkpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBIaWVyYXJjaHlSZXF1ZXN0RXJyb3IgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnQuaAppbmRleCBlMDhhOGU3MWZjZmRiN2Y0OWMwYWIwODI3NWQ0NzZkMTMwOWNhOTc0
Li5lNGYxZDFkNDk4YTllYjQyMWNlYjQ3ZDhmMmM5YmVhOWFiMmYyOTczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5oCkBAIC01Myw4ICs1Myw4IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVf
RVhQT1JUIFN0cmluZyB0aXRsZSgpIGNvbnN0IGZpbmFsOwogCi0gICAgV0VCQ09SRV9FWFBPUlQg
RXhjZXB0aW9uT3I8dm9pZD4gc2V0SW5uZXJUZXh0KGNvbnN0IFN0cmluZyYpOwotICAgIFdFQkNP
UkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldE91dGVyVGV4dChjb25zdCBTdHJpbmcmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBzZXRJbm5lclRleHQoU3RyaW5n
JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldE91dGVyVGV4dChT
dHJpbmcmJik7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzQ3VzdG9tRm9jdXNMb2dpYygpIGNvbnN0
OwogICAgIGJvb2wgc3VwcG9ydHNGb2N1cygpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1ldGVyRWxlbWVudC5jcHAKaW5kZXggYmQ0NGUyZDAyOGE3MDA4ODYzNmZmMjY2
MDYzNzdlYmVkZGY5NzdjNS4uN2VmMGNhOWI0MGJhMDRkODkwNjU2NmU4OTI4ODY5OTdlMmRkMzZi
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCkBAIC0yMjksOCAr
MjI5LDggQEAgdm9pZCBIVE1MTWV0ZXJFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290
KFNoYWRvd1Jvb3QmIHJvb3QpCiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxj
b25zdCBTdHJpbmc+IHNoYWRvd1N0eWxlKFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5n
KG1ldGVyRWxlbWVudFNoYWRvd1VzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihtZXRlckVsZW1l
bnRTaGFkb3dVc2VyQWdlbnRTdHlsZVNoZWV0KSkpOwogCiAgICAgYXV0byBzdHlsZSA9IEhUTUxT
dHlsZUVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OnN0eWxlVGFnLCBkb2N1bWVudCgpLCBmYWxz
ZSk7Ci0gICAgc3R5bGUtPnNldFRleHRDb250ZW50KHNoYWRvd1N0eWxlKTsKLSAgICByb290LmFw
cGVuZENoaWxkKHN0eWxlKTsKKyAgICBzdHlsZS0+c2V0VGV4dENvbnRlbnQoU3RyaW5nIHsgc2hh
ZG93U3R5bGUgfSk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChXVEZNb3ZlKHN0eWxlKSk7CiAKICAg
ICAvLyBQc2V1ZG9zIGFyZSBzZXQgdG8gYWxsb3cgYXV0aG9yIHN0eWxpbmcuCiAgICAgYXV0byBp
bm5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCmluZGV4IGMwMTczMzM3ODg2ZmI3OWNlMmJjNzk5
ZjMwZmI0OGE2NGQwYWE0OTguLmUyMGQzZGFkNDdlMTQwN2FjMjQzMGQ1ZDk5M2Q0ZTc0ZmUyNmUx
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCkBAIC03MCwx
MiArNzAsMTIgQEAgUmVmPEhUTUxPcHRpb25FbGVtZW50PiBIVE1MT3B0aW9uRWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIEQKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBIVE1MT3B0aW9uRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1FeGNlcHRp
b25PcjxSZWY8SFRNTE9wdGlvbkVsZW1lbnQ+PiBIVE1MT3B0aW9uRWxlbWVudDo6Y3JlYXRlRm9y
TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0
ZXh0LCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSwgYm9vbCBkZWZhdWx0U2VsZWN0ZWQsIGJvb2wg
c2VsZWN0ZWQpCitFeGNlcHRpb25PcjxSZWY8SFRNTE9wdGlvbkVsZW1lbnQ+PiBIVE1MT3B0aW9u
RWxlbWVudDo6Y3JlYXRlRm9yTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKERvY3VtZW50JiBkb2N1bWVu
dCwgU3RyaW5nJiYgdGV4dCwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUsIGJvb2wgZGVmYXVsdFNl
bGVjdGVkLCBib29sIHNlbGVjdGVkKQogewogICAgIGF1dG8gZWxlbWVudCA9IGNyZWF0ZShkb2N1
bWVudCk7CiAKICAgICBpZiAoIXRleHQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGF1dG8gYXBwZW5k
UmVzdWx0ID0gZWxlbWVudC0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50LCB0ZXh0
KSk7CisgICAgICAgIGF1dG8gYXBwZW5kUmVzdWx0ID0gZWxlbWVudC0+YXBwZW5kQ2hpbGQoVGV4
dDo6Y3JlYXRlKGRvY3VtZW50LCBXVEZNb3ZlKHRleHQpKSk7CiAgICAgICAgIGlmIChhcHBlbmRS
ZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gYXBwZW5kUmVzdWx0LnJl
bGVhc2VFeGNlcHRpb24oKTsKICAgICB9CkBAIC0xMTIsNyArMTEyLDcgQEAgU3RyaW5nIEhUTUxP
cHRpb25FbGVtZW50Ojp0ZXh0KCkgY29uc3QKICAgICByZXR1cm4gc3RyaXBMZWFkaW5nQW5kVHJh
aWxpbmdIVE1MU3BhY2VzKGRvY3VtZW50KCkuZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGlu
Zyh0ZXh0KSkuc2ltcGxpZnlXaGl0ZVNwYWNlKGlzSFRNTFNwYWNlKTsKIH0KIAotdm9pZCBIVE1M
T3B0aW9uRWxlbWVudDo6c2V0VGV4dChjb25zdCBTdHJpbmcgJnRleHQpCit2b2lkIEhUTUxPcHRp
b25FbGVtZW50OjpzZXRUZXh0KFN0cmluZyYmIHRleHQpCiB7CiAgICAgUmVmIHByb3RlY3RlZFRo
aXMgeyAqdGhpcyB9OwogCkBAIC0xMjYsMTAgKzEyNiwxMCBAQCB2b2lkIEhUTUxPcHRpb25FbGVt
ZW50OjpzZXRUZXh0KGNvbnN0IFN0cmluZyAmdGV4dCkKICAgICAvLyBIYW5kbGUgdGhlIGNvbW1v
biBzcGVjaWFsIGNhc2Ugd2hlcmUgdGhlcmUncyBleGFjdGx5IDEgY2hpbGQgbm9kZSwgYW5kIGl0
J3MgYSB0ZXh0IG5vZGUuCiAgICAgUmVmUHRyIGNoaWxkID0gZmlyc3RDaGlsZCgpOwogICAgIGlm
IChpczxUZXh0PihjaGlsZCkgJiYgIWNoaWxkLT5uZXh0U2libGluZygpKQotICAgICAgICBkb3du
Y2FzdDxUZXh0PigqY2hpbGQpLnNldERhdGEodGV4dCk7CisgICAgICAgIGRvd25jYXN0PFRleHQ+
KCpjaGlsZCkuc2V0RGF0YShXVEZNb3ZlKHRleHQpKTsKICAgICBlbHNlIHsKICAgICAgICAgcmVt
b3ZlQ2hpbGRyZW4oKTsKLSAgICAgICAgYXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50
KCksIHRleHQpKTsKKyAgICAgICAgYXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50KCks
IFdURk1vdmUodGV4dCkpKTsKICAgICB9CiAgICAgCiAgICAgaWYgKHNlbGVjdElzTWVudUxpc3Qg
JiYgc2VsZWN0LT5zZWxlY3RlZEluZGV4KCkgIT0gb2xkU2VsZWN0ZWRJbmRleCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaAppbmRleCA2ZTBiZjVjNzg3NjMyYWYwOTQ1Nzhk
OGI5N2ZlZjkwOGMzYzJmMWI1Li45ODQ4OGE0NzIwMTE4MTdmMjQyNTg2M2ZmZDJiMWU3OGY2NmYy
YzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oCkBAIC0zNywxMCAr
MzcsMTAgQEAgY2xhc3MgSFRNTE9wdGlvbkVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1l
bnQgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTE9wdGlvbkVsZW1lbnQ+IGNyZWF0ZShE
b2N1bWVudCYpOwogICAgIHN0YXRpYyBSZWY8SFRNTE9wdGlvbkVsZW1lbnQ+IGNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKLSAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVm
PEhUTUxPcHRpb25FbGVtZW50Pj4gY3JlYXRlRm9yTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKERvY3Vt
ZW50JiwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSwgYm9vbCBk
ZWZhdWx0U2VsZWN0ZWQsIGJvb2wgc2VsZWN0ZWQpOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxS
ZWY8SFRNTE9wdGlvbkVsZW1lbnQ+PiBjcmVhdGVGb3JMZWdhY3lGYWN0b3J5RnVuY3Rpb24oRG9j
dW1lbnQmLCBTdHJpbmcmJiB0ZXh0LCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSwgYm9vbCBkZWZh
dWx0U2VsZWN0ZWQsIGJvb2wgc2VsZWN0ZWQpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IHRleHQoKSBjb25zdDsKLSAgICB2b2lkIHNldFRleHQoY29uc3QgU3RyaW5nJik7CisgICAgdm9p
ZCBzZXRUZXh0KFN0cmluZyYmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGludCBpbmRleCgpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwCmluZGV4IDFm
YTE2ZWU3NDg0MTNhMmNkOTMzMzVhNjc1Nzg4ZDVhODgzOGVkYzAuLmQzYjYxMDgxNDhhODBlODVl
ZGNmNjI4MTllYjE0Zjk1OTBiODA2MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE91dHB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1
dEVsZW1lbnQuY3BwCkBAIC04NywxMCArODcsMTAgQEAgU3RyaW5nIEhUTUxPdXRwdXRFbGVtZW50
Ojp2YWx1ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHRleHRDb250ZW50KCk7CiB9CiAKLXZvaWQgSFRN
TE91dHB1dEVsZW1lbnQ6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCit2b2lkIEhUTUxP
dXRwdXRFbGVtZW50OjpzZXRWYWx1ZShTdHJpbmcmJiB2YWx1ZSkKIHsKICAgICBtX2RlZmF1bHRW
YWx1ZU92ZXJyaWRlID0gZGVmYXVsdFZhbHVlKCk7Ci0gICAgc3RyaW5nUmVwbGFjZUFsbCh2YWx1
ZSk7CisgICAgc3RyaW5nUmVwbGFjZUFsbChXVEZNb3ZlKHZhbHVlKSk7CiB9CiAKIFN0cmluZyBI
VE1MT3V0cHV0RWxlbWVudDo6ZGVmYXVsdFZhbHVlKCkgY29uc3QKQEAgLTk4LDEyICs5OCwxMiBA
QCBTdHJpbmcgSFRNTE91dHB1dEVsZW1lbnQ6OmRlZmF1bHRWYWx1ZSgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fZGVmYXVsdFZhbHVlT3ZlcnJpZGUuaXNOdWxsKCkgPyB0ZXh0Q29udGVudCgpIDogbV9k
ZWZhdWx0VmFsdWVPdmVycmlkZTsKIH0KIAotdm9pZCBIVE1MT3V0cHV0RWxlbWVudDo6c2V0RGVm
YXVsdFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCit2b2lkIEhUTUxPdXRwdXRFbGVtZW50Ojpz
ZXREZWZhdWx0VmFsdWUoU3RyaW5nJiYgdmFsdWUpCiB7CiAgICAgaWYgKG1fZGVmYXVsdFZhbHVl
T3ZlcnJpZGUuaXNOdWxsKCkpCi0gICAgICAgIHN0cmluZ1JlcGxhY2VBbGwodmFsdWUpOworICAg
ICAgICBzdHJpbmdSZXBsYWNlQWxsKFdURk1vdmUodmFsdWUpKTsKICAgICBlbHNlCi0gICAgICAg
IG1fZGVmYXVsdFZhbHVlT3ZlcnJpZGUgPSB2YWx1ZTsKKyAgICAgICAgbV9kZWZhdWx0VmFsdWVP
dmVycmlkZSA9IFdURk1vdmUodmFsdWUpOwogfQogCiBET01Ub2tlbkxpc3QmIEhUTUxPdXRwdXRF
bGVtZW50OjpodG1sRm9yKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91
dHB1dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuaApp
bmRleCBlNDg3MTcxMzI2MzNiMTQ5ZWQ3YzM1ZjYxZDA4NDIxM2JhNGMxNDZkLi4wMmM0OWNlMDBh
NjQ2NTg0ZjBkZDhmMTYxMTdmZDFjNDAyZGFmYTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T3V0cHV0RWxlbWVudC5oCkBAIC00NCw5ICs0NCw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PEhUTUxPdXRwdXRFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKIAogICAgIFN0cmluZyB2YWx1
ZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBz
ZXRWYWx1ZShTdHJpbmcmJik7CiAgICAgU3RyaW5nIGRlZmF1bHRWYWx1ZSgpIGNvbnN0OwotICAg
IHZvaWQgc2V0RGVmYXVsdFZhbHVlKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0RGVmYXVs
dFZhbHVlKFN0cmluZyYmKTsKICAgICBET01Ub2tlbkxpc3QmIGh0bWxGb3IoKTsKICAgICAKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCmluZGV4IGI1
MzUwOWViZjNmNzI0ODNkN2RiYzUxYWZkZDc5NmNmNTVkNzI2MDkuLjBlNzgyM2E1ZmViYjY0MzAz
NTJmNjUyNjM2M2Q3YTFiZDkwNWViMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFNjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlw
dEVsZW1lbnQuY3BwCkBAIC04NSw5ICs4NSw5IEBAIHZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6OmRp
ZEZpbmlzaEluc2VydGluZ05vZGUoKQogfQogCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cu
b3JnL211bHRpcGFnZS9zY3JpcHRpbmcuaHRtbCNkb20tc2NyaXB0LXRleHQKLXZvaWQgSFRNTFNj
cmlwdEVsZW1lbnQ6OnNldFRleHQoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgSFRNTFNjcmlw
dEVsZW1lbnQ6OnNldFRleHQoU3RyaW5nJiYgdmFsdWUpCiB7Ci0gICAgc2V0VGV4dENvbnRlbnQo
dmFsdWUpOworICAgIHNldFRleHRDb250ZW50KFdURk1vdmUodmFsdWUpKTsKIH0KIAogdm9pZCBI
VE1MU2NyaXB0RWxlbWVudDo6c2V0QXN5bmMoYm9vbCBhc3luYykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFNjcmlwdEVsZW1lbnQuaAppbmRleCA2MDNjZmUxMDI4YmVjODk4ZTkwMjdkZTZkYjAwNjg2
MzE4NGNlZmFhLi5jMDQzMDM3MGNmMzk2MTRmYWE3ODBkNjUyZTBlMjYwZjJiOTdlOTQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oCkBAIC0zNCw3ICszNCw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPEhUTUxTY3JpcHRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50JiwgYm9vbCB3YXNJbnNlcnRlZEJ5UGFyc2VyLCBib29sIGFs
cmVhZHlTdGFydGVkID0gZmFsc2UpOwogCiAgICAgU3RyaW5nIHRleHQoKSBjb25zdCB7IHJldHVy
biBzY3JpcHRDb250ZW50KCk7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRleHQoY29u
c3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUZXh0KFN0cmluZyYmKTsK
IAogICAgIFVSTCBzcmMoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRB
cmVhRWxlbWVudC5jcHAKaW5kZXggMmYxMGNlZDg0MTMxZWQ3ZTlkZDE4N2EzNDAxY2ZkY2RlYzRi
YTQzZS4uZjhkZmU1NDY3NDliYWE2OWNkYTY2YWZhYzkzMjA2NzNmODE4ODcwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC00MDQsNyArNDA0LDcg
QEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpzZXRWYWx1ZUNvbW1vbihjb25zdCBTdHJpbmcm
IG5ld1ZhbHVlLCBUZXh0RmllbGRFdmVudEIKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV92YWx1
ZSA9IG5vcm1hbGl6ZWRWYWx1ZTsKLSAgICBzZXRJbm5lclRleHRWYWx1ZShtX3ZhbHVlKTsKKyAg
ICBzZXRJbm5lclRleHRWYWx1ZShTdHJpbmcgeyBtX3ZhbHVlIH0pOwogICAgIHNldExhc3RDaGFu
Z2VXYXNOb3RVc2VyRWRpdCgpOwogICAgIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eSgpOwog
ICAgIGludmFsaWRhdGVTdHlsZUZvclN1YnRyZWUoKTsKQEAgLTQyOCw5ICs0MjgsOSBAQCBTdHJp
bmcgSFRNTFRleHRBcmVhRWxlbWVudDo6ZGVmYXVsdFZhbHVlKCkgY29uc3QKICAgICByZXR1cm4g
VGV4dE5vZGVUcmF2ZXJzYWw6OmNoaWxkVGV4dENvbnRlbnQoKnRoaXMpOwogfQogCi12b2lkIEhU
TUxUZXh0QXJlYUVsZW1lbnQ6OnNldERlZmF1bHRWYWx1ZShjb25zdCBTdHJpbmcmIGRlZmF1bHRW
YWx1ZSkKK3ZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6c2V0RGVmYXVsdFZhbHVlKFN0cmluZyYm
IGRlZmF1bHRWYWx1ZSkKIHsKLSAgICBzZXRUZXh0Q29udGVudChkZWZhdWx0VmFsdWUpOworICAg
IHNldFRleHRDb250ZW50KFdURk1vdmUoZGVmYXVsdFZhbHVlKSk7CiB9CiAKIFN0cmluZyBIVE1M
VGV4dEFyZWFFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0CkBAIC01NjAsNyArNTYw
LDcgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50Ojp1cGRhdGVQbGFjZWhvbGRlclRleHQoKQog
ICAgICAgICBtX3BsYWNlaG9sZGVyID0gVGV4dENvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ6OmNy
ZWF0ZShkb2N1bWVudCgpKTsKICAgICAgICAgdXNlckFnZW50U2hhZG93Um9vdCgpLT5pbnNlcnRC
ZWZvcmUoKm1fcGxhY2Vob2xkZXIsIGlubmVyVGV4dEVsZW1lbnQoKS0+bmV4dFNpYmxpbmcoKSk7
CiAgICAgfQotICAgIG1fcGxhY2Vob2xkZXItPnNldElubmVyVGV4dChwbGFjZWhvbGRlclRleHQp
OworICAgIG1fcGxhY2Vob2xkZXItPnNldElubmVyVGV4dChTdHJpbmcgeyBwbGFjZWhvbGRlclRl
eHQgfSk7CiB9CiAKIGJvb2wgSFRNTFRleHRBcmVhRWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNl
Q2xpY2tFdmVudHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFy
ZWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaApp
bmRleCBmMWZjYTc4OWM2NzJiZDc3MjkzMmJhYjQ1NmQzMDNmZDgzYWZiZTU3Li41ODkyYTBiMTIw
OGFhNDllZmFlYjQ2Mjg1NjVjMDUwNTRlODY5MjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgU3RyaW5nIHZhbHVlKCkgY29uc3QgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQg
RXhjZXB0aW9uT3I8dm9pZD4gc2V0VmFsdWUoY29uc3QgU3RyaW5nJiwgVGV4dEZpZWxkRXZlbnRC
ZWhhdmlvciA9IERpc3BhdGNoTm9FdmVudCwgVGV4dENvbnRyb2xTZXRWYWx1ZVNlbGVjdGlvbiA9
IFRleHRDb250cm9sU2V0VmFsdWVTZWxlY3Rpb246OlNldFNlbGVjdGlvblRvRW5kKSBmaW5hbDsK
ICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZGVmYXVsdFZhbHVlKCkgY29uc3Q7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXREZWZhdWx0VmFsdWUoY29uc3QgU3RyaW5nJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXREZWZhdWx0VmFsdWUoU3RyaW5nJiYpOwogICAgIGludCB0ZXh0
TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gdmFsdWUoKS5sZW5ndGgoKTsgfQogICAgIGludCBlZmZl
Y3RpdmVNYXhMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtYXhMZW5ndGgoKTsgfQogICAgIC8vIEZv
ciBWYWxpZGl0eVN0YXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQuY3BwCmluZGV4IGQ2NmQ5OWU1ZTQ2ZjI2YzQyOTg2YjMxN2YwNDdiOWVl
ZjA2MDc3NjIuLjZmYjEwZjY3MTI1ZDg3M2IzN2FmMjUzZmEwZTA1ZjVjMjNhZDhiZjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
CkBAIC02MTEsNyArNjExLDcgQEAgc3RhdGljIFN0cmluZyBpbm5lclRleHRWYWx1ZUZyb20oVGV4
dENvbnRyb2xJbm5lclRleHRFbGVtZW50JiBpbm5lclRleHQpCiAgICAgcmV0dXJuIHJlc3VsdC50
b1N0cmluZygpOwogfQogCi12b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRJbm5l
clRleHRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQordm9pZCBIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudDo6c2V0SW5uZXJUZXh0VmFsdWUoU3RyaW5nJiYgdmFsdWUpCiB7CiAgICAgTGF5b3V0
RGlzYWxsb3dlZFNjb3BlIGxheW91dERpc2FsbG93ZWRTY29wZShMYXlvdXREaXNhbGxvd2VkU2Nv
cGU6OlJlYXNvbjo6UGVyZm9ybWFuY2VPcHRpbWl6YXRpb24pOwogICAgIGF1dG8gaW5uZXJUZXh0
ID0gaW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlmTmVlZGVkKCk7CkBAIC02
NDMsOSArNjQzLDEwIEBAIHZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldElubmVy
VGV4dFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgICAgICAvLyBFdmVudHMgZGlz
cGF0Y2hlZCBvbiB0aGUgaW5uZXIgdGV4dCBlbGVtZW50IGNhbm5vdCBleGVjdXRlIGFyYml0cmFy
eSBhdXRob3Igc2NyaXB0cy4KICAgICAgICAgICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6RXZl
bnRBbGxvd2VkU2NvcGUgYWxsb3dlZFNjb3BlKCp1c2VyQWdlbnRTaGFkb3dSb290KCkpOwogCi0g
ICAgICAgICAgICBpbm5lclRleHQtPnNldElubmVyVGV4dCh2YWx1ZSk7CisgICAgICAgICAgICBi
b29sIGVuZHNXaXRoTmV3TGluZSA9IHZhbHVlLmVuZHNXaXRoKCdcbicpIHx8IHZhbHVlLmVuZHNX
aXRoKCdccicpOworICAgICAgICAgICAgaW5uZXJUZXh0LT5zZXRJbm5lclRleHQoV1RGTW92ZSh2
YWx1ZSkpOwogCi0gICAgICAgICAgICBpZiAodmFsdWUuZW5kc1dpdGgoJ1xuJykgfHwgdmFsdWUu
ZW5kc1dpdGgoJ1xyJykpCisgICAgICAgICAgICBpZiAoZW5kc1dpdGhOZXdMaW5lKQogICAgICAg
ICAgICAgICAgIGlubmVyVGV4dC0+YXBwZW5kQ2hpbGQoSFRNTEJSRWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50KCkpKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggODAzMTRkMWIxOGE3OGZkYTBmMjhhMzljMzJi
MDQ5ZmU5ZTMyMjNkMC4uN2Q5M2Y5NTBjYzlkZTgwZDI5MWYwMTg3NmVhNmY3Njk4YzJjNDEzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQu
aApAQCAtOTcsNyArOTcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNlbGVjdGlvbkNoYW5nZWQo
Ym9vbCBzaG91bGRGaXJlU2VsZWN0RXZlbnQpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbGFz
dENoYW5nZVdhc1VzZXJFZGl0KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRJbm5lclRleHRWYWx1ZShj
b25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldElubmVyVGV4dFZhbHVlKFN0cmluZyYmKTsKICAg
ICBTdHJpbmcgaW5uZXJUZXh0VmFsdWUoKSBjb25zdDsKIAogICAgIFN0cmluZyBkaXJlY3Rpb25G
b3JGb3JtRGF0YSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGl0bGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5j
cHAKaW5kZXggYTY3MDdiZTcyOGExOTg3Y2VmMTczODA2YzJiZDQ2NTFjMmFiNmI2My4uMTczMzk1
MzgzNTUxZGQ4ZDgyNjgyZGJmNWIzMzZhYmY2ZDkxZWQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUaXRsZUVsZW1lbnQuY3BwCkBAIC05MCw5ICs5MCw5IEBAIFN0cmluZ1dpdGhEaXJlY3Rp
b24gSFRNTFRpdGxlRWxlbWVudDo6Y29tcHV0ZWRUZXh0V2l0aERpcmVjdGlvbigpCiAgICAgcmV0
dXJuIHsgdGV4dCgpLCBkaXJlY3Rpb24gfTsKIH0KIAotdm9pZCBIVE1MVGl0bGVFbGVtZW50Ojpz
ZXRUZXh0KGNvbnN0IFN0cmluZyYgdmFsdWUpCit2b2lkIEhUTUxUaXRsZUVsZW1lbnQ6OnNldFRl
eHQoU3RyaW5nJiYgdmFsdWUpCiB7Ci0gICAgc2V0VGV4dENvbnRlbnQodmFsdWUpOworICAgIHNl
dFRleHRDb250ZW50KFdURk1vdmUodmFsdWUpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUaXRsZUVsZW1lbnQuaAppbmRleCA4YzM3YTg5YjEwOTY3ZjBlYjQ5NzE2MDZhN2VjMDQ1YmU2
NzRiMGU0Li44MWQxNGJmZDE3NTVkOTcyNWM0YTBkYmYwMDBhYWM0MzM5YjIyZDZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuaApAQCAtMzMsNyArMzMsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIFJlZjxIVE1MVGl0bGVFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Jik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdGV4dCgpIGNv
bnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGV4dChjb25zdCBTdHJpbmcmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRleHQoU3RyaW5nJiYpOwogCiAgICAgY29uc3QgU3Ry
aW5nV2l0aERpcmVjdGlvbiYgdGV4dFdpdGhEaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3Rp
dGxlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRU
eXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAppbmRl
eCAyMzMwODJjZTczYmJkYjhiZTg4MDQ1N2EzZmE1MDY1MDAwMmUwNmVkLi5hZTU4M2I4MDgyNGE5
YjFkN2U0ZmE4ZTc0MTVmMjc2NGNhNWFmM2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0
RmllbGRJbnB1dFR5cGUuY3BwCkBAIC02NjAsNyArNjYwLDcgQEAgdm9pZCBUZXh0RmllbGRJbnB1
dFR5cGU6OnVwZGF0ZVBsYWNlaG9sZGVyVGV4dCgpCiAgICAgICAgIG1fcGxhY2Vob2xkZXIgPSBU
ZXh0Q29udHJvbFBsYWNlaG9sZGVyRWxlbWVudDo6Y3JlYXRlKGVsZW1lbnQoKS0+ZG9jdW1lbnQo
KSk7CiAgICAgICAgIGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpLT5pbnNlcnRCZWZv
cmUoKm1fcGxhY2Vob2xkZXIsIG1fY29udGFpbmVyID8gbV9jb250YWluZXIuZ2V0KCkgOiBpbm5l
clRleHRFbGVtZW50KCkuZ2V0KCkpOwogICAgIH0KLSAgICBtX3BsYWNlaG9sZGVyLT5zZXRJbm5l
clRleHQocGxhY2Vob2xkZXJUZXh0KTsKKyAgICBtX3BsYWNlaG9sZGVyLT5zZXRJbm5lclRleHQo
V1RGTW92ZShwbGFjZWhvbGRlclRleHQpKTsKIH0KIAogYm9vbCBUZXh0RmllbGRJbnB1dFR5cGU6
OmFwcGVuZEZvcm1EYXRhKERPTUZvcm1EYXRhJiBmb3JtRGF0YSkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21IVE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0F0b21IVE1MVG9rZW4uaAppbmRleCA0NjRlYzEwNzVlNDNjZTNmMjg4
YTcwNzZhMjZmMTFjMjQyYTI1YWYwLi45ZWQ3YTZhNWE1ZWQ0NGFiNmIzZjVhZmVkMjIzZTBhYzg1
MzhlNzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9BdG9tSFRNTFRv
a2VuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQXRvbUhUTUxUb2tlbi5oCkBA
IC03NCw2ICs3NCw3IEBAIHB1YmxpYzoKICAgICAvLyBDb21tZW50CiAKICAgICBjb25zdCBTdHJp
bmcmIGNvbW1lbnQoKSBjb25zdDsKKyAgICBTdHJpbmcmIGNvbW1lbnQoKTsKIAogICAgIEhhc0R1
cGxpY2F0ZUF0dHJpYnV0ZSBoYXNEdXBsaWNhdGVBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBt
X2hhc0R1cGxpY2F0ZUF0dHJpYnV0ZTsgfTsKIApAQCAtMTYyLDYgKzE2MywxMiBAQCBpbmxpbmUg
Y29uc3QgU3RyaW5nJiBBdG9tSFRNTFRva2VuOjpjb21tZW50KCkgY29uc3QKICAgICByZXR1cm4g
bV9kYXRhOwogfQogCitpbmxpbmUgU3RyaW5nJiBBdG9tSFRNTFRva2VuOjpjb21tZW50KCkKK3sK
KyAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlbjo6Q29tbWVudCk7CisgICAgcmV0dXJuIG1f
ZGF0YTsKK30KKwogaW5saW5lIGJvb2wgQXRvbUhUTUxUb2tlbjo6Zm9yY2VRdWlya3MoKSBjb25z
dAogewogICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpET0NUWVBFKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAppbmRl
eCAxNWRjZmZiODJmMTg5NDkwMjIxYTljZjgyNTY5NWJjZGEzZjg2YjQ5Li4zNjEwNmUzNWQyMzMx
MzFhZWU0YjBlNWNlZjEzOThjMTIwYTRmM2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCkBAIC00NTIsMjAgKzQ1MiwyMCBA
QCB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnREb2N0eXBlKEF0b21IVE1MVG9rZW4m
JiB0b2tlbikKIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydENvbW1lbnQoQXRvbUhU
TUxUb2tlbiYmIHRva2VuKQogewogICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2Vu
OjpDb21tZW50KTsKLSAgICBhdHRhY2hMYXRlcihjdXJyZW50Tm9kZSgpLCBDb21tZW50OjpjcmVh
dGUob3duZXJEb2N1bWVudEZvckN1cnJlbnROb2RlKCksIHRva2VuLmNvbW1lbnQoKSkpOworICAg
IGF0dGFjaExhdGVyKGN1cnJlbnROb2RlKCksIENvbW1lbnQ6OmNyZWF0ZShvd25lckRvY3VtZW50
Rm9yQ3VycmVudE5vZGUoKSwgV1RGTW92ZSh0b2tlbi5jb21tZW50KCkpKSk7CiB9CiAKIHZvaWQg
SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydENvbW1lbnRPbkRvY3VtZW50KEF0b21IVE1MVG9r
ZW4mJiB0b2tlbikKIHsKICAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6Q29t
bWVudCk7Ci0gICAgYXR0YWNoTGF0ZXIobV9hdHRhY2htZW50Um9vdCwgQ29tbWVudDo6Y3JlYXRl
KG1fZG9jdW1lbnQsIHRva2VuLmNvbW1lbnQoKSkpOworICAgIGF0dGFjaExhdGVyKG1fYXR0YWNo
bWVudFJvb3QsIENvbW1lbnQ6OmNyZWF0ZShtX2RvY3VtZW50LCBXVEZNb3ZlKHRva2VuLmNvbW1l
bnQoKSkpKTsKIH0KIAogdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0Q29tbWVudE9u
SFRNTEh0bWxFbGVtZW50KEF0b21IVE1MVG9rZW4mJiB0b2tlbikKIHsKICAgICBBU1NFUlQodG9r
ZW4udHlwZSgpID09IEhUTUxUb2tlbjo6Q29tbWVudCk7CiAgICAgQ29udGFpbmVyTm9kZSYgcGFy
ZW50ID0gbV9vcGVuRWxlbWVudHMucm9vdE5vZGUoKTsKLSAgICBhdHRhY2hMYXRlcihwYXJlbnQs
IENvbW1lbnQ6OmNyZWF0ZShwYXJlbnQuZG9jdW1lbnQoKSwgdG9rZW4uY29tbWVudCgpKSk7Cisg
ICAgYXR0YWNoTGF0ZXIocGFyZW50LCBDb21tZW50OjpjcmVhdGUocGFyZW50LmRvY3VtZW50KCks
IFdURk1vdmUodG9rZW4uY29tbWVudCgpKSkpOwogfQogCiB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25T
aXRlOjppbnNlcnRIVE1MSGVhZEVsZW1lbnQoQXRvbUhUTUxUb2tlbiYmIHRva2VuKQpAQCAtNjAw
LDcgKzYwMCw3IEBAIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydFRleHROb2RlKGNv
bnN0IFN0cmluZyYgY2hhcmFjdGVycywgV2hpdGVzcGFjZU1vCiAgICAgICAgIGlmICghdGV4dE5v
ZGUtPmxlbmd0aCgpKSB7CiAgICAgICAgICAgICBTdHJpbmcgc3Vic3RyaW5nID0gY2hhcmFjdGVy
cy5zdWJzdHJpbmcoY3VycmVudFBvc2l0aW9uKTsKICAgICAgICAgICAgIEF0b21TdHJpbmcgc3Vi
c3RyaW5nQXRvbSA9IG1fd2hpdGVzcGFjZUNhY2hlLmxvb2t1cChzdWJzdHJpbmcsIHdoaXRlc3Bh
Y2VNb2RlKTsKLSAgICAgICAgICAgIHRleHROb2RlID0gVGV4dDo6Y3JlYXRlKHRhc2sucGFyZW50
LT5kb2N1bWVudCgpLCBzdWJzdHJpbmdBdG9tLmlzTnVsbCgpID8gc3Vic3RyaW5nIDogc3Vic3Ry
aW5nQXRvbS5zdHJpbmcoKSk7CisgICAgICAgICAgICB0ZXh0Tm9kZSA9IFRleHQ6OmNyZWF0ZSh0
YXNrLnBhcmVudC0+ZG9jdW1lbnQoKSwgc3Vic3RyaW5nQXRvbS5pc051bGwoKSA/IFdURk1vdmUo
c3Vic3RyaW5nKSA6IHN1YnN0cmluZ0F0b20ucmVsZWFzZVN0cmluZygpKTsKICAgICAgICAgfQog
CiAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiArPSB0ZXh0Tm9kZS0+bGVuZ3RoKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUVkaXRFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRWRpdEVsZW1lbnQuY3BwCmluZGV4
IGQ3ZGZhNzMwZmFjZjcwNzc4Y2U1ZGFmNjM0ZDc3YjExMTEyYmM4YTMuLjRlMjc2NzZjZGE4MWI1
MGUzNWE1OTgxMTBlZTcwYWVmZWFmMTVhY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0RhdGVUaW1lRWRpdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0RhdGVUaW1lRWRpdEVsZW1lbnQuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgLy8gRGF0ZVRpbWVGb3JtYXQ6OlRva2VuSGFuZGxlciBmdW5jdGlv
bnM6CiAgICAgdm9pZCB2aXNpdEZpZWxkKERhdGVUaW1lRm9ybWF0OjpGaWVsZFR5cGUsIGludCk7
Ci0gICAgdm9pZCB2aXNpdExpdGVyYWwoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCB2aXNpdExp
dGVyYWwoU3RyaW5nJiYpOwogCiAgICAgRGF0ZVRpbWVFZGl0RWxlbWVudCYgbV9lZGl0RWxlbWVu
dDsKICAgICBjb25zdCBEYXRlVGltZUVkaXRFbGVtZW50OjpMYXlvdXRQYXJhbWV0ZXJzJiBtX3Bh
cmFtZXRlcnM7CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBEYXRlVGltZUVkaXRCdWlsZGVyOjp2
aXNpdEZpZWxkKERhdGVUaW1lRm9ybWF0OjpGaWVsZFR5cGUgZmllbGRUeXBlLCBpbnQgY28KICAg
ICB9CiB9CiAKLXZvaWQgRGF0ZVRpbWVFZGl0QnVpbGRlcjo6dmlzaXRMaXRlcmFsKGNvbnN0IFN0
cmluZyYgdGV4dCkKK3ZvaWQgRGF0ZVRpbWVFZGl0QnVpbGRlcjo6dmlzaXRMaXRlcmFsKFN0cmlu
ZyYmIHRleHQpCiB7CiAgICAgQVNTRVJUKHRleHQubGVuZ3RoKCkpOwogCkBAIC0xODQsNyArMTg0
LDcgQEAgdm9pZCBEYXRlVGltZUVkaXRCdWlsZGVyOjp2aXNpdExpdGVyYWwoY29uc3QgU3RyaW5n
JiB0ZXh0KQogICAgIGlmICh0ZXh0LmVuZHNXaXRoKCcgJykpCiAgICAgICAgIGVsZW1lbnQtPnNl
dElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlNYXJnaW5JbmxpbmVFbmQsIC0xLCBDU1NV
bml0VHlwZTo6Q1NTX1BYKTsKIAotICAgIGVsZW1lbnQtPmFwcGVuZENoaWxkKFRleHQ6OmNyZWF0
ZShtX2VkaXRFbGVtZW50LmRvY3VtZW50KCksIHRleHQpKTsKKyAgICBlbGVtZW50LT5hcHBlbmRD
aGlsZChUZXh0OjpjcmVhdGUobV9lZGl0RWxlbWVudC5kb2N1bWVudCgpLCBXVEZNb3ZlKHRleHQp
KSk7CiAgICAgbV9lZGl0RWxlbWVudC5maWVsZHNXcmFwcGVyRWxlbWVudCgpLmFwcGVuZENoaWxk
KGVsZW1lbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9E
YXRlVGltZUZpZWxkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRl
VGltZUZpZWxkRWxlbWVudC5jcHAKaW5kZXggOWU0ZjYzMzhlZTgwNmNkZDVkYjU2NWQzZWE5NjY1
ZTQ5YWU0NjM5OS4uNDFhY2RiYTE4MGJiYTQ0ZjM4YTFmZGJiOTU2NDA4NDZkZmUwMmNmNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50
LmNwcApAQCAtMTg4LDcgKzE4OCw3IEBAIFN0cmluZyBEYXRlVGltZUZpZWxkRWxlbWVudDo6dmlz
aWJsZVZhbHVlKCkgY29uc3QKIHZvaWQgRGF0ZVRpbWVGaWVsZEVsZW1lbnQ6OnVwZGF0ZVZpc2li
bGVWYWx1ZShFdmVudEJlaGF2aW9yIGV2ZW50QmVoYXZpb3IpCiB7CiAgICAgaWYgKCFmaXJzdENo
aWxkKCkpCi0gICAgICAgIGFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVudCgpLCBlbXB0
eVN0cmluZygpKSk7CisgICAgICAgIGFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVudCgp
LCBTdHJpbmcgeyBlbXB0eVN0cmluZygpIH0pKTsKIAogICAgIGF1dG8mIHRleHROb2RlID0gZG93
bmNhc3Q8VGV4dD4oKmZpcnN0Q2hpbGQoKSk7CiAgICAgU3RyaW5nIG5ld1Zpc2libGVWYWx1ZSA9
IHZpc2libGVWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUu
Y3BwCmluZGV4IDc3YzZhMTYwYmE5NWJkNWEyODZjNWRhNzQ5Mzk4MzVlNTFiOWFkM2QuLmIzM2Uy
YWEyMDQwOGFjZjNmMTFhMTk0MWE3OTQ0MmY1MjBlNGQwZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKQEAgLTUxMCw4ICs1MTAsOCBAQCB2b2lkIFRleHRU
cmFja0N1ZTo6cmVidWlsZERpc3BsYXlUcmVlKCkKICAgICAgICAgaWYgKGNvbnN0IGF1dG8mIHN0
eWxlU2hlZXRzID0gdHJhY2soKS0+c3R5bGVTaGVldHMoKSkgewogICAgICAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBjc3NTdHJpbmcgOiAqc3R5bGVTaGVldHMpIHsKICAgICAgICAgICAgICAgICBh
dXRvIHN0eWxlID0gSFRNTFN0eWxlRWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6c3R5bGVUYWcs
IG1fZGlzcGxheVRyZWUtPmRvY3VtZW50KCksIGZhbHNlKTsKLSAgICAgICAgICAgICAgICBzdHls
ZS0+c2V0VGV4dENvbnRlbnQoY3NzU3RyaW5nKTsKLSAgICAgICAgICAgICAgICBtX2Rpc3BsYXlU
cmVlLT5hcHBlbmRDaGlsZChzdHlsZSk7CisgICAgICAgICAgICAgICAgc3R5bGUtPnNldFRleHRD
b250ZW50KFN0cmluZyB7IGNzc1N0cmluZyB9KTsKKyAgICAgICAgICAgICAgICBtX2Rpc3BsYXlU
cmVlLT5hcHBlbmRDaGlsZChXVEZNb3ZlKHN0eWxlKSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKaW5kZXggZTczZGNjYTIz
OGRhOGNhYWFjZTdmNTkwMTNjZjZjYTczMDM2OWVkMi4uYWJmNzU2OTY0YzM3OWU4Nzc0ZGFjZWFi
ODEyMGUyOGZjZDE0YWE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9W
VFRDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcApAQCAt
MTAwMSwxNiArMTAwMSwxNiBAQCBSZWZQdHI8VGV4dFRyYWNrQ3VlQm94PiBWVFRDdWU6OmdldERp
c3BsYXlUcmVlKGNvbnN0IEludFNpemUmIHZpZGVvU2l6ZSwgaW50IGZvbgogICAgIGlmIChkaXNw
bGF5VHJlZS0+ZG9jdW1lbnQoKS5wYWdlKCkpIHsKICAgICAgICAgYXV0byBjc3NTdHJpbmcgPSBk
aXNwbGF5VHJlZS0+ZG9jdW1lbnQoKS5wYWdlKCktPmNhcHRpb25Vc2VyUHJlZmVyZW5jZXNTdHls
ZVNoZWV0KCk7CiAgICAgICAgIGF1dG8gc3R5bGUgPSBIVE1MU3R5bGVFbGVtZW50OjpjcmVhdGUo
SFRNTE5hbWVzOjpzdHlsZVRhZywgZGlzcGxheVRyZWUtPmRvY3VtZW50KCksIGZhbHNlKTsKLSAg
ICAgICAgc3R5bGUtPnNldFRleHRDb250ZW50KGNzc1N0cmluZyk7Ci0gICAgICAgIGRpc3BsYXlU
cmVlLT5hcHBlbmRDaGlsZChzdHlsZSk7CisgICAgICAgIHN0eWxlLT5zZXRUZXh0Q29udGVudChX
VEZNb3ZlKGNzc1N0cmluZykpOworICAgICAgICBkaXNwbGF5VHJlZS0+YXBwZW5kQ2hpbGQoV1RG
TW92ZShzdHlsZSkpOwogICAgIH0KIAogICAgIGNvbnN0IGF1dG8mIHN0eWxlU2hlZXRzID0gdHJh
Y2soKS0+c3R5bGVTaGVldHMoKTsKICAgICBpZiAoc3R5bGVTaGVldHMpIHsKICAgICAgICAgZm9y
IChjb25zdCBhdXRvJiBjc3NTdHJpbmcgOiAqc3R5bGVTaGVldHMpIHsKICAgICAgICAgICAgIGF1
dG8gc3R5bGUgPSBIVE1MU3R5bGVFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjpzdHlsZVRhZywg
ZGlzcGxheVRyZWUtPmRvY3VtZW50KCksIGZhbHNlKTsKLSAgICAgICAgICAgIHN0eWxlLT5zZXRU
ZXh0Q29udGVudChjc3NTdHJpbmcpOwotICAgICAgICAgICAgZGlzcGxheVRyZWUtPmFwcGVuZENo
aWxkKHN0eWxlKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRUZXh0Q29udGVudChTdHJpbmcgeyBj
c3NTdHJpbmcgfSk7CisgICAgICAgICAgICBkaXNwbGF5VHJlZS0+YXBwZW5kQ2hpbGQoV1RGTW92
ZShzdHlsZSkpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1dlYlZUVFBhcnNlci5jcHAKaW5kZXggOGZkMWMzMzViMDY2NzA4NTE0OTkzZWNjOWQ3YmU0YzBj
ZWU5ZmIyNi4uZjhkZGJkMzgwNWI0NTgwYThkNzY0NDg5MTIzY2Q5MjFlYzI2MDVmNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcApAQCAtNTE5LDcgKzUxOSw3
IEBAIFJlZjxEb2N1bWVudEZyYWdtZW50PiBXZWJWVFRUcmVlQnVpbGRlcjo6YnVpbGRGcm9tU3Ry
aW5nKGNvbnN0IFN0cmluZyYgY3VlVGV4dCkKICAgICBhdXRvIGZyYWdtZW50ID0gRG9jdW1lbnRG
cmFnbWVudDo6Y3JlYXRlKG1fZG9jdW1lbnQpOwogCiAgICAgaWYgKGN1ZVRleHQuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIGZyYWdtZW50LT5wYXJzZXJBcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUobV9k
b2N1bWVudCwgZW1wdHlTdHJpbmcoKSkpOworICAgICAgICBmcmFnbWVudC0+cGFyc2VyQXBwZW5k
Q2hpbGQoVGV4dDo6Y3JlYXRlKG1fZG9jdW1lbnQsIFN0cmluZyB7IGVtcHR5U3RyaW5nKCkgfSkp
OwogICAgICAgICByZXR1cm4gZnJhZ21lbnQ7CiAgICAgfQogCkBAIC02NTAsNyArNjUwLDcgQEAg
dm9pZCBXZWJWVFRUcmVlQnVpbGRlcjo6Y29uc3RydWN0VHJlZUZyb21Ub2tlbihEb2N1bWVudCYg
ZG9jdW1lbnQpCiAKICAgICBzd2l0Y2ggKG1fdG9rZW4udHlwZSgpKSB7CiAgICAgY2FzZSBXZWJW
VFRUb2tlblR5cGVzOjpDaGFyYWN0ZXI6IHsKLSAgICAgICAgbV9jdXJyZW50Tm9kZS0+cGFyc2Vy
QXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50LCBtX3Rva2VuLmNoYXJhY3RlcnMoKSkp
OworICAgICAgICBtX2N1cnJlbnROb2RlLT5wYXJzZXJBcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUo
ZG9jdW1lbnQsIFN0cmluZyB7IG1fdG9rZW4uY2hhcmFjdGVycygpIH0pKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIGNhc2UgV2ViVlRUVG9rZW5UeXBlczo6U3RhcnRUYWc6IHsKQEAgLTcw
OSw3ICs3MDksNyBAQCB2b2lkIFdlYlZUVFRyZWVCdWlsZGVyOjpjb25zdHJ1Y3RUcmVlRnJvbVRv
a2VuKERvY3VtZW50JiBkb2N1bWVudCkKICAgICAgICAgU3RyaW5nIGNoYXJhY3RlcnNTdHJpbmcg
PSBtX3Rva2VuLmNoYXJhY3RlcnMoKTsKICAgICAgICAgTWVkaWFUaW1lIHBhcnNlZFRpbWVTdGFt
cDsKICAgICAgICAgaWYgKFdlYlZUVFBhcnNlcjo6Y29sbGVjdFRpbWVTdGFtcChjaGFyYWN0ZXJz
U3RyaW5nLCBwYXJzZWRUaW1lU3RhbXApKQotICAgICAgICAgICAgbV9jdXJyZW50Tm9kZS0+cGFy
c2VyQXBwZW5kQ2hpbGQoUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjcmVhdGUoZG9jdW1lbnQsICJ0
aW1lc3RhbXAiX3MsIGNoYXJhY3RlcnNTdHJpbmcpKTsKKyAgICAgICAgICAgIG1fY3VycmVudE5v
ZGUtPnBhcnNlckFwcGVuZENoaWxkKFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y3JlYXRlKGRvY3Vt
ZW50LCAidGltZXN0YW1wIl9zLCBXVEZNb3ZlKGNoYXJhY3RlcnNTdHJpbmcpKSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9s
bGVyLmNwcAppbmRleCBlNmZjNzlhMDIxMTI0NGZjYzdlMDk0OTNjYmVlOTBiMDdlMTI4ZDFhLi4y
MTFhM2YwYzBhOTY0ZDdhN2NjZDcxMWQ2YWI5MGY2ZGI1OWRmNGNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtMTcwLDcgKzE3MCw3IEBAIHN0YXRpYyBSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4gZG9jdW1lbnRGcmFnbWVudEZyb21EcmFnRGF0YShjb25zdCBEcmFn
RGF0YSYgZHJhCiAgICAgICAgICAgICAgICAgICAgIGlmICh0aXRsZS5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IHVybDsKICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgYW5jaG9yLT5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0
aXRsZSkpOworICAgICAgICAgICAgICAgIGFuY2hvci0+YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUoV1RGTW92ZSh0aXRsZSkpKTsKICAgICAgICAgICAgICAgICBhdXRvIGZyYWdt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwogICAgICAgICAgICAgICAg
IGZyYWdtZW50LT5hcHBlbmRDaGlsZChhbmNob3IpOwogICAgICAgICAgICAgICAgIHJldHVybiBm
cmFnbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvRGF0ZVRp
bWVGb3JtYXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvRGF0ZVRpbWVGb3JtYXQu
aAppbmRleCBhMzcyNmRmZmJlMWYzZTE5ZDdhODMxZDc3MDc2OTNlMTVjNjU2NjdmLi44ZGUxOTA0
NGFhYzAyN2JmMmU2ZmFlYjU1MGQ0OTBmNzkxZGFiOTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L0RhdGVUaW1lRm9ybWF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9EYXRlVGltZUZvcm1hdC5oCkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoK
ICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgflRva2VuSGFuZGxlcigpID0gZGVmYXVsdDsK
ICAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0RmllbGQoRmllbGRUeXBlLCBpbnQgbnVtYmVyT2ZQ
YXR0ZXJuQ2hhcmFjdGVycykgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRMaXRlcmFs
KGNvbnN0IFN0cmluZyYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0TGl0ZXJhbChT
dHJpbmcmJikgPSAwOwogICAgIH07CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgc3VjY2VlZGVk
LCBmYWxzZSBpZiBmYWlsZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1BsYXRmb3JtTG9jYWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxh
dGZvcm1Mb2NhbGUuY3BwCmluZGV4IGY0NzIwMGI1NzIxNjhkNGVlZmFhNzRlOTA3NTcxYWQ1Yzky
YWIwMTkuLmEzMmJhOTBlM2FhOTAwY2Q0MDI4NmQwYzdlMTM4N2FjZGY2N2E4M2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxhdGZvcm1Mb2NhbGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxhdGZvcm1Mb2NhbGUuY3BwCkBAIC01Myw3
ICs1Myw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgLy8gRGF0ZVRpbWVGb3JtYXQ6OlRva2Vu
SGFuZGxlciBmdW5jdGlvbnMuCiAgICAgdm9pZCB2aXNpdEZpZWxkKERhdGVUaW1lRm9ybWF0OjpG
aWVsZFR5cGUsIGludCkgZmluYWw7Ci0gICAgdm9pZCB2aXNpdExpdGVyYWwoY29uc3QgU3RyaW5n
JikgZmluYWw7CisgICAgdm9pZCB2aXNpdExpdGVyYWwoU3RyaW5nJiYpIGZpbmFsOwogCiAgICAg
U3RyaW5nIHplcm9QYWRTdHJpbmcoY29uc3QgU3RyaW5nJiwgc2l6ZV90IHdpZHRoKTsKICAgICB2
b2lkIGFwcGVuZE51bWJlcihpbnQgbnVtYmVyLCBzaXplX3Qgd2lkdGgpOwpAQCAtMTY4LDEwICsx
NjgsMTAgQEAgdm9pZCBEYXRlVGltZVN0cmluZ0J1aWxkZXI6OnZpc2l0RmllbGQoRGF0ZVRpbWVG
b3JtYXQ6OkZpZWxkVHlwZSBmaWVsZFR5cGUsIGludAogICAgIH0KIH0KIAotdm9pZCBEYXRlVGlt
ZVN0cmluZ0J1aWxkZXI6OnZpc2l0TGl0ZXJhbChjb25zdCBTdHJpbmcmIHRleHQpCit2b2lkIERh
dGVUaW1lU3RyaW5nQnVpbGRlcjo6dmlzaXRMaXRlcmFsKFN0cmluZyYmIHRleHQpCiB7CiAgICAg
QVNTRVJUKHRleHQubGVuZ3RoKCkpOwotICAgIG1fYnVpbGRlci5hcHBlbmQodGV4dCk7CisgICAg
bV9idWlsZGVyLmFwcGVuZChXVEZNb3ZlKHRleHQpKTsKIH0KIAogU3RyaW5nIERhdGVUaW1lU3Ry
aW5nQnVpbGRlcjo6dG9TdHJpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RSZWZFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAK
aW5kZXggYWFkYWM5OWU1MDU5YWRlZDU0MjllYmEzZmY0ZTk1MWJiNjZjNGFmOC4uODAzMGQ1M2Ey
ODhlZDllNDA5ZWUwZmM2M2VmNDMwMDMxZjk3MDBlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJl
ZkVsZW1lbnQuY3BwCkBAIC0xNDUsMTAgKzE0NSwxMCBAQCB2b2lkIFNWR1RSZWZFbGVtZW50Ojp1
cGRhdGVSZWZlcmVuY2VkVGV4dChFbGVtZW50KiB0YXJnZXQpCiAgICAgQVNTRVJUKHJvb3QpOwog
ICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6RXZlbnRBbGxvd2VkU2NvcGUgYWxsb3dlZFNjb3Bl
KCpyb290KTsKICAgICBpZiAoIXJvb3QtPmZpcnN0Q2hpbGQoKSkKLSAgICAgICAgcm9vdC0+YXBw
ZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50KCksIHRleHRDb250ZW50KSk7CisgICAgICAg
IHJvb3QtPmFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVudCgpLCBXVEZNb3ZlKHRleHRD
b250ZW50KSkpOwogICAgIGVsc2UgewogICAgICAgICBBU1NFUlQocm9vdC0+Zmlyc3RDaGlsZCgp
LT5pc1RleHROb2RlKCkpOwotICAgICAgICByb290LT5maXJzdENoaWxkKCktPnNldFRleHRDb250
ZW50KHRleHRDb250ZW50KTsKKyAgICAgICAgcm9vdC0+Zmlyc3RDaGlsZCgpLT5zZXRUZXh0Q29u
dGVudChXVEZNb3ZlKHRleHRDb250ZW50KSk7CiAgICAgfQogfQogCkBAIC0xNTcsMTIgKzE1Nywx
MCBAQCB2b2lkIFNWR1RSZWZFbGVtZW50OjpkZXRhY2hUYXJnZXQoKQogICAgIC8vIFJlbW92ZSBh
Y3RpdmUgbGlzdGVuZXJzIGFuZCBjbGVhciB0aGUgdGV4dCBjb250ZW50LgogICAgIG1fdGFyZ2V0
TGlzdGVuZXItPmRldGFjaCgpOwogCi0gICAgU3RyaW5nIGVtcHR5Q29udGVudDsKLQogICAgIEFT
U0VSVChzaGFkb3dSb290KCkpOwogICAgIFJlZlB0ciBjb250YWluZXIgPSBzaGFkb3dSb290KCkt
PmZpcnN0Q2hpbGQoKTsKICAgICBpZiAoY29udGFpbmVyKQotICAgICAgICBjb250YWluZXItPnNl
dFRleHRDb250ZW50KGVtcHR5Q29udGVudCk7CisgICAgICAgIGNvbnRhaW5lci0+c2V0VGV4dENv
bnRlbnQoU3RyaW5nIHsgfSk7CiAKICAgICBpZiAoIWlzQ29ubmVjdGVkKCkpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuY3BwIGIvU291
cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5jcHAKaW5kZXggZWY0Y2RlYWJkZTQ5ZGVjNDA0MmE2
ZjgzMjUwYjZlMmY3NzI2MDE1NS4uN2EwMmMxOGI5NmNiNGVmODQwZjFhZDJmZjRlZTIwOTc0YmMy
YmEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBY
TUxFcnJvcnM6OmFwcGVuZEVycm9yTWVzc2FnZShBU0NJSUxpdGVyYWwgdHlwZVN0cmluZywgVGV4
dFBvc2l0aW9uIHBvc2l0aW8KICAgICBtX2Vycm9yTWVzc2FnZXMuYXBwZW5kKHR5cGVTdHJpbmcs
ICIgb24gbGluZSAiLCBwb3NpdGlvbi5tX2xpbmUub25lQmFzZWRJbnQoKSwgIiBhdCBjb2x1bW4g
IiwgcG9zaXRpb24ubV9jb2x1bW4ub25lQmFzZWRJbnQoKSwgIjogIiwgbWVzc2FnZSk7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgUmVmPEVsZW1lbnQ+IGNyZWF0ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIo
RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZXMpCitzdGF0aWMg
aW5saW5lIFJlZjxFbGVtZW50PiBjcmVhdGVYSFRNTFBhcnNlckVycm9ySGVhZGVyKERvY3VtZW50
JiBkb2N1bWVudCwgU3RyaW5nJiYgZXJyb3JNZXNzYWdlcykKIHsKICAgICBSZWY8RWxlbWVudD4g
cmVwb3J0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoUXVhbGlmaWVkTmFtZShudWxs
QXRvbSgpLCAicGFyc2VyZXJyb3IiX3MsIHhodG1sTmFtZXNwYWNlVVJJKSwgdHJ1ZSk7CiAKQEAg
LTk5LDcgKzk5LDcgQEAgc3RhdGljIGlubGluZSBSZWY8RWxlbWVudD4gY3JlYXRlWEhUTUxQYXJz
ZXJFcnJvckhlYWRlcihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnMKICAgICBmaXhlZC0+cGFyc2Vy
U2V0QXR0cmlidXRlcyhmaXhlZEF0dHJpYnV0ZXMpOwogICAgIHJlcG9ydEVsZW1lbnQtPnBhcnNl
ckFwcGVuZENoaWxkKGZpeGVkKTsKIAotICAgIGZpeGVkLT5wYXJzZXJBcHBlbmRDaGlsZChUZXh0
OjpjcmVhdGUoZG9jdW1lbnQsIGVycm9yTWVzc2FnZXMpKTsKKyAgICBmaXhlZC0+cGFyc2VyQXBw
ZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50LCBXVEZNb3ZlKGVycm9yTWVzc2FnZXMpKSk7
CiAKICAgICBoMyA9IEhUTUxIZWFkaW5nRWxlbWVudDo6Y3JlYXRlKGgzVGFnLCBkb2N1bWVudCk7
CiAgICAgcmVwb3J0RWxlbWVudC0+cGFyc2VyQXBwZW5kQ2hpbGQoaDMpOwpAQCAtMTQyLDggKzE0
Miw3IEBAIHZvaWQgWE1MRXJyb3JzOjppbnNlcnRFcnJvck1lc3NhZ2VCbG9jaygpCiAgICAgICAg
IGRvY3VtZW50RWxlbWVudCA9IFdURk1vdmUoYm9keSk7CiAgICAgfQogCi0gICAgU3RyaW5nIGVy
cm9yTWVzc2FnZXMgPSBtX2Vycm9yTWVzc2FnZXMudG9TdHJpbmcoKTsKLSAgICBhdXRvIHJlcG9y
dEVsZW1lbnQgPSBjcmVhdGVYSFRNTFBhcnNlckVycm9ySGVhZGVyKG1fZG9jdW1lbnQsIGVycm9y
TWVzc2FnZXMpOworICAgIGF1dG8gcmVwb3J0RWxlbWVudCA9IGNyZWF0ZVhIVE1MUGFyc2VyRXJy
b3JIZWFkZXIobV9kb2N1bWVudCwgbV9lcnJvck1lc3NhZ2VzLnRvU3RyaW5nKCkpOwogCiAjaWYg
RU5BQkxFKFhTTFQpCiAgICAgaWYgKG1fZG9jdW1lbnQudHJhbnNmb3JtU291cmNlRG9jdW1lbnQo
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCmluZGV4IDAyZWU5OTBjZTA3ZGEw
YmYzOTMwNGFiMWRiNzJhZTA3NGUxYzFhNTIuLmE2YWQxMWI3NzIxN2U3Nzg5MTI0NmRiOWNmYWNi
NTViNmM3YWVlODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxUcmVlVmlld2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAKQEAgLTU4LDcg
KzU4LDcgQEAgdm9pZCBYTUxUcmVlVmlld2VyOjp0cmFuc2Zvcm1Eb2N1bWVudFRvVHJlZVZpZXco
KQogICAgIG1fZG9jdW1lbnQuZnJhbWUoKS0+c2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2Vw
dGlvbihTY3JpcHRTb3VyY2VDb2RlKEF0b21TdHJpbmcoInByZXBhcmVXZWJLaXRYTUxWaWV3ZXIo
J1RoaXMgWE1MIGZpbGUgZG9lcyBub3QgYXBwZWFyIHRvIGhhdmUgYW55IHN0eWxlIGluZm9ybWF0
aW9uIGFzc29jaWF0ZWQgd2l0aCBpdC4gVGhlIGRvY3VtZW50IHRyZWUgaXMgc2hvd24gYmVsb3cu
Jyk7Il9zKSkpOwogCiAgICAgU3RyaW5nIGNzc1N0cmluZyA9IFN0cmluZ0ltcGw6OmNyZWF0ZVdp
dGhvdXRDb3B5aW5nKFhNTFZpZXdlcl9jc3MsIHNpemVvZihYTUxWaWV3ZXJfY3NzKSk7Ci0gICAg
YXV0byB0ZXh0ID0gbV9kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3NTdHJpbmcpOworICAgIGF1
dG8gdGV4dCA9IG1fZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoV1RGTW92ZShjc3NTdHJpbmcpKTsK
ICAgICBtX2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKFN0cmluZygieG1sLXZpZXdlci1zdHlsZSJf
cykpLT5hcHBlbmRDaGlsZCh0ZXh0KTsKICAgICBtX2RvY3VtZW50LnN0eWxlU2NvcGUoKS5kaWRD
aGFuZ2VBY3RpdmVTdHlsZVNoZWV0Q2FuZGlkYXRlcygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQ
cm9jZXNzb3IuY3BwCmluZGV4IGJlNThkNmY3NDQxY2QwODNiMjMyYTRjZDQ1ZDQwZTE0ZjQ4YTVi
YTEuLmI0NWFjMTVjNjI2Y2I4M2I4NjJiZTViYWRkZDY4NGRhNDlkNjE2NmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4gWFNMVFByb2Nlc3Nvcjo6dHJhbnNmb3JtVG9GcmFnbWVudChOb2RlJiBzb3Vy
Y2VOb2RlLCBEbwogCiAgICAgaWYgKCF0cmFuc2Zvcm1Ub1N0cmluZyhzb3VyY2VOb2RlLCByZXN1
bHRNSU1FVHlwZSwgcmVzdWx0U3RyaW5nLCByZXN1bHRFbmNvZGluZykpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZvclRyYW5zZm9ybVRvRnJhZ21l
bnQob3V0cHV0RG9jdW1lbnQsIHJlc3VsdFN0cmluZywgcmVzdWx0TUlNRVR5cGUpOworICAgIHJl
dHVybiBjcmVhdGVGcmFnbWVudEZvclRyYW5zZm9ybVRvRnJhZ21lbnQob3V0cHV0RG9jdW1lbnQs
IFdURk1vdmUocmVzdWx0U3RyaW5nKSwgV1RGTW92ZShyZXN1bHRNSU1FVHlwZSkpOwogfQogCiB2
b2lkIFhTTFRQcm9jZXNzb3I6OnNldFBhcmFtZXRlcihjb25zdCBTdHJpbmcmIC8qbmFtZXNwYWNl
VVJJKi8sIGNvbnN0IFN0cmluZyYgbG9jYWxOYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCAx
YWI4YTM1MjRhNmNkMGY5M2ZjNjVmMWJmODFiNWQ3MzIwZWMxNjdkLi44NTRlMjc2ZWU4YjUyYzE1
MzliYzBjNDQyYjg1ZGQ5OThkNjAwZTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwv
cGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFy
c2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgWE1MRG9j
dW1lbnRQYXJzZXI6OmNyZWF0ZUxlYWZUZXh0Tm9kZSgpCiAKICAgICBBU1NFUlQobV9idWZmZXJl
ZFRleHQuc2l6ZSgpID09IDApOwogICAgIEFTU0VSVCghbV9sZWFmVGV4dE5vZGUpOwotICAgIG1f
bGVhZlRleHROb2RlID0gVGV4dDo6Y3JlYXRlKG1fY3VycmVudE5vZGUtPmRvY3VtZW50KCksIGVt
cHR5U3RyaW5nKCkpOworICAgIG1fbGVhZlRleHROb2RlID0gVGV4dDo6Y3JlYXRlKG1fY3VycmVu
dE5vZGUtPmRvY3VtZW50KCksIFN0cmluZyB7IGVtcHR5U3RyaW5nKCkgfSk7CiAgICAgbV9jdXJy
ZW50Tm9kZS0+cGFyc2VyQXBwZW5kQ2hpbGQoKm1fbGVhZlRleHROb2RlKTsKIH0KIApAQCAtMjk2
LDcgKzI5Niw3IEBAIGJvb2wgWE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlRG9jdW1lbnRGcmFnbWVu
dChjb25zdCBTdHJpbmcmIGNodW5rLCBEb2N1bWVudEZyYWdtCiAgICAgLy8gaHR0cDovL3d3dy53
aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLXhodG1s
LXN5bnRheC5odG1sI3htbC1mcmFnbWVudC1wYXJzaW5nLWFsZ29yaXRobQogICAgIC8vIEZvciBu
b3cgd2UgaGF2ZSBhIGhhY2sgZm9yIHNjcmlwdC9zdHlsZSBpbm5lckhUTUwgc3VwcG9ydDoKICAg
ICBpZiAoY29udGV4dEVsZW1lbnQgJiYgKGNvbnRleHRFbGVtZW50LT5oYXNMb2NhbE5hbWUoSFRN
TE5hbWVzOjpzY3JpcHRUYWctPmxvY2FsTmFtZSgpKSB8fCBjb250ZXh0RWxlbWVudC0+aGFzTG9j
YWxOYW1lKEhUTUxOYW1lczo6c3R5bGVUYWctPmxvY2FsTmFtZSgpKSkpIHsKLSAgICAgICAgZnJh
Z21lbnQucGFyc2VyQXBwZW5kQ2hpbGQoZnJhZ21lbnQuZG9jdW1lbnQoKS5jcmVhdGVUZXh0Tm9k
ZShjaHVuaykpOworICAgICAgICBmcmFnbWVudC5wYXJzZXJBcHBlbmRDaGlsZChmcmFnbWVudC5k
b2N1bWVudCgpLmNyZWF0ZVRleHROb2RlKFN0cmluZyB7IGNodW5rIH0pKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbQppbmRleCA4M2ViZWRiNDc5YzI2YTU3ODdhMThjZTExMzg1NmQ4Y2Q1NjFlYWIyLi5m
ZWVmNDVmYjFhYzVjZjNhYjNlZGM1ZTM4OTk1NDEwYmRhYWQ3MGZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTE2NDAsNyArMTY0MCw3IEBAIC0g
KHZvaWQpc2V0VGV4dDooTlNTdHJpbmcgKil0ZXh0IGFzQ2hpbGRPZkVsZW1lbnQ6KERPTUVsZW1l
bnQgKillbGVtZW50CiAgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmRvY3VtZW50KCkpCiAgICAg
ICAgIHJldHVybjsKICAgICAgICAgCi0gICAgZnJhbWUtPmVkaXRvcigpLnNldFRleHRBc0NoaWxk
T2ZFbGVtZW50KHRleHQsICpjb3JlKGVsZW1lbnQpKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0
VGV4dEFzQ2hpbGRPZkVsZW1lbnQoU3RyaW5nIHsgdGV4dCB9LCAqY29yZShlbGVtZW50KSk7CiB9
CiAKIC0gKHZvaWQpc2V0RGljdGF0aW9uUGhyYXNlczooTlNBcnJheSAqKWRpY3RhdGlvblBocmFz
ZXMgbWV0YWRhdGE6KGlkKW1ldGFkYXRhIGFzQ2hpbGRPZkVsZW1lbnQ6KERPTUVsZW1lbnQgKill
bGVtZW50Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457915</attachid>
            <date>2022-04-19 10:30:58 -0700</date>
            <delta_ts>2022-04-19 14:03:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239481-20220419103057.patch</filename>
            <type>text/plain</type>
            <size>92831</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQ1YjZkODU5OTk3NmQ4M2EwMjk2ZDkw
YmYzNzc5MTAxZmE3NGVjMGIuLjY3NGY4N2E5NTUwMzAwNWI3NTJmNjMyZjQxNTBkZWQ4YTE2ZGQ5
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDQtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgbW9yZSByLXZhbHVlIHJlZmVyZW5jZXMgZm9yIFRl
eHQgLyBDaGFyYWN0ZXJEYXRhIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzOTQ4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBhIGZ1bmN0aW9uIHRvIEF0b21TdHJpbmcgdG8gcmVsZWFz
ZSBpdHMgU3RyaW5nLiBUaGlzIGlzIGNvbnZlbmllbnQgd2hlbiB5b3UgaGF2ZSBhbiBBdG9tU3Ry
aW5nCisgICAgICAgIGFuZCBuZWVkIGEgU3RyaW5nJiYuCisKKyAgICAgICAgKiB3dGYvdGV4dC9B
dG9tU3RyaW5nLmg6CisKIDIwMjItMDQtMTggIEVsbGlvdHQgV2lsbGlhbXMgIDxlbXdAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtYQ0J1aWxkXSBVc2UgWENCdWlsZCBmb3IgYWxsIGNvbW1hbmQtbGlu
ZSBhbmQgcHJvamVjdCBidWlsZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4ODAxZTEwN2Y1NmJjYzI3NmQwN2Iz
OTljYzA4MzczNDg0NmI0YTIxLi40ZTE0NTZlYTA2NTFkZDQ3ZmYwZjgyM2YyYjM4ZGFiNWRkMWVh
YzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYxIEBACisyMDIyLTA0LTE5ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIG1vcmUgci12YWx1ZSByZWZlcmVu
Y2VzIGZvciBUZXh0IC8gQ2hhcmFjdGVyRGF0YSBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk0ODEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgbW9yZSByLXZhbHVlIHJlZmVyZW5jZXMg
Zm9yIFRleHQgLyBDaGFyYWN0ZXJEYXRhIGNsYXNzZXMsIHdoaWNoIGluZmVjdGVkCisgICAgICAg
IGEgbG90IG9mIHRoZSBzdXJyb3VuZGluZyBjb2RlLiBUaGlzIGF2b2lkcyBzb21lIHJlZi1jb3Vu
dGluZyBjaHVybi4KKworICAgICAgICAqIGRvbS9DREFUQVNlY3Rpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0RBVEFTZWN0aW9uOjpDREFUQVNlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
Q0RBVEFTZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RBVEFTZWN0aW9uOjpj
bG9uZU5vZGVJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDREFUQVNlY3Rpb246OnZpcnR1
YWxDcmVhdGUpOgorICAgICAgICAqIGRvbS9DREFUQVNlY3Rpb24uaDoKKyAgICAgICAgKiBkb20v
Q2hhcmFjdGVyRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRGF0YTo6Q2hhcmFj
dGVyRGF0YSk6CisgICAgICAgICogZG9tL0NvbW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29tbWVudDo6Q29tbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDb21tZW50OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tbWVudDo6Y2xvbmVOb2RlSW50ZXJuYWwpOgorICAgICAgICAq
IGRvbS9Db21tZW50Lmg6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6c3RyaW5nUmVwbGFjZUFsbCk6CisgICAgICAgICog
ZG9tL0NvbnRhaW5lck5vZGUuaDoKKyAgICAgICAgKiBkb20vRE9NSW1wbGVtZW50YXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZUhUTUxEb2N1bWVu
dCk6CisgICAgICAgICogZG9tL0RPTUltcGxlbWVudGF0aW9uLmg6CisgICAgICAgICogZG9tL0Rv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjcmVhdGVUZXh0Tm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlQ29tbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlQ0RBVEFTZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpjcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6c2V0VGl0bGUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAq
IGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6Omluc2VydEFkamFj
ZW50VGV4dCk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vSW1hZ2VP
dmVybGF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3ZlcmxheTo6aW5zdGFsbEltYWdl
T3ZlcmxheVN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5Ojp1cGRh
dGVTdWJ0cmVlKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlOjpjb252ZXJ0Tm9kZXNPclN0cmluZ3NJbnRvTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlOjpzZXRUZXh0Q29udGVudCk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKiBk
b20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3Np
bmdJbnN0cnVjdGlvbjo6UHJvY2Vzc2luZ0luc3RydWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nl
c3NpbmdJbnN0cnVjdGlvbjo6Y2xvbmVOb2RlSW50ZXJuYWwpOgorICAgICAgICAqIGRvbS9Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKiBkb20vVGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dDo6Y3JlYXRlRWRp
dGluZ1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dDo6Y2xvbmVOb2RlSW50ZXJuYWwpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dDo6dmlydHVhbENyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0OjpjcmVhdGVXaXRoTGVuZ3RoTGltaXQpOgorICAgICAgICAqIGRvbS9UZXh0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0OjpUZXh0KToKKyAgICAgICAgKiBkb20vbWFjL0ltYWdlQ29u
dHJvbHNNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VDb250cm9sc01hYzo6Y3JlYXRl
SW1hZ2VDb250cm9scyk6CisgICAgICAgICogZWRpdGluZy9DcmVhdGVMaW5rQ29tbWFuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDcmVhdGVMaW5rQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAg
ICogZWRpdGluZy9FZGl0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRhYlNwYW5F
bGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmcuaDoKKyAgICAgICAgKiBlZGl0aW5n
L0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnN0eWxlRm9yU2VsZWN0aW9u
U3RhcnQpOgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjpkb0FwcGx5KToKKyAgICAg
ICAgKiBlZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c2VydFRleHRDb21tYW5kOjpwb3NpdGlvbkluc2lkZVRleHROb2RlKToKKyAgICAgICAgKiBlZGl0
aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjphZGRTcGFjZXNGb3JTbWFydFJlcGxhY2UpOgorICAgICAgICAq
IGVkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnJlcGxhY2UpOgorICAgICAgICAqIGVkaXRp
bmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50RnJvbVRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRGb3JUcmFuc2Zvcm1Ub0ZyYWdtZW50
KToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5oOgorICAgICAgICAqIGh0bWwvQmFzZURhdGVB
bmRUaW1lSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlu
cHV0VHlwZTo6dXBkYXRlSW5uZXJUZXh0VmFsdWUpOgorICAgICAgICAqIGh0bWwvQmFzZURhdGVB
bmRUaW1lSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6YXBwZW5k
RW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmNy
ZWF0ZVRERm9yRmlsZW5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1l
bnRQYXJzZXI6OnBhcnNlQW5kQXBwZW5kT25lTGluZSk6CisgICAgICAgICogaHRtbC9IVE1MQW5j
aG9yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6c2V0
VGV4dCk6CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldElu
bmVyVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6c2V0T3V0ZXJUZXh0KToK
KyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWV0ZXJF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZXRlckVsZW1lbnQ6OmRpZEFkZFVz
ZXJBZ2VudFNoYWRvd1Jvb3QpOgorICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6OmNyZWF0ZUZvckxlZ2FjeUZh
Y3RvcnlGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6c2V0
VGV4dCk6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE91dHB1dEVs
ZW1lbnQ6OnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPdXRwdXRFbGVtZW50Ojpz
ZXREZWZhdWx0VmFsdWUpOgorICAgICAgICAqIGh0bWwvSFRNTE91dHB1dEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxTY3JpcHRFbGVtZW50OjpzZXRUZXh0KToKKyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVt
ZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldFZhbHVlQ29tbW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldERlZmF1bHRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojp1cGRhdGVQbGFjZWhvbGRlclRleHQpOgor
ICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQ6OnNldElubmVyVGV4dFZhbHVlKToKKyAgICAgICAgKiBodG1sL0hU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVGl0bGVFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUaXRsZUVsZW1lbnQ6OnNldFRleHQpOgor
ICAgICAgICAqIGh0bWwvSFRNTFRpdGxlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvVGV4dEZp
ZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6
dXBkYXRlUGxhY2Vob2xkZXJUZXh0KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9BdG9tSFRNTFRv
a2VuLmg6CisgICAgICAgIChXZWJDb3JlOjpBdG9tSFRNTFRva2VuOjpjb21tZW50KToKKyAgICAg
ICAgKiBodG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0Q29tbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0Q29tbWVudE9uRG9jdW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydENvbW1lbnRPbkhUTUxI
dG1sRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5z
ZXJ0VGV4dE5vZGUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0RhdGVUaW1lRWRpdEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVFZGl0QnVpbGRlcjo6dmlzaXRMaXRlcmFs
KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRlVGltZUZpZWxkRWxlbWVudDo6dXBkYXRlVmlzaWJsZVZhbHVlKToK
KyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0VHJhY2tDdWU6OnJlYnVpbGREaXNwbGF5VHJlZSk6CisgICAgICAgICogaHRtbC90cmFj
ay9WVFRDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VlRUQ3VlOjpnZXREaXNwbGF5VHJlZSk6
CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViVlRUVHJlZUJ1aWxkZXI6OmJ1aWxkRnJvbVN0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJWVFRUcmVlQnVpbGRlcjo6Y29uc3RydWN0VHJlZUZyb21Ub2tlbik6CisgICAgICAgICog
cGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2N1bWVudEZyYWdt
ZW50RnJvbURyYWdEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0RhdGVUaW1lRm9ybWF0
Lmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEYXRlVGltZVN0cmluZ0J1aWxkZXI6OnZpc2l0TGl0ZXJhbCk6CisgICAgICAg
ICogc3ZnL1NWR1RSZWZFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RSZWZFbGVt
ZW50Ojp1cGRhdGVSZWZlcmVuY2VkVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUUmVmRWxl
bWVudDo6ZGV0YWNoVGFyZ2V0KToKKyAgICAgICAgKiB4bWwvWE1MRXJyb3JzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6WE1MRXJyb3JzOjppbnNlcnRFcnJvck1lc3NhZ2VCbG9jayk6CisgICAgICAgICogeG1s
L1hNTFRyZWVWaWV3ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MVHJlZVZpZXdlcjo6dHJh
bnNmb3JtRG9jdW1lbnRUb1RyZWVWaWV3KToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3Nvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xUUHJvY2Vzc29yOjp0cmFuc2Zvcm1Ub0ZyYWdtZW50
KToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpjcmVhdGVMZWFmVGV4dE5vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlRG9jdW1lbnRGcmFnbWVudCk6CisK
IDIwMjItMDQtMTkgIEpvc2VwaCBHcmllZ28gIDxqZ3JpZWdvQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgRml4IHJ1bnRpbWUgZXhwb3NlIHNjb3BlIGNoZWNrIGZvciBzaGFkb3cgcmVhbG1zCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvQXRvbVN0cmluZy5oCmluZGV4IGJmNGJlNGQ5OWNkN2M0ZGU0ZWFkMDliNjQ3OWFmMTll
YWY1MjFjZGMuLjBhZGY1MjIzYmI2MDI5YzNkZTk4OWM2ODMxNzQwMTY2ZjA2YzcwNjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvQXRvbVN0cmluZy5oCkBAIC05Myw2ICs5Myw3IEBAIHB1YmxpYzoKIAogICAgIG9w
ZXJhdG9yIGNvbnN0IFN0cmluZyYoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQogICAgIGNv
bnN0IFN0cmluZyYgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH07CisgICAgU3Ry
aW5nIHJlbGVhc2VTdHJpbmcoKSB7IHJldHVybiBXVEZNb3ZlKG1fc3RyaW5nKTsgfQogCiAgICAg
Ly8gRklYTUU6IFdoYXQgZ3VhcmFudGVlcyB0aGlzIGlzbid0IGEgU3ltYm9sSW1wbCByYXRoZXIg
dGhhbiBhbiBBdG9tU3RyaW5nSW1wbD8KICAgICBBdG9tU3RyaW5nSW1wbCogaW1wbCgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEF0b21TdHJpbmdJbXBsKj4obV9zdHJpbmcuaW1wbCgpKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9uLmNwcAppbmRleCA3NTRmNDgyODhmZTE5NmEzZDI4
MmEyOTZkODc4ZDIzMzRkMzk3ODRiLi4yMDJkZDQ3MGYyMGQ3NjI3ZjhlNGI1Mjg5MjJhYzJlMDFi
ODY2YjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9uLmNwcApAQCAtMjksMTQgKzI5LDE0
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKENE
QVRBU2VjdGlvbik7CiAKLWlubGluZSBDREFUQVNlY3Rpb246OkNEQVRBU2VjdGlvbihEb2N1bWVu
dCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZGF0YSkKLSAgICA6IFRleHQoZG9jdW1lbnQsIGRh
dGEsIENyZWF0ZVRleHQpCitpbmxpbmUgQ0RBVEFTZWN0aW9uOjpDREFUQVNlY3Rpb24oRG9jdW1l
bnQmIGRvY3VtZW50LCBTdHJpbmcmJiBkYXRhKQorICAgIDogVGV4dChkb2N1bWVudCwgV1RGTW92
ZShkYXRhKSwgQ3JlYXRlVGV4dCkKIHsKIH0KIAotUmVmPENEQVRBU2VjdGlvbj4gQ0RBVEFTZWN0
aW9uOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGRhdGEpCitSZWY8
Q0RBVEFTZWN0aW9uPiBDREFUQVNlY3Rpb246OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFN0
cmluZyYmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ0RBVEFTZWN0aW9uKGRv
Y3VtZW50LCBkYXRhKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ0RBVEFTZWN0aW9uKGRv
Y3VtZW50LCBXVEZNb3ZlKGRhdGEpKSk7CiB9CiAKIFN0cmluZyBDREFUQVNlY3Rpb246Om5vZGVO
YW1lKCkgY29uc3QKQEAgLTUxLDcgKzUxLDcgQEAgTm9kZTo6Tm9kZVR5cGUgQ0RBVEFTZWN0aW9u
Ojpub2RlVHlwZSgpIGNvbnN0CiAKIFJlZjxOb2RlPiBDREFUQVNlY3Rpb246OmNsb25lTm9kZUlu
dGVybmFsKERvY3VtZW50JiB0YXJnZXREb2N1bWVudCwgQ2xvbmluZ09wZXJhdGlvbikKIHsKLSAg
ICByZXR1cm4gY3JlYXRlKHRhcmdldERvY3VtZW50LCBkYXRhKCkpOworICAgIHJldHVybiBjcmVh
dGUodGFyZ2V0RG9jdW1lbnQsIFN0cmluZyB7IGRhdGEoKSB9KTsKIH0KIAogYm9vbCBDREFUQVNl
Y3Rpb246OmNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNvbnN0CkBAIC01OSw5ICs1OSw5IEBA
IGJvb2wgQ0RBVEFTZWN0aW9uOjpjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdAogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotUmVmPFRleHQ+IENEQVRBU2VjdGlvbjo6dmlydHVhbENyZWF0
ZShjb25zdCBTdHJpbmcmIGRhdGEpCitSZWY8VGV4dD4gQ0RBVEFTZWN0aW9uOjp2aXJ0dWFsQ3Jl
YXRlKFN0cmluZyYmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZShkb2N1bWVudCgpLCBkYXRh
KTsKKyAgICByZXR1cm4gY3JlYXRlKGRvY3VtZW50KCksIFdURk1vdmUoZGF0YSkpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ0RB
VEFTZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9uLmgKaW5kZXggZDk0
MDVjYWUzNjlhZDc4ZmZjNzNhOTM4M2JmN2IxYzYzOWFkMzI1NC4uYTU5NjhjNDFkMmM4OTc1ZGQ1
Y2U4NTA3MTgxOTM2YzRlMTg3NmEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NE
QVRBU2VjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uaApAQCAt
MjksMTYgKzI5LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENEQVRBU2VjdGlvbiBm
aW5hbCA6IHB1YmxpYyBUZXh0IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKENEQVRBU2Vj
dGlvbik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDREFUQVNlY3Rpb24+IGNyZWF0ZShEb2N1
bWVudCYsIGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBSZWY8Q0RBVEFTZWN0aW9uPiBjcmVh
dGUoRG9jdW1lbnQmLCBTdHJpbmcmJik7CiAKIHByaXZhdGU6Ci0gICAgQ0RBVEFTZWN0aW9uKERv
Y3VtZW50JiwgY29uc3QgU3RyaW5nJik7CisgICAgQ0RBVEFTZWN0aW9uKERvY3VtZW50JiwgU3Ry
aW5nJiYpOwogCiAgICAgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgTm9k
ZVR5cGUgbm9kZVR5cGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBSZWY8Tm9kZT4gY2xvbmVOb2Rl
SW50ZXJuYWwoRG9jdW1lbnQmLCBDbG9uaW5nT3BlcmF0aW9uKSBvdmVycmlkZTsKICAgICBib29s
IGNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNvbnN0IG92ZXJyaWRlOwotICAgIFJlZjxUZXh0
PiB2aXJ0dWFsQ3JlYXRlKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIFJlZjxUZXh0PiB2
aXJ0dWFsQ3JlYXRlKFN0cmluZyYmKSBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5oCmluZGV4IDAzMWFmNDllMmNhZWU0ZGQ3
MzM4ZGJlMzBkMWE0ZDMxMzA4ZWY4OTYuLjUzYTRlYjk3M2IyMWM3M2E4OTk1Y2YzMzk0ZTY2Zjc3
ZDNlNGU3MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaApAQCAtNDUsOSArNDUsOSBA
QCBwdWJsaWM6CiAgICAgdW5zaWduZWQgcGFyc2VyQXBwZW5kRGF0YShjb25zdCBTdHJpbmcmIHN0
cmluZywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGhMaW1pdCk7CiAKIHByb3RlY3Rl
ZDoKLSAgICBDaGFyYWN0ZXJEYXRhKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0
ZXh0LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUgPSBDcmVhdGVDaGFyYWN0ZXJEYXRhKQorICAgIENo
YXJhY3RlckRhdGEoRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmcmJiB0ZXh0LCBDb25zdHJ1Y3Rp
b25UeXBlIHR5cGUgPSBDcmVhdGVDaGFyYWN0ZXJEYXRhKQogICAgICAgICA6IE5vZGUoZG9jdW1l
bnQsIHR5cGUpCi0gICAgICAgICwgbV9kYXRhKCF0ZXh0LmlzTnVsbCgpID8gdGV4dCA6IGVtcHR5
U3RyaW5nKCkpCisgICAgICAgICwgbV9kYXRhKCF0ZXh0LmlzTnVsbCgpID8gV1RGTW92ZSh0ZXh0
KSA6IGVtcHR5U3RyaW5nKCkpCiAgICAgewogICAgICAgICBBU1NFUlQodHlwZSA9PSBDcmVhdGVD
aGFyYWN0ZXJEYXRhIHx8IHR5cGUgPT0gQ3JlYXRlVGV4dCB8fCB0eXBlID09IENyZWF0ZUVkaXRp
bmdUZXh0KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tbWVudC5jcHAKaW5kZXggOGEzZTMyZjc3MzkzNDkx
ZjI1MzIyMzA3ZGQxNjQ4ZmVjMTZlYmY5Yi4uYWY4ODc2YjE5MmY1OTZiNjU0ODE2NzAyZDIxMjFh
ODdkZDZlODRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21tZW50LmNwcApAQCAtMjksMTQgKzI5LDE0IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKENvbW1lbnQp
OwogCi1pbmxpbmUgQ29tbWVudDo6Q29tbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0
cmluZyYgdGV4dCkKLSAgICA6IENoYXJhY3RlckRhdGEoZG9jdW1lbnQsIHRleHQpCitpbmxpbmUg
Q29tbWVudDo6Q29tbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZyYmIHRleHQpCisgICAg
OiBDaGFyYWN0ZXJEYXRhKGRvY3VtZW50LCBXVEZNb3ZlKHRleHQpKQogewogfQogCi1SZWY8Q29t
bWVudD4gQ29tbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0
ZXh0KQorUmVmPENvbW1lbnQ+IENvbW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFN0
cmluZyYmIHRleHQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29tbWVudChkb2N1bWVu
dCwgdGV4dCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbW1lbnQoZG9jdW1lbnQsIFdU
Rk1vdmUodGV4dCkpKTsKIH0KIAogU3RyaW5nIENvbW1lbnQ6Om5vZGVOYW1lKCkgY29uc3QKQEAg
LTUxLDcgKzUxLDcgQEAgTm9kZTo6Tm9kZVR5cGUgQ29tbWVudDo6bm9kZVR5cGUoKSBjb25zdAog
CiBSZWY8Tm9kZT4gQ29tbWVudDo6Y2xvbmVOb2RlSW50ZXJuYWwoRG9jdW1lbnQmIHRhcmdldERv
Y3VtZW50LCBDbG9uaW5nT3BlcmF0aW9uKQogewotICAgIHJldHVybiBjcmVhdGUodGFyZ2V0RG9j
dW1lbnQsIGRhdGEoKSk7CisgICAgcmV0dXJuIGNyZWF0ZSh0YXJnZXREb2N1bWVudCwgU3RyaW5n
IHsgZGF0YSgpIH0pOwogfQogCiBib29sIENvbW1lbnQ6OmNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5
cGUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQuaAppbmRleCBkNGMxZTk1ZDU0YTY5MjUzMTBkNjA4OTA3
Mjk1NjBmZDBkYWJjMjU1Li4yNzdkMmMyNjNiZWZlNjFjZWM5YmIwNTYxNjk3MjA1NTJiNmQ1N2Vj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db21tZW50LmgKQEAgLTI5LDEwICsyOSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBDb21tZW50IGZpbmFsIDogcHVibGljIENoYXJhY3RlckRhdGEgewogICAgIFdU
Rl9NQUtFX0lTT19BTExPQ0FURUQoQ29tbWVudCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxD
b21tZW50PiBjcmVhdGUoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgUmVm
PENvbW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYsIFN0cmluZyYmKTsKIAogcHJpdmF0ZToKLSAgICBD
b21tZW50KERvY3VtZW50JiwgY29uc3QgU3RyaW5nJik7CisgICAgQ29tbWVudChEb2N1bWVudCYs
IFN0cmluZyYmKTsKIAogICAgIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5jcHAKaW5kZXggNjQxYTc4NzdkYzA1Nzk5M2FhYmNkMWI0NzE1ZGVjODg4YjNhMmYz
Yy4uZDU0MDQxYjUwOTFkNmVlNzBhNTcyZGRhNmM0Y2E3MmI5MWU1ZTJkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtNzI0LDkgKzcyNCw5IEBAIHZvaWQgQ29udGFpbmVy
Tm9kZTo6cmVwbGFjZUFsbChOb2RlKiBub2RlKQogfQogCiAvLyBodHRwczovL2RvbS5zcGVjLndo
YXR3Zy5vcmcvI3N0cmluZy1yZXBsYWNlLWFsbAotdm9pZCBDb250YWluZXJOb2RlOjpzdHJpbmdS
ZXBsYWNlQWxsKGNvbnN0IFN0cmluZyYgc3RyaW5nKQordm9pZCBDb250YWluZXJOb2RlOjpzdHJp
bmdSZXBsYWNlQWxsKFN0cmluZyYmIHN0cmluZykKIHsKLSAgICByZXBsYWNlQWxsKHN0cmluZy5p
c0VtcHR5KCkgPyBudWxscHRyIDogZG9jdW1lbnQoKS5jcmVhdGVUZXh0Tm9kZShzdHJpbmcpLnB0
cigpKTsKKyAgICByZXBsYWNlQWxsKHN0cmluZy5pc0VtcHR5KCkgPyBudWxscHRyIDogZG9jdW1l
bnQoKS5jcmVhdGVUZXh0Tm9kZShXVEZNb3ZlKHN0cmluZykpLnB0cigpKTsKIH0KIAogaW5saW5l
IHZvaWQgQ29udGFpbmVyTm9kZTo6cmVidWlsZFNWR0V4dGVuc2lvbnNFbGVtZW50c0lmTmVjZXNz
YXJ5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCmluZGV4IDgwODNkNDI2ZjAxZGZlNWM1
NDhiMzFkYmQxNmNlZmFhNGU5MDU0YjAuLjExOTRlMzZhZGVlYWVhZDE3YjY4YTQxZjFkNmUzMjY2
MDgzMzkzNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaApAQCAtNTcsNyArNTcsNyBA
QCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVwbGFjZUNoaWxkKE5vZGUmIG5ld0No
aWxkLCBOb2RlJiBvbGRDaGlsZCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9p
ZD4gcmVtb3ZlQ2hpbGQoTm9kZSYgY2hpbGQpOwogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlv
bk9yPHZvaWQ+IGFwcGVuZENoaWxkKE5vZGUmIG5ld0NoaWxkKTsKLSAgICB2b2lkIHN0cmluZ1Jl
cGxhY2VBbGwoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzdHJpbmdSZXBsYWNlQWxsKFN0cmlu
ZyYmKTsKICAgICB2b2lkIHJlcGxhY2VBbGwoTm9kZSopOwogCiAgICAgQ29udGFpbmVyTm9kZSYg
cm9vdE5vZGUoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxDb250YWluZXJOb2RlPihOb2RlOjpy
b290Tm9kZSgpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVu
dGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKaW5k
ZXggNTg0MzViYzNmY2FkM2NkYTc4OTcwYTIxMWU3NjJiZmNjZjAxMmY3NS4uNjhkZGQ2YzkzMzY1
ZTlhYzliZmRlNTcyOTI2ZjVlODZlM2U5YWQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1w
bGVtZW50YXRpb24uY3BwCkBAIC0xMjMsMTQgKzEyMywxNCBAQCBSZWY8Q1NTU3R5bGVTaGVldD4g
RE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZUNTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiwgY29u
c3QgUwogICAgIHJldHVybiBzaGVldDsKIH0KIAotUmVmPEhUTUxEb2N1bWVudD4gRE9NSW1wbGVt
ZW50YXRpb246OmNyZWF0ZUhUTUxEb2N1bWVudChjb25zdCBTdHJpbmcmIHRpdGxlKQorUmVmPEhU
TUxEb2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZUhUTUxEb2N1bWVudChTdHJpbmcm
JiB0aXRsZSkKIHsKICAgICBhdXRvIGRvY3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGUobnVs
bHB0ciwgbV9kb2N1bWVudC5zZXR0aW5ncygpLCBVUkwoKSwgeyB9KTsKICAgICBkb2N1bWVudC0+
b3BlbigpOwogICAgIGRvY3VtZW50LT53cml0ZShudWxscHRyLCB7ICI8IWRvY3R5cGUgaHRtbD48
aHRtbD48aGVhZD48L2hlYWQ+PGJvZHk+PC9ib2R5PjwvaHRtbD4iX3MgfSk7CiAgICAgaWYgKCF0
aXRsZS5pc051bGwoKSkgewogICAgICAgICBhdXRvIHRpdGxlRWxlbWVudCA9IEhUTUxUaXRsZUVs
ZW1lbnQ6OmNyZWF0ZSh0aXRsZVRhZywgZG9jdW1lbnQpOwotICAgICAgICB0aXRsZUVsZW1lbnQt
PmFwcGVuZENoaWxkKGRvY3VtZW50LT5jcmVhdGVUZXh0Tm9kZSh0aXRsZSkpOworICAgICAgICB0
aXRsZUVsZW1lbnQtPmFwcGVuZENoaWxkKGRvY3VtZW50LT5jcmVhdGVUZXh0Tm9kZShXVEZNb3Zl
KHRpdGxlKSkpOwogICAgICAgICBBU1NFUlQoZG9jdW1lbnQtPmhlYWQoKSk7CiAgICAgICAgIGRv
Y3VtZW50LT5oZWFkKCktPmFwcGVuZENoaWxkKHRpdGxlRWxlbWVudCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaAppbmRleCBlODllMmZlNjM1ZjlhNzNmYjFhMmIw
ZjY0MWMwOTk0ODNkNTczMDY2Li4yNzJhNjRlY2E2YmQxMWFhNmYzNTYwOGRmY2RiNmQxOTI5YTI4
Zjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaApAQCAtNDAsNyArNDAs
NyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxSZWY8RG9jdW1l
bnRUeXBlPj4gY3JlYXRlRG9jdW1lbnRUeXBlKGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwg
Y29uc3QgU3RyaW5nJiBwdWJsaWNJZCwgY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVmPFhNTERvY3VtZW50Pj4gY3JlYXRlRG9jdW1lbnQo
Y29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwg
RG9jdW1lbnRUeXBlKik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmPEhUTUxEb2N1bWVudD4gY3Jl
YXRlSFRNTERvY3VtZW50KGNvbnN0IFN0cmluZyYgdGl0bGUpOworICAgIFdFQkNPUkVfRVhQT1JU
IFJlZjxIVE1MRG9jdW1lbnQ+IGNyZWF0ZUhUTUxEb2N1bWVudChTdHJpbmcmJiB0aXRsZSk7CiAg
ICAgc3RhdGljIGJvb2wgaGFzRmVhdHVyZSgpIHsgcmV0dXJuIHRydWU7IH0KICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZUNTU1N0eWxlU2hlZXQoY29u
c3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBtZWRpYSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCmluZGV4IDU0ZGM0NTlmM2I1MmUyNTAyOTg2NzM2MDAwMmVkOWVjNDZlMDJhYjguLmEy
N2I0MzE0YzQwMDViMzBhOGQyNTJlN2EyZWNmNjUzZDM1NzcyNzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcApAQCAtMTA2OSwxNyArMTA2OSwxNyBAQCBSZWY8RG9jdW1lbnRGcmFnbWVudD4gRG9j
dW1lbnQ6OmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKQogICAgIHJldHVybiBEb2N1bWVudEZyYWdt
ZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CiB9CiAKLVJlZjxUZXh0PiBEb2N1bWVudDo6Y3JlYXRl
VGV4dE5vZGUoY29uc3QgU3RyaW5nJiBkYXRhKQorUmVmPFRleHQ+IERvY3VtZW50OjpjcmVhdGVU
ZXh0Tm9kZShTdHJpbmcmJiBkYXRhKQogewotICAgIHJldHVybiBUZXh0OjpjcmVhdGUoKnRoaXMs
IGRhdGEpOworICAgIHJldHVybiBUZXh0OjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoZGF0YSkpOwog
fQogCi1SZWY8Q29tbWVudD4gRG9jdW1lbnQ6OmNyZWF0ZUNvbW1lbnQoY29uc3QgU3RyaW5nJiBk
YXRhKQorUmVmPENvbW1lbnQ+IERvY3VtZW50OjpjcmVhdGVDb21tZW50KFN0cmluZyYmIGRhdGEp
CiB7Ci0gICAgcmV0dXJuIENvbW1lbnQ6OmNyZWF0ZSgqdGhpcywgZGF0YSk7CisgICAgcmV0dXJu
IENvbW1lbnQ6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShkYXRhKSk7CiB9CiAKLUV4Y2VwdGlvbk9y
PFJlZjxDREFUQVNlY3Rpb24+PiBEb2N1bWVudDo6Y3JlYXRlQ0RBVEFTZWN0aW9uKGNvbnN0IFN0
cmluZyYgZGF0YSkKK0V4Y2VwdGlvbk9yPFJlZjxDREFUQVNlY3Rpb24+PiBEb2N1bWVudDo6Y3Jl
YXRlQ0RBVEFTZWN0aW9uKFN0cmluZyYmIGRhdGEpCiB7CiAgICAgaWYgKGlzSFRNTERvY3VtZW50
KCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OwpAQCAt
MTA4NywxMCArMTA4NywxMCBAQCBFeGNlcHRpb25PcjxSZWY8Q0RBVEFTZWN0aW9uPj4gRG9jdW1l
bnQ6OmNyZWF0ZUNEQVRBU2VjdGlvbihjb25zdCBTdHJpbmcmIGRhdGEpCiAgICAgaWYgKGRhdGEu
Y29udGFpbnMoIl1dPiIpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZENoYXJh
Y3RlckVycm9yIH07CiAKLSAgICByZXR1cm4gQ0RBVEFTZWN0aW9uOjpjcmVhdGUoKnRoaXMsIGRh
dGEpOworICAgIHJldHVybiBDREFUQVNlY3Rpb246OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShkYXRh
KSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24+PiBEb2N1bWVu
dDo6Y3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25z
dCBTdHJpbmcmIGRhdGEpCitFeGNlcHRpb25PcjxSZWY8UHJvY2Vzc2luZ0luc3RydWN0aW9uPj4g
RG9jdW1lbnQ6OmNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihTdHJpbmcmJiB0YXJnZXQsIFN0
cmluZyYmIGRhdGEpCiB7CiAgICAgaWYgKCFpc1ZhbGlkTmFtZSh0YXJnZXQpKQogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZENoYXJhY3RlckVycm9yIH07CkBAIC0xMDk4LDEyICsx
MDk4LDEyIEBAIEV4Y2VwdGlvbk9yPFJlZjxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24+PiBEb2N1bWVu
dDo6Y3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uKGNvCiAgICAgaWYgKGRhdGEuY29udGFpbnMo
Ij8+IikpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQ2hhcmFjdGVyRXJyb3Ig
fTsKIAotICAgIHJldHVybiBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNyZWF0ZSgqdGhpcywgdGFy
Z2V0LCBkYXRhKTsKKyAgICByZXR1cm4gUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjcmVhdGUoKnRo
aXMsIFdURk1vdmUodGFyZ2V0KSwgV1RGTW92ZShkYXRhKSk7CiB9CiAKLVJlZjxUZXh0PiBEb2N1
bWVudDo6Y3JlYXRlRWRpdGluZ1RleHROb2RlKGNvbnN0IFN0cmluZyYgdGV4dCkKK1JlZjxUZXh0
PiBEb2N1bWVudDo6Y3JlYXRlRWRpdGluZ1RleHROb2RlKFN0cmluZyYmIHRleHQpCiB7Ci0gICAg
cmV0dXJuIFRleHQ6OmNyZWF0ZUVkaXRpbmdUZXh0KCp0aGlzLCB0ZXh0KTsKKyAgICByZXR1cm4g
VGV4dDo6Y3JlYXRlRWRpdGluZ1RleHQoKnRoaXMsIFdURk1vdmUodGV4dCkpOwogfQogCiBSZWY8
Q1NTU3R5bGVEZWNsYXJhdGlvbj4gRG9jdW1lbnQ6OmNyZWF0ZUNTU1N0eWxlRGVjbGFyYXRpb24o
KQpAQCAtMTczMSw3ICsxNzMxLDcgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlVGl0bGVGcm9tVGl0
bGVFbGVtZW50KCkKICAgICB9CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNldFRpdGxlKGNvbnN0IFN0
cmluZyYgdGl0bGUpCit2b2lkIERvY3VtZW50OjpzZXRUaXRsZShTdHJpbmcmJiB0aXRsZSkKIHsK
ICAgICBSZWZQdHIgZWxlbWVudCA9IGRvY3VtZW50RWxlbWVudCgpOwogICAgIGlmIChpczxTVkdT
VkdFbGVtZW50PihlbGVtZW50KSkgewpAQCAtMTc0MSw3ICsxNzQxLDcgQEAgdm9pZCBEb2N1bWVu
dDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICAgICAgfQogICAgICAgICAvLyBp
bnNlcnRCZWZvcmUgYWJvdmUgbWF5IGhhdmUgcmFuIHNjcmlwdHMgd2hpY2ggcmVtb3ZlZCBtX3Rp
dGxlRWxlbWVudC4KICAgICAgICAgaWYgKG1fdGl0bGVFbGVtZW50KQotICAgICAgICAgICAgbV90
aXRsZUVsZW1lbnQtPnNldFRleHRDb250ZW50KHRpdGxlKTsKKyAgICAgICAgICAgIG1fdGl0bGVF
bGVtZW50LT5zZXRUZXh0Q29udGVudChXVEZNb3ZlKHRpdGxlKSk7CiAgICAgfSBlbHNlIGlmIChp
czxIVE1MRWxlbWVudD4oZWxlbWVudCkpIHsKICAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IG9sZFRpdGxlOwogICAgICAgICBpZiAoIW1fdGl0bGVFbGVtZW50KSB7CkBAIC0xNzU3LDcgKzE3
NTcsNyBAQCB2b2lkIERvY3VtZW50OjpzZXRUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQogICAg
ICAgICBpZiAoIW1fdGl0bGVFbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuOwogICAgIAotICAg
ICAgICBtX3RpdGxlRWxlbWVudC0+c2V0VGV4dENvbnRlbnQodGl0bGUpOworICAgICAgICBtX3Rp
dGxlRWxlbWVudC0+c2V0VGV4dENvbnRlbnQoU3RyaW5nIHsgdGl0bGUgfSk7CiAgICAgICAgIGF1
dG8qIHRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyID0gdGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xs
ZXJJZkV4aXN0cygpOwogICAgICAgICBpZiAoVU5MSUtFTFkodGV4dE1hbmlwdWxhdGlvbkNvbnRy
b2xsZXIpKSB7CiAgICAgICAgICAgICBpZiAoIW9sZFRpdGxlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApp
bmRleCA5NTFkYWUyYjBkNTk2ZGVmNTYzN2FlMTQ2OTViYzIyMDYwOTNmYWNmLi4xNGZiYTU2ZTY2
NmQ3OGQ3Mzg5NTQwYTc3MDIxNTRjZGM3OTc0Y2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAt
NDM1LDEwICs0MzUsMTAgQEAgcHVibGljOgogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2Vw
dGlvbk9yPFJlZjxFbGVtZW50Pj4gY3JlYXRlRWxlbWVudEZvckJpbmRpbmdzKGNvbnN0IEF0b21T
dHJpbmcmIHRhZ05hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxEb2N1bWVudEZyYWdtZW50
PiBjcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmPFRleHQ+
IGNyZWF0ZVRleHROb2RlKGNvbnN0IFN0cmluZyYgZGF0YSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
UmVmPENvbW1lbnQ+IGNyZWF0ZUNvbW1lbnQoY29uc3QgU3RyaW5nJiBkYXRhKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBFeGNlcHRpb25PcjxSZWY8Q0RBVEFTZWN0aW9uPj4gY3JlYXRlQ0RBVEFTZWN0
aW9uKGNvbnN0IFN0cmluZyYgZGF0YSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8
UmVmPFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4+IGNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihj
b25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBkYXRhKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBSZWY8VGV4dD4gY3JlYXRlVGV4dE5vZGUoU3RyaW5nJiYgZGF0YSk7CisgICAgV0VCQ09S
RV9FWFBPUlQgUmVmPENvbW1lbnQ+IGNyZWF0ZUNvbW1lbnQoU3RyaW5nJiYgZGF0YSk7CisgICAg
V0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVmPENEQVRBU2VjdGlvbj4+IGNyZWF0ZUNEQVRB
U2VjdGlvbihTdHJpbmcmJiBkYXRhKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxS
ZWY8UHJvY2Vzc2luZ0luc3RydWN0aW9uPj4gY3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uKFN0
cmluZyYmIHRhcmdldCwgU3RyaW5nJiYgZGF0YSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0
aW9uT3I8UmVmPEF0dHI+PiBjcmVhdGVBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVmPEF0dHI+PiBjcmVhdGVBdHRyaWJ1
dGVOUyhjb25zdCBBdG9tU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVhbGlm
aWVkTmFtZSwgYm9vbCBzaG91bGRJZ25vcmVOYW1lc3BhY2VDaGVja3MgPSBmYWxzZSk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVmPE5vZGU+PiBpbXBvcnROb2RlKE5vZGUmIG5v
ZGVUb0ltcG9ydCwgYm9vbCBkZWVwKTsKQEAgLTYxMiw3ICs2MTIsNyBAQCBwdWJsaWM6CiAKICAg
ICAvLyBTcGVjaWFsIHN1cHBvcnQgZm9yIGVkaXRpbmcKICAgICBXRUJDT1JFX0VYUE9SVCBSZWY8
Q1NTU3R5bGVEZWNsYXJhdGlvbj4gY3JlYXRlQ1NTU3R5bGVEZWNsYXJhdGlvbigpOwotICAgIFJl
ZjxUZXh0PiBjcmVhdGVFZGl0aW5nVGV4dE5vZGUoY29uc3QgU3RyaW5nJik7CisgICAgUmVmPFRl
eHQ+IGNyZWF0ZUVkaXRpbmdUZXh0Tm9kZShTdHJpbmcmJik7CiAKICAgICBlbnVtIGNsYXNzIFJl
c29sdmVTdHlsZVR5cGUgeyBOb3JtYWwsIFJlYnVpbGQgfTsKICAgICB2b2lkIHJlc29sdmVTdHls
ZShSZXNvbHZlU3R5bGVUeXBlID0gUmVzb2x2ZVN0eWxlVHlwZTo6Tm9ybWFsKTsKQEAgLTk2OCw3
ICs5NjgsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBVc2VkIGJ5IERPTSBiaW5kaW5nczsgbm8gZGly
ZWN0aW9uIGtub3duLgogICAgIGNvbnN0IFN0cmluZyYgdGl0bGUoKSBjb25zdCB7IHJldHVybiBt
X3RpdGxlLnN0cmluZzsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGl0bGUoY29uc3Qg
U3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUaXRsZShTdHJpbmcmJik7CiAg
ICAgY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGVXaXRoRGlyZWN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV90aXRsZTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgQXRvbVN0cmlu
ZyYgZGlyKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYjc1NjEzYzI5NjNjODdi
MjVmNTk1MjdjMWJjMmIzODQ3OWFhMzc1Yy4uMGMzOTY1OTBlYjBkMDBjNDU4ZjU2ZjY1Y2ViOGRl
MDBiZjBmYmIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNDY1Myw5ICs0NjUzLDkgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gRWxlbWVudDo6aW5zZXJ0QWRqYWNlbnRIVE1MKGNvbnN0IFN0cmlu
ZyYgd2hlcmUsIGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gaW5zZXJ0QWRqYWNlbnRIVE1MKHdo
ZXJlLCBtYXJrdXAsIG51bGxwdHIpOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBFbGVtZW50Ojpp
bnNlcnRBZGphY2VudFRleHQoY29uc3QgU3RyaW5nJiB3aGVyZSwgY29uc3QgU3RyaW5nJiB0ZXh0
KQorRXhjZXB0aW9uT3I8dm9pZD4gRWxlbWVudDo6aW5zZXJ0QWRqYWNlbnRUZXh0KGNvbnN0IFN0
cmluZyYgd2hlcmUsIFN0cmluZyYmIHRleHQpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBpbnNlcnRB
ZGphY2VudCh3aGVyZSwgZG9jdW1lbnQoKS5jcmVhdGVUZXh0Tm9kZSh0ZXh0KSk7CisgICAgYXV0
byByZXN1bHQgPSBpbnNlcnRBZGphY2VudCh3aGVyZSwgZG9jdW1lbnQoKS5jcmVhdGVUZXh0Tm9k
ZShXVEZNb3ZlKHRleHQpKSk7CiAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgcmV0dXJuIHsgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oCmluZGV4IGYyNTA5OGM3NjllNzkwZTFlMWUxNjkxNmJiMTQ2ZTAwNDU2NjQw
MDguLjJiM2UzOTlkYTQ3OTdjZTc2ODJjZTY1NTM1NDdmOWE0MzFiMmRjZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaApAQCAtMzcyLDcgKzM3Miw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JU
IEV4Y2VwdGlvbk9yPEVsZW1lbnQqPiBpbnNlcnRBZGphY2VudEVsZW1lbnQoY29uc3QgU3RyaW5n
JiB3aGVyZSwgRWxlbWVudCYgbmV3Q2hpbGQpOwogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlv
bk9yPHZvaWQ+IGluc2VydEFkamFjZW50SFRNTChjb25zdCBTdHJpbmcmIHdoZXJlLCBjb25zdCBT
dHJpbmcmIGh0bWwpOwotICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IGluc2Vy
dEFkamFjZW50VGV4dChjb25zdCBTdHJpbmcmIHdoZXJlLCBjb25zdCBTdHJpbmcmIHRleHQpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IGluc2VydEFkamFjZW50VGV4dChj
b25zdCBTdHJpbmcmIHdoZXJlLCBTdHJpbmcmJiB0ZXh0KTsKIAogICAgIGNvbnN0IFJlbmRlclN0
eWxlKiBjb21wdXRlZFN0eWxlKFBzZXVkb0lkID0gUHNldWRvSWQ6Ok5vbmUpIG92ZXJyaWRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW1hZ2VPdmVybGF5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9JbWFnZU92ZXJsYXkuY3BwCmluZGV4IGUwNGM3NjY5YjYzNGMwMzY3ZjYy
NzgwOWRmMTZmYzM0NDU2NTZlNjkuLjc4NGI1YWVjMDgzMDhkODAwNzk2MjYzMWFmMjgxNDIzNDNj
YmQ0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbWFnZU92ZXJsYXkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbWFnZU92ZXJsYXkuY3BwCkBAIC0yMzEsNyArMjMxLDcg
QEAgc3RhdGljIHZvaWQgaW5zdGFsbEltYWdlT3ZlcmxheVN0eWxlU2hlZXQoU2hhZG93Um9vdCYg
c2hhZG93Um9vdCkKIHsKICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0
IFN0cmluZz4gc2hhZG93U3R5bGUoU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoaW1h
Z2VPdmVybGF5VXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKGltYWdlT3ZlcmxheVVzZXJBZ2Vu
dFN0eWxlU2hlZXQpKSk7CiAgICAgYXV0byBzdHlsZSA9IEhUTUxTdHlsZUVsZW1lbnQ6OmNyZWF0
ZShIVE1MTmFtZXM6OnN0eWxlVGFnLCBzaGFkb3dSb290LmRvY3VtZW50KCksIGZhbHNlKTsKLSAg
ICBzdHlsZS0+c2V0VGV4dENvbnRlbnQoc2hhZG93U3R5bGUpOworICAgIHN0eWxlLT5zZXRUZXh0
Q29udGVudChTdHJpbmcgeyBzaGFkb3dTdHlsZSB9KTsKICAgICBzaGFkb3dSb290LmFwcGVuZENo
aWxkKFdURk1vdmUoc3R5bGUpKTsKIH0KIApAQCAtMzk3LDcgKzM5Nyw3IEBAIHN0YXRpYyBFbGVt
ZW50cyB1cGRhdGVTdWJ0cmVlKEhUTUxFbGVtZW50JiBlbGVtZW50LCBjb25zdCBUZXh0UmVjb2du
aXRpb25SZXN1bHQmCiAgICAgICAgICAgICAgICAgYXV0byB0ZXh0Q29udGFpbmVyID0gSFRNTERp
dkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudC5nZXQoKSk7CiAgICAgICAgICAgICAgICAgdGV4dENv
bnRhaW5lci0+Y2xhc3NMaXN0KCkuYWRkKGltYWdlT3ZlcmxheVRleHRDbGFzcygpKTsKICAgICAg
ICAgICAgICAgICBsaW5lQ29udGFpbmVyLT5hcHBlbmRDaGlsZCh0ZXh0Q29udGFpbmVyKTsKLSAg
ICAgICAgICAgICAgICB0ZXh0Q29udGFpbmVyLT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9j
dW1lbnQuZ2V0KCksIGNoaWxkLmhhc0xlYWRpbmdXaGl0ZXNwYWNlID8gbWFrZVN0cmluZygnXG4n
LCBjaGlsZC50ZXh0KSA6IGNoaWxkLnRleHQpKTsKKyAgICAgICAgICAgICAgICB0ZXh0Q29udGFp
bmVyLT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCksIGNoaWxkLmhhc0xl
YWRpbmdXaGl0ZXNwYWNlID8gbWFrZVN0cmluZygnXG4nLCBjaGlsZC50ZXh0KSA6IFN0cmluZyB7
IGNoaWxkLnRleHQgfSkpOwogICAgICAgICAgICAgICAgIGxpbmVFbGVtZW50cy5jaGlsZHJlbi51
bmNoZWNrZWRBcHBlbmQoV1RGTW92ZSh0ZXh0Q29udGFpbmVyKSk7CiAgICAgICAgICAgICB9CiAK
QEAgLTQyNCwxMCArNDI0LDEwIEBAIHN0YXRpYyBFbGVtZW50cyB1cGRhdGVTdWJ0cmVlKEhUTUxF
bGVtZW50JiBlbGVtZW50LCBjb25zdCBUZXh0UmVjb2duaXRpb25SZXN1bHQmCiAgICAgICAgICAg
ICBhdXRvIGJsb2NrQ29udGFpbmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudC5n
ZXQoKSk7CiAgICAgICAgICAgICBibG9ja0NvbnRhaW5lci0+Y2xhc3NMaXN0KCkuYWRkKGltYWdl
T3ZlcmxheUJsb2NrQ2xhc3MoKSk7CiAgICAgICAgICAgICBhdXRvIGxpbmVzID0gYmxvY2sudGV4
dC5zcGxpdChuZXdsaW5lQ2hhcmFjdGVyKTsKLSAgICAgICAgICAgIGZvciAoYXV0byYgdGV4dENv
bnRlbnQgOiBsaW5lcykgeworICAgICAgICAgICAgZm9yIChhdXRvJiYgdGV4dENvbnRlbnQgOiBX
VEZNb3ZlKGxpbmVzKSkgewogICAgICAgICAgICAgICAgIGlmIChibG9ja0NvbnRhaW5lci0+aGFz
Q2hpbGROb2RlcygpKQogICAgICAgICAgICAgICAgICAgICBibG9ja0NvbnRhaW5lci0+YXBwZW5k
Q2hpbGQoSFRNTEJSRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LmdldCgpKSk7Ci0gICAgICAgICAg
ICAgICAgYmxvY2tDb250YWluZXItPmFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVudC5n
ZXQoKSwgdGV4dENvbnRlbnQpKTsKKyAgICAgICAgICAgICAgICBibG9ja0NvbnRhaW5lci0+YXBw
ZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50LmdldCgpLCBXVEZNb3ZlKHRleHRDb250ZW50
KSkpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBjb25zdGV4cHIgYXV0byBtYXhMaW5l
Q291bnRGb3JDZW50ZXJBbGlnbmVkVGV4dCA9IDI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggY2I0N2Vh
YWVjMGRlNzA1YjM0ODM2ZjU3MDI3YjRkYzE1NzhiOTUxZS4uM2FlYTBiNDU5ZWY1ODFkZTBhMzQy
MjEzNzk5YzE1ZGI3NjUxZDVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtNTUyLDcgKzU1Miw3IEBA
IEV4Y2VwdGlvbk9yPFJlZlB0cjxOb2RlPj4gTm9kZTo6Y29udmVydE5vZGVzT3JTdHJpbmdzSW50
b05vZGUoRml4ZWRWZWN0b3I8Tm9kZU9yCiAgICAgZm9yIChhdXRvJiB2YXJpYW50IDogbm9kZU9y
U3RyaW5nVmVjdG9yKSB7CiAgICAgICAgIFdURjo6c3dpdGNoT24odmFyaWFudCwKICAgICAgICAg
ICAgIFsmXShSZWZQdHI8Tm9kZT4mIG5vZGUpIHsgbm9kZXMudW5jaGVja2VkQXBwZW5kKCpub2Rl
LmdldCgpKTsgfSwKLSAgICAgICAgICAgIFsmXShTdHJpbmcmIHN0cmluZykgeyBub2Rlcy51bmNo
ZWNrZWRBcHBlbmQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50KCksIHN0cmluZykpOyB9CisgICAgICAg
ICAgICBbJl0oU3RyaW5nJiBzdHJpbmcpIHsgbm9kZXMudW5jaGVja2VkQXBwZW5kKFRleHQ6OmNy
ZWF0ZShkb2N1bWVudCgpLCBXVEZNb3ZlKHN0cmluZykpKTsgfQogICAgICAgICApOwogICAgIH0K
IApAQCAtMTU5MCw3ICsxNTkwLDcgQEAgU3RyaW5nIE5vZGU6OnRleHRDb250ZW50KGJvb2wgY29u
dmVydEJSc1RvTmV3bGluZXMpIGNvbnN0CiAgICAgcmV0dXJuIGlzTnVsbFN0cmluZyA/IFN0cmlu
ZygpIDogY29udGVudC50b1N0cmluZygpOwogfQogCi12b2lkIE5vZGU6OnNldFRleHRDb250ZW50
KGNvbnN0IFN0cmluZyYgdGV4dCkKK3ZvaWQgTm9kZTo6c2V0VGV4dENvbnRlbnQoU3RyaW5nJiYg
dGV4dCkKIHsgICAgICAgICAgIAogICAgIHN3aXRjaCAobm9kZVR5cGUoKSkgewogICAgIGNhc2Ug
QVRUUklCVVRFX05PREU6CkBAIC0xNTk4LDExICsxNTk4LDExIEBAIHZvaWQgTm9kZTo6c2V0VGV4
dENvbnRlbnQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIGNhc2UgQ0RBVEFfU0VDVElPTl9OT0RF
OgogICAgIGNhc2UgQ09NTUVOVF9OT0RFOgogICAgIGNhc2UgUFJPQ0VTU0lOR19JTlNUUlVDVElP
Tl9OT0RFOgotICAgICAgICBzZXROb2RlVmFsdWUodGV4dCk7CisgICAgICAgIHNldE5vZGVWYWx1
ZShXVEZNb3ZlKHRleHQpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRUxFTUVOVF9OT0RF
OgogICAgIGNhc2UgRE9DVU1FTlRfRlJBR01FTlRfTk9ERToKLSAgICAgICAgZG93bmNhc3Q8Q29u
dGFpbmVyTm9kZT4oKnRoaXMpLnN0cmluZ1JlcGxhY2VBbGwodGV4dCk7CisgICAgICAgIGRvd25j
YXN0PENvbnRhaW5lck5vZGU+KCp0aGlzKS5zdHJpbmdSZXBsYWNlQWxsKFdURk1vdmUodGV4dCkp
OwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBET0NVTUVOVF9OT0RFOgogICAgIGNhc2UgRE9D
VU1FTlRfVFlQRV9OT0RFOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggYTMzZTY4MjI2NWUzYTExYmE1YjU4MmMx
M2QwMGNhMjg4ZmFlMzVlMC4uYTg1NjAzMGJjMTFkYWM4MGUyMzlhNWEyNmVhOWQxM2Q4NWVmMmQx
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5oCkBAIC0xNzUsNyArMTc1LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIGNvbnN0IEF0b21TdHJpbmcmIGxvb2t1cE5hbWVzcGFjZVVSSShjb25zdCBBdG9tU3Ry
aW5nJiBwcmVmaXgpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRleHRDb250
ZW50KGJvb2wgY29udmVydEJSc1RvTmV3bGluZXMgPSBmYWxzZSkgY29uc3Q7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRUZXh0Q29udGVudChjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldFRleHRDb250ZW50KFN0cmluZyYmKTsKICAgICAKICAgICBOb2RlKiBs
YXN0RGVzY2VuZGFudCgpIGNvbnN0OwogICAgIE5vZGUqIGZpcnN0RGVzY2VuZGFudCgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAppbmRleCA5
NzQ2OTYyOWY5NDUzZTdkMTYzN2FhNTVhODM2NDFjZDRlMGVlZDNjLi5jMmYzYjczMDdkMGQwOTBh
MzNjYzcxNjZkYTYyMzQ5ZjUyYjUwY2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
UHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vz
c2luZ0luc3RydWN0aW9uLmNwcApAQCAtNDMsMTUgKzQzLDE1IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFByb2Nlc3NpbmdJbnN0cnVjdGlvbik7
CiAKLWlubGluZSBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OlByb2Nlc3NpbmdJbnN0cnVjdGlvbihE
b2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIGRh
dGEpCi0gICAgOiBDaGFyYWN0ZXJEYXRhKGRvY3VtZW50LCBkYXRhKQotICAgICwgbV90YXJnZXQo
dGFyZ2V0KQoraW5saW5lIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6UHJvY2Vzc2luZ0luc3RydWN0
aW9uKERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5nJiYgdGFyZ2V0LCBTdHJpbmcmJiBkYXRhKQor
ICAgIDogQ2hhcmFjdGVyRGF0YShkb2N1bWVudCwgV1RGTW92ZShkYXRhKSkKKyAgICAsIG1fdGFy
Z2V0KFdURk1vdmUodGFyZ2V0KSkKIHsKIH0KIAotUmVmPFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4g
UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBT
dHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBkYXRhKQorUmVmPFByb2Nlc3NpbmdJbnN0cnVj
dGlvbj4gUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBT
dHJpbmcmJiB0YXJnZXQsIFN0cmluZyYmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUHJvY2Vzc2luZ0luc3RydWN0aW9uKGRvY3VtZW50LCB0YXJnZXQsIGRhdGEpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oZG9jdW1lbnQsIFdURk1v
dmUodGFyZ2V0KSwgV1RGTW92ZShkYXRhKSkpOwogfQogCiBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246
On5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oKQpAQCAtODAsNyArODAsNyBAQCBSZWY8Tm9kZT4gUHJv
Y2Vzc2luZ0luc3RydWN0aW9uOjpjbG9uZU5vZGVJbnRlcm5hbChEb2N1bWVudCYgdGFyZ2V0RG9j
dW1lbnQsIENsbwogewogICAgIC8vIEZJWE1FOiBJcyBpdCBhIHByb2JsZW0gdGhhdCB0aGlzIGRv
ZXMgbm90IGNvcHkgbV9sb2NhbEhyZWY/CiAgICAgLy8gV2hhdCBhYm91dCBvdGhlciBkYXRhIG1l
bWJlcnM/Ci0gICAgcmV0dXJuIGNyZWF0ZSh0YXJnZXREb2N1bWVudCwgbV90YXJnZXQsIGRhdGEo
KSk7CisgICAgcmV0dXJuIGNyZWF0ZSh0YXJnZXREb2N1bWVudCwgU3RyaW5nIHsgbV90YXJnZXQg
fSwgU3RyaW5nIHsgZGF0YSgpIH0pOwogfQogCiB2b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6
Y2hlY2tTdHlsZVNoZWV0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24uaAppbmRleCA2NDBkYzRjOWQ5YTAyODc0MTRmZjcyOWE5YmJhZDM4MmYyNzY5YzEyLi43MzMx
YjI0YzE4ZWE2NTBlMWVjNzI0YTdhN2IzOWFjMDgyOWE5MjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIENTU1N0
eWxlU2hlZXQ7CiBjbGFzcyBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gZmluYWwgOiBwdWJsaWMgQ2hh
cmFjdGVyRGF0YSwgcHJpdmF0ZSBDYWNoZWRTdHlsZVNoZWV0Q2xpZW50IHsKICAgICBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEKFByb2Nlc3NpbmdJbnN0cnVjdGlvbik7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24+IGNyZWF0ZShEb2N1bWVudCYsIGNvbnN0IFN0
cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgIHN0YXRpYyBSZWY8UHJvY2Vz
c2luZ0luc3RydWN0aW9uPiBjcmVhdGUoRG9jdW1lbnQmLCBTdHJpbmcmJiB0YXJnZXQsIFN0cmlu
ZyYmIGRhdGEpOwogICAgIHZpcnR1YWwgflByb2Nlc3NpbmdJbnN0cnVjdGlvbigpOwogCiAgICAg
Y29uc3QgU3RyaW5nJiB0YXJnZXQoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldDsgfQpAQCAtNTMs
NyArNTMsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENoYXJhY3Rl
ckRhdGE7Ci0gICAgUHJvY2Vzc2luZ0luc3RydWN0aW9uKERvY3VtZW50JiwgY29uc3QgU3RyaW5n
JiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgZGF0YSk7CisgICAgUHJvY2Vzc2luZ0luc3RydWN0aW9u
KERvY3VtZW50JiwgU3RyaW5nJiYgdGFyZ2V0LCBTdHJpbmcmJiBkYXRhKTsKIAogICAgIFN0cmlu
ZyBub2RlTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29u
c3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKaW5kZXggNGI5MDNmOGZkZjJiYWQ5MzlkZGFiYTgw
Y2RlODgwNTQ0MTI5NzZlMi4uZTY3YjJiMjEwOTQ4Mzg0MmYwMDYxZTJmMjdiNmE2NjcyMjRmZGY0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9UZXh0LmNwcApAQCAtNDQsMTQgKzQ0LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFRleHQpOwogCi1SZWY8VGV4dD4gVGV4
dDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBkYXRhKQorUmVmPFRl
eHQ+IFRleHQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZyYmIGRhdGEpCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dChkb2N1bWVudCwgZGF0YSwgQ3JlYXRlVGV4dCkp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHQoZG9jdW1lbnQsIFdURk1vdmUoZGF0YSks
IENyZWF0ZVRleHQpKTsKIH0KIAotUmVmPFRleHQ+IFRleHQ6OmNyZWF0ZUVkaXRpbmdUZXh0KERv
Y3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBkYXRhKQorUmVmPFRleHQ+IFRleHQ6OmNy
ZWF0ZUVkaXRpbmdUZXh0KERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5nJiYgZGF0YSkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0KGRvY3VtZW50LCBkYXRhLCBDcmVhdGVFZGl0aW5n
VGV4dCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHQoZG9jdW1lbnQsIFdURk1vdmUo
ZGF0YSksIENyZWF0ZUVkaXRpbmdUZXh0KSk7CiB9CiAKIFRleHQ6On5UZXh0KCkgPSBkZWZhdWx0
OwpAQCAtMTYzLDcgKzE2Myw3IEBAIE5vZGU6Ok5vZGVUeXBlIFRleHQ6Om5vZGVUeXBlKCkgY29u
c3QKIAogUmVmPE5vZGU+IFRleHQ6OmNsb25lTm9kZUludGVybmFsKERvY3VtZW50JiB0YXJnZXRE
b2N1bWVudCwgQ2xvbmluZ09wZXJhdGlvbikKIHsKLSAgICByZXR1cm4gY3JlYXRlKHRhcmdldERv
Y3VtZW50LCBkYXRhKCkpOworICAgIHJldHVybiBjcmVhdGUodGFyZ2V0RG9jdW1lbnQsIFN0cmlu
ZyB7IGRhdGEoKSB9KTsKIH0KIAogc3RhdGljIGJvb2wgaXNTVkdTaGFkb3dUZXh0KFRleHQqIHRl
eHQpCkBAIC0xOTUsOSArMTk1LDkgQEAgYm9vbCBUZXh0OjpjaGlsZFR5cGVBbGxvd2VkKE5vZGVU
eXBlKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUmVmPFRleHQ+IFRleHQ6OnZpcnR1
YWxDcmVhdGUoY29uc3QgU3RyaW5nJiBkYXRhKQorUmVmPFRleHQ+IFRleHQ6OnZpcnR1YWxDcmVh
dGUoU3RyaW5nJiYgZGF0YSkKIHsKLSAgICByZXR1cm4gY3JlYXRlKGRvY3VtZW50KCksIGRhdGEp
OworICAgIHJldHVybiBjcmVhdGUoZG9jdW1lbnQoKSwgV1RGTW92ZShkYXRhKSk7CiB9CiAKIFJl
ZjxUZXh0PiBUZXh0OjpjcmVhdGVXaXRoTGVuZ3RoTGltaXQoRG9jdW1lbnQmIGRvY3VtZW50LCBj
b25zdCBTdHJpbmcmIGRhdGEsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGhMaW1pdCkK
QEAgLTIwNSw3ICsyMDUsNyBAQCBSZWY8VGV4dD4gVGV4dDo6Y3JlYXRlV2l0aExlbmd0aExpbWl0
KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBkYXRhLCB1bgogICAgIHVuc2lnbmVk
IGRhdGFMZW5ndGggPSBkYXRhLmxlbmd0aCgpOwogCiAgICAgaWYgKCFzdGFydCAmJiBkYXRhTGVu
Z3RoIDw9IGxlbmd0aExpbWl0KQotICAgICAgICByZXR1cm4gY3JlYXRlKGRvY3VtZW50LCBkYXRh
KTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZShkb2N1bWVudCwgU3RyaW5nIHsgZGF0YSB9KTsKIAog
ICAgIFJlZjxUZXh0PiByZXN1bHQgPSBUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIFN0cmluZygpKTsK
ICAgICByZXN1bHQtPnBhcnNlckFwcGVuZERhdGEoZGF0YSwgc3RhcnQsIGxlbmd0aExpbWl0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVGV4dC5oCmluZGV4IGViYzlkMTBjYzQ4ZTEwYTc3NmVmMTEyYzEzNmE1YzZiNDcxNzFiYjIu
LjYyYzc1Y2UxYzZmMmY3MmY5YjczNDdiZmFhZGY2N2JhNjM3YzQ1ZjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaApA
QCAtMzQsOSArMzQsOSBAQCBjbGFzcyBUZXh0IDogcHVibGljIENoYXJhY3RlckRhdGEgewogcHVi
bGljOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBkZWZhdWx0TGVuZ3RoTGltaXQgPSAxIDw8
IDE2OwogCi0gICAgc3RhdGljIFJlZjxUZXh0PiBjcmVhdGUoRG9jdW1lbnQmLCBjb25zdCBTdHJp
bmcmKTsKKyAgICBzdGF0aWMgUmVmPFRleHQ+IGNyZWF0ZShEb2N1bWVudCYsIFN0cmluZyYmKTsK
ICAgICBzdGF0aWMgUmVmPFRleHQ+IGNyZWF0ZVdpdGhMZW5ndGhMaW1pdChEb2N1bWVudCYsIGNv
bnN0IFN0cmluZyYsIHVuc2lnbmVkIHBvc2l0aW9uSW5TdHJpbmcsIHVuc2lnbmVkIGxlbmd0aExp
bWl0ID0gZGVmYXVsdExlbmd0aExpbWl0KTsKLSAgICBzdGF0aWMgUmVmPFRleHQ+IGNyZWF0ZUVk
aXRpbmdUZXh0KERvY3VtZW50JiwgY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIFJlZjxUZXh0
PiBjcmVhdGVFZGl0aW5nVGV4dChEb2N1bWVudCYsIFN0cmluZyYmKTsKIAogICAgIHZpcnR1YWwg
flRleHQoKTsKIApAQCAtNTksOCArNTksOCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGRlYnVnRGVz
Y3JpcHRpb24oKSBjb25zdCBmaW5hbDsKIAogcHJvdGVjdGVkOgotICAgIFRleHQoRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGRhdGEsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKLSAg
ICAgICAgOiBDaGFyYWN0ZXJEYXRhKGRvY3VtZW50LCBkYXRhLCB0eXBlKQorICAgIFRleHQoRG9j
dW1lbnQmIGRvY3VtZW50LCBTdHJpbmcmJiBkYXRhLCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCisg
ICAgICAgIDogQ2hhcmFjdGVyRGF0YShkb2N1bWVudCwgV1RGTW92ZShkYXRhKSwgdHlwZSkKICAg
ICB7CiAgICAgfQogCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjaGlsZFR5
cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldERhdGFBbmRV
cGRhdGUoY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgb2Zmc2V0T2ZSZXBsYWNlZERhdGEsIHVuc2ln
bmVkIG9sZExlbmd0aCwgdW5zaWduZWQgbmV3TGVuZ3RoLCBVcGRhdGVMaXZlUmFuZ2VzKSBmaW5h
bDsKIAotICAgIHZpcnR1YWwgUmVmPFRleHQ+IHZpcnR1YWxDcmVhdGUoY29uc3QgU3RyaW5nJik7
CisgICAgdmlydHVhbCBSZWY8VGV4dD4gdmlydHVhbENyZWF0ZShTdHJpbmcmJik7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFj
L0ltYWdlQ29udHJvbHNNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL21hYy9JbWFnZUNvbnRy
b2xzTWFjLmNwcAppbmRleCBiZTIzNjg4ZTMxYmUzNGE2MGIwYWJlYTc2M2I1YWJmZmFkYmU5ZWUx
Li5lYzA3Njg4MjEyZTAyYmZmMGIyYjEzMTJhZWZkODc3YzI1OGZmYzdkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vbWFjL0ltYWdlQ29udHJvbHNNYWMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9tYWMvSW1hZ2VDb250cm9sc01hYy5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgdm9p
ZCBjcmVhdGVJbWFnZUNvbnRyb2xzKEhUTUxFbGVtZW50JiBlbGVtZW50KQogICAgIAogICAgIHN0
YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBzaGFkb3dTdHlsZShT
dHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhpbWFnZUNvbnRyb2xzTWFjVXNlckFnZW50
U3R5bGVTaGVldCwgc2l6ZW9mKGltYWdlQ29udHJvbHNNYWNVc2VyQWdlbnRTdHlsZVNoZWV0KSkp
OwogICAgIGF1dG8gc3R5bGUgPSBIVE1MU3R5bGVFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjpz
dHlsZVRhZywgZG9jdW1lbnQuZ2V0KCksIGZhbHNlKTsKLSAgICBzdHlsZS0+c2V0VGV4dENvbnRl
bnQoc2hhZG93U3R5bGUpOworICAgIHN0eWxlLT5zZXRUZXh0Q29udGVudChTdHJpbmcgeyBzaGFk
b3dTdHlsZSB9KTsKICAgICBzaGFkb3dSb290LT5hcHBlbmRDaGlsZChXVEZNb3ZlKHN0eWxlKSk7
CiAgICAgCiAgICAgYXV0byBidXR0b24gPSBIVE1MQnV0dG9uRWxlbWVudDo6Y3JlYXRlKEhUTUxO
YW1lczo6YnV0dG9uVGFnLCBlbGVtZW50LmRvY3VtZW50KCksIG51bGxwdHIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9DcmVhdGVMaW5rQ29tbWFuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0NyZWF0ZUxpbmtDb21tYW5kLmNwcAppbmRleCA2NmZhMzEwYjlmMzMy
NjUwNGY5NTJhOGQ1NGM4ZGExYTExZWVjNjQzLi4wZjNhN2Y5NDg1NTg0ZjA3ODdiOGQwNGNhNjkw
OTE1YzExYjVjYzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NyZWF0ZUxp
bmtDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NyZWF0ZUxpbmtDb21t
YW5kLmNwcApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIENyZWF0ZUxpbmtDb21tYW5kOjpkb0FwcGx5
KCkKICAgICAgICAgYXBwbHlTdHlsZWRFbGVtZW50KFdURk1vdmUoYW5jaG9yRWxlbWVudCkpOwog
ICAgIGVsc2UgewogICAgICAgICBpbnNlcnROb2RlQXQoYW5jaG9yRWxlbWVudC5jb3B5UmVmKCks
IGVuZGluZ1NlbGVjdGlvbigpLnN0YXJ0KCkpOwotICAgICAgICBhcHBlbmROb2RlKFRleHQ6OmNy
ZWF0ZShkb2N1bWVudCgpLCBtX3VybCksIGFuY2hvckVsZW1lbnQuY29weVJlZigpKTsKKyAgICAg
ICAgYXBwZW5kTm9kZShUZXh0OjpjcmVhdGUoZG9jdW1lbnQoKSwgU3RyaW5nIHsgbV91cmwgfSks
IGFuY2hvckVsZW1lbnQuY29weVJlZigpKTsKICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZp
c2libGVTZWxlY3Rpb24ocG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUoYW5jaG9yRWxlbWVudC5w
dHIoKSksIHBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUoYW5jaG9yRWxlbWVudC5wdHIoKSksIEFm
ZmluaXR5OjpEb3duc3RyZWFtLCBlbmRpbmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFsKCkpKTsK
ICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAppbmRleCA4MGZmZDFlYzNmODIw
ZjE2NjcyYWIxOGI2NDI1MDQzYjliZjRiZjIzLi42ODQ1Yjg3MDczZWRiOWM0MmE4MGI0NjQ0Njc4
OTBkOTU3MTJmYTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKQEAgLTgyNyw5ICs4
MjcsOSBAQCBzdGF0aWMgUmVmPEVsZW1lbnQ+IGNyZWF0ZVRhYlNwYW5FbGVtZW50KERvY3VtZW50
JiBkb2N1bWVudCwgVGV4dCYgdGFiVGV4dE5vZGUpCiAgICAgcmV0dXJuIHNwYW5FbGVtZW50Owog
fQogCi1SZWY8RWxlbWVudD4gY3JlYXRlVGFiU3BhbkVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50
LCBjb25zdCBTdHJpbmcmIHRhYlRleHQpCitSZWY8RWxlbWVudD4gY3JlYXRlVGFiU3BhbkVsZW1l
bnQoRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmcmJiB0YWJUZXh0KQogewotICAgIHJldHVybiBj
cmVhdGVUYWJTcGFuRWxlbWVudChkb2N1bWVudCwgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGFi
VGV4dCkpOworICAgIHJldHVybiBjcmVhdGVUYWJTcGFuRWxlbWVudChkb2N1bWVudCwgZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoV1RGTW92ZSh0YWJUZXh0KSkpOwogfQogCiBSZWY8RWxlbWVudD4g
Y3JlYXRlVGFiU3BhbkVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRpbmcuaAppbmRleCA5NmNlYzk3Y2Y3ZTNiMTZjZTBmMWMwNWJlNzRkNzIwOGNjYzRkYWI5Li4y
NzYxMjBjNGM3YTI1YjJmY2E3NWI4MmUyOWI2YzJhZjQwMjYzNTE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmcuaApAQCAtMTY5LDcgKzE2OSw3IEBAIE5vZGUqIGVuY2xvc2luZ0xpc3RDaGlsZChO
b2RlKik7CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFJlZjxFbGVtZW50PiBjcmVhdGVUYWJTcGFu
RWxlbWVudChEb2N1bWVudCYpOwotUmVmPEVsZW1lbnQ+IGNyZWF0ZVRhYlNwYW5FbGVtZW50KERv
Y3VtZW50JiwgY29uc3QgU3RyaW5nJiB0YWJUZXh0KTsKK1JlZjxFbGVtZW50PiBjcmVhdGVUYWJT
cGFuRWxlbWVudChEb2N1bWVudCYsIFN0cmluZyYmIHRhYlRleHQpOwogUmVmPEVsZW1lbnQ+IGNy
ZWF0ZUJsb2NrUGxhY2Vob2xkZXJFbGVtZW50KERvY3VtZW50Jik7CiAKIEVsZW1lbnQqIGVkaXRh
YmxlUm9vdEZvclBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uJiwgRWRpdGFibGVUeXBlID0gQ29udGVu
dElzRWRpdGFibGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDVkZjdhMzUwOGRh
NzhiMzI1MDIyODY2MGYwNDRhYjRkNDM1YzU0ZjIuLjY4ZTE0YTBmMTYyZjM0OGYwZjlhMmIyMWMz
ZTFhN2JlM2YwMjJjNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQzNTMsNyAr
NDM1Myw3IEBAIGNvbnN0IFJlbmRlclN0eWxlKiBFZGl0b3I6OnN0eWxlRm9yU2VsZWN0aW9uU3Rh
cnQoUmVmUHRyPE5vZGU+JiBub2RlVG9SZW1vdmUpCiAgICAgU3RyaW5nIHN0eWxlVGV4dCA9IHR5
cGluZ1N0eWxlLT5zdHlsZSgpLT5hc1RleHQoKSArICIgZGlzcGxheTogaW5saW5lIjsKICAgICBz
dHlsZUVsZW1lbnQtPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnN0eWxlQXR0ciwgc3R5bGVUZXh0
KTsKIAotICAgIHN0eWxlRWxlbWVudC0+YXBwZW5kQ2hpbGQoZG9jdW1lbnQoKS5jcmVhdGVFZGl0
aW5nVGV4dE5vZGUoZW1wdHlTdHJpbmcoKSkpOworICAgIHN0eWxlRWxlbWVudC0+YXBwZW5kQ2hp
bGQoZG9jdW1lbnQoKS5jcmVhdGVFZGl0aW5nVGV4dE5vZGUoU3RyaW5nIHsgZW1wdHlTdHJpbmco
KSB9KSk7CiAKICAgICBhdXRvIHBvc2l0aW9uTm9kZSA9IHBvc2l0aW9uLmRlcHJlY2F0ZWROb2Rl
KCk7CiAgICAgQVNTRVJUKHBvc2l0aW9uTm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRl
eCA4NWEyZjEyYTFkMjdiMmM3YzM4Yjk3MjBkMzNlMTFmYWM3MTcwMDZkLi5kMDRlMGZmOTkwZDEy
ZmE0ZTExNjE1NmM4MmJhYTM2OTM5YTlkYTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAg
LTQyOCw3ICs0MjgsNyBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY29uZmlybU1hcmtlZFRleHQoKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldFRleHRBc0NoaWxkT2ZFbGVtZW50KGNvbnN0IFN0cmluZyYsIEVsZW1lbnQm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRleHRBc0NoaWxkT2ZFbGVtZW50KFN0cmlu
ZyYmLCBFbGVtZW50Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUZXh0QWxpZ25tZW50
Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24pOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgaW5zZXJ0RGljdGF0aW9uUGhyYXNlcyhWZWN0b3I8VmVjdG9yPFN0
cmluZz4+JiYgZGljdGF0aW9uUGhyYXNlcywgaWQgbWV0YWRhdGEpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0RGljdGF0aW9uUGhyYXNlc0FzQ2hpbGRPZkVsZW1lbnQoY29uc3QgVmVjdG9y
PFZlY3RvcjxTdHJpbmc+PiYgZGljdGF0aW9uUGhyYXNlcywgaWQgbWV0YWRhdGEsIEVsZW1lbnQm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29t
bWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQu
Y3BwCmluZGV4IDNlMzM3M2FjM2Y2ZmQzMWEwYWMwNGQ0NjFkYThjNjcxMzlhMDAwNjcuLjkxMjlh
M2JmODMxMWM1ZWE4NGNlYmUzN2Q5MWVlZjY4YWM0MzEwY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcApAQCAtMTMzLDcgKzEzMyw3
IEBAIHZvaWQgSW5zZXJ0TGluZUJyZWFrQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgICAgICAgICBp
ZiAodGV4dE5vZGUuaXNDb25uZWN0ZWQoKSkKICAgICAgICAgICAgICAgICBpbnNlcnRUZXh0SW50
b05vZGUodGV4dE5vZGUsIDAsIG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSk7CiAgICAgICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgICAgICBhdXRvIG5ic3BOb2RlID0gZG9jdW1lbnQoKS5jcmVh
dGVUZXh0Tm9kZShub25CcmVha2luZ1NwYWNlU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIGF1
dG8gbmJzcE5vZGUgPSBkb2N1bWVudCgpLmNyZWF0ZVRleHROb2RlKFN0cmluZyB7IG5vbkJyZWFr
aW5nU3BhY2VTdHJpbmcoKSB9KTsKICAgICAgICAgICAgICAgICBhdXRvKiBuYnNwTm9kZVB0ciA9
IG5ic3BOb2RlLnB0cigpOwogICAgICAgICAgICAgICAgIGluc2VydE5vZGVBdChXVEZNb3ZlKG5i
c3BOb2RlKSwgcG9zaXRpb25CZWZvcmVUZXh0Tm9kZSk7CiAgICAgICAgICAgICAgICAgZW5kaW5n
UG9zaXRpb24gPSBmaXJzdFBvc2l0aW9uSW5Ob2RlKG5ic3BOb2RlUHRyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAKaW5kZXggNzFmY2EyMzVlYWVlYjVk
ZTNmYzRhZGNkMzE2OTEzMTkxYjhmZWM1Zi4uMWU1YzBmMDdiYjVlOGQ0NWM5NTc2ODQ2MmI0MGE1
NmJiYWNlNzkzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0
Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFu
ZC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgUG9zaXRpb24gSW5zZXJ0VGV4dENvbW1hbmQ6OnBvc2l0
aW9uSW5zaWRlVGV4dE5vZGUoY29uc3QgUG9zaXRpb24mIHApCiB7CiAgICAgUG9zaXRpb24gcG9z
ID0gcDsKICAgICBpZiAoaXNUYWJTcGFuVGV4dE5vZGUocG9zLmFuY2hvck5vZGUoKSkpIHsKLSAg
ICAgICAgYXV0byB0ZXh0Tm9kZSA9IGRvY3VtZW50KCkuY3JlYXRlRWRpdGluZ1RleHROb2RlKGVt
cHR5U3RyaW5nKCkpOworICAgICAgICBhdXRvIHRleHROb2RlID0gZG9jdW1lbnQoKS5jcmVhdGVF
ZGl0aW5nVGV4dE5vZGUoU3RyaW5nIHsgZW1wdHlTdHJpbmcoKSB9KTsKICAgICAgICAgaW5zZXJ0
Tm9kZUF0VGFiU3BhblBvc2l0aW9uKHRleHROb2RlLmNvcHlSZWYoKSwgcG9zKTsKICAgICAgICAg
cmV0dXJuIGZpcnN0UG9zaXRpb25Jbk5vZGUodGV4dE5vZGUucHRyKCkpOwogICAgIH0KQEAgLTY2
LDcgKzY2LDcgQEAgUG9zaXRpb24gSW5zZXJ0VGV4dENvbW1hbmQ6OnBvc2l0aW9uSW5zaWRlVGV4
dE5vZGUoY29uc3QgUG9zaXRpb24mIHApCiAgICAgLy8gUHJlcGFyZSBmb3IgdGV4dCBpbnB1dCBi
eSBsb29raW5nIGF0IHRoZSBzcGVjaWZpZWQgcG9zaXRpb24uCiAgICAgLy8gSXQgbWF5IGJlIG5l
Y2Vzc2FyeSB0byBpbnNlcnQgYSB0ZXh0IG5vZGUgdG8gcmVjZWl2ZSBjaGFyYWN0ZXJzLgogICAg
IGlmICghcG9zLmNvbnRhaW5lck5vZGUoKS0+aXNUZXh0Tm9kZSgpKSB7Ci0gICAgICAgIGF1dG8g
dGV4dE5vZGUgPSBkb2N1bWVudCgpLmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZShlbXB0eVN0cmluZygp
KTsKKyAgICAgICAgYXV0byB0ZXh0Tm9kZSA9IGRvY3VtZW50KCkuY3JlYXRlRWRpdGluZ1RleHRO
b2RlKFN0cmluZyB7IGVtcHR5U3RyaW5nKCkgfSk7CiAgICAgICAgIGluc2VydE5vZGVBdCh0ZXh0
Tm9kZS5jb3B5UmVmKCksIHBvcyk7CiAgICAgICAgIHJldHVybiBmaXJzdFBvc2l0aW9uSW5Ob2Rl
KHRleHROb2RlLnB0cigpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDk0MWRmZWU4ZWY3NDBlMmNkZmZiYzFl
NTg1NjZhMDcxN2I3ZTdjZWUuLjVlYjNiZDA4NzM0MzJiNGQwYzhkOWY5MTBkMjg3ZGIxYjU5OGRm
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQuY3BwCkBAIC0xNTk4LDcgKzE1OTgsNyBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21t
YW5kOjphZGRTcGFjZXNGb3JTbWFydFJlcGxhY2UoKQogICAgICAgICAgICAgaWYgKG1fZW5kT2ZJ
bnNlcnRlZENvbnRlbnQuY29udGFpbmVyTm9kZSgpID09IGVuZE5vZGUpCiAgICAgICAgICAgICAg
ICAgbV9lbmRPZkluc2VydGVkQ29udGVudC5tb3ZlVG9PZmZzZXQobV9lbmRPZkluc2VydGVkQ29u
dGVudC5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSArIDEpOwogICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgYXV0byBub2RlID0gZG9jdW1lbnQoKS5jcmVhdGVFZGl0aW5nVGV4dE5vZGUoY29s
bGFwc2VXaGl0ZVNwYWNlID8gbm9uQnJlYWtpbmdTcGFjZVN0cmluZygpIDogIiAiX3MpOworICAg
ICAgICAgICAgYXV0byBub2RlID0gZG9jdW1lbnQoKS5jcmVhdGVFZGl0aW5nVGV4dE5vZGUoY29s
bGFwc2VXaGl0ZVNwYWNlID8gU3RyaW5nIHsgbm9uQnJlYWtpbmdTcGFjZVN0cmluZygpIH0gOiAi
ICJfcyk7CiAgICAgICAgICAgICBpbnNlcnROb2RlQWZ0ZXIobm9kZS5jb3B5UmVmKCksICplbmRO
b2RlKTsKICAgICAgICAgICAgIHVwZGF0ZU5vZGVzSW5zZXJ0ZWQobm9kZS5wdHIoKSk7CiAgICAg
ICAgIH0KQEAgLTE2MjIsNyArMTYyMiw3IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6
OmFkZFNwYWNlc0ZvclNtYXJ0UmVwbGFjZSgpCiAgICAgICAgICAgICBpZiAobV9lbmRPZkluc2Vy
dGVkQ29udGVudC5jb250YWluZXJOb2RlKCkgPT0gc3RhcnROb2RlICYmIG1fZW5kT2ZJbnNlcnRl
ZENvbnRlbnQub2Zmc2V0SW5Db250YWluZXJOb2RlKCkpCiAgICAgICAgICAgICAgICAgbV9lbmRP
Zkluc2VydGVkQ29udGVudC5tb3ZlVG9PZmZzZXQobV9lbmRPZkluc2VydGVkQ29udGVudC5vZmZz
ZXRJbkNvbnRhaW5lck5vZGUoKSArIDEpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
YXV0byBub2RlID0gZG9jdW1lbnQoKS5jcmVhdGVFZGl0aW5nVGV4dE5vZGUoY29sbGFwc2VXaGl0
ZVNwYWNlID8gbm9uQnJlYWtpbmdTcGFjZVN0cmluZygpIDogIiAiX3MpOworICAgICAgICAgICAg
YXV0byBub2RlID0gZG9jdW1lbnQoKS5jcmVhdGVFZGl0aW5nVGV4dE5vZGUoY29sbGFwc2VXaGl0
ZVNwYWNlID8gU3RyaW5nIHsgbm9uQnJlYWtpbmdTcGFjZVN0cmluZygpIH0gOiAiICJfcyk7CiAg
ICAgICAgICAgICAvLyBEb24ndCB1cGRhdGVOb2Rlc0luc2VydGVkLiBEb2luZyBzbyB3b3VsZCBz
ZXQgbV9lbmRPZkluc2VydGVkQ29udGVudCB0byBiZSB0aGUgbm9kZSBjb250YWluaW5nIHRoZSBs
ZWFkaW5nIHNwYWNlLAogICAgICAgICAgICAgLy8gYnV0IG1fZW5kT2ZJbnNlcnRlZENvbnRlbnQg
aXMgc3VwcG9zZWQgdG8gbWFyayB0aGUgZW5kIG9mIHBhc3RlZCBjb250ZW50LgogICAgICAgICAg
ICAgaW5zZXJ0Tm9kZUJlZm9yZShub2RlLCAqc3RhcnROb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggMDFj
NmVlYWU5MTZlYTVhYTIzNDIzZWYzMTIzYTE3YzBkZGIyNmYxYS4uNDA2MGQwMDEyNzFhNjJhYjU2
ZTI5NzIwOTA0OGNiODgxZDllNjQ2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTg4MSw3ICs4ODEsNyBAQCBh
dXRvIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpyZXBsYWNlKGNvbnN0IE1hbmlwdWxhdGlv
bkl0ZW1EYXRhJiBpdGVtLCBjb25zdAogICAgICAgICAgICAgZm9yIChSZWZQdHI8Tm9kZT4gZGVz
Y2VuZGVudE5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KCpvcmlnaW5hbE5vZGUsIG9yaWdpbmFs
Tm9kZSk7IGRlc2NlbmRlbnROb2RlOyBkZXNjZW5kZW50Tm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5l
eHQoKmRlc2NlbmRlbnROb2RlLCBvcmlnaW5hbE5vZGUpKQogICAgICAgICAgICAgICAgIG5vZGVz
VG9SZW1vdmUucmVtb3ZlKCpkZXNjZW5kZW50Tm9kZSk7CiAgICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgcmVwbGFjZW1lbnROb2RlID0gVGV4dDo6Y3JlYXRlKGNvbW1vbkFuY2VzdG9yLT5kb2N1
bWVudCgpLCByZXBsYWNlbWVudFRleHQpOworICAgICAgICAgICAgcmVwbGFjZW1lbnROb2RlID0g
VGV4dDo6Y3JlYXRlKGNvbW1vbkFuY2VzdG9yLT5kb2N1bWVudCgpLCBXVEZNb3ZlKHJlcGxhY2Vt
ZW50VGV4dCkpOwogCiAgICAgICAgIGF1dG8gdG9wRG93blBhdGggPSBnZXRQYXRoKGNvbW1vbkFu
Y2VzdG9yLmdldCgpLCBvcmlnaW5hbE5vZGUpOwogICAgICAgICB1cGRhdGVJbnNlcnRpb25zKGxh
c3RUb3BEb3duUGF0aCwgdG9wRG93blBhdGgsIHJlcGxhY2VtZW50Tm9kZS5nZXQoKSwgcmV1c2Vk
T3JpZ2luYWxOb2RlcywgaW5zZXJ0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0RhdGFEZXRlY3Rpb24ubW0KaW5kZXggZDYzYmI5YTJhZjUyNjJmMGUxNDcyMTU3YTQ2YjM0
MzJlODBlNjdhMS4uODFmNjRlODY0NGM2NDk5Yjk1NWIzZjY4ZjZhM2Q4OTE0NmFiZGU3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQpAQCAtNTg0
LDEzICs1ODQsMTMgQEAgTlNBcnJheSAqRGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFu
Z2UoY29uc3QgU2ltcGxlUmFuZ2UmIGNvbnRleHRSYW5nZSwgT3AKICAgICAgICAgICAgICAgICB0
ZXh0Tm9kZURhdGEgPSBjdXJyZW50VGV4dE5vZGUuZGF0YSgpLnN1YnN0cmluZyhjb250ZW50T2Zm
c2V0LCByYW5nZS5zdGFydC5vZmZzZXQgLSBjb250ZW50T2Zmc2V0KTsKIAogICAgICAgICAgICAg
aWYgKCF0ZXh0Tm9kZURhdGEuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgcGFyZW50Tm9k
ZS0+aW5zZXJ0QmVmb3JlKFRleHQ6OmNyZWF0ZShkb2N1bWVudCwgdGV4dE5vZGVEYXRhKSwgJmN1
cnJlbnRUZXh0Tm9kZSk7CisgICAgICAgICAgICAgICAgcGFyZW50Tm9kZS0+aW5zZXJ0QmVmb3Jl
KFRleHQ6OmNyZWF0ZShkb2N1bWVudCwgV1RGTW92ZSh0ZXh0Tm9kZURhdGEpKSwgJmN1cnJlbnRU
ZXh0Tm9kZSk7CiAgICAgICAgICAgICAgICAgY29udGVudE9mZnNldCA9IHJhbmdlLnN0YXJ0Lm9m
ZnNldDsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gQ3JlYXRlIHRoZSBhY3R1YWwg
YW5jaG9yIG5vZGUgYW5kIGluc2VydCBpdCBiZWZvcmUgdGhlIGN1cnJlbnQgbm9kZS4KICAgICAg
ICAgICAgIHRleHROb2RlRGF0YSA9IGN1cnJlbnRUZXh0Tm9kZS5kYXRhKCkuc3Vic3RyaW5nKHJh
bmdlLnN0YXJ0Lm9mZnNldCwgcmFuZ2UuZW5kLm9mZnNldCAtIHJhbmdlLnN0YXJ0Lm9mZnNldCk7
Ci0gICAgICAgICAgICBhdXRvIG5ld1RleHROb2RlID0gVGV4dDo6Y3JlYXRlKGRvY3VtZW50LCB0
ZXh0Tm9kZURhdGEpOworICAgICAgICAgICAgYXV0byBuZXdUZXh0Tm9kZSA9IFRleHQ6OmNyZWF0
ZShkb2N1bWVudCwgV1RGTW92ZSh0ZXh0Tm9kZURhdGEpKTsKICAgICAgICAgICAgIHBhcmVudE5v
ZGUtPmluc2VydEJlZm9yZShuZXdUZXh0Tm9kZS5jb3B5UmVmKCksICZjdXJyZW50VGV4dE5vZGUp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBSZWY8SFRNTEFuY2hvckVsZW1lbnQ+IGFuY2hv
ckVsZW1lbnQgPSBIVE1MQW5jaG9yRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbSBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQppbmRleCA2MzYyOTM2NTczYmFlYzY4YTI1NmU1
Y2E2Y2ViODE3NmY0MzM4MzAyLi42YzMzZDZmNmEyMmQ1MmE2ZGNhMWQ5MTk5ZmNjYWQzNjg5NmY2
NmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCkBAIC0zMjgsNyAr
MzI4LDcgQEAgdm9pZCBFZGl0b3I6OmNvbmZpcm1NYXJrZWRUZXh0KCkKICAgICAgICAgY29uZmly
bUNvbXBvc2l0aW9uKCk7CiB9CiAKLXZvaWQgRWRpdG9yOjpzZXRUZXh0QXNDaGlsZE9mRWxlbWVu
dChjb25zdCBTdHJpbmcmIHRleHQsIEVsZW1lbnQmIGVsZW1lbnQpCit2b2lkIEVkaXRvcjo6c2V0
VGV4dEFzQ2hpbGRPZkVsZW1lbnQoU3RyaW5nJiYgdGV4dCwgRWxlbWVudCYgZWxlbWVudCkKIHsK
ICAgICAvLyBDbGVhciB0aGUgY29tcG9zaXRpb24KICAgICBjbGVhcigpOwpAQCAtMzQ2LDcgKzM0
Niw3IEBAIHZvaWQgRWRpdG9yOjpzZXRUZXh0QXNDaGlsZE9mRWxlbWVudChjb25zdCBTdHJpbmcm
IHRleHQsIEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgLy8gV2hhdCBmb2xsb3dzIGlzIG1vcmUgZXhw
ZW5zaXZlIGlmIHRoZXJlIGlzIGEgc2VsZWN0aW9uLCBzbyBjbGVhciBpdCBzaW5jZSBpdCdzIGdv
aW5nIHRvIGNoYW5nZSBhbnl3YXkuCiAgICAgbV9kb2N1bWVudC5zZWxlY3Rpb24oKS5jbGVhcigp
OwogCi0gICAgZWxlbWVudC5zdHJpbmdSZXBsYWNlQWxsKHRleHQpOworICAgIGVsZW1lbnQuc3Ry
aW5nUmVwbGFjZUFsbChXVEZNb3ZlKHRleHQpKTsKIAogICAgIFZpc2libGVQb3NpdGlvbiBhZnRl
ckNvbnRlbnRzID0gbWFrZUNvbnRhaW5lck9mZnNldFBvc2l0aW9uKCZlbGVtZW50LCBlbGVtZW50
LmNvdW50Q2hpbGROb2RlcygpKTsKICAgICBpZiAoYWZ0ZXJDb250ZW50cy5pc051bGwoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCBiNGM5NjRkMjFhMDQzZWM3YWI5NzkwNWJhY2U2
NzQxOTBhOTU2ZjVmLi40YmZmYTY4ZTU4MmFkMjQ5MTQ4YzVjMmQ2MzgwOGNhODFjYTg5OWJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC0xMTc5LDggKzExNzksOSBAQCBSZWY8RG9j
dW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChjb25zdCBTaW1wbGVSYW5nZSYg
Y29udGV4dCwgY29uc3QgUwogICAgIH07CiAKICAgICBpZiAoY29udGV4dFByZXNlcnZlc05ld2xp
bmUoY29udGV4dCkpIHsKLSAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKHN0cmluZykpOwotICAgICAgICBpZiAoc3RyaW5nLmVuZHNXaXRoKCdcbicp
KSB7CisgICAgICAgIGJvb2wgZW5kc1dpdGhOZXdMaW5lID0gc3RyaW5nLmVuZHNXaXRoKCdcbicp
OworICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
V1RGTW92ZShzdHJpbmcpKSk7CisgICAgICAgIGlmIChlbmRzV2l0aE5ld0xpbmUpIHsKICAgICAg
ICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChjcmVhdGVIVE1MQlJFbGVtZW50KCkpOwogICAg
ICAgICB9CiAgICAgICAgIHJldHVybiBmcmFnbWVudDsKQEAgLTEyNzIsNyArMTI3Myw3IEBAIEV4
Y2VwdGlvbk9yPFJlZjxEb2N1bWVudEZyYWdtZW50Pj4gY3JlYXRlRnJhZ21lbnRGb3JJbm5lck91
dGVySFRNTChFbGVtZW50JiBjb250CiAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50Rm9yTWFya3Vw
KGNvbnRleHRFbGVtZW50LCBtYXJrdXAsIERvY3VtZW50RnJhZ21lbnRNb2RlOjpSZXVzZUZvcklu
bmVyT3V0ZXJIVE1MLCBwYXJzZXJDb250ZW50UG9saWN5KTsKIH0KIAotUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9yVHJhbnNmb3JtVG9GcmFnbWVudChEb2N1bWVudCYg
b3V0cHV0RG9jLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZywgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VNSU1FVHlwZSkKK1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvclRy
YW5zZm9ybVRvRnJhZ21lbnQoRG9jdW1lbnQmIG91dHB1dERvYywgU3RyaW5nJiYgc291cmNlU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHNvdXJjZU1JTUVUeXBlKQogewogICAgIFJlZlB0cjxEb2N1bWVu
dEZyYWdtZW50PiBmcmFnbWVudCA9IG91dHB1dERvYy5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7
CiAgICAgCkBAIC0xMjgyLDExICsxMjgzLDExIEBAIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBj
cmVhdGVGcmFnbWVudEZvclRyYW5zZm9ybVRvRnJhZ21lbnQoRG9jdW1lbnQmIG91dHB1dERvCiAg
ICAgICAgIC8vIFVuZm9ydHVuYXRlbHksIHRoYXQncyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwg
b2YgdGhlIHBhcnNlci4KICAgICAgICAgLy8gV2UgYWNoaWV2ZSB0aGF0IGVmZmVjdCBoZXJlIGJ5
IHBhc3NpbmcgaW4gYSBmYWtlIGJvZHkgZWxlbWVudCBhcyBjb250ZXh0IGZvciB0aGUgZnJhZ21l
bnQuCiAgICAgICAgIGF1dG8gZmFrZUJvZHkgPSBIVE1MQm9keUVsZW1lbnQ6OmNyZWF0ZShvdXRw
dXREb2MpOwotICAgICAgICBmcmFnbWVudC0+cGFyc2VIVE1MKHNvdXJjZVN0cmluZywgZmFrZUJv
ZHkucHRyKCkpOworICAgICAgICBmcmFnbWVudC0+cGFyc2VIVE1MKFdURk1vdmUoc291cmNlU3Ry
aW5nKSwgZmFrZUJvZHkucHRyKCkpOwogICAgIH0gZWxzZSBpZiAoc291cmNlTUlNRVR5cGUgPT0g
InRleHQvcGxhaW4iKQotICAgICAgICBmcmFnbWVudC0+cGFyc2VyQXBwZW5kQ2hpbGQoVGV4dDo6
Y3JlYXRlKG91dHB1dERvYywgc291cmNlU3RyaW5nKSk7CisgICAgICAgIGZyYWdtZW50LT5wYXJz
ZXJBcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUob3V0cHV0RG9jLCBXVEZNb3ZlKHNvdXJjZVN0cmlu
ZykpKTsKICAgICBlbHNlIHsKLSAgICAgICAgYm9vbCBzdWNjZXNzZnVsUGFyc2UgPSBmcmFnbWVu
dC0+cGFyc2VYTUwoc291cmNlU3RyaW5nLCAwKTsKKyAgICAgICAgYm9vbCBzdWNjZXNzZnVsUGFy
c2UgPSBmcmFnbWVudC0+cGFyc2VYTUwoV1RGTW92ZShzb3VyY2VTdHJpbmcpLCAwKTsKICAgICAg
ICAgaWYgKCFzdWNjZXNzZnVsUGFyc2UpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAppbmRleCA5MjUxMWE5MzQ2NmJhOTQ4NDEyNDFiYWZk
NjRlMGZjZDEzZTExYWUzLi4zYmUxYTRjMmEyMTllNmViMzRkM2FhNmQxMmM1YTM2ZTMzNGJmMmVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKQEAgLTYxLDcgKzYxLDcgQEAgU3RyaW5nIHNhbml0
aXplZE1hcmt1cEZvckZyYWdtZW50SW5Eb2N1bWVudChSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiwg
RG9jdW1lbnQmLAogV0VCQ09SRV9FWFBPUlQgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZy
YWdtZW50RnJvbVRleHQoY29uc3QgU2ltcGxlUmFuZ2UmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYg
dGV4dCk7CiBXRUJDT1JFX0VYUE9SVCBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21l
bnRGcm9tTWFya3VwKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBtYXJrdXAsIGNvbnN0IFN0cmlu
ZyYgYmFzZVVSTCwgUGFyc2VyQ29udGVudFBvbGljeSA9IEFsbG93U2NyaXB0aW5nQ29udGVudCk7
CiBFeGNlcHRpb25PcjxSZWY8RG9jdW1lbnRGcmFnbWVudD4+IGNyZWF0ZUZyYWdtZW50Rm9ySW5u
ZXJPdXRlckhUTUwoRWxlbWVudCYsIGNvbnN0IFN0cmluZyYgbWFya3VwLCBQYXJzZXJDb250ZW50
UG9saWN5KTsKLVJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvclRyYW5z
Zm9ybVRvRnJhZ21lbnQoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZywgY29u
c3QgU3RyaW5nJiBzb3VyY2VNSU1FVHlwZSk7CitSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3Jl
YXRlRnJhZ21lbnRGb3JUcmFuc2Zvcm1Ub0ZyYWdtZW50KERvY3VtZW50JiwgU3RyaW5nJiYgc291
cmNlU3RyaW5nLCBjb25zdCBTdHJpbmcmIHNvdXJjZU1JTUVUeXBlKTsKIFJlZjxEb2N1bWVudEZy
YWdtZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQW5kVVJMKERvY3VtZW50JiwgY29uc3QgU3Ry
aW5nJiwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKTsKIEV4Y2VwdGlvbk9yPFJlZjxE
b2N1bWVudEZyYWdtZW50Pj4gY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KEVsZW1lbnQmLCBjb25z
dCBTdHJpbmcmIG1hcmt1cCwgUGFyc2VyQ29udGVudFBvbGljeSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAppbmRleCAzNzU1MjgxZDE4
MmUzYWFiZTE4Yzc5ZDlkMzUxMzY5YWM3MzU0ZTgyLi44NDUyZjVhNjM3MzRmOTQ0YzVmZjlmYjFh
MTFmZTQ5ZmU5ZmFkMmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRl
QW5kVGltZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFu
ZFRpbWVJbnB1dFR5cGUuY3BwCkBAIC0zNDYsNyArMzQ2LDcgQEAgdm9pZCBCYXNlRGF0ZUFuZFRp
bWVJbnB1dFR5cGU6OnVwZGF0ZUlubmVyVGV4dFZhbHVlKCkKICAgICAgICAgICAgIC8vIE5lZWQg
dG8gcHV0IHNvbWV0aGluZyB0byBrZWVwIHRleHQgYmFzZWxpbmUuCiAgICAgICAgICAgICBkaXNw
bGF5VmFsdWUgPSAiICJfczsKICAgICAgICAgfQotICAgICAgICBkb3duY2FzdDxIVE1MRWxlbWVu
dD4oKm5vZGUpLnNldElubmVyVGV4dChkaXNwbGF5VmFsdWUpOworICAgICAgICBkb3duY2FzdDxI
VE1MRWxlbWVudD4oKm5vZGUpLnNldElubmVyVGV4dChXVEZNb3ZlKGRpc3BsYXlWYWx1ZSkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0
ZUFuZFRpbWVJbnB1dFR5cGUuaAppbmRleCA2YmY2ZDZiOTAzYjRhZDc2NTk2YmJhY2NlNTRkMTdk
MzdhMzFlOGNmLi45NDhmOWUzZTkyNDc1YzZiOTJlZDE5OGNkYzBiMzUyZDVjNTQ3OTQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmgKQEAgLTg0
LDcgKzg0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgRGF0ZVRpbWVGb3JtYXRWYWxpZGF0b3IoKSB7
IH0KIAogICAgICAgICB2b2lkIHZpc2l0RmllbGQoRGF0ZVRpbWVGb3JtYXQ6OkZpZWxkVHlwZSwg
aW50KTsKLSAgICAgICAgdm9pZCB2aXNpdExpdGVyYWwoY29uc3QgU3RyaW5nJikgeyB9CisgICAg
ICAgIHZvaWQgdmlzaXRMaXRlcmFsKFN0cmluZyYmKSB7IH0KIAogICAgICAgICBib29sIHZhbGlk
YXRlRm9ybWF0KGNvbnN0IFN0cmluZyYgZm9ybWF0LCBjb25zdCBCYXNlRGF0ZUFuZFRpbWVJbnB1
dFR5cGUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlE
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNw
cAppbmRleCAxNTYyOGQ5NTlmYmJhMmVjN2I4NTRkMzZlNjkwMTFiMTJlNjNmM2QyLi40MzVjZWRh
ZTE2YThjMWUxNzBmMGI0MzFlYWQ1OGZlYzVlNGJlY2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcApAQCAtODMsOCArODMsOCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY3JlYXRlQmFzaWNEb2N1bWVudCgpOwogCiAgICAgdm9pZCBwYXJzZUFuZEFwcGVu
ZE9uZUxpbmUoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBhcHBlbmRFbnRyeShjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc2l6ZSwgY29uc3QgU3RyaW5nJiBkYXRlLCBib29sIGlz
RGlyZWN0b3J5KTsgICAgCi0gICAgUmVmPEVsZW1lbnQ+IGNyZWF0ZVRERm9yRmlsZW5hbWUoY29u
c3QgU3RyaW5nJik7CisgICAgdm9pZCBhcHBlbmRFbnRyeShTdHJpbmcmJiBuYW1lLCBTdHJpbmcm
JiBzaXplLCBTdHJpbmcmJiBkYXRlLCBib29sIGlzRGlyZWN0b3J5KTsKKyAgICBSZWY8RWxlbWVu
dD4gY3JlYXRlVERGb3JGaWxlbmFtZShTdHJpbmcmJik7CiAKICAgICBSZWZQdHI8SFRNTFRhYmxl
RWxlbWVudD4gbV90YWJsZUVsZW1lbnQ7CiAKQEAgLTEwNSw3ICsxMDUsNyBAQCBGVFBEaXJlY3Rv
cnlEb2N1bWVudFBhcnNlcjo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXIoSFRNTERvY3VtZW50
JiBkb2N1bWVudCkKIHsKIH0KIAotdm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6YXBw
ZW5kRW50cnkoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBzaXplLCBjb25z
dCBTdHJpbmcmIGRhdGUsIGJvb2wgaXNEaXJlY3RvcnkpCit2b2lkIEZUUERpcmVjdG9yeURvY3Vt
ZW50UGFyc2VyOjphcHBlbmRFbnRyeShTdHJpbmcmJiBmaWxlbmFtZSwgU3RyaW5nJiYgc2l6ZSwg
U3RyaW5nJiYgZGF0ZSwgYm9vbCBpc0RpcmVjdG9yeSkKIHsKICAgICBhdXRvJiBkb2N1bWVudCA9
ICp0aGlzLT5kb2N1bWVudCgpOwogCkBAIC0xMjAsMjMgKzEyMCwyMyBAQCB2b2lkIEZUUERpcmVj
dG9yeURvY3VtZW50UGFyc2VyOjphcHBlbmRFbnRyeShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBj
b25zdCBTdHJpbgogICAgICAgICB0eXBlRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihIVE1MTmFtZXM6OmNsYXNzQXR0ciwgQXRvbVN0cmluZygiZnRwRGlyZWN0b3J5
SWNvbiBmdHBEaXJlY3RvcnlUeXBlRmlsZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CiAgICAgcm93RWxlbWVudC0+YXBwZW5kQ2hpbGQodHlwZUVsZW1lbnQpOwogCi0gICAg
YXV0byBuYW1lRWxlbWVudCA9IGNyZWF0ZVRERm9yRmlsZW5hbWUoZmlsZW5hbWUpOworICAgIGF1
dG8gbmFtZUVsZW1lbnQgPSBjcmVhdGVUREZvckZpbGVuYW1lKFdURk1vdmUoZmlsZW5hbWUpKTsK
ICAgICBuYW1lRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1M
TmFtZXM6OmNsYXNzQXR0ciwgQXRvbVN0cmluZygiZnRwRGlyZWN0b3J5RmlsZU5hbWUiLCBBdG9t
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIHJvd0VsZW1lbnQtPmFwcGVuZENo
aWxkKG5hbWVFbGVtZW50KTsKIAogICAgIGF1dG8gZGF0ZUVsZW1lbnQgPSBIVE1MVGFibGVDZWxs
RWxlbWVudDo6Y3JlYXRlKHRkVGFnLCBkb2N1bWVudCk7Ci0gICAgZGF0ZUVsZW1lbnQtPmFwcGVu
ZENoaWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVudCwgZGF0ZSkpOworICAgIGRhdGVFbGVtZW50LT5h
cHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIFdURk1vdmUoZGF0ZSkpKTsKICAgICBk
YXRlRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6
OmNsYXNzQXR0ciwgQXRvbVN0cmluZygiZnRwRGlyZWN0b3J5RmlsZURhdGUiLCBBdG9tU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIHJvd0VsZW1lbnQtPmFwcGVuZENoaWxkKGRh
dGVFbGVtZW50KTsKIAogICAgIGF1dG8gc2l6ZUVsZW1lbnQgPSBIVE1MVGFibGVDZWxsRWxlbWVu
dDo6Y3JlYXRlKHRkVGFnLCBkb2N1bWVudCk7Ci0gICAgc2l6ZUVsZW1lbnQtPmFwcGVuZENoaWxk
KFRleHQ6OmNyZWF0ZShkb2N1bWVudCwgc2l6ZSkpOworICAgIHNpemVFbGVtZW50LT5hcHBlbmRD
aGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIFdURk1vdmUoc2l6ZSkpKTsKICAgICBzaXplRWxl
bWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmNsYXNz
QXR0ciwgQXRvbVN0cmluZygiZnRwRGlyZWN0b3J5RmlsZVNpemUiLCBBdG9tU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIHJvd0VsZW1lbnQtPmFwcGVuZENoaWxkKHNpemVFbGVt
ZW50KTsKICAgICBkb2N1bWVudC5zZXRIYXNWaXN1YWxseU5vbkVtcHR5Q3VzdG9tQ29udGVudCgp
OwogfQogCi1SZWY8RWxlbWVudD4gRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmNyZWF0ZVRE
Rm9yRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKK1JlZjxFbGVtZW50PiBGVFBEaXJl
Y3RvcnlEb2N1bWVudFBhcnNlcjo6Y3JlYXRlVERGb3JGaWxlbmFtZShTdHJpbmcmJiBmaWxlbmFt
ZSkKIHsKICAgICBhdXRvJiBkb2N1bWVudCA9ICp0aGlzLT5kb2N1bWVudCgpOwogCkBAIC0xNDgs
NyArMTQ4LDcgQEAgUmVmPEVsZW1lbnQ+IEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpjcmVh
dGVUREZvckZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW4KIAogICAgIGF1dG8gYW5jaG9yRWxl
bWVudCA9IEhUTUxBbmNob3JFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIGFuY2hvckVs
ZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpocmVm
QXR0ciwgZnVsbFVSTCk7Ci0gICAgYW5jaG9yRWxlbWVudC0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3Jl
YXRlKGRvY3VtZW50LCBmaWxlbmFtZSkpOworICAgIGFuY2hvckVsZW1lbnQtPmFwcGVuZENoaWxk
KFRleHQ6OmNyZWF0ZShkb2N1bWVudCwgV1RGTW92ZShmaWxlbmFtZSkpKTsKIAogICAgIGF1dG8g
dGRFbGVtZW50ID0gSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OmNyZWF0ZSh0ZFRhZywgZG9jdW1lbnQp
OwogICAgIHRkRWxlbWVudC0+YXBwZW5kQ2hpbGQoYW5jaG9yRWxlbWVudCk7CkBAIC0yNzQsNyAr
Mjc0LDcgQEAgdm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6cGFyc2VBbmRBcHBlbmRP
bmVMaW5lKGNvbnN0IFN0cmluZyYgaW5wdXRMaW5lKQogCiAgICAgTE9HKEZUUCwgIkFwcGVuZGlu
ZyBlbnRyeSAtICVzLCAlcyIsIGZpbGVuYW1lLmFzY2lpKCkuZGF0YSgpLCByZXN1bHQuZmlsZVNp
emUuYXNjaWkoKS5kYXRhKCkpOwogCi0gICAgYXBwZW5kRW50cnkoZmlsZW5hbWUsIHByb2Nlc3NG
aWxlc2l6ZVN0cmluZyhyZXN1bHQuZmlsZVNpemUsIHJlc3VsdC50eXBlID09IEZUUERpcmVjdG9y
eUVudHJ5KSwgcHJvY2Vzc0ZpbGVEYXRlU3RyaW5nKHJlc3VsdC5tb2RpZmllZFRpbWUpLCByZXN1
bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSk7CisgICAgYXBwZW5kRW50cnkoV1RGTW92ZShm
aWxlbmFtZSksIHByb2Nlc3NGaWxlc2l6ZVN0cmluZyhyZXN1bHQuZmlsZVNpemUsIHJlc3VsdC50
eXBlID09IEZUUERpcmVjdG9yeUVudHJ5KSwgcHJvY2Vzc0ZpbGVEYXRlU3RyaW5nKHJlc3VsdC5t
b2RpZmllZFRpbWUpLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSk7CiB9CiAKIHN0
YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERh
dGEoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNo
b3JFbGVtZW50LmNwcAppbmRleCA3NGZlNmFhZDc2MGNmM2FjOTU4MTM1YTM4MGM0MmNlZWJlODc5
YmY0Li40YWQ0NmRlMjljNWFlMDgxZDYzY2Q4Zjc1YWNjZjY2OWJjYzNlMTA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcApAQCAtMzUxLDkgKzM1MSw5IEBAIFN0
cmluZyBIVE1MQW5jaG9yRWxlbWVudDo6dGV4dCgpCiAgICAgcmV0dXJuIHRleHRDb250ZW50KCk7
CiB9CiAKLXZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0
KQordm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0VGV4dChTdHJpbmcmJiB0ZXh0KQogewotICAg
IHNldFRleHRDb250ZW50KHRleHQpOworICAgIHNldFRleHRDb250ZW50KFdURk1vdmUodGV4dCkp
OwogfQogCiBib29sIEhUTUxBbmNob3JFbGVtZW50Ojppc0xpdmVMaW5rKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaAppbmRleCBhZGQ2MTgzMDg2YTQxNmJlNzNk
YmZkNzViOTJhMmRjYWFhM2RkNDZlLi4zNDM4ZWE2NGI0NTY3M2M4NDcyM2M1YjA4NmM4MDdhMDFm
YzAyOGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oCkBAIC02MCw3
ICs2MCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgb3JpZ2luKCkgY29u
c3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdGV4dCgpOwotICAgIHZvaWQgc2V0VGV4
dChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldFRleHQoU3RyaW5nJiYpOwogCiAgICAgYm9v
bCBpc0xpdmVMaW5rKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5k
ZXggODE0MTgxMDJmM2YwYmRkN2RiMjJkYTcwNDA3MzU0MmJjZjlmNjdlNC4uMjJhNjYyMDZhYzRh
NmYwMTIzMzkzMTI1YzFmNTM1MmYwZGQzODVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVu
dC5jcHAKQEAgLTQzNSwzNiArNDM1LDM2IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnNldERpcihjb25z
dCBBdG9tU3RyaW5nJiB2YWx1ZSkKICAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKGRpckF0dHIsIHZhbHVlKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gSFRNTEVsZW1lbnQ6
OnNldElubmVyVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCitFeGNlcHRpb25Pcjx2b2lkPiBIVE1M
RWxlbWVudDo6c2V0SW5uZXJUZXh0KFN0cmluZyYmIHRleHQpCiB7CiAgICAgLy8gRklYTUU6IFRo
aXMgZG9lc24ndCB0YWtlIHdoaXRlc3BhY2UgY29sbGFwc2luZyBpbnRvIGFjY291bnQgYXQgYWxs
LgogCiAgICAgaWYgKCF0ZXh0LmNvbnRhaW5zKCdcbicpICYmICF0ZXh0LmNvbnRhaW5zKCdccicp
KSB7Ci0gICAgICAgIHN0cmluZ1JlcGxhY2VBbGwodGV4dCk7CisgICAgICAgIHN0cmluZ1JlcGxh
Y2VBbGwoV1RGTW92ZSh0ZXh0KSk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAg
aWYgKGlzQ29ubmVjdGVkKCkgJiYgaXNUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQoKSkgewog
ICAgICAgICBpZiAoIXRleHQuY29udGFpbnMoJ1xyJykpIHsKLSAgICAgICAgICAgIHN0cmluZ1Jl
cGxhY2VBbGwodGV4dCk7CisgICAgICAgICAgICBzdHJpbmdSZXBsYWNlQWxsKFdURk1vdmUodGV4
dCkpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQotICAgICAgICBTdHJpbmcg
dGV4dFdpdGhDb25zaXN0ZW50TGluZUJyZWFrcyA9IHRleHQ7CisgICAgICAgIFN0cmluZyB0ZXh0
V2l0aENvbnNpc3RlbnRMaW5lQnJlYWtzID0gV1RGTW92ZSh0ZXh0KTsKICAgICAgICAgdGV4dFdp
dGhDb25zaXN0ZW50TGluZUJyZWFrcy5yZXBsYWNlKCJcclxuIiwgIlxuIik7CiAgICAgICAgIHRl
eHRXaXRoQ29uc2lzdGVudExpbmVCcmVha3MucmVwbGFjZSgnXHInLCAnXG4nKTsKLSAgICAgICAg
c3RyaW5nUmVwbGFjZUFsbCh0ZXh0V2l0aENvbnNpc3RlbnRMaW5lQnJlYWtzKTsKKyAgICAgICAg
c3RyaW5nUmVwbGFjZUFsbChXVEZNb3ZlKHRleHRXaXRoQ29uc2lzdGVudExpbmVCcmVha3MpKTsK
ICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQg
dXNlIHJlcGxhY2VBbGwoKSwgYWZ0ZXIgd2UgZml4IHRoYXQgdG8gd29yayBwcm9wZXJseSBmb3Ig
RG9jdW1lbnRGcmFnbWVudC4KICAgICAvLyBBZGQgdGV4dCBub2RlcyBhbmQgPGJyPiBlbGVtZW50
cy4KLSAgICBhdXRvIGZyYWdtZW50ID0gdGV4dFRvRnJhZ21lbnQoZG9jdW1lbnQoKSwgdGV4dCk7
CisgICAgYXV0byBmcmFnbWVudCA9IHRleHRUb0ZyYWdtZW50KGRvY3VtZW50KCksIFdURk1vdmUo
dGV4dCkpOwogICAgIC8vIEl0J3Mgc2FmZSB0byBkaXNwYXRjaCBldmVudHMgb24gdGhlIG5ldyBm
cmFnbWVudCBzaW5jZSBhdXRob3Igc2NyaXB0cyBoYXZlIG5vIGFjY2VzcyB0byBpdCB5ZXQuCiAg
ICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpFdmVudEFsbG93ZWRTY29wZSBhbGxvd2VkU2NvcGUo
ZnJhZ21lbnQuZ2V0KCkpOwogICAgIHJldHVybiByZXBsYWNlQ2hpbGRyZW5XaXRoRnJhZ21lbnQo
KnRoaXMsIFdURk1vdmUoZnJhZ21lbnQpKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gSFRNTEVs
ZW1lbnQ6OnNldE91dGVyVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCitFeGNlcHRpb25Pcjx2b2lk
PiBIVE1MRWxlbWVudDo6c2V0T3V0ZXJUZXh0KFN0cmluZyYmIHRleHQpCiB7CiAgICAgUmVmUHRy
PENvbnRhaW5lck5vZGU+IHBhcmVudCA9IHBhcmVudE5vZGUoKTsKICAgICBpZiAoIXBhcmVudCkK
QEAgLTQ3Niw5ICs0NzYsOSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBIVE1MRWxlbWVudDo6c2V0T3V0
ZXJUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKIAogICAgIC8vIENvbnZlcnQgdGV4dCB0byBmcmFn
bWVudCB3aXRoIDxicj4gdGFncyBpbnN0ZWFkIG9mIGxpbmVicmVha3MgaWYgbmVlZGVkLgogICAg
IGlmICh0ZXh0LmNvbnRhaW5zKCdccicpIHx8IHRleHQuY29udGFpbnMoJ1xuJykpCi0gICAgICAg
IG5ld0NoaWxkID0gdGV4dFRvRnJhZ21lbnQoZG9jdW1lbnQoKSwgdGV4dCk7CisgICAgICAgIG5l
d0NoaWxkID0gdGV4dFRvRnJhZ21lbnQoZG9jdW1lbnQoKSwgV1RGTW92ZSh0ZXh0KSk7CiAgICAg
ZWxzZQotICAgICAgICBuZXdDaGlsZCA9IFRleHQ6OmNyZWF0ZShkb2N1bWVudCgpLCB0ZXh0KTsK
KyAgICAgICAgbmV3Q2hpbGQgPSBUZXh0OjpjcmVhdGUoZG9jdW1lbnQoKSwgV1RGTW92ZSh0ZXh0
KSk7CiAKICAgICBpZiAoIXBhcmVudE5vZGUoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEhpZXJhcmNoeVJlcXVlc3RFcnJvciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCmluZGV4
IGUwOGE4ZTcxZmNmZGI3ZjQ5YzBhYjA4Mjc1ZDQ3NmQxMzA5Y2E5NzQuLmU0ZjFkMWQ0OThhOWVi
NDIxY2ViNDdkOGYyYzliZWE5YWIyZjI5NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgK
QEAgLTUzLDggKzUzLDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRp
dGxlKCkgY29uc3QgZmluYWw7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lk
PiBzZXRJbm5lclRleHQoY29uc3QgU3RyaW5nJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0
aW9uT3I8dm9pZD4gc2V0T3V0ZXJUZXh0KGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldElubmVyVGV4dChTdHJpbmcmJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gc2V0T3V0ZXJUZXh0KFN0cmluZyYmKTsKIAogICAg
IHZpcnR1YWwgYm9vbCBoYXNDdXN0b21Gb2N1c0xvZ2ljKCkgY29uc3Q7CiAgICAgYm9vbCBzdXBw
b3J0c0ZvY3VzKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJF
bGVtZW50LmNwcAppbmRleCBiZDQ0ZTJkMDI4YTcwMDg4NjM2ZmYyNjYwNjM3N2ViZWRkZjk3N2M1
Li43ZWYwY2E5YjQwYmEwNGQ4OTA2NTY2ZTg5Mjg4Njk5N2UyZGQzNmIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5jcHAKQEAgLTIyOSw4ICsyMjksOCBAQCB2b2lkIEhU
TUxNZXRlckVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCYgcm9v
dCkKICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gc2hh
ZG93U3R5bGUoU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcobWV0ZXJFbGVtZW50U2hh
ZG93VXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKG1ldGVyRWxlbWVudFNoYWRvd1VzZXJBZ2Vu
dFN0eWxlU2hlZXQpKSk7CiAKICAgICBhdXRvIHN0eWxlID0gSFRNTFN0eWxlRWxlbWVudDo6Y3Jl
YXRlKEhUTUxOYW1lczo6c3R5bGVUYWcsIGRvY3VtZW50KCksIGZhbHNlKTsKLSAgICBzdHlsZS0+
c2V0VGV4dENvbnRlbnQoc2hhZG93U3R5bGUpOwotICAgIHJvb3QuYXBwZW5kQ2hpbGQoc3R5bGUp
OworICAgIHN0eWxlLT5zZXRUZXh0Q29udGVudChTdHJpbmcgeyBzaGFkb3dTdHlsZSB9KTsKKyAg
ICByb290LmFwcGVuZENoaWxkKFdURk1vdmUoc3R5bGUpKTsKIAogICAgIC8vIFBzZXVkb3MgYXJl
IHNldCB0byBhbGxvdyBhdXRob3Igc3R5bGluZy4KICAgICBhdXRvIGlubmVyID0gSFRNTERpdkVs
ZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9u
RWxlbWVudC5jcHAKaW5kZXggYzAxNzMzMzc4ODZmYjc5Y2UyYmM3OTlmMzBmYjQ4YTY0ZDBhYTQ5
OC4uZTIwZDNkYWQ0N2UxNDA3YWMyNDMwZDVkOTkzZDRlNzRmZTI2ZTE0YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKQEAgLTcwLDEyICs3MCwxMiBAQCBSZWY8
SFRNTE9wdGlvbkVsZW1lbnQ+IEhUTUxPcHRpb25FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxPcHRpb25F
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxIVE1MT3B0
aW9uRWxlbWVudD4+IEhUTUxPcHRpb25FbGVtZW50OjpjcmVhdGVGb3JMZWdhY3lGYWN0b3J5RnVu
Y3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEF0b21T
dHJpbmcmIHZhbHVlLCBib29sIGRlZmF1bHRTZWxlY3RlZCwgYm9vbCBzZWxlY3RlZCkKK0V4Y2Vw
dGlvbk9yPFJlZjxIVE1MT3B0aW9uRWxlbWVudD4+IEhUTUxPcHRpb25FbGVtZW50OjpjcmVhdGVG
b3JMZWdhY3lGYWN0b3J5RnVuY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmcmJiB0ZXh0
LCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSwgYm9vbCBkZWZhdWx0U2VsZWN0ZWQsIGJvb2wgc2Vs
ZWN0ZWQpCiB7CiAgICAgYXV0byBlbGVtZW50ID0gY3JlYXRlKGRvY3VtZW50KTsKIAogICAgIGlm
ICghdGV4dC5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBhcHBlbmRSZXN1bHQgPSBlbGVtZW50
LT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIHRleHQpKTsKKyAgICAgICAgYXV0
byBhcHBlbmRSZXN1bHQgPSBlbGVtZW50LT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1l
bnQsIFdURk1vdmUodGV4dCkpKTsKICAgICAgICAgaWYgKGFwcGVuZFJlc3VsdC5oYXNFeGNlcHRp
b24oKSkKICAgICAgICAgICAgIHJldHVybiBhcHBlbmRSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigp
OwogICAgIH0KQEAgLTExMiw3ICsxMTIsNyBAQCBTdHJpbmcgSFRNTE9wdGlvbkVsZW1lbnQ6OnRl
eHQoKSBjb25zdAogICAgIHJldHVybiBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMo
ZG9jdW1lbnQoKS5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKHRleHQpKS5zaW1wbGlm
eVdoaXRlU3BhY2UoaXNIVE1MU3BhY2UpOwogfQogCi12b2lkIEhUTUxPcHRpb25FbGVtZW50Ojpz
ZXRUZXh0KGNvbnN0IFN0cmluZyAmdGV4dCkKK3ZvaWQgSFRNTE9wdGlvbkVsZW1lbnQ6OnNldFRl
eHQoU3RyaW5nJiYgdGV4dCkKIHsKICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07CiAK
QEAgLTEyNiwxMCArMTI2LDEwIEBAIHZvaWQgSFRNTE9wdGlvbkVsZW1lbnQ6OnNldFRleHQoY29u
c3QgU3RyaW5nICZ0ZXh0KQogICAgIC8vIEhhbmRsZSB0aGUgY29tbW9uIHNwZWNpYWwgY2FzZSB3
aGVyZSB0aGVyZSdzIGV4YWN0bHkgMSBjaGlsZCBub2RlLCBhbmQgaXQncyBhIHRleHQgbm9kZS4K
ICAgICBSZWZQdHIgY2hpbGQgPSBmaXJzdENoaWxkKCk7CiAgICAgaWYgKGlzPFRleHQ+KGNoaWxk
KSAmJiAhY2hpbGQtPm5leHRTaWJsaW5nKCkpCi0gICAgICAgIGRvd25jYXN0PFRleHQ+KCpjaGls
ZCkuc2V0RGF0YSh0ZXh0KTsKKyAgICAgICAgZG93bmNhc3Q8VGV4dD4oKmNoaWxkKS5zZXREYXRh
KFdURk1vdmUodGV4dCkpOwogICAgIGVsc2UgewogICAgICAgICByZW1vdmVDaGlsZHJlbigpOwot
ICAgICAgICBhcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQoKSwgdGV4dCkpOworICAg
ICAgICBhcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQoKSwgV1RGTW92ZSh0ZXh0KSkp
OwogICAgIH0KICAgICAKICAgICBpZiAoc2VsZWN0SXNNZW51TGlzdCAmJiBzZWxlY3QtPnNlbGVj
dGVkSW5kZXgoKSAhPSBvbGRTZWxlY3RlZEluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0
aW9uRWxlbWVudC5oCmluZGV4IDZlMGJmNWM3ODc2MzJhZjA5NDU3OGQ4Yjk3ZmVmOTA4YzNjMmYx
YjUuLjk4NDg4YTQ3MjAxMTgxN2YyNDI1ODYzZmZkMmIxZTc4ZjY2ZjJjMzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmgKQEAgLTM3LDEwICszNywxMCBAQCBjbGFzcyBI
VE1MT3B0aW9uRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxIVE1MT3B0aW9uRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7CiAgICAg
c3RhdGljIFJlZjxIVE1MT3B0aW9uRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCYpOwotICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8SFRNTE9wdGlvbkVsZW1l
bnQ+PiBjcmVhdGVGb3JMZWdhY3lGYWN0b3J5RnVuY3Rpb24oRG9jdW1lbnQmLCBjb25zdCBTdHJp
bmcmIHRleHQsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlLCBib29sIGRlZmF1bHRTZWxlY3RlZCwg
Ym9vbCBzZWxlY3RlZCk7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxIVE1MT3B0aW9uRWxl
bWVudD4+IGNyZWF0ZUZvckxlZ2FjeUZhY3RvcnlGdW5jdGlvbihEb2N1bWVudCYsIFN0cmluZyYm
IHRleHQsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlLCBib29sIGRlZmF1bHRTZWxlY3RlZCwgYm9v
bCBzZWxlY3RlZCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdGV4dCgpIGNvbnN0Owot
ICAgIHZvaWQgc2V0VGV4dChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldFRleHQoU3RyaW5n
JiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IGluZGV4KCkgY29uc3Q7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKaW5kZXggMWZhMTZlZTc0ODQxM2EyY2Q5
MzMzNWE2NzU3ODhkNWE4ODM4ZWRjMC4uZDNiNjEwODE0OGE4MGU4NWVkY2Y2MjgxOWViMTRmOTU5
MGI4MDYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKQEAg
LTg3LDEwICs4NywxMCBAQCBTdHJpbmcgSFRNTE91dHB1dEVsZW1lbnQ6OnZhbHVlKCkgY29uc3QK
ICAgICByZXR1cm4gdGV4dENvbnRlbnQoKTsKIH0KIAotdm9pZCBIVE1MT3V0cHV0RWxlbWVudDo6
c2V0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgSFRNTE91dHB1dEVsZW1lbnQ6OnNl
dFZhbHVlKFN0cmluZyYmIHZhbHVlKQogewogICAgIG1fZGVmYXVsdFZhbHVlT3ZlcnJpZGUgPSBk
ZWZhdWx0VmFsdWUoKTsKLSAgICBzdHJpbmdSZXBsYWNlQWxsKHZhbHVlKTsKKyAgICBzdHJpbmdS
ZXBsYWNlQWxsKFdURk1vdmUodmFsdWUpKTsKIH0KIAogU3RyaW5nIEhUTUxPdXRwdXRFbGVtZW50
OjpkZWZhdWx0VmFsdWUoKSBjb25zdApAQCAtOTgsMTIgKzk4LDEyIEBAIFN0cmluZyBIVE1MT3V0
cHV0RWxlbWVudDo6ZGVmYXVsdFZhbHVlKCkgY29uc3QKICAgICByZXR1cm4gbV9kZWZhdWx0VmFs
dWVPdmVycmlkZS5pc051bGwoKSA/IHRleHRDb250ZW50KCkgOiBtX2RlZmF1bHRWYWx1ZU92ZXJy
aWRlOwogfQogCi12b2lkIEhUTUxPdXRwdXRFbGVtZW50OjpzZXREZWZhdWx0VmFsdWUoY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKK3ZvaWQgSFRNTE91dHB1dEVsZW1lbnQ6OnNldERlZmF1bHRWYWx1ZShT
dHJpbmcmJiB2YWx1ZSkKIHsKICAgICBpZiAobV9kZWZhdWx0VmFsdWVPdmVycmlkZS5pc051bGwo
KSkKLSAgICAgICAgc3RyaW5nUmVwbGFjZUFsbCh2YWx1ZSk7CisgICAgICAgIHN0cmluZ1JlcGxh
Y2VBbGwoV1RGTW92ZSh2YWx1ZSkpOwogICAgIGVsc2UKLSAgICAgICAgbV9kZWZhdWx0VmFsdWVP
dmVycmlkZSA9IHZhbHVlOworICAgICAgICBtX2RlZmF1bHRWYWx1ZU92ZXJyaWRlID0gV1RGTW92
ZSh2YWx1ZSk7CiB9CiAKIERPTVRva2VuTGlzdCYgSFRNTE91dHB1dEVsZW1lbnQ6Omh0bWxGb3Io
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5oCmluZGV4IGU0ODcxNzEzMjYz
M2IxNDllZDdjMzVmNjFkMDg0MjEzYmE0YzE0NmQuLjAyYzQ5Y2UwMGE2NDY1ODRmMGRkOGYxNjEx
N2ZkMWM0MDJkYWZhMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1
dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmgK
QEAgLTQ0LDkgKzQ0LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTE91dHB1dEVsZW1l
bnQ+IGNyZWF0ZShEb2N1bWVudCYpOwogCiAgICAgU3RyaW5nIHZhbHVlKCkgY29uc3Q7Ci0gICAg
dm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldFZhbHVlKFN0cmluZyYm
KTsKICAgICBTdHJpbmcgZGVmYXVsdFZhbHVlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXREZWZhdWx0
VmFsdWUoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXREZWZhdWx0VmFsdWUoU3RyaW5nJiYp
OwogICAgIERPTVRva2VuTGlzdCYgaHRtbEZvcigpOwogICAgIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggYjUzNTA5ZWJmM2Y3MjQ4M2Q3
ZGJjNTFhZmRkNzk2Y2Y1NWQ3MjYwOS4uMGU3ODIzYTVmZWJiNjQzMDM1MmY2NTI2MzYzZDdhMWJk
OTA1ZWIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKQEAg
LTg1LDkgKzg1LDkgQEAgdm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6ZGlkRmluaXNoSW5zZXJ0aW5n
Tm9kZSgpCiB9CiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3Nj
cmlwdGluZy5odG1sI2RvbS1zY3JpcHQtdGV4dAotdm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6c2V0
VGV4dChjb25zdCBTdHJpbmcmIHZhbHVlKQordm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6c2V0VGV4
dChTdHJpbmcmJiB2YWx1ZSkKIHsKLSAgICBzZXRUZXh0Q29udGVudCh2YWx1ZSk7CisgICAgc2V0
VGV4dENvbnRlbnQoV1RGTW92ZSh2YWx1ZSkpOwogfQogCiB2b2lkIEhUTUxTY3JpcHRFbGVtZW50
OjpzZXRBc3luYyhib29sIGFzeW5jKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MU2NyaXB0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVu
dC5oCmluZGV4IDYwM2NmZTEwMjhiZWM4OThlOTAyN2RlNmRiMDA2ODYzMTg0Y2VmYWEuLmMwNDMw
MzcwY2YzOTYxNGZhYTc4MGQ2NTJlMGUyNjBmMmI5N2U5NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTY3JpcHRFbGVtZW50LmgKQEAgLTM0LDcgKzM0LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBSZWY8SFRNTFNjcmlwdEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQmLCBib29sIHdhc0luc2VydGVkQnlQYXJzZXIsIGJvb2wgYWxyZWFkeVN0YXJ0ZWQgPSBm
YWxzZSk7CiAKICAgICBTdHJpbmcgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIHNjcmlwdENvbnRlbnQo
KTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGV4dChjb25zdCBTdHJpbmcmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRleHQoU3RyaW5nJiYpOwogCiAgICAgVVJMIHNyYygp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcApp
bmRleCAyZjEwY2VkODQxMzFlZDdlOWRkMTg3YTM0MDFjZmRjZGVjNGJhNDNlLi5mOGRmZTU0Njc0
OWJhYTY5Y2RhNjZhZmFjOTMyMDY3M2Y4MTg4NzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRBcmVhRWxlbWVudC5jcHAKQEAgLTQwNCw3ICs0MDQsNyBAQCB2b2lkIEhUTUxUZXh0
QXJlYUVsZW1lbnQ6OnNldFZhbHVlQ29tbW9uKGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIFRleHRG
aWVsZEV2ZW50QgogICAgICAgICByZXR1cm47CiAKICAgICBtX3ZhbHVlID0gbm9ybWFsaXplZFZh
bHVlOwotICAgIHNldElubmVyVGV4dFZhbHVlKG1fdmFsdWUpOworICAgIHNldElubmVyVGV4dFZh
bHVlKFN0cmluZyB7IG1fdmFsdWUgfSk7CiAgICAgc2V0TGFzdENoYW5nZVdhc05vdFVzZXJFZGl0
KCk7CiAgICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KCk7CiAgICAgaW52YWxpZGF0ZVN0
eWxlRm9yU3VidHJlZSgpOwpAQCAtNDI4LDkgKzQyOCw5IEBAIFN0cmluZyBIVE1MVGV4dEFyZWFF
bGVtZW50OjpkZWZhdWx0VmFsdWUoKSBjb25zdAogICAgIHJldHVybiBUZXh0Tm9kZVRyYXZlcnNh
bDo6Y2hpbGRUZXh0Q29udGVudCgqdGhpcyk7CiB9CiAKLXZvaWQgSFRNTFRleHRBcmVhRWxlbWVu
dDo6c2V0RGVmYXVsdFZhbHVlKGNvbnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlKQordm9pZCBIVE1M
VGV4dEFyZWFFbGVtZW50OjpzZXREZWZhdWx0VmFsdWUoU3RyaW5nJiYgZGVmYXVsdFZhbHVlKQog
ewotICAgIHNldFRleHRDb250ZW50KGRlZmF1bHRWYWx1ZSk7CisgICAgc2V0VGV4dENvbnRlbnQo
V1RGTW92ZShkZWZhdWx0VmFsdWUpKTsKIH0KIAogU3RyaW5nIEhUTUxUZXh0QXJlYUVsZW1lbnQ6
OnZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3QKQEAgLTU2MCw3ICs1NjAsNyBAQCB2b2lkIEhUTUxU
ZXh0QXJlYUVsZW1lbnQ6OnVwZGF0ZVBsYWNlaG9sZGVyVGV4dCgpCiAgICAgICAgIG1fcGxhY2Vo
b2xkZXIgPSBUZXh0Q29udHJvbFBsYWNlaG9sZGVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkp
OwogICAgICAgICB1c2VyQWdlbnRTaGFkb3dSb290KCktPmluc2VydEJlZm9yZSgqbV9wbGFjZWhv
bGRlciwgaW5uZXJUZXh0RWxlbWVudCgpLT5uZXh0U2libGluZygpKTsKICAgICB9Ci0gICAgbV9w
bGFjZWhvbGRlci0+c2V0SW5uZXJUZXh0KHBsYWNlaG9sZGVyVGV4dCk7CisgICAgbV9wbGFjZWhv
bGRlci0+c2V0SW5uZXJUZXh0KFN0cmluZyB7IHBsYWNlaG9sZGVyVGV4dCB9KTsKIH0KIAogYm9v
bCBIVE1MVGV4dEFyZWFFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCmluZGV4IGYxZmNhNzg5YzY3
MmJkNzcyOTMyYmFiNDU2ZDMwM2ZkODNhZmJlNTcuLjU4OTJhMGIxMjA4YWE0OWVmYWViNDYyODU2
NWMwNTA1NGU4NjkyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRB
cmVhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcg
dmFsdWUoKSBjb25zdCBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lk
PiBzZXRWYWx1ZShjb25zdCBTdHJpbmcmLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yID0gRGlzcGF0
Y2hOb0V2ZW50LCBUZXh0Q29udHJvbFNldFZhbHVlU2VsZWN0aW9uID0gVGV4dENvbnRyb2xTZXRW
YWx1ZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uVG9FbmQpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQ
T1JUIFN0cmluZyBkZWZhdWx0VmFsdWUoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldERlZmF1bHRWYWx1ZShjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldERlZmF1bHRWYWx1ZShTdHJpbmcmJik7CiAgICAgaW50IHRleHRMZW5ndGgoKSBjb25zdCB7
IHJldHVybiB2YWx1ZSgpLmxlbmd0aCgpOyB9CiAgICAgaW50IGVmZmVjdGl2ZU1heExlbmd0aCgp
IGNvbnN0IHsgcmV0dXJuIG1heExlbmd0aCgpOyB9CiAgICAgLy8gRm9yIFZhbGlkaXR5U3RhdGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5j
cHAKaW5kZXggZDY2ZDk5ZTVlNDZmMjZjNDI5ODZiMzE3ZjA0N2I5ZWVmMDYwNzc2Mi4uNmZiMTBm
NjcxMjVkODczYjM3YWYyNTNmYTBlMDVmNWMyM2FkOGJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTYxMSw3ICs2MTEs
NyBAQCBzdGF0aWMgU3RyaW5nIGlubmVyVGV4dFZhbHVlRnJvbShUZXh0Q29udHJvbElubmVyVGV4
dEVsZW1lbnQmIGlubmVyVGV4dCkKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAK
LXZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldElubmVyVGV4dFZhbHVlKGNvbnN0
IFN0cmluZyYgdmFsdWUpCit2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRJbm5l
clRleHRWYWx1ZShTdHJpbmcmJiB2YWx1ZSkKIHsKICAgICBMYXlvdXREaXNhbGxvd2VkU2NvcGUg
bGF5b3V0RGlzYWxsb3dlZFNjb3BlKExheW91dERpc2FsbG93ZWRTY29wZTo6UmVhc29uOjpQZXJm
b3JtYW5jZU9wdGltaXphdGlvbik7CiAgICAgYXV0byBpbm5lclRleHQgPSBpbm5lclRleHRFbGVt
ZW50Q3JlYXRpbmdTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKTsKQEAgLTY0Myw5ICs2NDMsMTAgQEAg
dm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0SW5uZXJUZXh0VmFsdWUoY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKICAgICAgICAgICAgIC8vIEV2ZW50cyBkaXNwYXRjaGVkIG9uIHRoZSBp
bm5lciB0ZXh0IGVsZW1lbnQgY2Fubm90IGV4ZWN1dGUgYXJiaXRyYXJ5IGF1dGhvciBzY3JpcHRz
LgogICAgICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpFdmVudEFsbG93ZWRTY29wZSBh
bGxvd2VkU2NvcGUoKnVzZXJBZ2VudFNoYWRvd1Jvb3QoKSk7CiAKLSAgICAgICAgICAgIGlubmVy
VGV4dC0+c2V0SW5uZXJUZXh0KHZhbHVlKTsKKyAgICAgICAgICAgIGJvb2wgZW5kc1dpdGhOZXdM
aW5lID0gdmFsdWUuZW5kc1dpdGgoJ1xuJykgfHwgdmFsdWUuZW5kc1dpdGgoJ1xyJyk7CisgICAg
ICAgICAgICBpbm5lclRleHQtPnNldElubmVyVGV4dChXVEZNb3ZlKHZhbHVlKSk7CiAKLSAgICAg
ICAgICAgIGlmICh2YWx1ZS5lbmRzV2l0aCgnXG4nKSB8fCB2YWx1ZS5lbmRzV2l0aCgnXHInKSkK
KyAgICAgICAgICAgIGlmIChlbmRzV2l0aE5ld0xpbmUpCiAgICAgICAgICAgICAgICAgaW5uZXJU
ZXh0LT5hcHBlbmRDaGlsZChIVE1MQlJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSkpOwogICAg
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQuaAppbmRleCA4MDMxNGQxYjE4YTc4ZmRhMGYyOGEzOWMzMmIwNDlmZTllMzIyM2QwLi43
ZDkzZjk1MGNjOWRlODBkMjkxZjAxODc2ZWE2Zjc2OThjMmM0MTM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCkBAIC05Nyw3ICs5Nyw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZChib29sIHNob3VsZEZpcmVT
ZWxlY3RFdmVudCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBsYXN0Q2hhbmdlV2FzVXNlckVk
aXQoKSBjb25zdDsKLSAgICB2b2lkIHNldElubmVyVGV4dFZhbHVlKGNvbnN0IFN0cmluZyYpOwor
ICAgIHZvaWQgc2V0SW5uZXJUZXh0VmFsdWUoU3RyaW5nJiYpOwogICAgIFN0cmluZyBpbm5lclRl
eHRWYWx1ZSgpIGNvbnN0OwogCiAgICAgU3RyaW5nIGRpcmVjdGlvbkZvckZvcm1EYXRhKCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcAppbmRleCBhNjcwN2Jl
NzI4YTE5ODdjZWYxNzM4MDZjMmJkNDY1MWMyYWI2YjYzLi4xNzMzOTUzODM1NTFkZDhkODI2ODJk
YmY1YjMzNmFiZjZkOTFlZDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
aXRsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVu
dC5jcHAKQEAgLTkwLDkgKzkwLDkgQEAgU3RyaW5nV2l0aERpcmVjdGlvbiBIVE1MVGl0bGVFbGVt
ZW50Ojpjb21wdXRlZFRleHRXaXRoRGlyZWN0aW9uKCkKICAgICByZXR1cm4geyB0ZXh0KCksIGRp
cmVjdGlvbiB9OwogfQogCi12b2lkIEhUTUxUaXRsZUVsZW1lbnQ6OnNldFRleHQoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKK3ZvaWQgSFRNTFRpdGxlRWxlbWVudDo6c2V0VGV4dChTdHJpbmcmJiB2YWx1
ZSkKIHsKLSAgICBzZXRUZXh0Q29udGVudCh2YWx1ZSk7CisgICAgc2V0VGV4dENvbnRlbnQoV1RG
TW92ZSh2YWx1ZSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUaXRsZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5o
CmluZGV4IDhjMzdhODliMTA5NjdmMGViNDk3MTYwNmE3ZWMwNDViZTY3NGIwZTQuLjgxZDE0YmZk
MTc1NWQ5NzI1YzRhMGRiZjAwMGFhYzQzMzliMjJkNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRpdGxlRWxlbWVudC5oCkBAIC0zMyw3ICszMyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PEhUTUxUaXRsZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQm
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0ZXh0KCkgY29uc3Q7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRUZXh0KGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0VGV4dChTdHJpbmcmJik7CiAKICAgICBjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9u
JiB0ZXh0V2l0aERpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGl0bGU7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCmluZGV4IDIzMzA4MmNlNzNiYmRi
OGJlODgwNDU3YTNmYTUwNjUwMDAyZTA2ZWQuLmFlNTgzYjgwODI0YTliMWQ3ZTRmYThlNzQxNWYy
NzY0Y2E1YWYzYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5w
dXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5j
cHAKQEAgLTY2MCw3ICs2NjAsNyBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6dXBkYXRlUGxh
Y2Vob2xkZXJUZXh0KCkKICAgICAgICAgbV9wbGFjZWhvbGRlciA9IFRleHRDb250cm9sUGxhY2Vo
b2xkZXJFbGVtZW50OjpjcmVhdGUoZWxlbWVudCgpLT5kb2N1bWVudCgpKTsKICAgICAgICAgZWxl
bWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCktPmluc2VydEJlZm9yZSgqbV9wbGFjZWhvbGRl
ciwgbV9jb250YWluZXIgPyBtX2NvbnRhaW5lci5nZXQoKSA6IGlubmVyVGV4dEVsZW1lbnQoKS5n
ZXQoKSk7CiAgICAgfQotICAgIG1fcGxhY2Vob2xkZXItPnNldElubmVyVGV4dChwbGFjZWhvbGRl
clRleHQpOworICAgIG1fcGxhY2Vob2xkZXItPnNldElubmVyVGV4dChXVEZNb3ZlKHBsYWNlaG9s
ZGVyVGV4dCkpOwogfQogCiBib29sIFRleHRGaWVsZElucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEo
RE9NRm9ybURhdGEmIGZvcm1EYXRhKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvQXRvbUhUTUxUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
QXRvbUhUTUxUb2tlbi5oCmluZGV4IDQ2NGVjMTA3NWU0M2NlM2YyODhhNzA3NmEyNmYxMWMyNDJh
MjVhZjAuLjllZDdhNmE1YTVlZDQ0YWI2YjNmNWFmZWQyMjNlMGFjODUzOGU3MmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21IVE1MVG9rZW4uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9BdG9tSFRNTFRva2VuLmgKQEAgLTc0LDYgKzc0LDcgQEAg
cHVibGljOgogICAgIC8vIENvbW1lbnQKIAogICAgIGNvbnN0IFN0cmluZyYgY29tbWVudCgpIGNv
bnN0OworICAgIFN0cmluZyYgY29tbWVudCgpOwogCiAgICAgSGFzRHVwbGljYXRlQXR0cmlidXRl
IGhhc0R1cGxpY2F0ZUF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzRHVwbGljYXRlQXR0
cmlidXRlOyB9OwogCkBAIC0xNjIsNiArMTYzLDEyIEBAIGlubGluZSBjb25zdCBTdHJpbmcmIEF0
b21IVE1MVG9rZW46OmNvbW1lbnQoKSBjb25zdAogICAgIHJldHVybiBtX2RhdGE7CiB9CiAKK2lu
bGluZSBTdHJpbmcmIEF0b21IVE1MVG9rZW46OmNvbW1lbnQoKQoreworICAgIEFTU0VSVChtX3R5
cGUgPT0gSFRNTFRva2VuOjpDb21tZW50KTsKKyAgICByZXR1cm4gbV9kYXRhOworfQorCiBpbmxp
bmUgYm9vbCBBdG9tSFRNTFRva2VuOjpmb3JjZVF1aXJrcygpIGNvbnN0CiB7CiAgICAgQVNTRVJU
KG1fdHlwZSA9PSBIVE1MVG9rZW46OkRPQ1RZUEUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCmluZGV4IDE1ZGNmZmI4MmYxODk0
OTAyMjFhOWNmODI1Njk1YmNkYTNmODZiNDkuLjM2MTA2ZTM1ZDIzMzEzMWFlZTRiMGU1Y2VmMTM5
OGMxMjBhNGYzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxD
b25zdHJ1Y3Rpb25TaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
Q29uc3RydWN0aW9uU2l0ZS5jcHAKQEAgLTQ1MiwyMCArNDUyLDIwIEBAIHZvaWQgSFRNTENvbnN0
cnVjdGlvblNpdGU6Omluc2VydERvY3R5cGUoQXRvbUhUTUxUb2tlbiYmIHRva2VuKQogdm9pZCBI
VE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0Q29tbWVudChBdG9tSFRNTFRva2VuJiYgdG9rZW4p
CiB7CiAgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OkNvbW1lbnQpOwotICAg
IGF0dGFjaExhdGVyKGN1cnJlbnROb2RlKCksIENvbW1lbnQ6OmNyZWF0ZShvd25lckRvY3VtZW50
Rm9yQ3VycmVudE5vZGUoKSwgdG9rZW4uY29tbWVudCgpKSk7CisgICAgYXR0YWNoTGF0ZXIoY3Vy
cmVudE5vZGUoKSwgQ29tbWVudDo6Y3JlYXRlKG93bmVyRG9jdW1lbnRGb3JDdXJyZW50Tm9kZSgp
LCBXVEZNb3ZlKHRva2VuLmNvbW1lbnQoKSkpKTsKIH0KIAogdm9pZCBIVE1MQ29uc3RydWN0aW9u
U2l0ZTo6aW5zZXJ0Q29tbWVudE9uRG9jdW1lbnQoQXRvbUhUTUxUb2tlbiYmIHRva2VuKQogewog
ICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpDb21tZW50KTsKLSAgICBhdHRh
Y2hMYXRlcihtX2F0dGFjaG1lbnRSb290LCBDb21tZW50OjpjcmVhdGUobV9kb2N1bWVudCwgdG9r
ZW4uY29tbWVudCgpKSk7CisgICAgYXR0YWNoTGF0ZXIobV9hdHRhY2htZW50Um9vdCwgQ29tbWVu
dDo6Y3JlYXRlKG1fZG9jdW1lbnQsIFdURk1vdmUodG9rZW4uY29tbWVudCgpKSkpOwogfQogCiB2
b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRDb21tZW50T25IVE1MSHRtbEVsZW1lbnQo
QXRvbUhUTUxUb2tlbiYmIHRva2VuKQogewogICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRN
TFRva2VuOjpDb21tZW50KTsKICAgICBDb250YWluZXJOb2RlJiBwYXJlbnQgPSBtX29wZW5FbGVt
ZW50cy5yb290Tm9kZSgpOwotICAgIGF0dGFjaExhdGVyKHBhcmVudCwgQ29tbWVudDo6Y3JlYXRl
KHBhcmVudC5kb2N1bWVudCgpLCB0b2tlbi5jb21tZW50KCkpKTsKKyAgICBhdHRhY2hMYXRlcihw
YXJlbnQsIENvbW1lbnQ6OmNyZWF0ZShwYXJlbnQuZG9jdW1lbnQoKSwgV1RGTW92ZSh0b2tlbi5j
b21tZW50KCkpKSk7CiB9CiAKIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydEhUTUxI
ZWFkRWxlbWVudChBdG9tSFRNTFRva2VuJiYgdG9rZW4pCkBAIC02MDAsNyArNjAwLDcgQEAgdm9p
ZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0VGV4dE5vZGUoY29uc3QgU3RyaW5nJiBjaGFy
YWN0ZXJzLCBXaGl0ZXNwYWNlTW8KICAgICAgICAgaWYgKCF0ZXh0Tm9kZS0+bGVuZ3RoKCkpIHsK
ICAgICAgICAgICAgIFN0cmluZyBzdWJzdHJpbmcgPSBjaGFyYWN0ZXJzLnN1YnN0cmluZyhjdXJy
ZW50UG9zaXRpb24pOwogICAgICAgICAgICAgQXRvbVN0cmluZyBzdWJzdHJpbmdBdG9tID0gbV93
aGl0ZXNwYWNlQ2FjaGUubG9va3VwKHN1YnN0cmluZywgd2hpdGVzcGFjZU1vZGUpOwotICAgICAg
ICAgICAgdGV4dE5vZGUgPSBUZXh0OjpjcmVhdGUodGFzay5wYXJlbnQtPmRvY3VtZW50KCksIHN1
YnN0cmluZ0F0b20uaXNOdWxsKCkgPyBzdWJzdHJpbmcgOiBzdWJzdHJpbmdBdG9tLnN0cmluZygp
KTsKKyAgICAgICAgICAgIHRleHROb2RlID0gVGV4dDo6Y3JlYXRlKHRhc2sucGFyZW50LT5kb2N1
bWVudCgpLCBzdWJzdHJpbmdBdG9tLmlzTnVsbCgpID8gV1RGTW92ZShzdWJzdHJpbmcpIDogc3Vi
c3RyaW5nQXRvbS5yZWxlYXNlU3RyaW5nKCkpOwogICAgICAgICB9CiAKICAgICAgICAgY3VycmVu
dFBvc2l0aW9uICs9IHRleHROb2RlLT5sZW5ndGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRWRpdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvRGF0ZVRpbWVFZGl0RWxlbWVudC5jcHAKaW5kZXggZDdkZmE3MzBmYWNmNzA3
NzhjZTVkYWY2MzRkNzdiMTExMTJiYzhhMy4uNGUyNzY3NmNkYTgxYjUwZTM1YTU5ODExMGVlNzBh
ZWZlYWYxNWFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRp
bWVFZGl0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRp
bWVFZGl0RWxlbWVudC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICAvLyBEYXRlVGltZUZvcm1hdDo6VG9rZW5IYW5kbGVyIGZ1bmN0aW9uczoKICAgICB2b2lkIHZp
c2l0RmllbGQoRGF0ZVRpbWVGb3JtYXQ6OkZpZWxkVHlwZSwgaW50KTsKLSAgICB2b2lkIHZpc2l0
TGl0ZXJhbChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHZpc2l0TGl0ZXJhbChTdHJpbmcmJik7
CiAKICAgICBEYXRlVGltZUVkaXRFbGVtZW50JiBtX2VkaXRFbGVtZW50OwogICAgIGNvbnN0IERh
dGVUaW1lRWRpdEVsZW1lbnQ6OkxheW91dFBhcmFtZXRlcnMmIG1fcGFyYW1ldGVyczsKQEAgLTE2
Nyw3ICsxNjcsNyBAQCB2b2lkIERhdGVUaW1lRWRpdEJ1aWxkZXI6OnZpc2l0RmllbGQoRGF0ZVRp
bWVGb3JtYXQ6OkZpZWxkVHlwZSBmaWVsZFR5cGUsIGludCBjbwogICAgIH0KIH0KIAotdm9pZCBE
YXRlVGltZUVkaXRCdWlsZGVyOjp2aXNpdExpdGVyYWwoY29uc3QgU3RyaW5nJiB0ZXh0KQordm9p
ZCBEYXRlVGltZUVkaXRCdWlsZGVyOjp2aXNpdExpdGVyYWwoU3RyaW5nJiYgdGV4dCkKIHsKICAg
ICBBU1NFUlQodGV4dC5sZW5ndGgoKSk7CiAKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIERhdGVU
aW1lRWRpdEJ1aWxkZXI6OnZpc2l0TGl0ZXJhbChjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgaWYg
KHRleHQuZW5kc1dpdGgoJyAnKSkKICAgICAgICAgZWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9w
ZXJ0eShDU1NQcm9wZXJ0eU1hcmdpbklubGluZUVuZCwgLTEsIENTU1VuaXRUeXBlOjpDU1NfUFgp
OwogCi0gICAgZWxlbWVudC0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKG1fZWRpdEVsZW1lbnQu
ZG9jdW1lbnQoKSwgdGV4dCkpOworICAgIGVsZW1lbnQtPmFwcGVuZENoaWxkKFRleHQ6OmNyZWF0
ZShtX2VkaXRFbGVtZW50LmRvY3VtZW50KCksIFdURk1vdmUodGV4dCkpKTsKICAgICBtX2VkaXRF
bGVtZW50LmZpZWxkc1dyYXBwZXJFbGVtZW50KCkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRmllbGRFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50
LmNwcAppbmRleCA5ZTRmNjMzOGVlODA2Y2RkNWRiNTY1ZDNlYTk2NjVlNDlhZTQ2Mzk5Li40MWFj
ZGJhMTgwYmJhNDRmMzhhMWZkYmI5NTY0MDg0NmRmZTAyY2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnQuY3BwCkBAIC0xODgsNyAr
MTg4LDcgQEAgU3RyaW5nIERhdGVUaW1lRmllbGRFbGVtZW50Ojp2aXNpYmxlVmFsdWUoKSBjb25z
dAogdm9pZCBEYXRlVGltZUZpZWxkRWxlbWVudDo6dXBkYXRlVmlzaWJsZVZhbHVlKEV2ZW50QmVo
YXZpb3IgZXZlbnRCZWhhdmlvcikKIHsKICAgICBpZiAoIWZpcnN0Q2hpbGQoKSkKLSAgICAgICAg
YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50KCksIGVtcHR5U3RyaW5nKCkpKTsKKyAg
ICAgICAgYXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50KCksIFN0cmluZyB7IGVtcHR5
U3RyaW5nKCkgfSkpOwogCiAgICAgYXV0byYgdGV4dE5vZGUgPSBkb3duY2FzdDxUZXh0PigqZmly
c3RDaGlsZCgpKTsKICAgICBTdHJpbmcgbmV3VmlzaWJsZVZhbHVlID0gdmlzaWJsZVZhbHVlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKaW5kZXggNzdjNmEx
NjBiYTk1YmQ1YTI4NmM1ZGE3NDkzOTgzNWU1MWI5YWQzZC4uYjMzZTJhYTIwNDA4YWNmM2YxMWEx
OTQxYTc5NDQyZjUyMGU0ZDBmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2tDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrQ3VlLmNwcApAQCAtNTEwLDggKzUxMCw4IEBAIHZvaWQgVGV4dFRyYWNrQ3VlOjpyZWJ1aWxk
RGlzcGxheVRyZWUoKQogICAgICAgICBpZiAoY29uc3QgYXV0byYgc3R5bGVTaGVldHMgPSB0cmFj
aygpLT5zdHlsZVNoZWV0cygpKSB7CiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNzc1N0
cmluZyA6ICpzdHlsZVNoZWV0cykgewogICAgICAgICAgICAgICAgIGF1dG8gc3R5bGUgPSBIVE1M
U3R5bGVFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjpzdHlsZVRhZywgbV9kaXNwbGF5VHJlZS0+
ZG9jdW1lbnQoKSwgZmFsc2UpOwotICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRUZXh0Q29udGVu
dChjc3NTdHJpbmcpOwotICAgICAgICAgICAgICAgIG1fZGlzcGxheVRyZWUtPmFwcGVuZENoaWxk
KHN0eWxlKTsKKyAgICAgICAgICAgICAgICBzdHlsZS0+c2V0VGV4dENvbnRlbnQoU3RyaW5nIHsg
Y3NzU3RyaW5nIH0pOworICAgICAgICAgICAgICAgIG1fZGlzcGxheVRyZWUtPmFwcGVuZENoaWxk
KFdURk1vdmUoc3R5bGUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAppbmRleCBlNzNkY2NhMjM4ZGE4Y2FhYWNlN2Y1OTAx
M2NmNmNhNzMwMzY5ZWQyLi5hYmY3NTY5NjRjMzc5ZTg3NzRkYWNlYWI4MTIwZTI4ZmNkMTRhYTdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCkBAIC0xMDAxLDE2ICsxMDAxLDE2
IEBAIFJlZlB0cjxUZXh0VHJhY2tDdWVCb3g+IFZUVEN1ZTo6Z2V0RGlzcGxheVRyZWUoY29uc3Qg
SW50U2l6ZSYgdmlkZW9TaXplLCBpbnQgZm9uCiAgICAgaWYgKGRpc3BsYXlUcmVlLT5kb2N1bWVu
dCgpLnBhZ2UoKSkgewogICAgICAgICBhdXRvIGNzc1N0cmluZyA9IGRpc3BsYXlUcmVlLT5kb2N1
bWVudCgpLnBhZ2UoKS0+Y2FwdGlvblVzZXJQcmVmZXJlbmNlc1N0eWxlU2hlZXQoKTsKICAgICAg
ICAgYXV0byBzdHlsZSA9IEhUTUxTdHlsZUVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OnN0eWxl
VGFnLCBkaXNwbGF5VHJlZS0+ZG9jdW1lbnQoKSwgZmFsc2UpOwotICAgICAgICBzdHlsZS0+c2V0
VGV4dENvbnRlbnQoY3NzU3RyaW5nKTsKLSAgICAgICAgZGlzcGxheVRyZWUtPmFwcGVuZENoaWxk
KHN0eWxlKTsKKyAgICAgICAgc3R5bGUtPnNldFRleHRDb250ZW50KFdURk1vdmUoY3NzU3RyaW5n
KSk7CisgICAgICAgIGRpc3BsYXlUcmVlLT5hcHBlbmRDaGlsZChXVEZNb3ZlKHN0eWxlKSk7CiAg
ICAgfQogCiAgICAgY29uc3QgYXV0byYgc3R5bGVTaGVldHMgPSB0cmFjaygpLT5zdHlsZVNoZWV0
cygpOwogICAgIGlmIChzdHlsZVNoZWV0cykgewogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNz
c1N0cmluZyA6ICpzdHlsZVNoZWV0cykgewogICAgICAgICAgICAgYXV0byBzdHlsZSA9IEhUTUxT
dHlsZUVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OnN0eWxlVGFnLCBkaXNwbGF5VHJlZS0+ZG9j
dW1lbnQoKSwgZmFsc2UpOwotICAgICAgICAgICAgc3R5bGUtPnNldFRleHRDb250ZW50KGNzc1N0
cmluZyk7Ci0gICAgICAgICAgICBkaXNwbGF5VHJlZS0+YXBwZW5kQ2hpbGQoc3R5bGUpOworICAg
ICAgICAgICAgc3R5bGUtPnNldFRleHRDb250ZW50KFN0cmluZyB7IGNzc1N0cmluZyB9KTsKKyAg
ICAgICAgICAgIGRpc3BsYXlUcmVlLT5hcHBlbmRDaGlsZChXVEZNb3ZlKHN0eWxlKSk7CiAgICAg
ICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2Vi
VlRUUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNw
cAppbmRleCA4ZmQxYzMzNWIwNjY3MDg1MTQ5OTNlY2M5ZDdiZTRjMGNlZTlmYjI2Li5mOGRkYmQz
ODA1YjQ1ODBhOGQ3NjQ0ODkxMjNjZDkyMWVjMjYwNWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCkBAIC01MTksNyArNTE5LDcgQEAgUmVmPERvY3VtZW50
RnJhZ21lbnQ+IFdlYlZUVFRyZWVCdWlsZGVyOjpidWlsZEZyb21TdHJpbmcoY29uc3QgU3RyaW5n
JiBjdWVUZXh0KQogICAgIGF1dG8gZnJhZ21lbnQgPSBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUo
bV9kb2N1bWVudCk7CiAKICAgICBpZiAoY3VlVGV4dC5pc0VtcHR5KCkpIHsKLSAgICAgICAgZnJh
Z21lbnQtPnBhcnNlckFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShtX2RvY3VtZW50LCBlbXB0eVN0
cmluZygpKSk7CisgICAgICAgIGZyYWdtZW50LT5wYXJzZXJBcHBlbmRDaGlsZChUZXh0OjpjcmVh
dGUobV9kb2N1bWVudCwgU3RyaW5nIHsgZW1wdHlTdHJpbmcoKSB9KSk7CiAgICAgICAgIHJldHVy
biBmcmFnbWVudDsKICAgICB9CiAKQEAgLTY1MCw3ICs2NTAsNyBAQCB2b2lkIFdlYlZUVFRyZWVC
dWlsZGVyOjpjb25zdHJ1Y3RUcmVlRnJvbVRva2VuKERvY3VtZW50JiBkb2N1bWVudCkKIAogICAg
IHN3aXRjaCAobV90b2tlbi50eXBlKCkpIHsKICAgICBjYXNlIFdlYlZUVFRva2VuVHlwZXM6OkNo
YXJhY3RlcjogewotICAgICAgICBtX2N1cnJlbnROb2RlLT5wYXJzZXJBcHBlbmRDaGlsZChUZXh0
OjpjcmVhdGUoZG9jdW1lbnQsIG1fdG9rZW4uY2hhcmFjdGVycygpKSk7CisgICAgICAgIG1fY3Vy
cmVudE5vZGUtPnBhcnNlckFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVudCwgU3RyaW5n
IHsgbV90b2tlbi5jaGFyYWN0ZXJzKCkgfSkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
Y2FzZSBXZWJWVFRUb2tlblR5cGVzOjpTdGFydFRhZzogewpAQCAtNzA5LDcgKzcwOSw3IEBAIHZv
aWQgV2ViVlRUVHJlZUJ1aWxkZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4oRG9jdW1lbnQmIGRv
Y3VtZW50KQogICAgICAgICBTdHJpbmcgY2hhcmFjdGVyc1N0cmluZyA9IG1fdG9rZW4uY2hhcmFj
dGVycygpOwogICAgICAgICBNZWRpYVRpbWUgcGFyc2VkVGltZVN0YW1wOwogICAgICAgICBpZiAo
V2ViVlRUUGFyc2VyOjpjb2xsZWN0VGltZVN0YW1wKGNoYXJhY3RlcnNTdHJpbmcsIHBhcnNlZFRp
bWVTdGFtcCkpCi0gICAgICAgICAgICBtX2N1cnJlbnROb2RlLT5wYXJzZXJBcHBlbmRDaGlsZChQ
cm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNyZWF0ZShkb2N1bWVudCwgInRpbWVzdGFtcCJfcywgY2hh
cmFjdGVyc1N0cmluZykpOworICAgICAgICAgICAgbV9jdXJyZW50Tm9kZS0+cGFyc2VyQXBwZW5k
Q2hpbGQoUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjcmVhdGUoZG9jdW1lbnQsICJ0aW1lc3RhbXAi
X3MsIFdURk1vdmUoY2hhcmFjdGVyc1N0cmluZykpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IGU2
ZmM3OWEwMjExMjQ0ZmNjN2UwOTQ5M2NiZWU5MGIwN2UxMjhkMWEuLjIxMWEzZjBjMGE5NjRkN2E3
Y2NkNzExZDZhYjkwZjZkYjU5ZGY0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwCkBAIC0xNzAsNyArMTcwLDcgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBkb2N1bWVudEZyYWdtZW50RnJvbURyYWdEYXRhKGNvbnN0IERyYWdEYXRhJiBkcmEKICAgICAg
ICAgICAgICAgICAgICAgaWYgKHRpdGxlLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIHRpdGxlID0gdXJsOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBhbmNo
b3ItPmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRpdGxlKSk7CisgICAgICAg
ICAgICAgICAgYW5jaG9yLT5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShXVEZN
b3ZlKHRpdGxlKSkpOwogICAgICAgICAgICAgICAgIGF1dG8gZnJhZ21lbnQgPSBkb2N1bWVudC5j
cmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAgICAgICAgICAgICAgICAgZnJhZ21lbnQtPmFwcGVu
ZENoaWxkKGFuY2hvcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZyYWdtZW50OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9EYXRlVGltZUZvcm1hdC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9EYXRlVGltZUZvcm1hdC5oCmluZGV4IGEzNzI2ZGZm
YmUxZjNlMTlkN2E4MzFkNzcwNzY5M2UxNWM2NTY2N2YuLjhkZTE5MDQ0YWFjMDI3YmYyZTZmYWVi
NTUwZDQ5MGY3OTFkYWI5MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvRGF0ZVRpbWVGb3JtYXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0Rh
dGVUaW1lRm9ybWF0LmgKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHB1YmxpYzoKICAg
ICAgICAgdmlydHVhbCB+VG9rZW5IYW5kbGVyKCkgPSBkZWZhdWx0OwogICAgICAgICB2aXJ0dWFs
IHZvaWQgdmlzaXRGaWVsZChGaWVsZFR5cGUsIGludCBudW1iZXJPZlBhdHRlcm5DaGFyYWN0ZXJz
KSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdExpdGVyYWwoY29uc3QgU3RyaW5nJikg
PSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRMaXRlcmFsKFN0cmluZyYmKSA9IDA7CiAg
ICAgfTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBzdWNjZWVkZWQsIGZhbHNlIGlmIGZhaWxl
ZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxhdGZvcm1Mb2Nh
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5jcHAK
aW5kZXggZjQ3MjAwYjU3MjE2OGQ0ZWVmYWE3NGU5MDc1NzFhZDVjOTJhYjAxOS4uYTMyYmE5MGUz
YWE5MDBjZDQwMjg2ZDBjN2UxMzg3YWNkZjY3YTgzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICAvLyBEYXRlVGltZUZvcm1hdDo6VG9rZW5IYW5kbGVyIGZ1bmN0aW9u
cy4KICAgICB2b2lkIHZpc2l0RmllbGQoRGF0ZVRpbWVGb3JtYXQ6OkZpZWxkVHlwZSwgaW50KSBm
aW5hbDsKLSAgICB2b2lkIHZpc2l0TGl0ZXJhbChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2
b2lkIHZpc2l0TGl0ZXJhbChTdHJpbmcmJikgZmluYWw7CiAKICAgICBTdHJpbmcgemVyb1BhZFN0
cmluZyhjb25zdCBTdHJpbmcmLCBzaXplX3Qgd2lkdGgpOwogICAgIHZvaWQgYXBwZW5kTnVtYmVy
KGludCBudW1iZXIsIHNpemVfdCB3aWR0aCk7CkBAIC0xNjgsMTAgKzE2OCwxMCBAQCB2b2lkIERh
dGVUaW1lU3RyaW5nQnVpbGRlcjo6dmlzaXRGaWVsZChEYXRlVGltZUZvcm1hdDo6RmllbGRUeXBl
IGZpZWxkVHlwZSwgaW50CiAgICAgfQogfQogCi12b2lkIERhdGVUaW1lU3RyaW5nQnVpbGRlcjo6
dmlzaXRMaXRlcmFsKGNvbnN0IFN0cmluZyYgdGV4dCkKK3ZvaWQgRGF0ZVRpbWVTdHJpbmdCdWls
ZGVyOjp2aXNpdExpdGVyYWwoU3RyaW5nJiYgdGV4dCkKIHsKICAgICBBU1NFUlQodGV4dC5sZW5n
dGgoKSk7Ci0gICAgbV9idWlsZGVyLmFwcGVuZCh0ZXh0KTsKKyAgICBtX2J1aWxkZXIuYXBwZW5k
KFdURk1vdmUodGV4dCkpOwogfQogCiBTdHJpbmcgRGF0ZVRpbWVTdHJpbmdCdWlsZGVyOjp0b1N0
cmluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAppbmRleCBhYWRhYzk5ZTUw
NTlhZGVkNTQyOWViYTNmZjRlOTUxYmI2NmM0YWY4Li44MDMwZDUzYTI4OGVkOWU0MDllZTBmYzYz
ZWY0MzAwMzFmOTcwMGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKQEAg
LTE0NSwxMCArMTQ1LDEwIEBAIHZvaWQgU1ZHVFJlZkVsZW1lbnQ6OnVwZGF0ZVJlZmVyZW5jZWRU
ZXh0KEVsZW1lbnQqIHRhcmdldCkKICAgICBBU1NFUlQocm9vdCk7CiAgICAgU2NyaXB0RGlzYWxs
b3dlZFNjb3BlOjpFdmVudEFsbG93ZWRTY29wZSBhbGxvd2VkU2NvcGUoKnJvb3QpOwogICAgIGlm
ICghcm9vdC0+Zmlyc3RDaGlsZCgpKQotICAgICAgICByb290LT5hcHBlbmRDaGlsZChUZXh0Ojpj
cmVhdGUoZG9jdW1lbnQoKSwgdGV4dENvbnRlbnQpKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kQ2hp
bGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50KCksIFdURk1vdmUodGV4dENvbnRlbnQpKSk7CiAgICAg
ZWxzZSB7CiAgICAgICAgIEFTU0VSVChyb290LT5maXJzdENoaWxkKCktPmlzVGV4dE5vZGUoKSk7
Ci0gICAgICAgIHJvb3QtPmZpcnN0Q2hpbGQoKS0+c2V0VGV4dENvbnRlbnQodGV4dENvbnRlbnQp
OworICAgICAgICByb290LT5maXJzdENoaWxkKCktPnNldFRleHRDb250ZW50KFdURk1vdmUodGV4
dENvbnRlbnQpKTsKICAgICB9CiB9CiAKQEAgLTE1NywxMiArMTU3LDEwIEBAIHZvaWQgU1ZHVFJl
ZkVsZW1lbnQ6OmRldGFjaFRhcmdldCgpCiAgICAgLy8gUmVtb3ZlIGFjdGl2ZSBsaXN0ZW5lcnMg
YW5kIGNsZWFyIHRoZSB0ZXh0IGNvbnRlbnQuCiAgICAgbV90YXJnZXRMaXN0ZW5lci0+ZGV0YWNo
KCk7CiAKLSAgICBTdHJpbmcgZW1wdHlDb250ZW50OwotCiAgICAgQVNTRVJUKHNoYWRvd1Jvb3Qo
KSk7CiAgICAgUmVmUHRyIGNvbnRhaW5lciA9IHNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpOwog
ICAgIGlmIChjb250YWluZXIpCi0gICAgICAgIGNvbnRhaW5lci0+c2V0VGV4dENvbnRlbnQoZW1w
dHlDb250ZW50KTsKKyAgICAgICAgY29udGFpbmVyLT5zZXRUZXh0Q29udGVudChTdHJpbmcgeyB9
KTsKIAogICAgIGlmICghaXNDb25uZWN0ZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MRXJyb3JzLmNwcAppbmRleCBlZjRjZGVhYmRlNDlkZWM0MDQyYTZmODMyNTBiNmUyZjc3MjYw
MTU1Li43YTAyYzE4Yjk2Y2I0ZWY4NDBmMWFkMmZmNGVlMjA5NzRiYzJiYTBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MRXJyb3JzLmNwcApAQCAtODEsNyArODEsNyBAQCB2b2lkIFhNTEVycm9yczo6YXBwZW5k
RXJyb3JNZXNzYWdlKEFTQ0lJTGl0ZXJhbCB0eXBlU3RyaW5nLCBUZXh0UG9zaXRpb24gcG9zaXRp
bwogICAgIG1fZXJyb3JNZXNzYWdlcy5hcHBlbmQodHlwZVN0cmluZywgIiBvbiBsaW5lICIsIHBv
c2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpLCAiIGF0IGNvbHVtbiAiLCBwb3NpdGlvbi5tX2Nv
bHVtbi5vbmVCYXNlZEludCgpLCAiOiAiLCBtZXNzYWdlKTsKIH0KIAotc3RhdGljIGlubGluZSBS
ZWY8RWxlbWVudD4gY3JlYXRlWEhUTUxQYXJzZXJFcnJvckhlYWRlcihEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlcykKK3N0YXRpYyBpbmxpbmUgUmVmPEVsZW1l
bnQ+IGNyZWF0ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJp
bmcmJiBlcnJvck1lc3NhZ2VzKQogewogICAgIFJlZjxFbGVtZW50PiByZXBvcnRFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChRdWFsaWZpZWROYW1lKG51bGxBdG9tKCksICJwYXJzZXJl
cnJvciJfcywgeGh0bWxOYW1lc3BhY2VVUkkpLCB0cnVlKTsKIApAQCAtOTksNyArOTksNyBAQCBz
dGF0aWMgaW5saW5lIFJlZjxFbGVtZW50PiBjcmVhdGVYSFRNTFBhcnNlckVycm9ySGVhZGVyKERv
Y3VtZW50JiBkb2N1bWVudCwgY29ucwogICAgIGZpeGVkLT5wYXJzZXJTZXRBdHRyaWJ1dGVzKGZp
eGVkQXR0cmlidXRlcyk7CiAgICAgcmVwb3J0RWxlbWVudC0+cGFyc2VyQXBwZW5kQ2hpbGQoZml4
ZWQpOwogCi0gICAgZml4ZWQtPnBhcnNlckFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVu
dCwgZXJyb3JNZXNzYWdlcykpOworICAgIGZpeGVkLT5wYXJzZXJBcHBlbmRDaGlsZChUZXh0Ojpj
cmVhdGUoZG9jdW1lbnQsIFdURk1vdmUoZXJyb3JNZXNzYWdlcykpKTsKIAogICAgIGgzID0gSFRN
TEhlYWRpbmdFbGVtZW50OjpjcmVhdGUoaDNUYWcsIGRvY3VtZW50KTsKICAgICByZXBvcnRFbGVt
ZW50LT5wYXJzZXJBcHBlbmRDaGlsZChoMyk7CkBAIC0xNDIsOCArMTQyLDcgQEAgdm9pZCBYTUxF
cnJvcnM6Omluc2VydEVycm9yTWVzc2FnZUJsb2NrKCkKICAgICAgICAgZG9jdW1lbnRFbGVtZW50
ID0gV1RGTW92ZShib2R5KTsKICAgICB9CiAKLSAgICBTdHJpbmcgZXJyb3JNZXNzYWdlcyA9IG1f
ZXJyb3JNZXNzYWdlcy50b1N0cmluZygpOwotICAgIGF1dG8gcmVwb3J0RWxlbWVudCA9IGNyZWF0
ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIobV9kb2N1bWVudCwgZXJyb3JNZXNzYWdlcyk7CisgICAg
YXV0byByZXBvcnRFbGVtZW50ID0gY3JlYXRlWEhUTUxQYXJzZXJFcnJvckhlYWRlcihtX2RvY3Vt
ZW50LCBtX2Vycm9yTWVzc2FnZXMudG9TdHJpbmcoKSk7CiAKICNpZiBFTkFCTEUoWFNMVCkKICAg
ICBpZiAobV9kb2N1bWVudC50cmFuc2Zvcm1Tb3VyY2VEb2N1bWVudCgpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MVHJlZVZpZXdlci5jcHAKaW5kZXggMDJlZTk5MGNlMDdkYTBiZjM5MzA0YWIxZGI3MmFl
MDc0ZTFjMWE1Mi4uYTZhZDExYjc3MjE3ZTc3ODkxMjQ2ZGI5Y2ZhY2I1NWI2YzdhZWU4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxUcmVlVmlld2VyLmNwcApAQCAtNTgsNyArNTgsNyBAQCB2b2lkIFhN
TFRyZWVWaWV3ZXI6OnRyYW5zZm9ybURvY3VtZW50VG9UcmVlVmlldygpCiAgICAgbV9kb2N1bWVu
dC5mcmFtZSgpLT5zY3JpcHQoKS5ldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNvdXJj
ZUNvZGUoQXRvbVN0cmluZygicHJlcGFyZVdlYktpdFhNTFZpZXdlcignVGhpcyBYTUwgZmlsZSBk
b2VzIG5vdCBhcHBlYXIgdG8gaGF2ZSBhbnkgc3R5bGUgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3
aXRoIGl0LiBUaGUgZG9jdW1lbnQgdHJlZSBpcyBzaG93biBiZWxvdy4nKTsiX3MpKSk7CiAKICAg
ICBTdHJpbmcgY3NzU3RyaW5nID0gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoWE1M
Vmlld2VyX2Nzcywgc2l6ZW9mKFhNTFZpZXdlcl9jc3MpKTsKLSAgICBhdXRvIHRleHQgPSBtX2Rv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKGNzc1N0cmluZyk7CisgICAgYXV0byB0ZXh0ID0gbV9kb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZShXVEZNb3ZlKGNzc1N0cmluZykpOwogICAgIG1fZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoU3RyaW5nKCJ4bWwtdmlld2VyLXN0eWxlIl9zKSktPmFwcGVuZENoaWxk
KHRleHQpOwogICAgIG1fZG9jdW1lbnQuc3R5bGVTY29wZSgpLmRpZENoYW5nZUFjdGl2ZVN0eWxl
U2hlZXRDYW5kaWRhdGVzKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNM
VFByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKaW5k
ZXggYmU1OGQ2Zjc0NDFjZDA4M2IyMzJhNGNkNDVkNDBlMTRmNDhhNWJhMS4uYjQ1YWMxNWM2MjZj
YjgzYjg2MmJlNWJhZGRkNjg0ZGE0OWQ2MTY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
eG1sL1hTTFRQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vz
c29yLmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBYU0xU
UHJvY2Vzc29yOjp0cmFuc2Zvcm1Ub0ZyYWdtZW50KE5vZGUmIHNvdXJjZU5vZGUsIERvCiAKICAg
ICBpZiAoIXRyYW5zZm9ybVRvU3RyaW5nKHNvdXJjZU5vZGUsIHJlc3VsdE1JTUVUeXBlLCByZXN1
bHRTdHJpbmcsIHJlc3VsdEVuY29kaW5nKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
cmV0dXJuIGNyZWF0ZUZyYWdtZW50Rm9yVHJhbnNmb3JtVG9GcmFnbWVudChvdXRwdXREb2N1bWVu
dCwgcmVzdWx0U3RyaW5nLCByZXN1bHRNSU1FVHlwZSk7CisgICAgcmV0dXJuIGNyZWF0ZUZyYWdt
ZW50Rm9yVHJhbnNmb3JtVG9GcmFnbWVudChvdXRwdXREb2N1bWVudCwgV1RGTW92ZShyZXN1bHRT
dHJpbmcpLCBXVEZNb3ZlKHJlc3VsdE1JTUVUeXBlKSk7CiB9CiAKIHZvaWQgWFNMVFByb2Nlc3Nv
cjo6c2V0UGFyYW1ldGVyKGNvbnN0IFN0cmluZyYgLypuYW1lc3BhY2VVUkkqLywgY29uc3QgU3Ry
aW5nJiBsb2NhbE5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDFhYjhhMzUyNGE2Y2QwZjkz
ZmM2NWYxYmY4MWI1ZDczMjBlYzE2N2QuLjg1NGUyNzZlZThiNTJjMTUzOWJjMGM0NDJiODVkZDk5
OGQ2MDBlMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXIuY3BwCkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6Y3Jl
YXRlTGVhZlRleHROb2RlKCkKIAogICAgIEFTU0VSVChtX2J1ZmZlcmVkVGV4dC5zaXplKCkgPT0g
MCk7CiAgICAgQVNTRVJUKCFtX2xlYWZUZXh0Tm9kZSk7Ci0gICAgbV9sZWFmVGV4dE5vZGUgPSBU
ZXh0OjpjcmVhdGUobV9jdXJyZW50Tm9kZS0+ZG9jdW1lbnQoKSwgZW1wdHlTdHJpbmcoKSk7Cisg
ICAgbV9sZWFmVGV4dE5vZGUgPSBUZXh0OjpjcmVhdGUobV9jdXJyZW50Tm9kZS0+ZG9jdW1lbnQo
KSwgU3RyaW5nIHsgZW1wdHlTdHJpbmcoKSB9KTsKICAgICBtX2N1cnJlbnROb2RlLT5wYXJzZXJB
cHBlbmRDaGlsZCgqbV9sZWFmVGV4dE5vZGUpOwogfQogCkBAIC0yOTYsNyArMjk2LDcgQEAgYm9v
bCBYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VEb2N1bWVudEZyYWdtZW50KGNvbnN0IFN0cmluZyYg
Y2h1bmssIERvY3VtZW50RnJhZ20KICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mv
d2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aGUteGh0bWwtc3ludGF4Lmh0bWwjeG1s
LWZyYWdtZW50LXBhcnNpbmctYWxnb3JpdGhtCiAgICAgLy8gRm9yIG5vdyB3ZSBoYXZlIGEgaGFj
ayBmb3Igc2NyaXB0L3N0eWxlIGlubmVySFRNTCBzdXBwb3J0OgogICAgIGlmIChjb250ZXh0RWxl
bWVudCAmJiAoY29udGV4dEVsZW1lbnQtPmhhc0xvY2FsTmFtZShIVE1MTmFtZXM6OnNjcmlwdFRh
Zy0+bG9jYWxOYW1lKCkpIHx8IGNvbnRleHRFbGVtZW50LT5oYXNMb2NhbE5hbWUoSFRNTE5hbWVz
OjpzdHlsZVRhZy0+bG9jYWxOYW1lKCkpKSkgewotICAgICAgICBmcmFnbWVudC5wYXJzZXJBcHBl
bmRDaGlsZChmcmFnbWVudC5kb2N1bWVudCgpLmNyZWF0ZVRleHROb2RlKGNodW5rKSk7CisgICAg
ICAgIGZyYWdtZW50LnBhcnNlckFwcGVuZENoaWxkKGZyYWdtZW50LmRvY3VtZW50KCkuY3JlYXRl
VGV4dE5vZGUoU3RyaW5nIHsgY2h1bmsgfSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDgz
ZWJlZGI0NzljMjZhNTc4N2ExOGNlMTEzODU2ZDhjZDU2MWVhYjIuLmZlZWY0NWZiMWFjNWNmM2Fi
M2VkYzVlMzg5OTU0MTBiZGFhZDcwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJGcmFtZS5tbQpAQCAtMTY0MCw3ICsxNjQwLDcgQEAgLSAodm9pZClzZXRUZXh0OihO
U1N0cmluZyAqKXRleHQgYXNDaGlsZE9mRWxlbWVudDooRE9NRWxlbWVudCAqKWVsZW1lbnQKICAg
ICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAKLSAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0VGV4dEFzQ2hpbGRPZkVsZW1lbnQodGV4dCwg
KmNvcmUoZWxlbWVudCkpOworICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRUZXh0QXNDaGlsZE9mRWxl
bWVudChTdHJpbmcgeyB0ZXh0IH0sICpjb3JlKGVsZW1lbnQpKTsKIH0KIAogLSAodm9pZClzZXRE
aWN0YXRpb25QaHJhc2VzOihOU0FycmF5ICopZGljdGF0aW9uUGhyYXNlcyBtZXRhZGF0YTooaWQp
bWV0YWRhdGEgYXNDaGlsZE9mRWxlbWVudDooRE9NRWxlbWVudCAqKWVsZW1lbnQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RPTUhUTUxDbGFzc2VzLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0RPTUhUTUxDbGFzc2VzLmNwcAppbmRleCA0NGY3YmNjZWY2ZTNmYjI4
Mzg4ZDM2MzhkZDQzMjY2ZGJlN2E1NDhhLi4yN2JjMDQ4MDZmM2I3MjQxNTJhMmFkZjI5YjE1NmUz
YTliYmU5NjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9ET01IVE1MQ2xh
c3Nlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NSFRNTENsYXNzZXMuY3Bw
CkBAIC01MzAsOCArNTMwLDcgQEAgSFJFU1VMVCBET01IVE1MRWxlbWVudDo6c2V0SW5uZXJUZXh0
KF9Jbl8gQlNUUiB0ZXh0KQogewogICAgIEFTU0VSVChpczxIVE1MRWxlbWVudD4obV9lbGVtZW50
KSk7CiAgICAgSFRNTEVsZW1lbnQqIGh0bWxFbGVtZW50ID0gZG93bmNhc3Q8SFRNTEVsZW1lbnQ+
KG1fZWxlbWVudCk7Ci0gICAgV1RGOjpTdHJpbmcgdGV4dFN0cmluZyh0ZXh0LCBTeXNTdHJpbmdM
ZW4odGV4dCkpOwotICAgIGh0bWxFbGVtZW50LT5zZXRJbm5lclRleHQodGV4dFN0cmluZyk7Cisg
ICAgaHRtbEVsZW1lbnQtPnNldElubmVyVGV4dChXVEY6OlN0cmluZyh0ZXh0LCBTeXNTdHJpbmdM
ZW4odGV4dCkpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457935</attachid>
            <date>2022-04-19 14:03:16 -0700</date>
            <delta_ts>2022-04-19 19:26:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239481-20220419140314.patch</filename>
            <type>text/plain</type>
            <size>104695</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGIxNDBiMjQwNjZjZjMyMDRiMDZhMDRj
YmQwM2E4NTQzNjdiNGJiZTkuLmViNzc4MzUxZmVhYTg5ODVmY2UyOWMxYWJlNWMzZjIxMzJhMjE0
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDQtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgbW9yZSByLXZhbHVlIHJlZmVyZW5jZXMgZm9yIFRl
eHQgLyBDaGFyYWN0ZXJEYXRhIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzOTQ4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBhIGZ1bmN0aW9uIHRvIEF0b21TdHJpbmcgdG8gcmVsZWFz
ZSBpdHMgU3RyaW5nLiBUaGlzIGlzIGNvbnZlbmllbnQgd2hlbiB5b3UgaGF2ZSBhbiBBdG9tU3Ry
aW5nCisgICAgICAgIGFuZCBuZWVkIGEgU3RyaW5nJiYuCisKKyAgICAgICAgKiB3dGYvdGV4dC9B
dG9tU3RyaW5nLmg6CisKIDIwMjItMDQtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBJbnRyb2R1Y2UgbWFrZUF0b21TdHJpbmcoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDE2
MzE5OTg1Nzg5N2ZjYzVlZTM0MjhjM2Q0MjFiNGEyMGVhNzA4NzcuLjMyMGM1NWQ1MzQ3NzZkY2I1
ZDZhNWY3ZjU3YTA4Y2ViYWY1YzQxODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNjEgQEAKKzIw
MjItMDQtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2Ug
bW9yZSByLXZhbHVlIHJlZmVyZW5jZXMgZm9yIFRleHQgLyBDaGFyYWN0ZXJEYXRhIGNsYXNzZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTQ4MQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBtb3Jl
IHItdmFsdWUgcmVmZXJlbmNlcyBmb3IgVGV4dCAvIENoYXJhY3RlckRhdGEgY2xhc3Nlcywgd2hp
Y2ggaW5mZWN0ZWQKKyAgICAgICAgYSBsb3Qgb2YgdGhlIHN1cnJvdW5kaW5nIGNvZGUuIFRoaXMg
YXZvaWRzIHNvbWUgcmVmLWNvdW50aW5nIGNodXJuLgorCisgICAgICAgICogZG9tL0NEQVRBU2Vj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDREFUQVNlY3Rpb246OkNEQVRBU2VjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpDREFUQVNlY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDREFUQVNlY3Rpb246OmNsb25lTm9kZUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6
OkNEQVRBU2VjdGlvbjo6dmlydHVhbENyZWF0ZSk6CisgICAgICAgICogZG9tL0NEQVRBU2VjdGlv
bi5oOgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpD
aGFyYWN0ZXJEYXRhOjpDaGFyYWN0ZXJEYXRhKToKKyAgICAgICAgKiBkb20vQ29tbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb21tZW50OjpDb21tZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb21tZW50OjpjbG9uZU5vZGVJ
bnRlcm5hbCk6CisgICAgICAgICogZG9tL0NvbW1lbnQuaDoKKyAgICAgICAgKiBkb20vQ29udGFp
bmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpzdHJpbmdSZXBs
YWNlQWxsKToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5oOgorICAgICAgICAqIGRvbS9E
T01JbXBsZW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlv
bjo6Y3JlYXRlSFRNTERvY3VtZW50KToKKyAgICAgICAgKiBkb20vRE9NSW1wbGVtZW50YXRpb24u
aDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OmNyZWF0ZVRleHROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjcmVhdGVD
b21tZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjcmVhdGVDREFUQVNlY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlRWRpdGluZ1RleHROb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRUaXRsZSk6CisgICAgICAgICogZG9tL0Rv
Y3VtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6aW5zZXJ0QWRqYWNlbnRUZXh0KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgor
ICAgICAgICAqIGRvbS9JbWFnZU92ZXJsYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VP
dmVybGF5OjppbnN0YWxsSW1hZ2VPdmVybGF5U3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZU92ZXJsYXk6OnVwZGF0ZVN1YnRyZWUpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmNvbnZlcnROb2Rlc09yU3RyaW5nc0ludG9Ob2RlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNldFRleHRDb250ZW50KToKKyAgICAgICAgKiBkb20v
Tm9kZS5oOgorICAgICAgICAqIGRvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjbG9uZU5vZGVJbnRlcm5hbCk6
CisgICAgICAgICogZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oOgorICAgICAgICAqIGRvbS9U
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0OjpjcmVhdGVFZGl0aW5nVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Ojpj
bG9uZU5vZGVJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Ojp2aXJ0dWFsQ3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHQ6OmNyZWF0ZVdpdGhMZW5ndGhMaW1pdCk6CisgICAg
ICAgICogZG9tL1RleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHQ6OlRleHQpOgorICAgICAg
ICAqIGRvbS9tYWMvSW1hZ2VDb250cm9sc01hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUNvbnRyb2xzTWFjOjpjcmVhdGVJbWFnZUNvbnRyb2xzKToKKyAgICAgICAgKiBlZGl0aW5nL0Ny
ZWF0ZUxpbmtDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyZWF0ZUxpbmtDb21tYW5k
Ojpkb0FwcGx5KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlVGFiU3BhbkVsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZy5o
OgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6c3R5bGVGb3JTZWxlY3Rpb25TdGFydCk6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRMaW5l
QnJlYWtDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydExpbmVCcmVha0NvbW1h
bmQ6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0VGV4dENvbW1hbmQ6OnBvc2l0aW9uSW5zaWRlVGV4dE5v
ZGUpOgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmFkZFNwYWNlc0ZvclNtYXJ0
UmVwbGFjZSk6CisgICAgICAgICogZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6cmVwbGFj
ZSk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlRnJhZ21lbnRGcm9tVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZv
clRyYW5zZm9ybVRvRnJhZ21lbnQpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmg6CisgICAg
ICAgICogaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjp1cGRhdGVJbm5lclRleHRWYWx1ZSk6CisgICAg
ICAgICogaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0ZU
UERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZUUERpcmVjdG9yeURv
Y3VtZW50UGFyc2VyOjphcHBlbmRFbnRyeSk6CisgICAgICAgIChXZWJDb3JlOjpGVFBEaXJlY3Rv
cnlEb2N1bWVudFBhcnNlcjo6Y3JlYXRlVERGb3JGaWxlbmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6cGFyc2VBbmRBcHBlbmRPbmVMaW5lKToKKyAg
ICAgICAgKiBodG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxBbmNob3JFbGVtZW50OjpzZXRUZXh0KToKKyAgICAgICAgKiBodG1sL0hUTUxBbmNob3JFbGVt
ZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRWxlbWVudDo6c2V0SW5uZXJUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVt
ZW50OjpzZXRPdXRlclRleHQpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
dGVyRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdCk6CisgICAgICAgICogaHRtbC9I
VE1MT3B0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVu
dDo6Y3JlYXRlRm9yTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxPcHRpb25FbGVtZW50OjpzZXRUZXh0KToKKyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25FbGVt
ZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MT3V0cHV0RWxlbWVudDo6c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE91dHB1dEVsZW1lbnQ6OnNldERlZmF1bHRWYWx1ZSk6CisgICAgICAgICogaHRtbC9IVE1M
T3V0cHV0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdEVsZW1lbnQ6OnNldFRleHQpOgorICAgICAgICAq
IGh0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6c2V0VmFs
dWVDb21tb24pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6c2V0RGVm
YXVsdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnVwZGF0
ZVBsYWNlaG9sZGVyVGV4dCk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50Lmg6
CisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0SW5uZXJUZXh0VmFsdWUp
OgorICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaDoKKyAgICAgICAg
KiBodG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRpdGxl
RWxlbWVudDo6c2V0VGV4dCk6CisgICAgICAgICogaHRtbC9IVE1MVGl0bGVFbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dEZpZWxkSW5wdXRUeXBlOjp1cGRhdGVQbGFjZWhvbGRlclRleHQpOgorICAgICAgICAqIGh0
bWwvcGFyc2VyL0F0b21IVE1MVG9rZW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkF0b21IVE1MVG9r
ZW46OmNvbW1lbnQpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRDb21t
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRDb21t
ZW50T25Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6
aW5zZXJ0Q29tbWVudE9uSFRNTEh0bWxFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxD
b25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRUZXh0Tm9kZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cv
RGF0ZVRpbWVFZGl0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRlVGltZUVkaXRC
dWlsZGVyOjp2aXNpdExpdGVyYWwpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0RhdGVUaW1lRmll
bGRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lRmllbGRFbGVtZW50Ojp1
cGRhdGVWaXNpYmxlVmFsdWUpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6cmVidWlsZERpc3BsYXlUcmVlKToK
KyAgICAgICAgKiBodG1sL3RyYWNrL1ZUVEN1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWVFRD
dWU6OmdldERpc3BsYXlUcmVlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRUcmVlQnVpbGRlcjo6YnVpbGRGcm9tU3RyaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlZUVFRyZWVCdWlsZGVyOjpjb25zdHJ1Y3RUcmVlRnJv
bVRva2VuKToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmRvY3VtZW50RnJhZ21lbnRGcm9tRHJhZ0RhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvRGF0ZVRpbWVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1BsYXRmb3Jt
TG9jYWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lU3RyaW5nQnVpbGRlcjo6dmlz
aXRMaXRlcmFsKToKKyAgICAgICAgKiBzdmcvU1ZHVFJlZkVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVFJlZkVsZW1lbnQ6OnVwZGF0ZVJlZmVyZW5jZWRUZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1RSZWZFbGVtZW50OjpkZXRhY2hUYXJnZXQpOgorICAgICAgICAqIHhtbC9Y
TUxFcnJvcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlWEhUTUxQYXJzZXJFcnJvckhl
YWRlcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxFcnJvcnM6Omluc2VydEVycm9yTWVzc2FnZUJs
b2NrKToKKyAgICAgICAgKiB4bWwvWE1MVHJlZVZpZXdlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpYTUxUcmVlVmlld2VyOjp0cmFuc2Zvcm1Eb2N1bWVudFRvVHJlZVZpZXcpOgorICAgICAgICAq
IHhtbC9YU0xUUHJvY2Vzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTTFRQcm9jZXNzb3I6
OnRyYW5zZm9ybVRvRnJhZ21lbnQpOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZUxl
YWZUZXh0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VE
b2N1bWVudEZyYWdtZW50KToKKwogMjAyMi0wNC0xOSAgQWRhIENoYW4gIDxhZGFjaGFuQGFwcGxl
LmNvbT4KIAogICAgICAgICBbV2ViWFJdIFVwZGF0ZSBEZXZpY2U6OmluaXRpYWxpemVUcmFja2lu
Z0FuZFJlbmRlcmluZygpIHRvIHRha2UgaW4gbW9yZSBwYXJhbWV0ZXJzIHJlZ2FyZGluZyB0aGUg
c2Vzc2lvbiBzZXR1cApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5n
LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaAppbmRleCBiZjRiZTRkOTljZDdj
NGRlNGVhZDA5YjY0NzlhZjE5ZWFmNTIxY2RjLi4wYWRmNTIyM2JiNjAyOWMzZGU5ODljNjgzMTc0
MDE2NmYwNmM3MDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaApAQCAtOTMsNiArOTMsNyBA
QCBwdWJsaWM6CiAKICAgICBvcGVyYXRvciBjb25zdCBTdHJpbmcmKCkgY29uc3QgeyByZXR1cm4g
bV9zdHJpbmc7IH0KICAgICBjb25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1f
c3RyaW5nOyB9OworICAgIFN0cmluZyByZWxlYXNlU3RyaW5nKCkgeyByZXR1cm4gV1RGTW92ZSht
X3N0cmluZyk7IH0KIAogICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgdGhpcyBpc24ndCBh
IFN5bWJvbEltcGwgcmF0aGVyIHRoYW4gYW4gQXRvbVN0cmluZ0ltcGw/CiAgICAgQXRvbVN0cmlu
Z0ltcGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBdG9tU3RyaW5nSW1wbCo+
KG1fc3RyaW5nLmltcGwoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DREFU
QVNlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5jcHAKaW5kZXgg
NzU0ZjQ4Mjg4ZmUxOTZhM2QyODJhMjk2ZDg3OGQyMzM0ZDM5Nzg0Yi4uMjAyZGQ0NzBmMjBkNzYy
N2Y4ZTRiNTI4OTIyYWMyZTAxYjg2NmI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0NEQVRBU2VjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5j
cHAKQEAgLTI5LDE0ICsyOSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChDREFUQVNlY3Rpb24pOwogCi1pbmxpbmUgQ0RBVEFTZWN0aW9uOjpD
REFUQVNlY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGRhdGEpCi0gICAg
OiBUZXh0KGRvY3VtZW50LCBkYXRhLCBDcmVhdGVUZXh0KQoraW5saW5lIENEQVRBU2VjdGlvbjo6
Q0RBVEFTZWN0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5nJiYgZGF0YSkKKyAgICA6IFRl
eHQoZG9jdW1lbnQsIFdURk1vdmUoZGF0YSksIENyZWF0ZVRleHQpCiB7CiB9CiAKLVJlZjxDREFU
QVNlY3Rpb24+IENEQVRBU2VjdGlvbjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3Qg
U3RyaW5nJiBkYXRhKQorUmVmPENEQVRBU2VjdGlvbj4gQ0RBVEFTZWN0aW9uOjpjcmVhdGUoRG9j
dW1lbnQmIGRvY3VtZW50LCBTdHJpbmcmJiBkYXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IENEQVRBU2VjdGlvbihkb2N1bWVudCwgZGF0YSkpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IENEQVRBU2VjdGlvbihkb2N1bWVudCwgV1RGTW92ZShkYXRhKSkpOwogfQogCiBTdHJpbmcg
Q0RBVEFTZWN0aW9uOjpub2RlTmFtZSgpIGNvbnN0CkBAIC01MSw3ICs1MSw3IEBAIE5vZGU6Ok5v
ZGVUeXBlIENEQVRBU2VjdGlvbjo6bm9kZVR5cGUoKSBjb25zdAogCiBSZWY8Tm9kZT4gQ0RBVEFT
ZWN0aW9uOjpjbG9uZU5vZGVJbnRlcm5hbChEb2N1bWVudCYgdGFyZ2V0RG9jdW1lbnQsIENsb25p
bmdPcGVyYXRpb24pCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZSh0YXJnZXREb2N1bWVudCwgZGF0YSgp
KTsKKyAgICByZXR1cm4gY3JlYXRlKHRhcmdldERvY3VtZW50LCBTdHJpbmcgeyBkYXRhKCkgfSk7
CiB9CiAKIGJvb2wgQ0RBVEFTZWN0aW9uOjpjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25z
dApAQCAtNTksOSArNTksOSBAQCBib29sIENEQVRBU2VjdGlvbjo6Y2hpbGRUeXBlQWxsb3dlZChO
b2RlVHlwZSkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlZjxUZXh0PiBDREFUQVNl
Y3Rpb246OnZpcnR1YWxDcmVhdGUoY29uc3QgU3RyaW5nJiBkYXRhKQorUmVmPFRleHQ+IENEQVRB
U2VjdGlvbjo6dmlydHVhbENyZWF0ZShTdHJpbmcmJiBkYXRhKQogewotICAgIHJldHVybiBjcmVh
dGUoZG9jdW1lbnQoKSwgZGF0YSk7CisgICAgcmV0dXJuIGNyZWF0ZShkb2N1bWVudCgpLCBXVEZN
b3ZlKGRhdGEpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NEQVRB
U2VjdGlvbi5oCmluZGV4IGQ5NDA1Y2FlMzY5YWQ3OGZmYzczYTkzODNiZjdiMWM2MzlhZDMyNTQu
LmE1OTY4YzQxZDJjODk3NWRkNWNlODUwNzE4MTkzNmM0ZTE4NzZhMzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Q0RBVEFTZWN0aW9uLmgKQEAgLTI5LDE2ICsyOSwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBDREFUQVNlY3Rpb24gZmluYWwgOiBwdWJsaWMgVGV4dCB7CiAgICAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRChDREFUQVNlY3Rpb24pOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q0RBVEFT
ZWN0aW9uPiBjcmVhdGUoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgUmVm
PENEQVRBU2VjdGlvbj4gY3JlYXRlKERvY3VtZW50JiwgU3RyaW5nJiYpOwogCiBwcml2YXRlOgot
ICAgIENEQVRBU2VjdGlvbihEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYpOworICAgIENEQVRBU2Vj
dGlvbihEb2N1bWVudCYsIFN0cmluZyYmKTsKIAogICAgIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
UmVmPE5vZGU+IGNsb25lTm9kZUludGVybmFsKERvY3VtZW50JiwgQ2xvbmluZ09wZXJhdGlvbikg
b3ZlcnJpZGU7CiAgICAgYm9vbCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdCBvdmVy
cmlkZTsKLSAgICBSZWY8VGV4dD4gdmlydHVhbENyZWF0ZShjb25zdCBTdHJpbmcmKSBvdmVycmlk
ZTsKKyAgICBSZWY8VGV4dD4gdmlydHVhbENyZWF0ZShTdHJpbmcmJikgb3ZlcnJpZGU7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q2hhcmFjdGVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaAppbmRl
eCAwMzFhZjQ5ZTJjYWVlNGRkNzMzOGRiZTMwZDFhNGQzMTMwOGVmODk2Li41M2E0ZWI5NzNiMjFj
NzNhODk5NWNmMzM5NGU2NmY3N2QzZTRlNzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ2hhcmFjdGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRh
LmgKQEAgLTQ1LDkgKzQ1LDkgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHBhcnNlckFwcGVuZERh
dGEoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
TGltaXQpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgQ2hhcmFjdGVyRGF0YShEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlID0gQ3JlYXRlQ2hh
cmFjdGVyRGF0YSkKKyAgICBDaGFyYWN0ZXJEYXRhKERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5n
JiYgdGV4dCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlID0gQ3JlYXRlQ2hhcmFjdGVyRGF0YSkKICAg
ICAgICAgOiBOb2RlKGRvY3VtZW50LCB0eXBlKQotICAgICAgICAsIG1fZGF0YSghdGV4dC5pc051
bGwoKSA/IHRleHQgOiBlbXB0eVN0cmluZygpKQorICAgICAgICAsIG1fZGF0YSghdGV4dC5pc051
bGwoKSA/IFdURk1vdmUodGV4dCkgOiBlbXB0eVN0cmluZygpKQogICAgIHsKICAgICAgICAgQVNT
RVJUKHR5cGUgPT0gQ3JlYXRlQ2hhcmFjdGVyRGF0YSB8fCB0eXBlID09IENyZWF0ZVRleHQgfHwg
dHlwZSA9PSBDcmVhdGVFZGl0aW5nVGV4dCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0NvbW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQuY3BwCmlu
ZGV4IDhhM2UzMmY3NzM5MzQ5MWYyNTMyMjMwN2RkMTY0OGZlYzE2ZWJmOWIuLmFmODg3NmIxOTJm
NTk2YjY1NDgxNjcwMmQyMTIxYTg3ZGQ2ZTg0YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db21tZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tbWVudC5jcHAKQEAg
LTI5LDE0ICsyOSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExP
Q0FURURfSU1QTChDb21tZW50KTsKIAotaW5saW5lIENvbW1lbnQ6OkNvbW1lbnQoRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRleHQpCi0gICAgOiBDaGFyYWN0ZXJEYXRhKGRvY3Vt
ZW50LCB0ZXh0KQoraW5saW5lIENvbW1lbnQ6OkNvbW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBT
dHJpbmcmJiB0ZXh0KQorICAgIDogQ2hhcmFjdGVyRGF0YShkb2N1bWVudCwgV1RGTW92ZSh0ZXh0
KSkKIHsKIH0KIAotUmVmPENvbW1lbnQ+IENvbW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFN0cmluZyYgdGV4dCkKK1JlZjxDb21tZW50PiBDb21tZW50OjpjcmVhdGUoRG9j
dW1lbnQmIGRvY3VtZW50LCBTdHJpbmcmJiB0ZXh0KQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IENvbW1lbnQoZG9jdW1lbnQsIHRleHQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBD
b21tZW50KGRvY3VtZW50LCBXVEZNb3ZlKHRleHQpKSk7CiB9CiAKIFN0cmluZyBDb21tZW50Ojpu
b2RlTmFtZSgpIGNvbnN0CkBAIC01MSw3ICs1MSw3IEBAIE5vZGU6Ok5vZGVUeXBlIENvbW1lbnQ6
Om5vZGVUeXBlKCkgY29uc3QKIAogUmVmPE5vZGU+IENvbW1lbnQ6OmNsb25lTm9kZUludGVybmFs
KERvY3VtZW50JiB0YXJnZXREb2N1bWVudCwgQ2xvbmluZ09wZXJhdGlvbikKIHsKLSAgICByZXR1
cm4gY3JlYXRlKHRhcmdldERvY3VtZW50LCBkYXRhKCkpOworICAgIHJldHVybiBjcmVhdGUodGFy
Z2V0RG9jdW1lbnQsIFN0cmluZyB7IGRhdGEoKSB9KTsKIH0KIAogYm9vbCBDb21tZW50OjpjaGls
ZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21tZW50LmgKaW5kZXggZDRjMWU5
NWQ1NGE2OTI1MzEwZDYwODkwNzI5NTYwZmQwZGFiYzI1NS4uMjc3ZDJjMjYzYmVmZTYxY2VjOWJi
MDU2MTY5NzIwNTUyYjZkNTdlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tbWVudC5oCkBAIC0yOSwxMCArMjksMTAg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29tbWVudCBmaW5hbCA6IHB1YmxpYyBDaGFy
YWN0ZXJEYXRhIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKENvbW1lbnQpOwogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8Q29tbWVudD4gY3JlYXRlKERvY3VtZW50JiwgY29uc3QgU3RyaW5n
Jik7CisgICAgc3RhdGljIFJlZjxDb21tZW50PiBjcmVhdGUoRG9jdW1lbnQmLCBTdHJpbmcmJik7
CiAKIHByaXZhdGU6Ci0gICAgQ29tbWVudChEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYpOworICAg
IENvbW1lbnQoRG9jdW1lbnQmLCBTdHJpbmcmJik7CiAKICAgICBTdHJpbmcgbm9kZU5hbWUoKSBj
b25zdCBvdmVycmlkZTsKICAgICBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmluZGV4IDY0MWE3ODc3ZGMwNTc5OTNhYWJj
ZDFiNDcxNWRlYzg4OGIzYTJmM2MuLmQ1NDA0MWI1MDkxZDZlZTcwYTU3MmRkYTZjNGNhNzJiOTFl
NWUyZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTcyNCw5ICs3MjQs
OSBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnJlcGxhY2VBbGwoTm9kZSogbm9kZSkKIH0KIAogLy8g
aHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNzdHJpbmctcmVwbGFjZS1hbGwKLXZvaWQgQ29u
dGFpbmVyTm9kZTo6c3RyaW5nUmVwbGFjZUFsbChjb25zdCBTdHJpbmcmIHN0cmluZykKK3ZvaWQg
Q29udGFpbmVyTm9kZTo6c3RyaW5nUmVwbGFjZUFsbChTdHJpbmcmJiBzdHJpbmcpCiB7Ci0gICAg
cmVwbGFjZUFsbChzdHJpbmcuaXNFbXB0eSgpID8gbnVsbHB0ciA6IGRvY3VtZW50KCkuY3JlYXRl
VGV4dE5vZGUoc3RyaW5nKS5wdHIoKSk7CisgICAgcmVwbGFjZUFsbChzdHJpbmcuaXNFbXB0eSgp
ID8gbnVsbHB0ciA6IGRvY3VtZW50KCkuY3JlYXRlVGV4dE5vZGUoV1RGTW92ZShzdHJpbmcpKS5w
dHIoKSk7CiB9CiAKIGlubGluZSB2b2lkIENvbnRhaW5lck5vZGU6OnJlYnVpbGRTVkdFeHRlbnNp
b25zRWxlbWVudHNJZk5lY2Vzc2FyeSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAppbmRl
eCA4MDgzZDQyNmYwMWRmZTVjNTQ4YjMxZGJkMTZjZWZhYTRlOTA1NGIwLi4xMTk0ZTM2YWRlZWFl
YWQxN2I2OGE0MWYxZDZlMzI2NjA4MzM5MzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlcGxh
Y2VDaGlsZChOb2RlJiBuZXdDaGlsZCwgTm9kZSYgb2xkQ2hpbGQpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlbW92ZUNoaWxkKE5vZGUmIGNoaWxkKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBhcHBlbmRDaGlsZChOb2RlJiBuZXdDaGlsZCk7
Ci0gICAgdm9pZCBzdHJpbmdSZXBsYWNlQWxsKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc3Ry
aW5nUmVwbGFjZUFsbChTdHJpbmcmJik7CiAgICAgdm9pZCByZXBsYWNlQWxsKE5vZGUqKTsKIAog
ICAgIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8Q29u
dGFpbmVyTm9kZT4oTm9kZTo6cm9vdE5vZGUoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1w
bGVtZW50YXRpb24uY3BwCmluZGV4IDU4NDM1YmMzZmNhZDNjZGE3ODk3MGEyMTFlNzYyYmZjY2Yw
MTJmNzUuLjY4ZGRkNmM5MzM2NWU5YWM5YmZkZTU3MjkyNmY1ZTg2ZTNlOWFkODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcApAQCAtMTIzLDE0ICsxMjMsMTQgQEAg
UmVmPENTU1N0eWxlU2hlZXQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVDU1NTdHlsZVNoZWV0
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFMKICAgICByZXR1cm4gc2hlZXQ7CiB9CiAKLVJlZjxIVE1M
RG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVIVE1MRG9jdW1lbnQoY29uc3QgU3Ry
aW5nJiB0aXRsZSkKK1JlZjxIVE1MRG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVI
VE1MRG9jdW1lbnQoU3RyaW5nJiYgdGl0bGUpCiB7CiAgICAgYXV0byBkb2N1bWVudCA9IEhUTUxE
b2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIG1fZG9jdW1lbnQuc2V0dGluZ3MoKSwgVVJMKCksIHsg
fSk7CiAgICAgZG9jdW1lbnQtPm9wZW4oKTsKICAgICBkb2N1bWVudC0+d3JpdGUobnVsbHB0ciwg
eyAiPCFkb2N0eXBlIGh0bWw+PGh0bWw+PGhlYWQ+PC9oZWFkPjxib2R5PjwvYm9keT48L2h0bWw+
Il9zIH0pOwogICAgIGlmICghdGl0bGUuaXNOdWxsKCkpIHsKICAgICAgICAgYXV0byB0aXRsZUVs
ZW1lbnQgPSBIVE1MVGl0bGVFbGVtZW50OjpjcmVhdGUodGl0bGVUYWcsIGRvY3VtZW50KTsKLSAg
ICAgICAgdGl0bGVFbGVtZW50LT5hcHBlbmRDaGlsZChkb2N1bWVudC0+Y3JlYXRlVGV4dE5vZGUo
dGl0bGUpKTsKKyAgICAgICAgdGl0bGVFbGVtZW50LT5hcHBlbmRDaGlsZChkb2N1bWVudC0+Y3Jl
YXRlVGV4dE5vZGUoV1RGTW92ZSh0aXRsZSkpKTsKICAgICAgICAgQVNTRVJUKGRvY3VtZW50LT5o
ZWFkKCkpOwogICAgICAgICBkb2N1bWVudC0+aGVhZCgpLT5hcHBlbmRDaGlsZCh0aXRsZUVsZW1l
bnQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRh
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmgKaW5kZXggZTg5
ZTJmZTYzNWY5YTczZmIxYTJiMGY2NDFjMDk5NDgzZDU3MzA2Ni4uMjcyYTY0ZWNhNmJkMTFhYTZm
MzU2MDhkZmNkYjZkMTkyOWEyOGY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RP
TUltcGxlbWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0
aW9uLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgRXhj
ZXB0aW9uT3I8UmVmPERvY3VtZW50VHlwZT4+IGNyZWF0ZURvY3VtZW50VHlwZShjb25zdCBTdHJp
bmcmIHF1YWxpZmllZE5hbWUsIGNvbnN0IFN0cmluZyYgcHVibGljSWQsIGNvbnN0IFN0cmluZyYg
c3lzdGVtSWQpOwogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFJlZjxYTUxEb2N1bWVu
dD4+IGNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJp
bmcmIHF1YWxpZmllZE5hbWUsIERvY3VtZW50VHlwZSopOwotICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZjxIVE1MRG9jdW1lbnQ+IGNyZWF0ZUhUTUxEb2N1bWVudChjb25zdCBTdHJpbmcmIHRpdGxlKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8SFRNTERvY3VtZW50PiBjcmVhdGVIVE1MRG9jdW1lbnQo
U3RyaW5nJiYgdGl0bGUpOwogICAgIHN0YXRpYyBib29sIGhhc0ZlYXR1cmUoKSB7IHJldHVybiB0
cnVlOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxDU1NTdHlsZVNoZWV0PiBjcmVh
dGVDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgbWVkaWEp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA1NGRjNDU5ZjNiNTJlMjUwMjk4NjczNjAw
MDJlZDllYzQ2ZTAyYWI4Li5hMjdiNDMxNGM0MDA1YjMwYThkMjUyZTdhMmVjZjY1M2QzNTc3Mjc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTEwNjksMTcgKzEwNjksMTcgQEAgUmVmPERv
Y3VtZW50RnJhZ21lbnQ+IERvY3VtZW50OjpjcmVhdGVEb2N1bWVudEZyYWdtZW50KCkKICAgICBy
ZXR1cm4gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOwogfQogCi1SZWY8VGV4
dD4gRG9jdW1lbnQ6OmNyZWF0ZVRleHROb2RlKGNvbnN0IFN0cmluZyYgZGF0YSkKK1JlZjxUZXh0
PiBEb2N1bWVudDo6Y3JlYXRlVGV4dE5vZGUoU3RyaW5nJiYgZGF0YSkKIHsKLSAgICByZXR1cm4g
VGV4dDo6Y3JlYXRlKCp0aGlzLCBkYXRhKTsKKyAgICByZXR1cm4gVGV4dDo6Y3JlYXRlKCp0aGlz
LCBXVEZNb3ZlKGRhdGEpKTsKIH0KIAotUmVmPENvbW1lbnQ+IERvY3VtZW50OjpjcmVhdGVDb21t
ZW50KGNvbnN0IFN0cmluZyYgZGF0YSkKK1JlZjxDb21tZW50PiBEb2N1bWVudDo6Y3JlYXRlQ29t
bWVudChTdHJpbmcmJiBkYXRhKQogewotICAgIHJldHVybiBDb21tZW50OjpjcmVhdGUoKnRoaXMs
IGRhdGEpOworICAgIHJldHVybiBDb21tZW50OjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoZGF0YSkp
OwogfQogCi1FeGNlcHRpb25PcjxSZWY8Q0RBVEFTZWN0aW9uPj4gRG9jdW1lbnQ6OmNyZWF0ZUNE
QVRBU2VjdGlvbihjb25zdCBTdHJpbmcmIGRhdGEpCitFeGNlcHRpb25PcjxSZWY8Q0RBVEFTZWN0
aW9uPj4gRG9jdW1lbnQ6OmNyZWF0ZUNEQVRBU2VjdGlvbihTdHJpbmcmJiBkYXRhKQogewogICAg
IGlmIChpc0hUTUxEb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3Vw
cG9ydGVkRXJyb3IgfTsKQEAgLTEwODcsMTAgKzEwODcsMTAgQEAgRXhjZXB0aW9uT3I8UmVmPENE
QVRBU2VjdGlvbj4+IERvY3VtZW50OjpjcmVhdGVDREFUQVNlY3Rpb24oY29uc3QgU3RyaW5nJiBk
YXRhKQogICAgIGlmIChkYXRhLmNvbnRhaW5zKCJdXT4iKSkKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IEludmFsaWRDaGFyYWN0ZXJFcnJvciB9OwogCi0gICAgcmV0dXJuIENEQVRBU2VjdGlv
bjo6Y3JlYXRlKCp0aGlzLCBkYXRhKTsKKyAgICByZXR1cm4gQ0RBVEFTZWN0aW9uOjpjcmVhdGUo
KnRoaXMsIFdURk1vdmUoZGF0YSkpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8UHJvY2Vzc2luZ0lu
c3RydWN0aW9uPj4gRG9jdW1lbnQ6OmNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihjb25zdCBT
dHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBkYXRhKQorRXhjZXB0aW9uT3I8UmVmPFByb2Nl
c3NpbmdJbnN0cnVjdGlvbj4+IERvY3VtZW50OjpjcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24o
U3RyaW5nJiYgdGFyZ2V0LCBTdHJpbmcmJiBkYXRhKQogewogICAgIGlmICghaXNWYWxpZE5hbWUo
dGFyZ2V0KSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRDaGFyYWN0ZXJFcnJv
ciB9OwpAQCAtMTA5OCwxMiArMTA5OCwxMiBAQCBFeGNlcHRpb25PcjxSZWY8UHJvY2Vzc2luZ0lu
c3RydWN0aW9uPj4gRG9jdW1lbnQ6OmNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihjbwogICAg
IGlmIChkYXRhLmNvbnRhaW5zKCI/PiIpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZENoYXJhY3RlckVycm9yIH07CiAKLSAgICByZXR1cm4gUHJvY2Vzc2luZ0luc3RydWN0aW9u
OjpjcmVhdGUoKnRoaXMsIHRhcmdldCwgZGF0YSk7CisgICAgcmV0dXJuIFByb2Nlc3NpbmdJbnN0
cnVjdGlvbjo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKHRhcmdldCksIFdURk1vdmUoZGF0YSkpOwog
fQogCi1SZWY8VGV4dD4gRG9jdW1lbnQ6OmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZShjb25zdCBTdHJp
bmcmIHRleHQpCitSZWY8VGV4dD4gRG9jdW1lbnQ6OmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZShTdHJp
bmcmJiB0ZXh0KQogewotICAgIHJldHVybiBUZXh0OjpjcmVhdGVFZGl0aW5nVGV4dCgqdGhpcywg
dGV4dCk7CisgICAgcmV0dXJuIFRleHQ6OmNyZWF0ZUVkaXRpbmdUZXh0KCp0aGlzLCBXVEZNb3Zl
KHRleHQpKTsKIH0KIAogUmVmPENTU1N0eWxlRGVjbGFyYXRpb24+IERvY3VtZW50OjpjcmVhdGVD
U1NTdHlsZURlY2xhcmF0aW9uKCkKQEAgLTE3MzEsNyArMTczMSw3IEBAIHZvaWQgRG9jdW1lbnQ6
OnVwZGF0ZVRpdGxlRnJvbVRpdGxlRWxlbWVudCgpCiAgICAgfQogfQogCi12b2lkIERvY3VtZW50
OjpzZXRUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQordm9pZCBEb2N1bWVudDo6c2V0VGl0bGUo
U3RyaW5nJiYgdGl0bGUpCiB7CiAgICAgUmVmUHRyIGVsZW1lbnQgPSBkb2N1bWVudEVsZW1lbnQo
KTsKICAgICBpZiAoaXM8U1ZHU1ZHRWxlbWVudD4oZWxlbWVudCkpIHsKQEAgLTE3NDEsNyArMTc0
MSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAg
ICAgIH0KICAgICAgICAgLy8gaW5zZXJ0QmVmb3JlIGFib3ZlIG1heSBoYXZlIHJhbiBzY3JpcHRz
IHdoaWNoIHJlbW92ZWQgbV90aXRsZUVsZW1lbnQuCiAgICAgICAgIGlmIChtX3RpdGxlRWxlbWVu
dCkKLSAgICAgICAgICAgIG1fdGl0bGVFbGVtZW50LT5zZXRUZXh0Q29udGVudCh0aXRsZSk7Cisg
ICAgICAgICAgICBtX3RpdGxlRWxlbWVudC0+c2V0VGV4dENvbnRlbnQoV1RGTW92ZSh0aXRsZSkp
OwogICAgIH0gZWxzZSBpZiAoaXM8SFRNTEVsZW1lbnQ+KGVsZW1lbnQpKSB7CiAgICAgICAgIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBvbGRUaXRsZTsKICAgICAgICAgaWYgKCFtX3RpdGxlRWxlbWVu
dCkgewpAQCAtMTc1Nyw3ICsxNzU3LDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0VGl0bGUoY29uc3Qg
U3RyaW5nJiB0aXRsZSkKICAgICAgICAgaWYgKCFtX3RpdGxlRWxlbWVudCkKICAgICAgICAgICAg
IHJldHVybjsKICAgICAKLSAgICAgICAgbV90aXRsZUVsZW1lbnQtPnNldFRleHRDb250ZW50KHRp
dGxlKTsKKyAgICAgICAgbV90aXRsZUVsZW1lbnQtPnNldFRleHRDb250ZW50KFN0cmluZyB7IHRp
dGxlIH0pOwogICAgICAgICBhdXRvKiB0ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlciA9IHRleHRN
YW5pcHVsYXRpb25Db250cm9sbGVySWZFeGlzdHMoKTsKICAgICAgICAgaWYgKFVOTElLRUxZKHRl
eHRNYW5pcHVsYXRpb25Db250cm9sbGVyKSkgewogICAgICAgICAgICAgaWYgKCFvbGRUaXRsZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKaW5kZXggOTUxZGFlMmIwZDU5NmRlZjU2MzdhZTE0Njk1YmMyMjA2
MDkzZmFjZi4uMTRmYmE1NmU2NjZkNzhkNzM4OTU0MGE3NzAyMTU0Y2RjNzk3NGNmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKQEAgLTQzNSwxMCArNDM1LDEwIEBAIHB1YmxpYzoKICAgICAKICAgICBX
RUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxSZWY8RWxlbWVudD4+IGNyZWF0ZUVsZW1lbnRGb3JC
aW5kaW5ncyhjb25zdCBBdG9tU3RyaW5nJiB0YWdOYW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCBS
ZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwotICAgIFdFQkNP
UkVfRVhQT1JUIFJlZjxUZXh0PiBjcmVhdGVUZXh0Tm9kZShjb25zdCBTdHJpbmcmIGRhdGEpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb21tZW50PiBjcmVhdGVDb21tZW50KGNvbnN0IFN0cmlu
ZyYgZGF0YSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVmPENEQVRBU2VjdGlv
bj4+IGNyZWF0ZUNEQVRBU2VjdGlvbihjb25zdCBTdHJpbmcmIGRhdGEpOwotICAgIFdFQkNPUkVf
RVhQT1JUIEV4Y2VwdGlvbk9yPFJlZjxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24+PiBjcmVhdGVQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24oY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgZGF0
YSk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFRleHQ+IGNyZWF0ZVRleHROb2RlKFN0cmluZyYm
IGRhdGEpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb21tZW50PiBjcmVhdGVDb21tZW50KFN0
cmluZyYmIGRhdGEpOworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFJlZjxDREFUQVNl
Y3Rpb24+PiBjcmVhdGVDREFUQVNlY3Rpb24oU3RyaW5nJiYgZGF0YSk7CisgICAgV0VCQ09SRV9F
WFBPUlQgRXhjZXB0aW9uT3I8UmVmPFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4+IGNyZWF0ZVByb2Nl
c3NpbmdJbnN0cnVjdGlvbihTdHJpbmcmJiB0YXJnZXQsIFN0cmluZyYmIGRhdGEpOwogICAgIFdF
QkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFJlZjxBdHRyPj4gY3JlYXRlQXR0cmlidXRlKGNvbnN0
IEF0b21TdHJpbmcmIG5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFJlZjxB
dHRyPj4gY3JlYXRlQXR0cmlidXRlTlMoY29uc3QgQXRvbVN0cmluZyYgbmFtZXNwYWNlVVJJLCBj
b25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsIGJvb2wgc2hvdWxkSWdub3JlTmFtZXNwYWNlQ2hl
Y2tzID0gZmFsc2UpOwogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFJlZjxOb2RlPj4g
aW1wb3J0Tm9kZShOb2RlJiBub2RlVG9JbXBvcnQsIGJvb2wgZGVlcCk7CkBAIC02MTIsNyArNjEy
LDcgQEAgcHVibGljOgogCiAgICAgLy8gU3BlY2lhbCBzdXBwb3J0IGZvciBlZGl0aW5nCiAgICAg
V0VCQ09SRV9FWFBPUlQgUmVmPENTU1N0eWxlRGVjbGFyYXRpb24+IGNyZWF0ZUNTU1N0eWxlRGVj
bGFyYXRpb24oKTsKLSAgICBSZWY8VGV4dD4gY3JlYXRlRWRpdGluZ1RleHROb2RlKGNvbnN0IFN0
cmluZyYpOworICAgIFJlZjxUZXh0PiBjcmVhdGVFZGl0aW5nVGV4dE5vZGUoU3RyaW5nJiYpOwog
CiAgICAgZW51bSBjbGFzcyBSZXNvbHZlU3R5bGVUeXBlIHsgTm9ybWFsLCBSZWJ1aWxkIH07CiAg
ICAgdm9pZCByZXNvbHZlU3R5bGUoUmVzb2x2ZVN0eWxlVHlwZSA9IFJlc29sdmVTdHlsZVR5cGU6
Ok5vcm1hbCk7CkBAIC05NjgsNyArOTY4LDcgQEAgcHVibGljOgogCiAgICAgLy8gVXNlZCBieSBE
T00gYmluZGluZ3M7IG5vIGRpcmVjdGlvbiBrbm93bi4KICAgICBjb25zdCBTdHJpbmcmIHRpdGxl
KCkgY29uc3QgeyByZXR1cm4gbV90aXRsZS5zdHJpbmc7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
VGl0bGUoU3RyaW5nJiYpOwogICAgIGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlV2l0
aERpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGl0bGU7IH0KIAogICAgIFdFQkNPUkVfRVhQ
T1JUIGNvbnN0IEF0b21TdHJpbmcmIGRpcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmlu
ZGV4IGI3NTYxM2MyOTYzYzg3YjI1ZjU5NTI3YzFiYzJiMzg0NzlhYTM3NWMuLjBjMzk2NTkwZWIw
ZDAwYzQ1OGY1NmY2NWNlYjhkZTAwYmYwZmJiMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAg
LTQ2NTMsOSArNDY1Myw5IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEVsZW1lbnQ6Omluc2VydEFkamFj
ZW50SFRNTChjb25zdCBTdHJpbmcmIHdoZXJlLCBjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIGlu
c2VydEFkamFjZW50SFRNTCh3aGVyZSwgbWFya3VwLCBudWxscHRyKTsKIH0KIAotRXhjZXB0aW9u
T3I8dm9pZD4gRWxlbWVudDo6aW5zZXJ0QWRqYWNlbnRUZXh0KGNvbnN0IFN0cmluZyYgd2hlcmUs
IGNvbnN0IFN0cmluZyYgdGV4dCkKK0V4Y2VwdGlvbk9yPHZvaWQ+IEVsZW1lbnQ6Omluc2VydEFk
amFjZW50VGV4dChjb25zdCBTdHJpbmcmIHdoZXJlLCBTdHJpbmcmJiB0ZXh0KQogewotICAgIGF1
dG8gcmVzdWx0ID0gaW5zZXJ0QWRqYWNlbnQod2hlcmUsIGRvY3VtZW50KCkuY3JlYXRlVGV4dE5v
ZGUodGV4dCkpOworICAgIGF1dG8gcmVzdWx0ID0gaW5zZXJ0QWRqYWNlbnQod2hlcmUsIGRvY3Vt
ZW50KCkuY3JlYXRlVGV4dE5vZGUoV1RGTW92ZSh0ZXh0KSkpOwogICAgIGlmIChyZXN1bHQuaGFz
RXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwog
ICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCBmMjUwOThjNzY5ZTc5MGUxZTFl
MTY5MTZiYjE0NmUwMDQ1NjY0MDA4Li4yYjNlMzk5ZGE0Nzk3Y2U3NjgyY2U2NTUzNTQ3ZjlhNDMx
YjJkY2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTM3Miw3ICszNzIsNyBAQCBwdWJsaWM6CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxFbGVtZW50Kj4gaW5zZXJ0QWRqYWNlbnRF
bGVtZW50KGNvbnN0IFN0cmluZyYgd2hlcmUsIEVsZW1lbnQmIG5ld0NoaWxkKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBpbnNlcnRBZGphY2VudEhUTUwoY29uc3QgU3Ry
aW5nJiB3aGVyZSwgY29uc3QgU3RyaW5nJiBodG1sKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBFeGNl
cHRpb25Pcjx2b2lkPiBpbnNlcnRBZGphY2VudFRleHQoY29uc3QgU3RyaW5nJiB3aGVyZSwgY29u
c3QgU3RyaW5nJiB0ZXh0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBp
bnNlcnRBZGphY2VudFRleHQoY29uc3QgU3RyaW5nJiB3aGVyZSwgU3RyaW5nJiYgdGV4dCk7CiAK
ICAgICBjb25zdCBSZW5kZXJTdHlsZSogY29tcHV0ZWRTdHlsZShQc2V1ZG9JZCA9IFBzZXVkb0lk
OjpOb25lKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdl
T3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW1hZ2VPdmVybGF5LmNwcAppbmRleCBl
MDRjNzY2OWI2MzRjMDM2N2Y2Mjc4MDlkZjE2ZmMzNDQ1NjU2ZTY5Li43ODRiNWFlYzA4MzA4ZDgw
MDc5NjI2MzFhZjI4MTQyMzQzY2JkNDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
SW1hZ2VPdmVybGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW1hZ2VPdmVybGF5LmNw
cApAQCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRpYyB2b2lkIGluc3RhbGxJbWFnZU92ZXJsYXlTdHls
ZVNoZWV0KFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QpCiB7CiAgICAgc3RhdGljIE1haW5UaHJlYWRO
ZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHNoYWRvd1N0eWxlKFN0cmluZ0ltcGw6OmNyZWF0
ZVdpdGhvdXRDb3B5aW5nKGltYWdlT3ZlcmxheVVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihp
bWFnZU92ZXJsYXlVc2VyQWdlbnRTdHlsZVNoZWV0KSkpOwogICAgIGF1dG8gc3R5bGUgPSBIVE1M
U3R5bGVFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjpzdHlsZVRhZywgc2hhZG93Um9vdC5kb2N1
bWVudCgpLCBmYWxzZSk7Ci0gICAgc3R5bGUtPnNldFRleHRDb250ZW50KHNoYWRvd1N0eWxlKTsK
KyAgICBzdHlsZS0+c2V0VGV4dENvbnRlbnQoU3RyaW5nIHsgc2hhZG93U3R5bGUgfSk7CiAgICAg
c2hhZG93Um9vdC5hcHBlbmRDaGlsZChXVEZNb3ZlKHN0eWxlKSk7CiB9CiAKQEAgLTM5Nyw3ICsz
OTcsNyBAQCBzdGF0aWMgRWxlbWVudHMgdXBkYXRlU3VidHJlZShIVE1MRWxlbWVudCYgZWxlbWVu
dCwgY29uc3QgVGV4dFJlY29nbml0aW9uUmVzdWx0JgogICAgICAgICAgICAgICAgIGF1dG8gdGV4
dENvbnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCkpOwogICAg
ICAgICAgICAgICAgIHRleHRDb250YWluZXItPmNsYXNzTGlzdCgpLmFkZChpbWFnZU92ZXJsYXlU
ZXh0Q2xhc3MoKSk7CiAgICAgICAgICAgICAgICAgbGluZUNvbnRhaW5lci0+YXBwZW5kQ2hpbGQo
dGV4dENvbnRhaW5lcik7Ci0gICAgICAgICAgICAgICAgdGV4dENvbnRhaW5lci0+YXBwZW5kQ2hp
bGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50LmdldCgpLCBjaGlsZC5oYXNMZWFkaW5nV2hpdGVzcGFj
ZSA/IG1ha2VTdHJpbmcoJ1xuJywgY2hpbGQudGV4dCkgOiBjaGlsZC50ZXh0KSk7CisgICAgICAg
ICAgICAgICAgdGV4dENvbnRhaW5lci0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50
LmdldCgpLCBjaGlsZC5oYXNMZWFkaW5nV2hpdGVzcGFjZSA/IG1ha2VTdHJpbmcoJ1xuJywgY2hp
bGQudGV4dCkgOiBTdHJpbmcgeyBjaGlsZC50ZXh0IH0pKTsKICAgICAgICAgICAgICAgICBsaW5l
RWxlbWVudHMuY2hpbGRyZW4udW5jaGVja2VkQXBwZW5kKFdURk1vdmUodGV4dENvbnRhaW5lcikp
OwogICAgICAgICAgICAgfQogCkBAIC00MjQsMTAgKzQyNCwxMCBAQCBzdGF0aWMgRWxlbWVudHMg
dXBkYXRlU3VidHJlZShIVE1MRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVGV4dFJlY29nbml0aW9u
UmVzdWx0JgogICAgICAgICAgICAgYXV0byBibG9ja0NvbnRhaW5lciA9IEhUTUxEaXZFbGVtZW50
OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCkpOwogICAgICAgICAgICAgYmxvY2tDb250YWluZXItPmNs
YXNzTGlzdCgpLmFkZChpbWFnZU92ZXJsYXlCbG9ja0NsYXNzKCkpOwogICAgICAgICAgICAgYXV0
byBsaW5lcyA9IGJsb2NrLnRleHQuc3BsaXQobmV3bGluZUNoYXJhY3Rlcik7Ci0gICAgICAgICAg
ICBmb3IgKGF1dG8mIHRleHRDb250ZW50IDogbGluZXMpIHsKKyAgICAgICAgICAgIGZvciAoYXV0
byYmIHRleHRDb250ZW50IDogV1RGTW92ZShsaW5lcykpIHsKICAgICAgICAgICAgICAgICBpZiAo
YmxvY2tDb250YWluZXItPmhhc0NoaWxkTm9kZXMoKSkKICAgICAgICAgICAgICAgICAgICAgYmxv
Y2tDb250YWluZXItPmFwcGVuZENoaWxkKEhUTUxCUkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudC5n
ZXQoKSkpOwotICAgICAgICAgICAgICAgIGJsb2NrQ29udGFpbmVyLT5hcHBlbmRDaGlsZChUZXh0
OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCksIHRleHRDb250ZW50KSk7CisgICAgICAgICAgICAgICAg
YmxvY2tDb250YWluZXItPmFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVudC5nZXQoKSwg
V1RGTW92ZSh0ZXh0Q29udGVudCkpKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgY29u
c3RleHByIGF1dG8gbWF4TGluZUNvdW50Rm9yQ2VudGVyQWxpZ25lZFRleHQgPSAyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCmluZGV4IGNiNDdlYWFlYzBkZTcwNWIzNDgzNmY1NzAyN2I0ZGMxNTc4Yjk1MWUuLjNh
ZWEwYjQ1OWVmNTgxZGUwYTM0MjIxMzc5OWMxNWRiNzY1MWQ1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAK
QEAgLTU1Miw3ICs1NTIsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Tm9kZT4+IE5vZGU6OmNvbnZl
cnROb2Rlc09yU3RyaW5nc0ludG9Ob2RlKEZpeGVkVmVjdG9yPE5vZGVPcgogICAgIGZvciAoYXV0
byYgdmFyaWFudCA6IG5vZGVPclN0cmluZ1ZlY3RvcikgewogICAgICAgICBXVEY6OnN3aXRjaE9u
KHZhcmlhbnQsCiAgICAgICAgICAgICBbJl0oUmVmUHRyPE5vZGU+JiBub2RlKSB7IG5vZGVzLnVu
Y2hlY2tlZEFwcGVuZCgqbm9kZS5nZXQoKSk7IH0sCi0gICAgICAgICAgICBbJl0oU3RyaW5nJiBz
dHJpbmcpIHsgbm9kZXMudW5jaGVja2VkQXBwZW5kKFRleHQ6OmNyZWF0ZShkb2N1bWVudCgpLCBz
dHJpbmcpKTsgfQorICAgICAgICAgICAgWyZdKFN0cmluZyYgc3RyaW5nKSB7IG5vZGVzLnVuY2hl
Y2tlZEFwcGVuZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQoKSwgV1RGTW92ZShzdHJpbmcpKSk7IH0K
ICAgICAgICAgKTsKICAgICB9CiAKQEAgLTE1OTAsNyArMTU5MCw3IEBAIFN0cmluZyBOb2RlOjp0
ZXh0Q29udGVudChib29sIGNvbnZlcnRCUnNUb05ld2xpbmVzKSBjb25zdAogICAgIHJldHVybiBp
c051bGxTdHJpbmcgPyBTdHJpbmcoKSA6IGNvbnRlbnQudG9TdHJpbmcoKTsKIH0KIAotdm9pZCBO
b2RlOjpzZXRUZXh0Q29udGVudChjb25zdCBTdHJpbmcmIHRleHQpCit2b2lkIE5vZGU6OnNldFRl
eHRDb250ZW50KFN0cmluZyYmIHRleHQpCiB7ICAgICAgICAgICAKICAgICBzd2l0Y2ggKG5vZGVU
eXBlKCkpIHsKICAgICBjYXNlIEFUVFJJQlVURV9OT0RFOgpAQCAtMTU5OCwxMSArMTU5OCwxMSBA
QCB2b2lkIE5vZGU6OnNldFRleHRDb250ZW50KGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBjYXNl
IENEQVRBX1NFQ1RJT05fTk9ERToKICAgICBjYXNlIENPTU1FTlRfTk9ERToKICAgICBjYXNlIFBS
T0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKLSAgICAgICAgc2V0Tm9kZVZhbHVlKHRleHQpOwor
ICAgICAgICBzZXROb2RlVmFsdWUoV1RGTW92ZSh0ZXh0KSk7CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIEVMRU1FTlRfTk9ERToKICAgICBjYXNlIERPQ1VNRU5UX0ZSQUdNRU5UX05PREU6Ci0g
ICAgICAgIGRvd25jYXN0PENvbnRhaW5lck5vZGU+KCp0aGlzKS5zdHJpbmdSZXBsYWNlQWxsKHRl
eHQpOworICAgICAgICBkb3duY2FzdDxDb250YWluZXJOb2RlPigqdGhpcykuc3RyaW5nUmVwbGFj
ZUFsbChXVEZNb3ZlKHRleHQpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRE9DVU1FTlRf
Tk9ERToKICAgICBjYXNlIERPQ1VNRU5UX1RZUEVfTk9ERToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IGEzM2U2
ODIyNjVlM2ExMWJhNWI1ODJjMTNkMDBjYTI4OGZhZTM1ZTAuLmE4NTYwMzBiYzExZGFjODBlMjM5
YTVhMjZlYTlkMTNkODVlZjJkMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMTc1LDcgKzE3NSw3IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBBdG9tU3RyaW5nJiBsb29rdXBOYW1lc3Bh
Y2VVUkkoY29uc3QgQXRvbVN0cmluZyYgcHJlZml4KSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIFN0cmluZyB0ZXh0Q29udGVudChib29sIGNvbnZlcnRCUnNUb05ld2xpbmVzID0gZmFsc2Up
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGV4dENvbnRlbnQoY29uc3QgU3Ry
aW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUZXh0Q29udGVudChTdHJpbmcmJik7
CiAgICAgCiAgICAgTm9kZSogbGFzdERlc2NlbmRhbnQoKSBjb25zdDsKICAgICBOb2RlKiBmaXJz
dERlc2NlbmRhbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0
cnVjdGlvbi5jcHAKaW5kZXggOTc0Njk2MjlmOTQ1M2U3ZDE2MzdhYTU1YTgzNjQxY2Q0ZTBlZWQz
Yy4uYzJmM2I3MzA3ZDBkMDkwYTMzY2M3MTY2ZGE2MjM0OWY1MmI1MGNlZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKQEAgLTQzLDE1ICs0MywxNSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24pOwogCi1pbmxpbmUgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRhcmdl
dCwgY29uc3QgU3RyaW5nJiBkYXRhKQotICAgIDogQ2hhcmFjdGVyRGF0YShkb2N1bWVudCwgZGF0
YSkKLSAgICAsIG1fdGFyZ2V0KHRhcmdldCkKK2lubGluZSBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246
OlByb2Nlc3NpbmdJbnN0cnVjdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZyYmIHRhcmdl
dCwgU3RyaW5nJiYgZGF0YSkKKyAgICA6IENoYXJhY3RlckRhdGEoZG9jdW1lbnQsIFdURk1vdmUo
ZGF0YSkpCisgICAgLCBtX3RhcmdldChXVEZNb3ZlKHRhcmdldCkpCiB7CiB9CiAKLVJlZjxQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24+IFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y3JlYXRlKERvY3VtZW50
JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgZGF0YSkKK1Jl
ZjxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24+IFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y3JlYXRlKERv
Y3VtZW50JiBkb2N1bWVudCwgU3RyaW5nJiYgdGFyZ2V0LCBTdHJpbmcmJiBkYXRhKQogewotICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFByb2Nlc3NpbmdJbnN0cnVjdGlvbihkb2N1bWVudCwgdGFy
Z2V0LCBkYXRhKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUHJvY2Vzc2luZ0luc3RydWN0
aW9uKGRvY3VtZW50LCBXVEZNb3ZlKHRhcmdldCksIFdURk1vdmUoZGF0YSkpKTsKIH0KIAogUHJv
Y2Vzc2luZ0luc3RydWN0aW9uOjp+UHJvY2Vzc2luZ0luc3RydWN0aW9uKCkKQEAgLTgwLDcgKzgw
LDcgQEAgUmVmPE5vZGU+IFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y2xvbmVOb2RlSW50ZXJuYWwo
RG9jdW1lbnQmIHRhcmdldERvY3VtZW50LCBDbG8KIHsKICAgICAvLyBGSVhNRTogSXMgaXQgYSBw
cm9ibGVtIHRoYXQgdGhpcyBkb2VzIG5vdCBjb3B5IG1fbG9jYWxIcmVmPwogICAgIC8vIFdoYXQg
YWJvdXQgb3RoZXIgZGF0YSBtZW1iZXJzPwotICAgIHJldHVybiBjcmVhdGUodGFyZ2V0RG9jdW1l
bnQsIG1fdGFyZ2V0LCBkYXRhKCkpOworICAgIHJldHVybiBjcmVhdGUodGFyZ2V0RG9jdW1lbnQs
IFN0cmluZyB7IG1fdGFyZ2V0IH0sIFN0cmluZyB7IGRhdGEoKSB9KTsKIH0KIAogdm9pZCBQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb246OmNoZWNrU3R5bGVTaGVldCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
UHJvY2Vzc2luZ0luc3RydWN0aW9uLmgKaW5kZXggNjQwZGM0YzlkOWEwMjg3NDE0ZmY3MjlhOWJi
YWQzODJmMjc2OWMxMi4uNzMzMWIyNGMxOGVhNjUwZTFlYzcyNGE3YTdiMzlhYzA4MjlhOTI0NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaApAQCAtMzQsNyAr
MzQsNyBAQCBjbGFzcyBDU1NTdHlsZVNoZWV0OwogY2xhc3MgUHJvY2Vzc2luZ0luc3RydWN0aW9u
IGZpbmFsIDogcHVibGljIENoYXJhY3RlckRhdGEsIHByaXZhdGUgQ2FjaGVkU3R5bGVTaGVldENs
aWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24p
OwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UHJvY2Vzc2luZ0luc3RydWN0aW9uPiBjcmVhdGUo
RG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBkYXRhKTsKKyAg
ICBzdGF0aWMgUmVmPFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4gY3JlYXRlKERvY3VtZW50JiwgU3Ry
aW5nJiYgdGFyZ2V0LCBTdHJpbmcmJiBkYXRhKTsKICAgICB2aXJ0dWFsIH5Qcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24oKTsKIAogICAgIGNvbnN0IFN0cmluZyYgdGFyZ2V0KCkgY29uc3QgeyByZXR1cm4g
bV90YXJnZXQ7IH0KQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGZy
aWVuZCBjbGFzcyBDaGFyYWN0ZXJEYXRhOwotICAgIFByb2Nlc3NpbmdJbnN0cnVjdGlvbihEb2N1
bWVudCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgIFBy
b2Nlc3NpbmdJbnN0cnVjdGlvbihEb2N1bWVudCYsIFN0cmluZyYmIHRhcmdldCwgU3RyaW5nJiYg
ZGF0YSk7CiAKICAgICBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICBOb2Rl
VHlwZSBub2RlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCmluZGV4IDRiOTAz
ZjhmZGYyYmFkOTM5ZGRhYmE4MGNkZTg4MDU0NDEyOTc2ZTIuLmU2N2IyYjIxMDk0ODM4NDJmMDA2
MWUyZjI3YjZhNjY3MjI0ZmRmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKQEAgLTQ0LDE0ICs0NCwxNCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChUZXh0
KTsKIAotUmVmPFRleHQ+IFRleHQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0
cmluZyYgZGF0YSkKK1JlZjxUZXh0PiBUZXh0OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBT
dHJpbmcmJiBkYXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHQoZG9jdW1lbnQs
IGRhdGEsIENyZWF0ZVRleHQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0KGRvY3Vt
ZW50LCBXVEZNb3ZlKGRhdGEpLCBDcmVhdGVUZXh0KSk7CiB9CiAKLVJlZjxUZXh0PiBUZXh0Ojpj
cmVhdGVFZGl0aW5nVGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZGF0YSkK
K1JlZjxUZXh0PiBUZXh0OjpjcmVhdGVFZGl0aW5nVGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIFN0
cmluZyYmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dChkb2N1bWVudCwg
ZGF0YSwgQ3JlYXRlRWRpdGluZ1RleHQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0
KGRvY3VtZW50LCBXVEZNb3ZlKGRhdGEpLCBDcmVhdGVFZGl0aW5nVGV4dCkpOwogfQogCiBUZXh0
Ojp+VGV4dCgpID0gZGVmYXVsdDsKQEAgLTE2Myw3ICsxNjMsNyBAQCBOb2RlOjpOb2RlVHlwZSBU
ZXh0Ojpub2RlVHlwZSgpIGNvbnN0CiAKIFJlZjxOb2RlPiBUZXh0OjpjbG9uZU5vZGVJbnRlcm5h
bChEb2N1bWVudCYgdGFyZ2V0RG9jdW1lbnQsIENsb25pbmdPcGVyYXRpb24pCiB7Ci0gICAgcmV0
dXJuIGNyZWF0ZSh0YXJnZXREb2N1bWVudCwgZGF0YSgpKTsKKyAgICByZXR1cm4gY3JlYXRlKHRh
cmdldERvY3VtZW50LCBTdHJpbmcgeyBkYXRhKCkgfSk7CiB9CiAKIHN0YXRpYyBib29sIGlzU1ZH
U2hhZG93VGV4dChUZXh0KiB0ZXh0KQpAQCAtMTk1LDkgKzE5NSw5IEBAIGJvb2wgVGV4dDo6Y2hp
bGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJl
ZjxUZXh0PiBUZXh0Ojp2aXJ0dWFsQ3JlYXRlKGNvbnN0IFN0cmluZyYgZGF0YSkKK1JlZjxUZXh0
PiBUZXh0Ojp2aXJ0dWFsQ3JlYXRlKFN0cmluZyYmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIGNyZWF0
ZShkb2N1bWVudCgpLCBkYXRhKTsKKyAgICByZXR1cm4gY3JlYXRlKGRvY3VtZW50KCksIFdURk1v
dmUoZGF0YSkpOwogfQogCiBSZWY8VGV4dD4gVGV4dDo6Y3JlYXRlV2l0aExlbmd0aExpbWl0KERv
Y3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBkYXRhLCB1bnNpZ25lZCBzdGFydCwgdW5z
aWduZWQgbGVuZ3RoTGltaXQpCkBAIC0yMDUsNyArMjA1LDcgQEAgUmVmPFRleHQ+IFRleHQ6OmNy
ZWF0ZVdpdGhMZW5ndGhMaW1pdChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZGF0
YSwgdW4KICAgICB1bnNpZ25lZCBkYXRhTGVuZ3RoID0gZGF0YS5sZW5ndGgoKTsKIAogICAgIGlm
ICghc3RhcnQgJiYgZGF0YUxlbmd0aCA8PSBsZW5ndGhMaW1pdCkKLSAgICAgICAgcmV0dXJuIGNy
ZWF0ZShkb2N1bWVudCwgZGF0YSk7CisgICAgICAgIHJldHVybiBjcmVhdGUoZG9jdW1lbnQsIFN0
cmluZyB7IGRhdGEgfSk7CiAKICAgICBSZWY8VGV4dD4gcmVzdWx0ID0gVGV4dDo6Y3JlYXRlKGRv
Y3VtZW50LCBTdHJpbmcoKSk7CiAgICAgcmVzdWx0LT5wYXJzZXJBcHBlbmREYXRhKGRhdGEsIHN0
YXJ0LCBsZW5ndGhMaW1pdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaAppbmRleCBlYmM5ZDEwY2M0OGUxMGE3NzZlZjEx
MmMxMzZhNWM2YjQ3MTcxYmIyLi42MmM3NWNlMWM2ZjJmNzJmOWI3MzQ3YmZhYWRmNjdiYTYzN2M0
NWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9UZXh0LmgKQEAgLTM0LDkgKzM0LDkgQEAgY2xhc3MgVGV4dCA6IHB1YmxpYyBD
aGFyYWN0ZXJEYXRhIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZGVmYXVs
dExlbmd0aExpbWl0ID0gMSA8PCAxNjsKIAotICAgIHN0YXRpYyBSZWY8VGV4dD4gY3JlYXRlKERv
Y3VtZW50JiwgY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIFJlZjxUZXh0PiBjcmVhdGUoRG9j
dW1lbnQmLCBTdHJpbmcmJik7CiAgICAgc3RhdGljIFJlZjxUZXh0PiBjcmVhdGVXaXRoTGVuZ3Ro
TGltaXQoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBwb3NpdGlvbkluU3RyaW5n
LCB1bnNpZ25lZCBsZW5ndGhMaW1pdCA9IGRlZmF1bHRMZW5ndGhMaW1pdCk7Ci0gICAgc3RhdGlj
IFJlZjxUZXh0PiBjcmVhdGVFZGl0aW5nVGV4dChEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYpOwor
ICAgIHN0YXRpYyBSZWY8VGV4dD4gY3JlYXRlRWRpdGluZ1RleHQoRG9jdW1lbnQmLCBTdHJpbmcm
Jik7CiAKICAgICB2aXJ0dWFsIH5UZXh0KCk7CiAKQEAgLTU5LDggKzU5LDggQEAgcHVibGljOgog
ICAgIFN0cmluZyBkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3QgZmluYWw7CiAKIHByb3RlY3RlZDoK
LSAgICBUZXh0KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBkYXRhLCBDb25zdHJ1
Y3Rpb25UeXBlIHR5cGUpCi0gICAgICAgIDogQ2hhcmFjdGVyRGF0YShkb2N1bWVudCwgZGF0YSwg
dHlwZSkKKyAgICBUZXh0KERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5nJiYgZGF0YSwgQ29uc3Ry
dWN0aW9uVHlwZSB0eXBlKQorICAgICAgICA6IENoYXJhY3RlckRhdGEoZG9jdW1lbnQsIFdURk1v
dmUoZGF0YSksIHR5cGUpCiAgICAgewogICAgIH0KIApAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBzZXREYXRhQW5kVXBkYXRlKGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIG9mZnNldE9m
UmVwbGFjZWREYXRhLCB1bnNpZ25lZCBvbGRMZW5ndGgsIHVuc2lnbmVkIG5ld0xlbmd0aCwgVXBk
YXRlTGl2ZVJhbmdlcykgZmluYWw7CiAKLSAgICB2aXJ0dWFsIFJlZjxUZXh0PiB2aXJ0dWFsQ3Jl
YXRlKGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgUmVmPFRleHQ+IHZpcnR1YWxDcmVhdGUo
U3RyaW5nJiYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL21hYy9JbWFnZUNvbnRyb2xzTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9tYWMvSW1hZ2VDb250cm9sc01hYy5jcHAKaW5kZXggYmUyMzY4OGUzMWJlMzRhNjBiMGFi
ZWE3NjNiNWFiZmZhZGJlOWVlMS4uZWMwNzY4ODIxMmUwMmJmZjBiMmIxMzEyYWVmZDg3N2MyNThm
ZmM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL21hYy9JbWFnZUNvbnRyb2xzTWFj
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWFjL0ltYWdlQ29udHJvbHNNYWMuY3BwCkBA
IC05NSw3ICs5NSw3IEBAIHZvaWQgY3JlYXRlSW1hZ2VDb250cm9scyhIVE1MRWxlbWVudCYgZWxl
bWVudCkKICAgICAKICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0
cmluZz4gc2hhZG93U3R5bGUoU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoaW1hZ2VD
b250cm9sc01hY1VzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihpbWFnZUNvbnRyb2xzTWFjVXNl
ckFnZW50U3R5bGVTaGVldCkpKTsKICAgICBhdXRvIHN0eWxlID0gSFRNTFN0eWxlRWxlbWVudDo6
Y3JlYXRlKEhUTUxOYW1lczo6c3R5bGVUYWcsIGRvY3VtZW50LmdldCgpLCBmYWxzZSk7Ci0gICAg
c3R5bGUtPnNldFRleHRDb250ZW50KHNoYWRvd1N0eWxlKTsKKyAgICBzdHlsZS0+c2V0VGV4dENv
bnRlbnQoU3RyaW5nIHsgc2hhZG93U3R5bGUgfSk7CiAgICAgc2hhZG93Um9vdC0+YXBwZW5kQ2hp
bGQoV1RGTW92ZShzdHlsZSkpOwogICAgIAogICAgIGF1dG8gYnV0dG9uID0gSFRNTEJ1dHRvbkVs
ZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmJ1dHRvblRhZywgZWxlbWVudC5kb2N1bWVudCgpLCBu
dWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ3JlYXRlTGlua0Nv
bW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9DcmVhdGVMaW5rQ29tbWFuZC5jcHAK
aW5kZXggNjZmYTMxMGI5ZjMzMjY1MDRmOTUyYThkNTRjOGRhMWExMWVlYzY0My4uMGYzYTdmOTQ4
NTU4NGYwNzg3YjhkMDRjYTY5MDkxNWMxMWI1Y2M1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9DcmVhdGVMaW5rQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9DcmVhdGVMaW5rQ29tbWFuZC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBDcmVhdGVM
aW5rQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgICAgIGFwcGx5U3R5bGVkRWxlbWVudChXVEZNb3Zl
KGFuY2hvckVsZW1lbnQpKTsKICAgICBlbHNlIHsKICAgICAgICAgaW5zZXJ0Tm9kZUF0KGFuY2hv
ckVsZW1lbnQuY29weVJlZigpLCBlbmRpbmdTZWxlY3Rpb24oKS5zdGFydCgpKTsKLSAgICAgICAg
YXBwZW5kTm9kZShUZXh0OjpjcmVhdGUoZG9jdW1lbnQoKSwgbV91cmwpLCBhbmNob3JFbGVtZW50
LmNvcHlSZWYoKSk7CisgICAgICAgIGFwcGVuZE5vZGUoVGV4dDo6Y3JlYXRlKGRvY3VtZW50KCks
IFN0cmluZyB7IG1fdXJsIH0pLCBhbmNob3JFbGVtZW50LmNvcHlSZWYoKSk7CiAgICAgICAgIHNl
dEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVO
b2RlKGFuY2hvckVsZW1lbnQucHRyKCkpLCBwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKGFuY2hv
ckVsZW1lbnQucHRyKCkpLCBBZmZpbml0eTo6RG93bnN0cmVhbSwgZW5kaW5nU2VsZWN0aW9uKCku
aXNEaXJlY3Rpb25hbCgpKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAK
aW5kZXggODBmZmQxZWMzZjgyMGYxNjY3MmFiMThiNjQyNTA0M2I5YmY0YmYyMy4uNjg0NWI4NzA3
M2VkYjljNDJhODBiNDY0NDY3ODkwZDk1NzEyZmEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRp
bmcuY3BwCkBAIC04MjcsOSArODI3LDkgQEAgc3RhdGljIFJlZjxFbGVtZW50PiBjcmVhdGVUYWJT
cGFuRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIFRleHQmIHRhYlRleHROb2RlKQogICAgIHJl
dHVybiBzcGFuRWxlbWVudDsKIH0KIAotUmVmPEVsZW1lbnQ+IGNyZWF0ZVRhYlNwYW5FbGVtZW50
KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0YWJUZXh0KQorUmVmPEVsZW1lbnQ+
IGNyZWF0ZVRhYlNwYW5FbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5nJiYgdGFiVGV4
dCkKIHsKLSAgICByZXR1cm4gY3JlYXRlVGFiU3BhbkVsZW1lbnQoZG9jdW1lbnQsIGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKHRhYlRleHQpKTsKKyAgICByZXR1cm4gY3JlYXRlVGFiU3BhbkVsZW1l
bnQoZG9jdW1lbnQsIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFdURk1vdmUodGFiVGV4dCkpKTsK
IH0KIAogUmVmPEVsZW1lbnQ+IGNyZWF0ZVRhYlNwYW5FbGVtZW50KERvY3VtZW50JiBkb2N1bWVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5oIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmgKaW5kZXggOTZjZWM5N2NmN2UzYjE2Y2UwZjFjMDVi
ZTc0ZDcyMDhjY2M0ZGFiOS4uMjc2MTIwYzRjN2EyNWIyZmNhNzViODJlMjliNmMyYWY0MDI2MzUx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmgKQEAgLTE2OSw3ICsxNjksNyBAQCBOb2RlKiBl
bmNsb3NpbmdMaXN0Q2hpbGQoTm9kZSopOwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBSZWY8RWxl
bWVudD4gY3JlYXRlVGFiU3BhbkVsZW1lbnQoRG9jdW1lbnQmKTsKLVJlZjxFbGVtZW50PiBjcmVh
dGVUYWJTcGFuRWxlbWVudChEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgdGFiVGV4dCk7CitSZWY8
RWxlbWVudD4gY3JlYXRlVGFiU3BhbkVsZW1lbnQoRG9jdW1lbnQmLCBTdHJpbmcmJiB0YWJUZXh0
KTsKIFJlZjxFbGVtZW50PiBjcmVhdGVCbG9ja1BsYWNlaG9sZGVyRWxlbWVudChEb2N1bWVudCYp
OwogCiBFbGVtZW50KiBlZGl0YWJsZVJvb3RGb3JQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYsIEVk
aXRhYmxlVHlwZSA9IENvbnRlbnRJc0VkaXRhYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cAppbmRleCBkZGMzNjQ4N2VlMTdhMWRmZDM4Yjg2MTM0OGQxOTk5MDQxOWY0ZmY4Li5kNWYxZjlm
YjAzMjAxMGExYTRhNjAwN2M2OWIwZDlhOWU5ZmMzMDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCkBAIC00MzYyLDcgKzQzNjIsNyBAQCBjb25zdCBSZW5kZXJTdHlsZSogRWRpdG9yOjpz
dHlsZUZvclNlbGVjdGlvblN0YXJ0KFJlZlB0cjxOb2RlPiYgbm9kZVRvUmVtb3ZlKQogICAgIFN0
cmluZyBzdHlsZVRleHQgPSB0eXBpbmdTdHlsZS0+c3R5bGUoKS0+YXNUZXh0KCkgKyAiIGRpc3Bs
YXk6IGlubGluZSI7CiAgICAgc3R5bGVFbGVtZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpz
dHlsZUF0dHIsIHN0eWxlVGV4dCk7CiAKLSAgICBzdHlsZUVsZW1lbnQtPmFwcGVuZENoaWxkKGRv
Y3VtZW50KCkuY3JlYXRlRWRpdGluZ1RleHROb2RlKGVtcHR5U3RyaW5nKCkpKTsKKyAgICBzdHls
ZUVsZW1lbnQtPmFwcGVuZENoaWxkKGRvY3VtZW50KCkuY3JlYXRlRWRpdGluZ1RleHROb2RlKFN0
cmluZyB7IGVtcHR5U3RyaW5nKCkgfSkpOwogCiAgICAgYXV0byBwb3NpdGlvbk5vZGUgPSBwb3Np
dGlvbi5kZXByZWNhdGVkTm9kZSgpOwogICAgIEFTU0VSVChwb3NpdGlvbk5vZGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmgKaW5kZXggODI3ZmFiZWRlYWNkZDc5OTg5Yzk5NzI3Zjc3ZjY4NzQ3ZDQy
YzM3Yy4uMGIyOTFmNGI5ZDRjODRkMjc1M2I4OTFlZTE2NTJiNjdjMDRhZjNmYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5oCkBAIC00MzQsNyArNDM0LDcgQEAgcHVibGljOgogCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbmZpcm1NYXJrZWRUZXh0
KCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUZXh0QXNDaGlsZE9mRWxlbWVudChjb25z
dCBTdHJpbmcmLCBFbGVtZW50Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUZXh0QXND
aGlsZE9mRWxlbWVudChTdHJpbmcmJiwgRWxlbWVudCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5n
RGlyZWN0aW9uKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluc2VydERpY3RhdGlvblBocmFz
ZXMoVmVjdG9yPFZlY3RvcjxTdHJpbmc+PiYmIGRpY3RhdGlvblBocmFzZXMsIGlkIG1ldGFkYXRh
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERpY3RhdGlvblBocmFzZXNBc0NoaWxkT2ZF
bGVtZW50KGNvbnN0IFZlY3RvcjxWZWN0b3I8U3RyaW5nPj4mIGRpY3RhdGlvblBocmFzZXMsIGlk
IG1ldGFkYXRhLCBFbGVtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNl
cnRMaW5lQnJlYWtDb21tYW5kLmNwcAppbmRleCAzZTMzNzNhYzNmNmZkMzFhMGFjMDRkNDYxZGE4
YzY3MTM5YTAwMDY3Li45MTI5YTNiZjgzMTFjNWVhODRjZWJlMzdkOTFlZWY2OGFjNDMxMGNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5j
cHAKQEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIEluc2VydExpbmVCcmVha0NvbW1hbmQ6OmRvQXBw
bHkoKQogICAgICAgICAgICAgaWYgKHRleHROb2RlLmlzQ29ubmVjdGVkKCkpCiAgICAgICAgICAg
ICAgICAgaW5zZXJ0VGV4dEludG9Ob2RlKHRleHROb2RlLCAwLCBub25CcmVha2luZ1NwYWNlU3Ry
aW5nKCkpOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgYXV0byBuYnNwTm9k
ZSA9IGRvY3VtZW50KCkuY3JlYXRlVGV4dE5vZGUobm9uQnJlYWtpbmdTcGFjZVN0cmluZygpKTsK
KyAgICAgICAgICAgICAgICBhdXRvIG5ic3BOb2RlID0gZG9jdW1lbnQoKS5jcmVhdGVUZXh0Tm9k
ZShTdHJpbmcgeyBub25CcmVha2luZ1NwYWNlU3RyaW5nKCkgfSk7CiAgICAgICAgICAgICAgICAg
YXV0byogbmJzcE5vZGVQdHIgPSBuYnNwTm9kZS5wdHIoKTsKICAgICAgICAgICAgICAgICBpbnNl
cnROb2RlQXQoV1RGTW92ZShuYnNwTm9kZSksIHBvc2l0aW9uQmVmb3JlVGV4dE5vZGUpOwogICAg
ICAgICAgICAgICAgIGVuZGluZ1Bvc2l0aW9uID0gZmlyc3RQb3NpdGlvbkluTm9kZShuYnNwTm9k
ZVB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21t
YW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwCmlu
ZGV4IDcxZmNhMjM1ZWFlZWI1ZGUzZmM0YWRjZDMxNjkxMzE5MWI4ZmVjNWYuLjFlNWMwZjA3YmI1
ZThkNDVjOTU3Njg0NjJiNDBhNTZiYmFjZTc5MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwCkBAIC01OCw3ICs1OCw3IEBAIFBvc2l0aW9uIEluc2Vy
dFRleHRDb21tYW5kOjpwb3NpdGlvbkluc2lkZVRleHROb2RlKGNvbnN0IFBvc2l0aW9uJiBwKQog
ewogICAgIFBvc2l0aW9uIHBvcyA9IHA7CiAgICAgaWYgKGlzVGFiU3BhblRleHROb2RlKHBvcy5h
bmNob3JOb2RlKCkpKSB7Ci0gICAgICAgIGF1dG8gdGV4dE5vZGUgPSBkb2N1bWVudCgpLmNyZWF0
ZUVkaXRpbmdUZXh0Tm9kZShlbXB0eVN0cmluZygpKTsKKyAgICAgICAgYXV0byB0ZXh0Tm9kZSA9
IGRvY3VtZW50KCkuY3JlYXRlRWRpdGluZ1RleHROb2RlKFN0cmluZyB7IGVtcHR5U3RyaW5nKCkg
fSk7CiAgICAgICAgIGluc2VydE5vZGVBdFRhYlNwYW5Qb3NpdGlvbih0ZXh0Tm9kZS5jb3B5UmVm
KCksIHBvcyk7CiAgICAgICAgIHJldHVybiBmaXJzdFBvc2l0aW9uSW5Ob2RlKHRleHROb2RlLnB0
cigpKTsKICAgICB9CkBAIC02Niw3ICs2Niw3IEBAIFBvc2l0aW9uIEluc2VydFRleHRDb21tYW5k
Ojpwb3NpdGlvbkluc2lkZVRleHROb2RlKGNvbnN0IFBvc2l0aW9uJiBwKQogICAgIC8vIFByZXBh
cmUgZm9yIHRleHQgaW5wdXQgYnkgbG9va2luZyBhdCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLgog
ICAgIC8vIEl0IG1heSBiZSBuZWNlc3NhcnkgdG8gaW5zZXJ0IGEgdGV4dCBub2RlIHRvIHJlY2Vp
dmUgY2hhcmFjdGVycy4KICAgICBpZiAoIXBvcy5jb250YWluZXJOb2RlKCktPmlzVGV4dE5vZGUo
KSkgewotICAgICAgICBhdXRvIHRleHROb2RlID0gZG9jdW1lbnQoKS5jcmVhdGVFZGl0aW5nVGV4
dE5vZGUoZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIGF1dG8gdGV4dE5vZGUgPSBkb2N1bWVudCgp
LmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZShTdHJpbmcgeyBlbXB0eVN0cmluZygpIH0pOwogICAgICAg
ICBpbnNlcnROb2RlQXQodGV4dE5vZGUuY29weVJlZigpLCBwb3MpOwogICAgICAgICByZXR1cm4g
Zmlyc3RQb3NpdGlvbkluTm9kZSh0ZXh0Tm9kZS5wdHIoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCA5NDFk
ZmVlOGVmNzQwZTJjZGZmYmMxZTU4NTY2YTA3MTdiN2U3Y2VlLi41ZWIzYmQwODczNDMyYjRkMGM4
ZDlmOTEwZDI4N2RiMWI1OThkZmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtMTU5OCw3ICsxNTk4LDcgQEAgdm9pZCBS
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6YWRkU3BhY2VzRm9yU21hcnRSZXBsYWNlKCkKICAgICAg
ICAgICAgIGlmIChtX2VuZE9mSW5zZXJ0ZWRDb250ZW50LmNvbnRhaW5lck5vZGUoKSA9PSBlbmRO
b2RlKQogICAgICAgICAgICAgICAgIG1fZW5kT2ZJbnNlcnRlZENvbnRlbnQubW92ZVRvT2Zmc2V0
KG1fZW5kT2ZJbnNlcnRlZENvbnRlbnQub2Zmc2V0SW5Db250YWluZXJOb2RlKCkgKyAxKTsKICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGF1dG8gbm9kZSA9IGRvY3VtZW50KCkuY3JlYXRl
RWRpdGluZ1RleHROb2RlKGNvbGxhcHNlV2hpdGVTcGFjZSA/IG5vbkJyZWFraW5nU3BhY2VTdHJp
bmcoKSA6ICIgIl9zKTsKKyAgICAgICAgICAgIGF1dG8gbm9kZSA9IGRvY3VtZW50KCkuY3JlYXRl
RWRpdGluZ1RleHROb2RlKGNvbGxhcHNlV2hpdGVTcGFjZSA/IFN0cmluZyB7IG5vbkJyZWFraW5n
U3BhY2VTdHJpbmcoKSB9IDogIiAiX3MpOwogICAgICAgICAgICAgaW5zZXJ0Tm9kZUFmdGVyKG5v
ZGUuY29weVJlZigpLCAqZW5kTm9kZSk7CiAgICAgICAgICAgICB1cGRhdGVOb2Rlc0luc2VydGVk
KG5vZGUucHRyKCkpOwogICAgICAgICB9CkBAIC0xNjIyLDcgKzE2MjIsNyBAQCB2b2lkIFJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjphZGRTcGFjZXNGb3JTbWFydFJlcGxhY2UoKQogICAgICAgICAg
ICAgaWYgKG1fZW5kT2ZJbnNlcnRlZENvbnRlbnQuY29udGFpbmVyTm9kZSgpID09IHN0YXJ0Tm9k
ZSAmJiBtX2VuZE9mSW5zZXJ0ZWRDb250ZW50Lm9mZnNldEluQ29udGFpbmVyTm9kZSgpKQogICAg
ICAgICAgICAgICAgIG1fZW5kT2ZJbnNlcnRlZENvbnRlbnQubW92ZVRvT2Zmc2V0KG1fZW5kT2ZJ
bnNlcnRlZENvbnRlbnQub2Zmc2V0SW5Db250YWluZXJOb2RlKCkgKyAxKTsKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIGF1dG8gbm9kZSA9IGRvY3VtZW50KCkuY3JlYXRlRWRpdGluZ1Rl
eHROb2RlKGNvbGxhcHNlV2hpdGVTcGFjZSA/IG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSA6ICIg
Il9zKTsKKyAgICAgICAgICAgIGF1dG8gbm9kZSA9IGRvY3VtZW50KCkuY3JlYXRlRWRpdGluZ1Rl
eHROb2RlKGNvbGxhcHNlV2hpdGVTcGFjZSA/IFN0cmluZyB7IG5vbkJyZWFraW5nU3BhY2VTdHJp
bmcoKSB9IDogIiAiX3MpOwogICAgICAgICAgICAgLy8gRG9uJ3QgdXBkYXRlTm9kZXNJbnNlcnRl
ZC4gRG9pbmcgc28gd291bGQgc2V0IG1fZW5kT2ZJbnNlcnRlZENvbnRlbnQgdG8gYmUgdGhlIG5v
ZGUgY29udGFpbmluZyB0aGUgbGVhZGluZyBzcGFjZSwKICAgICAgICAgICAgIC8vIGJ1dCBtX2Vu
ZE9mSW5zZXJ0ZWRDb250ZW50IGlzIHN1cHBvc2VkIHRvIG1hcmsgdGhlIGVuZCBvZiBwYXN0ZWQg
Y29udGVudC4KICAgICAgICAgICAgIGluc2VydE5vZGVCZWZvcmUobm9kZSwgKnN0YXJ0Tm9kZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRy
b2xsZXIuY3BwCmluZGV4IDAxYzZlZWFlOTE2ZWE1YWEyMzQyM2VmMzEyM2ExN2MwZGRiMjZmMWEu
LjQwNjBkMDAxMjcxYTYyYWI1NmUyOTcyMDkwNDhjYjg4MWQ5ZTY0NjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwCkBA
IC04ODEsNyArODgxLDcgQEAgYXV0byBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6cmVwbGFj
ZShjb25zdCBNYW5pcHVsYXRpb25JdGVtRGF0YSYgaXRlbSwgY29uc3QKICAgICAgICAgICAgIGZv
ciAoUmVmUHRyPE5vZGU+IGRlc2NlbmRlbnROb2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dCgqb3Jp
Z2luYWxOb2RlLCBvcmlnaW5hbE5vZGUpOyBkZXNjZW5kZW50Tm9kZTsgZGVzY2VuZGVudE5vZGUg
PSBOb2RlVHJhdmVyc2FsOjpuZXh0KCpkZXNjZW5kZW50Tm9kZSwgb3JpZ2luYWxOb2RlKSkKICAg
ICAgICAgICAgICAgICBub2Rlc1RvUmVtb3ZlLnJlbW92ZSgqZGVzY2VuZGVudE5vZGUpOwogICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJlcGxhY2VtZW50Tm9kZSA9IFRleHQ6OmNyZWF0ZShj
b21tb25BbmNlc3Rvci0+ZG9jdW1lbnQoKSwgcmVwbGFjZW1lbnRUZXh0KTsKKyAgICAgICAgICAg
IHJlcGxhY2VtZW50Tm9kZSA9IFRleHQ6OmNyZWF0ZShjb21tb25BbmNlc3Rvci0+ZG9jdW1lbnQo
KSwgV1RGTW92ZShyZXBsYWNlbWVudFRleHQpKTsKIAogICAgICAgICBhdXRvIHRvcERvd25QYXRo
ID0gZ2V0UGF0aChjb21tb25BbmNlc3Rvci5nZXQoKSwgb3JpZ2luYWxOb2RlKTsKICAgICAgICAg
dXBkYXRlSW5zZXJ0aW9ucyhsYXN0VG9wRG93blBhdGgsIHRvcERvd25QYXRoLCByZXBsYWNlbWVu
dE5vZGUuZ2V0KCksIHJldXNlZE9yaWdpbmFsTm9kZXMsIGluc2VydGlvbnMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCmluZGV4IGQ2M2JiOWEyYWY1
MjYyZjBlMTQ3MjE1N2E0NmIzNDMyZTgwZTY3YTEuLjgxZjY0ZTg2NDRjNjQ5OWI5NTViM2Y2OGY2
YTNkODkxNDZhYmRlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
RGF0YURldGVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFE
ZXRlY3Rpb24ubW0KQEAgLTU4NCwxMyArNTg0LDEzIEBAIE5TQXJyYXkgKkRhdGFEZXRlY3Rpb246
OmRldGVjdENvbnRlbnRJblJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiBjb250ZXh0UmFuZ2UsIE9w
CiAgICAgICAgICAgICAgICAgdGV4dE5vZGVEYXRhID0gY3VycmVudFRleHROb2RlLmRhdGEoKS5z
dWJzdHJpbmcoY29udGVudE9mZnNldCwgcmFuZ2Uuc3RhcnQub2Zmc2V0IC0gY29udGVudE9mZnNl
dCk7CiAKICAgICAgICAgICAgIGlmICghdGV4dE5vZGVEYXRhLmlzRW1wdHkoKSkgewotICAgICAg
ICAgICAgICAgIHBhcmVudE5vZGUtPmluc2VydEJlZm9yZShUZXh0OjpjcmVhdGUoZG9jdW1lbnQs
IHRleHROb2RlRGF0YSksICZjdXJyZW50VGV4dE5vZGUpOworICAgICAgICAgICAgICAgIHBhcmVu
dE5vZGUtPmluc2VydEJlZm9yZShUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIFdURk1vdmUodGV4dE5v
ZGVEYXRhKSksICZjdXJyZW50VGV4dE5vZGUpOwogICAgICAgICAgICAgICAgIGNvbnRlbnRPZmZz
ZXQgPSByYW5nZS5zdGFydC5vZmZzZXQ7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8v
IENyZWF0ZSB0aGUgYWN0dWFsIGFuY2hvciBub2RlIGFuZCBpbnNlcnQgaXQgYmVmb3JlIHRoZSBj
dXJyZW50IG5vZGUuCiAgICAgICAgICAgICB0ZXh0Tm9kZURhdGEgPSBjdXJyZW50VGV4dE5vZGUu
ZGF0YSgpLnN1YnN0cmluZyhyYW5nZS5zdGFydC5vZmZzZXQsIHJhbmdlLmVuZC5vZmZzZXQgLSBy
YW5nZS5zdGFydC5vZmZzZXQpOwotICAgICAgICAgICAgYXV0byBuZXdUZXh0Tm9kZSA9IFRleHQ6
OmNyZWF0ZShkb2N1bWVudCwgdGV4dE5vZGVEYXRhKTsKKyAgICAgICAgICAgIGF1dG8gbmV3VGV4
dE5vZGUgPSBUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIFdURk1vdmUodGV4dE5vZGVEYXRhKSk7CiAg
ICAgICAgICAgICBwYXJlbnROb2RlLT5pbnNlcnRCZWZvcmUobmV3VGV4dE5vZGUuY29weVJlZigp
LCAmY3VycmVudFRleHROb2RlKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgUmVmPEhUTUxB
bmNob3JFbGVtZW50PiBhbmNob3JFbGVtZW50ID0gSFRNTEFuY2hvckVsZW1lbnQ6OmNyZWF0ZShk
b2N1bWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJ
T1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KaW5kZXggNjM2
MjkzNjU3M2JhZWM2OGEyNTZlNWNhNmNlYjgxNzZmNDMzODMwMi4uNmMzM2Q2ZjZhMjJkNTJhNmRj
YTFkOTE5OWZjY2FkMzY4OTZmNjZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbQpAQCAtMzI4LDcgKzMyOCw3IEBAIHZvaWQgRWRpdG9yOjpjb25maXJtTWFya2VkVGV4
dCgpCiAgICAgICAgIGNvbmZpcm1Db21wb3NpdGlvbigpOwogfQogCi12b2lkIEVkaXRvcjo6c2V0
VGV4dEFzQ2hpbGRPZkVsZW1lbnQoY29uc3QgU3RyaW5nJiB0ZXh0LCBFbGVtZW50JiBlbGVtZW50
KQordm9pZCBFZGl0b3I6OnNldFRleHRBc0NoaWxkT2ZFbGVtZW50KFN0cmluZyYmIHRleHQsIEVs
ZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgLy8gQ2xlYXIgdGhlIGNvbXBvc2l0aW9uCiAgICAgY2xl
YXIoKTsKQEAgLTM0Niw3ICszNDYsNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFzQ2hpbGRPZkVs
ZW1lbnQoY29uc3QgU3RyaW5nJiB0ZXh0LCBFbGVtZW50JiBlbGVtZW50KQogICAgIC8vIFdoYXQg
Zm9sbG93cyBpcyBtb3JlIGV4cGVuc2l2ZSBpZiB0aGVyZSBpcyBhIHNlbGVjdGlvbiwgc28gY2xl
YXIgaXQgc2luY2UgaXQncyBnb2luZyB0byBjaGFuZ2UgYW55d2F5LgogICAgIG1fZG9jdW1lbnQu
c2VsZWN0aW9uKCkuY2xlYXIoKTsKIAotICAgIGVsZW1lbnQuc3RyaW5nUmVwbGFjZUFsbCh0ZXh0
KTsKKyAgICBlbGVtZW50LnN0cmluZ1JlcGxhY2VBbGwoV1RGTW92ZSh0ZXh0KSk7CiAKICAgICBW
aXNpYmxlUG9zaXRpb24gYWZ0ZXJDb250ZW50cyA9IG1ha2VDb250YWluZXJPZmZzZXRQb3NpdGlv
bigmZWxlbWVudCwgZWxlbWVudC5jb3VudENoaWxkTm9kZXMoKSk7CiAgICAgaWYgKGFmdGVyQ29u
dGVudHMuaXNOdWxsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggYjRjOTY0ZDIx
YTA0M2VjN2FiOTc5MDViYWNlNjc0MTkwYTk1NmY1Zi4uNGJmZmE2OGU1ODJhZDI0OTE0OGM1YzJk
NjM4MDhjYTgxY2E4OTliZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJr
dXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtMTE3OSw4
ICsxMTc5LDkgQEAgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQo
Y29uc3QgU2ltcGxlUmFuZ2UmIGNvbnRleHQsIGNvbnN0IFMKICAgICB9OwogCiAgICAgaWYgKGNv
bnRleHRQcmVzZXJ2ZXNOZXdsaW5lKGNvbnRleHQpKSB7Ci0gICAgICAgIGZyYWdtZW50LT5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHJpbmcpKTsKLSAgICAgICAgaWYgKHN0
cmluZy5lbmRzV2l0aCgnXG4nKSkgeworICAgICAgICBib29sIGVuZHNXaXRoTmV3TGluZSA9IHN0
cmluZy5lbmRzV2l0aCgnXG4nKTsKKyAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKFdURk1vdmUoc3RyaW5nKSkpOworICAgICAgICBpZiAoZW5kc1dp
dGhOZXdMaW5lKSB7CiAgICAgICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoY3JlYXRlSFRN
TEJSRWxlbWVudCgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZnJhZ21lbnQ7CkBAIC0x
MjcyLDcgKzEyNzMsNyBAQCBFeGNlcHRpb25PcjxSZWY8RG9jdW1lbnRGcmFnbWVudD4+IGNyZWF0
ZUZyYWdtZW50Rm9ySW5uZXJPdXRlckhUTUwoRWxlbWVudCYgY29udAogICAgIHJldHVybiBjcmVh
dGVGcmFnbWVudEZvck1hcmt1cChjb250ZXh0RWxlbWVudCwgbWFya3VwLCBEb2N1bWVudEZyYWdt
ZW50TW9kZTo6UmV1c2VGb3JJbm5lck91dGVySFRNTCwgcGFyc2VyQ29udGVudFBvbGljeSk7CiB9
CiAKLVJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvclRyYW5zZm9ybVRv
RnJhZ21lbnQoRG9jdW1lbnQmIG91dHB1dERvYywgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcs
IGNvbnN0IFN0cmluZyYgc291cmNlTUlNRVR5cGUpCitSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4g
Y3JlYXRlRnJhZ21lbnRGb3JUcmFuc2Zvcm1Ub0ZyYWdtZW50KERvY3VtZW50JiBvdXRwdXREb2Ms
IFN0cmluZyYmIHNvdXJjZVN0cmluZywgY29uc3QgU3RyaW5nJiBzb3VyY2VNSU1FVHlwZSkKIHsK
ICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBvdXRwdXREb2MuY3JlYXRl
RG9jdW1lbnRGcmFnbWVudCgpOwogICAgIApAQCAtMTI4MiwxMSArMTI4MywxMSBAQCBSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JUcmFuc2Zvcm1Ub0ZyYWdtZW50KERv
Y3VtZW50JiBvdXRwdXREbwogICAgICAgICAvLyBVbmZvcnR1bmF0ZWx5LCB0aGF0J3MgYW4gaW1w
bGVtZW50YXRpb24gZGV0YWlsIG9mIHRoZSBwYXJzZXIuCiAgICAgICAgIC8vIFdlIGFjaGlldmUg
dGhhdCBlZmZlY3QgaGVyZSBieSBwYXNzaW5nIGluIGEgZmFrZSBib2R5IGVsZW1lbnQgYXMgY29u
dGV4dCBmb3IgdGhlIGZyYWdtZW50LgogICAgICAgICBhdXRvIGZha2VCb2R5ID0gSFRNTEJvZHlF
bGVtZW50OjpjcmVhdGUob3V0cHV0RG9jKTsKLSAgICAgICAgZnJhZ21lbnQtPnBhcnNlSFRNTChz
b3VyY2VTdHJpbmcsIGZha2VCb2R5LnB0cigpKTsKKyAgICAgICAgZnJhZ21lbnQtPnBhcnNlSFRN
TChXVEZNb3ZlKHNvdXJjZVN0cmluZyksIGZha2VCb2R5LnB0cigpKTsKICAgICB9IGVsc2UgaWYg
KHNvdXJjZU1JTUVUeXBlID09ICJ0ZXh0L3BsYWluIikKLSAgICAgICAgZnJhZ21lbnQtPnBhcnNl
ckFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShvdXRwdXREb2MsIHNvdXJjZVN0cmluZykpOworICAg
ICAgICBmcmFnbWVudC0+cGFyc2VyQXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKG91dHB1dERvYywg
V1RGTW92ZShzb3VyY2VTdHJpbmcpKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGJvb2wgc3VjY2Vz
c2Z1bFBhcnNlID0gZnJhZ21lbnQtPnBhcnNlWE1MKHNvdXJjZVN0cmluZywgMCk7CisgICAgICAg
IGJvb2wgc3VjY2Vzc2Z1bFBhcnNlID0gZnJhZ21lbnQtPnBhcnNlWE1MKFdURk1vdmUoc291cmNl
U3RyaW5nKSwgMCk7CiAgICAgICAgIGlmICghc3VjY2Vzc2Z1bFBhcnNlKQogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYXJrdXAuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKaW5kZXggOTI1MTFh
OTM0NjZiYTk0ODQxMjQxYmFmZDY0ZTBmY2QxM2UxMWFlMy4uM2JlMWE0YzJhMjE5ZTZlYjM0ZDNh
YTZkMTJjNWEzNmUzMzRiZjJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YXJrdXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCkBAIC02MSw3ICs2
MSw3IEBAIFN0cmluZyBzYW5pdGl6ZWRNYXJrdXBGb3JGcmFnbWVudEluRG9jdW1lbnQoUmVmPERv
Y3VtZW50RnJhZ21lbnQ+JiYsIERvY3VtZW50JiwKIFdFQkNPUkVfRVhQT1JUIFJlZjxEb2N1bWVu
dEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21UZXh0KGNvbnN0IFNpbXBsZVJhbmdlJiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIHRleHQpOwogV0VCQ09SRV9FWFBPUlQgUmVmPERvY3VtZW50RnJh
Z21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYg
bWFya3VwLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIFBhcnNlckNvbnRlbnRQb2xpY3kgPSBBbGxv
d1NjcmlwdGluZ0NvbnRlbnQpOwogRXhjZXB0aW9uT3I8UmVmPERvY3VtZW50RnJhZ21lbnQ+PiBj
cmVhdGVGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1MKEVsZW1lbnQmLCBjb25zdCBTdHJpbmcmIG1h
cmt1cCwgUGFyc2VyQ29udGVudFBvbGljeSk7Ci1SZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3Jl
YXRlRnJhZ21lbnRGb3JUcmFuc2Zvcm1Ub0ZyYWdtZW50KERvY3VtZW50JiwgY29uc3QgU3RyaW5n
JiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgc291cmNlTUlNRVR5cGUpOworUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9yVHJhbnNmb3JtVG9GcmFnbWVudChEb2N1
bWVudCYsIFN0cmluZyYmIHNvdXJjZVN0cmluZywgY29uc3QgU3RyaW5nJiBzb3VyY2VNSU1FVHlw
ZSk7CiBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUFuZFVSTChE
b2N1bWVudCYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkU2l6ZSk7
CiBFeGNlcHRpb25PcjxSZWY8RG9jdW1lbnRGcmFnbWVudD4+IGNyZWF0ZUNvbnRleHR1YWxGcmFn
bWVudChFbGVtZW50JiwgY29uc3QgU3RyaW5nJiBtYXJrdXAsIFBhcnNlckNvbnRlbnRQb2xpY3kp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0
VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5j
cHAKaW5kZXggMzc1NTI4MWQxODJlM2FhYmUxOGM3OWQ5ZDM1MTM2OWFjNzM1NGU4Mi4uODQ1MmY1
YTYzNzM0Zjk0NGM1ZmY5ZmIxYTExZmU0OWZlOWZhZDJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcApAQCAtMzQ2LDcgKzM0Niw3IEBA
IHZvaWQgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjp1cGRhdGVJbm5lclRleHRWYWx1ZSgpCiAg
ICAgICAgICAgICAvLyBOZWVkIHRvIHB1dCBzb21ldGhpbmcgdG8ga2VlcCB0ZXh0IGJhc2VsaW5l
LgogICAgICAgICAgICAgZGlzcGxheVZhbHVlID0gIiAiX3M7CiAgICAgICAgIH0KLSAgICAgICAg
ZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KCpub2RlKS5zZXRJbm5lclRleHQoZGlzcGxheVZhbHVlKTsK
KyAgICAgICAgZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KCpub2RlKS5zZXRJbm5lclRleHQoV1RGTW92
ZShkaXNwbGF5VmFsdWUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmgKaW5kZXggNmJmNmQ2YjkwM2I0
YWQ3NjU5NmJiYWNjZTU0ZDE3ZDM3YTMxZThjZi4uOTQ4ZjllM2U5MjQ3NWM2YjkyZWQxOThjZGMw
YjM1MmQ1YzU0Nzk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFu
ZFRpbWVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGlt
ZUlucHV0VHlwZS5oCkBAIC04NCw3ICs4NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIERhdGVUaW1l
Rm9ybWF0VmFsaWRhdG9yKCkgeyB9CiAKICAgICAgICAgdm9pZCB2aXNpdEZpZWxkKERhdGVUaW1l
Rm9ybWF0OjpGaWVsZFR5cGUsIGludCk7Ci0gICAgICAgIHZvaWQgdmlzaXRMaXRlcmFsKGNvbnN0
IFN0cmluZyYpIHsgfQorICAgICAgICB2b2lkIHZpc2l0TGl0ZXJhbChTdHJpbmcmJikgeyB9CiAK
ICAgICAgICAgYm9vbCB2YWxpZGF0ZUZvcm1hdChjb25zdCBTdHJpbmcmIGZvcm1hdCwgY29uc3Qg
QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBE
aXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggMTU2MjhkOTU5ZmJiYTJlYzdiODU0ZDM2ZTY5MDEx
YjEyZTYzZjNkMi4uNDM1Y2VkYWUxNmE4YzFlMTcwZjBiNDMxZWFkNThmZWM1ZTRiZWNmMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKQEAgLTgzLDgg
KzgzLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZUJhc2ljRG9jdW1lbnQoKTsKIAogICAg
IHZvaWQgcGFyc2VBbmRBcHBlbmRPbmVMaW5lKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgYXBw
ZW5kRW50cnkoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHNpemUsIGNvbnN0IFN0
cmluZyYgZGF0ZSwgYm9vbCBpc0RpcmVjdG9yeSk7ICAgIAotICAgIFJlZjxFbGVtZW50PiBjcmVh
dGVUREZvckZpbGVuYW1lKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgYXBwZW5kRW50cnkoU3Ry
aW5nJiYgbmFtZSwgU3RyaW5nJiYgc2l6ZSwgU3RyaW5nJiYgZGF0ZSwgYm9vbCBpc0RpcmVjdG9y
eSk7CisgICAgUmVmPEVsZW1lbnQ+IGNyZWF0ZVRERm9yRmlsZW5hbWUoU3RyaW5nJiYpOwogCiAg
ICAgUmVmUHRyPEhUTUxUYWJsZUVsZW1lbnQ+IG1fdGFibGVFbGVtZW50OwogCkBAIC0xMDUsNyAr
MTA1LDcgQEAgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OkZUUERpcmVjdG9yeURvY3VtZW50
UGFyc2VyKEhUTUxEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiB9CiAKLXZvaWQgRlRQRGlyZWN0b3J5
RG9jdW1lbnRQYXJzZXI6OmFwcGVuZEVudHJ5KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0
IFN0cmluZyYgc2l6ZSwgY29uc3QgU3RyaW5nJiBkYXRlLCBib29sIGlzRGlyZWN0b3J5KQordm9p
ZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6YXBwZW5kRW50cnkoU3RyaW5nJiYgZmlsZW5h
bWUsIFN0cmluZyYmIHNpemUsIFN0cmluZyYmIGRhdGUsIGJvb2wgaXNEaXJlY3RvcnkpCiB7CiAg
ICAgYXV0byYgZG9jdW1lbnQgPSAqdGhpcy0+ZG9jdW1lbnQoKTsKIApAQCAtMTIwLDIzICsxMjAs
MjMgQEAgdm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6YXBwZW5kRW50cnkoY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW4KICAgICAgICAgdHlwZUVsZW1lbnQtPnNldEF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpjbGFzc0F0dHIsIEF0b21T
dHJpbmcoImZ0cERpcmVjdG9yeUljb24gZnRwRGlyZWN0b3J5VHlwZUZpbGUiLCBBdG9tU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIHJvd0VsZW1lbnQtPmFwcGVuZENoaWxkKHR5
cGVFbGVtZW50KTsKIAotICAgIGF1dG8gbmFtZUVsZW1lbnQgPSBjcmVhdGVUREZvckZpbGVuYW1l
KGZpbGVuYW1lKTsKKyAgICBhdXRvIG5hbWVFbGVtZW50ID0gY3JlYXRlVERGb3JGaWxlbmFtZShX
VEZNb3ZlKGZpbGVuYW1lKSk7CiAgICAgbmFtZUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpjbGFzc0F0dHIsIEF0b21TdHJpbmcoImZ0cERpcmVj
dG9yeUZpbGVOYW1lIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICBy
b3dFbGVtZW50LT5hcHBlbmRDaGlsZChuYW1lRWxlbWVudCk7CiAKICAgICBhdXRvIGRhdGVFbGVt
ZW50ID0gSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OmNyZWF0ZSh0ZFRhZywgZG9jdW1lbnQpOwotICAg
IGRhdGVFbGVtZW50LT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIGRhdGUpKTsK
KyAgICBkYXRlRWxlbWVudC0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50LCBXVEZN
b3ZlKGRhdGUpKSk7CiAgICAgZGF0ZUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oSFRNTE5hbWVzOjpjbGFzc0F0dHIsIEF0b21TdHJpbmcoImZ0cERpcmVjdG9yeUZp
bGVEYXRlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICByb3dFbGVt
ZW50LT5hcHBlbmRDaGlsZChkYXRlRWxlbWVudCk7CiAKICAgICBhdXRvIHNpemVFbGVtZW50ID0g
SFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OmNyZWF0ZSh0ZFRhZywgZG9jdW1lbnQpOwotICAgIHNpemVF
bGVtZW50LT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIHNpemUpKTsKKyAgICBz
aXplRWxlbWVudC0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50LCBXVEZNb3ZlKHNp
emUpKSk7CiAgICAgc2l6ZUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oSFRNTE5hbWVzOjpjbGFzc0F0dHIsIEF0b21TdHJpbmcoImZ0cERpcmVjdG9yeUZpbGVTaXpl
IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICByb3dFbGVtZW50LT5h
cHBlbmRDaGlsZChzaXplRWxlbWVudCk7CiAgICAgZG9jdW1lbnQuc2V0SGFzVmlzdWFsbHlOb25F
bXB0eUN1c3RvbUNvbnRlbnQoKTsKIH0KIAotUmVmPEVsZW1lbnQ+IEZUUERpcmVjdG9yeURvY3Vt
ZW50UGFyc2VyOjpjcmVhdGVUREZvckZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCitS
ZWY8RWxlbWVudD4gRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmNyZWF0ZVRERm9yRmlsZW5h
bWUoU3RyaW5nJiYgZmlsZW5hbWUpCiB7CiAgICAgYXV0byYgZG9jdW1lbnQgPSAqdGhpcy0+ZG9j
dW1lbnQoKTsKIApAQCAtMTQ4LDcgKzE0OCw3IEBAIFJlZjxFbGVtZW50PiBGVFBEaXJlY3RvcnlE
b2N1bWVudFBhcnNlcjo6Y3JlYXRlVERGb3JGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVuCiAK
ICAgICBhdXRvIGFuY2hvckVsZW1lbnQgPSBIVE1MQW5jaG9yRWxlbWVudDo6Y3JlYXRlKGRvY3Vt
ZW50KTsKICAgICBhbmNob3JFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKEhUTUxOYW1lczo6aHJlZkF0dHIsIGZ1bGxVUkwpOwotICAgIGFuY2hvckVsZW1lbnQtPmFw
cGVuZENoaWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVudCwgZmlsZW5hbWUpKTsKKyAgICBhbmNob3JF
bGVtZW50LT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIFdURk1vdmUoZmlsZW5h
bWUpKSk7CiAKICAgICBhdXRvIHRkRWxlbWVudCA9IEhUTUxUYWJsZUNlbGxFbGVtZW50OjpjcmVh
dGUodGRUYWcsIGRvY3VtZW50KTsKICAgICB0ZEVsZW1lbnQtPmFwcGVuZENoaWxkKGFuY2hvckVs
ZW1lbnQpOwpAQCAtMjc0LDcgKzI3NCw3IEBAIHZvaWQgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJz
ZXI6OnBhcnNlQW5kQXBwZW5kT25lTGluZShjb25zdCBTdHJpbmcmIGlucHV0TGluZSkKIAogICAg
IExPRyhGVFAsICJBcHBlbmRpbmcgZW50cnkgLSAlcywgJXMiLCBmaWxlbmFtZS5hc2NpaSgpLmRh
dGEoKSwgcmVzdWx0LmZpbGVTaXplLmFzY2lpKCkuZGF0YSgpKTsKIAotICAgIGFwcGVuZEVudHJ5
KGZpbGVuYW1lLCBwcm9jZXNzRmlsZXNpemVTdHJpbmcocmVzdWx0LmZpbGVTaXplLCByZXN1bHQu
dHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSksIHByb2Nlc3NGaWxlRGF0ZVN0cmluZyhyZXN1bHQu
bW9kaWZpZWRUaW1lKSwgcmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkpOworICAgIGFw
cGVuZEVudHJ5KFdURk1vdmUoZmlsZW5hbWUpLCBwcm9jZXNzRmlsZXNpemVTdHJpbmcocmVzdWx0
LmZpbGVTaXplLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSksIHByb2Nlc3NGaWxl
RGF0ZVN0cmluZyhyZXN1bHQubW9kaWZpZWRUaW1lKSwgcmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0
b3J5RW50cnkpOwogfQogCiBzdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKaW5kZXggNzRmZTZhYWQ3NjBjZjNhYzk1
ODEzNWEzODBjNDJjZWViZTg3OWJmNC4uNGFkNDZkZTI5YzVhZTA4MWQ2M2NkOGY3NWFjY2Y2Njli
Y2MzZTEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKQEAg
LTM1MSw5ICszNTEsOSBAQCBTdHJpbmcgSFRNTEFuY2hvckVsZW1lbnQ6OnRleHQoKQogICAgIHJl
dHVybiB0ZXh0Q29udGVudCgpOwogfQogCi12b2lkIEhUTUxBbmNob3JFbGVtZW50OjpzZXRUZXh0
KGNvbnN0IFN0cmluZyYgdGV4dCkKK3ZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldFRleHQoU3Ry
aW5nJiYgdGV4dCkKIHsKLSAgICBzZXRUZXh0Q29udGVudCh0ZXh0KTsKKyAgICBzZXRUZXh0Q29u
dGVudChXVEZNb3ZlKHRleHQpKTsKIH0KIAogYm9vbCBIVE1MQW5jaG9yRWxlbWVudDo6aXNMaXZl
TGluaygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmgKaW5kZXgg
YWRkNjE4MzA4NmE0MTZiZTczZGJmZDc1YjkyYTJkY2FhYTNkZDQ2ZS4uMzQzOGVhNjRiNDU2NzNj
ODQ3MjNjNWIwODZjODA3YTAxZmMwMjhlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQW5jaG9yRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hv
ckVsZW1lbnQuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIG9yaWdpbigpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRleHQo
KTsKLSAgICB2b2lkIHNldFRleHQoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRUZXh0KFN0
cmluZyYmKTsKIAogICAgIGJvb2wgaXNMaXZlTGluaygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEVsZW1lbnQuY3BwCmluZGV4IDgxNDE4MTAyZjNmMGJkZDdkYjIyZGE3MDQwNzM1NDJiY2Y5
ZjY3ZTQuLjIyYTY2MjA2YWM0YTZmMDEyMzM5MzEyNWMxZjUzNTJmMGRkMzg1Y2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC00MzUsMzYgKzQzNSwzNiBAQCB2b2lkIEhUTUxF
bGVtZW50OjpzZXREaXIoY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiAgICAgc2V0QXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihkaXJBdHRyLCB2YWx1ZSk7CiB9CiAKLUV4Y2VwdGlvbk9y
PHZvaWQ+IEhUTUxFbGVtZW50OjpzZXRJbm5lclRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQorRXhj
ZXB0aW9uT3I8dm9pZD4gSFRNTEVsZW1lbnQ6OnNldElubmVyVGV4dChTdHJpbmcmJiB0ZXh0KQog
ewogICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3QgdGFrZSB3aGl0ZXNwYWNlIGNvbGxhcHNpbmcg
aW50byBhY2NvdW50IGF0IGFsbC4KIAogICAgIGlmICghdGV4dC5jb250YWlucygnXG4nKSAmJiAh
dGV4dC5jb250YWlucygnXHInKSkgewotICAgICAgICBzdHJpbmdSZXBsYWNlQWxsKHRleHQpOwor
ICAgICAgICBzdHJpbmdSZXBsYWNlQWxsKFdURk1vdmUodGV4dCkpOwogICAgICAgICByZXR1cm4g
eyB9OwogICAgIH0KIAogICAgIGlmIChpc0Nvbm5lY3RlZCgpICYmIGlzVGV4dENvbnRyb2xJbm5l
clRleHRFbGVtZW50KCkpIHsKICAgICAgICAgaWYgKCF0ZXh0LmNvbnRhaW5zKCdccicpKSB7Ci0g
ICAgICAgICAgICBzdHJpbmdSZXBsYWNlQWxsKHRleHQpOworICAgICAgICAgICAgc3RyaW5nUmVw
bGFjZUFsbChXVEZNb3ZlKHRleHQpKTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAg
IH0KLSAgICAgICAgU3RyaW5nIHRleHRXaXRoQ29uc2lzdGVudExpbmVCcmVha3MgPSB0ZXh0Owor
ICAgICAgICBTdHJpbmcgdGV4dFdpdGhDb25zaXN0ZW50TGluZUJyZWFrcyA9IFdURk1vdmUodGV4
dCk7CiAgICAgICAgIHRleHRXaXRoQ29uc2lzdGVudExpbmVCcmVha3MucmVwbGFjZSgiXHJcbiIs
ICJcbiIpOwogICAgICAgICB0ZXh0V2l0aENvbnNpc3RlbnRMaW5lQnJlYWtzLnJlcGxhY2UoJ1xy
JywgJ1xuJyk7Ci0gICAgICAgIHN0cmluZ1JlcGxhY2VBbGwodGV4dFdpdGhDb25zaXN0ZW50TGlu
ZUJyZWFrcyk7CisgICAgICAgIHN0cmluZ1JlcGxhY2VBbGwoV1RGTW92ZSh0ZXh0V2l0aENvbnNp
c3RlbnRMaW5lQnJlYWtzKSk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgLy8g
RklYTUU6IFRoaXMgc2hvdWxkIHVzZSByZXBsYWNlQWxsKCksIGFmdGVyIHdlIGZpeCB0aGF0IHRv
IHdvcmsgcHJvcGVybHkgZm9yIERvY3VtZW50RnJhZ21lbnQuCiAgICAgLy8gQWRkIHRleHQgbm9k
ZXMgYW5kIDxicj4gZWxlbWVudHMuCi0gICAgYXV0byBmcmFnbWVudCA9IHRleHRUb0ZyYWdtZW50
KGRvY3VtZW50KCksIHRleHQpOworICAgIGF1dG8gZnJhZ21lbnQgPSB0ZXh0VG9GcmFnbWVudChk
b2N1bWVudCgpLCBXVEZNb3ZlKHRleHQpKTsKICAgICAvLyBJdCdzIHNhZmUgdG8gZGlzcGF0Y2gg
ZXZlbnRzIG9uIHRoZSBuZXcgZnJhZ21lbnQgc2luY2UgYXV0aG9yIHNjcmlwdHMgaGF2ZSBubyBh
Y2Nlc3MgdG8gaXQgeWV0LgogICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6RXZlbnRBbGxvd2Vk
U2NvcGUgYWxsb3dlZFNjb3BlKGZyYWdtZW50LmdldCgpKTsKICAgICByZXR1cm4gcmVwbGFjZUNo
aWxkcmVuV2l0aEZyYWdtZW50KCp0aGlzLCBXVEZNb3ZlKGZyYWdtZW50KSk7CiB9CiAKLUV4Y2Vw
dGlvbk9yPHZvaWQ+IEhUTUxFbGVtZW50OjpzZXRPdXRlclRleHQoY29uc3QgU3RyaW5nJiB0ZXh0
KQorRXhjZXB0aW9uT3I8dm9pZD4gSFRNTEVsZW1lbnQ6OnNldE91dGVyVGV4dChTdHJpbmcmJiB0
ZXh0KQogewogICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBwYXJlbnQgPSBwYXJlbnROb2RlKCk7
CiAgICAgaWYgKCFwYXJlbnQpCkBAIC00NzYsOSArNDc2LDkgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
SFRNTEVsZW1lbnQ6OnNldE91dGVyVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCiAKICAgICAvLyBD
b252ZXJ0IHRleHQgdG8gZnJhZ21lbnQgd2l0aCA8YnI+IHRhZ3MgaW5zdGVhZCBvZiBsaW5lYnJl
YWtzIGlmIG5lZWRlZC4KICAgICBpZiAodGV4dC5jb250YWlucygnXHInKSB8fCB0ZXh0LmNvbnRh
aW5zKCdcbicpKQotICAgICAgICBuZXdDaGlsZCA9IHRleHRUb0ZyYWdtZW50KGRvY3VtZW50KCks
IHRleHQpOworICAgICAgICBuZXdDaGlsZCA9IHRleHRUb0ZyYWdtZW50KGRvY3VtZW50KCksIFdU
Rk1vdmUodGV4dCkpOwogICAgIGVsc2UKLSAgICAgICAgbmV3Q2hpbGQgPSBUZXh0OjpjcmVhdGUo
ZG9jdW1lbnQoKSwgdGV4dCk7CisgICAgICAgIG5ld0NoaWxkID0gVGV4dDo6Y3JlYXRlKGRvY3Vt
ZW50KCksIFdURk1vdmUodGV4dCkpOwogCiAgICAgaWYgKCFwYXJlbnROb2RlKCkpCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBIaWVyYXJjaHlSZXF1ZXN0RXJyb3IgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEVsZW1lbnQuaAppbmRleCBlMDhhOGU3MWZjZmRiN2Y0OWMwYWIwODI3NWQ0NzZkMTMwOWNh
OTc0Li5lNGYxZDFkNDk4YTllYjQyMWNlYjQ3ZDhmMmM5YmVhOWFiMmYyOTczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRWxlbWVudC5oCkBAIC01Myw4ICs1Myw4IEBAIHB1YmxpYzoKIAogICAgIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyB0aXRsZSgpIGNvbnN0IGZpbmFsOwogCi0gICAgV0VCQ09SRV9FWFBP
UlQgRXhjZXB0aW9uT3I8dm9pZD4gc2V0SW5uZXJUZXh0KGNvbnN0IFN0cmluZyYpOwotICAgIFdF
QkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldE91dGVyVGV4dChjb25zdCBTdHJpbmcm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBzZXRJbm5lclRleHQoU3Ry
aW5nJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldE91dGVyVGV4
dChTdHJpbmcmJik7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzQ3VzdG9tRm9jdXNMb2dpYygpIGNv
bnN0OwogICAgIGJvb2wgc3VwcG9ydHNGb2N1cygpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5jcHAKaW5kZXggYmQ0NGUyZDAyOGE3MDA4ODYzNmZm
MjY2MDYzNzdlYmVkZGY5NzdjNS4uN2VmMGNhOWI0MGJhMDRkODkwNjU2NmU4OTI4ODY5OTdlMmRk
MzZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCkBAIC0yMjks
OCArMjI5LDggQEAgdm9pZCBIVE1MTWV0ZXJFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dS
b290KFNoYWRvd1Jvb3QmIHJvb3QpCiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3ll
ZDxjb25zdCBTdHJpbmc+IHNoYWRvd1N0eWxlKFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5
aW5nKG1ldGVyRWxlbWVudFNoYWRvd1VzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihtZXRlckVs
ZW1lbnRTaGFkb3dVc2VyQWdlbnRTdHlsZVNoZWV0KSkpOwogCiAgICAgYXV0byBzdHlsZSA9IEhU
TUxTdHlsZUVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OnN0eWxlVGFnLCBkb2N1bWVudCgpLCBm
YWxzZSk7Ci0gICAgc3R5bGUtPnNldFRleHRDb250ZW50KHNoYWRvd1N0eWxlKTsKLSAgICByb290
LmFwcGVuZENoaWxkKHN0eWxlKTsKKyAgICBzdHlsZS0+c2V0VGV4dENvbnRlbnQoU3RyaW5nIHsg
c2hhZG93U3R5bGUgfSk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChXVEZNb3ZlKHN0eWxlKSk7CiAK
ICAgICAvLyBQc2V1ZG9zIGFyZSBzZXQgdG8gYWxsb3cgYXV0aG9yIHN0eWxpbmcuCiAgICAgYXV0
byBpbm5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCmluZGV4IGMwMTczMzM3ODg2ZmI3OWNlMmJj
Nzk5ZjMwZmI0OGE2NGQwYWE0OTguLmUyMGQzZGFkNDdlMTQwN2FjMjQzMGQ1ZDk5M2Q0ZTc0ZmUy
NmUxNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCkBAIC03
MCwxMiArNzAsMTIgQEAgUmVmPEhUTUxPcHRpb25FbGVtZW50PiBIVE1MT3B0aW9uRWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIEQKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBIVE1MT3B0aW9uRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1FeGNl
cHRpb25PcjxSZWY8SFRNTE9wdGlvbkVsZW1lbnQ+PiBIVE1MT3B0aW9uRWxlbWVudDo6Y3JlYXRl
Rm9yTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5n
JiB0ZXh0LCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSwgYm9vbCBkZWZhdWx0U2VsZWN0ZWQsIGJv
b2wgc2VsZWN0ZWQpCitFeGNlcHRpb25PcjxSZWY8SFRNTE9wdGlvbkVsZW1lbnQ+PiBIVE1MT3B0
aW9uRWxlbWVudDo6Y3JlYXRlRm9yTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKERvY3VtZW50JiBkb2N1
bWVudCwgU3RyaW5nJiYgdGV4dCwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUsIGJvb2wgZGVmYXVs
dFNlbGVjdGVkLCBib29sIHNlbGVjdGVkKQogewogICAgIGF1dG8gZWxlbWVudCA9IGNyZWF0ZShk
b2N1bWVudCk7CiAKICAgICBpZiAoIXRleHQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGF1dG8gYXBw
ZW5kUmVzdWx0ID0gZWxlbWVudC0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50LCB0
ZXh0KSk7CisgICAgICAgIGF1dG8gYXBwZW5kUmVzdWx0ID0gZWxlbWVudC0+YXBwZW5kQ2hpbGQo
VGV4dDo6Y3JlYXRlKGRvY3VtZW50LCBXVEZNb3ZlKHRleHQpKSk7CiAgICAgICAgIGlmIChhcHBl
bmRSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gYXBwZW5kUmVzdWx0
LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICB9CkBAIC0xMTIsNyArMTEyLDcgQEAgU3RyaW5nIEhU
TUxPcHRpb25FbGVtZW50Ojp0ZXh0KCkgY29uc3QKICAgICByZXR1cm4gc3RyaXBMZWFkaW5nQW5k
VHJhaWxpbmdIVE1MU3BhY2VzKGRvY3VtZW50KCkuZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNv
ZGluZyh0ZXh0KSkuc2ltcGxpZnlXaGl0ZVNwYWNlKGlzSFRNTFNwYWNlKTsKIH0KIAotdm9pZCBI
VE1MT3B0aW9uRWxlbWVudDo6c2V0VGV4dChjb25zdCBTdHJpbmcgJnRleHQpCit2b2lkIEhUTUxP
cHRpb25FbGVtZW50OjpzZXRUZXh0KFN0cmluZyYmIHRleHQpCiB7CiAgICAgUmVmIHByb3RlY3Rl
ZFRoaXMgeyAqdGhpcyB9OwogCkBAIC0xMjYsMTAgKzEyNiwxMCBAQCB2b2lkIEhUTUxPcHRpb25F
bGVtZW50OjpzZXRUZXh0KGNvbnN0IFN0cmluZyAmdGV4dCkKICAgICAvLyBIYW5kbGUgdGhlIGNv
bW1vbiBzcGVjaWFsIGNhc2Ugd2hlcmUgdGhlcmUncyBleGFjdGx5IDEgY2hpbGQgbm9kZSwgYW5k
IGl0J3MgYSB0ZXh0IG5vZGUuCiAgICAgUmVmUHRyIGNoaWxkID0gZmlyc3RDaGlsZCgpOwogICAg
IGlmIChpczxUZXh0PihjaGlsZCkgJiYgIWNoaWxkLT5uZXh0U2libGluZygpKQotICAgICAgICBk
b3duY2FzdDxUZXh0PigqY2hpbGQpLnNldERhdGEodGV4dCk7CisgICAgICAgIGRvd25jYXN0PFRl
eHQ+KCpjaGlsZCkuc2V0RGF0YShXVEZNb3ZlKHRleHQpKTsKICAgICBlbHNlIHsKICAgICAgICAg
cmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICAgICAgYXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3Vt
ZW50KCksIHRleHQpKTsKKyAgICAgICAgYXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50
KCksIFdURk1vdmUodGV4dCkpKTsKICAgICB9CiAgICAgCiAgICAgaWYgKHNlbGVjdElzTWVudUxp
c3QgJiYgc2VsZWN0LT5zZWxlY3RlZEluZGV4KCkgIT0gb2xkU2VsZWN0ZWRJbmRleCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaAppbmRleCA2ZTBiZjVjNzg3NjMyYWYwOTQ1
NzhkOGI5N2ZlZjkwOGMzYzJmMWI1Li45ODQ4OGE0NzIwMTE4MTdmMjQyNTg2M2ZmZDJiMWU3OGY2
NmYyYzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oCkBAIC0zNywx
MCArMzcsMTAgQEAgY2xhc3MgSFRNTE9wdGlvbkVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVs
ZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTE9wdGlvbkVsZW1lbnQ+IGNyZWF0
ZShEb2N1bWVudCYpOwogICAgIHN0YXRpYyBSZWY8SFRNTE9wdGlvbkVsZW1lbnQ+IGNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKLSAgICBzdGF0aWMgRXhjZXB0aW9uT3I8
UmVmPEhUTUxPcHRpb25FbGVtZW50Pj4gY3JlYXRlRm9yTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKERv
Y3VtZW50JiwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSwgYm9v
bCBkZWZhdWx0U2VsZWN0ZWQsIGJvb2wgc2VsZWN0ZWQpOworICAgIHN0YXRpYyBFeGNlcHRpb25P
cjxSZWY8SFRNTE9wdGlvbkVsZW1lbnQ+PiBjcmVhdGVGb3JMZWdhY3lGYWN0b3J5RnVuY3Rpb24o
RG9jdW1lbnQmLCBTdHJpbmcmJiB0ZXh0LCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSwgYm9vbCBk
ZWZhdWx0U2VsZWN0ZWQsIGJvb2wgc2VsZWN0ZWQpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIHRleHQoKSBjb25zdDsKLSAgICB2b2lkIHNldFRleHQoY29uc3QgU3RyaW5nJik7CisgICAg
dm9pZCBzZXRUZXh0KFN0cmluZyYmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGludCBpbmRleCgp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwCmluZGV4
IDFmYTE2ZWU3NDg0MTNhMmNkOTMzMzVhNjc1Nzg4ZDVhODgzOGVkYzAuLmQzYjYxMDgxNDhhODBl
ODVlZGNmNjI4MTllYjE0Zjk1OTBiODA2MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91
dHB1dEVsZW1lbnQuY3BwCkBAIC04NywxMCArODcsMTAgQEAgU3RyaW5nIEhUTUxPdXRwdXRFbGVt
ZW50Ojp2YWx1ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHRleHRDb250ZW50KCk7CiB9CiAKLXZvaWQg
SFRNTE91dHB1dEVsZW1lbnQ6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCit2b2lkIEhU
TUxPdXRwdXRFbGVtZW50OjpzZXRWYWx1ZShTdHJpbmcmJiB2YWx1ZSkKIHsKICAgICBtX2RlZmF1
bHRWYWx1ZU92ZXJyaWRlID0gZGVmYXVsdFZhbHVlKCk7Ci0gICAgc3RyaW5nUmVwbGFjZUFsbCh2
YWx1ZSk7CisgICAgc3RyaW5nUmVwbGFjZUFsbChXVEZNb3ZlKHZhbHVlKSk7CiB9CiAKIFN0cmlu
ZyBIVE1MT3V0cHV0RWxlbWVudDo6ZGVmYXVsdFZhbHVlKCkgY29uc3QKQEAgLTk4LDEyICs5OCwx
MiBAQCBTdHJpbmcgSFRNTE91dHB1dEVsZW1lbnQ6OmRlZmF1bHRWYWx1ZSgpIGNvbnN0CiAgICAg
cmV0dXJuIG1fZGVmYXVsdFZhbHVlT3ZlcnJpZGUuaXNOdWxsKCkgPyB0ZXh0Q29udGVudCgpIDog
bV9kZWZhdWx0VmFsdWVPdmVycmlkZTsKIH0KIAotdm9pZCBIVE1MT3V0cHV0RWxlbWVudDo6c2V0
RGVmYXVsdFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCit2b2lkIEhUTUxPdXRwdXRFbGVtZW50
OjpzZXREZWZhdWx0VmFsdWUoU3RyaW5nJiYgdmFsdWUpCiB7CiAgICAgaWYgKG1fZGVmYXVsdFZh
bHVlT3ZlcnJpZGUuaXNOdWxsKCkpCi0gICAgICAgIHN0cmluZ1JlcGxhY2VBbGwodmFsdWUpOwor
ICAgICAgICBzdHJpbmdSZXBsYWNlQWxsKFdURk1vdmUodmFsdWUpKTsKICAgICBlbHNlCi0gICAg
ICAgIG1fZGVmYXVsdFZhbHVlT3ZlcnJpZGUgPSB2YWx1ZTsKKyAgICAgICAgbV9kZWZhdWx0VmFs
dWVPdmVycmlkZSA9IFdURk1vdmUodmFsdWUpOwogfQogCiBET01Ub2tlbkxpc3QmIEhUTUxPdXRw
dXRFbGVtZW50OjpodG1sRm9yKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE91dHB1dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQu
aAppbmRleCBlNDg3MTcxMzI2MzNiMTQ5ZWQ3YzM1ZjYxZDA4NDIxM2JhNGMxNDZkLi4wMmM0OWNl
MDBhNjQ2NTg0ZjBkZDhmMTYxMTdmZDFjNDAyZGFmYTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT3V0cHV0RWxlbWVudC5oCkBAIC00NCw5ICs0NCw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmPEhUTUxPdXRwdXRFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKIAogICAgIFN0cmluZyB2
YWx1ZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJik7CisgICAgdm9p
ZCBzZXRWYWx1ZShTdHJpbmcmJik7CiAgICAgU3RyaW5nIGRlZmF1bHRWYWx1ZSgpIGNvbnN0Owot
ICAgIHZvaWQgc2V0RGVmYXVsdFZhbHVlKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0RGVm
YXVsdFZhbHVlKFN0cmluZyYmKTsKICAgICBET01Ub2tlbkxpc3QmIGh0bWxGb3IoKTsKICAgICAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCmluZGV4
IGI1MzUwOWViZjNmNzI0ODNkN2RiYzUxYWZkZDc5NmNmNTVkNzI2MDkuLjBlNzgyM2E1ZmViYjY0
MzAzNTJmNjUyNjM2M2Q3YTFiZDkwNWViMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNj
cmlwdEVsZW1lbnQuY3BwCkBAIC04NSw5ICs4NSw5IEBAIHZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6
OmRpZEZpbmlzaEluc2VydGluZ05vZGUoKQogfQogCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0
d2cub3JnL211bHRpcGFnZS9zY3JpcHRpbmcuaHRtbCNkb20tc2NyaXB0LXRleHQKLXZvaWQgSFRN
TFNjcmlwdEVsZW1lbnQ6OnNldFRleHQoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgSFRNTFNj
cmlwdEVsZW1lbnQ6OnNldFRleHQoU3RyaW5nJiYgdmFsdWUpCiB7Ci0gICAgc2V0VGV4dENvbnRl
bnQodmFsdWUpOworICAgIHNldFRleHRDb250ZW50KFdURk1vdmUodmFsdWUpKTsKIH0KIAogdm9p
ZCBIVE1MU2NyaXB0RWxlbWVudDo6c2V0QXN5bmMoYm9vbCBhc3luYykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFNjcmlwdEVsZW1lbnQuaAppbmRleCA2MDNjZmUxMDI4YmVjODk4ZTkwMjdkZTZkYjAw
Njg2MzE4NGNlZmFhLi5jMDQzMDM3MGNmMzk2MTRmYWE3ODBkNjUyZTBlMjYwZjJiOTdlOTQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oCkBAIC0zNCw3ICszNCw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhUTUxTY3JpcHRFbGVtZW50PiBjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgYm9vbCB3YXNJbnNlcnRlZEJ5UGFyc2VyLCBib29s
IGFscmVhZHlTdGFydGVkID0gZmFsc2UpOwogCiAgICAgU3RyaW5nIHRleHQoKSBjb25zdCB7IHJl
dHVybiBzY3JpcHRDb250ZW50KCk7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRleHQo
Y29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUZXh0KFN0cmluZyYm
KTsKIAogICAgIFVSTCBzcmMoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRBcmVhRWxlbWVudC5jcHAKaW5kZXggMmYxMGNlZDg0MTMxZWQ3ZTlkZDE4N2EzNDAxY2ZkY2Rl
YzRiYTQzZS4uZjhkZmU1NDY3NDliYWE2OWNkYTY2YWZhYzkzMjA2NzNmODE4ODcwMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC00MDQsNyArNDA0
LDcgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpzZXRWYWx1ZUNvbW1vbihjb25zdCBTdHJp
bmcmIG5ld1ZhbHVlLCBUZXh0RmllbGRFdmVudEIKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV92
YWx1ZSA9IG5vcm1hbGl6ZWRWYWx1ZTsKLSAgICBzZXRJbm5lclRleHRWYWx1ZShtX3ZhbHVlKTsK
KyAgICBzZXRJbm5lclRleHRWYWx1ZShTdHJpbmcgeyBtX3ZhbHVlIH0pOwogICAgIHNldExhc3RD
aGFuZ2VXYXNOb3RVc2VyRWRpdCgpOwogICAgIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eSgp
OwogICAgIGludmFsaWRhdGVTdHlsZUZvclN1YnRyZWUoKTsKQEAgLTQyOCw5ICs0MjgsOSBAQCBT
dHJpbmcgSFRNTFRleHRBcmVhRWxlbWVudDo6ZGVmYXVsdFZhbHVlKCkgY29uc3QKICAgICByZXR1
cm4gVGV4dE5vZGVUcmF2ZXJzYWw6OmNoaWxkVGV4dENvbnRlbnQoKnRoaXMpOwogfQogCi12b2lk
IEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldERlZmF1bHRWYWx1ZShjb25zdCBTdHJpbmcmIGRlZmF1
bHRWYWx1ZSkKK3ZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6c2V0RGVmYXVsdFZhbHVlKFN0cmlu
ZyYmIGRlZmF1bHRWYWx1ZSkKIHsKLSAgICBzZXRUZXh0Q29udGVudChkZWZhdWx0VmFsdWUpOwor
ICAgIHNldFRleHRDb250ZW50KFdURk1vdmUoZGVmYXVsdFZhbHVlKSk7CiB9CiAKIFN0cmluZyBI
VE1MVGV4dEFyZWFFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0CkBAIC01NjAsNyAr
NTYwLDcgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50Ojp1cGRhdGVQbGFjZWhvbGRlclRleHQo
KQogICAgICAgICBtX3BsYWNlaG9sZGVyID0gVGV4dENvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ6
OmNyZWF0ZShkb2N1bWVudCgpKTsKICAgICAgICAgdXNlckFnZW50U2hhZG93Um9vdCgpLT5pbnNl
cnRCZWZvcmUoKm1fcGxhY2Vob2xkZXIsIGlubmVyVGV4dEVsZW1lbnQoKS0+bmV4dFNpYmxpbmco
KSk7CiAgICAgfQotICAgIG1fcGxhY2Vob2xkZXItPnNldElubmVyVGV4dChwbGFjZWhvbGRlclRl
eHQpOworICAgIG1fcGxhY2Vob2xkZXItPnNldElubmVyVGV4dChTdHJpbmcgeyBwbGFjZWhvbGRl
clRleHQgfSk7CiB9CiAKIGJvb2wgSFRNTFRleHRBcmVhRWxlbWVudDo6d2lsbFJlc3BvbmRUb01v
dXNlQ2xpY2tFdmVudHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4
dEFyZWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQu
aAppbmRleCBmMWZjYTc4OWM2NzJiZDc3MjkzMmJhYjQ1NmQzMDNmZDgzYWZiZTU3Li41ODkyYTBi
MTIwOGFhNDllZmFlYjQ2Mjg1NjVjMDUwNTRlODY5MjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUZXh0QXJlYUVsZW1lbnQuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgU3RyaW5nIHZhbHVlKCkgY29uc3QgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBP
UlQgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VmFsdWUoY29uc3QgU3RyaW5nJiwgVGV4dEZpZWxkRXZl
bnRCZWhhdmlvciA9IERpc3BhdGNoTm9FdmVudCwgVGV4dENvbnRyb2xTZXRWYWx1ZVNlbGVjdGlv
biA9IFRleHRDb250cm9sU2V0VmFsdWVTZWxlY3Rpb246OlNldFNlbGVjdGlvblRvRW5kKSBmaW5h
bDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZGVmYXVsdFZhbHVlKCkgY29uc3Q7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREZWZhdWx0VmFsdWUoY29uc3QgU3RyaW5nJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREZWZhdWx0VmFsdWUoU3RyaW5nJiYpOwogICAgIGludCB0
ZXh0TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gdmFsdWUoKS5sZW5ndGgoKTsgfQogICAgIGludCBl
ZmZlY3RpdmVNYXhMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtYXhMZW5ndGgoKTsgfQogICAgIC8v
IEZvciBWYWxpZGl0eVN0YXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IGQ2NmQ5OWU1ZTQ2ZjI2YzQyOTg2YjMxN2YwNDdi
OWVlZjA2MDc3NjIuLjZmYjEwZjY3MTI1ZDg3M2IzN2FmMjUzZmEwZTA1ZjVjMjNhZDhiZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwCkBAIC02MTEsNyArNjExLDcgQEAgc3RhdGljIFN0cmluZyBpbm5lclRleHRWYWx1ZUZyb20o
VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50JiBpbm5lclRleHQpCiAgICAgcmV0dXJuIHJlc3Vs
dC50b1N0cmluZygpOwogfQogCi12b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRJ
bm5lclRleHRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQordm9pZCBIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudDo6c2V0SW5uZXJUZXh0VmFsdWUoU3RyaW5nJiYgdmFsdWUpCiB7CiAgICAgTGF5
b3V0RGlzYWxsb3dlZFNjb3BlIGxheW91dERpc2FsbG93ZWRTY29wZShMYXlvdXREaXNhbGxvd2Vk
U2NvcGU6OlJlYXNvbjo6UGVyZm9ybWFuY2VPcHRpbWl6YXRpb24pOwogICAgIGF1dG8gaW5uZXJU
ZXh0ID0gaW5uZXJUZXh0RWxlbWVudENyZWF0aW5nU2hhZG93U3VidHJlZUlmTmVlZGVkKCk7CkBA
IC02NDMsOSArNjQzLDEwIEBAIHZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldElu
bmVyVGV4dFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgICAgICAvLyBFdmVudHMg
ZGlzcGF0Y2hlZCBvbiB0aGUgaW5uZXIgdGV4dCBlbGVtZW50IGNhbm5vdCBleGVjdXRlIGFyYml0
cmFyeSBhdXRob3Igc2NyaXB0cy4KICAgICAgICAgICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6
RXZlbnRBbGxvd2VkU2NvcGUgYWxsb3dlZFNjb3BlKCp1c2VyQWdlbnRTaGFkb3dSb290KCkpOwog
Ci0gICAgICAgICAgICBpbm5lclRleHQtPnNldElubmVyVGV4dCh2YWx1ZSk7CisgICAgICAgICAg
ICBib29sIGVuZHNXaXRoTmV3TGluZSA9IHZhbHVlLmVuZHNXaXRoKCdcbicpIHx8IHZhbHVlLmVu
ZHNXaXRoKCdccicpOworICAgICAgICAgICAgaW5uZXJUZXh0LT5zZXRJbm5lclRleHQoV1RGTW92
ZSh2YWx1ZSkpOwogCi0gICAgICAgICAgICBpZiAodmFsdWUuZW5kc1dpdGgoJ1xuJykgfHwgdmFs
dWUuZW5kc1dpdGgoJ1xyJykpCisgICAgICAgICAgICBpZiAoZW5kc1dpdGhOZXdMaW5lKQogICAg
ICAgICAgICAgICAgIGlubmVyVGV4dC0+YXBwZW5kQ2hpbGQoSFRNTEJSRWxlbWVudDo6Y3JlYXRl
KGRvY3VtZW50KCkpKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggODAzMTRkMWIxOGE3OGZkYTBmMjhhMzlj
MzJiMDQ5ZmU5ZTMyMjNkMC4uN2Q5M2Y5NTBjYzlkZTgwZDI5MWYwMTg3NmVhNmY3Njk4YzJjNDEz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuaApAQCAtOTcsNyArOTcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNlbGVjdGlvbkNoYW5n
ZWQoYm9vbCBzaG91bGRGaXJlU2VsZWN0RXZlbnQpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
bGFzdENoYW5nZVdhc1VzZXJFZGl0KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRJbm5lclRleHRWYWx1
ZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldElubmVyVGV4dFZhbHVlKFN0cmluZyYmKTsK
ICAgICBTdHJpbmcgaW5uZXJUZXh0VmFsdWUoKSBjb25zdDsKIAogICAgIFN0cmluZyBkaXJlY3Rp
b25Gb3JGb3JtRGF0YSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGl0bGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVu
dC5jcHAKaW5kZXggYTY3MDdiZTcyOGExOTg3Y2VmMTczODA2YzJiZDQ2NTFjMmFiNmI2My4uMTcz
Mzk1MzgzNTUxZGQ4ZDgyNjgyZGJmNWIzMzZhYmY2ZDkxZWQ2MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwCkBAIC05MCw5ICs5MCw5IEBAIFN0cmluZ1dpdGhEaXJl
Y3Rpb24gSFRNTFRpdGxlRWxlbWVudDo6Y29tcHV0ZWRUZXh0V2l0aERpcmVjdGlvbigpCiAgICAg
cmV0dXJuIHsgdGV4dCgpLCBkaXJlY3Rpb24gfTsKIH0KIAotdm9pZCBIVE1MVGl0bGVFbGVtZW50
OjpzZXRUZXh0KGNvbnN0IFN0cmluZyYgdmFsdWUpCit2b2lkIEhUTUxUaXRsZUVsZW1lbnQ6OnNl
dFRleHQoU3RyaW5nJiYgdmFsdWUpCiB7Ci0gICAgc2V0VGV4dENvbnRlbnQodmFsdWUpOworICAg
IHNldFRleHRDb250ZW50KFdURk1vdmUodmFsdWUpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUaXRsZUVsZW1lbnQuaAppbmRleCA4YzM3YTg5YjEwOTY3ZjBlYjQ5NzE2MDZhN2VjMDQ1
YmU2NzRiMGU0Li44MWQxNGJmZDE3NTVkOTcyNWM0YTBkYmYwMDBhYWM0MzM5YjIyZDZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuaApAQCAtMzMsNyArMzMsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxIVE1MVGl0bGVFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdGV4dCgp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGV4dChjb25zdCBTdHJpbmcmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRleHQoU3RyaW5nJiYpOwogCiAgICAgY29uc3Qg
U3RyaW5nV2l0aERpcmVjdGlvbiYgdGV4dFdpdGhEaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X3RpdGxlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5w
dXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApp
bmRleCAyMzMwODJjZTczYmJkYjhiZTg4MDQ1N2EzZmE1MDY1MDAwMmUwNmVkLi5hZTU4M2I4MDgy
NGE5YjFkN2U0ZmE4ZTc0MTVmMjc2NGNhNWFmM2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9U
ZXh0RmllbGRJbnB1dFR5cGUuY3BwCkBAIC02NjAsNyArNjYwLDcgQEAgdm9pZCBUZXh0RmllbGRJ
bnB1dFR5cGU6OnVwZGF0ZVBsYWNlaG9sZGVyVGV4dCgpCiAgICAgICAgIG1fcGxhY2Vob2xkZXIg
PSBUZXh0Q29udHJvbFBsYWNlaG9sZGVyRWxlbWVudDo6Y3JlYXRlKGVsZW1lbnQoKS0+ZG9jdW1l
bnQoKSk7CiAgICAgICAgIGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpLT5pbnNlcnRC
ZWZvcmUoKm1fcGxhY2Vob2xkZXIsIG1fY29udGFpbmVyID8gbV9jb250YWluZXIuZ2V0KCkgOiBp
bm5lclRleHRFbGVtZW50KCkuZ2V0KCkpOwogICAgIH0KLSAgICBtX3BsYWNlaG9sZGVyLT5zZXRJ
bm5lclRleHQocGxhY2Vob2xkZXJUZXh0KTsKKyAgICBtX3BsYWNlaG9sZGVyLT5zZXRJbm5lclRl
eHQoV1RGTW92ZShwbGFjZWhvbGRlclRleHQpKTsKIH0KIAogYm9vbCBUZXh0RmllbGRJbnB1dFR5
cGU6OmFwcGVuZEZvcm1EYXRhKERPTUZvcm1EYXRhJiBmb3JtRGF0YSkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21IVE1MVG9rZW4uaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21IVE1MVG9rZW4uaAppbmRleCA0NjRlYzEwNzVlNDNjZTNm
Mjg4YTcwNzZhMjZmMTFjMjQyYTI1YWYwLi45ZWQ3YTZhNWE1ZWQ0NGFiNmIzZjVhZmVkMjIzZTBh
Yzg1MzhlNzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9BdG9tSFRN
TFRva2VuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQXRvbUhUTUxUb2tlbi5o
CkBAIC03NCw2ICs3NCw3IEBAIHB1YmxpYzoKICAgICAvLyBDb21tZW50CiAKICAgICBjb25zdCBT
dHJpbmcmIGNvbW1lbnQoKSBjb25zdDsKKyAgICBTdHJpbmcmIGNvbW1lbnQoKTsKIAogICAgIEhh
c0R1cGxpY2F0ZUF0dHJpYnV0ZSBoYXNEdXBsaWNhdGVBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVy
biBtX2hhc0R1cGxpY2F0ZUF0dHJpYnV0ZTsgfTsKIApAQCAtMTYyLDYgKzE2MywxMiBAQCBpbmxp
bmUgY29uc3QgU3RyaW5nJiBBdG9tSFRNTFRva2VuOjpjb21tZW50KCkgY29uc3QKICAgICByZXR1
cm4gbV9kYXRhOwogfQogCitpbmxpbmUgU3RyaW5nJiBBdG9tSFRNTFRva2VuOjpjb21tZW50KCkK
K3sKKyAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlbjo6Q29tbWVudCk7CisgICAgcmV0dXJu
IG1fZGF0YTsKK30KKwogaW5saW5lIGJvb2wgQXRvbUhUTUxUb2tlbjo6Zm9yY2VRdWlya3MoKSBj
b25zdAogewogICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpET0NUWVBFKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApp
bmRleCAxNWRjZmZiODJmMTg5NDkwMjIxYTljZjgyNTY5NWJjZGEzZjg2YjQ5Li4zNjEwNmUzNWQy
MzMxMzFhZWU0YjBlNWNlZjEzOThjMTIwYTRmM2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCkBAIC00NTIsMjAgKzQ1Miwy
MCBAQCB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnREb2N0eXBlKEF0b21IVE1MVG9r
ZW4mJiB0b2tlbikKIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydENvbW1lbnQoQXRv
bUhUTUxUb2tlbiYmIHRva2VuKQogewogICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRv
a2VuOjpDb21tZW50KTsKLSAgICBhdHRhY2hMYXRlcihjdXJyZW50Tm9kZSgpLCBDb21tZW50Ojpj
cmVhdGUob3duZXJEb2N1bWVudEZvckN1cnJlbnROb2RlKCksIHRva2VuLmNvbW1lbnQoKSkpOwor
ICAgIGF0dGFjaExhdGVyKGN1cnJlbnROb2RlKCksIENvbW1lbnQ6OmNyZWF0ZShvd25lckRvY3Vt
ZW50Rm9yQ3VycmVudE5vZGUoKSwgV1RGTW92ZSh0b2tlbi5jb21tZW50KCkpKSk7CiB9CiAKIHZv
aWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydENvbW1lbnRPbkRvY3VtZW50KEF0b21IVE1M
VG9rZW4mJiB0b2tlbikKIHsKICAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6
Q29tbWVudCk7Ci0gICAgYXR0YWNoTGF0ZXIobV9hdHRhY2htZW50Um9vdCwgQ29tbWVudDo6Y3Jl
YXRlKG1fZG9jdW1lbnQsIHRva2VuLmNvbW1lbnQoKSkpOworICAgIGF0dGFjaExhdGVyKG1fYXR0
YWNobWVudFJvb3QsIENvbW1lbnQ6OmNyZWF0ZShtX2RvY3VtZW50LCBXVEZNb3ZlKHRva2VuLmNv
bW1lbnQoKSkpKTsKIH0KIAogdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0Q29tbWVu
dE9uSFRNTEh0bWxFbGVtZW50KEF0b21IVE1MVG9rZW4mJiB0b2tlbikKIHsKICAgICBBU1NFUlQo
dG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6Q29tbWVudCk7CiAgICAgQ29udGFpbmVyTm9kZSYg
cGFyZW50ID0gbV9vcGVuRWxlbWVudHMucm9vdE5vZGUoKTsKLSAgICBhdHRhY2hMYXRlcihwYXJl
bnQsIENvbW1lbnQ6OmNyZWF0ZShwYXJlbnQuZG9jdW1lbnQoKSwgdG9rZW4uY29tbWVudCgpKSk7
CisgICAgYXR0YWNoTGF0ZXIocGFyZW50LCBDb21tZW50OjpjcmVhdGUocGFyZW50LmRvY3VtZW50
KCksIFdURk1vdmUodG9rZW4uY29tbWVudCgpKSkpOwogfQogCiB2b2lkIEhUTUxDb25zdHJ1Y3Rp
b25TaXRlOjppbnNlcnRIVE1MSGVhZEVsZW1lbnQoQXRvbUhUTUxUb2tlbiYmIHRva2VuKQpAQCAt
NjAwLDcgKzYwMCw3IEBAIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydFRleHROb2Rl
KGNvbnN0IFN0cmluZyYgY2hhcmFjdGVycywgV2hpdGVzcGFjZU1vCiAgICAgICAgIGlmICghdGV4
dE5vZGUtPmxlbmd0aCgpKSB7CiAgICAgICAgICAgICBTdHJpbmcgc3Vic3RyaW5nID0gY2hhcmFj
dGVycy5zdWJzdHJpbmcoY3VycmVudFBvc2l0aW9uKTsKICAgICAgICAgICAgIEF0b21TdHJpbmcg
c3Vic3RyaW5nQXRvbSA9IG1fd2hpdGVzcGFjZUNhY2hlLmxvb2t1cChzdWJzdHJpbmcsIHdoaXRl
c3BhY2VNb2RlKTsKLSAgICAgICAgICAgIHRleHROb2RlID0gVGV4dDo6Y3JlYXRlKHRhc2sucGFy
ZW50LT5kb2N1bWVudCgpLCBzdWJzdHJpbmdBdG9tLmlzTnVsbCgpID8gc3Vic3RyaW5nIDogc3Vi
c3RyaW5nQXRvbS5zdHJpbmcoKSk7CisgICAgICAgICAgICB0ZXh0Tm9kZSA9IFRleHQ6OmNyZWF0
ZSh0YXNrLnBhcmVudC0+ZG9jdW1lbnQoKSwgc3Vic3RyaW5nQXRvbS5pc051bGwoKSA/IFdURk1v
dmUoc3Vic3RyaW5nKSA6IHN1YnN0cmluZ0F0b20ucmVsZWFzZVN0cmluZygpKTsKICAgICAgICAg
fQogCiAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiArPSB0ZXh0Tm9kZS0+bGVuZ3RoKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUVkaXRFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRWRpdEVsZW1lbnQuY3BwCmlu
ZGV4IGQ3ZGZhNzMwZmFjZjcwNzc4Y2U1ZGFmNjM0ZDc3YjExMTEyYmM4YTMuLjRlMjc2NzZjZGE4
MWI1MGUzNWE1OTgxMTBlZTcwYWVmZWFmMTVhY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0RhdGVUaW1lRWRpdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0RhdGVUaW1lRWRpdEVsZW1lbnQuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgLy8gRGF0ZVRpbWVGb3JtYXQ6OlRva2VuSGFuZGxlciBmdW5j
dGlvbnM6CiAgICAgdm9pZCB2aXNpdEZpZWxkKERhdGVUaW1lRm9ybWF0OjpGaWVsZFR5cGUsIGlu
dCk7Ci0gICAgdm9pZCB2aXNpdExpdGVyYWwoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCB2aXNp
dExpdGVyYWwoU3RyaW5nJiYpOwogCiAgICAgRGF0ZVRpbWVFZGl0RWxlbWVudCYgbV9lZGl0RWxl
bWVudDsKICAgICBjb25zdCBEYXRlVGltZUVkaXRFbGVtZW50OjpMYXlvdXRQYXJhbWV0ZXJzJiBt
X3BhcmFtZXRlcnM7CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBEYXRlVGltZUVkaXRCdWlsZGVy
Ojp2aXNpdEZpZWxkKERhdGVUaW1lRm9ybWF0OjpGaWVsZFR5cGUgZmllbGRUeXBlLCBpbnQgY28K
ICAgICB9CiB9CiAKLXZvaWQgRGF0ZVRpbWVFZGl0QnVpbGRlcjo6dmlzaXRMaXRlcmFsKGNvbnN0
IFN0cmluZyYgdGV4dCkKK3ZvaWQgRGF0ZVRpbWVFZGl0QnVpbGRlcjo6dmlzaXRMaXRlcmFsKFN0
cmluZyYmIHRleHQpCiB7CiAgICAgQVNTRVJUKHRleHQubGVuZ3RoKCkpOwogCkBAIC0xODQsNyAr
MTg0LDcgQEAgdm9pZCBEYXRlVGltZUVkaXRCdWlsZGVyOjp2aXNpdExpdGVyYWwoY29uc3QgU3Ry
aW5nJiB0ZXh0KQogICAgIGlmICh0ZXh0LmVuZHNXaXRoKCcgJykpCiAgICAgICAgIGVsZW1lbnQt
PnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlNYXJnaW5JbmxpbmVFbmQsIC0xLCBD
U1NVbml0VHlwZTo6Q1NTX1BYKTsKIAotICAgIGVsZW1lbnQtPmFwcGVuZENoaWxkKFRleHQ6OmNy
ZWF0ZShtX2VkaXRFbGVtZW50LmRvY3VtZW50KCksIHRleHQpKTsKKyAgICBlbGVtZW50LT5hcHBl
bmRDaGlsZChUZXh0OjpjcmVhdGUobV9lZGl0RWxlbWVudC5kb2N1bWVudCgpLCBXVEZNb3ZlKHRl
eHQpKSk7CiAgICAgbV9lZGl0RWxlbWVudC5maWVsZHNXcmFwcGVyRWxlbWVudCgpLmFwcGVuZENo
aWxkKGVsZW1lbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9EYXRlVGltZUZpZWxkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9E
YXRlVGltZUZpZWxkRWxlbWVudC5jcHAKaW5kZXggOWU0ZjYzMzhlZTgwNmNkZDVkYjU2NWQzZWE5
NjY1ZTQ5YWU0NjM5OS4uNDFhY2RiYTE4MGJiYTQ0ZjM4YTFmZGJiOTU2NDA4NDZkZmUwMmNmNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRmllbGRFbGVt
ZW50LmNwcApAQCAtMTg4LDcgKzE4OCw3IEBAIFN0cmluZyBEYXRlVGltZUZpZWxkRWxlbWVudDo6
dmlzaWJsZVZhbHVlKCkgY29uc3QKIHZvaWQgRGF0ZVRpbWVGaWVsZEVsZW1lbnQ6OnVwZGF0ZVZp
c2libGVWYWx1ZShFdmVudEJlaGF2aW9yIGV2ZW50QmVoYXZpb3IpCiB7CiAgICAgaWYgKCFmaXJz
dENoaWxkKCkpCi0gICAgICAgIGFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVudCgpLCBl
bXB0eVN0cmluZygpKSk7CisgICAgICAgIGFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVu
dCgpLCBTdHJpbmcgeyBlbXB0eVN0cmluZygpIH0pKTsKIAogICAgIGF1dG8mIHRleHROb2RlID0g
ZG93bmNhc3Q8VGV4dD4oKmZpcnN0Q2hpbGQoKSk7CiAgICAgU3RyaW5nIG5ld1Zpc2libGVWYWx1
ZSA9IHZpc2libGVWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2tDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tD
dWUuY3BwCmluZGV4IDc3YzZhMTYwYmE5NWJkNWEyODZjNWRhNzQ5Mzk4MzVlNTFiOWFkM2QuLmIz
M2UyYWEyMDQwOGFjZjNmMTFhMTk0MWE3OTQ0MmY1MjBlNGQwZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKQEAgLTUxMCw4ICs1MTAsOCBAQCB2b2lkIFRl
eHRUcmFja0N1ZTo6cmVidWlsZERpc3BsYXlUcmVlKCkKICAgICAgICAgaWYgKGNvbnN0IGF1dG8m
IHN0eWxlU2hlZXRzID0gdHJhY2soKS0+c3R5bGVTaGVldHMoKSkgewogICAgICAgICAgICAgZm9y
IChjb25zdCBhdXRvJiBjc3NTdHJpbmcgOiAqc3R5bGVTaGVldHMpIHsKICAgICAgICAgICAgICAg
ICBhdXRvIHN0eWxlID0gSFRNTFN0eWxlRWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6c3R5bGVU
YWcsIG1fZGlzcGxheVRyZWUtPmRvY3VtZW50KCksIGZhbHNlKTsKLSAgICAgICAgICAgICAgICBz
dHlsZS0+c2V0VGV4dENvbnRlbnQoY3NzU3RyaW5nKTsKLSAgICAgICAgICAgICAgICBtX2Rpc3Bs
YXlUcmVlLT5hcHBlbmRDaGlsZChzdHlsZSk7CisgICAgICAgICAgICAgICAgc3R5bGUtPnNldFRl
eHRDb250ZW50KFN0cmluZyB7IGNzc1N0cmluZyB9KTsKKyAgICAgICAgICAgICAgICBtX2Rpc3Bs
YXlUcmVlLT5hcHBlbmRDaGlsZChXVEZNb3ZlKHN0eWxlKSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKaW5kZXggZTczZGNj
YTIzOGRhOGNhYWFjZTdmNTkwMTNjZjZjYTczMDM2OWVkMi4uYWJmNzU2OTY0YzM3OWU4Nzc0ZGFj
ZWFiODEyMGUyOGZjZDE0YWE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9WVFRDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcApA
QCAtMTAwMSwxNiArMTAwMSwxNiBAQCBSZWZQdHI8VGV4dFRyYWNrQ3VlQm94PiBWVFRDdWU6Omdl
dERpc3BsYXlUcmVlKGNvbnN0IEludFNpemUmIHZpZGVvU2l6ZSwgaW50IGZvbgogICAgIGlmIChk
aXNwbGF5VHJlZS0+ZG9jdW1lbnQoKS5wYWdlKCkpIHsKICAgICAgICAgYXV0byBjc3NTdHJpbmcg
PSBkaXNwbGF5VHJlZS0+ZG9jdW1lbnQoKS5wYWdlKCktPmNhcHRpb25Vc2VyUHJlZmVyZW5jZXNT
dHlsZVNoZWV0KCk7CiAgICAgICAgIGF1dG8gc3R5bGUgPSBIVE1MU3R5bGVFbGVtZW50OjpjcmVh
dGUoSFRNTE5hbWVzOjpzdHlsZVRhZywgZGlzcGxheVRyZWUtPmRvY3VtZW50KCksIGZhbHNlKTsK
LSAgICAgICAgc3R5bGUtPnNldFRleHRDb250ZW50KGNzc1N0cmluZyk7Ci0gICAgICAgIGRpc3Bs
YXlUcmVlLT5hcHBlbmRDaGlsZChzdHlsZSk7CisgICAgICAgIHN0eWxlLT5zZXRUZXh0Q29udGVu
dChXVEZNb3ZlKGNzc1N0cmluZykpOworICAgICAgICBkaXNwbGF5VHJlZS0+YXBwZW5kQ2hpbGQo
V1RGTW92ZShzdHlsZSkpOwogICAgIH0KIAogICAgIGNvbnN0IGF1dG8mIHN0eWxlU2hlZXRzID0g
dHJhY2soKS0+c3R5bGVTaGVldHMoKTsKICAgICBpZiAoc3R5bGVTaGVldHMpIHsKICAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiBjc3NTdHJpbmcgOiAqc3R5bGVTaGVldHMpIHsKICAgICAgICAgICAg
IGF1dG8gc3R5bGUgPSBIVE1MU3R5bGVFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjpzdHlsZVRh
ZywgZGlzcGxheVRyZWUtPmRvY3VtZW50KCksIGZhbHNlKTsKLSAgICAgICAgICAgIHN0eWxlLT5z
ZXRUZXh0Q29udGVudChjc3NTdHJpbmcpOwotICAgICAgICAgICAgZGlzcGxheVRyZWUtPmFwcGVu
ZENoaWxkKHN0eWxlKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRUZXh0Q29udGVudChTdHJpbmcg
eyBjc3NTdHJpbmcgfSk7CisgICAgICAgICAgICBkaXNwbGF5VHJlZS0+YXBwZW5kQ2hpbGQoV1RG
TW92ZShzdHlsZSkpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1dlYlZUVFBhcnNlci5jcHAKaW5kZXggOGZkMWMzMzViMDY2NzA4NTE0OTkzZWNjOWQ3YmU0
YzBjZWU5ZmIyNi4uZjhkZGJkMzgwNWI0NTgwYThkNzY0NDg5MTIzY2Q5MjFlYzI2MDVmNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcApAQCAtNTE5LDcgKzUx
OSw3IEBAIFJlZjxEb2N1bWVudEZyYWdtZW50PiBXZWJWVFRUcmVlQnVpbGRlcjo6YnVpbGRGcm9t
U3RyaW5nKGNvbnN0IFN0cmluZyYgY3VlVGV4dCkKICAgICBhdXRvIGZyYWdtZW50ID0gRG9jdW1l
bnRGcmFnbWVudDo6Y3JlYXRlKG1fZG9jdW1lbnQpOwogCiAgICAgaWYgKGN1ZVRleHQuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIGZyYWdtZW50LT5wYXJzZXJBcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUo
bV9kb2N1bWVudCwgZW1wdHlTdHJpbmcoKSkpOworICAgICAgICBmcmFnbWVudC0+cGFyc2VyQXBw
ZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKG1fZG9jdW1lbnQsIFN0cmluZyB7IGVtcHR5U3RyaW5nKCkg
fSkpOwogICAgICAgICByZXR1cm4gZnJhZ21lbnQ7CiAgICAgfQogCkBAIC02NTAsNyArNjUwLDcg
QEAgdm9pZCBXZWJWVFRUcmVlQnVpbGRlcjo6Y29uc3RydWN0VHJlZUZyb21Ub2tlbihEb2N1bWVu
dCYgZG9jdW1lbnQpCiAKICAgICBzd2l0Y2ggKG1fdG9rZW4udHlwZSgpKSB7CiAgICAgY2FzZSBX
ZWJWVFRUb2tlblR5cGVzOjpDaGFyYWN0ZXI6IHsKLSAgICAgICAgbV9jdXJyZW50Tm9kZS0+cGFy
c2VyQXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50LCBtX3Rva2VuLmNoYXJhY3RlcnMo
KSkpOworICAgICAgICBtX2N1cnJlbnROb2RlLT5wYXJzZXJBcHBlbmRDaGlsZChUZXh0OjpjcmVh
dGUoZG9jdW1lbnQsIFN0cmluZyB7IG1fdG9rZW4uY2hhcmFjdGVycygpIH0pKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogICAgIGNhc2UgV2ViVlRUVG9rZW5UeXBlczo6U3RhcnRUYWc6IHsKQEAg
LTcwOSw3ICs3MDksNyBAQCB2b2lkIFdlYlZUVFRyZWVCdWlsZGVyOjpjb25zdHJ1Y3RUcmVlRnJv
bVRva2VuKERvY3VtZW50JiBkb2N1bWVudCkKICAgICAgICAgU3RyaW5nIGNoYXJhY3RlcnNTdHJp
bmcgPSBtX3Rva2VuLmNoYXJhY3RlcnMoKTsKICAgICAgICAgTWVkaWFUaW1lIHBhcnNlZFRpbWVT
dGFtcDsKICAgICAgICAgaWYgKFdlYlZUVFBhcnNlcjo6Y29sbGVjdFRpbWVTdGFtcChjaGFyYWN0
ZXJzU3RyaW5nLCBwYXJzZWRUaW1lU3RhbXApKQotICAgICAgICAgICAgbV9jdXJyZW50Tm9kZS0+
cGFyc2VyQXBwZW5kQ2hpbGQoUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjcmVhdGUoZG9jdW1lbnQs
ICJ0aW1lc3RhbXAiX3MsIGNoYXJhY3RlcnNTdHJpbmcpKTsKKyAgICAgICAgICAgIG1fY3VycmVu
dE5vZGUtPnBhcnNlckFwcGVuZENoaWxkKFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y3JlYXRlKGRv
Y3VtZW50LCAidGltZXN0YW1wIl9zLCBXVEZNb3ZlKGNoYXJhY3RlcnNTdHJpbmcpKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250
cm9sbGVyLmNwcAppbmRleCBlNmZjNzlhMDIxMTI0NGZjYzdlMDk0OTNjYmVlOTBiMDdlMTI4ZDFh
Li4yMTFhM2YwYzBhOTY0ZDdhN2NjZDcxMWQ2YWI5MGY2ZGI1OWRmNGNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtMTcwLDcgKzE3MCw3IEBAIHN0YXRpYyBSZWZQ
dHI8RG9jdW1lbnRGcmFnbWVudD4gZG9jdW1lbnRGcmFnbWVudEZyb21EcmFnRGF0YShjb25zdCBE
cmFnRGF0YSYgZHJhCiAgICAgICAgICAgICAgICAgICAgIGlmICh0aXRsZS5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IHVybDsKICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgYW5jaG9yLT5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZSh0aXRsZSkpOworICAgICAgICAgICAgICAgIGFuY2hvci0+YXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoV1RGTW92ZSh0aXRsZSkpKTsKICAgICAgICAgICAgICAgICBhdXRvIGZy
YWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwogICAgICAgICAgICAg
ICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChhbmNob3IpOwogICAgICAgICAgICAgICAgIHJldHVy
biBmcmFnbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvRGF0
ZVRpbWVGb3JtYXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvRGF0ZVRpbWVGb3Jt
YXQuaAppbmRleCBhMzcyNmRmZmJlMWYzZTE5ZDdhODMxZDc3MDc2OTNlMTVjNjU2NjdmLi44ZGUx
OTA0NGFhYzAyN2JmMmU2ZmFlYjU1MGQ0OTBmNzkxZGFiOTBlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0RhdGVUaW1lRm9ybWF0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9EYXRlVGltZUZvcm1hdC5oCkBAIC05OCw3ICs5OCw3IEBAIHB1Ymxp
YzoKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgflRva2VuSGFuZGxlcigpID0gZGVmYXVs
dDsKICAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0RmllbGQoRmllbGRUeXBlLCBpbnQgbnVtYmVy
T2ZQYXR0ZXJuQ2hhcmFjdGVycykgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRMaXRl
cmFsKGNvbnN0IFN0cmluZyYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0TGl0ZXJh
bChTdHJpbmcmJikgPSAwOwogICAgIH07CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgc3VjY2Vl
ZGVkLCBmYWxzZSBpZiBmYWlsZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1BsYXRmb3JtTG9jYWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
UGxhdGZvcm1Mb2NhbGUuY3BwCmluZGV4IGY0NzIwMGI1NzIxNjhkNGVlZmFhNzRlOTA3NTcxYWQ1
YzkyYWIwMTkuLmEzMmJhOTBlM2FhOTAwY2Q0MDI4NmQwYzdlMTM4N2FjZGY2N2E4M2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxhdGZvcm1Mb2NhbGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxhdGZvcm1Mb2NhbGUuY3BwCkBAIC01
Myw3ICs1Myw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgLy8gRGF0ZVRpbWVGb3JtYXQ6OlRv
a2VuSGFuZGxlciBmdW5jdGlvbnMuCiAgICAgdm9pZCB2aXNpdEZpZWxkKERhdGVUaW1lRm9ybWF0
OjpGaWVsZFR5cGUsIGludCkgZmluYWw7Ci0gICAgdm9pZCB2aXNpdExpdGVyYWwoY29uc3QgU3Ry
aW5nJikgZmluYWw7CisgICAgdm9pZCB2aXNpdExpdGVyYWwoU3RyaW5nJiYpIGZpbmFsOwogCiAg
ICAgU3RyaW5nIHplcm9QYWRTdHJpbmcoY29uc3QgU3RyaW5nJiwgc2l6ZV90IHdpZHRoKTsKICAg
ICB2b2lkIGFwcGVuZE51bWJlcihpbnQgbnVtYmVyLCBzaXplX3Qgd2lkdGgpOwpAQCAtMTY4LDEw
ICsxNjgsMTAgQEAgdm9pZCBEYXRlVGltZVN0cmluZ0J1aWxkZXI6OnZpc2l0RmllbGQoRGF0ZVRp
bWVGb3JtYXQ6OkZpZWxkVHlwZSBmaWVsZFR5cGUsIGludAogICAgIH0KIH0KIAotdm9pZCBEYXRl
VGltZVN0cmluZ0J1aWxkZXI6OnZpc2l0TGl0ZXJhbChjb25zdCBTdHJpbmcmIHRleHQpCit2b2lk
IERhdGVUaW1lU3RyaW5nQnVpbGRlcjo6dmlzaXRMaXRlcmFsKFN0cmluZyYmIHRleHQpCiB7CiAg
ICAgQVNTRVJUKHRleHQubGVuZ3RoKCkpOwotICAgIG1fYnVpbGRlci5hcHBlbmQodGV4dCk7Cisg
ICAgbV9idWlsZGVyLmFwcGVuZChXVEZNb3ZlKHRleHQpKTsKIH0KIAogU3RyaW5nIERhdGVUaW1l
U3RyaW5nQnVpbGRlcjo6dG9TdHJpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RSZWZFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5j
cHAKaW5kZXggYWFkYWM5OWU1MDU5YWRlZDU0MjllYmEzZmY0ZTk1MWJiNjZjNGFmOC4uODAzMGQ1
M2EyODhlZDllNDA5ZWUwZmM2M2VmNDMwMDMxZjk3MDBlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VFJlZkVsZW1lbnQuY3BwCkBAIC0xNDUsMTAgKzE0NSwxMCBAQCB2b2lkIFNWR1RSZWZFbGVtZW50
Ojp1cGRhdGVSZWZlcmVuY2VkVGV4dChFbGVtZW50KiB0YXJnZXQpCiAgICAgQVNTRVJUKHJvb3Qp
OwogICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6RXZlbnRBbGxvd2VkU2NvcGUgYWxsb3dlZFNj
b3BlKCpyb290KTsKICAgICBpZiAoIXJvb3QtPmZpcnN0Q2hpbGQoKSkKLSAgICAgICAgcm9vdC0+
YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50KCksIHRleHRDb250ZW50KSk7CisgICAg
ICAgIHJvb3QtPmFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVudCgpLCBXVEZNb3ZlKHRl
eHRDb250ZW50KSkpOwogICAgIGVsc2UgewogICAgICAgICBBU1NFUlQocm9vdC0+Zmlyc3RDaGls
ZCgpLT5pc1RleHROb2RlKCkpOwotICAgICAgICByb290LT5maXJzdENoaWxkKCktPnNldFRleHRD
b250ZW50KHRleHRDb250ZW50KTsKKyAgICAgICAgcm9vdC0+Zmlyc3RDaGlsZCgpLT5zZXRUZXh0
Q29udGVudChXVEZNb3ZlKHRleHRDb250ZW50KSk7CiAgICAgfQogfQogCkBAIC0xNTcsMTIgKzE1
NywxMCBAQCB2b2lkIFNWR1RSZWZFbGVtZW50OjpkZXRhY2hUYXJnZXQoKQogICAgIC8vIFJlbW92
ZSBhY3RpdmUgbGlzdGVuZXJzIGFuZCBjbGVhciB0aGUgdGV4dCBjb250ZW50LgogICAgIG1fdGFy
Z2V0TGlzdGVuZXItPmRldGFjaCgpOwogCi0gICAgU3RyaW5nIGVtcHR5Q29udGVudDsKLQogICAg
IEFTU0VSVChzaGFkb3dSb290KCkpOwogICAgIFJlZlB0ciBjb250YWluZXIgPSBzaGFkb3dSb290
KCktPmZpcnN0Q2hpbGQoKTsKICAgICBpZiAoY29udGFpbmVyKQotICAgICAgICBjb250YWluZXIt
PnNldFRleHRDb250ZW50KGVtcHR5Q29udGVudCk7CisgICAgICAgIGNvbnRhaW5lci0+c2V0VGV4
dENvbnRlbnQoU3RyaW5nIHsgfSk7CiAKICAgICBpZiAoIWlzQ29ubmVjdGVkKCkpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuY3BwIGIv
U291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5jcHAKaW5kZXggZWY0Y2RlYWJkZTQ5ZGVjNDA0
MmE2ZjgzMjUwYjZlMmY3NzI2MDE1NS4uN2EwMmMxOGI5NmNiNGVmODQwZjFhZDJmZjRlZTIwOTc0
YmMyYmEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgdm9p
ZCBYTUxFcnJvcnM6OmFwcGVuZEVycm9yTWVzc2FnZShBU0NJSUxpdGVyYWwgdHlwZVN0cmluZywg
VGV4dFBvc2l0aW9uIHBvc2l0aW8KICAgICBtX2Vycm9yTWVzc2FnZXMuYXBwZW5kKHR5cGVTdHJp
bmcsICIgb24gbGluZSAiLCBwb3NpdGlvbi5tX2xpbmUub25lQmFzZWRJbnQoKSwgIiBhdCBjb2x1
bW4gIiwgcG9zaXRpb24ubV9jb2x1bW4ub25lQmFzZWRJbnQoKSwgIjogIiwgbWVzc2FnZSk7CiB9
CiAKLXN0YXRpYyBpbmxpbmUgUmVmPEVsZW1lbnQ+IGNyZWF0ZVhIVE1MUGFyc2VyRXJyb3JIZWFk
ZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZXMpCitzdGF0
aWMgaW5saW5lIFJlZjxFbGVtZW50PiBjcmVhdGVYSFRNTFBhcnNlckVycm9ySGVhZGVyKERvY3Vt
ZW50JiBkb2N1bWVudCwgU3RyaW5nJiYgZXJyb3JNZXNzYWdlcykKIHsKICAgICBSZWY8RWxlbWVu
dD4gcmVwb3J0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoUXVhbGlmaWVkTmFtZShu
dWxsQXRvbSgpLCAicGFyc2VyZXJyb3IiX3MsIHhodG1sTmFtZXNwYWNlVVJJKSwgdHJ1ZSk7CiAK
QEAgLTk5LDcgKzk5LDcgQEAgc3RhdGljIGlubGluZSBSZWY8RWxlbWVudD4gY3JlYXRlWEhUTUxQ
YXJzZXJFcnJvckhlYWRlcihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnMKICAgICBmaXhlZC0+cGFy
c2VyU2V0QXR0cmlidXRlcyhmaXhlZEF0dHJpYnV0ZXMpOwogICAgIHJlcG9ydEVsZW1lbnQtPnBh
cnNlckFwcGVuZENoaWxkKGZpeGVkKTsKIAotICAgIGZpeGVkLT5wYXJzZXJBcHBlbmRDaGlsZChU
ZXh0OjpjcmVhdGUoZG9jdW1lbnQsIGVycm9yTWVzc2FnZXMpKTsKKyAgICBmaXhlZC0+cGFyc2Vy
QXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50LCBXVEZNb3ZlKGVycm9yTWVzc2FnZXMp
KSk7CiAKICAgICBoMyA9IEhUTUxIZWFkaW5nRWxlbWVudDo6Y3JlYXRlKGgzVGFnLCBkb2N1bWVu
dCk7CiAgICAgcmVwb3J0RWxlbWVudC0+cGFyc2VyQXBwZW5kQ2hpbGQoaDMpOwpAQCAtMTQyLDgg
KzE0Miw3IEBAIHZvaWQgWE1MRXJyb3JzOjppbnNlcnRFcnJvck1lc3NhZ2VCbG9jaygpCiAgICAg
ICAgIGRvY3VtZW50RWxlbWVudCA9IFdURk1vdmUoYm9keSk7CiAgICAgfQogCi0gICAgU3RyaW5n
IGVycm9yTWVzc2FnZXMgPSBtX2Vycm9yTWVzc2FnZXMudG9TdHJpbmcoKTsKLSAgICBhdXRvIHJl
cG9ydEVsZW1lbnQgPSBjcmVhdGVYSFRNTFBhcnNlckVycm9ySGVhZGVyKG1fZG9jdW1lbnQsIGVy
cm9yTWVzc2FnZXMpOworICAgIGF1dG8gcmVwb3J0RWxlbWVudCA9IGNyZWF0ZVhIVE1MUGFyc2Vy
RXJyb3JIZWFkZXIobV9kb2N1bWVudCwgbV9lcnJvck1lc3NhZ2VzLnRvU3RyaW5nKCkpOwogCiAj
aWYgRU5BQkxFKFhTTFQpCiAgICAgaWYgKG1fZG9jdW1lbnQudHJhbnNmb3JtU291cmNlRG9jdW1l
bnQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCmluZGV4IDAyZWU5OTBjZTA3
ZGEwYmYzOTMwNGFiMWRiNzJhZTA3NGUxYzFhNTIuLmE2YWQxMWI3NzIxN2U3Nzg5MTI0NmRiOWNm
YWNiNTViNmM3YWVlODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxUcmVlVmll
d2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAKQEAgLTU4
LDcgKzU4LDcgQEAgdm9pZCBYTUxUcmVlVmlld2VyOjp0cmFuc2Zvcm1Eb2N1bWVudFRvVHJlZVZp
ZXcoKQogICAgIG1fZG9jdW1lbnQuZnJhbWUoKS0+c2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4
Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKEF0b21TdHJpbmcoInByZXBhcmVXZWJLaXRYTUxWaWV3
ZXIoJ1RoaXMgWE1MIGZpbGUgZG9lcyBub3QgYXBwZWFyIHRvIGhhdmUgYW55IHN0eWxlIGluZm9y
bWF0aW9uIGFzc29jaWF0ZWQgd2l0aCBpdC4gVGhlIGRvY3VtZW50IHRyZWUgaXMgc2hvd24gYmVs
b3cuJyk7Il9zKSkpOwogCiAgICAgU3RyaW5nIGNzc1N0cmluZyA9IFN0cmluZ0ltcGw6OmNyZWF0
ZVdpdGhvdXRDb3B5aW5nKFhNTFZpZXdlcl9jc3MsIHNpemVvZihYTUxWaWV3ZXJfY3NzKSk7Ci0g
ICAgYXV0byB0ZXh0ID0gbV9kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3NTdHJpbmcpOworICAg
IGF1dG8gdGV4dCA9IG1fZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoV1RGTW92ZShjc3NTdHJpbmcp
KTsKICAgICBtX2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKFN0cmluZygieG1sLXZpZXdlci1zdHls
ZSJfcykpLT5hcHBlbmRDaGlsZCh0ZXh0KTsKICAgICBtX2RvY3VtZW50LnN0eWxlU2NvcGUoKS5k
aWRDaGFuZ2VBY3RpdmVTdHlsZVNoZWV0Q2FuZGlkYXRlcygpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hT
TFRQcm9jZXNzb3IuY3BwCmluZGV4IGJlNThkNmY3NDQxY2QwODNiMjMyYTRjZDQ1ZDQwZTE0ZjQ4
YTViYTEuLmI0NWFjMTVjNjI2Y2I4M2I4NjJiZTViYWRkZDY4NGRhNDlkNjE2NmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4gWFNMVFByb2Nlc3Nvcjo6dHJhbnNmb3JtVG9GcmFnbWVudChOb2RlJiBz
b3VyY2VOb2RlLCBEbwogCiAgICAgaWYgKCF0cmFuc2Zvcm1Ub1N0cmluZyhzb3VyY2VOb2RlLCBy
ZXN1bHRNSU1FVHlwZSwgcmVzdWx0U3RyaW5nLCByZXN1bHRFbmNvZGluZykpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZvclRyYW5zZm9ybVRvRnJh
Z21lbnQob3V0cHV0RG9jdW1lbnQsIHJlc3VsdFN0cmluZywgcmVzdWx0TUlNRVR5cGUpOworICAg
IHJldHVybiBjcmVhdGVGcmFnbWVudEZvclRyYW5zZm9ybVRvRnJhZ21lbnQob3V0cHV0RG9jdW1l
bnQsIFdURk1vdmUocmVzdWx0U3RyaW5nKSwgV1RGTW92ZShyZXN1bHRNSU1FVHlwZSkpOwogfQog
CiB2b2lkIFhTTFRQcm9jZXNzb3I6OnNldFBhcmFtZXRlcihjb25zdCBTdHJpbmcmIC8qbmFtZXNw
YWNlVVJJKi8sIGNvbnN0IFN0cmluZyYgbG9jYWxOYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAppbmRl
eCAxYWI4YTM1MjRhNmNkMGY5M2ZjNjVmMWJmODFiNWQ3MzIwZWMxNjdkLi44NTRlMjc2ZWU4YjUy
YzE1MzliYzBjNDQyYjg1ZGQ5OThkNjAwZTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94
bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
cGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgWE1M
RG9jdW1lbnRQYXJzZXI6OmNyZWF0ZUxlYWZUZXh0Tm9kZSgpCiAKICAgICBBU1NFUlQobV9idWZm
ZXJlZFRleHQuc2l6ZSgpID09IDApOwogICAgIEFTU0VSVCghbV9sZWFmVGV4dE5vZGUpOwotICAg
IG1fbGVhZlRleHROb2RlID0gVGV4dDo6Y3JlYXRlKG1fY3VycmVudE5vZGUtPmRvY3VtZW50KCks
IGVtcHR5U3RyaW5nKCkpOworICAgIG1fbGVhZlRleHROb2RlID0gVGV4dDo6Y3JlYXRlKG1fY3Vy
cmVudE5vZGUtPmRvY3VtZW50KCksIFN0cmluZyB7IGVtcHR5U3RyaW5nKCkgfSk7CiAgICAgbV9j
dXJyZW50Tm9kZS0+cGFyc2VyQXBwZW5kQ2hpbGQoKm1fbGVhZlRleHROb2RlKTsKIH0KIApAQCAt
Mjk2LDcgKzI5Niw3IEBAIGJvb2wgWE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlRG9jdW1lbnRGcmFn
bWVudChjb25zdCBTdHJpbmcmIGNodW5rLCBEb2N1bWVudEZyYWdtCiAgICAgLy8gaHR0cDovL3d3
dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLXho
dG1sLXN5bnRheC5odG1sI3htbC1mcmFnbWVudC1wYXJzaW5nLWFsZ29yaXRobQogICAgIC8vIEZv
ciBub3cgd2UgaGF2ZSBhIGhhY2sgZm9yIHNjcmlwdC9zdHlsZSBpbm5lckhUTUwgc3VwcG9ydDoK
ICAgICBpZiAoY29udGV4dEVsZW1lbnQgJiYgKGNvbnRleHRFbGVtZW50LT5oYXNMb2NhbE5hbWUo
SFRNTE5hbWVzOjpzY3JpcHRUYWctPmxvY2FsTmFtZSgpKSB8fCBjb250ZXh0RWxlbWVudC0+aGFz
TG9jYWxOYW1lKEhUTUxOYW1lczo6c3R5bGVUYWctPmxvY2FsTmFtZSgpKSkpIHsKLSAgICAgICAg
ZnJhZ21lbnQucGFyc2VyQXBwZW5kQ2hpbGQoZnJhZ21lbnQuZG9jdW1lbnQoKS5jcmVhdGVUZXh0
Tm9kZShjaHVuaykpOworICAgICAgICBmcmFnbWVudC5wYXJzZXJBcHBlbmRDaGlsZChmcmFnbWVu
dC5kb2N1bWVudCgpLmNyZWF0ZVRleHROb2RlKFN0cmluZyB7IGNodW5rIH0pKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NSW1wbGVtZW50YXRpb24u
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9N
L1dlYktpdERPTURPTUltcGxlbWVudGF0aW9uLmNwcAppbmRleCBiZjhjNDQyZTNmMTkxZDJmY2Qz
YjdlZTViNzJmOTdlYWY4MGQ1NmVjLi5hZjhiNTE4ODgwOGQ3MDcyMjNlNGQ3MThiZmUzMDBkYWQ1
MzU5NThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NSW1wbGVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01E
T01JbXBsZW1lbnRhdGlvbi5jcHAKQEAgLTE3OSw3ICsxNzksNyBAQCBXZWJLaXRET01IVE1MRG9j
dW1lbnQqIHdlYmtpdF9kb21fZG9tX2ltcGxlbWVudGF0aW9uX2NyZWF0ZV9odG1sX2RvY3VtZW50
KFdlYktpdAogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHRpdGxlLCAwKTsKICAgICBXZWJDb3Jl
OjpET01JbXBsZW1lbnRhdGlvbiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXVEY6
OlN0cmluZyBjb252ZXJ0ZWRUaXRsZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh0aXRsZSk7Ci0g
ICAgUmVmUHRyPFdlYkNvcmU6OkhUTUxEb2N1bWVudD4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0
UHRyKGl0ZW0tPmNyZWF0ZUhUTUxEb2N1bWVudChjb252ZXJ0ZWRUaXRsZSkpOworICAgIFJlZlB0
cjxXZWJDb3JlOjpIVE1MRG9jdW1lbnQ+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVt
LT5jcmVhdGVIVE1MRG9jdW1lbnQoV1RGTW92ZShjb252ZXJ0ZWRUaXRsZSkpKTsKICAgICByZXR1
cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRE
T01Eb2N1bWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnRHdGsuY3BwCmluZGV4IGE5Y2RhYzljMDkx
MTRlMmQxMzYyMjNhOWE3MjVlZmVhYzU3YWE4YjcuLjRkNzVjMTliMjE4MzE0YWVjYTM0MjVhMTMw
NmIwNTExYjgzNGI3YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Eb2N1bWVudEd0ay5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TURvY3VtZW50R3RrLmNwcApAQCAtOTA1LDcgKzkwNSw3IEBAIFdlYktpdERPTVRleHQqIHdlYmtp
dF9kb21fZG9jdW1lbnRfY3JlYXRlX3RleHRfbm9kZShXZWJLaXRET01Eb2N1bWVudCogc2VsZiwg
Y29uCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoZGF0YSwgMCk7CiAgICAgV2ViQ29yZTo6RG9j
dW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV1RGOjpTdHJpbmcgY29udmVy
dGVkRGF0YSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChkYXRhKTsKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6VGV4dD4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPmNyZWF0ZVRleHROb2Rl
KGNvbnZlcnRlZERhdGEpKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6VGV4dD4gZ29iamVjdFJlc3Vs
dCA9IFdURjo6Z2V0UHRyKGl0ZW0tPmNyZWF0ZVRleHROb2RlKFdURk1vdmUoY29udmVydGVkRGF0
YSkpKTsKICAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7CiB9CiAK
QEAgLTkxNiw3ICs5MTYsNyBAQCBXZWJLaXRET01Db21tZW50KiB3ZWJraXRfZG9tX2RvY3VtZW50
X2NyZWF0ZV9jb21tZW50KFdlYktpdERPTURvY3VtZW50KiBzZWxmLCBjbwogICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKGRhdGEsIDApOwogICAgIFdlYkNvcmU6OkRvY3VtZW50KiBpdGVtID0gV2Vi
S2l0Ojpjb3JlKHNlbGYpOwogICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZERhdGEgPSBXVEY6OlN0
cmluZzo6ZnJvbVVURjgoZGF0YSk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkNvbW1lbnQ+IGdvYmpl
Y3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT5jcmVhdGVDb21tZW50KGNvbnZlcnRlZERhdGEp
KTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29tbWVudD4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0
UHRyKGl0ZW0tPmNyZWF0ZUNvbW1lbnQoV1RGTW92ZShjb252ZXJ0ZWREYXRhKSkpOwogICAgIHJl
dHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKIH0KIApAQCAtOTI3LDggKzky
Nyw3IEBAIFdlYktpdERPTUNEQVRBU2VjdGlvbiogd2Via2l0X2RvbV9kb2N1bWVudF9jcmVhdGVf
Y2RhdGFfc2VjdGlvbihXZWJLaXRET01Eb2N1bWVuCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
ZGF0YSwgMCk7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoIWVycm9yIHx8ICEqZXJyb3IsIDAp
OwogICAgIFdlYkNvcmU6OkRvY3VtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAg
IFdURjo6U3RyaW5nIGNvbnZlcnRlZERhdGEgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgoZGF0YSk7
Ci0gICAgYXV0byByZXN1bHQgPSBpdGVtLT5jcmVhdGVDREFUQVNlY3Rpb24oY29udmVydGVkRGF0
YSk7CisgICAgYXV0byByZXN1bHQgPSBpdGVtLT5jcmVhdGVDREFUQVNlY3Rpb24oV1RGOjpTdHJp
bmc6OmZyb21VVEY4KGRhdGEpKTsKICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAg
ICAgICAgIGF1dG8gZGVzY3JpcHRpb24gPSBXZWJDb3JlOjpET01FeGNlcHRpb246OmRlc2NyaXB0
aW9uKHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpKTsKICAgICAgICAgZ19zZXRfZXJy
b3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBkZXNj
cmlwdGlvbi5sZWdhY3lDb2RlLCBkZXNjcmlwdGlvbi5uYW1lKTsKQEAgLTk0Niw4ICs5NDUsNyBA
QCBXZWJLaXRET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24qIHdlYmtpdF9kb21fZG9jdW1lbnRfY3Jl
YXRlX3Byb2Nlc3NpbmdfaW5zdHJ1Y3RpbwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKCFlcnJv
ciB8fCAhKmVycm9yLCAwKTsKICAgICBXZWJDb3JlOjpEb2N1bWVudCogaXRlbSA9IFdlYktpdDo6
Y29yZShzZWxmKTsKICAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRUYXJnZXQgPSBXVEY6OlN0cmlu
Zzo6ZnJvbVVURjgodGFyZ2V0KTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWREYXRhID0gV1RG
OjpTdHJpbmc6OmZyb21VVEY4KGRhdGEpOwotICAgIGF1dG8gcmVzdWx0ID0gaXRlbS0+Y3JlYXRl
UHJvY2Vzc2luZ0luc3RydWN0aW9uKGNvbnZlcnRlZFRhcmdldCwgY29udmVydGVkRGF0YSk7Cisg
ICAgYXV0byByZXN1bHQgPSBpdGVtLT5jcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oY29udmVy
dGVkVGFyZ2V0LCBXVEY6OlN0cmluZzo6ZnJvbVVURjgoZGF0YSkpOwogICAgIGlmIChyZXN1bHQu
aGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgYXV0byBkZXNjcmlwdGlvbiA9IFdlYkNvcmU6OkRP
TUV4Y2VwdGlvbjo6ZGVzY3JpcHRpb24ocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCkp
OwogICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBnX3F1YXJrX2Zyb21fc3RyaW5n
KCJXRUJLSVRfRE9NIiksIGRlc2NyaXB0aW9uLmxlZ2FjeUNvZGUsIGRlc2NyaXB0aW9uLm5hbWUp
OwpAQCAtMTUzMiw4ICsxNTMwLDcgQEAgdm9pZCB3ZWJraXRfZG9tX2RvY3VtZW50X3NldF90aXRs
ZShXZWJLaXRET01Eb2N1bWVudCogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKQogICAgIGdfcmV0
dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19ET0NVTUVOVChzZWxmKSk7CiAgICAgZ19yZXR1cm5f
aWZfZmFpbCh2YWx1ZSk7CiAgICAgV2ViQ29yZTo6RG9jdW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNv
cmUoc2VsZik7Ci0gICAgV1RGOjpTdHJpbmcgY29udmVydGVkVmFsdWUgPSBXVEY6OlN0cmluZzo6
ZnJvbVVURjgodmFsdWUpOwotICAgIGl0ZW0tPnNldFRpdGxlKGNvbnZlcnRlZFZhbHVlKTsKKyAg
ICBpdGVtLT5zZXRUaXRsZShXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpKTsKIH0KIAogZ2No
YXIqIHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X2RpcihXZWJLaXRET01Eb2N1bWVudCogc2VsZikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL0RPTS9XZWJLaXRET01FbGVtZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01FbGVtZW50R3RrLmNwcAppbmRl
eCA0ZDEyNjU1NTEwYzI0NDBjZWE2NDBkYjI1MTUzODFlNmNiNmVlZDg1Li40NjRhMGU1ZDlkYjQ2
MmEyYjRkZDM5MzA2ZDRkNWExMTdiNzE5MTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRWxlbWVudEd0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
RE9NL1dlYktpdERPTUVsZW1lbnRHdGsuY3BwCkBAIC05NDMsOSArOTQzLDcgQEAgdm9pZCB3ZWJr
aXRfZG9tX2VsZW1lbnRfaW5zZXJ0X2FkamFjZW50X3RleHQoV2ViS2l0RE9NRWxlbWVudCogc2Vs
ZiwgY29uc3QgZ2NoYXIKICAgICBnX3JldHVybl9pZl9mYWlsKHRleHQpOwogICAgIGdfcmV0dXJu
X2lmX2ZhaWwoIWVycm9yIHx8ICEqZXJyb3IpOwogICAgIFdlYkNvcmU6OkVsZW1lbnQqIGl0ZW0g
PSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV1RGOjpTdHJpbmcgY29udmVydGVkV2hlcmUgPSBX
VEY6OlN0cmluZzo6ZnJvbVVURjgod2hlcmUpOwotICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFRl
eHQgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodGV4dCk7Ci0gICAgYXV0byByZXN1bHQgPSBpdGVt
LT5pbnNlcnRBZGphY2VudFRleHQoY29udmVydGVkV2hlcmUsIGNvbnZlcnRlZFRleHQpOworICAg
IGF1dG8gcmVzdWx0ID0gaXRlbS0+aW5zZXJ0QWRqYWNlbnRUZXh0KFdURjo6U3RyaW5nOjpmcm9t
VVRGOCh3aGVyZSksIFdURjo6U3RyaW5nOjpmcm9tVVRGOCh0ZXh0KSk7CiAgICAgaWYgKHJlc3Vs
dC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICBhdXRvIGRlc2NyaXB0aW9uID0gV2ViQ29yZTo6
RE9NRXhjZXB0aW9uOjpkZXNjcmlwdGlvbihyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUo
KSk7CiAgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJp
bmcoIldFQktJVF9ET00iKSwgZGVzY3JpcHRpb24ubGVnYWN5Q29kZSwgZGVzY3JpcHRpb24ubmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTEFuY2hvckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxBbmNo
b3JFbGVtZW50LmNwcAppbmRleCBhMmQ1YThhZGM5MmVlOWRhNGJlMjhmOTA0Y2FiZWNiNjlkZDZj
MmE1Li5iOTExMGJmYWYzOGJjNGY1YTU0NTdiOTNlNjg1ZTE1ZTViNTJmYjI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NSFRNTEFuY2hvckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MQW5jaG9yRWxlbWVudC5j
cHAKQEAgLTYyOCw4ICs2MjgsNyBAQCB2b2lkIHdlYmtpdF9kb21faHRtbF9hbmNob3JfZWxlbWVu
dF9zZXRfdGV4dChXZWJLaXRET01IVE1MQW5jaG9yRWxlbWVudCogc2VsZiwgYwogICAgIGdfcmV0
dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX0FOQ0hPUl9FTEVNRU5UKHNlbGYpKTsKICAg
ICBnX3JldHVybl9pZl9mYWlsKHZhbHVlKTsKICAgICBXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVu
dCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRW
YWx1ZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2YWx1ZSk7Ci0gICAgaXRlbS0+c2V0VGV4dChj
b252ZXJ0ZWRWYWx1ZSk7CisgICAgaXRlbS0+c2V0VGV4dChXVEY6OlN0cmluZzo6ZnJvbVVURjgo
dmFsdWUpKTsKIH0KIAogZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9hbmNob3JfZWxlbWVudF9nZXRf
aHJlZihXZWJLaXRET01IVE1MQW5jaG9yRWxlbWVudCogc2VsZikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01I
VE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTEVsZW1lbnQuY3BwCmluZGV4IGFiYTg2MzM1NDRkMmJm
MWMxNmZjYzEzYTYyYTNlY2FkMmExMWRiZTEuLjM4ZDJkMTUyMDg1NTgzNmExMGE5ZGY0MzQyNjZj
MzlmYzVhMzVjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhU
TUxFbGVtZW50LmNwcApAQCAtNTU5LDcgKzU1OSw3IEBAIHZvaWQgd2Via2l0X2RvbV9odG1sX2Vs
ZW1lbnRfc2V0X2lubmVyX3RleHQoV2ViS2l0RE9NSFRNTEVsZW1lbnQqIHNlbGYsIGNvbnN0IGdj
CiAgICAgZ19yZXR1cm5faWZfZmFpbCghZXJyb3IgfHwgISplcnJvcik7CiAgICAgV2ViQ29yZTo6
SFRNTEVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV1RGOjpTdHJpbmcg
Y29udmVydGVkVmFsdWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpOwotICAgIGF1dG8g
cmVzdWx0ID0gaXRlbS0+c2V0SW5uZXJUZXh0KGNvbnZlcnRlZFZhbHVlKTsKKyAgICBhdXRvIHJl
c3VsdCA9IGl0ZW0tPnNldElubmVyVGV4dChXVEZNb3ZlKGNvbnZlcnRlZFZhbHVlKSk7CiAgICAg
aWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICBhdXRvIGRlc2NyaXB0aW9uID0g
V2ViQ29yZTo6RE9NRXhjZXB0aW9uOjpkZXNjcmlwdGlvbihyZXN1bHQucmVsZWFzZUV4Y2VwdGlv
bigpLmNvZGUoKSk7CiAgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtf
ZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZGVzY3JpcHRpb24ubGVnYWN5Q29kZSwgZGVzY3Jp
cHRpb24ubmFtZSk7CkBAIC01ODMsNyArNTgzLDcgQEAgdm9pZCB3ZWJraXRfZG9tX2h0bWxfZWxl
bWVudF9zZXRfb3V0ZXJfdGV4dChXZWJLaXRET01IVE1MRWxlbWVudCogc2VsZiwgY29uc3QgZ2MK
ICAgICBnX3JldHVybl9pZl9mYWlsKCFlcnJvciB8fCAhKmVycm9yKTsKICAgICBXZWJDb3JlOjpI
VE1MRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXVEY6OlN0cmluZyBj
b252ZXJ0ZWRWYWx1ZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2YWx1ZSk7Ci0gICAgYXV0byBy
ZXN1bHQgPSBpdGVtLT5zZXRPdXRlclRleHQoY29udmVydGVkVmFsdWUpOworICAgIGF1dG8gcmVz
dWx0ID0gaXRlbS0+c2V0T3V0ZXJUZXh0KFdURk1vdmUoY29udmVydGVkVmFsdWUpKTsKICAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgIGF1dG8gZGVzY3JpcHRpb24gPSBX
ZWJDb3JlOjpET01FeGNlcHRpb246OmRlc2NyaXB0aW9uKHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9u
KCkuY29kZSgpKTsKICAgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19m
cm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBkZXNjcmlwdGlvbi5sZWdhY3lDb2RlLCBkZXNjcmlw
dGlvbi5uYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
SFRNTFNjcmlwdEVsZW1lbnQuY3BwCmluZGV4IDYxOWRhZjU2N2ZkMjY1Y2UyYmI5MTE5Yzk1ODJh
OTdhNGMzYjkwZTMuLmQ2YzdmZThmYTQ1NDNiNTA5MWQ3NzA3YWZmMDlhM2UwMDI0ZjQwMDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9XZWJLaXRET01IVE1MU2NyaXB0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxTY3JpcHRF
bGVtZW50LmNwcApAQCAtMjY4LDggKzI2OCw3IEBAIHZvaWQgd2Via2l0X2RvbV9odG1sX3Njcmlw
dF9lbGVtZW50X3NldF90ZXh0KFdlYktpdERPTUhUTUxTY3JpcHRFbGVtZW50KiBzZWxmLCBjCiAg
ICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfU0NSSVBUX0VMRU1FTlQoc2Vs
ZikpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwodmFsdWUpOwogICAgIFdlYkNvcmU6OkhUTUxTY3Jp
cHRFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFdURjo6U3RyaW5nIGNv
bnZlcnRlZFZhbHVlID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKTsKLSAgICBpdGVtLT5z
ZXRUZXh0KGNvbnZlcnRlZFZhbHVlKTsKKyAgICBpdGVtLT5zZXRUZXh0KFdURjo6U3RyaW5nOjpm
cm9tVVRGOCh2YWx1ZSkpOwogfQogCiBnY2hhciogd2Via2l0X2RvbV9odG1sX3NjcmlwdF9lbGVt
ZW50X2dldF9odG1sX2ZvcihXZWJLaXRET01IVE1MU2NyaXB0RWxlbWVudCogc2VsZikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9XZWJLaXRET01IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MVGV4dEFyZWFFbGVt
ZW50LmNwcAppbmRleCA0NTdhNjFjZGM4MmM5MTk0NTQxYjYxMGQ5NDE3YmIzYjM2ZjYxMTk4Li5m
M2ExNDVkYWUxZmRkMjlmMzE2ODA2MzAzNDE1MDhkMTA1Y2JmYzhmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
SFRNTFRleHRBcmVhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxUZXh0QXJlYUVsZW1lbnQuY3Bw
CkBAIC01MDMsOCArNTAzLDcgQEAgdm9pZCB3ZWJraXRfZG9tX2h0bWxfdGV4dF9hcmVhX2VsZW1l
bnRfc2V0X2RlZmF1bHRfdmFsdWUoV2ViS2l0RE9NSFRNTFRleHRBcmVhRWwKICAgICBnX3JldHVy
bl9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9URVhUX0FSRUFfRUxFTUVOVChzZWxmKSk7CiAg
ICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7CiAgICAgV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxl
bWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0
ZWRWYWx1ZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2YWx1ZSk7Ci0gICAgaXRlbS0+c2V0RGVm
YXVsdFZhbHVlKGNvbnZlcnRlZFZhbHVlKTsKKyAgICBpdGVtLT5zZXREZWZhdWx0VmFsdWUoV1RG
OjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKSk7CiB9CiAKIGdjaGFyKiB3ZWJraXRfZG9tX2h0bWxf
dGV4dF9hcmVhX2VsZW1lbnRfZ2V0X3ZhbHVlKFdlYktpdERPTUhUTUxUZXh0QXJlYUVsZW1lbnQq
IHNlbGYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTFRpdGxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTFRp
dGxlRWxlbWVudC5jcHAKaW5kZXggOTY3MzFkM2Y3Y2M0YTMzMjFiN2NkNDRjODU2MmU1Y2FhNGI0
MzU1NS4uMDcyZDYxNjQxMWM0NTZkY2VmM2Q4NmVhMTU0NWM5ZDcxY2E3ODYyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dl
YktpdERPTUhUTUxUaXRsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MVGl0bGVFbGVtZW50LmNw
cApAQCAtMTY1LDggKzE2NSw3IEBAIHZvaWQgd2Via2l0X2RvbV9odG1sX3RpdGxlX2VsZW1lbnRf
c2V0X3RleHQoV2ViS2l0RE9NSFRNTFRpdGxlRWxlbWVudCogc2VsZiwgY29uCiAgICAgZ19yZXR1
cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfVElUTEVfRUxFTUVOVChzZWxmKSk7CiAgICAg
Z19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7CiAgICAgV2ViQ29yZTo6SFRNTFRpdGxlRWxlbWVudCog
aXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRWYWx1
ZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2YWx1ZSk7Ci0gICAgaXRlbS0+c2V0VGV4dChjb252
ZXJ0ZWRWYWx1ZSk7CisgICAgaXRlbS0+c2V0VGV4dChXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFs
dWUpKTsKIH0KIAogR19HTlVDX0VORF9JR05PUkVfREVQUkVDQVRJT05TOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTU5vZGVHdGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL1dlYktpdERPTU5vZGVHdGsuY3BwCmluZGV4IDJjNDkzM2MyNTQ3MzA3YTgx
N2RhMTU0N2FjZjgwNjI4OTY3NWI5OTUuLjU1NDRhZGFjM2VjZmU0MzcyOGFmMGQ1N2FkYWI2ZmFl
MjU4YmZmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Ob2RlR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTm9kZUd0ay5j
cHAKQEAgLTYxMyw4ICs2MTMsNyBAQCB2b2lkIHdlYmtpdF9kb21fbm9kZV9zZXRfdGV4dF9jb250
ZW50KFdlYktpdERPTU5vZGUqIHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSwgRwogICAgIGdfcmV0
dXJuX2lmX2ZhaWwodmFsdWUpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoIWVycm9yIHx8ICEqZXJy
b3IpOwogICAgIFdlYkNvcmU6Ok5vZGUqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAg
V1RGOjpTdHJpbmcgY29udmVydGVkVmFsdWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUp
OwotICAgIGl0ZW0tPnNldFRleHRDb250ZW50KGNvbnZlcnRlZFZhbHVlKTsKKyAgICBpdGVtLT5z
ZXRUZXh0Q29udGVudChXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpKTsKIH0KIAogV2ViS2l0
RE9NRWxlbWVudCogd2Via2l0X2RvbV9ub2RlX2dldF9wYXJlbnRfZWxlbWVudChXZWJLaXRET01O
b2RlKiBzZWxmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0K
aW5kZXggODNlYmVkYjQ3OWMyNmE1Nzg3YTE4Y2UxMTM4NTZkOGNkNTYxZWFiMi4uZmVlZjQ1ZmIx
YWM1Y2YzYWIzZWRjNWUzODk5NTQxMGJkYWFkNzBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0xNjQwLDcgKzE2NDAsNyBAQCAtICh2b2lkKXNl
dFRleHQ6KE5TU3RyaW5nICopdGV4dCBhc0NoaWxkT2ZFbGVtZW50OihET01FbGVtZW50ICopZWxl
bWVudAogICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICByZXR1
cm47CiAgICAgICAgIAotICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRUZXh0QXNDaGlsZE9mRWxlbWVu
dCh0ZXh0LCAqY29yZShlbGVtZW50KSk7CisgICAgZnJhbWUtPmVkaXRvcigpLnNldFRleHRBc0No
aWxkT2ZFbGVtZW50KFN0cmluZyB7IHRleHQgfSwgKmNvcmUoZWxlbWVudCkpOwogfQogCiAtICh2
b2lkKXNldERpY3RhdGlvblBocmFzZXM6KE5TQXJyYXkgKilkaWN0YXRpb25QaHJhc2VzIG1ldGFk
YXRhOihpZCltZXRhZGF0YSBhc0NoaWxkT2ZFbGVtZW50OihET01FbGVtZW50ICopZWxlbWVudApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NSFRNTENsYXNzZXMuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NSFRNTENsYXNzZXMuY3BwCmluZGV4IDQ0ZjdiY2Nl
ZjZlM2ZiMjgzODhkMzYzOGRkNDMyNjZkYmU3YTU0OGEuLjI3YmMwNDgwNmYzYjcyNDE1MmEyYWRm
MjliMTU2ZTNhOWJiZTk2NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RP
TUhUTUxDbGFzc2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9ET01IVE1MQ2xh
c3Nlcy5jcHAKQEAgLTUzMCw4ICs1MzAsNyBAQCBIUkVTVUxUIERPTUhUTUxFbGVtZW50OjpzZXRJ
bm5lclRleHQoX0luXyBCU1RSIHRleHQpCiB7CiAgICAgQVNTRVJUKGlzPEhUTUxFbGVtZW50Piht
X2VsZW1lbnQpKTsKICAgICBIVE1MRWxlbWVudCogaHRtbEVsZW1lbnQgPSBkb3duY2FzdDxIVE1M
RWxlbWVudD4obV9lbGVtZW50KTsKLSAgICBXVEY6OlN0cmluZyB0ZXh0U3RyaW5nKHRleHQsIFN5
c1N0cmluZ0xlbih0ZXh0KSk7Ci0gICAgaHRtbEVsZW1lbnQtPnNldElubmVyVGV4dCh0ZXh0U3Ry
aW5nKTsKKyAgICBodG1sRWxlbWVudC0+c2V0SW5uZXJUZXh0KFdURjo6U3RyaW5nKHRleHQsIFN5
c1N0cmluZ0xlbih0ZXh0KSkpOwogICAgIHJldHVybiBTX09LOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457950</attachid>
            <date>2022-04-19 19:26:18 -0700</date>
            <delta_ts>2022-04-19 20:06:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239481-20220419192616.patch</filename>
            <type>text/plain</type>
            <size>104687</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGIxNDBiMjQwNjZjZjMyMDRiMDZhMDRj
YmQwM2E4NTQzNjdiNGJiZTkuLmY5Nzg0MmUxMDA0YzFmNDZkYmRlZmJhYTNkMTlmMTgyOTZmZGI4
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDQtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgbW9yZSByLXZhbHVlIHJlZmVyZW5jZXMgZm9yIFRl
eHQgLyBDaGFyYWN0ZXJEYXRhIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzOTQ4MQorCisgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWlu
aWcuCisKKyAgICAgICAgQWRkIGEgZnVuY3Rpb24gdG8gQXRvbVN0cmluZyB0byByZWxlYXNlIGl0
cyBTdHJpbmcuIFRoaXMgaXMgY29udmVuaWVudCB3aGVuIHlvdSBoYXZlIGFuIEF0b21TdHJpbmcK
KyAgICAgICAgYW5kIG5lZWQgYSBTdHJpbmcmJi4KKworICAgICAgICAqIHd0Zi90ZXh0L0F0b21T
dHJpbmcuaDoKKwogMjAyMi0wNC0xOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIEludHJvZHVjZSBtYWtlQXRvbVN0cmluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzI2ZmE0
YzAxYzkyZWMxNmU3MDMwNDQ0ODg3YTlmMDliNWQ4NDY1OC4uY2Y3MDg2ZGQxYzZjMWIzYWVlMzQy
NWNiYjAzMWM3YzUxNjVkZmM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2MSBAQAorMjAyMi0w
NC0xOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBtb3Jl
IHItdmFsdWUgcmVmZXJlbmNlcyBmb3IgVGV4dCAvIENoYXJhY3RlckRhdGEgY2xhc3NlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5NDgxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KKworICAgICAgICBVc2UgbW9yZSByLXZhbHVl
IHJlZmVyZW5jZXMgZm9yIFRleHQgLyBDaGFyYWN0ZXJEYXRhIGNsYXNzZXMsIHdoaWNoIGluZmVj
dGVkCisgICAgICAgIGEgbG90IG9mIHRoZSBzdXJyb3VuZGluZyBjb2RlLiBUaGlzIGF2b2lkcyBz
b21lIHJlZi1jb3VudGluZyBjaHVybi4KKworICAgICAgICAqIGRvbS9DREFUQVNlY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0RBVEFTZWN0aW9uOjpDREFUQVNlY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6Q0RBVEFTZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RB
VEFTZWN0aW9uOjpjbG9uZU5vZGVJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDREFUQVNl
Y3Rpb246OnZpcnR1YWxDcmVhdGUpOgorICAgICAgICAqIGRvbS9DREFUQVNlY3Rpb24uaDoKKyAg
ICAgICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVy
RGF0YTo6Q2hhcmFjdGVyRGF0YSk6CisgICAgICAgICogZG9tL0NvbW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29tbWVudDo6Q29tbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDb21tZW50
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29tbWVudDo6Y2xvbmVOb2RlSW50ZXJuYWwp
OgorICAgICAgICAqIGRvbS9Db21tZW50Lmg6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6c3RyaW5nUmVwbGFjZUFsbCk6
CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuaDoKKyAgICAgICAgKiBkb20vRE9NSW1wbGVt
ZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb246OmNyZWF0
ZUhUTUxEb2N1bWVudCk6CisgICAgICAgICogZG9tL0RPTUltcGxlbWVudGF0aW9uLmg6CisgICAg
ICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjcmVh
dGVUZXh0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlQ29tbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlQ0RBVEFTZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6c2V0VGl0bGUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5o
OgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
Omluc2VydEFkamFjZW50VGV4dCk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAg
KiBkb20vSW1hZ2VPdmVybGF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3ZlcmxheTo6
aW5zdGFsbEltYWdlT3ZlcmxheVN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VP
dmVybGF5Ojp1cGRhdGVTdWJ0cmVlKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlOjpjb252ZXJ0Tm9kZXNPclN0cmluZ3NJbnRvTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlOjpzZXRUZXh0Q29udGVudCk6CisgICAgICAgICogZG9tL05vZGUuaDoK
KyAgICAgICAgKiBkb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6UHJvY2Vzc2luZ0luc3RydWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y2xvbmVOb2RlSW50ZXJuYWwpOgorICAgICAg
ICAqIGRvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKiBkb20vVGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dDo6Y3JlYXRlRWRpdGluZ1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dDo6Y2xvbmVOb2Rl
SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dDo6dmlydHVhbENyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0OjpjcmVhdGVXaXRoTGVuZ3RoTGltaXQpOgorICAgICAgICAqIGRv
bS9UZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0OjpUZXh0KToKKyAgICAgICAgKiBkb20v
bWFjL0ltYWdlQ29udHJvbHNNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VDb250cm9s
c01hYzo6Y3JlYXRlSW1hZ2VDb250cm9scyk6CisgICAgICAgICogZWRpdGluZy9DcmVhdGVMaW5r
Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcmVhdGVMaW5rQ29tbWFuZDo6ZG9BcHBs
eSk6CisgICAgICAgICogZWRpdGluZy9FZGl0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZVRhYlNwYW5FbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmcuaDoKKyAgICAg
ICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnN0eWxl
Rm9yU2VsZWN0aW9uU3RhcnQpOgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29t
bWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjpkb0Fw
cGx5KToKKyAgICAgICAgKiBlZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc2VydFRleHRDb21tYW5kOjpwb3NpdGlvbkluc2lkZVRleHROb2RlKToKKyAg
ICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjphZGRTcGFjZXNGb3JTbWFydFJlcGxhY2Up
OgorICAgICAgICAqIGVkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnJlcGxhY2UpOgorICAg
ICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdt
ZW50RnJvbVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRGb3JUcmFuc2Zv
cm1Ub0ZyYWdtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5oOgorICAgICAgICAqIGh0
bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VE
YXRlQW5kVGltZUlucHV0VHlwZTo6dXBkYXRlSW5uZXJUZXh0VmFsdWUpOgorICAgICAgICAqIGh0
bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3Rv
cnlEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGVFBEaXJlY3RvcnlEb2N1bWVudFBh
cnNlcjo6YXBwZW5kRW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1l
bnRQYXJzZXI6OmNyZWF0ZVRERm9yRmlsZW5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6RlRQRGly
ZWN0b3J5RG9jdW1lbnRQYXJzZXI6OnBhcnNlQW5kQXBwZW5kT25lTGluZSk6CisgICAgICAgICog
aHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9y
RWxlbWVudDo6c2V0VGV4dCk6CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVs
ZW1lbnQ6OnNldElubmVyVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6c2V0
T3V0ZXJUZXh0KToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50Lmg6CisgICAgICAgICogaHRt
bC9IVE1MTWV0ZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZXRlckVsZW1l
bnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QpOgorICAgICAgICAqIGh0bWwvSFRNTE9wdGlv
bkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6OmNyZWF0
ZUZvckxlZ2FjeUZhY3RvcnlGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9u
RWxlbWVudDo6c2V0VGV4dCk6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE91dHB1dEVsZW1lbnQ6OnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPdXRw
dXRFbGVtZW50OjpzZXREZWZhdWx0VmFsdWUpOgorICAgICAgICAqIGh0bWwvSFRNTE91dHB1dEVs
ZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50OjpzZXRUZXh0KToKKyAgICAgICAgKiBodG1sL0hU
TUxTY3JpcHRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldFZhbHVlQ29tbW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldERlZmF1bHRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojp1cGRhdGVQbGFjZWhv
bGRlclRleHQpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oOgorICAgICAg
ICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldElubmVyVGV4dFZhbHVlKToKKyAgICAg
ICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9I
VE1MVGl0bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUaXRsZUVsZW1lbnQ6
OnNldFRleHQpOgorICAgICAgICAqIGh0bWwvSFRNTFRpdGxlRWxlbWVudC5oOgorICAgICAgICAq
IGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVs
ZElucHV0VHlwZTo6dXBkYXRlUGxhY2Vob2xkZXJUZXh0KToKKyAgICAgICAgKiBodG1sL3BhcnNl
ci9BdG9tSFRNTFRva2VuLmg6CisgICAgICAgIChXZWJDb3JlOjpBdG9tSFRNTFRva2VuOjpjb21t
ZW50KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0Q29tbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0Q29tbWVudE9uRG9j
dW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydENv
bW1lbnRPbkhUTUxIdG1sRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0
aW9uU2l0ZTo6aW5zZXJ0VGV4dE5vZGUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0RhdGVUaW1l
RWRpdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVFZGl0QnVpbGRlcjo6
dmlzaXRMaXRlcmFsKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRlVGltZUZpZWxkRWxlbWVudDo6dXBkYXRlVmlz
aWJsZVZhbHVlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OnJlYnVpbGREaXNwbGF5VHJlZSk6CisgICAgICAg
ICogaHRtbC90cmFjay9WVFRDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VlRUQ3VlOjpnZXRE
aXNwbGF5VHJlZSk6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViVlRUVHJlZUJ1aWxkZXI6OmJ1aWxkRnJvbVN0cmluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJWVFRUcmVlQnVpbGRlcjo6Y29uc3RydWN0VHJlZUZyb21Ub2tlbik6
CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpk
b2N1bWVudEZyYWdtZW50RnJvbURyYWdEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0Rh
dGVUaW1lRm9ybWF0Lmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRlVGltZVN0cmluZ0J1aWxkZXI6OnZpc2l0TGl0ZXJh
bCk6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1RSZWZFbGVtZW50Ojp1cGRhdGVSZWZlcmVuY2VkVGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdUUmVmRWxlbWVudDo6ZGV0YWNoVGFyZ2V0KToKKyAgICAgICAgKiB4bWwvWE1MRXJyb3Jz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6WE1MRXJyb3JzOjppbnNlcnRFcnJvck1lc3NhZ2VCbG9jayk6Cisg
ICAgICAgICogeG1sL1hNTFRyZWVWaWV3ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MVHJl
ZVZpZXdlcjo6dHJhbnNmb3JtRG9jdW1lbnRUb1RyZWVWaWV3KToKKyAgICAgICAgKiB4bWwvWFNM
VFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xUUHJvY2Vzc29yOjp0cmFuc2Zv
cm1Ub0ZyYWdtZW50KToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpjcmVhdGVMZWFmVGV4dE5v
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlRG9jdW1lbnRG
cmFnbWVudCk6CisKIDIwMjItMDQtMTkgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgRXZlbnRIYW5kbGVyIHNob3VsZCB1c2UgYSBXZWFrUHRyIGZvciBt
X3Jlc2l6ZUxheWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcu
aCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oCmluZGV4IGJmNGJlNGQ5OWNkN2M0
ZGU0ZWFkMDliNjQ3OWFmMTllYWY1MjFjZGMuLjBhZGY1MjIzYmI2MDI5YzNkZTk4OWM2ODMxNzQw
MTY2ZjA2YzcwNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oCkBAIC05Myw2ICs5Myw3IEBA
IHB1YmxpYzoKIAogICAgIG9wZXJhdG9yIGNvbnN0IFN0cmluZyYoKSBjb25zdCB7IHJldHVybiBt
X3N0cmluZzsgfQogICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9z
dHJpbmc7IH07CisgICAgU3RyaW5nIHJlbGVhc2VTdHJpbmcoKSB7IHJldHVybiBXVEZNb3ZlKG1f
c3RyaW5nKTsgfQogCiAgICAgLy8gRklYTUU6IFdoYXQgZ3VhcmFudGVlcyB0aGlzIGlzbid0IGEg
U3ltYm9sSW1wbCByYXRoZXIgdGhhbiBhbiBBdG9tU3RyaW5nSW1wbD8KICAgICBBdG9tU3RyaW5n
SW1wbCogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEF0b21TdHJpbmdJbXBsKj4o
bV9zdHJpbmcuaW1wbCgpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NEQVRB
U2VjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9uLmNwcAppbmRleCA3
NTRmNDgyODhmZTE5NmEzZDI4MmEyOTZkODc4ZDIzMzRkMzk3ODRiLi4yMDJkZDQ3MGYyMGQ3NjI3
ZjhlNGI1Mjg5MjJhYzJlMDFiODY2YjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q0RBVEFTZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9uLmNw
cApAQCAtMjksMTQgKzI5LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKENEQVRBU2VjdGlvbik7CiAKLWlubGluZSBDREFUQVNlY3Rpb246OkNE
QVRBU2VjdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZGF0YSkKLSAgICA6
IFRleHQoZG9jdW1lbnQsIGRhdGEsIENyZWF0ZVRleHQpCitpbmxpbmUgQ0RBVEFTZWN0aW9uOjpD
REFUQVNlY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmcmJiBkYXRhKQorICAgIDogVGV4
dChkb2N1bWVudCwgV1RGTW92ZShkYXRhKSwgQ3JlYXRlVGV4dCkKIHsKIH0KIAotUmVmPENEQVRB
U2VjdGlvbj4gQ0RBVEFTZWN0aW9uOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBT
dHJpbmcmIGRhdGEpCitSZWY8Q0RBVEFTZWN0aW9uPiBDREFUQVNlY3Rpb246OmNyZWF0ZShEb2N1
bWVudCYgZG9jdW1lbnQsIFN0cmluZyYmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ0RBVEFTZWN0aW9uKGRvY3VtZW50LCBkYXRhKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ0RBVEFTZWN0aW9uKGRvY3VtZW50LCBXVEZNb3ZlKGRhdGEpKSk7CiB9CiAKIFN0cmluZyBD
REFUQVNlY3Rpb246Om5vZGVOYW1lKCkgY29uc3QKQEAgLTUxLDcgKzUxLDcgQEAgTm9kZTo6Tm9k
ZVR5cGUgQ0RBVEFTZWN0aW9uOjpub2RlVHlwZSgpIGNvbnN0CiAKIFJlZjxOb2RlPiBDREFUQVNl
Y3Rpb246OmNsb25lTm9kZUludGVybmFsKERvY3VtZW50JiB0YXJnZXREb2N1bWVudCwgQ2xvbmlu
Z09wZXJhdGlvbikKIHsKLSAgICByZXR1cm4gY3JlYXRlKHRhcmdldERvY3VtZW50LCBkYXRhKCkp
OworICAgIHJldHVybiBjcmVhdGUodGFyZ2V0RG9jdW1lbnQsIFN0cmluZyB7IGRhdGEoKSB9KTsK
IH0KIAogYm9vbCBDREFUQVNlY3Rpb246OmNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNvbnN0
CkBAIC01OSw5ICs1OSw5IEBAIGJvb2wgQ0RBVEFTZWN0aW9uOjpjaGlsZFR5cGVBbGxvd2VkKE5v
ZGVUeXBlKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUmVmPFRleHQ+IENEQVRBU2Vj
dGlvbjo6dmlydHVhbENyZWF0ZShjb25zdCBTdHJpbmcmIGRhdGEpCitSZWY8VGV4dD4gQ0RBVEFT
ZWN0aW9uOjp2aXJ0dWFsQ3JlYXRlKFN0cmluZyYmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIGNyZWF0
ZShkb2N1bWVudCgpLCBkYXRhKTsKKyAgICByZXR1cm4gY3JlYXRlKGRvY3VtZW50KCksIFdURk1v
dmUoZGF0YSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ0RBVEFT
ZWN0aW9uLmgKaW5kZXggZDk0MDVjYWUzNjlhZDc4ZmZjNzNhOTM4M2JmN2IxYzYzOWFkMzI1NC4u
YTU5NjhjNDFkMmM4OTc1ZGQ1Y2U4NTA3MTgxOTM2YzRlMTg3NmEzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
REFUQVNlY3Rpb24uaApAQCAtMjksMTYgKzI5LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIENEQVRBU2VjdGlvbiBmaW5hbCA6IHB1YmxpYyBUZXh0IHsKICAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEKENEQVRBU2VjdGlvbik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDREFUQVNl
Y3Rpb24+IGNyZWF0ZShEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBSZWY8
Q0RBVEFTZWN0aW9uPiBjcmVhdGUoRG9jdW1lbnQmLCBTdHJpbmcmJik7CiAKIHByaXZhdGU6Ci0g
ICAgQ0RBVEFTZWN0aW9uKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJik7CisgICAgQ0RBVEFTZWN0
aW9uKERvY3VtZW50JiwgU3RyaW5nJiYpOwogCiAgICAgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgTm9kZVR5cGUgbm9kZVR5cGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBS
ZWY8Tm9kZT4gY2xvbmVOb2RlSW50ZXJuYWwoRG9jdW1lbnQmLCBDbG9uaW5nT3BlcmF0aW9uKSBv
dmVycmlkZTsKICAgICBib29sIGNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNvbnN0IG92ZXJy
aWRlOwotICAgIFJlZjxUZXh0PiB2aXJ0dWFsQ3JlYXRlKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRl
OworICAgIFJlZjxUZXh0PiB2aXJ0dWFsQ3JlYXRlKFN0cmluZyYmKSBvdmVycmlkZTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
aGFyYWN0ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5oCmluZGV4
IDAzMWFmNDllMmNhZWU0ZGQ3MzM4ZGJlMzBkMWE0ZDMxMzA4ZWY4OTYuLjUzYTRlYjk3M2IyMWM3
M2E4OTk1Y2YzMzk0ZTY2Zjc3ZDNlNGU3MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DaGFyYWN0ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEu
aApAQCAtNDUsOSArNDUsOSBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgcGFyc2VyQXBwZW5kRGF0
YShjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGhM
aW1pdCk7CiAKIHByb3RlY3RlZDoKLSAgICBDaGFyYWN0ZXJEYXRhKERvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUgPSBDcmVhdGVDaGFy
YWN0ZXJEYXRhKQorICAgIENoYXJhY3RlckRhdGEoRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmcm
JiB0ZXh0LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUgPSBDcmVhdGVDaGFyYWN0ZXJEYXRhKQogICAg
ICAgICA6IE5vZGUoZG9jdW1lbnQsIHR5cGUpCi0gICAgICAgICwgbV9kYXRhKCF0ZXh0LmlzTnVs
bCgpID8gdGV4dCA6IGVtcHR5U3RyaW5nKCkpCisgICAgICAgICwgbV9kYXRhKCF0ZXh0LmlzTnVs
bCgpID8gV1RGTW92ZSh0ZXh0KSA6IGVtcHR5U3RyaW5nKCkpCiAgICAgewogICAgICAgICBBU1NF
UlQodHlwZSA9PSBDcmVhdGVDaGFyYWN0ZXJEYXRhIHx8IHR5cGUgPT0gQ3JlYXRlVGV4dCB8fCB0
eXBlID09IENyZWF0ZUVkaXRpbmdUZXh0KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29tbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tbWVudC5jcHAKaW5k
ZXggOGEzZTMyZjc3MzkzNDkxZjI1MzIyMzA3ZGQxNjQ4ZmVjMTZlYmY5Yi4uYWY4ODc2YjE5MmY1
OTZiNjU0ODE2NzAyZDIxMjFhODdkZDZlODRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21tZW50LmNwcApAQCAt
MjksMTQgKzI5LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9D
QVRFRF9JTVBMKENvbW1lbnQpOwogCi1pbmxpbmUgQ29tbWVudDo6Q29tbWVudChEb2N1bWVudCYg
ZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4dCkKLSAgICA6IENoYXJhY3RlckRhdGEoZG9jdW1l
bnQsIHRleHQpCitpbmxpbmUgQ29tbWVudDo6Q29tbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIFN0
cmluZyYmIHRleHQpCisgICAgOiBDaGFyYWN0ZXJEYXRhKGRvY3VtZW50LCBXVEZNb3ZlKHRleHQp
KQogewogfQogCi1SZWY8Q29tbWVudD4gQ29tbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgU3RyaW5nJiB0ZXh0KQorUmVmPENvbW1lbnQ+IENvbW1lbnQ6OmNyZWF0ZShEb2N1
bWVudCYgZG9jdW1lbnQsIFN0cmluZyYmIHRleHQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ29tbWVudChkb2N1bWVudCwgdGV4dCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENv
bW1lbnQoZG9jdW1lbnQsIFdURk1vdmUodGV4dCkpKTsKIH0KIAogU3RyaW5nIENvbW1lbnQ6Om5v
ZGVOYW1lKCkgY29uc3QKQEAgLTUxLDcgKzUxLDcgQEAgTm9kZTo6Tm9kZVR5cGUgQ29tbWVudDo6
bm9kZVR5cGUoKSBjb25zdAogCiBSZWY8Tm9kZT4gQ29tbWVudDo6Y2xvbmVOb2RlSW50ZXJuYWwo
RG9jdW1lbnQmIHRhcmdldERvY3VtZW50LCBDbG9uaW5nT3BlcmF0aW9uKQogewotICAgIHJldHVy
biBjcmVhdGUodGFyZ2V0RG9jdW1lbnQsIGRhdGEoKSk7CisgICAgcmV0dXJuIGNyZWF0ZSh0YXJn
ZXREb2N1bWVudCwgU3RyaW5nIHsgZGF0YSgpIH0pOwogfQogCiBib29sIENvbW1lbnQ6OmNoaWxk
VHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29tbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQuaAppbmRleCBkNGMxZTk1
ZDU0YTY5MjUzMTBkNjA4OTA3Mjk1NjBmZDBkYWJjMjU1Li4yNzdkMmMyNjNiZWZlNjFjZWM5YmIw
NTYxNjk3MjA1NTJiNmQ1N2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21tZW50LmgKQEAgLTI5LDEwICsyOSwxMCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDb21tZW50IGZpbmFsIDogcHVibGljIENoYXJh
Y3RlckRhdGEgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQ29tbWVudCk7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxDb21tZW50PiBjcmVhdGUoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcm
KTsKKyAgICBzdGF0aWMgUmVmPENvbW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYsIFN0cmluZyYmKTsK
IAogcHJpdmF0ZToKLSAgICBDb21tZW50KERvY3VtZW50JiwgY29uc3QgU3RyaW5nJik7CisgICAg
Q29tbWVudChEb2N1bWVudCYsIFN0cmluZyYmKTsKIAogICAgIFN0cmluZyBub2RlTmFtZSgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggZDgyMTI3MWU4OGE3MTE4MGE1NGQ4
MGE5NzVhOWViMjA3NGIwMzZmOS4uZWUxM2E4OTNlYjZjZmYwNGZlNGJiM2FkZGMzMDZiMDcyZWE2
ZTk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtNzI1LDkgKzcyNSw5
IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6cmVwbGFjZUFsbChOb2RlKiBub2RlKQogfQogCiAvLyBo
dHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI3N0cmluZy1yZXBsYWNlLWFsbAotdm9pZCBDb250
YWluZXJOb2RlOjpzdHJpbmdSZXBsYWNlQWxsKGNvbnN0IFN0cmluZyYgc3RyaW5nKQordm9pZCBD
b250YWluZXJOb2RlOjpzdHJpbmdSZXBsYWNlQWxsKFN0cmluZyYmIHN0cmluZykKIHsKLSAgICBy
ZXBsYWNlQWxsKHN0cmluZy5pc0VtcHR5KCkgPyBudWxscHRyIDogZG9jdW1lbnQoKS5jcmVhdGVU
ZXh0Tm9kZShzdHJpbmcpLnB0cigpKTsKKyAgICByZXBsYWNlQWxsKHN0cmluZy5pc0VtcHR5KCkg
PyBudWxscHRyIDogZG9jdW1lbnQoKS5jcmVhdGVUZXh0Tm9kZShXVEZNb3ZlKHN0cmluZykpLnB0
cigpKTsKIH0KIAogaW5saW5lIHZvaWQgQ29udGFpbmVyTm9kZTo6cmVidWlsZFNWR0V4dGVuc2lv
bnNFbGVtZW50c0lmTmVjZXNzYXJ5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b250YWluZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCmluZGV4
IDgwODNkNDI2ZjAxZGZlNWM1NDhiMzFkYmQxNmNlZmFhNGU5MDU0YjAuLjExOTRlMzZhZGVlYWVh
ZDE3YjY4YTQxZjFkNmUzMjY2MDgzMzkzNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUu
aApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVwbGFj
ZUNoaWxkKE5vZGUmIG5ld0NoaWxkLCBOb2RlJiBvbGRDaGlsZCk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgRXhjZXB0aW9uT3I8dm9pZD4gcmVtb3ZlQ2hpbGQoTm9kZSYgY2hpbGQpOwogICAgIFdFQkNP
UkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IGFwcGVuZENoaWxkKE5vZGUmIG5ld0NoaWxkKTsK
LSAgICB2b2lkIHN0cmluZ1JlcGxhY2VBbGwoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzdHJp
bmdSZXBsYWNlQWxsKFN0cmluZyYmKTsKICAgICB2b2lkIHJlcGxhY2VBbGwoTm9kZSopOwogCiAg
ICAgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxDb250
YWluZXJOb2RlPihOb2RlOjpyb290Tm9kZSgpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBs
ZW1lbnRhdGlvbi5jcHAKaW5kZXggNTg0MzViYzNmY2FkM2NkYTc4OTcwYTIxMWU3NjJiZmNjZjAx
MmY3NS4uNjhkZGQ2YzkzMzY1ZTlhYzliZmRlNTcyOTI2ZjVlODZlM2U5YWQ4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCkBAIC0xMjMsMTQgKzEyMywxNCBAQCBS
ZWY8Q1NTU3R5bGVTaGVldD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZUNTU1N0eWxlU2hlZXQo
Y29uc3QgU3RyaW5nJiwgY29uc3QgUwogICAgIHJldHVybiBzaGVldDsKIH0KIAotUmVmPEhUTUxE
b2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZUhUTUxEb2N1bWVudChjb25zdCBTdHJp
bmcmIHRpdGxlKQorUmVmPEhUTUxEb2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZUhU
TUxEb2N1bWVudChTdHJpbmcmJiB0aXRsZSkKIHsKICAgICBhdXRvIGRvY3VtZW50ID0gSFRNTERv
Y3VtZW50OjpjcmVhdGUobnVsbHB0ciwgbV9kb2N1bWVudC5zZXR0aW5ncygpLCBVUkwoKSwgeyB9
KTsKICAgICBkb2N1bWVudC0+b3BlbigpOwogICAgIGRvY3VtZW50LT53cml0ZShudWxscHRyLCB7
ICI8IWRvY3R5cGUgaHRtbD48aHRtbD48aGVhZD48L2hlYWQ+PGJvZHk+PC9ib2R5PjwvaHRtbD4i
X3MgfSk7CiAgICAgaWYgKCF0aXRsZS5pc051bGwoKSkgewogICAgICAgICBhdXRvIHRpdGxlRWxl
bWVudCA9IEhUTUxUaXRsZUVsZW1lbnQ6OmNyZWF0ZSh0aXRsZVRhZywgZG9jdW1lbnQpOwotICAg
ICAgICB0aXRsZUVsZW1lbnQtPmFwcGVuZENoaWxkKGRvY3VtZW50LT5jcmVhdGVUZXh0Tm9kZSh0
aXRsZSkpOworICAgICAgICB0aXRsZUVsZW1lbnQtPmFwcGVuZENoaWxkKGRvY3VtZW50LT5jcmVh
dGVUZXh0Tm9kZShXVEZNb3ZlKHRpdGxlKSkpOwogICAgICAgICBBU1NFUlQoZG9jdW1lbnQtPmhl
YWQoKSk7CiAgICAgICAgIGRvY3VtZW50LT5oZWFkKCktPmFwcGVuZENoaWxkKHRpdGxlRWxlbWVu
dCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaAppbmRleCBlODll
MmZlNjM1ZjlhNzNmYjFhMmIwZjY0MWMwOTk0ODNkNTczMDY2Li4yNzJhNjRlY2E2YmQxMWFhNmYz
NTYwOGRmY2RiNmQxOTI5YTI4Zjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9N
SW1wbGVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRp
b24uaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNl
cHRpb25PcjxSZWY8RG9jdW1lbnRUeXBlPj4gY3JlYXRlRG9jdW1lbnRUeXBlKGNvbnN0IFN0cmlu
ZyYgcXVhbGlmaWVkTmFtZSwgY29uc3QgU3RyaW5nJiBwdWJsaWNJZCwgY29uc3QgU3RyaW5nJiBz
eXN0ZW1JZCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVmPFhNTERvY3VtZW50
Pj4gY3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmlu
ZyYgcXVhbGlmaWVkTmFtZSwgRG9jdW1lbnRUeXBlKik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVm
PEhUTUxEb2N1bWVudD4gY3JlYXRlSFRNTERvY3VtZW50KGNvbnN0IFN0cmluZyYgdGl0bGUpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxIVE1MRG9jdW1lbnQ+IGNyZWF0ZUhUTUxEb2N1bWVudChT
dHJpbmcmJiB0aXRsZSk7CiAgICAgc3RhdGljIGJvb2wgaGFzRmVhdHVyZSgpIHsgcmV0dXJuIHRy
dWU7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPENTU1N0eWxlU2hlZXQ+IGNyZWF0
ZUNTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBtZWRpYSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDZlMWRjNzEyODk2MzY5MDc3OWJjZjI0ZGQw
MWQwYzM5OGQ2ZmFkNWQuLjJjNDE1NWY2MWQwMDJiZjJmNmYwN2UxNmRhZDU4YmQzYWQ3Njk0YWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTA2OSwxNyArMTA2OSwxNyBAQCBSZWY8RG9j
dW1lbnRGcmFnbWVudD4gRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKQogICAgIHJl
dHVybiBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CiB9CiAKLVJlZjxUZXh0
PiBEb2N1bWVudDo6Y3JlYXRlVGV4dE5vZGUoY29uc3QgU3RyaW5nJiBkYXRhKQorUmVmPFRleHQ+
IERvY3VtZW50OjpjcmVhdGVUZXh0Tm9kZShTdHJpbmcmJiBkYXRhKQogewotICAgIHJldHVybiBU
ZXh0OjpjcmVhdGUoKnRoaXMsIGRhdGEpOworICAgIHJldHVybiBUZXh0OjpjcmVhdGUoKnRoaXMs
IFdURk1vdmUoZGF0YSkpOwogfQogCi1SZWY8Q29tbWVudD4gRG9jdW1lbnQ6OmNyZWF0ZUNvbW1l
bnQoY29uc3QgU3RyaW5nJiBkYXRhKQorUmVmPENvbW1lbnQ+IERvY3VtZW50OjpjcmVhdGVDb21t
ZW50KFN0cmluZyYmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIENvbW1lbnQ6OmNyZWF0ZSgqdGhpcywg
ZGF0YSk7CisgICAgcmV0dXJuIENvbW1lbnQ6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShkYXRhKSk7
CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxDREFUQVNlY3Rpb24+PiBEb2N1bWVudDo6Y3JlYXRlQ0RB
VEFTZWN0aW9uKGNvbnN0IFN0cmluZyYgZGF0YSkKK0V4Y2VwdGlvbk9yPFJlZjxDREFUQVNlY3Rp
b24+PiBEb2N1bWVudDo6Y3JlYXRlQ0RBVEFTZWN0aW9uKFN0cmluZyYmIGRhdGEpCiB7CiAgICAg
aWYgKGlzSFRNTERvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBw
b3J0ZWRFcnJvciB9OwpAQCAtMTA4NywxMCArMTA4NywxMCBAQCBFeGNlcHRpb25PcjxSZWY8Q0RB
VEFTZWN0aW9uPj4gRG9jdW1lbnQ6OmNyZWF0ZUNEQVRBU2VjdGlvbihjb25zdCBTdHJpbmcmIGRh
dGEpCiAgICAgaWYgKGRhdGEuY29udGFpbnMoIl1dPiIpKQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZENoYXJhY3RlckVycm9yIH07CiAKLSAgICByZXR1cm4gQ0RBVEFTZWN0aW9u
OjpjcmVhdGUoKnRoaXMsIGRhdGEpOworICAgIHJldHVybiBDREFUQVNlY3Rpb246OmNyZWF0ZSgq
dGhpcywgV1RGTW92ZShkYXRhKSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24+PiBEb2N1bWVudDo6Y3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uKGNvbnN0IFN0
cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIGRhdGEpCitFeGNlcHRpb25PcjxSZWY8UHJvY2Vz
c2luZ0luc3RydWN0aW9uPj4gRG9jdW1lbnQ6OmNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihT
dHJpbmcmJiB0YXJnZXQsIFN0cmluZyYmIGRhdGEpCiB7CiAgICAgaWYgKCFpc1ZhbGlkTmFtZSh0
YXJnZXQpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZENoYXJhY3RlckVycm9y
IH07CkBAIC0xMDk4LDEyICsxMDk4LDEyIEBAIEV4Y2VwdGlvbk9yPFJlZjxQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24+PiBEb2N1bWVudDo6Y3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uKGNvCiAgICAg
aWYgKGRhdGEuY29udGFpbnMoIj8+IikpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkQ2hhcmFjdGVyRXJyb3IgfTsKIAotICAgIHJldHVybiBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246
OmNyZWF0ZSgqdGhpcywgdGFyZ2V0LCBkYXRhKTsKKyAgICByZXR1cm4gUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUodGFyZ2V0KSwgV1RGTW92ZShkYXRhKSk7CiB9
CiAKLVJlZjxUZXh0PiBEb2N1bWVudDo6Y3JlYXRlRWRpdGluZ1RleHROb2RlKGNvbnN0IFN0cmlu
ZyYgdGV4dCkKK1JlZjxUZXh0PiBEb2N1bWVudDo6Y3JlYXRlRWRpdGluZ1RleHROb2RlKFN0cmlu
ZyYmIHRleHQpCiB7Ci0gICAgcmV0dXJuIFRleHQ6OmNyZWF0ZUVkaXRpbmdUZXh0KCp0aGlzLCB0
ZXh0KTsKKyAgICByZXR1cm4gVGV4dDo6Y3JlYXRlRWRpdGluZ1RleHQoKnRoaXMsIFdURk1vdmUo
dGV4dCkpOwogfQogCiBSZWY8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gRG9jdW1lbnQ6OmNyZWF0ZUNT
U1N0eWxlRGVjbGFyYXRpb24oKQpAQCAtMTczMSw3ICsxNzMxLDcgQEAgdm9pZCBEb2N1bWVudDo6
dXBkYXRlVGl0bGVGcm9tVGl0bGVFbGVtZW50KCkKICAgICB9CiB9CiAKLXZvaWQgRG9jdW1lbnQ6
OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCit2b2lkIERvY3VtZW50OjpzZXRUaXRsZShT
dHJpbmcmJiB0aXRsZSkKIHsKICAgICBSZWZQdHIgZWxlbWVudCA9IGRvY3VtZW50RWxlbWVudCgp
OwogICAgIGlmIChpczxTVkdTVkdFbGVtZW50PihlbGVtZW50KSkgewpAQCAtMTc0MSw3ICsxNzQx
LDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICAg
ICAgfQogICAgICAgICAvLyBpbnNlcnRCZWZvcmUgYWJvdmUgbWF5IGhhdmUgcmFuIHNjcmlwdHMg
d2hpY2ggcmVtb3ZlZCBtX3RpdGxlRWxlbWVudC4KICAgICAgICAgaWYgKG1fdGl0bGVFbGVtZW50
KQotICAgICAgICAgICAgbV90aXRsZUVsZW1lbnQtPnNldFRleHRDb250ZW50KHRpdGxlKTsKKyAg
ICAgICAgICAgIG1fdGl0bGVFbGVtZW50LT5zZXRUZXh0Q29udGVudChXVEZNb3ZlKHRpdGxlKSk7
CiAgICAgfSBlbHNlIGlmIChpczxIVE1MRWxlbWVudD4oZWxlbWVudCkpIHsKICAgICAgICAgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IG9sZFRpdGxlOwogICAgICAgICBpZiAoIW1fdGl0bGVFbGVtZW50
KSB7CkBAIC0xNzU3LDcgKzE3NTcsNyBAQCB2b2lkIERvY3VtZW50OjpzZXRUaXRsZShjb25zdCBT
dHJpbmcmIHRpdGxlKQogICAgICAgICBpZiAoIW1fdGl0bGVFbGVtZW50KQogICAgICAgICAgICAg
cmV0dXJuOwogICAgIAotICAgICAgICBtX3RpdGxlRWxlbWVudC0+c2V0VGV4dENvbnRlbnQodGl0
bGUpOworICAgICAgICBtX3RpdGxlRWxlbWVudC0+c2V0VGV4dENvbnRlbnQoU3RyaW5nIHsgdGl0
bGUgfSk7CiAgICAgICAgIGF1dG8qIHRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyID0gdGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXJJZkV4aXN0cygpOwogICAgICAgICBpZiAoVU5MSUtFTFkodGV4
dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIpKSB7CiAgICAgICAgICAgICBpZiAoIW9sZFRpdGxlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAppbmRleCA2OWIyMjQ0OWE3YjcwY2Q5ZmUzODliNTc1NzJkMTZlMjNl
NzcxM2QzLi5hMGY2MzgyZTcwNDMxNWI2MDg5ZDdmM2MxN2Y5NTgzZTBiNWNkYWU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaApAQCAtNDM1LDEwICs0MzUsMTAgQEAgcHVibGljOgogICAgIAogICAgIFdF
QkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFJlZjxFbGVtZW50Pj4gY3JlYXRlRWxlbWVudEZvckJp
bmRpbmdzKGNvbnN0IEF0b21TdHJpbmcmIHRhZ05hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgUmVmPFRleHQ+IGNyZWF0ZVRleHROb2RlKGNvbnN0IFN0cmluZyYgZGF0YSk7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbW1lbnQ+IGNyZWF0ZUNvbW1lbnQoY29uc3QgU3RyaW5n
JiBkYXRhKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxSZWY8Q0RBVEFTZWN0aW9u
Pj4gY3JlYXRlQ0RBVEFTZWN0aW9uKGNvbnN0IFN0cmluZyYgZGF0YSk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgRXhjZXB0aW9uT3I8UmVmPFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4+IGNyZWF0ZVByb2Nl
c3NpbmdJbnN0cnVjdGlvbihjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBkYXRh
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8VGV4dD4gY3JlYXRlVGV4dE5vZGUoU3RyaW5nJiYg
ZGF0YSk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbW1lbnQ+IGNyZWF0ZUNvbW1lbnQoU3Ry
aW5nJiYgZGF0YSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVmPENEQVRBU2Vj
dGlvbj4+IGNyZWF0ZUNEQVRBU2VjdGlvbihTdHJpbmcmJiBkYXRhKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBFeGNlcHRpb25PcjxSZWY8UHJvY2Vzc2luZ0luc3RydWN0aW9uPj4gY3JlYXRlUHJvY2Vz
c2luZ0luc3RydWN0aW9uKFN0cmluZyYmIHRhcmdldCwgU3RyaW5nJiYgZGF0YSk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVmPEF0dHI+PiBjcmVhdGVBdHRyaWJ1dGUoY29uc3Qg
QXRvbVN0cmluZyYgbmFtZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVmPEF0
dHI+PiBjcmVhdGVBdHRyaWJ1dGVOUyhjb25zdCBBdG9tU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNv
bnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgYm9vbCBzaG91bGRJZ25vcmVOYW1lc3BhY2VDaGVj
a3MgPSBmYWxzZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVmPE5vZGU+PiBp
bXBvcnROb2RlKE5vZGUmIG5vZGVUb0ltcG9ydCwgYm9vbCBkZWVwKTsKQEAgLTYxMiw3ICs2MTIs
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBTcGVjaWFsIHN1cHBvcnQgZm9yIGVkaXRpbmcKICAgICBX
RUJDT1JFX0VYUE9SVCBSZWY8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gY3JlYXRlQ1NTU3R5bGVEZWNs
YXJhdGlvbigpOwotICAgIFJlZjxUZXh0PiBjcmVhdGVFZGl0aW5nVGV4dE5vZGUoY29uc3QgU3Ry
aW5nJik7CisgICAgUmVmPFRleHQ+IGNyZWF0ZUVkaXRpbmdUZXh0Tm9kZShTdHJpbmcmJik7CiAK
ICAgICBlbnVtIGNsYXNzIFJlc29sdmVTdHlsZVR5cGUgeyBOb3JtYWwsIFJlYnVpbGQgfTsKICAg
ICB2b2lkIHJlc29sdmVTdHlsZShSZXNvbHZlU3R5bGVUeXBlID0gUmVzb2x2ZVN0eWxlVHlwZTo6
Tm9ybWFsKTsKQEAgLTk2NCw3ICs5NjQsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBVc2VkIGJ5IERP
TSBiaW5kaW5nczsgbm8gZGlyZWN0aW9uIGtub3duLgogICAgIGNvbnN0IFN0cmluZyYgdGl0bGUo
KSBjb25zdCB7IHJldHVybiBtX3RpdGxlLnN0cmluZzsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRU
aXRsZShTdHJpbmcmJik7CiAgICAgY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGVXaXRo
RGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90aXRsZTsgfQogCiAgICAgV0VCQ09SRV9FWFBP
UlQgY29uc3QgQXRvbVN0cmluZyYgZGlyKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5k
ZXggY2M3YTJlMTRhZjVmMWZiMzZiNTIxODc0OTE5ODdjOTRmOTdlYjFlNi4uNGVmY2FjZmYyNzY3
ZmUxOGU4YjYxNmQ1YzQzOWMzYzBkNDY3ZWY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAt
NDY0Miw5ICs0NjQyLDkgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRWxlbWVudDo6aW5zZXJ0QWRqYWNl
bnRIVE1MKGNvbnN0IFN0cmluZyYgd2hlcmUsIGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gaW5z
ZXJ0QWRqYWNlbnRIVE1MKHdoZXJlLCBtYXJrdXAsIG51bGxwdHIpOwogfQogCi1FeGNlcHRpb25P
cjx2b2lkPiBFbGVtZW50OjppbnNlcnRBZGphY2VudFRleHQoY29uc3QgU3RyaW5nJiB3aGVyZSwg
Y29uc3QgU3RyaW5nJiB0ZXh0KQorRXhjZXB0aW9uT3I8dm9pZD4gRWxlbWVudDo6aW5zZXJ0QWRq
YWNlbnRUZXh0KGNvbnN0IFN0cmluZyYgd2hlcmUsIFN0cmluZyYmIHRleHQpCiB7Ci0gICAgYXV0
byByZXN1bHQgPSBpbnNlcnRBZGphY2VudCh3aGVyZSwgZG9jdW1lbnQoKS5jcmVhdGVUZXh0Tm9k
ZSh0ZXh0KSk7CisgICAgYXV0byByZXN1bHQgPSBpbnNlcnRBZGphY2VudCh3aGVyZSwgZG9jdW1l
bnQoKS5jcmVhdGVUZXh0Tm9kZShXVEZNb3ZlKHRleHQpKSk7CiAgICAgaWYgKHJlc3VsdC5oYXNF
eGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAg
ICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDk4MzU4NzYyMTZlYmZlZmQ3YzYx
NmRmZmVkOGY4NzJmZjQ4ZDk4MzcuLjljYWJlM2FkY2Q3NThjNTJlYmI4NTk2MTI2MGI1MjFmYjI1
ODAzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMzcyLDcgKzM3Miw3IEBAIHB1YmxpYzoKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPEVsZW1lbnQqPiBpbnNlcnRBZGphY2VudEVs
ZW1lbnQoY29uc3QgU3RyaW5nJiB3aGVyZSwgRWxlbWVudCYgbmV3Q2hpbGQpOwogICAgIFdFQkNP
UkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IGluc2VydEFkamFjZW50SFRNTChjb25zdCBTdHJp
bmcmIHdoZXJlLCBjb25zdCBTdHJpbmcmIGh0bWwpOwotICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2Vw
dGlvbk9yPHZvaWQ+IGluc2VydEFkamFjZW50VGV4dChjb25zdCBTdHJpbmcmIHdoZXJlLCBjb25z
dCBTdHJpbmcmIHRleHQpOworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IGlu
c2VydEFkamFjZW50VGV4dChjb25zdCBTdHJpbmcmIHdoZXJlLCBTdHJpbmcmJiB0ZXh0KTsKIAog
ICAgIGNvbnN0IFJlbmRlclN0eWxlKiBjb21wdXRlZFN0eWxlKFBzZXVkb0lkID0gUHNldWRvSWQ6
Ok5vbmUpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW1hZ2VP
dmVybGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbWFnZU92ZXJsYXkuY3BwCmluZGV4IGNm
Y2JhZjM3MTI5NjI2MjA4YmZiNWU1ZWE3ZTdmY2FjZmU3NzdkMDcuLmZkOTllNTQ0YWY5OThhZjdl
ZTY3NmU0MjEzMGRlMjcwNzRhOWQ5ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9J
bWFnZU92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbWFnZU92ZXJsYXkuY3Bw
CkBAIC0yMzIsNyArMjMyLDcgQEAgc3RhdGljIHZvaWQgaW5zdGFsbEltYWdlT3ZlcmxheVN0eWxl
U2hlZXQoU2hhZG93Um9vdCYgc2hhZG93Um9vdCkKIHsKICAgICBzdGF0aWMgTWFpblRocmVhZE5l
dmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gc2hhZG93U3R5bGUoU3RyaW5nSW1wbDo6Y3JlYXRl
V2l0aG91dENvcHlpbmcoaW1hZ2VPdmVybGF5VXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKGlt
YWdlT3ZlcmxheVVzZXJBZ2VudFN0eWxlU2hlZXQpKSk7CiAgICAgYXV0byBzdHlsZSA9IEhUTUxT
dHlsZUVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OnN0eWxlVGFnLCBzaGFkb3dSb290LmRvY3Vt
ZW50KCksIGZhbHNlKTsKLSAgICBzdHlsZS0+c2V0VGV4dENvbnRlbnQoc2hhZG93U3R5bGUpOwor
ICAgIHN0eWxlLT5zZXRUZXh0Q29udGVudChTdHJpbmcgeyBzaGFkb3dTdHlsZSB9KTsKICAgICBz
aGFkb3dSb290LmFwcGVuZENoaWxkKFdURk1vdmUoc3R5bGUpKTsKIH0KIApAQCAtMzk4LDcgKzM5
OCw3IEBAIHN0YXRpYyBFbGVtZW50cyB1cGRhdGVTdWJ0cmVlKEhUTUxFbGVtZW50JiBlbGVtZW50
LCBjb25zdCBUZXh0UmVjb2duaXRpb25SZXN1bHQmCiAgICAgICAgICAgICAgICAgYXV0byB0ZXh0
Q29udGFpbmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudC5nZXQoKSk7CiAgICAg
ICAgICAgICAgICAgdGV4dENvbnRhaW5lci0+Y2xhc3NMaXN0KCkuYWRkKGltYWdlT3ZlcmxheVRl
eHRDbGFzcygpKTsKICAgICAgICAgICAgICAgICBsaW5lQ29udGFpbmVyLT5hcHBlbmRDaGlsZCh0
ZXh0Q29udGFpbmVyKTsKLSAgICAgICAgICAgICAgICB0ZXh0Q29udGFpbmVyLT5hcHBlbmRDaGls
ZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCksIGNoaWxkLmhhc0xlYWRpbmdXaGl0ZXNwYWNl
ID8gbWFrZVN0cmluZygnXG4nLCBjaGlsZC50ZXh0KSA6IGNoaWxkLnRleHQpKTsKKyAgICAgICAg
ICAgICAgICB0ZXh0Q29udGFpbmVyLT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQu
Z2V0KCksIGNoaWxkLmhhc0xlYWRpbmdXaGl0ZXNwYWNlID8gbWFrZVN0cmluZygnXG4nLCBjaGls
ZC50ZXh0KSA6IFN0cmluZyB7IGNoaWxkLnRleHQgfSkpOwogICAgICAgICAgICAgICAgIGxpbmVF
bGVtZW50cy5jaGlsZHJlbi51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZSh0ZXh0Q29udGFpbmVyKSk7
CiAgICAgICAgICAgICB9CiAKQEAgLTQyNSwxMCArNDI1LDEwIEBAIHN0YXRpYyBFbGVtZW50cyB1
cGRhdGVTdWJ0cmVlKEhUTUxFbGVtZW50JiBlbGVtZW50LCBjb25zdCBUZXh0UmVjb2duaXRpb25S
ZXN1bHQmCiAgICAgICAgICAgICBhdXRvIGJsb2NrQ29udGFpbmVyID0gSFRNTERpdkVsZW1lbnQ6
OmNyZWF0ZShkb2N1bWVudC5nZXQoKSk7CiAgICAgICAgICAgICBibG9ja0NvbnRhaW5lci0+Y2xh
c3NMaXN0KCkuYWRkKGltYWdlT3ZlcmxheUJsb2NrQ2xhc3MoKSk7CiAgICAgICAgICAgICBhdXRv
IGxpbmVzID0gYmxvY2sudGV4dC5zcGxpdChuZXdsaW5lQ2hhcmFjdGVyKTsKLSAgICAgICAgICAg
IGZvciAoYXV0byYgdGV4dENvbnRlbnQgOiBsaW5lcykgeworICAgICAgICAgICAgZm9yIChhdXRv
JiYgdGV4dENvbnRlbnQgOiBXVEZNb3ZlKGxpbmVzKSkgewogICAgICAgICAgICAgICAgIGlmIChi
bG9ja0NvbnRhaW5lci0+aGFzQ2hpbGROb2RlcygpKQogICAgICAgICAgICAgICAgICAgICBibG9j
a0NvbnRhaW5lci0+YXBwZW5kQ2hpbGQoSFRNTEJSRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50Lmdl
dCgpKSk7Ci0gICAgICAgICAgICAgICAgYmxvY2tDb250YWluZXItPmFwcGVuZENoaWxkKFRleHQ6
OmNyZWF0ZShkb2N1bWVudC5nZXQoKSwgdGV4dENvbnRlbnQpKTsKKyAgICAgICAgICAgICAgICBi
bG9ja0NvbnRhaW5lci0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50LmdldCgpLCBX
VEZNb3ZlKHRleHRDb250ZW50KSkpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBjb25z
dGV4cHIgYXV0byBtYXhMaW5lQ291bnRGb3JDZW50ZXJBbGlnbmVkVGV4dCA9IDI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAKaW5kZXggY2I0N2VhYWVjMGRlNzA1YjM0ODM2ZjU3MDI3YjRkYzE1NzhiOTUxZS4uM2Fl
YTBiNDU5ZWY1ODFkZTBhMzQyMjEzNzk5YzE1ZGI3NjUxZDVlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApA
QCAtNTUyLDcgKzU1Miw3IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxOb2RlPj4gTm9kZTo6Y29udmVy
dE5vZGVzT3JTdHJpbmdzSW50b05vZGUoRml4ZWRWZWN0b3I8Tm9kZU9yCiAgICAgZm9yIChhdXRv
JiB2YXJpYW50IDogbm9kZU9yU3RyaW5nVmVjdG9yKSB7CiAgICAgICAgIFdURjo6c3dpdGNoT24o
dmFyaWFudCwKICAgICAgICAgICAgIFsmXShSZWZQdHI8Tm9kZT4mIG5vZGUpIHsgbm9kZXMudW5j
aGVja2VkQXBwZW5kKCpub2RlLmdldCgpKTsgfSwKLSAgICAgICAgICAgIFsmXShTdHJpbmcmIHN0
cmluZykgeyBub2Rlcy51bmNoZWNrZWRBcHBlbmQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50KCksIHN0
cmluZykpOyB9CisgICAgICAgICAgICBbJl0oU3RyaW5nJiBzdHJpbmcpIHsgbm9kZXMudW5jaGVj
a2VkQXBwZW5kKFRleHQ6OmNyZWF0ZShkb2N1bWVudCgpLCBXVEZNb3ZlKHN0cmluZykpKTsgfQog
ICAgICAgICApOwogICAgIH0KIApAQCAtMTU5MCw3ICsxNTkwLDcgQEAgU3RyaW5nIE5vZGU6OnRl
eHRDb250ZW50KGJvb2wgY29udmVydEJSc1RvTmV3bGluZXMpIGNvbnN0CiAgICAgcmV0dXJuIGlz
TnVsbFN0cmluZyA/IFN0cmluZygpIDogY29udGVudC50b1N0cmluZygpOwogfQogCi12b2lkIE5v
ZGU6OnNldFRleHRDb250ZW50KGNvbnN0IFN0cmluZyYgdGV4dCkKK3ZvaWQgTm9kZTo6c2V0VGV4
dENvbnRlbnQoU3RyaW5nJiYgdGV4dCkKIHsgICAgICAgICAgIAogICAgIHN3aXRjaCAobm9kZVR5
cGUoKSkgewogICAgIGNhc2UgQVRUUklCVVRFX05PREU6CkBAIC0xNTk4LDExICsxNTk4LDExIEBA
IHZvaWQgTm9kZTo6c2V0VGV4dENvbnRlbnQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIGNhc2Ug
Q0RBVEFfU0VDVElPTl9OT0RFOgogICAgIGNhc2UgQ09NTUVOVF9OT0RFOgogICAgIGNhc2UgUFJP
Q0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOgotICAgICAgICBzZXROb2RlVmFsdWUodGV4dCk7Cisg
ICAgICAgIHNldE5vZGVWYWx1ZShXVEZNb3ZlKHRleHQpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IGNhc2UgRUxFTUVOVF9OT0RFOgogICAgIGNhc2UgRE9DVU1FTlRfRlJBR01FTlRfTk9ERToKLSAg
ICAgICAgZG93bmNhc3Q8Q29udGFpbmVyTm9kZT4oKnRoaXMpLnN0cmluZ1JlcGxhY2VBbGwodGV4
dCk7CisgICAgICAgIGRvd25jYXN0PENvbnRhaW5lck5vZGU+KCp0aGlzKS5zdHJpbmdSZXBsYWNl
QWxsKFdURk1vdmUodGV4dCkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBET0NVTUVOVF9O
T0RFOgogICAgIGNhc2UgRE9DVU1FTlRfVFlQRV9OT0RFOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggMTdmZTI2
MWFkYTUzYWJmMjZkZjY3NTYyNjZmNTI3OWQwMGE2MWM3NC4uMGU0YTAwOTVhNWU2OTZkOTIyNzAz
YjEwMjEyZmNkOTExOGQ2NzM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC0xNzUsNyArMTc1LDcgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEF0b21TdHJpbmcmIGxvb2t1cE5hbWVzcGFj
ZVVSSShjb25zdCBBdG9tU3RyaW5nJiBwcmVmaXgpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIHRleHRDb250ZW50KGJvb2wgY29udmVydEJSc1RvTmV3bGluZXMgPSBmYWxzZSkg
Y29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUZXh0Q29udGVudChjb25zdCBTdHJp
bmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRleHRDb250ZW50KFN0cmluZyYmKTsK
ICAgICAKICAgICBOb2RlKiBsYXN0RGVzY2VuZGFudCgpIGNvbnN0OwogICAgIE5vZGUqIGZpcnN0
RGVzY2VuZGFudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nl
c3NpbmdJbnN0cnVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uLmNwcAppbmRleCA5NzQ2OTYyOWY5NDUzZTdkMTYzN2FhNTVhODM2NDFjZDRlMGVlZDNj
Li5jMmYzYjczMDdkMGQwOTBhMzNjYzcxNjZkYTYyMzQ5ZjUyYjUwY2VlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcApAQCAtNDMsMTUgKzQzLDE1IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFByb2Nl
c3NpbmdJbnN0cnVjdGlvbik7CiAKLWlubGluZSBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OlByb2Nl
c3NpbmdJbnN0cnVjdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdGFyZ2V0
LCBjb25zdCBTdHJpbmcmIGRhdGEpCi0gICAgOiBDaGFyYWN0ZXJEYXRhKGRvY3VtZW50LCBkYXRh
KQotICAgICwgbV90YXJnZXQodGFyZ2V0KQoraW5saW5lIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6
UHJvY2Vzc2luZ0luc3RydWN0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5nJiYgdGFyZ2V0
LCBTdHJpbmcmJiBkYXRhKQorICAgIDogQ2hhcmFjdGVyRGF0YShkb2N1bWVudCwgV1RGTW92ZShk
YXRhKSkKKyAgICAsIG1fdGFyZ2V0KFdURk1vdmUodGFyZ2V0KSkKIHsKIH0KIAotUmVmPFByb2Nl
c3NpbmdJbnN0cnVjdGlvbj4gUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjcmVhdGUoRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBkYXRhKQorUmVm
PFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4gUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjcmVhdGUoRG9j
dW1lbnQmIGRvY3VtZW50LCBTdHJpbmcmJiB0YXJnZXQsIFN0cmluZyYmIGRhdGEpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUHJvY2Vzc2luZ0luc3RydWN0aW9uKGRvY3VtZW50LCB0YXJn
ZXQsIGRhdGEpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24oZG9jdW1lbnQsIFdURk1vdmUodGFyZ2V0KSwgV1RGTW92ZShkYXRhKSkpOwogfQogCiBQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb246On5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oKQpAQCAtODAsNyArODAs
NyBAQCBSZWY8Tm9kZT4gUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjbG9uZU5vZGVJbnRlcm5hbChE
b2N1bWVudCYgdGFyZ2V0RG9jdW1lbnQsIENsbwogewogICAgIC8vIEZJWE1FOiBJcyBpdCBhIHBy
b2JsZW0gdGhhdCB0aGlzIGRvZXMgbm90IGNvcHkgbV9sb2NhbEhyZWY/CiAgICAgLy8gV2hhdCBh
Ym91dCBvdGhlciBkYXRhIG1lbWJlcnM/Ci0gICAgcmV0dXJuIGNyZWF0ZSh0YXJnZXREb2N1bWVu
dCwgbV90YXJnZXQsIGRhdGEoKSk7CisgICAgcmV0dXJuIGNyZWF0ZSh0YXJnZXREb2N1bWVudCwg
U3RyaW5nIHsgbV90YXJnZXQgfSwgU3RyaW5nIHsgZGF0YSgpIH0pOwogfQogCiB2b2lkIFByb2Nl
c3NpbmdJbnN0cnVjdGlvbjo6Y2hlY2tTdHlsZVNoZWV0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaAppbmRleCA2NDBkYzRjOWQ5YTAyODc0MTRmZjcyOWE5YmJh
ZDM4MmYyNzY5YzEyLi43MzMxYjI0YzE4ZWE2NTBlMWVjNzI0YTdhN2IzOWFjMDgyOWE5MjQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oCkBAIC0zNCw3ICsz
NCw3IEBAIGNsYXNzIENTU1N0eWxlU2hlZXQ7CiBjbGFzcyBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24g
ZmluYWwgOiBwdWJsaWMgQ2hhcmFjdGVyRGF0YSwgcHJpdmF0ZSBDYWNoZWRTdHlsZVNoZWV0Q2xp
ZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFByb2Nlc3NpbmdJbnN0cnVjdGlvbik7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24+IGNyZWF0ZShE
b2N1bWVudCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAg
IHN0YXRpYyBSZWY8UHJvY2Vzc2luZ0luc3RydWN0aW9uPiBjcmVhdGUoRG9jdW1lbnQmLCBTdHJp
bmcmJiB0YXJnZXQsIFN0cmluZyYmIGRhdGEpOwogICAgIHZpcnR1YWwgflByb2Nlc3NpbmdJbnN0
cnVjdGlvbigpOwogCiAgICAgY29uc3QgU3RyaW5nJiB0YXJnZXQoKSBjb25zdCB7IHJldHVybiBt
X3RhcmdldDsgfQpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgZnJp
ZW5kIGNsYXNzIENoYXJhY3RlckRhdGE7Ci0gICAgUHJvY2Vzc2luZ0luc3RydWN0aW9uKERvY3Vt
ZW50JiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgZGF0YSk7CisgICAgUHJv
Y2Vzc2luZ0luc3RydWN0aW9uKERvY3VtZW50JiwgU3RyaW5nJiYgdGFyZ2V0LCBTdHJpbmcmJiBk
YXRhKTsKIAogICAgIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIE5vZGVU
eXBlIG5vZGVUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKaW5kZXggNGI5MDNm
OGZkZjJiYWQ5MzlkZGFiYTgwY2RlODgwNTQ0MTI5NzZlMi4uZTY3YjJiMjEwOTQ4Mzg0MmYwMDYx
ZTJmMjdiNmE2NjcyMjRmZGY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcApAQCAtNDQsMTQgKzQ0LDE0IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFRleHQp
OwogCi1SZWY8VGV4dD4gVGV4dDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3Ry
aW5nJiBkYXRhKQorUmVmPFRleHQ+IFRleHQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFN0
cmluZyYmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dChkb2N1bWVudCwg
ZGF0YSwgQ3JlYXRlVGV4dCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHQoZG9jdW1l
bnQsIFdURk1vdmUoZGF0YSksIENyZWF0ZVRleHQpKTsKIH0KIAotUmVmPFRleHQ+IFRleHQ6OmNy
ZWF0ZUVkaXRpbmdUZXh0KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBkYXRhKQor
UmVmPFRleHQ+IFRleHQ6OmNyZWF0ZUVkaXRpbmdUZXh0KERvY3VtZW50JiBkb2N1bWVudCwgU3Ry
aW5nJiYgZGF0YSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0KGRvY3VtZW50LCBk
YXRhLCBDcmVhdGVFZGl0aW5nVGV4dCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHQo
ZG9jdW1lbnQsIFdURk1vdmUoZGF0YSksIENyZWF0ZUVkaXRpbmdUZXh0KSk7CiB9CiAKIFRleHQ6
On5UZXh0KCkgPSBkZWZhdWx0OwpAQCAtMTYzLDcgKzE2Myw3IEBAIE5vZGU6Ok5vZGVUeXBlIFRl
eHQ6Om5vZGVUeXBlKCkgY29uc3QKIAogUmVmPE5vZGU+IFRleHQ6OmNsb25lTm9kZUludGVybmFs
KERvY3VtZW50JiB0YXJnZXREb2N1bWVudCwgQ2xvbmluZ09wZXJhdGlvbikKIHsKLSAgICByZXR1
cm4gY3JlYXRlKHRhcmdldERvY3VtZW50LCBkYXRhKCkpOworICAgIHJldHVybiBjcmVhdGUodGFy
Z2V0RG9jdW1lbnQsIFN0cmluZyB7IGRhdGEoKSB9KTsKIH0KIAogc3RhdGljIGJvb2wgaXNTVkdT
aGFkb3dUZXh0KFRleHQqIHRleHQpCkBAIC0xOTUsOSArMTk1LDkgQEAgYm9vbCBUZXh0OjpjaGls
ZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUmVm
PFRleHQ+IFRleHQ6OnZpcnR1YWxDcmVhdGUoY29uc3QgU3RyaW5nJiBkYXRhKQorUmVmPFRleHQ+
IFRleHQ6OnZpcnR1YWxDcmVhdGUoU3RyaW5nJiYgZGF0YSkKIHsKLSAgICByZXR1cm4gY3JlYXRl
KGRvY3VtZW50KCksIGRhdGEpOworICAgIHJldHVybiBjcmVhdGUoZG9jdW1lbnQoKSwgV1RGTW92
ZShkYXRhKSk7CiB9CiAKIFJlZjxUZXh0PiBUZXh0OjpjcmVhdGVXaXRoTGVuZ3RoTGltaXQoRG9j
dW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGRhdGEsIHVuc2lnbmVkIHN0YXJ0LCB1bnNp
Z25lZCBsZW5ndGhMaW1pdCkKQEAgLTIwNSw3ICsyMDUsNyBAQCBSZWY8VGV4dD4gVGV4dDo6Y3Jl
YXRlV2l0aExlbmd0aExpbWl0KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBkYXRh
LCB1bgogICAgIHVuc2lnbmVkIGRhdGFMZW5ndGggPSBkYXRhLmxlbmd0aCgpOwogCiAgICAgaWYg
KCFzdGFydCAmJiBkYXRhTGVuZ3RoIDw9IGxlbmd0aExpbWl0KQotICAgICAgICByZXR1cm4gY3Jl
YXRlKGRvY3VtZW50LCBkYXRhKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZShkb2N1bWVudCwgU3Ry
aW5nIHsgZGF0YSB9KTsKIAogICAgIFJlZjxUZXh0PiByZXN1bHQgPSBUZXh0OjpjcmVhdGUoZG9j
dW1lbnQsIFN0cmluZygpKTsKICAgICByZXN1bHQtPnBhcnNlckFwcGVuZERhdGEoZGF0YSwgc3Rh
cnQsIGxlbmd0aExpbWl0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oCmluZGV4IGViYzlkMTBjYzQ4ZTEwYTc3NmVmMTEy
YzEzNmE1YzZiNDcxNzFiYjIuLjYyYzc1Y2UxYzZmMmY3MmY5YjczNDdiZmFhZGY2N2JhNjM3YzQ1
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1RleHQuaApAQCAtMzQsOSArMzQsOSBAQCBjbGFzcyBUZXh0IDogcHVibGljIENo
YXJhY3RlckRhdGEgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBkZWZhdWx0
TGVuZ3RoTGltaXQgPSAxIDw8IDE2OwogCi0gICAgc3RhdGljIFJlZjxUZXh0PiBjcmVhdGUoRG9j
dW1lbnQmLCBjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgUmVmPFRleHQ+IGNyZWF0ZShEb2N1
bWVudCYsIFN0cmluZyYmKTsKICAgICBzdGF0aWMgUmVmPFRleHQ+IGNyZWF0ZVdpdGhMZW5ndGhM
aW1pdChEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHBvc2l0aW9uSW5TdHJpbmcs
IHVuc2lnbmVkIGxlbmd0aExpbWl0ID0gZGVmYXVsdExlbmd0aExpbWl0KTsKLSAgICBzdGF0aWMg
UmVmPFRleHQ+IGNyZWF0ZUVkaXRpbmdUZXh0KERvY3VtZW50JiwgY29uc3QgU3RyaW5nJik7Cisg
ICAgc3RhdGljIFJlZjxUZXh0PiBjcmVhdGVFZGl0aW5nVGV4dChEb2N1bWVudCYsIFN0cmluZyYm
KTsKIAogICAgIHZpcnR1YWwgflRleHQoKTsKIApAQCAtNTksOCArNTksOCBAQCBwdWJsaWM6CiAg
ICAgU3RyaW5nIGRlYnVnRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbDsKIAogcHJvdGVjdGVkOgot
ICAgIFRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGRhdGEsIENvbnN0cnVj
dGlvblR5cGUgdHlwZSkKLSAgICAgICAgOiBDaGFyYWN0ZXJEYXRhKGRvY3VtZW50LCBkYXRhLCB0
eXBlKQorICAgIFRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmcmJiBkYXRhLCBDb25zdHJ1
Y3Rpb25UeXBlIHR5cGUpCisgICAgICAgIDogQ2hhcmFjdGVyRGF0YShkb2N1bWVudCwgV1RGTW92
ZShkYXRhKSwgdHlwZSkKICAgICB7CiAgICAgfQogCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2b2lkIHNldERhdGFBbmRVcGRhdGUoY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgb2Zmc2V0T2ZS
ZXBsYWNlZERhdGEsIHVuc2lnbmVkIG9sZExlbmd0aCwgdW5zaWduZWQgbmV3TGVuZ3RoLCBVcGRh
dGVMaXZlUmFuZ2VzKSBmaW5hbDsKIAotICAgIHZpcnR1YWwgUmVmPFRleHQ+IHZpcnR1YWxDcmVh
dGUoY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBSZWY8VGV4dD4gdmlydHVhbENyZWF0ZShT
dHJpbmcmJik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vbWFjL0ltYWdlQ29udHJvbHNNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL21hYy9JbWFnZUNvbnRyb2xzTWFjLmNwcAppbmRleCA5NzlhZDk3Y2NiYTliZjQ4MThmM2Rl
NGNmYTdmZTI1YjNkNjJiNzg5Li44OTc0NzRjZmYxNWI4M2ZiYzkzNDAxY2IxMDM3YzhiMGJiNzlm
NGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFjL0ltYWdlQ29udHJvbHNNYWMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWMvSW1hZ2VDb250cm9sc01hYy5jcHAKQEAg
LTk2LDcgKzk2LDcgQEAgdm9pZCBjcmVhdGVJbWFnZUNvbnRyb2xzKEhUTUxFbGVtZW50JiBlbGVt
ZW50KQogICAgIAogICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3Ry
aW5nPiBzaGFkb3dTdHlsZShTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhpbWFnZUNv
bnRyb2xzTWFjVXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKGltYWdlQ29udHJvbHNNYWNVc2Vy
QWdlbnRTdHlsZVNoZWV0KSkpOwogICAgIGF1dG8gc3R5bGUgPSBIVE1MU3R5bGVFbGVtZW50Ojpj
cmVhdGUoSFRNTE5hbWVzOjpzdHlsZVRhZywgZG9jdW1lbnQuZ2V0KCksIGZhbHNlKTsKLSAgICBz
dHlsZS0+c2V0VGV4dENvbnRlbnQoc2hhZG93U3R5bGUpOworICAgIHN0eWxlLT5zZXRUZXh0Q29u
dGVudChTdHJpbmcgeyBzaGFkb3dTdHlsZSB9KTsKICAgICBzaGFkb3dSb290LT5hcHBlbmRDaGls
ZChXVEZNb3ZlKHN0eWxlKSk7CiAgICAgCiAgICAgYXV0byBidXR0b24gPSBIVE1MQnV0dG9uRWxl
bWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6YnV0dG9uVGFnLCBlbGVtZW50LmRvY3VtZW50KCksIG51
bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9DcmVhdGVMaW5rQ29t
bWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NyZWF0ZUxpbmtDb21tYW5kLmNwcApp
bmRleCA2NmZhMzEwYjlmMzMyNjUwNGY5NTJhOGQ1NGM4ZGExYTExZWVjNjQzLi4wZjNhN2Y5NDg1
NTg0ZjA3ODdiOGQwNGNhNjkwOTE1YzExYjVjYzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0NyZWF0ZUxpbmtDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0NyZWF0ZUxpbmtDb21tYW5kLmNwcApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIENyZWF0ZUxp
bmtDb21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgYXBwbHlTdHlsZWRFbGVtZW50KFdURk1vdmUo
YW5jaG9yRWxlbWVudCkpOwogICAgIGVsc2UgewogICAgICAgICBpbnNlcnROb2RlQXQoYW5jaG9y
RWxlbWVudC5jb3B5UmVmKCksIGVuZGluZ1NlbGVjdGlvbigpLnN0YXJ0KCkpOwotICAgICAgICBh
cHBlbmROb2RlKFRleHQ6OmNyZWF0ZShkb2N1bWVudCgpLCBtX3VybCksIGFuY2hvckVsZW1lbnQu
Y29weVJlZigpKTsKKyAgICAgICAgYXBwZW5kTm9kZShUZXh0OjpjcmVhdGUoZG9jdW1lbnQoKSwg
U3RyaW5nIHsgbV91cmwgfSksIGFuY2hvckVsZW1lbnQuY29weVJlZigpKTsKICAgICAgICAgc2V0
RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocG9zaXRpb25JblBhcmVudEJlZm9yZU5v
ZGUoYW5jaG9yRWxlbWVudC5wdHIoKSksIHBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUoYW5jaG9y
RWxlbWVudC5wdHIoKSksIEFmZmluaXR5OjpEb3duc3RyZWFtLCBlbmRpbmdTZWxlY3Rpb24oKS5p
c0RpcmVjdGlvbmFsKCkpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcApp
bmRleCA4MGZmZDFlYzNmODIwZjE2NjcyYWIxOGI2NDI1MDQzYjliZjRiZjIzLi42ODQ1Yjg3MDcz
ZWRiOWM0MmE4MGI0NjQ0Njc4OTBkOTU3MTJmYTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGlu
Zy5jcHAKQEAgLTgyNyw5ICs4MjcsOSBAQCBzdGF0aWMgUmVmPEVsZW1lbnQ+IGNyZWF0ZVRhYlNw
YW5FbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgVGV4dCYgdGFiVGV4dE5vZGUpCiAgICAgcmV0
dXJuIHNwYW5FbGVtZW50OwogfQogCi1SZWY8RWxlbWVudD4gY3JlYXRlVGFiU3BhbkVsZW1lbnQo
RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRhYlRleHQpCitSZWY8RWxlbWVudD4g
Y3JlYXRlVGFiU3BhbkVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmcmJiB0YWJUZXh0
KQogewotICAgIHJldHVybiBjcmVhdGVUYWJTcGFuRWxlbWVudChkb2N1bWVudCwgZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUodGFiVGV4dCkpOworICAgIHJldHVybiBjcmVhdGVUYWJTcGFuRWxlbWVu
dChkb2N1bWVudCwgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoV1RGTW92ZSh0YWJUZXh0KSkpOwog
fQogCiBSZWY8RWxlbWVudD4gY3JlYXRlVGFiU3BhbkVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmggYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuaAppbmRleCA5NmNlYzk3Y2Y3ZTNiMTZjZTBmMWMwNWJl
NzRkNzIwOGNjYzRkYWI5Li4yNzYxMjBjNGM3YTI1YjJmY2E3NWI4MmUyOWI2YzJhZjQwMjYzNTE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuaApAQCAtMTY5LDcgKzE2OSw3IEBAIE5vZGUqIGVu
Y2xvc2luZ0xpc3RDaGlsZChOb2RlKik7CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFJlZjxFbGVt
ZW50PiBjcmVhdGVUYWJTcGFuRWxlbWVudChEb2N1bWVudCYpOwotUmVmPEVsZW1lbnQ+IGNyZWF0
ZVRhYlNwYW5FbGVtZW50KERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiB0YWJUZXh0KTsKK1JlZjxF
bGVtZW50PiBjcmVhdGVUYWJTcGFuRWxlbWVudChEb2N1bWVudCYsIFN0cmluZyYmIHRhYlRleHQp
OwogUmVmPEVsZW1lbnQ+IGNyZWF0ZUJsb2NrUGxhY2Vob2xkZXJFbGVtZW50KERvY3VtZW50Jik7
CiAKIEVsZW1lbnQqIGVkaXRhYmxlUm9vdEZvclBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uJiwgRWRp
dGFibGVUeXBlID0gQ29udGVudElzRWRpdGFibGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CmluZGV4IGRkYzM2NDg3ZWUxN2ExZGZkMzhiODYxMzQ4ZDE5OTkwNDE5ZjRmZjguLmQ1ZjFmOWZi
MDMyMDEwYTFhNGE2MDA3YzY5YjBkOWE5ZTlmYzMwNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAKQEAgLTQzNjIsNyArNDM2Miw3IEBAIGNvbnN0IFJlbmRlclN0eWxlKiBFZGl0b3I6OnN0
eWxlRm9yU2VsZWN0aW9uU3RhcnQoUmVmUHRyPE5vZGU+JiBub2RlVG9SZW1vdmUpCiAgICAgU3Ry
aW5nIHN0eWxlVGV4dCA9IHR5cGluZ1N0eWxlLT5zdHlsZSgpLT5hc1RleHQoKSArICIgZGlzcGxh
eTogaW5saW5lIjsKICAgICBzdHlsZUVsZW1lbnQtPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnN0
eWxlQXR0ciwgc3R5bGVUZXh0KTsKIAotICAgIHN0eWxlRWxlbWVudC0+YXBwZW5kQ2hpbGQoZG9j
dW1lbnQoKS5jcmVhdGVFZGl0aW5nVGV4dE5vZGUoZW1wdHlTdHJpbmcoKSkpOworICAgIHN0eWxl
RWxlbWVudC0+YXBwZW5kQ2hpbGQoZG9jdW1lbnQoKS5jcmVhdGVFZGl0aW5nVGV4dE5vZGUoU3Ry
aW5nIHsgZW1wdHlTdHJpbmcoKSB9KSk7CiAKICAgICBhdXRvIHBvc2l0aW9uTm9kZSA9IHBvc2l0
aW9uLmRlcHJlY2F0ZWROb2RlKCk7CiAgICAgQVNTRVJUKHBvc2l0aW9uTm9kZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuaAppbmRleCA4MjdmYWJlZGVhY2RkNzk5ODljOTk3MjdmNzdmNjg3NDdkNDJj
MzdjLi4wYjI5MWY0YjlkNGM4NGQyNzUzYjg5MWVlMTY1MmI2N2MwNGFmM2ZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmgKQEAgLTQzNCw3ICs0MzQsNyBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29uZmlybU1hcmtlZFRleHQo
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRleHRBc0NoaWxkT2ZFbGVtZW50KGNvbnN0
IFN0cmluZyYsIEVsZW1lbnQmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRleHRBc0No
aWxkT2ZFbGVtZW50KFN0cmluZyYmLCBFbGVtZW50Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdE
aXJlY3Rpb24pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5zZXJ0RGljdGF0aW9uUGhyYXNl
cyhWZWN0b3I8VmVjdG9yPFN0cmluZz4+JiYgZGljdGF0aW9uUGhyYXNlcywgaWQgbWV0YWRhdGEp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RGljdGF0aW9uUGhyYXNlc0FzQ2hpbGRPZkVs
ZW1lbnQoY29uc3QgVmVjdG9yPFZlY3RvcjxTdHJpbmc+PiYgZGljdGF0aW9uUGhyYXNlcywgaWQg
bWV0YWRhdGEsIEVsZW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
SW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2Vy
dExpbmVCcmVha0NvbW1hbmQuY3BwCmluZGV4IDNlMzM3M2FjM2Y2ZmQzMWEwYWMwNGQ0NjFkYThj
NjcxMzlhMDAwNjcuLjkxMjlhM2JmODMxMWM1ZWE4NGNlYmUzN2Q5MWVlZjY4YWM0MzEwY2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNw
cApAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgSW5zZXJ0TGluZUJyZWFrQ29tbWFuZDo6ZG9BcHBs
eSgpCiAgICAgICAgICAgICBpZiAodGV4dE5vZGUuaXNDb25uZWN0ZWQoKSkKICAgICAgICAgICAg
ICAgICBpbnNlcnRUZXh0SW50b05vZGUodGV4dE5vZGUsIDAsIG5vbkJyZWFraW5nU3BhY2VTdHJp
bmcoKSk7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBhdXRvIG5ic3BOb2Rl
ID0gZG9jdW1lbnQoKS5jcmVhdGVUZXh0Tm9kZShub25CcmVha2luZ1NwYWNlU3RyaW5nKCkpOwor
ICAgICAgICAgICAgICAgIGF1dG8gbmJzcE5vZGUgPSBkb2N1bWVudCgpLmNyZWF0ZVRleHROb2Rl
KFN0cmluZyB7IG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSB9KTsKICAgICAgICAgICAgICAgICBh
dXRvKiBuYnNwTm9kZVB0ciA9IG5ic3BOb2RlLnB0cigpOwogICAgICAgICAgICAgICAgIGluc2Vy
dE5vZGVBdChXVEZNb3ZlKG5ic3BOb2RlKSwgcG9zaXRpb25CZWZvcmVUZXh0Tm9kZSk7CiAgICAg
ICAgICAgICAgICAgZW5kaW5nUG9zaXRpb24gPSBmaXJzdFBvc2l0aW9uSW5Ob2RlKG5ic3BOb2Rl
UHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1h
bmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAKaW5k
ZXggNzFmY2EyMzVlYWVlYjVkZTNmYzRhZGNkMzE2OTEzMTkxYjhmZWM1Zi4uMWU1YzBmMDdiYjVl
OGQ0NWM5NTc2ODQ2MmI0MGE1NmJiYWNlNzkzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgUG9zaXRpb24gSW5zZXJ0
VGV4dENvbW1hbmQ6OnBvc2l0aW9uSW5zaWRlVGV4dE5vZGUoY29uc3QgUG9zaXRpb24mIHApCiB7
CiAgICAgUG9zaXRpb24gcG9zID0gcDsKICAgICBpZiAoaXNUYWJTcGFuVGV4dE5vZGUocG9zLmFu
Y2hvck5vZGUoKSkpIHsKLSAgICAgICAgYXV0byB0ZXh0Tm9kZSA9IGRvY3VtZW50KCkuY3JlYXRl
RWRpdGluZ1RleHROb2RlKGVtcHR5U3RyaW5nKCkpOworICAgICAgICBhdXRvIHRleHROb2RlID0g
ZG9jdW1lbnQoKS5jcmVhdGVFZGl0aW5nVGV4dE5vZGUoU3RyaW5nIHsgZW1wdHlTdHJpbmcoKSB9
KTsKICAgICAgICAgaW5zZXJ0Tm9kZUF0VGFiU3BhblBvc2l0aW9uKHRleHROb2RlLmNvcHlSZWYo
KSwgcG9zKTsKICAgICAgICAgcmV0dXJuIGZpcnN0UG9zaXRpb25Jbk5vZGUodGV4dE5vZGUucHRy
KCkpOwogICAgIH0KQEAgLTY2LDcgKzY2LDcgQEAgUG9zaXRpb24gSW5zZXJ0VGV4dENvbW1hbmQ6
OnBvc2l0aW9uSW5zaWRlVGV4dE5vZGUoY29uc3QgUG9zaXRpb24mIHApCiAgICAgLy8gUHJlcGFy
ZSBmb3IgdGV4dCBpbnB1dCBieSBsb29raW5nIGF0IHRoZSBzcGVjaWZpZWQgcG9zaXRpb24uCiAg
ICAgLy8gSXQgbWF5IGJlIG5lY2Vzc2FyeSB0byBpbnNlcnQgYSB0ZXh0IG5vZGUgdG8gcmVjZWl2
ZSBjaGFyYWN0ZXJzLgogICAgIGlmICghcG9zLmNvbnRhaW5lck5vZGUoKS0+aXNUZXh0Tm9kZSgp
KSB7Ci0gICAgICAgIGF1dG8gdGV4dE5vZGUgPSBkb2N1bWVudCgpLmNyZWF0ZUVkaXRpbmdUZXh0
Tm9kZShlbXB0eVN0cmluZygpKTsKKyAgICAgICAgYXV0byB0ZXh0Tm9kZSA9IGRvY3VtZW50KCku
Y3JlYXRlRWRpdGluZ1RleHROb2RlKFN0cmluZyB7IGVtcHR5U3RyaW5nKCkgfSk7CiAgICAgICAg
IGluc2VydE5vZGVBdCh0ZXh0Tm9kZS5jb3B5UmVmKCksIHBvcyk7CiAgICAgICAgIHJldHVybiBm
aXJzdFBvc2l0aW9uSW5Ob2RlKHRleHROb2RlLnB0cigpKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDk0MWRm
ZWU4ZWY3NDBlMmNkZmZiYzFlNTg1NjZhMDcxN2I3ZTdjZWUuLjVlYjNiZDA4NzM0MzJiNGQwYzhk
OWY5MTBkMjg3ZGIxYjU5OGRmYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC0xNTk4LDcgKzE1OTgsNyBAQCB2b2lkIFJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kOjphZGRTcGFjZXNGb3JTbWFydFJlcGxhY2UoKQogICAgICAg
ICAgICAgaWYgKG1fZW5kT2ZJbnNlcnRlZENvbnRlbnQuY29udGFpbmVyTm9kZSgpID09IGVuZE5v
ZGUpCiAgICAgICAgICAgICAgICAgbV9lbmRPZkluc2VydGVkQ29udGVudC5tb3ZlVG9PZmZzZXQo
bV9lbmRPZkluc2VydGVkQ29udGVudC5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSArIDEpOwogICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXV0byBub2RlID0gZG9jdW1lbnQoKS5jcmVhdGVF
ZGl0aW5nVGV4dE5vZGUoY29sbGFwc2VXaGl0ZVNwYWNlID8gbm9uQnJlYWtpbmdTcGFjZVN0cmlu
ZygpIDogIiAiX3MpOworICAgICAgICAgICAgYXV0byBub2RlID0gZG9jdW1lbnQoKS5jcmVhdGVF
ZGl0aW5nVGV4dE5vZGUoY29sbGFwc2VXaGl0ZVNwYWNlID8gU3RyaW5nIHsgbm9uQnJlYWtpbmdT
cGFjZVN0cmluZygpIH0gOiAiICJfcyk7CiAgICAgICAgICAgICBpbnNlcnROb2RlQWZ0ZXIobm9k
ZS5jb3B5UmVmKCksICplbmROb2RlKTsKICAgICAgICAgICAgIHVwZGF0ZU5vZGVzSW5zZXJ0ZWQo
bm9kZS5wdHIoKSk7CiAgICAgICAgIH0KQEAgLTE2MjIsNyArMTYyMiw3IEBAIHZvaWQgUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQ6OmFkZFNwYWNlc0ZvclNtYXJ0UmVwbGFjZSgpCiAgICAgICAgICAg
ICBpZiAobV9lbmRPZkluc2VydGVkQ29udGVudC5jb250YWluZXJOb2RlKCkgPT0gc3RhcnROb2Rl
ICYmIG1fZW5kT2ZJbnNlcnRlZENvbnRlbnQub2Zmc2V0SW5Db250YWluZXJOb2RlKCkpCiAgICAg
ICAgICAgICAgICAgbV9lbmRPZkluc2VydGVkQ29udGVudC5tb3ZlVG9PZmZzZXQobV9lbmRPZklu
c2VydGVkQ29udGVudC5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSArIDEpOwogICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgYXV0byBub2RlID0gZG9jdW1lbnQoKS5jcmVhdGVFZGl0aW5nVGV4
dE5vZGUoY29sbGFwc2VXaGl0ZVNwYWNlID8gbm9uQnJlYWtpbmdTcGFjZVN0cmluZygpIDogIiAi
X3MpOworICAgICAgICAgICAgYXV0byBub2RlID0gZG9jdW1lbnQoKS5jcmVhdGVFZGl0aW5nVGV4
dE5vZGUoY29sbGFwc2VXaGl0ZVNwYWNlID8gU3RyaW5nIHsgbm9uQnJlYWtpbmdTcGFjZVN0cmlu
ZygpIH0gOiAiICJfcyk7CiAgICAgICAgICAgICAvLyBEb24ndCB1cGRhdGVOb2Rlc0luc2VydGVk
LiBEb2luZyBzbyB3b3VsZCBzZXQgbV9lbmRPZkluc2VydGVkQ29udGVudCB0byBiZSB0aGUgbm9k
ZSBjb250YWluaW5nIHRoZSBsZWFkaW5nIHNwYWNlLAogICAgICAgICAgICAgLy8gYnV0IG1fZW5k
T2ZJbnNlcnRlZENvbnRlbnQgaXMgc3VwcG9zZWQgdG8gbWFyayB0aGUgZW5kIG9mIHBhc3RlZCBj
b250ZW50LgogICAgICAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShub2RlLCAqc3RhcnROb2RlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJv
bGxlci5jcHAKaW5kZXggMDFjNmVlYWU5MTZlYTVhYTIzNDIzZWYzMTIzYTE3YzBkZGIyNmYxYS4u
NDA2MGQwMDEyNzFhNjJhYjU2ZTI5NzIwOTA0OGNiODgxZDllNjQ2MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKQEAg
LTg4MSw3ICs4ODEsNyBAQCBhdXRvIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpyZXBsYWNl
KGNvbnN0IE1hbmlwdWxhdGlvbkl0ZW1EYXRhJiBpdGVtLCBjb25zdAogICAgICAgICAgICAgZm9y
IChSZWZQdHI8Tm9kZT4gZGVzY2VuZGVudE5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KCpvcmln
aW5hbE5vZGUsIG9yaWdpbmFsTm9kZSk7IGRlc2NlbmRlbnROb2RlOyBkZXNjZW5kZW50Tm9kZSA9
IE5vZGVUcmF2ZXJzYWw6Om5leHQoKmRlc2NlbmRlbnROb2RlLCBvcmlnaW5hbE5vZGUpKQogICAg
ICAgICAgICAgICAgIG5vZGVzVG9SZW1vdmUucmVtb3ZlKCpkZXNjZW5kZW50Tm9kZSk7CiAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgcmVwbGFjZW1lbnROb2RlID0gVGV4dDo6Y3JlYXRlKGNv
bW1vbkFuY2VzdG9yLT5kb2N1bWVudCgpLCByZXBsYWNlbWVudFRleHQpOworICAgICAgICAgICAg
cmVwbGFjZW1lbnROb2RlID0gVGV4dDo6Y3JlYXRlKGNvbW1vbkFuY2VzdG9yLT5kb2N1bWVudCgp
LCBXVEZNb3ZlKHJlcGxhY2VtZW50VGV4dCkpOwogCiAgICAgICAgIGF1dG8gdG9wRG93blBhdGgg
PSBnZXRQYXRoKGNvbW1vbkFuY2VzdG9yLmdldCgpLCBvcmlnaW5hbE5vZGUpOwogICAgICAgICB1
cGRhdGVJbnNlcnRpb25zKGxhc3RUb3BEb3duUGF0aCwgdG9wRG93blBhdGgsIHJlcGxhY2VtZW50
Tm9kZS5nZXQoKSwgcmV1c2VkT3JpZ2luYWxOb2RlcywgaW5zZXJ0aW9ucyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KaW5kZXggNDVlMmM3YWIyZWVi
ZDJhOWI2YjQwN2QxYzIyYTYyNGFkMjZjMmQyMy4uNGUzY2RlMTg5OTBmY2JhOGY4NWM1NTU0YmQy
MGE1OTNhNGQyZjc3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9E
YXRhRGV0ZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURl
dGVjdGlvbi5tbQpAQCAtNTg2LDEzICs1ODYsMTMgQEAgTlNBcnJheSAqRGF0YURldGVjdGlvbjo6
ZGV0ZWN0Q29udGVudEluUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIGNvbnRleHRSYW5nZSwgT3AK
ICAgICAgICAgICAgICAgICB0ZXh0Tm9kZURhdGEgPSBjdXJyZW50VGV4dE5vZGUuZGF0YSgpLnN1
YnN0cmluZyhjb250ZW50T2Zmc2V0LCByYW5nZS5zdGFydC5vZmZzZXQgLSBjb250ZW50T2Zmc2V0
KTsKIAogICAgICAgICAgICAgaWYgKCF0ZXh0Tm9kZURhdGEuaXNFbXB0eSgpKSB7Ci0gICAgICAg
ICAgICAgICAgcGFyZW50Tm9kZS0+aW5zZXJ0QmVmb3JlKFRleHQ6OmNyZWF0ZShkb2N1bWVudCwg
dGV4dE5vZGVEYXRhKSwgJmN1cnJlbnRUZXh0Tm9kZSk7CisgICAgICAgICAgICAgICAgcGFyZW50
Tm9kZS0+aW5zZXJ0QmVmb3JlKFRleHQ6OmNyZWF0ZShkb2N1bWVudCwgV1RGTW92ZSh0ZXh0Tm9k
ZURhdGEpKSwgJmN1cnJlbnRUZXh0Tm9kZSk7CiAgICAgICAgICAgICAgICAgY29udGVudE9mZnNl
dCA9IHJhbmdlLnN0YXJ0Lm9mZnNldDsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8g
Q3JlYXRlIHRoZSBhY3R1YWwgYW5jaG9yIG5vZGUgYW5kIGluc2VydCBpdCBiZWZvcmUgdGhlIGN1
cnJlbnQgbm9kZS4KICAgICAgICAgICAgIHRleHROb2RlRGF0YSA9IGN1cnJlbnRUZXh0Tm9kZS5k
YXRhKCkuc3Vic3RyaW5nKHJhbmdlLnN0YXJ0Lm9mZnNldCwgcmFuZ2UuZW5kLm9mZnNldCAtIHJh
bmdlLnN0YXJ0Lm9mZnNldCk7Ci0gICAgICAgICAgICBhdXRvIG5ld1RleHROb2RlID0gVGV4dDo6
Y3JlYXRlKGRvY3VtZW50LCB0ZXh0Tm9kZURhdGEpOworICAgICAgICAgICAgYXV0byBuZXdUZXh0
Tm9kZSA9IFRleHQ6OmNyZWF0ZShkb2N1bWVudCwgV1RGTW92ZSh0ZXh0Tm9kZURhdGEpKTsKICAg
ICAgICAgICAgIHBhcmVudE5vZGUtPmluc2VydEJlZm9yZShuZXdUZXh0Tm9kZS5jb3B5UmVmKCks
ICZjdXJyZW50VGV4dE5vZGUpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBSZWY8SFRNTEFu
Y2hvckVsZW1lbnQ+IGFuY2hvckVsZW1lbnQgPSBIVE1MQW5jaG9yRWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQppbmRleCA2MzYy
OTM2NTczYmFlYzY4YTI1NmU1Y2E2Y2ViODE3NmY0MzM4MzAyLi42YzMzZDZmNmEyMmQ1MmE2ZGNh
MWQ5MTk5ZmNjYWQzNjg5NmY2NmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9y
SU9TLm1tCkBAIC0zMjgsNyArMzI4LDcgQEAgdm9pZCBFZGl0b3I6OmNvbmZpcm1NYXJrZWRUZXh0
KCkKICAgICAgICAgY29uZmlybUNvbXBvc2l0aW9uKCk7CiB9CiAKLXZvaWQgRWRpdG9yOjpzZXRU
ZXh0QXNDaGlsZE9mRWxlbWVudChjb25zdCBTdHJpbmcmIHRleHQsIEVsZW1lbnQmIGVsZW1lbnQp
Cit2b2lkIEVkaXRvcjo6c2V0VGV4dEFzQ2hpbGRPZkVsZW1lbnQoU3RyaW5nJiYgdGV4dCwgRWxl
bWVudCYgZWxlbWVudCkKIHsKICAgICAvLyBDbGVhciB0aGUgY29tcG9zaXRpb24KICAgICBjbGVh
cigpOwpAQCAtMzQ2LDcgKzM0Niw3IEBAIHZvaWQgRWRpdG9yOjpzZXRUZXh0QXNDaGlsZE9mRWxl
bWVudChjb25zdCBTdHJpbmcmIHRleHQsIEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgLy8gV2hhdCBm
b2xsb3dzIGlzIG1vcmUgZXhwZW5zaXZlIGlmIHRoZXJlIGlzIGEgc2VsZWN0aW9uLCBzbyBjbGVh
ciBpdCBzaW5jZSBpdCdzIGdvaW5nIHRvIGNoYW5nZSBhbnl3YXkuCiAgICAgbV9kb2N1bWVudC5z
ZWxlY3Rpb24oKS5jbGVhcigpOwogCi0gICAgZWxlbWVudC5zdHJpbmdSZXBsYWNlQWxsKHRleHQp
OworICAgIGVsZW1lbnQuc3RyaW5nUmVwbGFjZUFsbChXVEZNb3ZlKHRleHQpKTsKIAogICAgIFZp
c2libGVQb3NpdGlvbiBhZnRlckNvbnRlbnRzID0gbWFrZUNvbnRhaW5lck9mZnNldFBvc2l0aW9u
KCZlbGVtZW50LCBlbGVtZW50LmNvdW50Q2hpbGROb2RlcygpKTsKICAgICBpZiAoYWZ0ZXJDb250
ZW50cy5pc051bGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3Vw
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCAxYWMxNWRkNDBl
ZWYwMDQ4MGNjYzVjYzBhZTBkMThkNWIxM2YxNDg3Li43NzFiZjhhZTRmNjhmODg4NTU0OTFiYjVk
MjY1MDI4ZGNlODg4NGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC0xMTgwLDgg
KzExODAsOSBAQCBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChj
b25zdCBTaW1wbGVSYW5nZSYgY29udGV4dCwgY29uc3QgUwogICAgIH07CiAKICAgICBpZiAoY29u
dGV4dFByZXNlcnZlc05ld2xpbmUoY29udGV4dCkpIHsKLSAgICAgICAgZnJhZ21lbnQtPmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0cmluZykpOwotICAgICAgICBpZiAoc3Ry
aW5nLmVuZHNXaXRoKCdcbicpKSB7CisgICAgICAgIGJvb2wgZW5kc1dpdGhOZXdMaW5lID0gc3Ry
aW5nLmVuZHNXaXRoKCdcbicpOworICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoV1RGTW92ZShzdHJpbmcpKSk7CisgICAgICAgIGlmIChlbmRzV2l0
aE5ld0xpbmUpIHsKICAgICAgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChjcmVhdGVIVE1M
QlJFbGVtZW50KCkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBmcmFnbWVudDsKQEAgLTEy
NzMsNyArMTI3NCw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxEb2N1bWVudEZyYWdtZW50Pj4gY3JlYXRl
RnJhZ21lbnRGb3JJbm5lck91dGVySFRNTChFbGVtZW50JiBjb250CiAgICAgcmV0dXJuIGNyZWF0
ZUZyYWdtZW50Rm9yTWFya3VwKGNvbnRleHRFbGVtZW50LCBtYXJrdXAsIERvY3VtZW50RnJhZ21l
bnRNb2RlOjpSZXVzZUZvcklubmVyT3V0ZXJIVE1MLCBwYXJzZXJDb250ZW50UG9saWN5KTsKIH0K
IAotUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9yVHJhbnNmb3JtVG9G
cmFnbWVudChEb2N1bWVudCYgb3V0cHV0RG9jLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZywg
Y29uc3QgU3RyaW5nJiBzb3VyY2VNSU1FVHlwZSkKK1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBj
cmVhdGVGcmFnbWVudEZvclRyYW5zZm9ybVRvRnJhZ21lbnQoRG9jdW1lbnQmIG91dHB1dERvYywg
U3RyaW5nJiYgc291cmNlU3RyaW5nLCBjb25zdCBTdHJpbmcmIHNvdXJjZU1JTUVUeXBlKQogewog
ICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IG91dHB1dERvYy5jcmVhdGVE
b2N1bWVudEZyYWdtZW50KCk7CiAgICAgCkBAIC0xMjgzLDExICsxMjg0LDExIEBAIFJlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvclRyYW5zZm9ybVRvRnJhZ21lbnQoRG9j
dW1lbnQmIG91dHB1dERvCiAgICAgICAgIC8vIFVuZm9ydHVuYXRlbHksIHRoYXQncyBhbiBpbXBs
ZW1lbnRhdGlvbiBkZXRhaWwgb2YgdGhlIHBhcnNlci4KICAgICAgICAgLy8gV2UgYWNoaWV2ZSB0
aGF0IGVmZmVjdCBoZXJlIGJ5IHBhc3NpbmcgaW4gYSBmYWtlIGJvZHkgZWxlbWVudCBhcyBjb250
ZXh0IGZvciB0aGUgZnJhZ21lbnQuCiAgICAgICAgIGF1dG8gZmFrZUJvZHkgPSBIVE1MQm9keUVs
ZW1lbnQ6OmNyZWF0ZShvdXRwdXREb2MpOwotICAgICAgICBmcmFnbWVudC0+cGFyc2VIVE1MKHNv
dXJjZVN0cmluZywgZmFrZUJvZHkucHRyKCkpOworICAgICAgICBmcmFnbWVudC0+cGFyc2VIVE1M
KFdURk1vdmUoc291cmNlU3RyaW5nKSwgZmFrZUJvZHkucHRyKCkpOwogICAgIH0gZWxzZSBpZiAo
c291cmNlTUlNRVR5cGUgPT0gInRleHQvcGxhaW4iKQotICAgICAgICBmcmFnbWVudC0+cGFyc2Vy
QXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKG91dHB1dERvYywgc291cmNlU3RyaW5nKSk7CisgICAg
ICAgIGZyYWdtZW50LT5wYXJzZXJBcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUob3V0cHV0RG9jLCBX
VEZNb3ZlKHNvdXJjZVN0cmluZykpKTsKICAgICBlbHNlIHsKLSAgICAgICAgYm9vbCBzdWNjZXNz
ZnVsUGFyc2UgPSBmcmFnbWVudC0+cGFyc2VYTUwoc291cmNlU3RyaW5nLCAwKTsKKyAgICAgICAg
Ym9vbCBzdWNjZXNzZnVsUGFyc2UgPSBmcmFnbWVudC0+cGFyc2VYTUwoV1RGTW92ZShzb3VyY2VT
dHJpbmcpLCAwKTsKICAgICAgICAgaWYgKCFzdWNjZXNzZnVsUGFyc2UpCiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hcmt1cC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAppbmRleCA5MjUxMWE5
MzQ2NmJhOTQ4NDEyNDFiYWZkNjRlMGZjZDEzZTExYWUzLi4zYmUxYTRjMmEyMTllNmViMzRkM2Fh
NmQxMmM1YTM2ZTMzNGJmMmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
cmt1cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKQEAgLTYxLDcgKzYx
LDcgQEAgU3RyaW5nIHNhbml0aXplZE1hcmt1cEZvckZyYWdtZW50SW5Eb2N1bWVudChSZWY8RG9j
dW1lbnRGcmFnbWVudD4mJiwgRG9jdW1lbnQmLAogV0VCQ09SRV9FWFBPUlQgUmVmPERvY3VtZW50
RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoY29uc3QgU2ltcGxlUmFuZ2UmIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgdGV4dCk7CiBXRUJDT1JFX0VYUE9SVCBSZWY8RG9jdW1lbnRGcmFn
bWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBt
YXJrdXAsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgUGFyc2VyQ29udGVudFBvbGljeSA9IEFsbG93
U2NyaXB0aW5nQ29udGVudCk7CiBFeGNlcHRpb25PcjxSZWY8RG9jdW1lbnRGcmFnbWVudD4+IGNy
ZWF0ZUZyYWdtZW50Rm9ySW5uZXJPdXRlckhUTUwoRWxlbWVudCYsIGNvbnN0IFN0cmluZyYgbWFy
a3VwLCBQYXJzZXJDb250ZW50UG9saWN5KTsKLVJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVh
dGVGcmFnbWVudEZvclRyYW5zZm9ybVRvRnJhZ21lbnQoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVN0cmluZywgY29uc3QgU3RyaW5nJiBzb3VyY2VNSU1FVHlwZSk7CitSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JUcmFuc2Zvcm1Ub0ZyYWdtZW50KERvY3Vt
ZW50JiwgU3RyaW5nJiYgc291cmNlU3RyaW5nLCBjb25zdCBTdHJpbmcmIHNvdXJjZU1JTUVUeXBl
KTsKIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQW5kVVJMKERv
Y3VtZW50JiwgY29uc3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKTsK
IEV4Y2VwdGlvbk9yPFJlZjxEb2N1bWVudEZyYWdtZW50Pj4gY3JlYXRlQ29udGV4dHVhbEZyYWdt
ZW50KEVsZW1lbnQmLCBjb25zdCBTdHJpbmcmIG1hcmt1cCwgUGFyc2VyQ29udGVudFBvbGljeSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRU
eXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNw
cAppbmRleCAzNzU1MjgxZDE4MmUzYWFiZTE4Yzc5ZDlkMzUxMzY5YWM3MzU0ZTgyLi44NDUyZjVh
NjM3MzRmOTQ0YzVmZjlmYjFhMTFmZTQ5ZmU5ZmFkMmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCkBAIC0zNDYsNyArMzQ2LDcgQEAg
dm9pZCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnVwZGF0ZUlubmVyVGV4dFZhbHVlKCkKICAg
ICAgICAgICAgIC8vIE5lZWQgdG8gcHV0IHNvbWV0aGluZyB0byBrZWVwIHRleHQgYmFzZWxpbmUu
CiAgICAgICAgICAgICBkaXNwbGF5VmFsdWUgPSAiICJfczsKICAgICAgICAgfQotICAgICAgICBk
b3duY2FzdDxIVE1MRWxlbWVudD4oKm5vZGUpLnNldElubmVyVGV4dChkaXNwbGF5VmFsdWUpOwor
ICAgICAgICBkb3duY2FzdDxIVE1MRWxlbWVudD4oKm5vZGUpLnNldElubmVyVGV4dChXVEZNb3Zl
KGRpc3BsYXlWYWx1ZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaAppbmRleCA2YmY2ZDZiOTAzYjRh
ZDc2NTk2YmJhY2NlNTRkMTdkMzdhMzFlOGNmLi45NDhmOWUzZTkyNDc1YzZiOTJlZDE5OGNkYzBi
MzUyZDVjNTQ3OTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5k
VGltZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1l
SW5wdXRUeXBlLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgRGF0ZVRpbWVG
b3JtYXRWYWxpZGF0b3IoKSB7IH0KIAogICAgICAgICB2b2lkIHZpc2l0RmllbGQoRGF0ZVRpbWVG
b3JtYXQ6OkZpZWxkVHlwZSwgaW50KTsKLSAgICAgICAgdm9pZCB2aXNpdExpdGVyYWwoY29uc3Qg
U3RyaW5nJikgeyB9CisgICAgICAgIHZvaWQgdmlzaXRMaXRlcmFsKFN0cmluZyYmKSB7IH0KIAog
ICAgICAgICBib29sIHZhbGlkYXRlRm9ybWF0KGNvbnN0IFN0cmluZyYgZm9ybWF0LCBjb25zdCBC
YXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERp
cmVjdG9yeURvY3VtZW50LmNwcAppbmRleCAxNTYyOGQ5NTlmYmJhMmVjN2I4NTRkMzZlNjkwMTFi
MTJlNjNmM2QyLi40MzVjZWRhZTE2YThjMWUxNzBmMGI0MzFlYWQ1OGZlYzVlNGJlY2YzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcApAQCAtODMsOCAr
ODMsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlQmFzaWNEb2N1bWVudCgpOwogCiAgICAg
dm9pZCBwYXJzZUFuZEFwcGVuZE9uZUxpbmUoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBhcHBl
bmRFbnRyeShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc2l6ZSwgY29uc3QgU3Ry
aW5nJiBkYXRlLCBib29sIGlzRGlyZWN0b3J5KTsgICAgCi0gICAgUmVmPEVsZW1lbnQ+IGNyZWF0
ZVRERm9yRmlsZW5hbWUoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBhcHBlbmRFbnRyeShTdHJp
bmcmJiBuYW1lLCBTdHJpbmcmJiBzaXplLCBTdHJpbmcmJiBkYXRlLCBib29sIGlzRGlyZWN0b3J5
KTsKKyAgICBSZWY8RWxlbWVudD4gY3JlYXRlVERGb3JGaWxlbmFtZShTdHJpbmcmJik7CiAKICAg
ICBSZWZQdHI8SFRNTFRhYmxlRWxlbWVudD4gbV90YWJsZUVsZW1lbnQ7CiAKQEAgLTEwNSw3ICsx
MDUsNyBAQCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQ
YXJzZXIoSFRNTERvY3VtZW50JiBkb2N1bWVudCkKIHsKIH0KIAotdm9pZCBGVFBEaXJlY3RvcnlE
b2N1bWVudFBhcnNlcjo6YXBwZW5kRW50cnkoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
U3RyaW5nJiBzaXplLCBjb25zdCBTdHJpbmcmIGRhdGUsIGJvb2wgaXNEaXJlY3RvcnkpCit2b2lk
IEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjphcHBlbmRFbnRyeShTdHJpbmcmJiBmaWxlbmFt
ZSwgU3RyaW5nJiYgc2l6ZSwgU3RyaW5nJiYgZGF0ZSwgYm9vbCBpc0RpcmVjdG9yeSkKIHsKICAg
ICBhdXRvJiBkb2N1bWVudCA9ICp0aGlzLT5kb2N1bWVudCgpOwogCkBAIC0xMjAsMjMgKzEyMCwy
MyBAQCB2b2lkIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjphcHBlbmRFbnRyeShjb25zdCBT
dHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbgogICAgICAgICB0eXBlRWxlbWVudC0+c2V0QXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmNsYXNzQXR0ciwgQXRvbVN0
cmluZygiZnRwRGlyZWN0b3J5SWNvbiBmdHBEaXJlY3RvcnlUeXBlRmlsZSIsIEF0b21TdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAgICAgcm93RWxlbWVudC0+YXBwZW5kQ2hpbGQodHlw
ZUVsZW1lbnQpOwogCi0gICAgYXV0byBuYW1lRWxlbWVudCA9IGNyZWF0ZVRERm9yRmlsZW5hbWUo
ZmlsZW5hbWUpOworICAgIGF1dG8gbmFtZUVsZW1lbnQgPSBjcmVhdGVUREZvckZpbGVuYW1lKFdU
Rk1vdmUoZmlsZW5hbWUpKTsKICAgICBuYW1lRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmNsYXNzQXR0ciwgQXRvbVN0cmluZygiZnRwRGlyZWN0
b3J5RmlsZU5hbWUiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIHJv
d0VsZW1lbnQtPmFwcGVuZENoaWxkKG5hbWVFbGVtZW50KTsKIAogICAgIGF1dG8gZGF0ZUVsZW1l
bnQgPSBIVE1MVGFibGVDZWxsRWxlbWVudDo6Y3JlYXRlKHRkVGFnLCBkb2N1bWVudCk7Ci0gICAg
ZGF0ZUVsZW1lbnQtPmFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVudCwgZGF0ZSkpOwor
ICAgIGRhdGVFbGVtZW50LT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIFdURk1v
dmUoZGF0ZSkpKTsKICAgICBkYXRlRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihIVE1MTmFtZXM6OmNsYXNzQXR0ciwgQXRvbVN0cmluZygiZnRwRGlyZWN0b3J5Rmls
ZURhdGUiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIHJvd0VsZW1l
bnQtPmFwcGVuZENoaWxkKGRhdGVFbGVtZW50KTsKIAogICAgIGF1dG8gc2l6ZUVsZW1lbnQgPSBI
VE1MVGFibGVDZWxsRWxlbWVudDo6Y3JlYXRlKHRkVGFnLCBkb2N1bWVudCk7Ci0gICAgc2l6ZUVs
ZW1lbnQtPmFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVudCwgc2l6ZSkpOworICAgIHNp
emVFbGVtZW50LT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIFdURk1vdmUoc2l6
ZSkpKTsKICAgICBzaXplRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihIVE1MTmFtZXM6OmNsYXNzQXR0ciwgQXRvbVN0cmluZygiZnRwRGlyZWN0b3J5RmlsZVNpemUi
LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIHJvd0VsZW1lbnQtPmFw
cGVuZENoaWxkKHNpemVFbGVtZW50KTsKICAgICBkb2N1bWVudC5zZXRIYXNWaXN1YWxseU5vbkVt
cHR5Q3VzdG9tQ29udGVudCgpOwogfQogCi1SZWY8RWxlbWVudD4gRlRQRGlyZWN0b3J5RG9jdW1l
bnRQYXJzZXI6OmNyZWF0ZVRERm9yRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKK1Jl
ZjxFbGVtZW50PiBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6Y3JlYXRlVERGb3JGaWxlbmFt
ZShTdHJpbmcmJiBmaWxlbmFtZSkKIHsKICAgICBhdXRvJiBkb2N1bWVudCA9ICp0aGlzLT5kb2N1
bWVudCgpOwogCkBAIC0xNDgsNyArMTQ4LDcgQEAgUmVmPEVsZW1lbnQ+IEZUUERpcmVjdG9yeURv
Y3VtZW50UGFyc2VyOjpjcmVhdGVUREZvckZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW4KIAog
ICAgIGF1dG8gYW5jaG9yRWxlbWVudCA9IEhUTUxBbmNob3JFbGVtZW50OjpjcmVhdGUoZG9jdW1l
bnQpOwogICAgIGFuY2hvckVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oSFRNTE5hbWVzOjpocmVmQXR0ciwgZnVsbFVSTCk7Ci0gICAgYW5jaG9yRWxlbWVudC0+YXBw
ZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50LCBmaWxlbmFtZSkpOworICAgIGFuY2hvckVs
ZW1lbnQtPmFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVudCwgV1RGTW92ZShmaWxlbmFt
ZSkpKTsKIAogICAgIGF1dG8gdGRFbGVtZW50ID0gSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OmNyZWF0
ZSh0ZFRhZywgZG9jdW1lbnQpOwogICAgIHRkRWxlbWVudC0+YXBwZW5kQ2hpbGQoYW5jaG9yRWxl
bWVudCk7CkBAIC0yNzQsNyArMjc0LDcgQEAgdm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNl
cjo6cGFyc2VBbmRBcHBlbmRPbmVMaW5lKGNvbnN0IFN0cmluZyYgaW5wdXRMaW5lKQogCiAgICAg
TE9HKEZUUCwgIkFwcGVuZGluZyBlbnRyeSAtICVzLCAlcyIsIGZpbGVuYW1lLmFzY2lpKCkuZGF0
YSgpLCByZXN1bHQuZmlsZVNpemUuYXNjaWkoKS5kYXRhKCkpOwogCi0gICAgYXBwZW5kRW50cnko
ZmlsZW5hbWUsIHByb2Nlc3NGaWxlc2l6ZVN0cmluZyhyZXN1bHQuZmlsZVNpemUsIHJlc3VsdC50
eXBlID09IEZUUERpcmVjdG9yeUVudHJ5KSwgcHJvY2Vzc0ZpbGVEYXRlU3RyaW5nKHJlc3VsdC5t
b2RpZmllZFRpbWUpLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSk7CisgICAgYXBw
ZW5kRW50cnkoV1RGTW92ZShmaWxlbmFtZSksIHByb2Nlc3NGaWxlc2l6ZVN0cmluZyhyZXN1bHQu
ZmlsZVNpemUsIHJlc3VsdC50eXBlID09IEZUUERpcmVjdG9yeUVudHJ5KSwgcHJvY2Vzc0ZpbGVE
YXRlU3RyaW5nKHJlc3VsdC5tb2RpZmllZFRpbWUpLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3Rv
cnlFbnRyeSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
VGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAppbmRleCA3NGZlNmFhZDc2MGNmM2FjOTU4
MTM1YTM4MGM0MmNlZWJlODc5YmY0Li40YWQ0NmRlMjljNWFlMDgxZDYzY2Q4Zjc1YWNjZjY2OWJj
YzNlMTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcApAQCAt
MzUxLDkgKzM1MSw5IEBAIFN0cmluZyBIVE1MQW5jaG9yRWxlbWVudDo6dGV4dCgpCiAgICAgcmV0
dXJuIHRleHRDb250ZW50KCk7CiB9CiAKLXZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldFRleHQo
Y29uc3QgU3RyaW5nJiB0ZXh0KQordm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0VGV4dChTdHJp
bmcmJiB0ZXh0KQogewotICAgIHNldFRleHRDb250ZW50KHRleHQpOworICAgIHNldFRleHRDb250
ZW50KFdURk1vdmUodGV4dCkpOwogfQogCiBib29sIEhUTUxBbmNob3JFbGVtZW50Ojppc0xpdmVM
aW5rKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaAppbmRleCBh
ZGQ2MTgzMDg2YTQxNmJlNzNkYmZkNzViOTJhMmRjYWFhM2RkNDZlLi4zNDM4ZWE2NGI0NTY3M2M4
NDcyM2M1YjA4NmM4MDdhMDFmYzAyOGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBbmNob3JFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9y
RWxlbWVudC5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBT
dHJpbmcgb3JpZ2luKCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdGV4dCgp
OwotICAgIHZvaWQgc2V0VGV4dChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldFRleHQoU3Ry
aW5nJiYpOwogCiAgICAgYm9vbCBpc0xpdmVMaW5rKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5jcHAKaW5kZXggODE0MTgxMDJmM2YwYmRkN2RiMjJkYTcwNDA3MzU0MmJjZjlm
NjdlNC4uMjJhNjYyMDZhYzRhNmYwMTIzMzkzMTI1YzFmNTM1MmYwZGQzODVjZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTQzNSwzNiArNDM1LDM2IEBAIHZvaWQgSFRNTEVs
ZW1lbnQ6OnNldERpcihjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKICAgICBzZXRBdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKGRpckF0dHIsIHZhbHVlKTsKIH0KIAotRXhjZXB0aW9uT3I8
dm9pZD4gSFRNTEVsZW1lbnQ6OnNldElubmVyVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCitFeGNl
cHRpb25Pcjx2b2lkPiBIVE1MRWxlbWVudDo6c2V0SW5uZXJUZXh0KFN0cmluZyYmIHRleHQpCiB7
CiAgICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCB0YWtlIHdoaXRlc3BhY2UgY29sbGFwc2luZyBp
bnRvIGFjY291bnQgYXQgYWxsLgogCiAgICAgaWYgKCF0ZXh0LmNvbnRhaW5zKCdcbicpICYmICF0
ZXh0LmNvbnRhaW5zKCdccicpKSB7Ci0gICAgICAgIHN0cmluZ1JlcGxhY2VBbGwodGV4dCk7Cisg
ICAgICAgIHN0cmluZ1JlcGxhY2VBbGwoV1RGTW92ZSh0ZXh0KSk7CiAgICAgICAgIHJldHVybiB7
IH07CiAgICAgfQogCiAgICAgaWYgKGlzQ29ubmVjdGVkKCkgJiYgaXNUZXh0Q29udHJvbElubmVy
VGV4dEVsZW1lbnQoKSkgewogICAgICAgICBpZiAoIXRleHQuY29udGFpbnMoJ1xyJykpIHsKLSAg
ICAgICAgICAgIHN0cmluZ1JlcGxhY2VBbGwodGV4dCk7CisgICAgICAgICAgICBzdHJpbmdSZXBs
YWNlQWxsKFdURk1vdmUodGV4dCkpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAg
fQotICAgICAgICBTdHJpbmcgdGV4dFdpdGhDb25zaXN0ZW50TGluZUJyZWFrcyA9IHRleHQ7Cisg
ICAgICAgIFN0cmluZyB0ZXh0V2l0aENvbnNpc3RlbnRMaW5lQnJlYWtzID0gV1RGTW92ZSh0ZXh0
KTsKICAgICAgICAgdGV4dFdpdGhDb25zaXN0ZW50TGluZUJyZWFrcy5yZXBsYWNlKCJcclxuIiwg
IlxuIik7CiAgICAgICAgIHRleHRXaXRoQ29uc2lzdGVudExpbmVCcmVha3MucmVwbGFjZSgnXHIn
LCAnXG4nKTsKLSAgICAgICAgc3RyaW5nUmVwbGFjZUFsbCh0ZXh0V2l0aENvbnNpc3RlbnRMaW5l
QnJlYWtzKTsKKyAgICAgICAgc3RyaW5nUmVwbGFjZUFsbChXVEZNb3ZlKHRleHRXaXRoQ29uc2lz
dGVudExpbmVCcmVha3MpKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQgdXNlIHJlcGxhY2VBbGwoKSwgYWZ0ZXIgd2UgZml4IHRoYXQgdG8g
d29yayBwcm9wZXJseSBmb3IgRG9jdW1lbnRGcmFnbWVudC4KICAgICAvLyBBZGQgdGV4dCBub2Rl
cyBhbmQgPGJyPiBlbGVtZW50cy4KLSAgICBhdXRvIGZyYWdtZW50ID0gdGV4dFRvRnJhZ21lbnQo
ZG9jdW1lbnQoKSwgdGV4dCk7CisgICAgYXV0byBmcmFnbWVudCA9IHRleHRUb0ZyYWdtZW50KGRv
Y3VtZW50KCksIFdURk1vdmUodGV4dCkpOwogICAgIC8vIEl0J3Mgc2FmZSB0byBkaXNwYXRjaCBl
dmVudHMgb24gdGhlIG5ldyBmcmFnbWVudCBzaW5jZSBhdXRob3Igc2NyaXB0cyBoYXZlIG5vIGFj
Y2VzcyB0byBpdCB5ZXQuCiAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpFdmVudEFsbG93ZWRT
Y29wZSBhbGxvd2VkU2NvcGUoZnJhZ21lbnQuZ2V0KCkpOwogICAgIHJldHVybiByZXBsYWNlQ2hp
bGRyZW5XaXRoRnJhZ21lbnQoKnRoaXMsIFdURk1vdmUoZnJhZ21lbnQpKTsKIH0KIAotRXhjZXB0
aW9uT3I8dm9pZD4gSFRNTEVsZW1lbnQ6OnNldE91dGVyVGV4dChjb25zdCBTdHJpbmcmIHRleHQp
CitFeGNlcHRpb25Pcjx2b2lkPiBIVE1MRWxlbWVudDo6c2V0T3V0ZXJUZXh0KFN0cmluZyYmIHRl
eHQpCiB7CiAgICAgUmVmUHRyPENvbnRhaW5lck5vZGU+IHBhcmVudCA9IHBhcmVudE5vZGUoKTsK
ICAgICBpZiAoIXBhcmVudCkKQEAgLTQ3Niw5ICs0NzYsOSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBI
VE1MRWxlbWVudDo6c2V0T3V0ZXJUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKIAogICAgIC8vIENv
bnZlcnQgdGV4dCB0byBmcmFnbWVudCB3aXRoIDxicj4gdGFncyBpbnN0ZWFkIG9mIGxpbmVicmVh
a3MgaWYgbmVlZGVkLgogICAgIGlmICh0ZXh0LmNvbnRhaW5zKCdccicpIHx8IHRleHQuY29udGFp
bnMoJ1xuJykpCi0gICAgICAgIG5ld0NoaWxkID0gdGV4dFRvRnJhZ21lbnQoZG9jdW1lbnQoKSwg
dGV4dCk7CisgICAgICAgIG5ld0NoaWxkID0gdGV4dFRvRnJhZ21lbnQoZG9jdW1lbnQoKSwgV1RG
TW92ZSh0ZXh0KSk7CiAgICAgZWxzZQotICAgICAgICBuZXdDaGlsZCA9IFRleHQ6OmNyZWF0ZShk
b2N1bWVudCgpLCB0ZXh0KTsKKyAgICAgICAgbmV3Q2hpbGQgPSBUZXh0OjpjcmVhdGUoZG9jdW1l
bnQoKSwgV1RGTW92ZSh0ZXh0KSk7CiAKICAgICBpZiAoIXBhcmVudE5vZGUoKSkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IEhpZXJhcmNoeVJlcXVlc3RFcnJvciB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5oCmluZGV4IGUwOGE4ZTcxZmNmZGI3ZjQ5YzBhYjA4Mjc1ZDQ3NmQxMzA5Y2E5
NzQuLmU0ZjFkMWQ0OThhOWViNDIxY2ViNDdkOGYyYzliZWE5YWIyZjI5NzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbGVtZW50LmgKQEAgLTUzLDggKzUzLDggQEAgcHVibGljOgogCiAgICAgV0VCQ09S
RV9FWFBPUlQgU3RyaW5nIHRpdGxlKCkgY29uc3QgZmluYWw7CiAKLSAgICBXRUJDT1JFX0VYUE9S
VCBFeGNlcHRpb25Pcjx2b2lkPiBzZXRJbm5lclRleHQoY29uc3QgU3RyaW5nJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gc2V0T3V0ZXJUZXh0KGNvbnN0IFN0cmluZyYp
OworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldElubmVyVGV4dChTdHJp
bmcmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gc2V0T3V0ZXJUZXh0
KFN0cmluZyYmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNDdXN0b21Gb2N1c0xvZ2ljKCkgY29u
c3Q7CiAgICAgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcAppbmRleCBiZDQ0ZTJkMDI4YTcwMDg4NjM2ZmYy
NjYwNjM3N2ViZWRkZjk3N2M1Li43ZWYwY2E5YjQwYmEwNGQ4OTA2NTY2ZTg5Mjg4Njk5N2UyZGQz
NmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5jcHAKQEAgLTIyOSw4
ICsyMjksOCBAQCB2b2lkIEhUTUxNZXRlckVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jv
b3QoU2hhZG93Um9vdCYgcm9vdCkKICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVk
PGNvbnN0IFN0cmluZz4gc2hhZG93U3R5bGUoU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlp
bmcobWV0ZXJFbGVtZW50U2hhZG93VXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKG1ldGVyRWxl
bWVudFNoYWRvd1VzZXJBZ2VudFN0eWxlU2hlZXQpKSk7CiAKICAgICBhdXRvIHN0eWxlID0gSFRN
TFN0eWxlRWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6c3R5bGVUYWcsIGRvY3VtZW50KCksIGZh
bHNlKTsKLSAgICBzdHlsZS0+c2V0VGV4dENvbnRlbnQoc2hhZG93U3R5bGUpOwotICAgIHJvb3Qu
YXBwZW5kQ2hpbGQoc3R5bGUpOworICAgIHN0eWxlLT5zZXRUZXh0Q29udGVudChTdHJpbmcgeyBz
aGFkb3dTdHlsZSB9KTsKKyAgICByb290LmFwcGVuZENoaWxkKFdURk1vdmUoc3R5bGUpKTsKIAog
ICAgIC8vIFBzZXVkb3MgYXJlIHNldCB0byBhbGxvdyBhdXRob3Igc3R5bGluZy4KICAgICBhdXRv
IGlubmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKaW5kZXggYzAxNzMzMzc4ODZmYjc5Y2UyYmM3
OTlmMzBmYjQ4YTY0ZDBhYTQ5OC4uZTIwZDNkYWQ0N2UxNDA3YWMyNDMwZDVkOTkzZDRlNzRmZTI2
ZTE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKQEAgLTcw
LDEyICs3MCwxMiBAQCBSZWY8SFRNTE9wdGlvbkVsZW1lbnQ+IEhUTUxPcHRpb25FbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRAogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEhUTUxPcHRpb25FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLUV4Y2Vw
dGlvbk9yPFJlZjxIVE1MT3B0aW9uRWxlbWVudD4+IEhUTUxPcHRpb25FbGVtZW50OjpjcmVhdGVG
b3JMZWdhY3lGYWN0b3J5RnVuY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcm
IHRleHQsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlLCBib29sIGRlZmF1bHRTZWxlY3RlZCwgYm9v
bCBzZWxlY3RlZCkKK0V4Y2VwdGlvbk9yPFJlZjxIVE1MT3B0aW9uRWxlbWVudD4+IEhUTUxPcHRp
b25FbGVtZW50OjpjcmVhdGVGb3JMZWdhY3lGYWN0b3J5RnVuY3Rpb24oRG9jdW1lbnQmIGRvY3Vt
ZW50LCBTdHJpbmcmJiB0ZXh0LCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSwgYm9vbCBkZWZhdWx0
U2VsZWN0ZWQsIGJvb2wgc2VsZWN0ZWQpCiB7CiAgICAgYXV0byBlbGVtZW50ID0gY3JlYXRlKGRv
Y3VtZW50KTsKIAogICAgIGlmICghdGV4dC5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBhcHBl
bmRSZXN1bHQgPSBlbGVtZW50LT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIHRl
eHQpKTsKKyAgICAgICAgYXV0byBhcHBlbmRSZXN1bHQgPSBlbGVtZW50LT5hcHBlbmRDaGlsZChU
ZXh0OjpjcmVhdGUoZG9jdW1lbnQsIFdURk1vdmUodGV4dCkpKTsKICAgICAgICAgaWYgKGFwcGVu
ZFJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBhcHBlbmRSZXN1bHQu
cmVsZWFzZUV4Y2VwdGlvbigpOwogICAgIH0KQEAgLTExMiw3ICsxMTIsNyBAQCBTdHJpbmcgSFRN
TE9wdGlvbkVsZW1lbnQ6OnRleHQoKSBjb25zdAogICAgIHJldHVybiBzdHJpcExlYWRpbmdBbmRU
cmFpbGluZ0hUTUxTcGFjZXMoZG9jdW1lbnQoKS5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29k
aW5nKHRleHQpKS5zaW1wbGlmeVdoaXRlU3BhY2UoaXNIVE1MU3BhY2UpOwogfQogCi12b2lkIEhU
TUxPcHRpb25FbGVtZW50OjpzZXRUZXh0KGNvbnN0IFN0cmluZyAmdGV4dCkKK3ZvaWQgSFRNTE9w
dGlvbkVsZW1lbnQ6OnNldFRleHQoU3RyaW5nJiYgdGV4dCkKIHsKICAgICBSZWYgcHJvdGVjdGVk
VGhpcyB7ICp0aGlzIH07CiAKQEAgLTEyNiwxMCArMTI2LDEwIEBAIHZvaWQgSFRNTE9wdGlvbkVs
ZW1lbnQ6OnNldFRleHQoY29uc3QgU3RyaW5nICZ0ZXh0KQogICAgIC8vIEhhbmRsZSB0aGUgY29t
bW9uIHNwZWNpYWwgY2FzZSB3aGVyZSB0aGVyZSdzIGV4YWN0bHkgMSBjaGlsZCBub2RlLCBhbmQg
aXQncyBhIHRleHQgbm9kZS4KICAgICBSZWZQdHIgY2hpbGQgPSBmaXJzdENoaWxkKCk7CiAgICAg
aWYgKGlzPFRleHQ+KGNoaWxkKSAmJiAhY2hpbGQtPm5leHRTaWJsaW5nKCkpCi0gICAgICAgIGRv
d25jYXN0PFRleHQ+KCpjaGlsZCkuc2V0RGF0YSh0ZXh0KTsKKyAgICAgICAgZG93bmNhc3Q8VGV4
dD4oKmNoaWxkKS5zZXREYXRhKFdURk1vdmUodGV4dCkpOwogICAgIGVsc2UgewogICAgICAgICBy
ZW1vdmVDaGlsZHJlbigpOwotICAgICAgICBhcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1l
bnQoKSwgdGV4dCkpOworICAgICAgICBhcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQo
KSwgV1RGTW92ZSh0ZXh0KSkpOwogICAgIH0KICAgICAKICAgICBpZiAoc2VsZWN0SXNNZW51TGlz
dCAmJiBzZWxlY3QtPnNlbGVjdGVkSW5kZXgoKSAhPSBvbGRTZWxlY3RlZEluZGV4KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oCmluZGV4IDZlMGJmNWM3ODc2MzJhZjA5NDU3
OGQ4Yjk3ZmVmOTA4YzNjMmYxYjUuLjk4NDg4YTQ3MjAxMTgxN2YyNDI1ODYzZmZkMmIxZTc4ZjY2
ZjJjMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmgKQEAgLTM3LDEw
ICszNywxMCBAQCBjbGFzcyBIVE1MT3B0aW9uRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxl
bWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxIVE1MT3B0aW9uRWxlbWVudD4gY3JlYXRl
KERvY3VtZW50Jik7CiAgICAgc3RhdGljIFJlZjxIVE1MT3B0aW9uRWxlbWVudD4gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwotICAgIHN0YXRpYyBFeGNlcHRpb25PcjxS
ZWY8SFRNTE9wdGlvbkVsZW1lbnQ+PiBjcmVhdGVGb3JMZWdhY3lGYWN0b3J5RnVuY3Rpb24oRG9j
dW1lbnQmLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlLCBib29s
IGRlZmF1bHRTZWxlY3RlZCwgYm9vbCBzZWxlY3RlZCk7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9y
PFJlZjxIVE1MT3B0aW9uRWxlbWVudD4+IGNyZWF0ZUZvckxlZ2FjeUZhY3RvcnlGdW5jdGlvbihE
b2N1bWVudCYsIFN0cmluZyYmIHRleHQsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlLCBib29sIGRl
ZmF1bHRTZWxlY3RlZCwgYm9vbCBzZWxlY3RlZCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgdGV4dCgpIGNvbnN0OwotICAgIHZvaWQgc2V0VGV4dChjb25zdCBTdHJpbmcmKTsKKyAgICB2
b2lkIHNldFRleHQoU3RyaW5nJiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IGluZGV4KCkg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKaW5kZXgg
MWZhMTZlZTc0ODQxM2EyY2Q5MzMzNWE2NzU3ODhkNWE4ODM4ZWRjMC4uZDNiNjEwODE0OGE4MGU4
NWVkY2Y2MjgxOWViMTRmOTU5MGI4MDYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0
cHV0RWxlbWVudC5jcHAKQEAgLTg3LDEwICs4NywxMCBAQCBTdHJpbmcgSFRNTE91dHB1dEVsZW1l
bnQ6OnZhbHVlKCkgY29uc3QKICAgICByZXR1cm4gdGV4dENvbnRlbnQoKTsKIH0KIAotdm9pZCBI
VE1MT3V0cHV0RWxlbWVudDo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgSFRN
TE91dHB1dEVsZW1lbnQ6OnNldFZhbHVlKFN0cmluZyYmIHZhbHVlKQogewogICAgIG1fZGVmYXVs
dFZhbHVlT3ZlcnJpZGUgPSBkZWZhdWx0VmFsdWUoKTsKLSAgICBzdHJpbmdSZXBsYWNlQWxsKHZh
bHVlKTsKKyAgICBzdHJpbmdSZXBsYWNlQWxsKFdURk1vdmUodmFsdWUpKTsKIH0KIAogU3RyaW5n
IEhUTUxPdXRwdXRFbGVtZW50OjpkZWZhdWx0VmFsdWUoKSBjb25zdApAQCAtOTgsMTIgKzk4LDEy
IEBAIFN0cmluZyBIVE1MT3V0cHV0RWxlbWVudDo6ZGVmYXVsdFZhbHVlKCkgY29uc3QKICAgICBy
ZXR1cm4gbV9kZWZhdWx0VmFsdWVPdmVycmlkZS5pc051bGwoKSA/IHRleHRDb250ZW50KCkgOiBt
X2RlZmF1bHRWYWx1ZU92ZXJyaWRlOwogfQogCi12b2lkIEhUTUxPdXRwdXRFbGVtZW50OjpzZXRE
ZWZhdWx0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgSFRNTE91dHB1dEVsZW1lbnQ6
OnNldERlZmF1bHRWYWx1ZShTdHJpbmcmJiB2YWx1ZSkKIHsKICAgICBpZiAobV9kZWZhdWx0VmFs
dWVPdmVycmlkZS5pc051bGwoKSkKLSAgICAgICAgc3RyaW5nUmVwbGFjZUFsbCh2YWx1ZSk7Cisg
ICAgICAgIHN0cmluZ1JlcGxhY2VBbGwoV1RGTW92ZSh2YWx1ZSkpOwogICAgIGVsc2UKLSAgICAg
ICAgbV9kZWZhdWx0VmFsdWVPdmVycmlkZSA9IHZhbHVlOworICAgICAgICBtX2RlZmF1bHRWYWx1
ZU92ZXJyaWRlID0gV1RGTW92ZSh2YWx1ZSk7CiB9CiAKIERPTVRva2VuTGlzdCYgSFRNTE91dHB1
dEVsZW1lbnQ6Omh0bWxGb3IoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T3V0cHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5o
CmluZGV4IGU0ODcxNzEzMjYzM2IxNDllZDdjMzVmNjFkMDg0MjEzYmE0YzE0NmQuLjAyYzQ5Y2Uw
MGE2NDY1ODRmMGRkOGYxNjExN2ZkMWM0MDJkYWZhMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPdXRwdXRFbGVtZW50LmgKQEAgLTQ0LDkgKzQ0LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8SFRNTE91dHB1dEVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYpOwogCiAgICAgU3RyaW5nIHZh
bHVlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lk
IHNldFZhbHVlKFN0cmluZyYmKTsKICAgICBTdHJpbmcgZGVmYXVsdFZhbHVlKCkgY29uc3Q7Ci0g
ICAgdm9pZCBzZXREZWZhdWx0VmFsdWUoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXREZWZh
dWx0VmFsdWUoU3RyaW5nJiYpOwogICAgIERPTVRva2VuTGlzdCYgaHRtbEZvcigpOwogICAgIAog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKaW5kZXgg
YjUzNTA5ZWJmM2Y3MjQ4M2Q3ZGJjNTFhZmRkNzk2Y2Y1NWQ3MjYwOS4uMGU3ODIzYTVmZWJiNjQz
MDM1MmY2NTI2MzYzZDdhMWJkOTA1ZWIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2Ny
aXB0RWxlbWVudC5jcHAKQEAgLTg1LDkgKzg1LDkgQEAgdm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6
ZGlkRmluaXNoSW5zZXJ0aW5nTm9kZSgpCiB9CiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3
Zy5vcmcvbXVsdGlwYWdlL3NjcmlwdGluZy5odG1sI2RvbS1zY3JpcHQtdGV4dAotdm9pZCBIVE1M
U2NyaXB0RWxlbWVudDo6c2V0VGV4dChjb25zdCBTdHJpbmcmIHZhbHVlKQordm9pZCBIVE1MU2Ny
aXB0RWxlbWVudDo6c2V0VGV4dChTdHJpbmcmJiB2YWx1ZSkKIHsKLSAgICBzZXRUZXh0Q29udGVu
dCh2YWx1ZSk7CisgICAgc2V0VGV4dENvbnRlbnQoV1RGTW92ZSh2YWx1ZSkpOwogfQogCiB2b2lk
IEhUTUxTY3JpcHRFbGVtZW50OjpzZXRBc3luYyhib29sIGFzeW5jKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU2NyaXB0RWxlbWVudC5oCmluZGV4IDYwM2NmZTEwMjhiZWM4OThlOTAyN2RlNmRiMDA2
ODYzMTg0Y2VmYWEuLmMwNDMwMzcwY2YzOTYxNGZhYTc4MGQ2NTJlMGUyNjBmMmI5N2U5NDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmgKQEAgLTM0LDcgKzM0LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTFNjcmlwdEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBib29sIHdhc0luc2VydGVkQnlQYXJzZXIsIGJvb2wg
YWxyZWFkeVN0YXJ0ZWQgPSBmYWxzZSk7CiAKICAgICBTdHJpbmcgdGV4dCgpIGNvbnN0IHsgcmV0
dXJuIHNjcmlwdENvbnRlbnQoKTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGV4dChj
b25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRleHQoU3RyaW5nJiYp
OwogCiAgICAgVVJMIHNyYygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4
dEFyZWFFbGVtZW50LmNwcAppbmRleCAyZjEwY2VkODQxMzFlZDdlOWRkMTg3YTM0MDFjZmRjZGVj
NGJhNDNlLi5mOGRmZTU0Njc0OWJhYTY5Y2RhNjZhZmFjOTMyMDY3M2Y4MTg4NzAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKQEAgLTQwNCw3ICs0MDQs
NyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldFZhbHVlQ29tbW9uKGNvbnN0IFN0cmlu
ZyYgbmV3VmFsdWUsIFRleHRGaWVsZEV2ZW50QgogICAgICAgICByZXR1cm47CiAKICAgICBtX3Zh
bHVlID0gbm9ybWFsaXplZFZhbHVlOwotICAgIHNldElubmVyVGV4dFZhbHVlKG1fdmFsdWUpOwor
ICAgIHNldElubmVyVGV4dFZhbHVlKFN0cmluZyB7IG1fdmFsdWUgfSk7CiAgICAgc2V0TGFzdENo
YW5nZVdhc05vdFVzZXJFZGl0KCk7CiAgICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KCk7
CiAgICAgaW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOwpAQCAtNDI4LDkgKzQyOCw5IEBAIFN0
cmluZyBIVE1MVGV4dEFyZWFFbGVtZW50OjpkZWZhdWx0VmFsdWUoKSBjb25zdAogICAgIHJldHVy
biBUZXh0Tm9kZVRyYXZlcnNhbDo6Y2hpbGRUZXh0Q29udGVudCgqdGhpcyk7CiB9CiAKLXZvaWQg
SFRNTFRleHRBcmVhRWxlbWVudDo6c2V0RGVmYXVsdFZhbHVlKGNvbnN0IFN0cmluZyYgZGVmYXVs
dFZhbHVlKQordm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpzZXREZWZhdWx0VmFsdWUoU3RyaW5n
JiYgZGVmYXVsdFZhbHVlKQogewotICAgIHNldFRleHRDb250ZW50KGRlZmF1bHRWYWx1ZSk7Cisg
ICAgc2V0VGV4dENvbnRlbnQoV1RGTW92ZShkZWZhdWx0VmFsdWUpKTsKIH0KIAogU3RyaW5nIEhU
TUxUZXh0QXJlYUVsZW1lbnQ6OnZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3QKQEAgLTU2MCw3ICs1
NjAsNyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnVwZGF0ZVBsYWNlaG9sZGVyVGV4dCgp
CiAgICAgICAgIG1fcGxhY2Vob2xkZXIgPSBUZXh0Q29udHJvbFBsYWNlaG9sZGVyRWxlbWVudDo6
Y3JlYXRlKGRvY3VtZW50KCkpOwogICAgICAgICB1c2VyQWdlbnRTaGFkb3dSb290KCktPmluc2Vy
dEJlZm9yZSgqbV9wbGFjZWhvbGRlciwgaW5uZXJUZXh0RWxlbWVudCgpLT5uZXh0U2libGluZygp
KTsKICAgICB9Ci0gICAgbV9wbGFjZWhvbGRlci0+c2V0SW5uZXJUZXh0KHBsYWNlaG9sZGVyVGV4
dCk7CisgICAgbV9wbGFjZWhvbGRlci0+c2V0SW5uZXJUZXh0KFN0cmluZyB7IHBsYWNlaG9sZGVy
VGV4dCB9KTsKIH0KIAogYm9vbCBIVE1MVGV4dEFyZWFFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91
c2VDbGlja0V2ZW50cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
QXJlYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5o
CmluZGV4IGYxZmNhNzg5YzY3MmJkNzcyOTMyYmFiNDU2ZDMwM2ZkODNhZmJlNTcuLjU4OTJhMGIx
MjA4YWE0OWVmYWViNDYyODU2NWMwNTA1NGU4NjkyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRBcmVhRWxlbWVudC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBTdHJpbmcgdmFsdWUoKSBjb25zdCBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9S
VCBFeGNlcHRpb25Pcjx2b2lkPiBzZXRWYWx1ZShjb25zdCBTdHJpbmcmLCBUZXh0RmllbGRFdmVu
dEJlaGF2aW9yID0gRGlzcGF0Y2hOb0V2ZW50LCBUZXh0Q29udHJvbFNldFZhbHVlU2VsZWN0aW9u
ID0gVGV4dENvbnRyb2xTZXRWYWx1ZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uVG9FbmQpIGZpbmFs
OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWZhdWx0VmFsdWUoKSBjb25zdDsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldERlZmF1bHRWYWx1ZShjb25zdCBTdHJpbmcmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldERlZmF1bHRWYWx1ZShTdHJpbmcmJik7CiAgICAgaW50IHRl
eHRMZW5ndGgoKSBjb25zdCB7IHJldHVybiB2YWx1ZSgpLmxlbmd0aCgpOyB9CiAgICAgaW50IGVm
ZmVjdGl2ZU1heExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1heExlbmd0aCgpOyB9CiAgICAgLy8g
Rm9yIFZhbGlkaXR5U3RhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggZDY2ZDk5ZTVlNDZmMjZjNDI5ODZiMzE3ZjA0N2I5
ZWVmMDYwNzc2Mi4uNmZiMTBmNjcxMjVkODczYjM3YWYyNTNmYTBlMDVmNWMyM2FkOGJmMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5j
cHAKQEAgLTYxMSw3ICs2MTEsNyBAQCBzdGF0aWMgU3RyaW5nIGlubmVyVGV4dFZhbHVlRnJvbShU
ZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQmIGlubmVyVGV4dCkKICAgICByZXR1cm4gcmVzdWx0
LnRvU3RyaW5nKCk7CiB9CiAKLXZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldElu
bmVyVGV4dFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCit2b2lkIEhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50OjpzZXRJbm5lclRleHRWYWx1ZShTdHJpbmcmJiB2YWx1ZSkKIHsKICAgICBMYXlv
dXREaXNhbGxvd2VkU2NvcGUgbGF5b3V0RGlzYWxsb3dlZFNjb3BlKExheW91dERpc2FsbG93ZWRT
Y29wZTo6UmVhc29uOjpQZXJmb3JtYW5jZU9wdGltaXphdGlvbik7CiAgICAgYXV0byBpbm5lclRl
eHQgPSBpbm5lclRleHRFbGVtZW50Q3JlYXRpbmdTaGFkb3dTdWJ0cmVlSWZOZWVkZWQoKTsKQEAg
LTY0Myw5ICs2NDMsMTAgQEAgdm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0SW5u
ZXJUZXh0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgICAgIC8vIEV2ZW50cyBk
aXNwYXRjaGVkIG9uIHRoZSBpbm5lciB0ZXh0IGVsZW1lbnQgY2Fubm90IGV4ZWN1dGUgYXJiaXRy
YXJ5IGF1dGhvciBzY3JpcHRzLgogICAgICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpF
dmVudEFsbG93ZWRTY29wZSBhbGxvd2VkU2NvcGUoKnVzZXJBZ2VudFNoYWRvd1Jvb3QoKSk7CiAK
LSAgICAgICAgICAgIGlubmVyVGV4dC0+c2V0SW5uZXJUZXh0KHZhbHVlKTsKKyAgICAgICAgICAg
IGJvb2wgZW5kc1dpdGhOZXdMaW5lID0gdmFsdWUuZW5kc1dpdGgoJ1xuJykgfHwgdmFsdWUuZW5k
c1dpdGgoJ1xyJyk7CisgICAgICAgICAgICBpbm5lclRleHQtPnNldElubmVyVGV4dChXVEZNb3Zl
KHZhbHVlKSk7CiAKLSAgICAgICAgICAgIGlmICh2YWx1ZS5lbmRzV2l0aCgnXG4nKSB8fCB2YWx1
ZS5lbmRzV2l0aCgnXHInKSkKKyAgICAgICAgICAgIGlmIChlbmRzV2l0aE5ld0xpbmUpCiAgICAg
ICAgICAgICAgICAgaW5uZXJUZXh0LT5hcHBlbmRDaGlsZChIVE1MQlJFbGVtZW50OjpjcmVhdGUo
ZG9jdW1lbnQoKSkpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaAppbmRleCA4MDMxNGQxYjE4YTc4ZmRhMGYyOGEzOWMz
MmIwNDlmZTllMzIyM2QwLi43ZDkzZjk1MGNjOWRlODBkMjkxZjAxODc2ZWE2Zjc2OThjMmM0MTM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dC5oCkBAIC05Nyw3ICs5Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2VsZWN0aW9uQ2hhbmdl
ZChib29sIHNob3VsZEZpcmVTZWxlY3RFdmVudCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBs
YXN0Q2hhbmdlV2FzVXNlckVkaXQoKSBjb25zdDsKLSAgICB2b2lkIHNldElubmVyVGV4dFZhbHVl
KGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0SW5uZXJUZXh0VmFsdWUoU3RyaW5nJiYpOwog
ICAgIFN0cmluZyBpbm5lclRleHRWYWx1ZSgpIGNvbnN0OwogCiAgICAgU3RyaW5nIGRpcmVjdGlv
bkZvckZvcm1EYXRhKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUaXRsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50
LmNwcAppbmRleCBhNjcwN2JlNzI4YTE5ODdjZWYxNzM4MDZjMmJkNDY1MWMyYWI2YjYzLi4xNzMz
OTUzODM1NTFkZDhkODI2ODJkYmY1YjMzNmFiZjZkOTFlZDYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAKQEAgLTkwLDkgKzkwLDkgQEAgU3RyaW5nV2l0aERpcmVj
dGlvbiBIVE1MVGl0bGVFbGVtZW50Ojpjb21wdXRlZFRleHRXaXRoRGlyZWN0aW9uKCkKICAgICBy
ZXR1cm4geyB0ZXh0KCksIGRpcmVjdGlvbiB9OwogfQogCi12b2lkIEhUTUxUaXRsZUVsZW1lbnQ6
OnNldFRleHQoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgSFRNTFRpdGxlRWxlbWVudDo6c2V0
VGV4dChTdHJpbmcmJiB2YWx1ZSkKIHsKLSAgICBzZXRUZXh0Q29udGVudCh2YWx1ZSk7CisgICAg
c2V0VGV4dENvbnRlbnQoV1RGTW92ZSh2YWx1ZSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRpdGxlRWxlbWVudC5oCmluZGV4IDhjMzdhODliMTA5NjdmMGViNDk3MTYwNmE3ZWMwNDVi
ZTY3NGIwZTQuLjgxZDE0YmZkMTc1NWQ5NzI1YzRhMGRiZjAwMGFhYzQzMzliMjJkNmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5oCkBAIC0zMyw3ICszMyw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPEhUTUxUaXRsZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0ZXh0KCkg
Y29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUZXh0KGNvbnN0IFN0cmluZyYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGV4dChTdHJpbmcmJik7CiAKICAgICBjb25zdCBT
dHJpbmdXaXRoRGlyZWN0aW9uJiB0ZXh0V2l0aERpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
dGl0bGU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1
dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCmlu
ZGV4IDE1OTViOTViZGU0NjI2Y2RmNGVkZTRkOWZlYzQ2MDRlNGYxMjQ0ZWQuLmFlZTU5NWFhNGIz
MDA1ZjQzYjc5NjQzOGY3MGU0ZWU4ZmNiOTA2NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Rl
eHRGaWVsZElucHV0VHlwZS5jcHAKQEAgLTY2MSw3ICs2NjEsNyBAQCB2b2lkIFRleHRGaWVsZElu
cHV0VHlwZTo6dXBkYXRlUGxhY2Vob2xkZXJUZXh0KCkKICAgICAgICAgbV9wbGFjZWhvbGRlciA9
IFRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50OjpjcmVhdGUoZWxlbWVudCgpLT5kb2N1bWVu
dCgpKTsKICAgICAgICAgZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCktPmluc2VydEJl
Zm9yZSgqbV9wbGFjZWhvbGRlciwgbV9jb250YWluZXIgPyBtX2NvbnRhaW5lci5nZXQoKSA6IGlu
bmVyVGV4dEVsZW1lbnQoKS5nZXQoKSk7CiAgICAgfQotICAgIG1fcGxhY2Vob2xkZXItPnNldElu
bmVyVGV4dChwbGFjZWhvbGRlclRleHQpOworICAgIG1fcGxhY2Vob2xkZXItPnNldElubmVyVGV4
dChXVEZNb3ZlKHBsYWNlaG9sZGVyVGV4dCkpOwogfQogCiBib29sIFRleHRGaWVsZElucHV0VHlw
ZTo6YXBwZW5kRm9ybURhdGEoRE9NRm9ybURhdGEmIGZvcm1EYXRhKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQXRvbUhUTUxUb2tlbi5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvQXRvbUhUTUxUb2tlbi5oCmluZGV4IDQ2NGVjMTA3NWU0M2NlM2Yy
ODhhNzA3NmEyNmYxMWMyNDJhMjVhZjAuLjllZDdhNmE1YTVlZDQ0YWI2YjNmNWFmZWQyMjNlMGFj
ODUzOGU3MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21IVE1M
VG9rZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9BdG9tSFRNTFRva2VuLmgK
QEAgLTc0LDYgKzc0LDcgQEAgcHVibGljOgogICAgIC8vIENvbW1lbnQKIAogICAgIGNvbnN0IFN0
cmluZyYgY29tbWVudCgpIGNvbnN0OworICAgIFN0cmluZyYgY29tbWVudCgpOwogCiAgICAgSGFz
RHVwbGljYXRlQXR0cmlidXRlIGhhc0R1cGxpY2F0ZUF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1faGFzRHVwbGljYXRlQXR0cmlidXRlOyB9OwogCkBAIC0xNjIsNiArMTYzLDEyIEBAIGlubGlu
ZSBjb25zdCBTdHJpbmcmIEF0b21IVE1MVG9rZW46OmNvbW1lbnQoKSBjb25zdAogICAgIHJldHVy
biBtX2RhdGE7CiB9CiAKK2lubGluZSBTdHJpbmcmIEF0b21IVE1MVG9rZW46OmNvbW1lbnQoKQor
eworICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpDb21tZW50KTsKKyAgICByZXR1cm4g
bV9kYXRhOworfQorCiBpbmxpbmUgYm9vbCBBdG9tSFRNTFRva2VuOjpmb3JjZVF1aXJrcygpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW46OkRPQ1RZUEUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCmlu
ZGV4IDE1ZGNmZmI4MmYxODk0OTAyMjFhOWNmODI1Njk1YmNkYTNmODZiNDkuLjM2MTA2ZTM1ZDIz
MzEzMWFlZTRiMGU1Y2VmMTM5OGMxMjBhNGYzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKQEAgLTQ1MiwyMCArNDUyLDIw
IEBAIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydERvY3R5cGUoQXRvbUhUTUxUb2tl
biYmIHRva2VuKQogdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0Q29tbWVudChBdG9t
SFRNTFRva2VuJiYgdG9rZW4pCiB7CiAgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9r
ZW46OkNvbW1lbnQpOwotICAgIGF0dGFjaExhdGVyKGN1cnJlbnROb2RlKCksIENvbW1lbnQ6OmNy
ZWF0ZShvd25lckRvY3VtZW50Rm9yQ3VycmVudE5vZGUoKSwgdG9rZW4uY29tbWVudCgpKSk7Cisg
ICAgYXR0YWNoTGF0ZXIoY3VycmVudE5vZGUoKSwgQ29tbWVudDo6Y3JlYXRlKG93bmVyRG9jdW1l
bnRGb3JDdXJyZW50Tm9kZSgpLCBXVEZNb3ZlKHRva2VuLmNvbW1lbnQoKSkpKTsKIH0KIAogdm9p
ZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0Q29tbWVudE9uRG9jdW1lbnQoQXRvbUhUTUxU
b2tlbiYmIHRva2VuKQogewogICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpD
b21tZW50KTsKLSAgICBhdHRhY2hMYXRlcihtX2F0dGFjaG1lbnRSb290LCBDb21tZW50OjpjcmVh
dGUobV9kb2N1bWVudCwgdG9rZW4uY29tbWVudCgpKSk7CisgICAgYXR0YWNoTGF0ZXIobV9hdHRh
Y2htZW50Um9vdCwgQ29tbWVudDo6Y3JlYXRlKG1fZG9jdW1lbnQsIFdURk1vdmUodG9rZW4uY29t
bWVudCgpKSkpOwogfQogCiB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRDb21tZW50
T25IVE1MSHRtbEVsZW1lbnQoQXRvbUhUTUxUb2tlbiYmIHRva2VuKQogewogICAgIEFTU0VSVCh0
b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpDb21tZW50KTsKICAgICBDb250YWluZXJOb2RlJiBw
YXJlbnQgPSBtX29wZW5FbGVtZW50cy5yb290Tm9kZSgpOwotICAgIGF0dGFjaExhdGVyKHBhcmVu
dCwgQ29tbWVudDo6Y3JlYXRlKHBhcmVudC5kb2N1bWVudCgpLCB0b2tlbi5jb21tZW50KCkpKTsK
KyAgICBhdHRhY2hMYXRlcihwYXJlbnQsIENvbW1lbnQ6OmNyZWF0ZShwYXJlbnQuZG9jdW1lbnQo
KSwgV1RGTW92ZSh0b2tlbi5jb21tZW50KCkpKSk7CiB9CiAKIHZvaWQgSFRNTENvbnN0cnVjdGlv
blNpdGU6Omluc2VydEhUTUxIZWFkRWxlbWVudChBdG9tSFRNTFRva2VuJiYgdG9rZW4pCkBAIC02
MDAsNyArNjAwLDcgQEAgdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0VGV4dE5vZGUo
Y29uc3QgU3RyaW5nJiBjaGFyYWN0ZXJzLCBXaGl0ZXNwYWNlTW8KICAgICAgICAgaWYgKCF0ZXh0
Tm9kZS0+bGVuZ3RoKCkpIHsKICAgICAgICAgICAgIFN0cmluZyBzdWJzdHJpbmcgPSBjaGFyYWN0
ZXJzLnN1YnN0cmluZyhjdXJyZW50UG9zaXRpb24pOwogICAgICAgICAgICAgQXRvbVN0cmluZyBz
dWJzdHJpbmdBdG9tID0gbV93aGl0ZXNwYWNlQ2FjaGUubG9va3VwKHN1YnN0cmluZywgd2hpdGVz
cGFjZU1vZGUpOwotICAgICAgICAgICAgdGV4dE5vZGUgPSBUZXh0OjpjcmVhdGUodGFzay5wYXJl
bnQtPmRvY3VtZW50KCksIHN1YnN0cmluZ0F0b20uaXNOdWxsKCkgPyBzdWJzdHJpbmcgOiBzdWJz
dHJpbmdBdG9tLnN0cmluZygpKTsKKyAgICAgICAgICAgIHRleHROb2RlID0gVGV4dDo6Y3JlYXRl
KHRhc2sucGFyZW50LT5kb2N1bWVudCgpLCBzdWJzdHJpbmdBdG9tLmlzTnVsbCgpID8gV1RGTW92
ZShzdWJzdHJpbmcpIDogc3Vic3RyaW5nQXRvbS5yZWxlYXNlU3RyaW5nKCkpOwogICAgICAgICB9
CiAKICAgICAgICAgY3VycmVudFBvc2l0aW9uICs9IHRleHROb2RlLT5sZW5ndGgoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRWRpdEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVFZGl0RWxlbWVudC5jcHAKaW5k
ZXggZDdkZmE3MzBmYWNmNzA3NzhjZTVkYWY2MzRkNzdiMTExMTJiYzhhMy4uNGUyNzY3NmNkYTgx
YjUwZTM1YTU5ODExMGVlNzBhZWZlYWYxNWFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvRGF0ZVRpbWVFZGl0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvRGF0ZVRpbWVFZGl0RWxlbWVudC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICAvLyBEYXRlVGltZUZvcm1hdDo6VG9rZW5IYW5kbGVyIGZ1bmN0
aW9uczoKICAgICB2b2lkIHZpc2l0RmllbGQoRGF0ZVRpbWVGb3JtYXQ6OkZpZWxkVHlwZSwgaW50
KTsKLSAgICB2b2lkIHZpc2l0TGl0ZXJhbChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHZpc2l0
TGl0ZXJhbChTdHJpbmcmJik7CiAKICAgICBEYXRlVGltZUVkaXRFbGVtZW50JiBtX2VkaXRFbGVt
ZW50OwogICAgIGNvbnN0IERhdGVUaW1lRWRpdEVsZW1lbnQ6OkxheW91dFBhcmFtZXRlcnMmIG1f
cGFyYW1ldGVyczsKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIERhdGVUaW1lRWRpdEJ1aWxkZXI6
OnZpc2l0RmllbGQoRGF0ZVRpbWVGb3JtYXQ6OkZpZWxkVHlwZSBmaWVsZFR5cGUsIGludCBjbwog
ICAgIH0KIH0KIAotdm9pZCBEYXRlVGltZUVkaXRCdWlsZGVyOjp2aXNpdExpdGVyYWwoY29uc3Qg
U3RyaW5nJiB0ZXh0KQordm9pZCBEYXRlVGltZUVkaXRCdWlsZGVyOjp2aXNpdExpdGVyYWwoU3Ry
aW5nJiYgdGV4dCkKIHsKICAgICBBU1NFUlQodGV4dC5sZW5ndGgoKSk7CiAKQEAgLTE4NCw3ICsx
ODQsNyBAQCB2b2lkIERhdGVUaW1lRWRpdEJ1aWxkZXI6OnZpc2l0TGl0ZXJhbChjb25zdCBTdHJp
bmcmIHRleHQpCiAgICAgaWYgKHRleHQuZW5kc1dpdGgoJyAnKSkKICAgICAgICAgZWxlbWVudC0+
c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdpbklubGluZUVuZCwgLTEsIENT
U1VuaXRUeXBlOjpDU1NfUFgpOwogCi0gICAgZWxlbWVudC0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3Jl
YXRlKG1fZWRpdEVsZW1lbnQuZG9jdW1lbnQoKSwgdGV4dCkpOworICAgIGVsZW1lbnQtPmFwcGVu
ZENoaWxkKFRleHQ6OmNyZWF0ZShtX2VkaXRFbGVtZW50LmRvY3VtZW50KCksIFdURk1vdmUodGV4
dCkpKTsKICAgICBtX2VkaXRFbGVtZW50LmZpZWxkc1dyYXBwZXJFbGVtZW50KCkuYXBwZW5kQ2hp
bGQoZWxlbWVudCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0RhdGVUaW1lRmllbGRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0Rh
dGVUaW1lRmllbGRFbGVtZW50LmNwcAppbmRleCA5ZTRmNjMzOGVlODA2Y2RkNWRiNTY1ZDNlYTk2
NjVlNDlhZTQ2Mzk5Li40MWFjZGJhMTgwYmJhNDRmMzhhMWZkYmI5NTY0MDg0NmRmZTAyY2Y3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1l
bnQuY3BwCkBAIC0xODgsNyArMTg4LDcgQEAgU3RyaW5nIERhdGVUaW1lRmllbGRFbGVtZW50Ojp2
aXNpYmxlVmFsdWUoKSBjb25zdAogdm9pZCBEYXRlVGltZUZpZWxkRWxlbWVudDo6dXBkYXRlVmlz
aWJsZVZhbHVlKEV2ZW50QmVoYXZpb3IgZXZlbnRCZWhhdmlvcikKIHsKICAgICBpZiAoIWZpcnN0
Q2hpbGQoKSkKLSAgICAgICAgYXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50KCksIGVt
cHR5U3RyaW5nKCkpKTsKKyAgICAgICAgYXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50
KCksIFN0cmluZyB7IGVtcHR5U3RyaW5nKCkgfSkpOwogCiAgICAgYXV0byYgdGV4dE5vZGUgPSBk
b3duY2FzdDxUZXh0PigqZmlyc3RDaGlsZCgpKTsKICAgICBTdHJpbmcgbmV3VmlzaWJsZVZhbHVl
ID0gdmlzaWJsZVZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFja0N1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1
ZS5jcHAKaW5kZXggNzdjNmExNjBiYTk1YmQ1YTI4NmM1ZGE3NDkzOTgzNWU1MWI5YWQzZC4uYjMz
ZTJhYTIwNDA4YWNmM2YxMWExOTQxYTc5NDQyZjUyMGU0ZDBmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcApAQCAtNTEwLDggKzUxMCw4IEBAIHZvaWQgVGV4
dFRyYWNrQ3VlOjpyZWJ1aWxkRGlzcGxheVRyZWUoKQogICAgICAgICBpZiAoY29uc3QgYXV0byYg
c3R5bGVTaGVldHMgPSB0cmFjaygpLT5zdHlsZVNoZWV0cygpKSB7CiAgICAgICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGNzc1N0cmluZyA6ICpzdHlsZVNoZWV0cykgewogICAgICAgICAgICAgICAg
IGF1dG8gc3R5bGUgPSBIVE1MU3R5bGVFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjpzdHlsZVRh
ZywgbV9kaXNwbGF5VHJlZS0+ZG9jdW1lbnQoKSwgZmFsc2UpOwotICAgICAgICAgICAgICAgIHN0
eWxlLT5zZXRUZXh0Q29udGVudChjc3NTdHJpbmcpOwotICAgICAgICAgICAgICAgIG1fZGlzcGxh
eVRyZWUtPmFwcGVuZENoaWxkKHN0eWxlKTsKKyAgICAgICAgICAgICAgICBzdHlsZS0+c2V0VGV4
dENvbnRlbnQoU3RyaW5nIHsgY3NzU3RyaW5nIH0pOworICAgICAgICAgICAgICAgIG1fZGlzcGxh
eVRyZWUtPmFwcGVuZENoaWxkKFdURk1vdmUoc3R5bGUpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3Vl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAppbmRleCBlNzNkY2Nh
MjM4ZGE4Y2FhYWNlN2Y1OTAxM2NmNmNhNzMwMzY5ZWQyLi5hYmY3NTY5NjRjMzc5ZTg3NzRkYWNl
YWI4MTIwZTI4ZmNkMTRhYTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1ZUVEN1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCkBA
IC0xMDAxLDE2ICsxMDAxLDE2IEBAIFJlZlB0cjxUZXh0VHJhY2tDdWVCb3g+IFZUVEN1ZTo6Z2V0
RGlzcGxheVRyZWUoY29uc3QgSW50U2l6ZSYgdmlkZW9TaXplLCBpbnQgZm9uCiAgICAgaWYgKGRp
c3BsYXlUcmVlLT5kb2N1bWVudCgpLnBhZ2UoKSkgewogICAgICAgICBhdXRvIGNzc1N0cmluZyA9
IGRpc3BsYXlUcmVlLT5kb2N1bWVudCgpLnBhZ2UoKS0+Y2FwdGlvblVzZXJQcmVmZXJlbmNlc1N0
eWxlU2hlZXQoKTsKICAgICAgICAgYXV0byBzdHlsZSA9IEhUTUxTdHlsZUVsZW1lbnQ6OmNyZWF0
ZShIVE1MTmFtZXM6OnN0eWxlVGFnLCBkaXNwbGF5VHJlZS0+ZG9jdW1lbnQoKSwgZmFsc2UpOwot
ICAgICAgICBzdHlsZS0+c2V0VGV4dENvbnRlbnQoY3NzU3RyaW5nKTsKLSAgICAgICAgZGlzcGxh
eVRyZWUtPmFwcGVuZENoaWxkKHN0eWxlKTsKKyAgICAgICAgc3R5bGUtPnNldFRleHRDb250ZW50
KFdURk1vdmUoY3NzU3RyaW5nKSk7CisgICAgICAgIGRpc3BsYXlUcmVlLT5hcHBlbmRDaGlsZChX
VEZNb3ZlKHN0eWxlKSk7CiAgICAgfQogCiAgICAgY29uc3QgYXV0byYgc3R5bGVTaGVldHMgPSB0
cmFjaygpLT5zdHlsZVNoZWV0cygpOwogICAgIGlmIChzdHlsZVNoZWV0cykgewogICAgICAgICBm
b3IgKGNvbnN0IGF1dG8mIGNzc1N0cmluZyA6ICpzdHlsZVNoZWV0cykgewogICAgICAgICAgICAg
YXV0byBzdHlsZSA9IEhUTUxTdHlsZUVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OnN0eWxlVGFn
LCBkaXNwbGF5VHJlZS0+ZG9jdW1lbnQoKSwgZmFsc2UpOwotICAgICAgICAgICAgc3R5bGUtPnNl
dFRleHRDb250ZW50KGNzc1N0cmluZyk7Ci0gICAgICAgICAgICBkaXNwbGF5VHJlZS0+YXBwZW5k
Q2hpbGQoc3R5bGUpOworICAgICAgICAgICAgc3R5bGUtPnNldFRleHRDb250ZW50KFN0cmluZyB7
IGNzc1N0cmluZyB9KTsKKyAgICAgICAgICAgIGRpc3BsYXlUcmVlLT5hcHBlbmRDaGlsZChXVEZN
b3ZlKHN0eWxlKSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svV2ViVlRUUGFyc2VyLmNwcAppbmRleCA4ZmQxYzMzNWIwNjY3MDg1MTQ5OTNlY2M5ZDdiZTRj
MGNlZTlmYjI2Li5mOGRkYmQzODA1YjQ1ODBhOGQ3NjQ0ODkxMjNjZDkyMWVjMjYwNWY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCkBAIC01MTksNyArNTE5
LDcgQEAgUmVmPERvY3VtZW50RnJhZ21lbnQ+IFdlYlZUVFRyZWVCdWlsZGVyOjpidWlsZEZyb21T
dHJpbmcoY29uc3QgU3RyaW5nJiBjdWVUZXh0KQogICAgIGF1dG8gZnJhZ21lbnQgPSBEb2N1bWVu
dEZyYWdtZW50OjpjcmVhdGUobV9kb2N1bWVudCk7CiAKICAgICBpZiAoY3VlVGV4dC5pc0VtcHR5
KCkpIHsKLSAgICAgICAgZnJhZ21lbnQtPnBhcnNlckFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZSht
X2RvY3VtZW50LCBlbXB0eVN0cmluZygpKSk7CisgICAgICAgIGZyYWdtZW50LT5wYXJzZXJBcHBl
bmRDaGlsZChUZXh0OjpjcmVhdGUobV9kb2N1bWVudCwgU3RyaW5nIHsgZW1wdHlTdHJpbmcoKSB9
KSk7CiAgICAgICAgIHJldHVybiBmcmFnbWVudDsKICAgICB9CiAKQEAgLTY1MCw3ICs2NTAsNyBA
QCB2b2lkIFdlYlZUVFRyZWVCdWlsZGVyOjpjb25zdHJ1Y3RUcmVlRnJvbVRva2VuKERvY3VtZW50
JiBkb2N1bWVudCkKIAogICAgIHN3aXRjaCAobV90b2tlbi50eXBlKCkpIHsKICAgICBjYXNlIFdl
YlZUVFRva2VuVHlwZXM6OkNoYXJhY3RlcjogewotICAgICAgICBtX2N1cnJlbnROb2RlLT5wYXJz
ZXJBcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIG1fdG9rZW4uY2hhcmFjdGVycygp
KSk7CisgICAgICAgIG1fY3VycmVudE5vZGUtPnBhcnNlckFwcGVuZENoaWxkKFRleHQ6OmNyZWF0
ZShkb2N1bWVudCwgU3RyaW5nIHsgbV90b2tlbi5jaGFyYWN0ZXJzKCkgfSkpOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBXZWJWVFRUb2tlblR5cGVzOjpTdGFydFRhZzogewpAQCAt
NzA5LDcgKzcwOSw3IEBAIHZvaWQgV2ViVlRUVHJlZUJ1aWxkZXI6OmNvbnN0cnVjdFRyZWVGcm9t
VG9rZW4oRG9jdW1lbnQmIGRvY3VtZW50KQogICAgICAgICBTdHJpbmcgY2hhcmFjdGVyc1N0cmlu
ZyA9IG1fdG9rZW4uY2hhcmFjdGVycygpOwogICAgICAgICBNZWRpYVRpbWUgcGFyc2VkVGltZVN0
YW1wOwogICAgICAgICBpZiAoV2ViVlRUUGFyc2VyOjpjb2xsZWN0VGltZVN0YW1wKGNoYXJhY3Rl
cnNTdHJpbmcsIHBhcnNlZFRpbWVTdGFtcCkpCi0gICAgICAgICAgICBtX2N1cnJlbnROb2RlLT5w
YXJzZXJBcHBlbmRDaGlsZChQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNyZWF0ZShkb2N1bWVudCwg
InRpbWVzdGFtcCJfcywgY2hhcmFjdGVyc1N0cmluZykpOworICAgICAgICAgICAgbV9jdXJyZW50
Tm9kZS0+cGFyc2VyQXBwZW5kQ2hpbGQoUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjcmVhdGUoZG9j
dW1lbnQsICJ0aW1lc3RhbXAiX3MsIFdURk1vdmUoY2hhcmFjdGVyc1N0cmluZykpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRy
b2xsZXIuY3BwCmluZGV4IGU2ZmM3OWEwMjExMjQ0ZmNjN2UwOTQ5M2NiZWU5MGIwN2UxMjhkMWEu
LjIxMWEzZjBjMGE5NjRkN2E3Y2NkNzExZDZhYjkwZjZkYjU5ZGY0Y2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0xNzAsNyArMTcwLDcgQEAgc3RhdGljIFJlZlB0
cjxEb2N1bWVudEZyYWdtZW50PiBkb2N1bWVudEZyYWdtZW50RnJvbURyYWdEYXRhKGNvbnN0IERy
YWdEYXRhJiBkcmEKICAgICAgICAgICAgICAgICAgICAgaWYgKHRpdGxlLmlzRW1wdHkoKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gdXJsOwogICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBhbmNob3ItPmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KHRpdGxlKSk7CisgICAgICAgICAgICAgICAgYW5jaG9yLT5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZShXVEZNb3ZlKHRpdGxlKSkpOwogICAgICAgICAgICAgICAgIGF1dG8gZnJh
Z21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAgICAgICAgICAgICAg
ICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGFuY2hvcik7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZyYWdtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9EYXRl
VGltZUZvcm1hdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9EYXRlVGltZUZvcm1h
dC5oCmluZGV4IGEzNzI2ZGZmYmUxZjNlMTlkN2E4MzFkNzcwNzY5M2UxNWM2NTY2N2YuLjhkZTE5
MDQ0YWFjMDI3YmYyZTZmYWViNTUwZDQ5MGY3OTFkYWI5MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvRGF0ZVRpbWVGb3JtYXQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L0RhdGVUaW1lRm9ybWF0LmgKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGlj
OgogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+VG9rZW5IYW5kbGVyKCkgPSBkZWZhdWx0
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRGaWVsZChGaWVsZFR5cGUsIGludCBudW1iZXJP
ZlBhdHRlcm5DaGFyYWN0ZXJzKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdExpdGVy
YWwoY29uc3QgU3RyaW5nJikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRMaXRlcmFs
KFN0cmluZyYmKSA9IDA7CiAgICAgfTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBzdWNjZWVk
ZWQsIGZhbHNlIGlmIGZhaWxlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvUGxhdGZvcm1Mb2NhbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Q
bGF0Zm9ybUxvY2FsZS5jcHAKaW5kZXggZjQ3MjAwYjU3MjE2OGQ0ZWVmYWE3NGU5MDc1NzFhZDVj
OTJhYjAxOS4uYTMyYmE5MGUzYWE5MDBjZDQwMjg2ZDBjN2UxMzg3YWNkZjY3YTgzZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5jcHAKQEAgLTUz
LDcgKzUzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICAvLyBEYXRlVGltZUZvcm1hdDo6VG9r
ZW5IYW5kbGVyIGZ1bmN0aW9ucy4KICAgICB2b2lkIHZpc2l0RmllbGQoRGF0ZVRpbWVGb3JtYXQ6
OkZpZWxkVHlwZSwgaW50KSBmaW5hbDsKLSAgICB2b2lkIHZpc2l0TGl0ZXJhbChjb25zdCBTdHJp
bmcmKSBmaW5hbDsKKyAgICB2b2lkIHZpc2l0TGl0ZXJhbChTdHJpbmcmJikgZmluYWw7CiAKICAg
ICBTdHJpbmcgemVyb1BhZFN0cmluZyhjb25zdCBTdHJpbmcmLCBzaXplX3Qgd2lkdGgpOwogICAg
IHZvaWQgYXBwZW5kTnVtYmVyKGludCBudW1iZXIsIHNpemVfdCB3aWR0aCk7CkBAIC0xNjgsMTAg
KzE2OCwxMCBAQCB2b2lkIERhdGVUaW1lU3RyaW5nQnVpbGRlcjo6dmlzaXRGaWVsZChEYXRlVGlt
ZUZvcm1hdDo6RmllbGRUeXBlIGZpZWxkVHlwZSwgaW50CiAgICAgfQogfQogCi12b2lkIERhdGVU
aW1lU3RyaW5nQnVpbGRlcjo6dmlzaXRMaXRlcmFsKGNvbnN0IFN0cmluZyYgdGV4dCkKK3ZvaWQg
RGF0ZVRpbWVTdHJpbmdCdWlsZGVyOjp2aXNpdExpdGVyYWwoU3RyaW5nJiYgdGV4dCkKIHsKICAg
ICBBU1NFUlQodGV4dC5sZW5ndGgoKSk7Ci0gICAgbV9idWlsZGVyLmFwcGVuZCh0ZXh0KTsKKyAg
ICBtX2J1aWxkZXIuYXBwZW5kKFdURk1vdmUodGV4dCkpOwogfQogCiBTdHJpbmcgRGF0ZVRpbWVT
dHJpbmdCdWlsZGVyOjp0b1N0cmluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVFJlZkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNw
cAppbmRleCAzNjA5MzFmMzIwM2EwYTZhMmM1MTRlNjk3MDYxNzgyN2U5MDI5NzFkLi5jZTQ3ZTI3
MzZjNzQ1M2E0ZWNhZjc2MDU1MTE3NzFkNzkxZjdkMjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
UmVmRWxlbWVudC5jcHAKQEAgLTE0NiwxMCArMTQ2LDEwIEBAIHZvaWQgU1ZHVFJlZkVsZW1lbnQ6
OnVwZGF0ZVJlZmVyZW5jZWRUZXh0KEVsZW1lbnQqIHRhcmdldCkKICAgICBBU1NFUlQocm9vdCk7
CiAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpFdmVudEFsbG93ZWRTY29wZSBhbGxvd2VkU2Nv
cGUoKnJvb3QpOwogICAgIGlmICghcm9vdC0+Zmlyc3RDaGlsZCgpKQotICAgICAgICByb290LT5h
cHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQoKSwgdGV4dENvbnRlbnQpKTsKKyAgICAg
ICAgcm9vdC0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50KCksIFdURk1vdmUodGV4
dENvbnRlbnQpKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIEFTU0VSVChyb290LT5maXJzdENoaWxk
KCktPmlzVGV4dE5vZGUoKSk7Ci0gICAgICAgIHJvb3QtPmZpcnN0Q2hpbGQoKS0+c2V0VGV4dENv
bnRlbnQodGV4dENvbnRlbnQpOworICAgICAgICByb290LT5maXJzdENoaWxkKCktPnNldFRleHRD
b250ZW50KFdURk1vdmUodGV4dENvbnRlbnQpKTsKICAgICB9CiB9CiAKQEAgLTE1OCwxMiArMTU4
LDEwIEBAIHZvaWQgU1ZHVFJlZkVsZW1lbnQ6OmRldGFjaFRhcmdldCgpCiAgICAgLy8gUmVtb3Zl
IGFjdGl2ZSBsaXN0ZW5lcnMgYW5kIGNsZWFyIHRoZSB0ZXh0IGNvbnRlbnQuCiAgICAgbV90YXJn
ZXRMaXN0ZW5lci0+ZGV0YWNoKCk7CiAKLSAgICBTdHJpbmcgZW1wdHlDb250ZW50OwotCiAgICAg
QVNTRVJUKHNoYWRvd1Jvb3QoKSk7CiAgICAgUmVmUHRyIGNvbnRhaW5lciA9IHNoYWRvd1Jvb3Qo
KS0+Zmlyc3RDaGlsZCgpOwogICAgIGlmIChjb250YWluZXIpCi0gICAgICAgIGNvbnRhaW5lci0+
c2V0VGV4dENvbnRlbnQoZW1wdHlDb250ZW50KTsKKyAgICAgICAgY29udGFpbmVyLT5zZXRUZXh0
Q29udGVudChTdHJpbmcgeyB9KTsKIAogICAgIGlmICghaXNDb25uZWN0ZWQoKSkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmNwcAppbmRleCBlZjRjZGVhYmRlNDlkZWM0MDQy
YTZmODMyNTBiNmUyZjc3MjYwMTU1Li43YTAyYzE4Yjk2Y2I0ZWY4NDBmMWFkMmZmNGVlMjA5NzRi
YzJiYTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmNwcApAQCAtODEsNyArODEsNyBAQCB2b2lk
IFhNTEVycm9yczo6YXBwZW5kRXJyb3JNZXNzYWdlKEFTQ0lJTGl0ZXJhbCB0eXBlU3RyaW5nLCBU
ZXh0UG9zaXRpb24gcG9zaXRpbwogICAgIG1fZXJyb3JNZXNzYWdlcy5hcHBlbmQodHlwZVN0cmlu
ZywgIiBvbiBsaW5lICIsIHBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpLCAiIGF0IGNvbHVt
biAiLCBwb3NpdGlvbi5tX2NvbHVtbi5vbmVCYXNlZEludCgpLCAiOiAiLCBtZXNzYWdlKTsKIH0K
IAotc3RhdGljIGlubGluZSBSZWY8RWxlbWVudD4gY3JlYXRlWEhUTUxQYXJzZXJFcnJvckhlYWRl
cihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlcykKK3N0YXRp
YyBpbmxpbmUgUmVmPEVsZW1lbnQ+IGNyZWF0ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIoRG9jdW1l
bnQmIGRvY3VtZW50LCBTdHJpbmcmJiBlcnJvck1lc3NhZ2VzKQogewogICAgIFJlZjxFbGVtZW50
PiByZXBvcnRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChRdWFsaWZpZWROYW1lKG51
bGxBdG9tKCksICJwYXJzZXJlcnJvciJfcywgeGh0bWxOYW1lc3BhY2VVUkkpLCB0cnVlKTsKIApA
QCAtOTksNyArOTksNyBAQCBzdGF0aWMgaW5saW5lIFJlZjxFbGVtZW50PiBjcmVhdGVYSFRNTFBh
cnNlckVycm9ySGVhZGVyKERvY3VtZW50JiBkb2N1bWVudCwgY29ucwogICAgIGZpeGVkLT5wYXJz
ZXJTZXRBdHRyaWJ1dGVzKGZpeGVkQXR0cmlidXRlcyk7CiAgICAgcmVwb3J0RWxlbWVudC0+cGFy
c2VyQXBwZW5kQ2hpbGQoZml4ZWQpOwogCi0gICAgZml4ZWQtPnBhcnNlckFwcGVuZENoaWxkKFRl
eHQ6OmNyZWF0ZShkb2N1bWVudCwgZXJyb3JNZXNzYWdlcykpOworICAgIGZpeGVkLT5wYXJzZXJB
cHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIFdURk1vdmUoZXJyb3JNZXNzYWdlcykp
KTsKIAogICAgIGgzID0gSFRNTEhlYWRpbmdFbGVtZW50OjpjcmVhdGUoaDNUYWcsIGRvY3VtZW50
KTsKICAgICByZXBvcnRFbGVtZW50LT5wYXJzZXJBcHBlbmRDaGlsZChoMyk7CkBAIC0xNDIsOCAr
MTQyLDcgQEAgdm9pZCBYTUxFcnJvcnM6Omluc2VydEVycm9yTWVzc2FnZUJsb2NrKCkKICAgICAg
ICAgZG9jdW1lbnRFbGVtZW50ID0gV1RGTW92ZShib2R5KTsKICAgICB9CiAKLSAgICBTdHJpbmcg
ZXJyb3JNZXNzYWdlcyA9IG1fZXJyb3JNZXNzYWdlcy50b1N0cmluZygpOwotICAgIGF1dG8gcmVw
b3J0RWxlbWVudCA9IGNyZWF0ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIobV9kb2N1bWVudCwgZXJy
b3JNZXNzYWdlcyk7CisgICAgYXV0byByZXBvcnRFbGVtZW50ID0gY3JlYXRlWEhUTUxQYXJzZXJF
cnJvckhlYWRlcihtX2RvY3VtZW50LCBtX2Vycm9yTWVzc2FnZXMudG9TdHJpbmcoKSk7CiAKICNp
ZiBFTkFCTEUoWFNMVCkKICAgICBpZiAobV9kb2N1bWVudC50cmFuc2Zvcm1Tb3VyY2VEb2N1bWVu
dCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAKaW5kZXggMDJlZTk5MGNlMDdk
YTBiZjM5MzA0YWIxZGI3MmFlMDc0ZTFjMWE1Mi4uYTZhZDExYjc3MjE3ZTc3ODkxMjQ2ZGI5Y2Zh
Y2I1NWI2YzdhZWU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxUcmVlVmlld2VyLmNwcApAQCAtNTgs
NyArNTgsNyBAQCB2b2lkIFhNTFRyZWVWaWV3ZXI6OnRyYW5zZm9ybURvY3VtZW50VG9UcmVlVmll
dygpCiAgICAgbV9kb2N1bWVudC5mcmFtZSgpLT5zY3JpcHQoKS5ldmFsdWF0ZUlnbm9yaW5nRXhj
ZXB0aW9uKFNjcmlwdFNvdXJjZUNvZGUoQXRvbVN0cmluZygicHJlcGFyZVdlYktpdFhNTFZpZXdl
cignVGhpcyBYTUwgZmlsZSBkb2VzIG5vdCBhcHBlYXIgdG8gaGF2ZSBhbnkgc3R5bGUgaW5mb3Jt
YXRpb24gYXNzb2NpYXRlZCB3aXRoIGl0LiBUaGUgZG9jdW1lbnQgdHJlZSBpcyBzaG93biBiZWxv
dy4nKTsiX3MpKSk7CiAKICAgICBTdHJpbmcgY3NzU3RyaW5nID0gU3RyaW5nSW1wbDo6Y3JlYXRl
V2l0aG91dENvcHlpbmcoWE1MVmlld2VyX2Nzcywgc2l6ZW9mKFhNTFZpZXdlcl9jc3MpKTsKLSAg
ICBhdXRvIHRleHQgPSBtX2RvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzc1N0cmluZyk7CisgICAg
YXV0byB0ZXh0ID0gbV9kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShXVEZNb3ZlKGNzc1N0cmluZykp
OwogICAgIG1fZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoU3RyaW5nKCJ4bWwtdmlld2VyLXN0eWxl
Il9zKSktPmFwcGVuZENoaWxkKHRleHQpOwogICAgIG1fZG9jdW1lbnQuc3R5bGVTY29wZSgpLmRp
ZENoYW5nZUFjdGl2ZVN0eWxlU2hlZXRDYW5kaWRhdGVzKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNM
VFByb2Nlc3Nvci5jcHAKaW5kZXggYmU1OGQ2Zjc0NDFjZDA4M2IyMzJhNGNkNDVkNDBlMTRmNDhh
NWJhMS4uYjQ1YWMxNWM2MjZjYjgzYjg2MmJlNWJhZGRkNjg0ZGE0OWQ2MTY2YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIFJlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBYU0xUUHJvY2Vzc29yOjp0cmFuc2Zvcm1Ub0ZyYWdtZW50KE5vZGUmIHNv
dXJjZU5vZGUsIERvCiAKICAgICBpZiAoIXRyYW5zZm9ybVRvU3RyaW5nKHNvdXJjZU5vZGUsIHJl
c3VsdE1JTUVUeXBlLCByZXN1bHRTdHJpbmcsIHJlc3VsdEVuY29kaW5nKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50Rm9yVHJhbnNmb3JtVG9GcmFn
bWVudChvdXRwdXREb2N1bWVudCwgcmVzdWx0U3RyaW5nLCByZXN1bHRNSU1FVHlwZSk7CisgICAg
cmV0dXJuIGNyZWF0ZUZyYWdtZW50Rm9yVHJhbnNmb3JtVG9GcmFnbWVudChvdXRwdXREb2N1bWVu
dCwgV1RGTW92ZShyZXN1bHRTdHJpbmcpLCBXVEZNb3ZlKHJlc3VsdE1JTUVUeXBlKSk7CiB9CiAK
IHZvaWQgWFNMVFByb2Nlc3Nvcjo6c2V0UGFyYW1ldGVyKGNvbnN0IFN0cmluZyYgLypuYW1lc3Bh
Y2VVUkkqLywgY29uc3QgU3RyaW5nJiBsb2NhbE5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4
IDFhYjhhMzUyNGE2Y2QwZjkzZmM2NWYxYmY4MWI1ZDczMjBlYzE2N2QuLjg1NGUyNzZlZThiNTJj
MTUzOWJjMGM0NDJiODVkZDk5OGQ2MDBlMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBYTUxE
b2N1bWVudFBhcnNlcjo6Y3JlYXRlTGVhZlRleHROb2RlKCkKIAogICAgIEFTU0VSVChtX2J1ZmZl
cmVkVGV4dC5zaXplKCkgPT0gMCk7CiAgICAgQVNTRVJUKCFtX2xlYWZUZXh0Tm9kZSk7Ci0gICAg
bV9sZWFmVGV4dE5vZGUgPSBUZXh0OjpjcmVhdGUobV9jdXJyZW50Tm9kZS0+ZG9jdW1lbnQoKSwg
ZW1wdHlTdHJpbmcoKSk7CisgICAgbV9sZWFmVGV4dE5vZGUgPSBUZXh0OjpjcmVhdGUobV9jdXJy
ZW50Tm9kZS0+ZG9jdW1lbnQoKSwgU3RyaW5nIHsgZW1wdHlTdHJpbmcoKSB9KTsKICAgICBtX2N1
cnJlbnROb2RlLT5wYXJzZXJBcHBlbmRDaGlsZCgqbV9sZWFmVGV4dE5vZGUpOwogfQogCkBAIC0y
OTYsNyArMjk2LDcgQEAgYm9vbCBYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VEb2N1bWVudEZyYWdt
ZW50KGNvbnN0IFN0cmluZyYgY2h1bmssIERvY3VtZW50RnJhZ20KICAgICAvLyBodHRwOi8vd3d3
LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aGUteGh0
bWwtc3ludGF4Lmh0bWwjeG1sLWZyYWdtZW50LXBhcnNpbmctYWxnb3JpdGhtCiAgICAgLy8gRm9y
IG5vdyB3ZSBoYXZlIGEgaGFjayBmb3Igc2NyaXB0L3N0eWxlIGlubmVySFRNTCBzdXBwb3J0Ogog
ICAgIGlmIChjb250ZXh0RWxlbWVudCAmJiAoY29udGV4dEVsZW1lbnQtPmhhc0xvY2FsTmFtZShI
VE1MTmFtZXM6OnNjcmlwdFRhZy0+bG9jYWxOYW1lKCkpIHx8IGNvbnRleHRFbGVtZW50LT5oYXNM
b2NhbE5hbWUoSFRNTE5hbWVzOjpzdHlsZVRhZy0+bG9jYWxOYW1lKCkpKSkgewotICAgICAgICBm
cmFnbWVudC5wYXJzZXJBcHBlbmRDaGlsZChmcmFnbWVudC5kb2N1bWVudCgpLmNyZWF0ZVRleHRO
b2RlKGNodW5rKSk7CisgICAgICAgIGZyYWdtZW50LnBhcnNlckFwcGVuZENoaWxkKGZyYWdtZW50
LmRvY3VtZW50KCkuY3JlYXRlVGV4dE5vZGUoU3RyaW5nIHsgY2h1bmsgfSkpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01JbXBsZW1lbnRhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NRE9NSW1wbGVtZW50YXRpb24uY3BwCmluZGV4IGJmOGM0NDJlM2YxOTFkMmZjZDNi
N2VlNWI3MmY5N2VhZjgwZDU2ZWMuLmFmOGI1MTg4ODA4ZDcwNzIyM2U0ZDcxOGJmZTMwMGRhZDUz
NTk1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01JbXBsZW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURP
TUltcGxlbWVudGF0aW9uLmNwcApAQCAtMTc5LDcgKzE3OSw3IEBAIFdlYktpdERPTUhUTUxEb2N1
bWVudCogd2Via2l0X2RvbV9kb21faW1wbGVtZW50YXRpb25fY3JlYXRlX2h0bWxfZG9jdW1lbnQo
V2ViS2l0CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwodGl0bGUsIDApOwogICAgIFdlYkNvcmU6
OkRPTUltcGxlbWVudGF0aW9uKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdURjo6
U3RyaW5nIGNvbnZlcnRlZFRpdGxlID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHRpdGxlKTsKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6SFRNTERvY3VtZW50PiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQ
dHIoaXRlbS0+Y3JlYXRlSFRNTERvY3VtZW50KGNvbnZlcnRlZFRpdGxlKSk7CisgICAgUmVmUHRy
PFdlYkNvcmU6OkhUTUxEb2N1bWVudD4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0t
PmNyZWF0ZUhUTUxEb2N1bWVudChXVEZNb3ZlKGNvbnZlcnRlZFRpdGxlKSkpOwogICAgIHJldHVy
biBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TURvY3VtZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Eb2N1bWVudEd0ay5jcHAKaW5kZXggYTljZGFjOWMwOTEx
NGUyZDEzNjIyM2E5YTcyNWVmZWFjNTdhYThiNy4uZWI0ZjhmYTVkYmRkOGE0MWM3MTczODliODYw
NTJhZGZmYWRjMzBjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURvY3VtZW50R3RrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
RG9jdW1lbnRHdGsuY3BwCkBAIC05MDUsNyArOTA1LDcgQEAgV2ViS2l0RE9NVGV4dCogd2Via2l0
X2RvbV9kb2N1bWVudF9jcmVhdGVfdGV4dF9ub2RlKFdlYktpdERPTURvY3VtZW50KiBzZWxmLCBj
b24KICAgICBnX3JldHVybl92YWxfaWZfZmFpbChkYXRhLCAwKTsKICAgICBXZWJDb3JlOjpEb2N1
bWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXVEY6OlN0cmluZyBjb252ZXJ0
ZWREYXRhID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KGRhdGEpOwotICAgIFJlZlB0cjxXZWJDb3Jl
OjpUZXh0PiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+Y3JlYXRlVGV4dE5vZGUo
Y29udmVydGVkRGF0YSkpOworICAgIFJlZlB0cjxXZWJDb3JlOjpUZXh0PiBnb2JqZWN0UmVzdWx0
ID0gV1RGOjpnZXRQdHIoaXRlbS0+Y3JlYXRlVGV4dE5vZGUoV1RGTW92ZShjb252ZXJ0ZWREYXRh
KSkpOwogICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKIH0KIApA
QCAtOTE2LDcgKzkxNiw3IEBAIFdlYktpdERPTUNvbW1lbnQqIHdlYmtpdF9kb21fZG9jdW1lbnRf
Y3JlYXRlX2NvbW1lbnQoV2ViS2l0RE9NRG9jdW1lbnQqIHNlbGYsIGNvCiAgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoZGF0YSwgMCk7CiAgICAgV2ViQ29yZTo6RG9jdW1lbnQqIGl0ZW0gPSBXZWJL
aXQ6OmNvcmUoc2VsZik7CiAgICAgV1RGOjpTdHJpbmcgY29udmVydGVkRGF0YSA9IFdURjo6U3Ry
aW5nOjpmcm9tVVRGOChkYXRhKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q29tbWVudD4gZ29iamVj
dFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPmNyZWF0ZUNvbW1lbnQoY29udmVydGVkRGF0YSkp
OworICAgIFJlZlB0cjxXZWJDb3JlOjpDb21tZW50PiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQ
dHIoaXRlbS0+Y3JlYXRlQ29tbWVudChXVEZNb3ZlKGNvbnZlcnRlZERhdGEpKSk7CiAgICAgcmV0
dXJuIFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOwogfQogCkBAIC05MjcsOCArOTI3
LDcgQEAgV2ViS2l0RE9NQ0RBVEFTZWN0aW9uKiB3ZWJraXRfZG9tX2RvY3VtZW50X2NyZWF0ZV9j
ZGF0YV9zZWN0aW9uKFdlYktpdERPTURvY3VtZW4KICAgICBnX3JldHVybl92YWxfaWZfZmFpbChk
YXRhLCAwKTsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbCghZXJyb3IgfHwgISplcnJvciwgMCk7
CiAgICAgV2ViQ29yZTo6RG9jdW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAg
V1RGOjpTdHJpbmcgY29udmVydGVkRGF0YSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChkYXRhKTsK
LSAgICBhdXRvIHJlc3VsdCA9IGl0ZW0tPmNyZWF0ZUNEQVRBU2VjdGlvbihjb252ZXJ0ZWREYXRh
KTsKKyAgICBhdXRvIHJlc3VsdCA9IGl0ZW0tPmNyZWF0ZUNEQVRBU2VjdGlvbihXVEY6OlN0cmlu
Zzo6ZnJvbVVURjgoZGF0YSkpOwogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAg
ICAgICAgYXV0byBkZXNjcmlwdGlvbiA9IFdlYkNvcmU6OkRPTUV4Y2VwdGlvbjo6ZGVzY3JpcHRp
b24ocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCkpOwogICAgICAgICBnX3NldF9lcnJv
cl9saXRlcmFsKGVycm9yLCBnX3F1YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGRlc2Ny
aXB0aW9uLmxlZ2FjeUNvZGUsIGRlc2NyaXB0aW9uLm5hbWUpOwpAQCAtOTQ1LDkgKzk0NCw3IEBA
IFdlYktpdERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiogd2Via2l0X2RvbV9kb2N1bWVudF9jcmVh
dGVfcHJvY2Vzc2luZ19pbnN0cnVjdGlvCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoZGF0YSwg
MCk7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoIWVycm9yIHx8ICEqZXJyb3IsIDApOwogICAg
IFdlYkNvcmU6OkRvY3VtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFdURjo6
U3RyaW5nIGNvbnZlcnRlZFRhcmdldCA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh0YXJnZXQpOwot
ICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZERhdGEgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgoZGF0
YSk7Ci0gICAgYXV0byByZXN1bHQgPSBpdGVtLT5jcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24o
Y29udmVydGVkVGFyZ2V0LCBjb252ZXJ0ZWREYXRhKTsKKyAgICBhdXRvIHJlc3VsdCA9IGl0ZW0t
PmNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihXVEY6OlN0cmluZzo6ZnJvbVVURjgodGFyZ2V0
KSwgV1RGOjpTdHJpbmc6OmZyb21VVEY4KGRhdGEpKTsKICAgICBpZiAocmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKSB7CiAgICAgICAgIGF1dG8gZGVzY3JpcHRpb24gPSBXZWJDb3JlOjpET01FeGNlcHRp
b246OmRlc2NyaXB0aW9uKHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpKTsKICAgICAg
ICAgZ19zZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lU
X0RPTSIpLCBkZXNjcmlwdGlvbi5sZWdhY3lDb2RlLCBkZXNjcmlwdGlvbi5uYW1lKTsKQEAgLTE1
MzIsOCArMTUyOSw3IEBAIHZvaWQgd2Via2l0X2RvbV9kb2N1bWVudF9zZXRfdGl0bGUoV2ViS2l0
RE9NRG9jdW1lbnQqIHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSkKICAgICBnX3JldHVybl9pZl9m
YWlsKFdFQktJVF9ET01fSVNfRE9DVU1FTlQoc2VsZikpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwo
dmFsdWUpOwogICAgIFdlYkNvcmU6OkRvY3VtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYp
OwotICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFZhbHVlID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4
KHZhbHVlKTsKLSAgICBpdGVtLT5zZXRUaXRsZShjb252ZXJ0ZWRWYWx1ZSk7CisgICAgaXRlbS0+
c2V0VGl0bGUoV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKSk7CiB9CiAKIGdjaGFyKiB3ZWJr
aXRfZG9tX2RvY3VtZW50X2dldF9kaXIoV2ViS2l0RE9NRG9jdW1lbnQqIHNlbGYpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NRWxlbWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRWxlbWVudEd0ay5jcHAKaW5kZXggNGQxMjY1
NTUxMGMyNDQwY2VhNjQwZGIyNTE1MzgxZTZjYjZlZWQ4NS4uNDY0YTBlNWQ5ZGI0NjJhMmI0ZGQz
OTMwNmQ0ZDVhMTE3YjcxOTExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUVsZW1lbnRHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJL
aXRET01FbGVtZW50R3RrLmNwcApAQCAtOTQzLDkgKzk0Myw3IEBAIHZvaWQgd2Via2l0X2RvbV9l
bGVtZW50X2luc2VydF9hZGphY2VudF90ZXh0KFdlYktpdERPTUVsZW1lbnQqIHNlbGYsIGNvbnN0
IGdjaGFyCiAgICAgZ19yZXR1cm5faWZfZmFpbCh0ZXh0KTsKICAgICBnX3JldHVybl9pZl9mYWls
KCFlcnJvciB8fCAhKmVycm9yKTsKICAgICBXZWJDb3JlOjpFbGVtZW50KiBpdGVtID0gV2ViS2l0
Ojpjb3JlKHNlbGYpOwotICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFdoZXJlID0gV1RGOjpTdHJp
bmc6OmZyb21VVEY4KHdoZXJlKTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRUZXh0ID0gV1RG
OjpTdHJpbmc6OmZyb21VVEY4KHRleHQpOwotICAgIGF1dG8gcmVzdWx0ID0gaXRlbS0+aW5zZXJ0
QWRqYWNlbnRUZXh0KGNvbnZlcnRlZFdoZXJlLCBjb252ZXJ0ZWRUZXh0KTsKKyAgICBhdXRvIHJl
c3VsdCA9IGl0ZW0tPmluc2VydEFkamFjZW50VGV4dChXVEY6OlN0cmluZzo6ZnJvbVVURjgod2hl
cmUpLCBXVEY6OlN0cmluZzo6ZnJvbVVURjgodGV4dCkpOwogICAgIGlmIChyZXN1bHQuaGFzRXhj
ZXB0aW9uKCkpIHsKICAgICAgICAgYXV0byBkZXNjcmlwdGlvbiA9IFdlYkNvcmU6OkRPTUV4Y2Vw
dGlvbjo6ZGVzY3JpcHRpb24ocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCkpOwogICAg
ICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBnX3F1YXJrX2Zyb21fc3RyaW5nKCJXRUJL
SVRfRE9NIiksIGRlc2NyaXB0aW9uLmxlZ2FjeUNvZGUsIGRlc2NyaXB0aW9uLm5hbWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
RE9NL1dlYktpdERPTUhUTUxBbmNob3JFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MQW5jaG9yRWxlbWVu
dC5jcHAKaW5kZXggYTJkNWE4YWRjOTJlZTlkYTRiZTI4ZjkwNGNhYmVjYjY5ZGQ2YzJhNS4uYjkx
MTBiZmFmMzhiYzRmNWE1NDU3YjkzZTY4NWUxNWU1YjUyZmIyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhU
TUxBbmNob3JFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTEFuY2hvckVsZW1lbnQuY3BwCkBAIC02
MjgsOCArNjI4LDcgQEAgdm9pZCB3ZWJraXRfZG9tX2h0bWxfYW5jaG9yX2VsZW1lbnRfc2V0X3Rl
eHQoV2ViS2l0RE9NSFRNTEFuY2hvckVsZW1lbnQqIHNlbGYsIGMKICAgICBnX3JldHVybl9pZl9m
YWlsKFdFQktJVF9ET01fSVNfSFRNTF9BTkNIT1JfRUxFTUVOVChzZWxmKSk7CiAgICAgZ19yZXR1
cm5faWZfZmFpbCh2YWx1ZSk7CiAgICAgV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQqIGl0ZW0g
PSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV1RGOjpTdHJpbmcgY29udmVydGVkVmFsdWUgPSBX
VEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpOwotICAgIGl0ZW0tPnNldFRleHQoY29udmVydGVk
VmFsdWUpOworICAgIGl0ZW0tPnNldFRleHQoV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKSk7
CiB9CiAKIGdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfYW5jaG9yX2VsZW1lbnRfZ2V0X2hyZWYoV2Vi
S2l0RE9NSFRNTEFuY2hvckVsZW1lbnQqIHNlbGYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
RE9NL1dlYktpdERPTUhUTUxFbGVtZW50LmNwcAppbmRleCBhYmE4NjMzNTQ0ZDJiZjFjMTZmY2Mx
M2E2MmEzZWNhZDJhMTFkYmUxLi4zOGQyZDE1MjA4NTU4MzZhMTBhOWRmNDM0MjY2YzM5ZmM1YTM1
YzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MRWxlbWVu
dC5jcHAKQEAgLTU1OSw3ICs1NTksNyBAQCB2b2lkIHdlYmtpdF9kb21faHRtbF9lbGVtZW50X3Nl
dF9pbm5lcl90ZXh0KFdlYktpdERPTUhUTUxFbGVtZW50KiBzZWxmLCBjb25zdCBnYwogICAgIGdf
cmV0dXJuX2lmX2ZhaWwoIWVycm9yIHx8ICEqZXJyb3IpOwogICAgIFdlYkNvcmU6OkhUTUxFbGVt
ZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdURjo6U3RyaW5nIGNvbnZlcnRl
ZFZhbHVlID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKTsKLSAgICBhdXRvIHJlc3VsdCA9
IGl0ZW0tPnNldElubmVyVGV4dChjb252ZXJ0ZWRWYWx1ZSk7CisgICAgYXV0byByZXN1bHQgPSBp
dGVtLT5zZXRJbm5lclRleHQoV1RGTW92ZShjb252ZXJ0ZWRWYWx1ZSkpOwogICAgIGlmIChyZXN1
bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgYXV0byBkZXNjcmlwdGlvbiA9IFdlYkNvcmU6
OkRPTUV4Y2VwdGlvbjo6ZGVzY3JpcHRpb24ocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2Rl
KCkpOwogICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBnX3F1YXJrX2Zyb21fc3Ry
aW5nKCJXRUJLSVRfRE9NIiksIGRlc2NyaXB0aW9uLmxlZ2FjeUNvZGUsIGRlc2NyaXB0aW9uLm5h
bWUpOwpAQCAtNTgzLDcgKzU4Myw3IEBAIHZvaWQgd2Via2l0X2RvbV9odG1sX2VsZW1lbnRfc2V0
X291dGVyX3RleHQoV2ViS2l0RE9NSFRNTEVsZW1lbnQqIHNlbGYsIGNvbnN0IGdjCiAgICAgZ19y
ZXR1cm5faWZfZmFpbCghZXJyb3IgfHwgISplcnJvcik7CiAgICAgV2ViQ29yZTo6SFRNTEVsZW1l
bnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV1RGOjpTdHJpbmcgY29udmVydGVk
VmFsdWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpOwotICAgIGF1dG8gcmVzdWx0ID0g
aXRlbS0+c2V0T3V0ZXJUZXh0KGNvbnZlcnRlZFZhbHVlKTsKKyAgICBhdXRvIHJlc3VsdCA9IGl0
ZW0tPnNldE91dGVyVGV4dChXVEZNb3ZlKGNvbnZlcnRlZFZhbHVlKSk7CiAgICAgaWYgKHJlc3Vs
dC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICBhdXRvIGRlc2NyaXB0aW9uID0gV2ViQ29yZTo6
RE9NRXhjZXB0aW9uOjpkZXNjcmlwdGlvbihyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUo
KSk7CiAgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJp
bmcoIldFQktJVF9ET00iKSwgZGVzY3JpcHRpb24ubGVnYWN5Q29kZSwgZGVzY3JpcHRpb24ubmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTFNjcmlwdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxTY3Jp
cHRFbGVtZW50LmNwcAppbmRleCA2MTlkYWY1NjdmZDI2NWNlMmJiOTExOWM5NTgyYTk3YTRjM2I5
MGUzLi5kNmM3ZmU4ZmE0NTQzYjUwOTFkNzcwN2FmZjA5YTNlMDAyNGY0MDA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NSFRNTFNjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MU2NyaXB0RWxlbWVudC5j
cHAKQEAgLTI2OCw4ICsyNjgsNyBAQCB2b2lkIHdlYmtpdF9kb21faHRtbF9zY3JpcHRfZWxlbWVu
dF9zZXRfdGV4dChXZWJLaXRET01IVE1MU2NyaXB0RWxlbWVudCogc2VsZiwgYwogICAgIGdfcmV0
dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX1NDUklQVF9FTEVNRU5UKHNlbGYpKTsKICAg
ICBnX3JldHVybl9pZl9mYWlsKHZhbHVlKTsKICAgICBXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVu
dCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRW
YWx1ZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2YWx1ZSk7Ci0gICAgaXRlbS0+c2V0VGV4dChj
b252ZXJ0ZWRWYWx1ZSk7CisgICAgaXRlbS0+c2V0VGV4dChXVEY6OlN0cmluZzo6ZnJvbVVURjgo
dmFsdWUpKTsKIH0KIAogZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9zY3JpcHRfZWxlbWVudF9nZXRf
aHRtbF9mb3IoV2ViS2l0RE9NSFRNTFNjcmlwdEVsZW1lbnQqIHNlbGYpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0
RE9NSFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTFRleHRBcmVhRWxlbWVudC5jcHAK
aW5kZXggNDU3YTYxY2RjODJjOTE5NDU0MWI2MTBkOTQxN2JiM2IzNmY2MTE5OC4uZjNhMTQ1ZGFl
MWZkZDI5ZjMxNjgwNjMwMzQxNTA4ZDEwNWNiZmM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxUZXh0
QXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MVGV4dEFyZWFFbGVtZW50LmNwcApAQCAtNTAz
LDggKzUwMyw3IEBAIHZvaWQgd2Via2l0X2RvbV9odG1sX3RleHRfYXJlYV9lbGVtZW50X3NldF9k
ZWZhdWx0X3ZhbHVlKFdlYktpdERPTUhUTUxUZXh0QXJlYUVsCiAgICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfRE9NX0lTX0hUTUxfVEVYVF9BUkVBX0VMRU1FTlQoc2VsZikpOwogICAgIGdfcmV0
dXJuX2lmX2ZhaWwodmFsdWUpOwogICAgIFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQqIGl0
ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV1RGOjpTdHJpbmcgY29udmVydGVkVmFsdWUg
PSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpOwotICAgIGl0ZW0tPnNldERlZmF1bHRWYWx1
ZShjb252ZXJ0ZWRWYWx1ZSk7CisgICAgaXRlbS0+c2V0RGVmYXVsdFZhbHVlKFdURjo6U3RyaW5n
Ojpmcm9tVVRGOCh2YWx1ZSkpOwogfQogCiBnY2hhciogd2Via2l0X2RvbV9odG1sX3RleHRfYXJl
YV9lbGVtZW50X2dldF92YWx1ZShXZWJLaXRET01IVE1MVGV4dEFyZWFFbGVtZW50KiBzZWxmKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTUhUTUxUaXRsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxUaXRsZUVsZW1l
bnQuY3BwCmluZGV4IDk2NzMxZDNmN2NjNGEzMzIxYjdjZDQ0Yzg1NjJlNWNhYTRiNDM1NTUuLjA3
MmQ2MTY0MTFjNDU2ZGNlZjNkODZlYTE1NDVjOWQ3MWNhNzg2MjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01I
VE1MVGl0bGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTFRpdGxlRWxlbWVudC5jcHAKQEAgLTE2
NSw4ICsxNjUsNyBAQCB2b2lkIHdlYmtpdF9kb21faHRtbF90aXRsZV9lbGVtZW50X3NldF90ZXh0
KFdlYktpdERPTUhUTUxUaXRsZUVsZW1lbnQqIHNlbGYsIGNvbgogICAgIGdfcmV0dXJuX2lmX2Zh
aWwoV0VCS0lUX0RPTV9JU19IVE1MX1RJVExFX0VMRU1FTlQoc2VsZikpOwogICAgIGdfcmV0dXJu
X2lmX2ZhaWwodmFsdWUpOwogICAgIFdlYkNvcmU6OkhUTUxUaXRsZUVsZW1lbnQqIGl0ZW0gPSBX
ZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgV1RGOjpTdHJpbmcgY29udmVydGVkVmFsdWUgPSBXVEY6
OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpOwotICAgIGl0ZW0tPnNldFRleHQoY29udmVydGVkVmFs
dWUpOworICAgIGl0ZW0tPnNldFRleHQoV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKSk7CiB9
CiAKIEdfR05VQ19FTkRfSUdOT1JFX0RFUFJFQ0FUSU9OUzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Ob2Rl
R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9XZWJLaXRET01Ob2RlR3RrLmNwcAppbmRleCAyYzQ5MzNjMjU0NzMwN2E4MTdkYTE1NDdh
Y2Y4MDYyODk2NzViOTk1Li41NTQ0YWRhYzNlY2ZlNDM3MjhhZjBkNTdhZGFiNmZhZTI1OGJmZjFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NTm9kZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTU5vZGVHdGsuY3BwCkBAIC02
MTMsOCArNjEzLDcgQEAgdm9pZCB3ZWJraXRfZG9tX25vZGVfc2V0X3RleHRfY29udGVudChXZWJL
aXRET01Ob2RlKiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUsIEcKICAgICBnX3JldHVybl9pZl9m
YWlsKHZhbHVlKTsKICAgICBnX3JldHVybl9pZl9mYWlsKCFlcnJvciB8fCAhKmVycm9yKTsKICAg
ICBXZWJDb3JlOjpOb2RlKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFdURjo6U3Ry
aW5nIGNvbnZlcnRlZFZhbHVlID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKTsKLSAgICBp
dGVtLT5zZXRUZXh0Q29udGVudChjb252ZXJ0ZWRWYWx1ZSk7CisgICAgaXRlbS0+c2V0VGV4dENv
bnRlbnQoV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKSk7CiB9CiAKIFdlYktpdERPTUVsZW1l
bnQqIHdlYmtpdF9kb21fbm9kZV9nZXRfcGFyZW50X2VsZW1lbnQoV2ViS2l0RE9NTm9kZSogc2Vs
ZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDgz
ZWJlZGI0NzljMjZhNTc4N2ExOGNlMTEzODU2ZDhjZDU2MWVhYjIuLmZlZWY0NWZiMWFjNWNmM2Fi
M2VkYzVlMzg5OTU0MTBiZGFhZDcwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJGcmFtZS5tbQpAQCAtMTY0MCw3ICsxNjQwLDcgQEAgLSAodm9pZClzZXRUZXh0OihO
U1N0cmluZyAqKXRleHQgYXNDaGlsZE9mRWxlbWVudDooRE9NRWxlbWVudCAqKWVsZW1lbnQKICAg
ICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAKLSAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0VGV4dEFzQ2hpbGRPZkVsZW1lbnQodGV4dCwg
KmNvcmUoZWxlbWVudCkpOworICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRUZXh0QXNDaGlsZE9mRWxl
bWVudChTdHJpbmcgeyB0ZXh0IH0sICpjb3JlKGVsZW1lbnQpKTsKIH0KIAogLSAodm9pZClzZXRE
aWN0YXRpb25QaHJhc2VzOihOU0FycmF5ICopZGljdGF0aW9uUGhyYXNlcyBtZXRhZGF0YTooaWQp
bWV0YWRhdGEgYXNDaGlsZE9mRWxlbWVudDooRE9NRWxlbWVudCAqKWVsZW1lbnQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RPTUhUTUxDbGFzc2VzLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0RPTUhUTUxDbGFzc2VzLmNwcAppbmRleCA0NGY3YmNjZWY2ZTNmYjI4
Mzg4ZDM2MzhkZDQzMjY2ZGJlN2E1NDhhLi4yN2JjMDQ4MDZmM2I3MjQxNTJhMmFkZjI5YjE1NmUz
YTliYmU5NjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9ET01IVE1MQ2xh
c3Nlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NSFRNTENsYXNzZXMuY3Bw
CkBAIC01MzAsOCArNTMwLDcgQEAgSFJFU1VMVCBET01IVE1MRWxlbWVudDo6c2V0SW5uZXJUZXh0
KF9Jbl8gQlNUUiB0ZXh0KQogewogICAgIEFTU0VSVChpczxIVE1MRWxlbWVudD4obV9lbGVtZW50
KSk7CiAgICAgSFRNTEVsZW1lbnQqIGh0bWxFbGVtZW50ID0gZG93bmNhc3Q8SFRNTEVsZW1lbnQ+
KG1fZWxlbWVudCk7Ci0gICAgV1RGOjpTdHJpbmcgdGV4dFN0cmluZyh0ZXh0LCBTeXNTdHJpbmdM
ZW4odGV4dCkpOwotICAgIGh0bWxFbGVtZW50LT5zZXRJbm5lclRleHQodGV4dFN0cmluZyk7Cisg
ICAgaHRtbEVsZW1lbnQtPnNldElubmVyVGV4dChXVEY6OlN0cmluZyh0ZXh0LCBTeXNTdHJpbmdM
ZW4odGV4dCkpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>