<?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>201821</bug_id>
          
          <creation_ts>2019-09-16 09:18:38 -0700</creation_ts>
          <short_desc>Simplify WebResourceLoadObserver now that we have one WebProcess per session</short_desc>
          <delta_ts>2019-09-16 14:22:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=198923</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>japhet</cc>
    
    <cc>katherine_cheney</cc>
    
    <cc>toyoshim</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
    
    <cc>youennf</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1571120</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-16 09:18:38 -0700</bug_when>
    <thetext>Simplify WebResourceLoadObserver now that we have one WebProcess per session.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571124</commentid>
    <comment_count>1</comment_count>
      <attachid>378865</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-16 09:27:11 -0700</bug_when>
    <thetext>Created attachment 378865
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571132</commentid>
    <comment_count>2</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-09-16 09:41:16 -0700</bug_when>
    <thetext>WinCairo failure appears to be a bot problem, unrelated to this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571136</commentid>
    <comment_count>3</comment_count>
      <attachid>378865</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-09-16 09:46:22 -0700</bug_when>
    <thetext>Comment on attachment 378865
Patch

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

&gt; Source/WebKit/ChangeLog:9
&gt; +        No need to pass sessionIDs around or stores statistics per sessionID.

&quot;or store&quot;

&gt; Source/WebKit/WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp:-214
&gt; -        return;

Do we really not need this anymore? Even if we don&apos;t need to pass sessionID to the rest of the ITP system, surely preventing passing of observations when we should don&apos;t log for the current network session seems like a good idea?

&gt; Source/WebKit/WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp:-238
&gt; -        return;

Ditto.

&gt; Source/WebKit/WebProcess/WebProcess.cpp:456
&gt; +    if (parameters.resourceLoadStatisticsEnabled &amp;&amp; !parameters.sessionID.isEphemeral())

While we don&apos;t log ITP data for ephemeral systems right now, we do want to apply these protections in the future. But I guess this is fine for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571143</commentid>
    <comment_count>4</comment_count>
      <attachid>378865</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-16 09:56:01 -0700</bug_when>
    <thetext>Comment on attachment 378865
Patch

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

&gt;&gt; Source/WebKit/WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp:-214
&gt;&gt; -        return;
&gt; 
&gt; Do we really not need this anymore? Even if we don&apos;t need to pass sessionID to the rest of the ITP system, surely preventing passing of observations when we should don&apos;t log for the current network session seems like a good idea?

If you look at WebProcess.cpp, you&apos;ll see that I do not even initialize the WebResourceLoadObserver if ITP is disabled or the sessionID is ephemeral.

Actually, I should probably drop the shouldLogResourceLoadStatistics() method entirely, looks like I forgot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571146</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-16 09:58:34 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #4)
&gt; Comment on attachment 378865 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=378865&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp:-214
&gt; &gt;&gt; -        return;
&gt; &gt; 
&gt; &gt; Do we really not need this anymore? Even if we don&apos;t need to pass sessionID to the rest of the ITP system, surely preventing passing of observations when we should don&apos;t log for the current network session seems like a good idea?
&gt; 
&gt; If you look at WebProcess.cpp, you&apos;ll see that I do not even initialize the
&gt; WebResourceLoadObserver if ITP is disabled or the sessionID is ephemeral.
&gt; 
&gt; Actually, I should probably drop the shouldLogResourceLoadStatistics()
&gt; method entirely, looks like I forgot.

The ITP system already has the sessionID without the WebContent process sending it to it since the NetworkConnectionToWebProcess knows the sessionID.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571149</commentid>
    <comment_count>6</comment_count>
      <attachid>378865</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-16 09:59:09 -0700</bug_when>
    <thetext>Comment on attachment 378865
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:696
&gt; +    if (auto* networkSession = this-&gt;networkSession()) {

See here, it is getting the networkSession for the sessionID of the WebProcess (See implementation of networkSession()).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571155</commentid>
    <comment_count>7</comment_count>
      <attachid>378865</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-09-16 10:04:32 -0700</bug_when>
    <thetext>Comment on attachment 378865
Patch

Looks good. r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571180</commentid>
    <comment_count>8</comment_count>
      <attachid>378873</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-16 11:02:18 -0700</bug_when>
    <thetext>Created attachment 378873
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571181</commentid>
    <comment_count>9</comment_count>
      <attachid>378874</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-16 11:03:50 -0700</bug_when>
    <thetext>Created attachment 378874
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571212</commentid>
    <comment_count>10</comment_count>
      <attachid>378881</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-16 12:53:40 -0700</bug_when>
    <thetext>Created attachment 378881
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571225</commentid>
    <comment_count>11</comment_count>
      <attachid>378886</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-16 13:07:00 -0700</bug_when>
    <thetext>Created attachment 378886
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571265</commentid>
    <comment_count>12</comment_count>
      <attachid>378886</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-16 14:21:36 -0700</bug_when>
    <thetext>Comment on attachment 378886
Patch

Clearing flags on attachment: 378886

Committed r249920: &lt;https://trac.webkit.org/changeset/249920&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571266</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-16 14:21:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571268</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-16 14:22:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/55414296&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378865</attachid>
            <date>2019-09-16 09:27:11 -0700</date>
            <delta_ts>2019-09-16 11:02:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201821-20190916092710.patch</filename>
            <type>text/plain</type>
            <size>30759</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5ODk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmFlMjQxMWI0YjM1Zjg3
OTdlZDViZjA4MzcxMzY4N2Q4ODI4YmZkNS4uMTNiZmY0ODYxOGE0MjNkZGVhMmI3YzA2MDQ2Zjdk
ZTc2NjQ3YWFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE5LTA5LTE2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgV2ViUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXIgbm93IHRoYXQgd2UgaGF2ZSBvbmUgV2ViUHJvY2VzcyBwZXIgc2Vzc2lv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxODIx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dDo6Y29ubmVjdCk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nV2ViU29ja2V0TG9hZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c3RhdGlzdGljc0Zv
clVSTCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW50ZXJuYWxzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9yVVJMKToKKwogMjAxOS0wOS0x
NiAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgRWxpbWluYXRl
IHNlcGFyYXRlIHNpbXBsZSBsaW5lIGxheW91dCBwYXRoIGZyb20gVGV4dEl0ZXJhdG9yCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDIxMmY1NDkxYmNkNGE5Yzc1NDAzOTgwMTllZGJiNmI2NDQ5YWFiMzkuLjQ0YzBiNDMz
NTQwNTk3NmQwMDlkMGM2MmY2ZWU2NmM2OWMzYWRjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEg
QEAKKzIwMTktMDktMTYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBTaW1wbGlmeSBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlciBub3cgdGhhdCB3ZSBoYXZlIG9uZSBX
ZWJQcm9jZXNzIHBlciBzZXNzaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDE4MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTaW1wbGlmeSBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlciBub3cgdGhhdCB3
ZSBoYXZlIG9uZSBXZWJQcm9jZXNzIHBlciBzZXNzaW9uLgorICAgICAgICBObyBuZWVkIHRvIHBh
c3Mgc2Vzc2lvbklEcyBhcm91bmQgb3Igc3RvcmVzIHN0YXRpc3RpY3MgcGVyIHNlc3Npb25JRC4K
KyAgICAgICAgQWxzbywgb25seSBpbml0aWFsaXplIHRoZSBXZWJSZXNvdXJjZUxvYWRPYnNlcnZl
ciBpZiBib3RoIElUUCBpcyBlbmFibGVkIGFuZAorICAgICAgICB3ZSdyZSBub3QgaW4gYSBXZWJD
b250ZW50IHByb2Nlc3MgdXNlZCBmb3IgYW4gZXBoZW1lcmFsIHNlc3Npb24uCisKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1VwZGF0ZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVy
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmVuc3VyZVJlc291
cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNjaGVkdWxlTm90aWZpY2F0aW9uSWZOZWVkZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c3RhdGlzdGljc0ZvclVSTCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjp0YWtlU3RhdGlzdGlj
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpjbGVhclN0YXRl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ0ZvbnRMb2Fk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ0NhbnZhc1Jl
YWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nQ2FudmFz
V3JpdGVPck1lYXN1cmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6bG9nTmF2aWdhdG9yQVBJQWNjZXNzZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6bG9nU2NyZWVuQVBJQWNjZXNzZWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nU3VicmVzb3VyY2VMb2FkaW5nKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1dlYlNvY2tldExvYWRpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nVXNlckludGVyYWN0
aW9uV2l0aFJlZHVjZWRUaW1lUmVzb2x1dGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnNldFdlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzKToKKwogMjAxOS0wOS0xNiAgQWRyaWFuIFBlcmV6IGRlIENh
c3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApp
bmRleCBkNzRlNmQ5MTkwMjNiZmIwOTc0MDhhNDg3NmU3NjRmMzA1OGQ3NDI0Li45OTI5NjNlYjU5
YzNiMDc1YmZlNTcxYmQ2M2E5NDBjNzEwZjRlZWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAtMjk4LDggKzI5OCw4IEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IFdlYlNvY2tldDo6Y29ubmVjdChjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHByCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3RhcmdldFVSTCA9IG1fdXJsLmlzb2xhdGVkQ29weSgpLCBtYWluRnJhbWVV
UkwgPSBjb250ZXh0LnVybCgpLmlzb2xhdGVkQ29weSgpLCBzZXNzaW9uSUQgPSBjb250ZXh0LnNl
c3Npb25JRCgpXSgpIHsKLSAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxv
Z1dlYlNvY2tldExvYWRpbmcodGFyZ2V0VVJMLCBtYWluRnJhbWVVUkwsIHNlc3Npb25JRCk7Cisg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0YXJnZXRVUkwgPSBtX3VybC5pc29sYXRlZENv
cHkoKSwgbWFpbkZyYW1lVVJMID0gY29udGV4dC51cmwoKS5pc29sYXRlZENvcHkoKV0oKSB7Cisg
ICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dXZWJTb2NrZXRMb2FkaW5n
KHRhcmdldFVSTCwgbWFpbkZyYW1lVVJMKTsKICAgICB9KTsKIAogICAgIGlmIChpczxEb2N1bWVu
dD4oY29udGV4dCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2Vy
dmVyLmgKaW5kZXggZGRlMjQ0ZDI0ODE1N2IxN2NhMGI3YzRlOTRjMjNmMGYyYTJjMmY4ZC4uMTRm
ZjM4YTc3NzQ2Njg0NDQxNGI4Mjc3ZTdiYjQ4ZjJmODQzMGE4OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgKQEAgLTI2LDcgKzI2LDYgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oIgotI2luY2x1ZGUg
PHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC00NSw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZXNvdXJj
ZUxvYWRPYnNlcnZlcigpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGxvZ1N1YnJlc291cmNlTG9h
ZGluZyhjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgLyogbmV3UmVxdWVzdCAq
LywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgLyogcmVkaXJlY3RSZXNwb25zZSAqLykgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIGxvZ1dlYlNvY2tldExvYWRpbmcoY29uc3QgVVJMJiAvKiB0YXJnZXRV
UkwgKi8sIGNvbnN0IFVSTCYgLyogbWFpbkZyYW1lVVJMICovLCBQQUw6OlNlc3Npb25JRCkgeyB9
CisgICAgdmlydHVhbCB2b2lkIGxvZ1dlYlNvY2tldExvYWRpbmcoY29uc3QgVVJMJiAvKiB0YXJn
ZXRVUkwgKi8sIGNvbnN0IFVSTCYgLyogbWFpbkZyYW1lVVJMICovKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgbG9nVXNlckludGVyYWN0aW9uV2l0aFJlZHVjZWRUaW1lUmVzb2x1dGlvbihjb25zdCBE
b2N1bWVudCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBsb2dGb250TG9hZChjb25zdCBEb2N1bWVu
dCYsIGNvbnN0IFN0cmluZyYgLyogZmFtaWx5TmFtZSAqLywgYm9vbCAvKiBsb2FkU3RhdHVzICov
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9nQ2FudmFzUmVhZChjb25zdCBEb2N1bWVudCYpIHsg
fQpAQCAtNTMsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGxvZ05hdmlnYXRv
ckFQSUFjY2Vzc2VkKGNvbnN0IERvY3VtZW50JiwgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
czo6TmF2aWdhdG9yQVBJKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9nU2NyZWVuQVBJQWNjZXNz
ZWQoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpTY3JlZW5B
UEkpIHsgfQogCi0gICAgdmlydHVhbCBTdHJpbmcgc3RhdGlzdGljc0ZvclVSTChQQUw6OlNlc3Np
b25JRCwgY29uc3QgVVJMJikgeyByZXR1cm4geyB9OyB9CisgICAgdmlydHVhbCBTdHJpbmcgc3Rh
dGlzdGljc0ZvclVSTChjb25zdCBVUkwmKSB7IHJldHVybiB7IH07IH0KICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlQ2VudHJhbFN0YXRpc3RpY3NTdG9yZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBj
bGVhclN0YXRlKCkgeyB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5k
ZXggYWE3YzE0MDExZDBiMDBkY2I3YzEyZGNmZjQ5ODUxMDQwNzQ3ODVlZS4uMDMwMGY5YTA0MzUw
NzAwNmJmZWY1OWRjOWNmOGYyZjdlMGY4MDRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcApAQCAtNDQ2NywxMSArNDQ2Nyw3IEBAIEpTVmFsdWUgSW50ZXJuYWxzOjpjbG9uZUFy
cmF5QnVmZmVyKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSBidWZmZXIsIEpTVmFsCiAK
IFN0cmluZyBJbnRlcm5hbHM6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NGb3JVUkwoY29uc3QgRE9N
VVJMJiB1cmwpCiB7Ci0gICAgYXV0byogZG9jdW1lbnQgPSBjb250ZXh0RG9jdW1lbnQoKTsKLSAg
ICBpZiAoIWRvY3VtZW50KQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLQotICAgIHJl
dHVybiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuc3RhdGlzdGljc0ZvclVSTChkb2N1
bWVudC0+c2Vzc2lvbklEKCksIHVybC5ocmVmKCkpOworICAgIHJldHVybiBSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6c2hhcmVkKCkuc3RhdGlzdGljc0ZvclVSTCh1cmwuaHJlZigpKTsKIH0KIAogdm9p
ZCBJbnRlcm5hbHM6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRl
eCBlNDg3ZmE2MWM1OGM1NWEyMzFmZWRmOGFlOWNjMTM5NmViNjA3MjJmLi40YWIzNDU3M2RhMzQy
ZmNmN2M2ODg3NzAzYjUzZDBlZTYzMzQwM2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtMjU2LDIwICsyNTYsMjAgQEAgdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNv
cmRzUHJvY2Vzc2luZygKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmIG9yaWdpbnMpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFJlc291
cmNlTG9hZFN0YXRpc3RpY3M+JiYgc3RhdGlzdGljcykKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwogCiAgICAgLy8gSXQgaXMgc2FmZSB0byBtb3ZlIHRoZSBvcmlnaW5zIHRvIHRo
ZSBiYWNrZ3JvdW5kIHF1ZXVlIHdpdGhvdXQgaXNvbGF0ZWQgY29weSBoZXJlIGJlY2F1c2UgdGhp
cyBpcyBhbiByLXZhbHVlCiAgICAgLy8gY29taW5nIGZyb20gSVBDLiBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzIG9ubHkgY29udGFpbnMgc3RyaW5ncyB3aGljaCBhcmUgc2FmZSB0byBtb3ZlIHRvIG90
aGVyIHRocmVhZHMgYXMgbG9uZwogICAgIC8vIGFzIG5vYm9keSBvbiB0aGlzIHRocmVhZCBob2xk
cyBhIHJlZmVyZW5jZSB0byB0aG9zZSBzdHJpbmdzLgotICAgIHBvc3RUYXNrKFt0aGlzLCBvcmln
aW5zID0gV1RGTW92ZShvcmlnaW5zKV0oKSBtdXRhYmxlIHsKKyAgICBwb3N0VGFzayhbdGhpcywg
c3RhdGlzdGljcyA9IFdURk1vdmUoc3RhdGlzdGljcyldKCkgbXV0YWJsZSB7CiAgICAgICAgIGlm
ICghbV9zdGF0aXN0aWNzU3RvcmUgfHwgIWlzPFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlT
dG9yZT4oKm1fc3RhdGlzdGljc1N0b3JlKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICBhdXRvJiBtZW1vcnlTdG9yZSA9IGRvd25jYXN0PFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZT4oKm1fc3RhdGlzdGljc1N0b3JlKTsKICAgICAKLSAgICAgICAgbWVtb3J5U3RvcmUu
bWVyZ2VTdGF0aXN0aWNzKFdURk1vdmUob3JpZ2lucykpOworICAgICAgICBtZW1vcnlTdG9yZS5t
ZXJnZVN0YXRpc3RpY3MoV1RGTW92ZShzdGF0aXN0aWNzKSk7CiAKICAgICAgICAgLy8gV2UgY2Fu
IGNhbmNlbCBhbnkgcGVuZGluZyByZXF1ZXN0IHRvIHByb2Nlc3Mgc3RhdGlzdGljcyBzaW5jZSB3
ZSdyZSBkb2luZyBpdCBzeW5jaHJvbm91c2x5IGJlbG93LgogICAgICAgICBtZW1vcnlTdG9yZS5j
YW5jZWxQZW5kaW5nU3RhdGlzdGljc1Byb2Nlc3NpbmdSZXF1ZXN0KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggOTM1MDVhYjVhZjg0N2RkZDY2
ZWJhNThmYjc2MjcxY2U3MjVjZDVmOS4uMmM3ZDM3OGIwNDNjOTVlMTY1NTg3ZTY2YTVmNzQzZTBm
ODkyNjZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aApAQCAtMTg2LDcgKzE4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNlbmREaWFnbm9zdGljTWVz
c2FnZVdpdGhWYWx1ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3Jp
cHRpb24sIHVuc2lnbmVkIHZhbHVlLCB1bnNpZ25lZCBzaWdEaWdpdHMsIFdlYkNvcmU6OlNob3Vs
ZFNhbXBsZSkgY29uc3Q7CiAgICAgdm9pZCBub3RpZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRyeUZp
bmlzaGVkKHVuc2lnbmVkIHRvdGFsUHJldmFsZW50UmVzb3VyY2VzLCB1bnNpZ25lZCB0b3RhbFBy
ZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcDNTdWJmcmFt
ZVVuZGVyVG9wRnJhbWVPcmlnaW5zKSBjb25zdDsKIAotICAgIHZvaWQgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1VwZGF0ZWQoVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYpOworICAgIHZv
aWQgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3M+JiYpOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgb3BlbmVySUQsIE9wZW5lckRvbWFpbiYmKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKaW5kZXggODYzN2QyZjRiNmFhZDRlYzBhNTYxNDI3MGYxM2RlYjI5ZDUyMGQx
Mi4uMThiNjRmMTZiZWZkYzk3YmJlOGMxMTE3ZDVjN2M0NDczZGNhNjk3YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKQEAgLTY5MSwxMyArNjkxLDExIEBAIHZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYKICAgICB9CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJl
c291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpQZXJT
ZXNzaW9uUmVzb3VyY2VMb2FkRGF0YSYmIHN0YXRpc3RpY3MpCit2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8UmVz
b3VyY2VMb2FkU3RhdGlzdGljcz4mJiBzdGF0aXN0aWNzKQogewotICAgIGZvciAoYXV0byYgaXRl
ciA6IHN0YXRpc3RpY3MpIHsKLSAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gbmV0
d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihpdGVyLmZpcnN0KSkgewotICAgICAgICAgICAg
aWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcygpKQotICAgICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MtPnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFdURk1vdmUoaXRlci5zZWNvbmQpKTsK
LSAgICAgICAgfQorICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtT
ZXNzaW9uKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBu
ZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgICAgICAgICAgcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoV1RGTW92
ZShzdGF0aXN0aWNzKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXgg
NjcxMDIxNmE4N2Y1ZWU4NTA2NTQ5NzQwZGU3Mzg5NDE3MzIxZjQxMy4uN2NmZDgzZDUyMWM5YmU5
M2Y0MDMxZGM3NjcxZGZmY2MwYTRlZTBiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAt
MjQwLDcgKzI0MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhclBhZ2VTcGVjaWZpY0RhdGFG
b3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKIAogICAg
IHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7Ci0gICAg
dm9pZCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChXZWJSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6UGVyU2Vzc2lvblJlc291cmNlTG9hZERhdGEmJik7CisgICAgdm9pZCByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4m
Jik7CiAgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBz
dWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNz
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNj
ZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRP
ZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggOTIwNWJiZjE5ZWNiOTBiMmU4ODQ4NDYw
NzFjMmQ3MDg3ODE2OTk2MC4uMmFkMzEzYWI4MjRkNTFkYWNiNjgyOWUzZDliMTVlMGI3NzVjYTNk
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC01OSwx
MCArNTksNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdh
Y3lSZWNlaXZlciB7CiAgICAgUmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpOwog
ICAgIENsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKTsKICAgICBMb2dVc2VySW50ZXJhY3Rpb24oV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluKQotICAgIAotICAgICMgRklYTUU6IFN0b3AgcGFz
c2luZyBzZXNzaW9uSURzLgotICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3Rv
cjxzdGQ6OnBhaXI8UEFMOjpTZXNzaW9uSUQsIFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzPj4+IHN0YXRpc3RpY3MpCi0KKyAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBk
YXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gc3RhdGlzdGljcykK
ICAgICBIYXNTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1l
RG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCkgLT4gKGJvb2wgaGFzU3RvcmFnZUFjY2VzcykgQXN5bmMKICAgICBSZXF1ZXN0U3RvcmFnZUFj
Y2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIFdlYktpdDo6V2Vi
UGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCkgLT4gKGVudW06Ym9vbCBXZWJDb3Jl
OjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBlbnVtOmJvb2wgV2ViQ29yZTo6
U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duKSBBc3luYwogICAgIFJl
cXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
ZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvcGVu
ZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG9wZW5lckRvbWFpbikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJj
ZUxvYWRPYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCmluZGV4IGUxYjRiOWViM2YzODRmNWY1ZmYy
OTEzMWE5M2M4ZmQ2ZGYwYzA2NTEuLjYwYjUyZWI3ZTk3NTdlODc1YjlkNTVkMTBiNDdkNjFmMjQ5
N2JmMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcApAQCAtNDksMTcg
KzQ5LDEyIEBAIHN0YXRpYyBib29sIGlzM3h4UmVkaXJlY3QoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpCiAgICAgcmV0dXJuIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPj0gMzAw
ICYmIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPD0gMzk5OwogfQogCi1zdGF0aWMgYm9vbCBz
aG91bGRMb2dSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkK
LXsKLSAgICByZXR1cm4gRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpyZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZCgpICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKTsKLX0KLQogV2ViUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OldlYlJlc291cmNlTG9hZE9ic2VydmVyKCkKICAgICA6IG1fbm90
aWZpY2F0aW9uVGltZXIoKnRoaXMsICZXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6dXBkYXRlQ2Vu
dHJhbFN0YXRpc3RpY3NTdG9yZSkKIHsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlkZW50
aWZpZXIgb3BlbmVyUGFnZUlELCBEb2N1bWVudCYgb3BlbmVyRG9jdW1lbnQpCit2b2lkIFdlYlJl
c291cmNlTG9hZE9ic2VydmVyOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVu
dGlmaWVyIG9wZW5lclBhZ2VJRCwgRG9jdW1lbnQmIG9wZW5lckRvY3VtZW50KQogewogICAgIGF1
dG8gb3BlbmVyVXJsID0gb3BlbmVyRG9jdW1lbnQudXJsKCk7CiAgICAgUmVnaXN0cmFibGVEb21h
aW4gb3BlbmVyRG9tYWluIHsgb3BlbmVyVXJsIH07CkBAIC03MywyMSArNjgsMTYgQEAgdm9pZCBX
ZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQ
QUw6OlNlc3Npb25JRCwgY28KICAgICB9CiB9CiAgICAgCi1SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
JiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVn
aXN0cmFibGVEb21haW4oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgZG9tYWluKQorUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgV2ViUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCiB7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBt
X3BlclNlc3Npb25SZXNvdXJjZVN0YXRpc3RpY3NNYXAuZW5zdXJlKHNlc3Npb25JRCwgW10gewot
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzPj4oKTsKLSAgICB9KTsKLQotICAgIGF1dG8gYWRkRG9tYWluUmVz
dWx0ID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+ZW5zdXJlKGRvbWFpbiwgWyZkb21haW5d
IHsKKyAgICByZXR1cm4gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZW5zdXJlKGRvbWFpbiwgWyZk
b21haW5dIHsKICAgICAgICAgcmV0dXJuIFJlc291cmNlTG9hZFN0YXRpc3RpY3MoZG9tYWluKTsK
LSAgICB9KTsKLSAgICByZXR1cm4gYWRkRG9tYWluUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAg
ICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OnNjaGVkdWxlTm90aWZpY2F0aW9uSWZOZWVkZWQoKQogewotICAgIGlmIChtX3BlclNlc3Npb25S
ZXNvdXJjZVN0YXRpc3RpY3NNYXAuaXNFbXB0eSgpKSB7CisgICAgaWYgKG1fcmVzb3VyY2VTdGF0
aXN0aWNzTWFwLmlzRW1wdHkoKSkgewogICAgICAgICBtX25vdGlmaWNhdGlvblRpbWVyLnN0b3Ao
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEwMiw1MiArOTIsMzcgQEAgdm9pZCBXZWJS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6dXBkYXRlQ2VudHJhbFN0YXRpc3RpY3NTdG9yZSgpCiAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZCh0YWtlU3RhdGlzdGljcygpKSwgMCk7CiB9
CiAKLVN0cmluZyBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c3RhdGlzdGljc0ZvclVSTChQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsKQorU3RyaW5nIFdlYlJlc291cmNl
TG9hZE9ic2VydmVyOjpzdGF0aXN0aWNzRm9yVVJMKGNvbnN0IFVSTCYgdXJsKQogewotICAgIGF1
dG8qIHJlc291cmNlU3RhdGlzdGljc0J5RG9tYWluID0gbV9wZXJTZXNzaW9uUmVzb3VyY2VTdGF0
aXN0aWNzTWFwLmdldChzZXNzaW9uSUQpOwotICAgIGlmICghcmVzb3VyY2VTdGF0aXN0aWNzQnlE
b21haW4pCi0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotCi0gICAgYXV0byBpdGVyID0g
cmVzb3VyY2VTdGF0aXN0aWNzQnlEb21haW4tPmZpbmQoUmVnaXN0cmFibGVEb21haW4geyB1cmwg
fSk7Ci0gICAgaWYgKGl0ZXIgPT0gcmVzb3VyY2VTdGF0aXN0aWNzQnlEb21haW4tPmVuZCgpKQor
ICAgIGF1dG8gaXRlciA9IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmZpbmQoUmVnaXN0cmFibGVE
b21haW4geyB1cmwgfSk7CisgICAgaWYgKGl0ZXIgPT0gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAu
ZW5kKCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgcmV0dXJuIG1ha2VT
dHJpbmcoIlN0YXRpc3RpY3MgZm9yICIsIHVybC5ob3N0KCkudG9TdHJpbmcoKSwgIjpcbiIsIGl0
ZXItPnZhbHVlLnRvU3RyaW5nKCkpOwogfQogCi1hdXRvIFdlYlJlc291cmNlTG9hZE9ic2VydmVy
Ojp0YWtlU3RhdGlzdGljcygpIC0+IFBlclNlc3Npb25SZXNvdXJjZUxvYWREYXRhCitWZWN0b3I8
UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnRha2VTdGF0
aXN0aWNzKCkKIHsKLSAgICBQZXJTZXNzaW9uUmVzb3VyY2VMb2FkRGF0YSBwZXJTZXNzaW9uU3Rh
dGlzdGljczsKLQotICAgIGZvciAoYXV0byYgaXRlciA6IG1fcGVyU2Vzc2lvblJlc291cmNlU3Rh
dGlzdGljc01hcCkgewotICAgICAgICBWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gc3Rh
dGlzdGljczsKLSAgICAgICAgc3RhdGlzdGljcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGl0ZXIu
dmFsdWUtPnNpemUoKSk7Ci0KLSAgICAgICAgZm9yIChhdXRvJiBzdGF0aXN0aWMgOiBpdGVyLnZh
bHVlLT52YWx1ZXMoKSkKLSAgICAgICAgICAgIHN0YXRpc3RpY3MudW5jaGVja2VkQXBwZW5kKFdU
Rk1vdmUoc3RhdGlzdGljKSk7Ci0KLSAgICAgICAgcGVyU2Vzc2lvblN0YXRpc3RpY3MuYXBwZW5k
KHN0ZDo6bWFrZV9wYWlyKGl0ZXIua2V5LCBXVEZNb3ZlKHN0YXRpc3RpY3MpKSk7Ci0gICAgfQot
ICAgIAotICAgIG1fcGVyU2Vzc2lvblJlc291cmNlU3RhdGlzdGljc01hcC5jbGVhcigpOwotICAg
IHJldHVybiBwZXJTZXNzaW9uU3RhdGlzdGljczsKKyAgICBWZWN0b3I8UmVzb3VyY2VMb2FkU3Rh
dGlzdGljcz4gc3RhdGlzdGljczsKKyAgICBzdGF0aXN0aWNzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkobV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIHN0YXRp
c3RpYyA6IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnZhbHVlcygpKQorICAgICAgICBzdGF0aXN0
aWNzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKHN0YXRpc3RpYykpOworICAgIG1fcmVzb3VyY2VT
dGF0aXN0aWNzTWFwLmNsZWFyKCk7CisgICAgcmV0dXJuIHN0YXRpc3RpY3M7CiB9CiAKIHZvaWQg
V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmNsZWFyU3RhdGUoKQogewogICAgIG1fbm90aWZpY2F0
aW9uVGltZXIuc3RvcCgpOwotICAgIG1fcGVyU2Vzc2lvblJlc291cmNlU3RhdGlzdGljc01hcC5j
bGVhcigpOworICAgIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmNsZWFyKCk7CiAgICAgbV9sYXN0
UmVwb3J0ZWRVc2VySW50ZXJhY3Rpb25NYXAuY2xlYXIoKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6bG9nRm9udExvYWQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25z
dCBTdHJpbmcmIGZhbWlseU5hbWUsIGJvb2wgbG9hZFN0YXR1cykKIHsKICNpZiBFTkFCTEUoV0VC
X0FQSV9TVEFUSVNUSUNTKQotICAgIGlmICghc2hvdWxkTG9nUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyhkb2N1bWVudC5zZXNzaW9uSUQoKSkpCi0gICAgICAgIHJldHVybjsKLQogICAgIFJlZ2lzdHJh
YmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluIHsgZG9jdW1lbnQudXJsKCkgfTsKLSAgICBhdXRv
JiBzdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21h
aW4oZG9jdW1lbnQuc2Vzc2lvbklELCByZWdpc3RyYWJsZURvbWFpbik7CisgICAgYXV0byYgc3Rh
dGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHJl
Z2lzdHJhYmxlRG9tYWluKTsKICAgICBib29sIHNob3VsZENhbGxOb3RpZmljYXRpb25DYWxsYmFj
ayA9IGZhbHNlOwogICAgIGlmICghbG9hZFN0YXR1cykgewogICAgICAgICBpZiAoc3RhdGlzdGlj
cy5mb250c0ZhaWxlZFRvTG9hZC5hZGQoZmFtaWx5TmFtZSkuaXNOZXdFbnRyeSkKQEAgLTE3MSwx
MSArMTQ2LDggQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nRm9udExvYWQoY29u
c3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcKIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OmxvZ0NhbnZhc1JlYWQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogewogI2lm
IEVOQUJMRShXRUJfQVBJX1NUQVRJU1RJQ1MpCi0gICAgaWYgKCFzaG91bGRMb2dSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKGRvY3VtZW50LnNlc3Npb25JRCgpKSkKLSAgICAgICAgcmV0dXJuOwotCiAg
ICAgUmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4geyBkb2N1bWVudC51cmwoKSB9
OwotICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdp
c3RyYWJsZURvbWFpbihkb2N1bWVudC5zZXNzaW9uSUQoKSwgcmVnaXN0cmFibGVEb21haW4pOwor
ICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3Ry
YWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbik7CiAgICAgUmVnaXN0cmFibGVEb21haW4gbWFp
bkZyYW1lUmVnaXN0cmFibGVEb21haW4geyBkb2N1bWVudC50b3BEb2N1bWVudCgpLnVybCgpIH07
CiAgICAgc3RhdGlzdGljcy5jYW52YXNBY3Rpdml0eVJlY29yZC53YXNEYXRhUmVhZCA9IHRydWU7
CiAgICAgaWYgKHN0YXRpc3RpY3MudG9wRnJhbWVSZWdpc3RyYWJsZURvbWFpbnNXaGljaEFjY2Vz
c2VkV2ViQVBJcy5hZGQobWFpbkZyYW1lUmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCkpLmlzTmV3
RW50cnkpCkBAIC0xODgsMTEgKzE2MCw4IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OmxvZ0NhbnZhc1JlYWQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogdm9pZCBXZWJSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6bG9nQ2FudmFzV3JpdGVPck1lYXN1cmUoY29uc3QgRG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBTdHJpbmcmIHRleHRXcml0dGVuKQogewogI2lmIEVOQUJMRShXRUJfQVBJ
X1NUQVRJU1RJQ1MpCi0gICAgaWYgKCFzaG91bGRMb2dSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKGRv
Y3VtZW50LnNlc3Npb25JRCgpKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgUmVnaXN0cmFibGVE
b21haW4gcmVnaXN0cmFibGVEb21haW4geyBkb2N1bWVudC51cmwoKSB9OwotICAgIGF1dG8mIHN0
YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihk
b2N1bWVudC5zZXNzaW9uSUQsIHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBhdXRvJiBzdGF0aXN0
aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0
cmFibGVEb21haW4pOwogICAgIGJvb2wgc2hvdWxkQ2FsbE5vdGlmaWNhdGlvbkNhbGxiYWNrID0g
ZmFsc2U7CiAgICAgUmVnaXN0cmFibGVEb21haW4gbWFpbkZyYW1lUmVnaXN0cmFibGVEb21haW4g
eyBkb2N1bWVudC50b3BEb2N1bWVudCgpLnVybCgpIH07CiAgICAgaWYgKHN0YXRpc3RpY3MuY2Fu
dmFzQWN0aXZpdHlSZWNvcmQucmVjb3JkV3JpdHRlbk9yTWVhc3VyZWRUZXh0KHRleHRXcml0dGVu
KSkKQEAgLTIxMCwxMSArMTc5LDggQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9n
Q2FudmFzV3JpdGVPck1lYXN1cmUoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LAogdm9pZCBXZWJS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nTmF2aWdhdG9yQVBJQWNjZXNzZWQoY29uc3QgRG9jdW1l
bnQmIGRvY3VtZW50LCBjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpOYXZpZ2F0b3JBUEkg
ZnVuY3Rpb25OYW1lKQogewogI2lmIEVOQUJMRShXRUJfQVBJX1NUQVRJU1RJQ1MpCi0gICAgaWYg
KCFzaG91bGRMb2dSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKGRvY3VtZW50LnNlc3Npb25JRCgpKSkK
LSAgICAgICAgcmV0dXJuOwotCiAgICAgUmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21h
aW4geyBkb2N1bWVudC51cmwoKSB9OwotICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBlbnN1cmVSZXNv
dXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihkb2N1bWVudC5zZXNzaW9uSUQsIHJl
Z2lzdHJhYmxlRG9tYWluKTsKKyAgICBhdXRvJiBzdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VT
dGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pOwogICAgIGJv
b2wgc2hvdWxkQ2FsbE5vdGlmaWNhdGlvbkNhbGxiYWNrID0gZmFsc2U7CiAgICAgaWYgKCFzdGF0
aXN0aWNzLm5hdmlnYXRvckZ1bmN0aW9uc0FjY2Vzc2VkLmNvbnRhaW5zKGZ1bmN0aW9uTmFtZSkp
IHsKICAgICAgICAgc3RhdGlzdGljcy5uYXZpZ2F0b3JGdW5jdGlvbnNBY2Nlc3NlZC5hZGQoZnVu
Y3Rpb25OYW1lKTsKQEAgLTIzNCwxMSArMjAwLDggQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6bG9nTmF2aWdhdG9yQVBJQWNjZXNzZWQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LAog
dm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nU2NyZWVuQVBJQWNjZXNzZWQoY29uc3Qg
RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpTY3JlZW5B
UEkgZnVuY3Rpb25OYW1lKQogewogI2lmIEVOQUJMRShXRUJfQVBJX1NUQVRJU1RJQ1MpCi0gICAg
aWYgKCFzaG91bGRMb2dSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKGRvY3VtZW50LnNlc3Npb25JRCgp
KSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgUmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVE
b21haW4geyBkb2N1bWVudC51cmwoKSB9OwotICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBlbnN1cmVS
ZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihkb2N1bWVudC5zZXNzaW9uSUQs
IHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBhdXRvJiBzdGF0aXN0aWNzID0gZW5zdXJlUmVzb3Vy
Y2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pOwogICAg
IGJvb2wgc2hvdWxkQ2FsbE5vdGlmaWNhdGlvbkNhbGxiYWNrID0gZmFsc2U7CiAgICAgaWYgKCFz
dGF0aXN0aWNzLnNjcmVlbkZ1bmN0aW9uc0FjY2Vzc2VkLmNvbnRhaW5zKGZ1bmN0aW9uTmFtZSkp
IHsKICAgICAgICAgc3RhdGlzdGljcy5zY3JlZW5GdW5jdGlvbnNBY2Nlc3NlZC5hZGQoZnVuY3Rp
b25OYW1lKTsKQEAgLTI2Myw3ICsyMjYsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVy
Ojpsb2dTdWJyZXNvdXJjZUxvYWRpbmcoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZQogICAg
ICAgICByZXR1cm47CiAKICAgICBhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKLSAgICBpZiAo
IXBhZ2UgfHwgIXNob3VsZExvZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3MocGFnZS0+c2Vzc2lvbklE
KCkpKQorICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYm9vbCBpc1JlZGly
ZWN0ID0gaXMzeHhSZWRpcmVjdChyZWRpcmVjdFJlc3BvbnNlKTsKQEAgLTI4NSw3ICsyNDgsNyBA
QCB2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dTdWJyZXNvdXJjZUxvYWRpbmcoY29u
c3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZQogICAgICAgICByZXR1cm47CiAKICAgICB7Ci0gICAg
ICAgIGF1dG8mIHRhcmdldFN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JS
ZWdpc3RyYWJsZURvbWFpbihwYWdlLT5zZXNzaW9uSUQoKSwgdGFyZ2V0RG9tYWluKTsKKyAgICAg
ICAgYXV0byYgdGFyZ2V0U3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJl
Z2lzdHJhYmxlRG9tYWluKHRhcmdldERvbWFpbik7CiAgICAgICAgIGF1dG8gbGFzdFNlZW4gPSBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpyZWR1Y2VUaW1lUmVzb2x1dGlvbihXYWxsVGltZTo6bm93
KCkpOwogICAgICAgICB0YXJnZXRTdGF0aXN0aWNzLmxhc3RTZWVuID0gbGFzdFNlZW47CiAgICAg
ICAgIHRhcmdldFN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucy5hZGQo
dG9wRnJhbWVEb21haW4pOwpAQCAtMjk0LDIwICsyNTcsMTcgQEAgdm9pZCBXZWJSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6bG9nU3VicmVzb3VyY2VMb2FkaW5nKGNvbnN0IEZyYW1lKiBmcmFtZSwgY29u
c3QgUmUKICAgICB9CiAKICAgICBpZiAoaXNSZWRpcmVjdCkgewotICAgICAgICBhdXRvJiByZWRp
cmVjdGluZ09yaWdpblN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdp
c3RyYWJsZURvbWFpbihwYWdlLT5zZXNzaW9uSUQoKSwgcmVkaXJlY3RlZEZyb21Eb21haW4pOwor
ICAgICAgICBhdXRvJiByZWRpcmVjdGluZ09yaWdpblN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJj
ZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihyZWRpcmVjdGVkRnJvbURvbWFpbik7CiAg
ICAgICAgIHJlZGlyZWN0aW5nT3JpZ2luU3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0c1RvLmFkZCh0YXJnZXREb21haW4pOwotICAgICAgICBhdXRvJiB0YXJnZXRTdGF0aXN0aWNz
ID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4ocGFnZS0+c2Vz
c2lvbklEKCksIHRhcmdldERvbWFpbik7CisgICAgICAgIGF1dG8mIHRhcmdldFN0YXRpc3RpY3Mg
PSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbih0YXJnZXREb21h
aW4pOwogICAgICAgICB0YXJnZXRTdGF0aXN0aWNzLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3Rz
RnJvbS5hZGQocmVkaXJlY3RlZEZyb21Eb21haW4pOwogCiAgICAgICAgIHNjaGVkdWxlTm90aWZp
Y2F0aW9uSWZOZWVkZWQoKTsKICAgICB9CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OmxvZ1dlYlNvY2tldExvYWRpbmcoY29uc3QgVVJMJiB0YXJnZXRVUkwsIGNvbnN0IFVSTCYg
bWFpbkZyYW1lVVJMLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit2b2lkIFdlYlJlc291cmNl
TG9hZE9ic2VydmVyOjpsb2dXZWJTb2NrZXRMb2FkaW5nKGNvbnN0IFVSTCYgdGFyZ2V0VVJMLCBj
b25zdCBVUkwmIG1haW5GcmFtZVVSTCkKIHsKLSAgICBpZiAoIXNob3VsZExvZ1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3Moc2Vzc2lvbklEKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgYXV0byB0YXJn
ZXRIb3N0ID0gdGFyZ2V0VVJMLmhvc3QoKTsKICAgICBhdXRvIG1haW5GcmFtZUhvc3QgPSBtYWlu
RnJhbWVVUkwuaG9zdCgpOwogICAgIApAQCAtMzIyLDcgKzI4Miw3IEBAIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI6OmxvZ1dlYlNvY2tldExvYWRpbmcoY29uc3QgVVJMJiB0YXJnZXRVUkws
IGNvbnN0IFVSCiAKICAgICBhdXRvIGxhc3RTZWVuID0gUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6
cmVkdWNlVGltZVJlc29sdXRpb24oV2FsbFRpbWU6Om5vdygpKTsKIAotICAgIGF1dG8mIHRhcmdl
dFN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFp
bihzZXNzaW9uSUQsIHRhcmdldERvbWFpbik7CisgICAgYXV0byYgdGFyZ2V0U3RhdGlzdGljcyA9
IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHRhcmdldERvbWFp
bik7CiAgICAgdGFyZ2V0U3RhdGlzdGljcy5sYXN0U2VlbiA9IGxhc3RTZWVuOwogICAgIHRhcmdl
dFN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucy5hZGQodG9wRnJhbWVE
b21haW4pOwogCkBAIC0zMzEsOSArMjkxLDYgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6bG9nV2ViU29ja2V0TG9hZGluZyhjb25zdCBVUkwmIHRhcmdldFVSTCwgY29uc3QgVVIKIAog
dm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nVXNlckludGVyYWN0aW9uV2l0aFJlZHVj
ZWRUaW1lUmVzb2x1dGlvbihjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAgaWYgKCFk
b2N1bWVudC5zZXNzaW9uSUQoKS5pc1ZhbGlkKCkgfHwgIXNob3VsZExvZ1Jlc291cmNlTG9hZFN0
YXRpc3RpY3MoZG9jdW1lbnQuc2Vzc2lvbklEKCkpKQotICAgICAgICByZXR1cm47Ci0KICAgICBh
dXRvJiB1cmwgPSBkb2N1bWVudC51cmwoKTsKICAgICBpZiAodXJsLnByb3RvY29sSXNBYm91dCgp
IHx8IHVybC5pc0xvY2FsRmlsZSgpIHx8IHVybC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTM0Niw3ICszMDMsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dVc2Vy
SW50ZXJhY3Rpb25XaXRoUmVkdWNlZFRpbWVSZXNvbHV0aW9uKGNvbnN0CiAKICAgICBtX2xhc3RS
ZXBvcnRlZFVzZXJJbnRlcmFjdGlvbk1hcC5zZXQodG9wRnJhbWVEb21haW4sIG5ld1RpbWUpOwog
Ci0gICAgYXV0byYgc3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lz
dHJhYmxlRG9tYWluKGRvY3VtZW50LnNlc3Npb25JRCgpLCB0b3BGcmFtZURvbWFpbik7CisgICAg
YXV0byYgc3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxl
RG9tYWluKHRvcEZyYW1lRG9tYWluKTsKICAgICBzdGF0aXN0aWNzLmhhZFVzZXJJbnRlcmFjdGlv
biA9IHRydWU7CiAgICAgc3RhdGlzdGljcy5sYXN0U2VlbiA9IG5ld1RpbWU7CiAgICAgc3RhdGlz
dGljcy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSA9IG5ld1RpbWU7CkBAIC0zNTYsNyAr
MzEzLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nVXNlckludGVyYWN0aW9u
V2l0aFJlZHVjZWRUaW1lUmVzb2x1dGlvbihjb25zdAogICAgICAgICAgICAgaWYgKGF1dG8qIG9w
ZW5lckRvY3VtZW50ID0gb3BlbmVyLT5kb2N1bWVudCgpKSB7CiAgICAgICAgICAgICAgICAgaWYg
KGF1dG8qIG9wZW5lckZyYW1lID0gb3BlbmVyRG9jdW1lbnQtPmZyYW1lKCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKGF1dG8gb3BlbmVyUGFnZUlEID0gb3BlbmVyRnJhbWUtPmxvYWRlcigp
LmNsaWVudCgpLnBhZ2VJRCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdFN0b3Jh
Z2VBY2Nlc3NVbmRlck9wZW5lcihkb2N1bWVudC5zZXNzaW9uSUQoKSwgdG9wRnJhbWVEb21haW4s
IG9wZW5lclBhZ2VJRC52YWx1ZSgpLCAqb3BlbmVyRG9jdW1lbnQpOworICAgICAgICAgICAgICAg
ICAgICAgICAgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcih0b3BGcmFtZURvbWFpbiwg
b3BlbmVyUGFnZUlELnZhbHVlKCksICpvcGVuZXJEb2N1bWVudCk7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZl
ci5oCmluZGV4IDhhZTI0YjExMjEyMDkzM2Y1ODUzYTJlMWVhOGMwNjNhYjk3NTk1ODguLjZjNmNi
Nzc3YmE2OGQ3Y2FmYzg1MDI4NWFmMzRiNjI2MTMwMWMzNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJj
ZUxvYWRPYnNlcnZlci5oCkBAIC0zNiwxMiArMzYsMTAgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIFdlYlJlc291cmNlTG9hZE9ic2VydmVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlJl
c291cmNlTG9hZE9ic2VydmVyIHsKIHB1YmxpYzoKLSAgICB1c2luZyBQZXJTZXNzaW9uUmVzb3Vy
Y2VMb2FkRGF0YSA9IFZlY3RvcjxzdGQ6OnBhaXI8UEFMOjpTZXNzaW9uSUQsIFZlY3RvcjxXZWJD
b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPj4+OwotCiAgICAgV2ViUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXIoKTsKICAgICAKICAgICB2b2lkIGxvZ1N1YnJlc291cmNlTG9hZGluZyhjb25zdCBXZWJD
b3JlOjpGcmFtZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7
Ci0gICAgdm9pZCBsb2dXZWJTb2NrZXRMb2FkaW5nKGNvbnN0IFVSTCYgdGFyZ2V0VVJMLCBjb25z
dCBVUkwmIG1haW5GcmFtZVVSTCwgUEFMOjpTZXNzaW9uSUQpIGZpbmFsOworICAgIHZvaWQgbG9n
V2ViU29ja2V0TG9hZGluZyhjb25zdCBVUkwmIHRhcmdldFVSTCwgY29uc3QgVVJMJiBtYWluRnJh
bWVVUkwpIGZpbmFsOwogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uV2l0aFJlZHVjZWRUaW1l
UmVzb2x1dGlvbihjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYpIGZpbmFsOwogICAgIHZvaWQgbG9n
Rm9udExvYWQoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIGZhbWlseU5h
bWUsIGJvb2wgbG9hZFN0YXR1cykgZmluYWw7CiAgICAgdm9pZCBsb2dDYW52YXNSZWFkKGNvbnN0
IFdlYkNvcmU6OkRvY3VtZW50JikgZmluYWw7CkBAIC01MywyMCArNTEsMjAgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0U2hvdWxkTG9nVXNlckludGVyYWN0aW9uKGJvb2wgc2hvdWxkTG9nVXNlcklu
dGVyYWN0aW9uKSBmaW5hbCB7IG1fc2hvdWxkTG9nVXNlckludGVyYWN0aW9uID0gc2hvdWxkTG9n
VXNlckludGVyYWN0aW9uOyB9CiAjZW5kaWYKIAotICAgIFN0cmluZyBzdGF0aXN0aWNzRm9yVVJM
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmKSBmaW5hbDsKKyAgICBTdHJpbmcgc3RhdGlzdGlj
c0ZvclVSTChjb25zdCBVUkwmKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUNlbnRyYWxTdGF0aXN0
aWNzU3RvcmUoKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyU3RhdGUoKSBmaW5hbDsKICAgICAKLSAg
ICBib29sIGhhc1N0YXRpc3RpY3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9wZXJTZXNzaW9u
UmVzb3VyY2VTdGF0aXN0aWNzTWFwLmlzRW1wdHkoKTsgfQorICAgIGJvb2wgaGFzU3RhdGlzdGlj
cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICFtX3Jlc291cmNlU3RhdGlzdGljc01hcC5pc0VtcHR5
KCk7IH0KIAogcHJpdmF0ZToKLSAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBl
bnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihQQUw6OlNlc3Npb25J
RCwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsKKyAgICBXZWJDb3JlOjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzJiBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJs
ZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOwogICAgIHZvaWQgc2No
ZWR1bGVOb3RpZmljYXRpb25JZk5lZWRlZCgpOwogCi0gICAgUGVyU2Vzc2lvblJlc291cmNlTG9h
ZERhdGEgdGFrZVN0YXRpc3RpY3MoKTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5k
ZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9w
ZW5lclBhZ2VJRCwgV2ViQ29yZTo6RG9jdW1lbnQmIG9wZW5lckRvY3VtZW50KTsKKyAgICBWZWN0
b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gdGFrZVN0YXRpc3RpY3MoKTsKKyAg
ICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoY29uc3QgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBXZWJDb3JlOjpEb2N1bWVudCYgb3BlbmVyRG9jdW1l
bnQpOwogCi0gICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgc3RkOjp1bmlxdWVfcHRyPEhhc2hN
YXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3M+Pj4gbV9wZXJTZXNzaW9uUmVzb3VyY2VTdGF0aXN0aWNzTWFwOworICAgIEhhc2hNYXA8
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3M+IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwOwogICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4sIFdURjo6V2FsbFRpbWU+IG1fbGFzdFJlcG9ydGVkVXNlckludGVyYWN0aW9u
TWFwOwogCiAgICAgV2ViQ29yZTo6VGltZXIgbV9ub3RpZmljYXRpb25UaW1lcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBhMGYwMTliNzJmNTU4MWUzOTY5YTA1
NDBiYTYyN2I1ODFiZmUwM2UyLi5hM2Y4OWFkNTg2YjA1MjI2ODdlZWViOWQ4NGEyY2Y1ZDQ3Njkz
MjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0yMTUsMTAg
KzIxNSw2IEBAIFdlYlByb2Nlc3M6OldlYlByb2Nlc3MoKQogI2VuZGlmCiAKICAgICBtX3BsdWdJ
bkF1dG9TdGFydE9yaWdpbkhhc2hlcy5hZGQoUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9u
SUQoKSwgSGFzaE1hcDx1bnNpZ25lZCwgV2FsbFRpbWU+KCkpOwotCi0jaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKLSAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0U2hhcmVk
KCpuZXcgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIpOwotI2VuZGlmCiAgICAgCiAgICAgR2lnYWNh
Z2U6OmZvcmJpZERpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlKCk7CiB9CkBAIC00NTYsNiArNDUy
LDExIEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMoV2Vi
UHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMmJiBwCiAKICAgICBzZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZChwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKTsK
IAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgaWYgKHBhcmFtZXRl
cnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgJiYgIXBhcmFtZXRlcnMuc2Vzc2lvbklE
LmlzRXBoZW1lcmFsKCkpCisgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTaGFyZWQo
Km5ldyBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcik7CisjZW5kaWYKKwogICAgIGZvciAoYXV0byYg
c3VwcGxlbWVudCA6IG1fc3VwcGxlbWVudHMudmFsdWVzKCkpCiAgICAgICAgIHN1cHBsZW1lbnQt
PnNldFdlYnNpdGVEYXRhU3RvcmUocGFyYW1ldGVycyk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378873</attachid>
            <date>2019-09-16 11:02:18 -0700</date>
            <delta_ts>2019-09-16 11:03:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201821-20190916110153.patch</filename>
            <type>text/plain</type>
            <size>31384</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5OTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODg2YjhiNzRlYjA1OWMy
OGM5ZWQ0NDBkMTc4OTlhOWM4ZTU4OTdmYy4uM2ZiYmU1YzQ4ZGU0MGVkOTViNmI4MTYxOTg5OTQz
MjY4ZTRkZTk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE5LTA5LTE2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgV2ViUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXIgbm93IHRoYXQgd2UgaGF2ZSBvbmUgV2ViUHJvY2VzcyBwZXIgc2Vzc2lv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxODIx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKworICAgICAgICAqIE1vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
Ojpjb25uZWN0KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dXZWJTb2NrZXRMb2FkaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpzdGF0aXN0aWNzRm9y
VVJMKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NGb3JVUkwpOgorCiAyMDE5LTA5LTE2
ICBKb24gRGF2aXMgIDxqb25kQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgZmVhdHVyZSBz
dGF0dXMgZm9yIEJhdHRlcnkgU3RhdHVzIEFQSSwgV2ViR0wgMiwgYW5kIERpYWxvZyBFbGVtZW50
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IGFkNDk1OWJiZjJlMTM5YmM4ZjgyNmUwOWUwMzJmODk2ZWEyMTVkOTMuLjZm
ODFlMzM5N2U3MWViZTkxNTFhMmQwMjFmYmE4ZDk1MTdlMWUyZjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDEgQEAKKzIwMTktMDktMTYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwor
ICAgICAgICBTaW1wbGlmeSBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlciBub3cgdGhhdCB3ZSBoYXZl
IG9uZSBXZWJQcm9jZXNzIHBlciBzZXNzaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE4MjEKKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBG
dWxnaGFtLgorCisgICAgICAgIFNpbXBsaWZ5IFdlYlJlc291cmNlTG9hZE9ic2VydmVyIG5vdyB0
aGF0IHdlIGhhdmUgb25lIFdlYlByb2Nlc3MgcGVyIHNlc3Npb24uCisgICAgICAgIE5vIG5lZWQg
dG8gcGFzcyBzZXNzaW9uSURzIGFyb3VuZCBvciBzdG9yZXMgc3RhdGlzdGljcyBwZXIgc2Vzc2lv
bklELgorICAgICAgICBBbHNvLCBvbmx5IGluaXRpYWxpemUgdGhlIFdlYlJlc291cmNlTG9hZE9i
c2VydmVyIGlmIGJvdGggSVRQIGlzIGVuYWJsZWQgYW5kCisgICAgICAgIHdlJ3JlIG5vdCBpbiBh
IFdlYkNvbnRlbnQgcHJvY2VzcyB1c2VkIGZvciBhbiBlcGhlbWVyYWwgc2Vzc2lvbi4KKworICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNvdXJjZUxv
YWRTdGF0aXN0aWNzVXBkYXRlZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJP
cGVuZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6ZW5zdXJl
UmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4pOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2NoZWR1bGVOb3RpZmljYXRpb25JZk5lZWRlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzdGF0aXN0aWNzRm9y
VVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnRha2VTdGF0
aXN0aWNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmNsZWFy
U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nRm9u
dExvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nQ2Fu
dmFzUmVhZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dD
YW52YXNXcml0ZU9yTWVhc3VyZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9i
c2VydmVyOjpsb2dOYXZpZ2F0b3JBUElBY2Nlc3NlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZE9ic2VydmVyOjpsb2dTY3JlZW5BUElBY2Nlc3NlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dTdWJyZXNvdXJjZUxvYWRpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nV2ViU29ja2V0TG9hZGlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dVc2VySW50
ZXJhY3Rpb25XaXRoUmVkdWNlZFRpbWVSZXNvbHV0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0
V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMpOgorCiAyMDE5LTA5LTE2ICBEYXZpZCBLaWx6ZXIg
IDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI0MzExMyk6IExl
YWsgb2YgbXVsdGlwbGUgaW5zdGFuY2UgdmFyaWFibGUgYmxvY2tzIHdoZW4gZGVhbGxvY2F0aW5n
IF9XS0F0dHJpYnV0ZWRTdHJpbmdOYXZpZ2F0aW9uRGVsZWdhdGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggZDc0ZTZkOTE5MDIzYmZi
MDk3NDA4YTQ4NzZlNzY0ZjMwNThkNzQyNC4uOTkyOTYzZWI1OWMzYjA3NWJmZTU3MWJkNjNhOTQw
YzcxMGY0ZWViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldC5jcHAKQEAgLTI5OCw4ICsyOTgsOCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBXZWJTb2Nr
ZXQ6OmNvbm5lY3QoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwcgog
ICAgICAgICB9CiAgICAgfQogCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0YXJnZXRV
UkwgPSBtX3VybC5pc29sYXRlZENvcHkoKSwgbWFpbkZyYW1lVVJMID0gY29udGV4dC51cmwoKS5p
c29sYXRlZENvcHkoKSwgc2Vzc2lvbklEID0gY29udGV4dC5zZXNzaW9uSUQoKV0oKSB7Ci0gICAg
ICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dXZWJTb2NrZXRMb2FkaW5nKHRh
cmdldFVSTCwgbWFpbkZyYW1lVVJMLCBzZXNzaW9uSUQpOworICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbdGFyZ2V0VVJMID0gbV91cmwuaXNvbGF0ZWRDb3B5KCksIG1haW5GcmFtZVVSTCA9
IGNvbnRleHQudXJsKCkuaXNvbGF0ZWRDb3B5KCldKCkgeworICAgICAgICBSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6c2hhcmVkKCkubG9nV2ViU29ja2V0TG9hZGluZyh0YXJnZXRVUkwsIG1haW5GcmFt
ZVVSTCk7CiAgICAgfSk7CiAKICAgICBpZiAoaXM8RG9jdW1lbnQ+KGNvbnRleHQpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAppbmRleCBiZWQ3
Y2E0MjgxOGM4ZjU0ZDIwYWJiOGRjMDJjYWE0MGExOWI5ODEwLi4wNDA4ZTMwYzE2YTllZTA0ZTM3
Y2U5ZjJkZDgyYzg2ZmFkZTRlYjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRPYnNlcnZlci5jcHAKQEAgLTM2LDcgKzM2LDYgQEAgc3RhdGljIFJlc291cmNlTG9h
ZE9ic2VydmVyKiYgc2hhcmVkT2JzZXJ2ZXIoKQogCiB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVy
OjpzZXRTaGFyZWQoUmVzb3VyY2VMb2FkT2JzZXJ2ZXImIG9ic2VydmVyKQogewotICAgIFJFTEVB
U0VfQVNTRVJUKCFzaGFyZWRPYnNlcnZlcigpKTsKICAgICBzaGFyZWRPYnNlcnZlcigpID0gJm9i
c2VydmVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZl
ci5oCmluZGV4IGRkZTI0NGQyNDgxNTdiMTdjYTBiN2M0ZTk0YzIzZjBmMmEyYzJmOGQuLjE0ZmYz
OGE3Nzc0NjY4NDQ0MTRiODI3N2U3YmI0OGYyZjg0MzBhODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCkBAIC0yNiw3ICsyNiw2IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3MuaCIKLSNpbmNsdWRlIDxw
YWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNDUsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVzb3VyY2VM
b2FkT2JzZXJ2ZXIoKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBsb2dTdWJyZXNvdXJjZUxvYWRp
bmcoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIC8qIG5ld1JlcXVlc3QgKi8s
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIC8qIHJlZGlyZWN0UmVzcG9uc2UgKi8pIHsgfQotICAg
IHZpcnR1YWwgdm9pZCBsb2dXZWJTb2NrZXRMb2FkaW5nKGNvbnN0IFVSTCYgLyogdGFyZ2V0VVJM
ICovLCBjb25zdCBVUkwmIC8qIG1haW5GcmFtZVVSTCAqLywgUEFMOjpTZXNzaW9uSUQpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBsb2dXZWJTb2NrZXRMb2FkaW5nKGNvbnN0IFVSTCYgLyogdGFyZ2V0
VVJMICovLCBjb25zdCBVUkwmIC8qIG1haW5GcmFtZVVSTCAqLykgeyB9CiAgICAgdmlydHVhbCB2
b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbldpdGhSZWR1Y2VkVGltZVJlc29sdXRpb24oY29uc3QgRG9j
dW1lbnQmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9nRm9udExvYWQoY29uc3QgRG9jdW1lbnQm
LCBjb25zdCBTdHJpbmcmIC8qIGZhbWlseU5hbWUgKi8sIGJvb2wgLyogbG9hZFN0YXR1cyAqLykg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGxvZ0NhbnZhc1JlYWQoY29uc3QgRG9jdW1lbnQmKSB7IH0K
QEAgLTUzLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsb2dOYXZpZ2F0b3JB
UElBY2Nlc3NlZChjb25zdCBEb2N1bWVudCYsIGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6
Ok5hdmlnYXRvckFQSSkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvZ1NjcmVlbkFQSUFjY2Vzc2Vk
KGNvbnN0IERvY3VtZW50JiwgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6U2NyZWVuQVBJ
KSB7IH0KIAotICAgIHZpcnR1YWwgU3RyaW5nIHN0YXRpc3RpY3NGb3JVUkwoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFVSTCYpIHsgcmV0dXJuIHsgfTsgfQorICAgIHZpcnR1YWwgU3RyaW5nIHN0YXRp
c3RpY3NGb3JVUkwoY29uc3QgVVJMJikgeyByZXR1cm4geyB9OyB9CiAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUNlbnRyYWxTdGF0aXN0aWNzU3RvcmUoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xl
YXJTdGF0ZSgpIHsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4
IGFhN2MxNDAxMWQwYjAwZGNiN2MxMmRjZmY0OTg1MTA0MDc0Nzg1ZWUuLjAzMDBmOWEwNDM1MDcw
MDZiZmVmNTlkYzljZjhmMmY3ZTBmODA0ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKQEAgLTQ0NjcsMTEgKzQ0NjcsNyBAQCBKU1ZhbHVlIEludGVybmFsczo6Y2xvbmVBcnJh
eUJ1ZmZlcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgYnVmZmVyLCBKU1ZhbAogCiBT
dHJpbmcgSW50ZXJuYWxzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9yVVJMKGNvbnN0IERPTVVS
TCYgdXJsKQogewotICAgIGF1dG8qIGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50KCk7Ci0gICAg
aWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0KLSAgICByZXR1
cm4gUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnN0YXRpc3RpY3NGb3JVUkwoZG9jdW1l
bnQtPnNlc3Npb25JRCgpLCB1cmwuaHJlZigpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OnNoYXJlZCgpLnN0YXRpc3RpY3NGb3JVUkwodXJsLmhyZWYoKSk7CiB9CiAKIHZvaWQg
SW50ZXJuYWxzOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sIGVuYWJsZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXgg
ZTQ4N2ZhNjFjNThjNTVhMjMxZmVkZjhhZTljYzEzOTZlYjYwNzIyZi4uNGFiMzQ1NzNkYTM0MmZj
ZjdjNjg4NzcwM2I1M2QwZWU2MzM0MDNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTI1NiwyMCArMjU2LDIwIEBAIHZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jk
c1Byb2Nlc3NpbmcoCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljcz4mJiBvcmlnaW5zKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzPiYmIHN0YXRpc3RpY3MpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKIAogICAgIC8vIEl0IGlzIHNhZmUgdG8gbW92ZSB0aGUgb3JpZ2lucyB0byB0aGUg
YmFja2dyb3VuZCBxdWV1ZSB3aXRob3V0IGlzb2xhdGVkIGNvcHkgaGVyZSBiZWNhdXNlIHRoaXMg
aXMgYW4gci12YWx1ZQogICAgIC8vIGNvbWluZyBmcm9tIElQQy4gUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyBvbmx5IGNvbnRhaW5zIHN0cmluZ3Mgd2hpY2ggYXJlIHNhZmUgdG8gbW92ZSB0byBvdGhl
ciB0aHJlYWRzIGFzIGxvbmcKICAgICAvLyBhcyBub2JvZHkgb24gdGhpcyB0aHJlYWQgaG9sZHMg
YSByZWZlcmVuY2UgdG8gdGhvc2Ugc3RyaW5ncy4KLSAgICBwb3N0VGFzayhbdGhpcywgb3JpZ2lu
cyA9IFdURk1vdmUob3JpZ2lucyldKCkgbXV0YWJsZSB7CisgICAgcG9zdFRhc2soW3RoaXMsIHN0
YXRpc3RpY3MgPSBXVEZNb3ZlKHN0YXRpc3RpY3MpXSgpIG11dGFibGUgewogICAgICAgICBpZiAo
IW1fc3RhdGlzdGljc1N0b3JlIHx8ICFpczxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmU+KCptX3N0YXRpc3RpY3NTdG9yZSkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
YXV0byYgbWVtb3J5U3RvcmUgPSBkb3duY2FzdDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmU+KCptX3N0YXRpc3RpY3NTdG9yZSk7CiAgICAgCi0gICAgICAgIG1lbW9yeVN0b3JlLm1l
cmdlU3RhdGlzdGljcyhXVEZNb3ZlKG9yaWdpbnMpKTsKKyAgICAgICAgbWVtb3J5U3RvcmUubWVy
Z2VTdGF0aXN0aWNzKFdURk1vdmUoc3RhdGlzdGljcykpOwogCiAgICAgICAgIC8vIFdlIGNhbiBj
YW5jZWwgYW55IHBlbmRpbmcgcmVxdWVzdCB0byBwcm9jZXNzIHN0YXRpc3RpY3Mgc2luY2Ugd2Un
cmUgZG9pbmcgaXQgc3luY2hyb25vdXNseSBiZWxvdy4KICAgICAgICAgbWVtb3J5U3RvcmUuY2Fu
Y2VsUGVuZGluZ1N0YXRpc3RpY3NQcm9jZXNzaW5nUmVxdWVzdCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDkzNTA1YWI1YWY4NDdkZGQ2NmVi
YTU4ZmI3NjI3MWNlNzI1Y2Q1ZjkuLjJjN2QzNzhiMDQzYzk1ZTE2NTU4N2U2NmE1Zjc0M2UwZjg5
MjY2YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgK
QEAgLTE4Niw3ICsxODYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZW5kRGlhZ25vc3RpY01lc3Nh
Z2VXaXRoVmFsdWUoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0
aW9uLCB1bnNpZ25lZCB2YWx1ZSwgdW5zaWduZWQgc2lnRGlnaXRzLCBXZWJDb3JlOjpTaG91bGRT
YW1wbGUpIGNvbnN0OwogICAgIHZvaWQgbm90aWZ5UGFnZVN0YXRpc3RpY3NUZWxlbWV0cnlGaW5p
c2hlZCh1bnNpZ25lZCB0b3RhbFByZXZhbGVudFJlc291cmNlcywgdW5zaWduZWQgdG90YWxQcmV2
YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCB0b3AzU3ViZnJhbWVV
bmRlclRvcEZyYW1lT3JpZ2lucykgY29uc3Q7CiAKLSAgICB2b2lkIHJlc291cmNlTG9hZFN0YXRp
c3RpY3NVcGRhdGVkKFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmKTsKKyAgICB2b2lk
IHJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVu
ZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IG9wZW5lcklELCBPcGVuZXJEb21haW4mJik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCmluZGV4IDg2MzdkMmY0YjZhYWQ0ZWMwYTU2MTQyNzBmMTNkZWIyOWQ1MjBkMTIu
LjE4YjY0ZjE2YmVmZGM5N2JiZThjMTExN2Q1YzdjNDQ3M2RjYTY5N2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCkBAIC02OTEsMTMgKzY5MSwxMSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mCiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNv
dXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6UGVyU2Vz
c2lvblJlc291cmNlTG9hZERhdGEmJiBzdGF0aXN0aWNzKQordm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFJlc291
cmNlTG9hZFN0YXRpc3RpY3M+JiYgc3RhdGlzdGljcykKIHsKLSAgICBmb3IgKGF1dG8mIGl0ZXIg
OiBzdGF0aXN0aWNzKSB7Ci0gICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IG5ldHdv
cmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oaXRlci5maXJzdCkpIHsKLSAgICAgICAgICAgIGlm
IChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNl
TG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChXVEZNb3ZlKGl0ZXIuc2Vjb25kKSk7Ci0g
ICAgICAgIH0KKyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vz
c2lvbigpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0
d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICAgICAgICAgIHJlc291
cmNlTG9hZFN0YXRpc3RpY3MtPnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFdURk1vdmUo
c3RhdGlzdGljcykpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDY3
MTAyMTZhODdmNWVlODUwNjU0OTc0MGRlNzM4OTQxNzMyMWY0MTMuLjdjZmQ4M2Q1MjFjOWJlOTNm
NDAzMWRjNzY3MWRmZmNjMGE0ZWUwYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTI0
MCw3ICsyNDAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9y
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAKICAgICB2
b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOwotICAgIHZv
aWQgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OlBlclNlc3Npb25SZXNvdXJjZUxvYWREYXRhJiYpOworICAgIHZvaWQgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYp
OwogICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3Vi
RnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzcyhj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFn
ZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJik7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vz
c1VuZGVyT3BlbmVyKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluSW5OZWVkT2ZT
dG9yYWdlQWNjZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWluKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDkyMDViYmYxOWVjYjkwYjJlODg0ODQ2MDcx
YzJkNzA4NzgxNjk5NjAuLjJhZDMxM2FiODI0ZDUxZGFjYjY4MjllM2Q5YjE1ZTBiNzc1Y2EzZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNTksMTAg
KzU5LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5
UmVjZWl2ZXIgewogICAgIFJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKTsKICAg
ICBDbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCk7CiAgICAgTG9nVXNlckludGVyYWN0aW9uKFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikKLSAgICAKLSAgICAjIEZJWE1FOiBTdG9wIHBhc3Np
bmcgc2Vzc2lvbklEcy4KLSAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8
c3RkOjpwYWlyPFBBTDo6U2Vzc2lvbklELCBWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljcz4+PiBzdGF0aXN0aWNzKQotCisgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0
ZWQoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+IHN0YXRpc3RpY3MpCiAg
ICAgSGFzU3RvcmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFtZURv
bWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQp
IC0+IChib29sIGhhc1N0b3JhZ2VBY2Nlc3MpIEFzeW5jCiAgICAgUmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBXZWJLaXQ6OldlYlBh
Z2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQpIC0+IChlbnVtOmJvb2wgV2ViQ29yZTo6
U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3JhbnRlZCwgZW51bTpib29sIFdlYkNvcmU6OlN0
b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bikgQXN5bmMKICAgICBSZXF1
ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRv
bWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVy
UGFnZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBvcGVuZXJEb21haW4pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VM
b2FkT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcAppbmRleCBlMWI0YjllYjNmMzg0ZjVmNWZmMjkx
MzFhOTNjOGZkNmRmMGMwNjUxLi42MGI1MmViN2U5NzU3ZTg3NWI5ZDU1ZDEwYjQ3ZDYxZjI0OTdi
ZjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKQEAgLTQ5LDE3ICs0
OSwxMiBAQCBzdGF0aWMgYm9vbCBpczN4eFJlZGlyZWN0KGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQogICAgIHJldHVybiByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID49IDMwMCAm
JiByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpIDw9IDM5OTsKIH0KIAotc3RhdGljIGJvb2wgc2hv
dWxkTG9nUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCi17
Ci0gICAgcmV0dXJuIERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6cmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWQoKSAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCk7Ci19Ci0KIFdlYlJlc291
cmNlTG9hZE9ic2VydmVyOjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcigpCiAgICAgOiBtX25vdGlm
aWNhdGlvblRpbWVyKCp0aGlzLCAmV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnVwZGF0ZUNlbnRy
YWxTdGF0aXN0aWNzU3RvcmUpCiB7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVudGlm
aWVyIG9wZW5lclBhZ2VJRCwgRG9jdW1lbnQmIG9wZW5lckRvY3VtZW50KQordm9pZCBXZWJSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRp
ZmllciBvcGVuZXJQYWdlSUQsIERvY3VtZW50JiBvcGVuZXJEb2N1bWVudCkKIHsKICAgICBhdXRv
IG9wZW5lclVybCA9IG9wZW5lckRvY3VtZW50LnVybCgpOwogICAgIFJlZ2lzdHJhYmxlRG9tYWlu
IG9wZW5lckRvbWFpbiB7IG9wZW5lclVybCB9OwpAQCAtNzMsMjEgKzY4LDE2IEBAIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFM
OjpTZXNzaW9uSUQsIGNvCiAgICAgfQogfQogICAgIAotUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYg
V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lz
dHJhYmxlRG9tYWluKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIGRvbWFpbikKK1Jlc291cmNlTG9hZFN0YXRpc3RpY3MmIFdlYlJlc291cmNlTG9hZE9i
c2VydmVyOjplbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKQogewotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9w
ZXJTZXNzaW9uUmVzb3VyY2VTdGF0aXN0aWNzTWFwLmVuc3VyZShzZXNzaW9uSUQsIFtdIHsKLSAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcz4+KCk7Ci0gICAgfSk7Ci0KLSAgICBhdXRvIGFkZERvbWFpblJlc3Vs
dCA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmVuc3VyZShkb21haW4sIFsmZG9tYWluXSB7
CisgICAgcmV0dXJuIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmVuc3VyZShkb21haW4sIFsmZG9t
YWluXSB7CiAgICAgICAgIHJldHVybiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKGRvbWFpbik7Ci0g
ICAgfSk7Ci0gICAgcmV0dXJuIGFkZERvbWFpblJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAg
fSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpz
Y2hlZHVsZU5vdGlmaWNhdGlvbklmTmVlZGVkKCkKIHsKLSAgICBpZiAobV9wZXJTZXNzaW9uUmVz
b3VyY2VTdGF0aXN0aWNzTWFwLmlzRW1wdHkoKSkgeworICAgIGlmIChtX3Jlc291cmNlU3RhdGlz
dGljc01hcC5pc0VtcHR5KCkpIHsKICAgICAgICAgbV9ub3RpZmljYXRpb25UaW1lci5zdG9wKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDIsNTIgKzkyLDM3IEBAIHZvaWQgV2ViUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OnVwZGF0ZUNlbnRyYWxTdGF0aXN0aWNzU3RvcmUoKQogICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQodGFrZVN0YXRpc3RpY3MoKSksIDApOwogfQog
Ci1TdHJpbmcgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnN0YXRpc3RpY3NGb3JVUkwoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCkKK1N0cmluZyBXZWJSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6c3RhdGlzdGljc0ZvclVSTChjb25zdCBVUkwmIHVybCkKIHsKLSAgICBhdXRv
KiByZXNvdXJjZVN0YXRpc3RpY3NCeURvbWFpbiA9IG1fcGVyU2Vzc2lvblJlc291cmNlU3RhdGlz
dGljc01hcC5nZXQoc2Vzc2lvbklEKTsKLSAgICBpZiAoIXJlc291cmNlU3RhdGlzdGljc0J5RG9t
YWluKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLQotICAgIGF1dG8gaXRlciA9IHJl
c291cmNlU3RhdGlzdGljc0J5RG9tYWluLT5maW5kKFJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsIH0p
OwotICAgIGlmIChpdGVyID09IHJlc291cmNlU3RhdGlzdGljc0J5RG9tYWluLT5lbmQoKSkKKyAg
ICBhdXRvIGl0ZXIgPSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5maW5kKFJlZ2lzdHJhYmxlRG9t
YWluIHsgdXJsIH0pOworICAgIGlmIChpdGVyID09IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmVu
ZCgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIHJldHVybiBtYWtlU3Ry
aW5nKCJTdGF0aXN0aWNzIGZvciAiLCB1cmwuaG9zdCgpLnRvU3RyaW5nKCksICI6XG4iLCBpdGVy
LT52YWx1ZS50b1N0cmluZygpKTsKIH0KIAotYXV0byBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
dGFrZVN0YXRpc3RpY3MoKSAtPiBQZXJTZXNzaW9uUmVzb3VyY2VMb2FkRGF0YQorVmVjdG9yPFJl
c291cmNlTG9hZFN0YXRpc3RpY3M+IFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjp0YWtlU3RhdGlz
dGljcygpCiB7Ci0gICAgUGVyU2Vzc2lvblJlc291cmNlTG9hZERhdGEgcGVyU2Vzc2lvblN0YXRp
c3RpY3M7Ci0KLSAgICBmb3IgKGF1dG8mIGl0ZXIgOiBtX3BlclNlc3Npb25SZXNvdXJjZVN0YXRp
c3RpY3NNYXApIHsKLSAgICAgICAgVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+IHN0YXRp
c3RpY3M7Ci0gICAgICAgIHN0YXRpc3RpY3MucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShpdGVyLnZh
bHVlLT5zaXplKCkpOwotCi0gICAgICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDogaXRlci52YWx1
ZS0+dmFsdWVzKCkpCi0gICAgICAgICAgICBzdGF0aXN0aWNzLnVuY2hlY2tlZEFwcGVuZChXVEZN
b3ZlKHN0YXRpc3RpYykpOwotCi0gICAgICAgIHBlclNlc3Npb25TdGF0aXN0aWNzLmFwcGVuZChz
dGQ6Om1ha2VfcGFpcihpdGVyLmtleSwgV1RGTW92ZShzdGF0aXN0aWNzKSkpOwotICAgIH0KLSAg
ICAKLSAgICBtX3BlclNlc3Npb25SZXNvdXJjZVN0YXRpc3RpY3NNYXAuY2xlYXIoKTsKLSAgICBy
ZXR1cm4gcGVyU2Vzc2lvblN0YXRpc3RpY3M7CisgICAgVmVjdG9yPFJlc291cmNlTG9hZFN0YXRp
c3RpY3M+IHN0YXRpc3RpY3M7CisgICAgc3RhdGlzdGljcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBzdGF0aXN0
aWMgOiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC52YWx1ZXMoKSkKKyAgICAgICAgc3RhdGlzdGlj
cy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShzdGF0aXN0aWMpKTsKKyAgICBtX3Jlc291cmNlU3Rh
dGlzdGljc01hcC5jbGVhcigpOworICAgIHJldHVybiBzdGF0aXN0aWNzOwogfQogCiB2b2lkIFdl
YlJlc291cmNlTG9hZE9ic2VydmVyOjpjbGVhclN0YXRlKCkKIHsKICAgICBtX25vdGlmaWNhdGlv
blRpbWVyLnN0b3AoKTsKLSAgICBtX3BlclNlc3Npb25SZXNvdXJjZVN0YXRpc3RpY3NNYXAuY2xl
YXIoKTsKKyAgICBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5jbGVhcigpOwogICAgIG1fbGFzdFJl
cG9ydGVkVXNlckludGVyYWN0aW9uTWFwLmNsZWFyKCk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VM
b2FkT2JzZXJ2ZXI6OmxvZ0ZvbnRMb2FkKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3Qg
U3RyaW5nJiBmYW1pbHlOYW1lLCBib29sIGxvYWRTdGF0dXMpCiB7CiAjaWYgRU5BQkxFKFdFQl9B
UElfU1RBVElTVElDUykKLSAgICBpZiAoIXNob3VsZExvZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3Mo
ZG9jdW1lbnQuc2Vzc2lvbklEKCkpKQotICAgICAgICByZXR1cm47Ci0KICAgICBSZWdpc3RyYWJs
ZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiB7IGRvY3VtZW50LnVybCgpIH07Ci0gICAgYXV0byYg
c3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWlu
KGRvY3VtZW50LnNlc3Npb25JRCwgcmVnaXN0cmFibGVEb21haW4pOworICAgIGF1dG8mIHN0YXRp
c3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihyZWdp
c3RyYWJsZURvbWFpbik7CiAgICAgYm9vbCBzaG91bGRDYWxsTm90aWZpY2F0aW9uQ2FsbGJhY2sg
PSBmYWxzZTsKICAgICBpZiAoIWxvYWRTdGF0dXMpIHsKICAgICAgICAgaWYgKHN0YXRpc3RpY3Mu
Zm9udHNGYWlsZWRUb0xvYWQuYWRkKGZhbWlseU5hbWUpLmlzTmV3RW50cnkpCkBAIC0xNzEsMTEg
KzE0Niw4IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ0ZvbnRMb2FkKGNvbnN0
IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nCiB2b2lkIFdlYlJlc291cmNlTG9hZE9i
c2VydmVyOjpsb2dDYW52YXNSZWFkKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKIHsKICNpZiBF
TkFCTEUoV0VCX0FQSV9TVEFUSVNUSUNTKQotICAgIGlmICghc2hvdWxkTG9nUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyhkb2N1bWVudC5zZXNzaW9uSUQoKSkpCi0gICAgICAgIHJldHVybjsKLQogICAg
IFJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluIHsgZG9jdW1lbnQudXJsKCkgfTsK
LSAgICBhdXRvJiBzdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0
cmFibGVEb21haW4oZG9jdW1lbnQuc2Vzc2lvbklEKCksIHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAg
ICBhdXRvJiBzdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFi
bGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pOwogICAgIFJlZ2lzdHJhYmxlRG9tYWluIG1haW5G
cmFtZVJlZ2lzdHJhYmxlRG9tYWluIHsgZG9jdW1lbnQudG9wRG9jdW1lbnQoKS51cmwoKSB9Owog
ICAgIHN0YXRpc3RpY3MuY2FudmFzQWN0aXZpdHlSZWNvcmQud2FzRGF0YVJlYWQgPSB0cnVlOwog
ICAgIGlmIChzdGF0aXN0aWNzLnRvcEZyYW1lUmVnaXN0cmFibGVEb21haW5zV2hpY2hBY2Nlc3Nl
ZFdlYkFQSXMuYWRkKG1haW5GcmFtZVJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpKS5pc05ld0Vu
dHJ5KQpAQCAtMTg4LDExICsxNjAsOCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjps
b2dDYW52YXNSZWFkKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKIHZvaWQgV2ViUmVzb3VyY2VM
b2FkT2JzZXJ2ZXI6OmxvZ0NhbnZhc1dyaXRlT3JNZWFzdXJlKGNvbnN0IERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0V3JpdHRlbikKIHsKICNpZiBFTkFCTEUoV0VCX0FQSV9T
VEFUSVNUSUNTKQotICAgIGlmICghc2hvdWxkTG9nUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhkb2N1
bWVudC5zZXNzaW9uSUQoKSkpCi0gICAgICAgIHJldHVybjsKLQogICAgIFJlZ2lzdHJhYmxlRG9t
YWluIHJlZ2lzdHJhYmxlRG9tYWluIHsgZG9jdW1lbnQudXJsKCkgfTsKLSAgICBhdXRvJiBzdGF0
aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4oZG9j
dW1lbnQuc2Vzc2lvbklELCByZWdpc3RyYWJsZURvbWFpbik7CisgICAgYXV0byYgc3RhdGlzdGlj
cyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJh
YmxlRG9tYWluKTsKICAgICBib29sIHNob3VsZENhbGxOb3RpZmljYXRpb25DYWxsYmFjayA9IGZh
bHNlOwogICAgIFJlZ2lzdHJhYmxlRG9tYWluIG1haW5GcmFtZVJlZ2lzdHJhYmxlRG9tYWluIHsg
ZG9jdW1lbnQudG9wRG9jdW1lbnQoKS51cmwoKSB9OwogICAgIGlmIChzdGF0aXN0aWNzLmNhbnZh
c0FjdGl2aXR5UmVjb3JkLnJlY29yZFdyaXR0ZW5Pck1lYXN1cmVkVGV4dCh0ZXh0V3JpdHRlbikp
CkBAIC0yMTAsMTEgKzE3OSw4IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ0Nh
bnZhc1dyaXRlT3JNZWFzdXJlKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwKIHZvaWQgV2ViUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ05hdmlnYXRvckFQSUFjY2Vzc2VkKGNvbnN0IERvY3VtZW50
JiBkb2N1bWVudCwgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6TmF2aWdhdG9yQVBJIGZ1
bmN0aW9uTmFtZSkKIHsKICNpZiBFTkFCTEUoV0VCX0FQSV9TVEFUSVNUSUNTKQotICAgIGlmICgh
c2hvdWxkTG9nUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhkb2N1bWVudC5zZXNzaW9uSUQoKSkpCi0g
ICAgICAgIHJldHVybjsKLQogICAgIFJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWlu
IHsgZG9jdW1lbnQudXJsKCkgfTsKLSAgICBhdXRvJiBzdGF0aXN0aWNzID0gZW5zdXJlUmVzb3Vy
Y2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4oZG9jdW1lbnQuc2Vzc2lvbklELCByZWdp
c3RyYWJsZURvbWFpbik7CisgICAgYXV0byYgc3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3Rh
dGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKTsKICAgICBib29s
IHNob3VsZENhbGxOb3RpZmljYXRpb25DYWxsYmFjayA9IGZhbHNlOwogICAgIGlmICghc3RhdGlz
dGljcy5uYXZpZ2F0b3JGdW5jdGlvbnNBY2Nlc3NlZC5jb250YWlucyhmdW5jdGlvbk5hbWUpKSB7
CiAgICAgICAgIHN0YXRpc3RpY3MubmF2aWdhdG9yRnVuY3Rpb25zQWNjZXNzZWQuYWRkKGZ1bmN0
aW9uTmFtZSk7CkBAIC0yMzQsMTEgKzIwMCw4IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OmxvZ05hdmlnYXRvckFQSUFjY2Vzc2VkKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwKIHZv
aWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1NjcmVlbkFQSUFjY2Vzc2VkKGNvbnN0IERv
Y3VtZW50JiBkb2N1bWVudCwgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6U2NyZWVuQVBJ
IGZ1bmN0aW9uTmFtZSkKIHsKICNpZiBFTkFCTEUoV0VCX0FQSV9TVEFUSVNUSUNTKQotICAgIGlm
ICghc2hvdWxkTG9nUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhkb2N1bWVudC5zZXNzaW9uSUQoKSkp
Ci0gICAgICAgIHJldHVybjsKLQogICAgIFJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9t
YWluIHsgZG9jdW1lbnQudXJsKCkgfTsKLSAgICBhdXRvJiBzdGF0aXN0aWNzID0gZW5zdXJlUmVz
b3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4oZG9jdW1lbnQuc2Vzc2lvbklELCBy
ZWdpc3RyYWJsZURvbWFpbik7CisgICAgYXV0byYgc3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNl
U3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKTsKICAgICBi
b29sIHNob3VsZENhbGxOb3RpZmljYXRpb25DYWxsYmFjayA9IGZhbHNlOwogICAgIGlmICghc3Rh
dGlzdGljcy5zY3JlZW5GdW5jdGlvbnNBY2Nlc3NlZC5jb250YWlucyhmdW5jdGlvbk5hbWUpKSB7
CiAgICAgICAgIHN0YXRpc3RpY3Muc2NyZWVuRnVuY3Rpb25zQWNjZXNzZWQuYWRkKGZ1bmN0aW9u
TmFtZSk7CkBAIC0yNjMsNyArMjI2LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
bG9nU3VicmVzb3VyY2VMb2FkaW5nKGNvbnN0IEZyYW1lKiBmcmFtZSwgY29uc3QgUmUKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgYXV0byogcGFnZSA9IGZyYW1lLT5wYWdlKCk7Ci0gICAgaWYgKCFw
YWdlIHx8ICFzaG91bGRMb2dSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKHBhZ2UtPnNlc3Npb25JRCgp
KSkKKyAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGJvb2wgaXNSZWRpcmVj
dCA9IGlzM3h4UmVkaXJlY3QocmVkaXJlY3RSZXNwb25zZSk7CkBAIC0yODUsNyArMjQ4LDcgQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nU3VicmVzb3VyY2VMb2FkaW5nKGNvbnN0
IEZyYW1lKiBmcmFtZSwgY29uc3QgUmUKICAgICAgICAgcmV0dXJuOwogCiAgICAgewotICAgICAg
ICBhdXRvJiB0YXJnZXRTdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVn
aXN0cmFibGVEb21haW4ocGFnZS0+c2Vzc2lvbklEKCksIHRhcmdldERvbWFpbik7CisgICAgICAg
IGF1dG8mIHRhcmdldFN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdp
c3RyYWJsZURvbWFpbih0YXJnZXREb21haW4pOwogICAgICAgICBhdXRvIGxhc3RTZWVuID0gUmVz
b3VyY2VMb2FkU3RhdGlzdGljczo6cmVkdWNlVGltZVJlc29sdXRpb24oV2FsbFRpbWU6Om5vdygp
KTsKICAgICAgICAgdGFyZ2V0U3RhdGlzdGljcy5sYXN0U2VlbiA9IGxhc3RTZWVuOwogICAgICAg
ICB0YXJnZXRTdGF0aXN0aWNzLnN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMuYWRkKHRv
cEZyYW1lRG9tYWluKTsKQEAgLTI5NCwyMCArMjU3LDE3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OmxvZ1N1YnJlc291cmNlTG9hZGluZyhjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0
IFJlCiAgICAgfQogCiAgICAgaWYgKGlzUmVkaXJlY3QpIHsKLSAgICAgICAgYXV0byYgcmVkaXJl
Y3RpbmdPcmlnaW5TdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0
cmFibGVEb21haW4ocGFnZS0+c2Vzc2lvbklEKCksIHJlZGlyZWN0ZWRGcm9tRG9tYWluKTsKKyAg
ICAgICAgYXV0byYgcmVkaXJlY3RpbmdPcmlnaW5TdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VT
dGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4ocmVkaXJlY3RlZEZyb21Eb21haW4pOwogICAg
ICAgICByZWRpcmVjdGluZ09yaWdpblN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVj
dHNUby5hZGQodGFyZ2V0RG9tYWluKTsKLSAgICAgICAgYXV0byYgdGFyZ2V0U3RhdGlzdGljcyA9
IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHBhZ2UtPnNlc3Np
b25JRCgpLCB0YXJnZXREb21haW4pOworICAgICAgICBhdXRvJiB0YXJnZXRTdGF0aXN0aWNzID0g
ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4odGFyZ2V0RG9tYWlu
KTsKICAgICAgICAgdGFyZ2V0U3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zy
b20uYWRkKHJlZGlyZWN0ZWRGcm9tRG9tYWluKTsKIAogICAgICAgICBzY2hlZHVsZU5vdGlmaWNh
dGlvbklmTmVlZGVkKCk7CiAgICAgfQogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVy
Ojpsb2dXZWJTb2NrZXRMb2FkaW5nKGNvbnN0IFVSTCYgdGFyZ2V0VVJMLCBjb25zdCBVUkwmIG1h
aW5GcmFtZVVSTCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQordm9pZCBXZWJSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6bG9nV2ViU29ja2V0TG9hZGluZyhjb25zdCBVUkwmIHRhcmdldFVSTCwgY29u
c3QgVVJMJiBtYWluRnJhbWVVUkwpCiB7Ci0gICAgaWYgKCFzaG91bGRMb2dSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKHNlc3Npb25JRCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIGF1dG8gdGFyZ2V0
SG9zdCA9IHRhcmdldFVSTC5ob3N0KCk7CiAgICAgYXV0byBtYWluRnJhbWVIb3N0ID0gbWFpbkZy
YW1lVVJMLmhvc3QoKTsKICAgICAKQEAgLTMyMiw3ICsyODIsNyBAQCB2b2lkIFdlYlJlc291cmNl
TG9hZE9ic2VydmVyOjpsb2dXZWJTb2NrZXRMb2FkaW5nKGNvbnN0IFVSTCYgdGFyZ2V0VVJMLCBj
b25zdCBVUgogCiAgICAgYXV0byBsYXN0U2VlbiA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OnJl
ZHVjZVRpbWVSZXNvbHV0aW9uKFdhbGxUaW1lOjpub3coKSk7CiAKLSAgICBhdXRvJiB0YXJnZXRT
dGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4o
c2Vzc2lvbklELCB0YXJnZXREb21haW4pOworICAgIGF1dG8mIHRhcmdldFN0YXRpc3RpY3MgPSBl
bnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbih0YXJnZXREb21haW4p
OwogICAgIHRhcmdldFN0YXRpc3RpY3MubGFzdFNlZW4gPSBsYXN0U2VlbjsKICAgICB0YXJnZXRT
dGF0aXN0aWNzLnN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMuYWRkKHRvcEZyYW1lRG9t
YWluKTsKIApAQCAtMzMxLDkgKzI5MSw2IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OmxvZ1dlYlNvY2tldExvYWRpbmcoY29uc3QgVVJMJiB0YXJnZXRVUkwsIGNvbnN0IFVSCiAKIHZv
aWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1VzZXJJbnRlcmFjdGlvbldpdGhSZWR1Y2Vk
VGltZVJlc29sdXRpb24oY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAgIGlmICghZG9j
dW1lbnQuc2Vzc2lvbklEKCkuaXNWYWxpZCgpIHx8ICFzaG91bGRMb2dSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzKGRvY3VtZW50LnNlc3Npb25JRCgpKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgYXV0
byYgdXJsID0gZG9jdW1lbnQudXJsKCk7CiAgICAgaWYgKHVybC5wcm90b2NvbElzQWJvdXQoKSB8
fCB1cmwuaXNMb2NhbEZpbGUoKSB8fCB1cmwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBA
IC0zNDYsNyArMzAzLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nVXNlcklu
dGVyYWN0aW9uV2l0aFJlZHVjZWRUaW1lUmVzb2x1dGlvbihjb25zdAogCiAgICAgbV9sYXN0UmVw
b3J0ZWRVc2VySW50ZXJhY3Rpb25NYXAuc2V0KHRvcEZyYW1lRG9tYWluLCBuZXdUaW1lKTsKIAot
ICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3Ry
YWJsZURvbWFpbihkb2N1bWVudC5zZXNzaW9uSUQoKSwgdG9wRnJhbWVEb21haW4pOworICAgIGF1
dG8mIHN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURv
bWFpbih0b3BGcmFtZURvbWFpbik7CiAgICAgc3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24g
PSB0cnVlOwogICAgIHN0YXRpc3RpY3MubGFzdFNlZW4gPSBuZXdUaW1lOwogICAgIHN0YXRpc3Rp
Y3MubW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgPSBuZXdUaW1lOwpAQCAtMzU2LDcgKzMx
Myw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1VzZXJJbnRlcmFjdGlvbldp
dGhSZWR1Y2VkVGltZVJlc29sdXRpb24oY29uc3QKICAgICAgICAgICAgIGlmIChhdXRvKiBvcGVu
ZXJEb2N1bWVudCA9IG9wZW5lci0+ZG9jdW1lbnQoKSkgewogICAgICAgICAgICAgICAgIGlmIChh
dXRvKiBvcGVuZXJGcmFtZSA9IG9wZW5lckRvY3VtZW50LT5mcmFtZSgpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChhdXRvIG9wZW5lclBhZ2VJRCA9IG9wZW5lckZyYW1lLT5sb2FkZXIoKS5j
bGllbnQoKS5wYWdlSUQoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RTdG9yYWdl
QWNjZXNzVW5kZXJPcGVuZXIoZG9jdW1lbnQuc2Vzc2lvbklEKCksIHRvcEZyYW1lRG9tYWluLCBv
cGVuZXJQYWdlSUQudmFsdWUoKSwgKm9wZW5lckRvY3VtZW50KTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIodG9wRnJhbWVEb21haW4sIG9w
ZW5lclBhZ2VJRC52YWx1ZSgpLCAqb3BlbmVyRG9jdW1lbnQpOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIu
aAppbmRleCA4YWUyNGIxMTIxMjA5MzNmNTg1M2EyZTFlYThjMDYzYWI5NzU5NTg4Li42YzZjYjc3
N2JhNjhkN2NhZmM4NTAyODVhZjM0YjYyNjEzMDFjMzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VM
b2FkT2JzZXJ2ZXIuaApAQCAtMzYsMTIgKzM2LDEwIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpSZXNv
dXJjZUxvYWRPYnNlcnZlciB7CiBwdWJsaWM6Ci0gICAgdXNpbmcgUGVyU2Vzc2lvblJlc291cmNl
TG9hZERhdGEgPSBWZWN0b3I8c3RkOjpwYWlyPFBBTDo6U2Vzc2lvbklELCBWZWN0b3I8V2ViQ29y
ZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4+PjsKLQogICAgIFdlYlJlc291cmNlTG9hZE9ic2Vy
dmVyKCk7CiAgICAgCiAgICAgdm9pZCBsb2dTdWJyZXNvdXJjZUxvYWRpbmcoY29uc3QgV2ViQ29y
ZTo6RnJhbWUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpIGZpbmFsOwot
ICAgIHZvaWQgbG9nV2ViU29ja2V0TG9hZGluZyhjb25zdCBVUkwmIHRhcmdldFVSTCwgY29uc3Qg
VVJMJiBtYWluRnJhbWVVUkwsIFBBTDo6U2Vzc2lvbklEKSBmaW5hbDsKKyAgICB2b2lkIGxvZ1dl
YlNvY2tldExvYWRpbmcoY29uc3QgVVJMJiB0YXJnZXRVUkwsIGNvbnN0IFVSTCYgbWFpbkZyYW1l
VVJMKSBmaW5hbDsKICAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbldpdGhSZWR1Y2VkVGltZVJl
c29sdXRpb24oY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmKSBmaW5hbDsKICAgICB2b2lkIGxvZ0Zv
bnRMb2FkKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1l
LCBib29sIGxvYWRTdGF0dXMpIGZpbmFsOwogICAgIHZvaWQgbG9nQ2FudmFzUmVhZChjb25zdCBX
ZWJDb3JlOjpEb2N1bWVudCYpIGZpbmFsOwpAQCAtNTMsMjAgKzUxLDIwIEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFNob3VsZExvZ1VzZXJJbnRlcmFjdGlvbihib29sIHNob3VsZExvZ1VzZXJJbnRl
cmFjdGlvbikgZmluYWwgeyBtX3Nob3VsZExvZ1VzZXJJbnRlcmFjdGlvbiA9IHNob3VsZExvZ1Vz
ZXJJbnRlcmFjdGlvbjsgfQogI2VuZGlmCiAKLSAgICBTdHJpbmcgc3RhdGlzdGljc0ZvclVSTChQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJikgZmluYWw7CisgICAgU3RyaW5nIHN0YXRpc3RpY3NG
b3JVUkwoY29uc3QgVVJMJikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVDZW50cmFsU3RhdGlzdGlj
c1N0b3JlKCkgZmluYWw7CiAgICAgdm9pZCBjbGVhclN0YXRlKCkgZmluYWw7CiAgICAgCi0gICAg
Ym9vbCBoYXNTdGF0aXN0aWNzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIW1fcGVyU2Vzc2lvblJl
c291cmNlU3RhdGlzdGljc01hcC5pc0VtcHR5KCk7IH0KKyAgICBib29sIGhhc1N0YXRpc3RpY3Mo
KSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuaXNFbXB0eSgp
OyB9CiAKIHByaXZhdGU6Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgZW5z
dXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4oUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7CisgICAgV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyYgZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVE
b21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsKICAgICB2b2lkIHNjaGVk
dWxlTm90aWZpY2F0aW9uSWZOZWVkZWQoKTsKIAotICAgIFBlclNlc3Npb25SZXNvdXJjZUxvYWRE
YXRhIHRha2VTdGF0aXN0aWNzKCk7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVy
T3BlbmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYg
ZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvcGVu
ZXJQYWdlSUQsIFdlYkNvcmU6OkRvY3VtZW50JiBvcGVuZXJEb2N1bWVudCk7CisgICAgVmVjdG9y
PFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+IHRha2VTdGF0aXN0aWNzKCk7CisgICAg
dm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKGNvbnN0IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6RG9jdW1lbnQmIG9wZW5lckRvY3VtZW50
KTsKIAotICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxIYXNoTWFw
PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzPj4+IG1fcGVyU2Vzc2lvblJlc291cmNlU3RhdGlzdGljc01hcDsKKyAgICBIYXNoTWFwPFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
PiBtX3Jlc291cmNlU3RhdGlzdGljc01hcDsKICAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluLCBXVEY6OldhbGxUaW1lPiBtX2xhc3RSZXBvcnRlZFVzZXJJbnRlcmFjdGlvbk1h
cDsKIAogICAgIFdlYkNvcmU6OlRpbWVyIG1fbm90aWZpY2F0aW9uVGltZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggYTBmMDE5YjcyZjU1ODFlMzk2OWEwNTQw
YmE2MjdiNTgxYmZlMDNlMi4uYTNmODlhZDU4NmIwNTIyNjg3ZWVlYjlkODRhMmNmNWQ0NzY5MzIw
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMjE1LDEwICsy
MTUsNiBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICNlbmRpZgogCiAgICAgbV9wbHVnSW5B
dXRvU3RhcnRPcmlnaW5IYXNoZXMuYWRkKFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklE
KCksIEhhc2hNYXA8dW5zaWduZWQsIFdhbGxUaW1lPigpKTsKLQotI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFNoYXJlZCgq
bmV3IFdlYlJlc291cmNlTG9hZE9ic2VydmVyKTsKLSNlbmRpZgogICAgIAogICAgIEdpZ2FjYWdl
Ojpmb3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpOwogfQpAQCAtNDU2LDYgKzQ1Miwx
MSBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKFdlYlBy
b2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcAogCiAgICAgc2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWQocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCk7CiAK
KyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIGlmIChwYXJhbWV0ZXJz
LnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkICYmICFwYXJhbWV0ZXJzLnNlc3Npb25JRC5p
c0VwaGVtZXJhbCgpKQorICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0U2hhcmVkKCpu
ZXcgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIpOworI2VuZGlmCisKICAgICBmb3IgKGF1dG8mIHN1
cHBsZW1lbnQgOiBtX3N1cHBsZW1lbnRzLnZhbHVlcygpKQogICAgICAgICBzdXBwbGVtZW50LT5z
ZXRXZWJzaXRlRGF0YVN0b3JlKHBhcmFtZXRlcnMpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378874</attachid>
            <date>2019-09-16 11:03:50 -0700</date>
            <delta_ts>2019-09-16 12:53:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201821-20190916110325.patch</filename>
            <type>text/plain</type>
            <size>31383</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5OTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODg2YjhiNzRlYjA1OWMy
OGM5ZWQ0NDBkMTc4OTlhOWM4ZTU4OTdmYy4uM2ZiYmU1YzQ4ZGU0MGVkOTViNmI4MTYxOTg5OTQz
MjY4ZTRkZTk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE5LTA5LTE2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgV2ViUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXIgbm93IHRoYXQgd2UgaGF2ZSBvbmUgV2ViUHJvY2VzcyBwZXIgc2Vzc2lv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxODIx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKworICAgICAgICAqIE1vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
Ojpjb25uZWN0KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dXZWJTb2NrZXRMb2FkaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpzdGF0aXN0aWNzRm9y
VVJMKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NGb3JVUkwpOgorCiAyMDE5LTA5LTE2
ICBKb24gRGF2aXMgIDxqb25kQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgZmVhdHVyZSBz
dGF0dXMgZm9yIEJhdHRlcnkgU3RhdHVzIEFQSSwgV2ViR0wgMiwgYW5kIERpYWxvZyBFbGVtZW50
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IGFkNDk1OWJiZjJlMTM5YmM4ZjgyNmUwOWUwMzJmODk2ZWEyMTVkOTMuLjVm
OTA2NGI5M2RiMDU5MzI1MGZmNzRlNTJlMzVlZGVmYWFmNTJhZWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDEgQEAKKzIwMTktMDktMTYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwor
ICAgICAgICBTaW1wbGlmeSBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlciBub3cgdGhhdCB3ZSBoYXZl
IG9uZSBXZWJQcm9jZXNzIHBlciBzZXNzaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE4MjEKKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBG
dWxnaGFtLgorCisgICAgICAgIFNpbXBsaWZ5IFdlYlJlc291cmNlTG9hZE9ic2VydmVyIG5vdyB0
aGF0IHdlIGhhdmUgb25lIFdlYlByb2Nlc3MgcGVyIHNlc3Npb24uCisgICAgICAgIE5vIG5lZWQg
dG8gcGFzcyBzZXNzaW9uSURzIGFyb3VuZCBvciBzdG9yZSBzdGF0aXN0aWNzIHBlciBzZXNzaW9u
SUQuCisgICAgICAgIEFsc28sIG9ubHkgaW5pdGlhbGl6ZSB0aGUgV2ViUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXIgaWYgYm90aCBJVFAgaXMgZW5hYmxlZCBhbmQKKyAgICAgICAgd2UncmUgbm90IGluIGEg
V2ViQ29udGVudCBwcm9jZXNzIHVzZWQgZm9yIGFuIGVwaGVtZXJhbCBzZXNzaW9uLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlc291cmNlTG9h
ZFN0YXRpc3RpY3NVcGRhdGVkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lcik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjplbnN1cmVS
ZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzY2hlZHVsZU5vdGlmaWNhdGlvbklmTmVlZGVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnN0YXRpc3RpY3NGb3JV
UkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6dGFrZVN0YXRp
c3RpY3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6Y2xlYXJT
dGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dGb250
TG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dDYW52
YXNSZWFkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ0Nh
bnZhc1dyaXRlT3JNZWFzdXJlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OmxvZ05hdmlnYXRvckFQSUFjY2Vzc2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1NjcmVlbkFQSUFjY2Vzc2VkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1N1YnJlc291cmNlTG9hZGluZyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dXZWJTb2NrZXRMb2FkaW5n
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1VzZXJJbnRl
cmFjdGlvbldpdGhSZWR1Y2VkVGltZVJlc29sdXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZXRX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyk6CisKIDIwMTktMDktMTYgIERhdmlkIEtpbHplciAg
PGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjQzMTEzKTogTGVh
ayBvZiBtdWx0aXBsZSBpbnN0YW5jZSB2YXJpYWJsZSBibG9ja3Mgd2hlbiBkZWFsbG9jYXRpbmcg
X1dLQXR0cmlidXRlZFN0cmluZ05hdmlnYXRpb25EZWxlZ2F0ZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAppbmRleCBkNzRlNmQ5MTkwMjNiZmIw
OTc0MDhhNDg3NmU3NjRmMzA1OGQ3NDI0Li45OTI5NjNlYjU5YzNiMDc1YmZlNTcxYmQ2M2E5NDBj
NzEwZjRlZWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmNwcApAQCAtMjk4LDggKzI5OCw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYlNvY2tl
dDo6Y29ubmVjdChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHByCiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RhcmdldFVS
TCA9IG1fdXJsLmlzb2xhdGVkQ29weSgpLCBtYWluRnJhbWVVUkwgPSBjb250ZXh0LnVybCgpLmlz
b2xhdGVkQ29weSgpLCBzZXNzaW9uSUQgPSBjb250ZXh0LnNlc3Npb25JRCgpXSgpIHsKLSAgICAg
ICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxvZ1dlYlNvY2tldExvYWRpbmcodGFy
Z2V0VVJMLCBtYWluRnJhbWVVUkwsIHNlc3Npb25JRCk7CisgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFt0YXJnZXRVUkwgPSBtX3VybC5pc29sYXRlZENvcHkoKSwgbWFpbkZyYW1lVVJMID0g
Y29udGV4dC51cmwoKS5pc29sYXRlZENvcHkoKV0oKSB7CisgICAgICAgIFJlc291cmNlTG9hZE9i
c2VydmVyOjpzaGFyZWQoKS5sb2dXZWJTb2NrZXRMb2FkaW5nKHRhcmdldFVSTCwgbWFpbkZyYW1l
VVJMKTsKICAgICB9KTsKIAogICAgIGlmIChpczxEb2N1bWVudD4oY29udGV4dCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCmluZGV4IGJlZDdj
YTQyODE4YzhmNTRkMjBhYmI4ZGMwMmNhYTQwYTE5Yjk4MTAuLjA0MDhlMzBjMTZhOWVlMDRlMzdj
ZTlmMmRkODJjODZmYWRlNGViNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZE9ic2VydmVyLmNwcApAQCAtMzYsNyArMzYsNiBAQCBzdGF0aWMgUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXIqJiBzaGFyZWRPYnNlcnZlcigpCiAKIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OnNldFNoYXJlZChSZXNvdXJjZUxvYWRPYnNlcnZlciYgb2JzZXJ2ZXIpCiB7Ci0gICAgUkVMRUFT
RV9BU1NFUlQoIXNoYXJlZE9ic2VydmVyKCkpOwogICAgIHNoYXJlZE9ic2VydmVyKCkgPSAmb2Jz
ZXJ2ZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVy
LmgKaW5kZXggZGRlMjQ0ZDI0ODE1N2IxN2NhMGI3YzRlOTRjMjNmMGYyYTJjMmY4ZC4uMTRmZjM4
YTc3NzQ2Njg0NDQxNGI4Mjc3ZTdiYjQ4ZjJmODQzMGE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgKQEAgLTI2LDcgKzI2LDYgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oIgotI2luY2x1ZGUgPHBh
bC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC00NSw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZXNvdXJjZUxv
YWRPYnNlcnZlcigpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGxvZ1N1YnJlc291cmNlTG9hZGlu
Zyhjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgLyogbmV3UmVxdWVzdCAqLywg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgLyogcmVkaXJlY3RSZXNwb25zZSAqLykgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIGxvZ1dlYlNvY2tldExvYWRpbmcoY29uc3QgVVJMJiAvKiB0YXJnZXRVUkwg
Ki8sIGNvbnN0IFVSTCYgLyogbWFpbkZyYW1lVVJMICovLCBQQUw6OlNlc3Npb25JRCkgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGxvZ1dlYlNvY2tldExvYWRpbmcoY29uc3QgVVJMJiAvKiB0YXJnZXRV
UkwgKi8sIGNvbnN0IFVSTCYgLyogbWFpbkZyYW1lVVJMICovKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgbG9nVXNlckludGVyYWN0aW9uV2l0aFJlZHVjZWRUaW1lUmVzb2x1dGlvbihjb25zdCBEb2N1
bWVudCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBsb2dGb250TG9hZChjb25zdCBEb2N1bWVudCYs
IGNvbnN0IFN0cmluZyYgLyogZmFtaWx5TmFtZSAqLywgYm9vbCAvKiBsb2FkU3RhdHVzICovKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9nQ2FudmFzUmVhZChjb25zdCBEb2N1bWVudCYpIHsgfQpA
QCAtNTMsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGxvZ05hdmlnYXRvckFQ
SUFjY2Vzc2VkKGNvbnN0IERvY3VtZW50JiwgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6
TmF2aWdhdG9yQVBJKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9nU2NyZWVuQVBJQWNjZXNzZWQo
Y29uc3QgRG9jdW1lbnQmLCBjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpTY3JlZW5BUEkp
IHsgfQogCi0gICAgdmlydHVhbCBTdHJpbmcgc3RhdGlzdGljc0ZvclVSTChQQUw6OlNlc3Npb25J
RCwgY29uc3QgVVJMJikgeyByZXR1cm4geyB9OyB9CisgICAgdmlydHVhbCBTdHJpbmcgc3RhdGlz
dGljc0ZvclVSTChjb25zdCBVUkwmKSB7IHJldHVybiB7IH07IH0KICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlQ2VudHJhbFN0YXRpc3RpY3NTdG9yZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjbGVh
clN0YXRlKCkgeyB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXgg
YWE3YzE0MDExZDBiMDBkY2I3YzEyZGNmZjQ5ODUxMDQwNzQ3ODVlZS4uMDMwMGY5YTA0MzUwNzAw
NmJmZWY1OWRjOWNmOGYyZjdlMGY4MDRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcApAQCAtNDQ2NywxMSArNDQ2Nyw3IEBAIEpTVmFsdWUgSW50ZXJuYWxzOjpjbG9uZUFycmF5
QnVmZmVyKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSBidWZmZXIsIEpTVmFsCiAKIFN0
cmluZyBJbnRlcm5hbHM6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NGb3JVUkwoY29uc3QgRE9NVVJM
JiB1cmwpCiB7Ci0gICAgYXV0byogZG9jdW1lbnQgPSBjb250ZXh0RG9jdW1lbnQoKTsKLSAgICBp
ZiAoIWRvY3VtZW50KQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLQotICAgIHJldHVy
biBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuc3RhdGlzdGljc0ZvclVSTChkb2N1bWVu
dC0+c2Vzc2lvbklEKCksIHVybC5ocmVmKCkpOworICAgIHJldHVybiBSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6c2hhcmVkKCkuc3RhdGlzdGljc0ZvclVSTCh1cmwuaHJlZigpKTsKIH0KIAogdm9pZCBJ
bnRlcm5hbHM6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCBl
NDg3ZmE2MWM1OGM1NWEyMzFmZWRmOGFlOWNjMTM5NmViNjA3MjJmLi40YWIzNDU3M2RhMzQyZmNm
N2M2ODg3NzAzYjUzZDBlZTYzMzQwM2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtMjU2LDIwICsyNTYsMjAgQEAgdm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRz
UHJvY2Vzc2luZygKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3JlOjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzPiYmIG9yaWdpbnMpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFJlc291cmNl
TG9hZFN0YXRpc3RpY3M+JiYgc3RhdGlzdGljcykKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwogCiAgICAgLy8gSXQgaXMgc2FmZSB0byBtb3ZlIHRoZSBvcmlnaW5zIHRvIHRoZSBi
YWNrZ3JvdW5kIHF1ZXVlIHdpdGhvdXQgaXNvbGF0ZWQgY29weSBoZXJlIGJlY2F1c2UgdGhpcyBp
cyBhbiByLXZhbHVlCiAgICAgLy8gY29taW5nIGZyb20gSVBDLiBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzIG9ubHkgY29udGFpbnMgc3RyaW5ncyB3aGljaCBhcmUgc2FmZSB0byBtb3ZlIHRvIG90aGVy
IHRocmVhZHMgYXMgbG9uZwogICAgIC8vIGFzIG5vYm9keSBvbiB0aGlzIHRocmVhZCBob2xkcyBh
IHJlZmVyZW5jZSB0byB0aG9zZSBzdHJpbmdzLgotICAgIHBvc3RUYXNrKFt0aGlzLCBvcmlnaW5z
ID0gV1RGTW92ZShvcmlnaW5zKV0oKSBtdXRhYmxlIHsKKyAgICBwb3N0VGFzayhbdGhpcywgc3Rh
dGlzdGljcyA9IFdURk1vdmUoc3RhdGlzdGljcyldKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICgh
bV9zdGF0aXN0aWNzU3RvcmUgfHwgIWlzPFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9y
ZT4oKm1fc3RhdGlzdGljc1N0b3JlKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBh
dXRvJiBtZW1vcnlTdG9yZSA9IGRvd25jYXN0PFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlT
dG9yZT4oKm1fc3RhdGlzdGljc1N0b3JlKTsKICAgICAKLSAgICAgICAgbWVtb3J5U3RvcmUubWVy
Z2VTdGF0aXN0aWNzKFdURk1vdmUob3JpZ2lucykpOworICAgICAgICBtZW1vcnlTdG9yZS5tZXJn
ZVN0YXRpc3RpY3MoV1RGTW92ZShzdGF0aXN0aWNzKSk7CiAKICAgICAgICAgLy8gV2UgY2FuIGNh
bmNlbCBhbnkgcGVuZGluZyByZXF1ZXN0IHRvIHByb2Nlc3Mgc3RhdGlzdGljcyBzaW5jZSB3ZSdy
ZSBkb2luZyBpdCBzeW5jaHJvbm91c2x5IGJlbG93LgogICAgICAgICBtZW1vcnlTdG9yZS5jYW5j
ZWxQZW5kaW5nU3RhdGlzdGljc1Byb2Nlc3NpbmdSZXF1ZXN0KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggOTM1MDVhYjVhZjg0N2RkZDY2ZWJh
NThmYjc2MjcxY2U3MjVjZDVmOS4uMmM3ZDM3OGIwNDNjOTVlMTY1NTg3ZTY2YTVmNzQzZTBmODky
NjZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApA
QCAtMTg2LDcgKzE4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNlbmREaWFnbm9zdGljTWVzc2Fn
ZVdpdGhWYWx1ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRp
b24sIHVuc2lnbmVkIHZhbHVlLCB1bnNpZ25lZCBzaWdEaWdpdHMsIFdlYkNvcmU6OlNob3VsZFNh
bXBsZSkgY29uc3Q7CiAgICAgdm9pZCBub3RpZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlz
aGVkKHVuc2lnbmVkIHRvdGFsUHJldmFsZW50UmVzb3VyY2VzLCB1bnNpZ25lZCB0b3RhbFByZXZh
bGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcDNTdWJmcmFtZVVu
ZGVyVG9wRnJhbWVPcmlnaW5zKSBjb25zdDsKIAotICAgIHZvaWQgcmVzb3VyY2VMb2FkU3RhdGlz
dGljc1VwZGF0ZWQoVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYpOworICAgIHZvaWQg
cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3M+JiYpOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5l
cihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
b3BlbmVySUQsIE9wZW5lckRvbWFpbiYmKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAKaW5kZXggODYzN2QyZjRiNmFhZDRlYzBhNTYxNDI3MGYxM2RlYjI5ZDUyMGQxMi4u
MThiNjRmMTZiZWZkYzk3YmJlOGMxMTE3ZDVjN2M0NDczZGNhNjk3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAKQEAgLTY5MSwxMyArNjkxLDExIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYKICAgICB9CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlc291
cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpQZXJTZXNz
aW9uUmVzb3VyY2VMb2FkRGF0YSYmIHN0YXRpc3RpY3MpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcz4mJiBzdGF0aXN0aWNzKQogewotICAgIGZvciAoYXV0byYgaXRlciA6
IHN0YXRpc3RpY3MpIHsKLSAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gbmV0d29y
a1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihpdGVyLmZpcnN0KSkgewotICAgICAgICAgICAgaWYg
KGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VM
b2FkU3RhdGlzdGljcygpKQotICAgICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mt
PnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFdURk1vdmUoaXRlci5zZWNvbmQpKTsKLSAg
ICAgICAgfQorICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNz
aW9uKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3
b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgICAgICAgICAgcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoV1RGTW92ZShz
dGF0aXN0aWNzKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggNjcx
MDIxNmE4N2Y1ZWU4NTA2NTQ5NzQwZGU3Mzg5NDE3MzIxZjQxMy4uN2NmZDgzZDUyMWM5YmU5M2Y0
MDMxZGM3NjcxZGZmY2MwYTRlZTBiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMjQw
LDcgKzI0MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKIAogICAgIHZv
aWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7Ci0gICAgdm9p
ZCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
UGVyU2Vzc2lvblJlc291cmNlTG9hZERhdGEmJik7CisgICAgdm9pZCByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik7
CiAgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJG
cmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdl
QWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNz
VW5kZXJPcGVuZXIoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0
b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggOTIwNWJiZjE5ZWNiOTBiMmU4ODQ4NDYwNzFj
MmQ3MDg3ODE2OTk2MC4uMmFkMzEzYWI4MjRkNTFkYWNiNjgyOWUzZDliMTVlMGI3NzVjYTNkOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC01OSwxMCAr
NTksNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lS
ZWNlaXZlciB7CiAgICAgUmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpOwogICAg
IENsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgcGFnZUlEKTsKICAgICBMb2dVc2VySW50ZXJhY3Rpb24oV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gZG9tYWluKQotICAgIAotICAgICMgRklYTUU6IFN0b3AgcGFzc2lu
ZyBzZXNzaW9uSURzLgotICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3Rvcjxz
dGQ6OnBhaXI8UEFMOjpTZXNzaW9uSUQsIFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzPj4+IHN0YXRpc3RpY3MpCi0KKyAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRl
ZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gc3RhdGlzdGljcykKICAg
ICBIYXNTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9t
YWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkg
LT4gKGJvb2wgaGFzU3RvcmFnZUFjY2VzcykgQXN5bmMKICAgICBSZXF1ZXN0U3RvcmFnZUFjY2Vz
cyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIFdlYktpdDo6V2ViUGFn
ZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCkgLT4gKGVudW06Ym9vbCBXZWJDb3JlOjpT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBlbnVtOmJvb2wgV2ViQ29yZTo6U3Rv
cmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duKSBBc3luYwogICAgIFJlcXVl
c3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9t
YWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvcGVuZXJQ
YWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG9wZW5lckRvbWFpbikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxv
YWRPYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCmluZGV4IGUxYjRiOWViM2YzODRmNWY1ZmYyOTEz
MWE5M2M4ZmQ2ZGYwYzA2NTEuLjYwYjUyZWI3ZTk3NTdlODc1YjlkNTVkMTBiNDdkNjFmMjQ5N2Jm
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcApAQCAtNDksMTcgKzQ5
LDEyIEBAIHN0YXRpYyBib29sIGlzM3h4UmVkaXJlY3QoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCiAgICAgcmV0dXJuIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPj0gMzAwICYm
IHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPD0gMzk5OwogfQogCi1zdGF0aWMgYm9vbCBzaG91
bGRMb2dSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKLXsK
LSAgICByZXR1cm4gRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpyZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZCgpICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKTsKLX0KLQogV2ViUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI6OldlYlJlc291cmNlTG9hZE9ic2VydmVyKCkKICAgICA6IG1fbm90aWZp
Y2F0aW9uVGltZXIoKnRoaXMsICZXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6dXBkYXRlQ2VudHJh
bFN0YXRpc3RpY3NTdG9yZSkKIHsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZp
ZXIgb3BlbmVyUGFnZUlELCBEb2N1bWVudCYgb3BlbmVyRG9jdW1lbnQpCit2b2lkIFdlYlJlc291
cmNlTG9hZE9ic2VydmVyOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVudGlm
aWVyIG9wZW5lclBhZ2VJRCwgRG9jdW1lbnQmIG9wZW5lckRvY3VtZW50KQogewogICAgIGF1dG8g
b3BlbmVyVXJsID0gb3BlbmVyRG9jdW1lbnQudXJsKCk7CiAgICAgUmVnaXN0cmFibGVEb21haW4g
b3BlbmVyRG9tYWluIHsgb3BlbmVyVXJsIH07CkBAIC03MywyMSArNjgsMTYgQEAgdm9pZCBXZWJS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6
OlNlc3Npb25JRCwgY28KICAgICB9CiB9CiAgICAgCi1SZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBX
ZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0
cmFibGVEb21haW4oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgZG9tYWluKQorUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgV2ViUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCiB7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3Bl
clNlc3Npb25SZXNvdXJjZVN0YXRpc3RpY3NNYXAuZW5zdXJlKHNlc3Npb25JRCwgW10gewotICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzPj4oKTsKLSAgICB9KTsKLQotICAgIGF1dG8gYWRkRG9tYWluUmVzdWx0
ID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+ZW5zdXJlKGRvbWFpbiwgWyZkb21haW5dIHsK
KyAgICByZXR1cm4gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZW5zdXJlKGRvbWFpbiwgWyZkb21h
aW5dIHsKICAgICAgICAgcmV0dXJuIFJlc291cmNlTG9hZFN0YXRpc3RpY3MoZG9tYWluKTsKLSAg
ICB9KTsKLSAgICByZXR1cm4gYWRkRG9tYWluUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICB9
KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNj
aGVkdWxlTm90aWZpY2F0aW9uSWZOZWVkZWQoKQogewotICAgIGlmIChtX3BlclNlc3Npb25SZXNv
dXJjZVN0YXRpc3RpY3NNYXAuaXNFbXB0eSgpKSB7CisgICAgaWYgKG1fcmVzb3VyY2VTdGF0aXN0
aWNzTWFwLmlzRW1wdHkoKSkgewogICAgICAgICBtX25vdGlmaWNhdGlvblRpbWVyLnN0b3AoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEwMiw1MiArOTIsMzcgQEAgdm9pZCBXZWJSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6dXBkYXRlQ2VudHJhbFN0YXRpc3RpY3NTdG9yZSgpCiAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZCh0YWtlU3RhdGlzdGljcygpKSwgMCk7CiB9CiAK
LVN0cmluZyBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c3RhdGlzdGljc0ZvclVSTChQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsKQorU3RyaW5nIFdlYlJlc291cmNlTG9h
ZE9ic2VydmVyOjpzdGF0aXN0aWNzRm9yVVJMKGNvbnN0IFVSTCYgdXJsKQogewotICAgIGF1dG8q
IHJlc291cmNlU3RhdGlzdGljc0J5RG9tYWluID0gbV9wZXJTZXNzaW9uUmVzb3VyY2VTdGF0aXN0
aWNzTWFwLmdldChzZXNzaW9uSUQpOwotICAgIGlmICghcmVzb3VyY2VTdGF0aXN0aWNzQnlEb21h
aW4pCi0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotCi0gICAgYXV0byBpdGVyID0gcmVz
b3VyY2VTdGF0aXN0aWNzQnlEb21haW4tPmZpbmQoUmVnaXN0cmFibGVEb21haW4geyB1cmwgfSk7
Ci0gICAgaWYgKGl0ZXIgPT0gcmVzb3VyY2VTdGF0aXN0aWNzQnlEb21haW4tPmVuZCgpKQorICAg
IGF1dG8gaXRlciA9IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmZpbmQoUmVnaXN0cmFibGVEb21h
aW4geyB1cmwgfSk7CisgICAgaWYgKGl0ZXIgPT0gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZW5k
KCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgcmV0dXJuIG1ha2VTdHJp
bmcoIlN0YXRpc3RpY3MgZm9yICIsIHVybC5ob3N0KCkudG9TdHJpbmcoKSwgIjpcbiIsIGl0ZXIt
PnZhbHVlLnRvU3RyaW5nKCkpOwogfQogCi1hdXRvIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjp0
YWtlU3RhdGlzdGljcygpIC0+IFBlclNlc3Npb25SZXNvdXJjZUxvYWREYXRhCitWZWN0b3I8UmVz
b3VyY2VMb2FkU3RhdGlzdGljcz4gV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnRha2VTdGF0aXN0
aWNzKCkKIHsKLSAgICBQZXJTZXNzaW9uUmVzb3VyY2VMb2FkRGF0YSBwZXJTZXNzaW9uU3RhdGlz
dGljczsKLQotICAgIGZvciAoYXV0byYgaXRlciA6IG1fcGVyU2Vzc2lvblJlc291cmNlU3RhdGlz
dGljc01hcCkgewotICAgICAgICBWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gc3RhdGlz
dGljczsKLSAgICAgICAgc3RhdGlzdGljcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGl0ZXIudmFs
dWUtPnNpemUoKSk7Ci0KLSAgICAgICAgZm9yIChhdXRvJiBzdGF0aXN0aWMgOiBpdGVyLnZhbHVl
LT52YWx1ZXMoKSkKLSAgICAgICAgICAgIHN0YXRpc3RpY3MudW5jaGVja2VkQXBwZW5kKFdURk1v
dmUoc3RhdGlzdGljKSk7Ci0KLSAgICAgICAgcGVyU2Vzc2lvblN0YXRpc3RpY3MuYXBwZW5kKHN0
ZDo6bWFrZV9wYWlyKGl0ZXIua2V5LCBXVEZNb3ZlKHN0YXRpc3RpY3MpKSk7Ci0gICAgfQotICAg
IAotICAgIG1fcGVyU2Vzc2lvblJlc291cmNlU3RhdGlzdGljc01hcC5jbGVhcigpOwotICAgIHJl
dHVybiBwZXJTZXNzaW9uU3RhdGlzdGljczsKKyAgICBWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlz
dGljcz4gc3RhdGlzdGljczsKKyAgICBzdGF0aXN0aWNzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
bV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIHN0YXRpc3Rp
YyA6IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnZhbHVlcygpKQorICAgICAgICBzdGF0aXN0aWNz
LnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKHN0YXRpc3RpYykpOworICAgIG1fcmVzb3VyY2VTdGF0
aXN0aWNzTWFwLmNsZWFyKCk7CisgICAgcmV0dXJuIHN0YXRpc3RpY3M7CiB9CiAKIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmNsZWFyU3RhdGUoKQogewogICAgIG1fbm90aWZpY2F0aW9u
VGltZXIuc3RvcCgpOwotICAgIG1fcGVyU2Vzc2lvblJlc291cmNlU3RhdGlzdGljc01hcC5jbGVh
cigpOworICAgIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmNsZWFyKCk7CiAgICAgbV9sYXN0UmVw
b3J0ZWRVc2VySW50ZXJhY3Rpb25NYXAuY2xlYXIoKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6bG9nRm9udExvYWQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBT
dHJpbmcmIGZhbWlseU5hbWUsIGJvb2wgbG9hZFN0YXR1cykKIHsKICNpZiBFTkFCTEUoV0VCX0FQ
SV9TVEFUSVNUSUNTKQotICAgIGlmICghc2hvdWxkTG9nUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhk
b2N1bWVudC5zZXNzaW9uSUQoKSkpCi0gICAgICAgIHJldHVybjsKLQogICAgIFJlZ2lzdHJhYmxl
RG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluIHsgZG9jdW1lbnQudXJsKCkgfTsKLSAgICBhdXRvJiBz
dGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4o
ZG9jdW1lbnQuc2Vzc2lvbklELCByZWdpc3RyYWJsZURvbWFpbik7CisgICAgYXV0byYgc3RhdGlz
dGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lz
dHJhYmxlRG9tYWluKTsKICAgICBib29sIHNob3VsZENhbGxOb3RpZmljYXRpb25DYWxsYmFjayA9
IGZhbHNlOwogICAgIGlmICghbG9hZFN0YXR1cykgewogICAgICAgICBpZiAoc3RhdGlzdGljcy5m
b250c0ZhaWxlZFRvTG9hZC5hZGQoZmFtaWx5TmFtZSkuaXNOZXdFbnRyeSkKQEAgLTE3MSwxMSAr
MTQ2LDggQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nRm9udExvYWQoY29uc3Qg
RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcKIHZvaWQgV2ViUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OmxvZ0NhbnZhc1JlYWQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogewogI2lmIEVO
QUJMRShXRUJfQVBJX1NUQVRJU1RJQ1MpCi0gICAgaWYgKCFzaG91bGRMb2dSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKGRvY3VtZW50LnNlc3Npb25JRCgpKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAg
UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4geyBkb2N1bWVudC51cmwoKSB9Owot
ICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3Ry
YWJsZURvbWFpbihkb2N1bWVudC5zZXNzaW9uSUQoKSwgcmVnaXN0cmFibGVEb21haW4pOworICAg
IGF1dG8mIHN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJs
ZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbik7CiAgICAgUmVnaXN0cmFibGVEb21haW4gbWFpbkZy
YW1lUmVnaXN0cmFibGVEb21haW4geyBkb2N1bWVudC50b3BEb2N1bWVudCgpLnVybCgpIH07CiAg
ICAgc3RhdGlzdGljcy5jYW52YXNBY3Rpdml0eVJlY29yZC53YXNEYXRhUmVhZCA9IHRydWU7CiAg
ICAgaWYgKHN0YXRpc3RpY3MudG9wRnJhbWVSZWdpc3RyYWJsZURvbWFpbnNXaGljaEFjY2Vzc2Vk
V2ViQVBJcy5hZGQobWFpbkZyYW1lUmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCkpLmlzTmV3RW50
cnkpCkBAIC0xODgsMTEgKzE2MCw4IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6Omxv
Z0NhbnZhc1JlYWQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogdm9pZCBXZWJSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6bG9nQ2FudmFzV3JpdGVPck1lYXN1cmUoY29uc3QgRG9jdW1lbnQmIGRvY3Vt
ZW50LCBjb25zdCBTdHJpbmcmIHRleHRXcml0dGVuKQogewogI2lmIEVOQUJMRShXRUJfQVBJX1NU
QVRJU1RJQ1MpCi0gICAgaWYgKCFzaG91bGRMb2dSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKGRvY3Vt
ZW50LnNlc3Npb25JRCgpKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgUmVnaXN0cmFibGVEb21h
aW4gcmVnaXN0cmFibGVEb21haW4geyBkb2N1bWVudC51cmwoKSB9OwotICAgIGF1dG8mIHN0YXRp
c3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihkb2N1
bWVudC5zZXNzaW9uSUQsIHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBhdXRvJiBzdGF0aXN0aWNz
ID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFi
bGVEb21haW4pOwogICAgIGJvb2wgc2hvdWxkQ2FsbE5vdGlmaWNhdGlvbkNhbGxiYWNrID0gZmFs
c2U7CiAgICAgUmVnaXN0cmFibGVEb21haW4gbWFpbkZyYW1lUmVnaXN0cmFibGVEb21haW4geyBk
b2N1bWVudC50b3BEb2N1bWVudCgpLnVybCgpIH07CiAgICAgaWYgKHN0YXRpc3RpY3MuY2FudmFz
QWN0aXZpdHlSZWNvcmQucmVjb3JkV3JpdHRlbk9yTWVhc3VyZWRUZXh0KHRleHRXcml0dGVuKSkK
QEAgLTIxMCwxMSArMTc5LDggQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nQ2Fu
dmFzV3JpdGVPck1lYXN1cmUoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LAogdm9pZCBXZWJSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6bG9nTmF2aWdhdG9yQVBJQWNjZXNzZWQoY29uc3QgRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpOYXZpZ2F0b3JBUEkgZnVu
Y3Rpb25OYW1lKQogewogI2lmIEVOQUJMRShXRUJfQVBJX1NUQVRJU1RJQ1MpCi0gICAgaWYgKCFz
aG91bGRMb2dSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKGRvY3VtZW50LnNlc3Npb25JRCgpKSkKLSAg
ICAgICAgcmV0dXJuOwotCiAgICAgUmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4g
eyBkb2N1bWVudC51cmwoKSB9OwotICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJj
ZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihkb2N1bWVudC5zZXNzaW9uSUQsIHJlZ2lz
dHJhYmxlRG9tYWluKTsKKyAgICBhdXRvJiBzdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0
aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pOwogICAgIGJvb2wg
c2hvdWxkQ2FsbE5vdGlmaWNhdGlvbkNhbGxiYWNrID0gZmFsc2U7CiAgICAgaWYgKCFzdGF0aXN0
aWNzLm5hdmlnYXRvckZ1bmN0aW9uc0FjY2Vzc2VkLmNvbnRhaW5zKGZ1bmN0aW9uTmFtZSkpIHsK
ICAgICAgICAgc3RhdGlzdGljcy5uYXZpZ2F0b3JGdW5jdGlvbnNBY2Nlc3NlZC5hZGQoZnVuY3Rp
b25OYW1lKTsKQEAgLTIzNCwxMSArMjAwLDggQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6bG9nTmF2aWdhdG9yQVBJQWNjZXNzZWQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LAogdm9p
ZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nU2NyZWVuQVBJQWNjZXNzZWQoY29uc3QgRG9j
dW1lbnQmIGRvY3VtZW50LCBjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpTY3JlZW5BUEkg
ZnVuY3Rpb25OYW1lKQogewogI2lmIEVOQUJMRShXRUJfQVBJX1NUQVRJU1RJQ1MpCi0gICAgaWYg
KCFzaG91bGRMb2dSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKGRvY3VtZW50LnNlc3Npb25JRCgpKSkK
LSAgICAgICAgcmV0dXJuOwotCiAgICAgUmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21h
aW4geyBkb2N1bWVudC51cmwoKSB9OwotICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBlbnN1cmVSZXNv
dXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihkb2N1bWVudC5zZXNzaW9uSUQsIHJl
Z2lzdHJhYmxlRG9tYWluKTsKKyAgICBhdXRvJiBzdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VT
dGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pOwogICAgIGJv
b2wgc2hvdWxkQ2FsbE5vdGlmaWNhdGlvbkNhbGxiYWNrID0gZmFsc2U7CiAgICAgaWYgKCFzdGF0
aXN0aWNzLnNjcmVlbkZ1bmN0aW9uc0FjY2Vzc2VkLmNvbnRhaW5zKGZ1bmN0aW9uTmFtZSkpIHsK
ICAgICAgICAgc3RhdGlzdGljcy5zY3JlZW5GdW5jdGlvbnNBY2Nlc3NlZC5hZGQoZnVuY3Rpb25O
YW1lKTsKQEAgLTI2Myw3ICsyMjYsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjps
b2dTdWJyZXNvdXJjZUxvYWRpbmcoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZQogICAgICAg
ICByZXR1cm47CiAKICAgICBhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKLSAgICBpZiAoIXBh
Z2UgfHwgIXNob3VsZExvZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3MocGFnZS0+c2Vzc2lvbklEKCkp
KQorICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYm9vbCBpc1JlZGlyZWN0
ID0gaXMzeHhSZWRpcmVjdChyZWRpcmVjdFJlc3BvbnNlKTsKQEAgLTI4NSw3ICsyNDgsNyBAQCB2
b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dTdWJyZXNvdXJjZUxvYWRpbmcoY29uc3Qg
RnJhbWUqIGZyYW1lLCBjb25zdCBSZQogICAgICAgICByZXR1cm47CiAKICAgICB7Ci0gICAgICAg
IGF1dG8mIHRhcmdldFN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdp
c3RyYWJsZURvbWFpbihwYWdlLT5zZXNzaW9uSUQoKSwgdGFyZ2V0RG9tYWluKTsKKyAgICAgICAg
YXV0byYgdGFyZ2V0U3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lz
dHJhYmxlRG9tYWluKHRhcmdldERvbWFpbik7CiAgICAgICAgIGF1dG8gbGFzdFNlZW4gPSBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzOjpyZWR1Y2VUaW1lUmVzb2x1dGlvbihXYWxsVGltZTo6bm93KCkp
OwogICAgICAgICB0YXJnZXRTdGF0aXN0aWNzLmxhc3RTZWVuID0gbGFzdFNlZW47CiAgICAgICAg
IHRhcmdldFN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucy5hZGQodG9w
RnJhbWVEb21haW4pOwpAQCAtMjk0LDIwICsyNTcsMTcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6bG9nU3VicmVzb3VyY2VMb2FkaW5nKGNvbnN0IEZyYW1lKiBmcmFtZSwgY29uc3Qg
UmUKICAgICB9CiAKICAgICBpZiAoaXNSZWRpcmVjdCkgewotICAgICAgICBhdXRvJiByZWRpcmVj
dGluZ09yaWdpblN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3Ry
YWJsZURvbWFpbihwYWdlLT5zZXNzaW9uSUQoKSwgcmVkaXJlY3RlZEZyb21Eb21haW4pOworICAg
ICAgICBhdXRvJiByZWRpcmVjdGluZ09yaWdpblN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0
YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihyZWRpcmVjdGVkRnJvbURvbWFpbik7CiAgICAg
ICAgIHJlZGlyZWN0aW5nT3JpZ2luU3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0
c1RvLmFkZCh0YXJnZXREb21haW4pOwotICAgICAgICBhdXRvJiB0YXJnZXRTdGF0aXN0aWNzID0g
ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4ocGFnZS0+c2Vzc2lv
bklEKCksIHRhcmdldERvbWFpbik7CisgICAgICAgIGF1dG8mIHRhcmdldFN0YXRpc3RpY3MgPSBl
bnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbih0YXJnZXREb21haW4p
OwogICAgICAgICB0YXJnZXRTdGF0aXN0aWNzLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJv
bS5hZGQocmVkaXJlY3RlZEZyb21Eb21haW4pOwogCiAgICAgICAgIHNjaGVkdWxlTm90aWZpY2F0
aW9uSWZOZWVkZWQoKTsKICAgICB9CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OmxvZ1dlYlNvY2tldExvYWRpbmcoY29uc3QgVVJMJiB0YXJnZXRVUkwsIGNvbnN0IFVSTCYgbWFp
bkZyYW1lVVJMLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit2b2lkIFdlYlJlc291cmNlTG9h
ZE9ic2VydmVyOjpsb2dXZWJTb2NrZXRMb2FkaW5nKGNvbnN0IFVSTCYgdGFyZ2V0VVJMLCBjb25z
dCBVUkwmIG1haW5GcmFtZVVSTCkKIHsKLSAgICBpZiAoIXNob3VsZExvZ1Jlc291cmNlTG9hZFN0
YXRpc3RpY3Moc2Vzc2lvbklEKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgYXV0byB0YXJnZXRI
b3N0ID0gdGFyZ2V0VVJMLmhvc3QoKTsKICAgICBhdXRvIG1haW5GcmFtZUhvc3QgPSBtYWluRnJh
bWVVUkwuaG9zdCgpOwogICAgIApAQCAtMzIyLDcgKzI4Miw3IEBAIHZvaWQgV2ViUmVzb3VyY2VM
b2FkT2JzZXJ2ZXI6OmxvZ1dlYlNvY2tldExvYWRpbmcoY29uc3QgVVJMJiB0YXJnZXRVUkwsIGNv
bnN0IFVSCiAKICAgICBhdXRvIGxhc3RTZWVuID0gUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6cmVk
dWNlVGltZVJlc29sdXRpb24oV2FsbFRpbWU6Om5vdygpKTsKIAotICAgIGF1dG8mIHRhcmdldFN0
YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihz
ZXNzaW9uSUQsIHRhcmdldERvbWFpbik7CisgICAgYXV0byYgdGFyZ2V0U3RhdGlzdGljcyA9IGVu
c3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHRhcmdldERvbWFpbik7
CiAgICAgdGFyZ2V0U3RhdGlzdGljcy5sYXN0U2VlbiA9IGxhc3RTZWVuOwogICAgIHRhcmdldFN0
YXRpc3RpY3Muc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucy5hZGQodG9wRnJhbWVEb21h
aW4pOwogCkBAIC0zMzEsOSArMjkxLDYgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
bG9nV2ViU29ja2V0TG9hZGluZyhjb25zdCBVUkwmIHRhcmdldFVSTCwgY29uc3QgVVIKIAogdm9p
ZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nVXNlckludGVyYWN0aW9uV2l0aFJlZHVjZWRU
aW1lUmVzb2x1dGlvbihjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAgaWYgKCFkb2N1
bWVudC5zZXNzaW9uSUQoKS5pc1ZhbGlkKCkgfHwgIXNob3VsZExvZ1Jlc291cmNlTG9hZFN0YXRp
c3RpY3MoZG9jdW1lbnQuc2Vzc2lvbklEKCkpKQotICAgICAgICByZXR1cm47Ci0KICAgICBhdXRv
JiB1cmwgPSBkb2N1bWVudC51cmwoKTsKICAgICBpZiAodXJsLnByb3RvY29sSXNBYm91dCgpIHx8
IHVybC5pc0xvY2FsRmlsZSgpIHx8IHVybC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTM0Niw3ICszMDMsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dVc2VySW50
ZXJhY3Rpb25XaXRoUmVkdWNlZFRpbWVSZXNvbHV0aW9uKGNvbnN0CiAKICAgICBtX2xhc3RSZXBv
cnRlZFVzZXJJbnRlcmFjdGlvbk1hcC5zZXQodG9wRnJhbWVEb21haW4sIG5ld1RpbWUpOwogCi0g
ICAgYXV0byYgc3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJh
YmxlRG9tYWluKGRvY3VtZW50LnNlc3Npb25JRCgpLCB0b3BGcmFtZURvbWFpbik7CisgICAgYXV0
byYgc3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9t
YWluKHRvcEZyYW1lRG9tYWluKTsKICAgICBzdGF0aXN0aWNzLmhhZFVzZXJJbnRlcmFjdGlvbiA9
IHRydWU7CiAgICAgc3RhdGlzdGljcy5sYXN0U2VlbiA9IG5ld1RpbWU7CiAgICAgc3RhdGlzdGlj
cy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSA9IG5ld1RpbWU7CkBAIC0zNTYsNyArMzEz
LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nVXNlckludGVyYWN0aW9uV2l0
aFJlZHVjZWRUaW1lUmVzb2x1dGlvbihjb25zdAogICAgICAgICAgICAgaWYgKGF1dG8qIG9wZW5l
ckRvY3VtZW50ID0gb3BlbmVyLT5kb2N1bWVudCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGF1
dG8qIG9wZW5lckZyYW1lID0gb3BlbmVyRG9jdW1lbnQtPmZyYW1lKCkpIHsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKGF1dG8gb3BlbmVyUGFnZUlEID0gb3BlbmVyRnJhbWUtPmxvYWRlcigpLmNs
aWVudCgpLnBhZ2VJRCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NVbmRlck9wZW5lcihkb2N1bWVudC5zZXNzaW9uSUQoKSwgdG9wRnJhbWVEb21haW4sIG9w
ZW5lclBhZ2VJRC52YWx1ZSgpLCAqb3BlbmVyRG9jdW1lbnQpOworICAgICAgICAgICAgICAgICAg
ICAgICAgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcih0b3BGcmFtZURvbWFpbiwgb3Bl
bmVyUGFnZUlELnZhbHVlKCksICpvcGVuZXJEb2N1bWVudCk7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5o
CmluZGV4IDhhZTI0YjExMjEyMDkzM2Y1ODUzYTJlMWVhOGMwNjNhYjk3NTk1ODguLjZjNmNiNzc3
YmE2OGQ3Y2FmYzg1MDI4NWFmMzRiNjI2MTMwMWMzNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxv
YWRPYnNlcnZlci5oCkBAIC0zNiwxMiArMzYsMTAgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIFdlYlJlc291cmNlTG9hZE9ic2VydmVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlJlc291
cmNlTG9hZE9ic2VydmVyIHsKIHB1YmxpYzoKLSAgICB1c2luZyBQZXJTZXNzaW9uUmVzb3VyY2VM
b2FkRGF0YSA9IFZlY3RvcjxzdGQ6OnBhaXI8UEFMOjpTZXNzaW9uSUQsIFZlY3RvcjxXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPj4+OwotCiAgICAgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIoKTsKICAgICAKICAgICB2b2lkIGxvZ1N1YnJlc291cmNlTG9hZGluZyhjb25zdCBXZWJDb3Jl
OjpGcmFtZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7Ci0g
ICAgdm9pZCBsb2dXZWJTb2NrZXRMb2FkaW5nKGNvbnN0IFVSTCYgdGFyZ2V0VVJMLCBjb25zdCBV
UkwmIG1haW5GcmFtZVVSTCwgUEFMOjpTZXNzaW9uSUQpIGZpbmFsOworICAgIHZvaWQgbG9nV2Vi
U29ja2V0TG9hZGluZyhjb25zdCBVUkwmIHRhcmdldFVSTCwgY29uc3QgVVJMJiBtYWluRnJhbWVV
UkwpIGZpbmFsOwogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uV2l0aFJlZHVjZWRUaW1lUmVz
b2x1dGlvbihjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYpIGZpbmFsOwogICAgIHZvaWQgbG9nRm9u
dExvYWQoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWUs
IGJvb2wgbG9hZFN0YXR1cykgZmluYWw7CiAgICAgdm9pZCBsb2dDYW52YXNSZWFkKGNvbnN0IFdl
YkNvcmU6OkRvY3VtZW50JikgZmluYWw7CkBAIC01MywyMCArNTEsMjAgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0U2hvdWxkTG9nVXNlckludGVyYWN0aW9uKGJvb2wgc2hvdWxkTG9nVXNlckludGVy
YWN0aW9uKSBmaW5hbCB7IG1fc2hvdWxkTG9nVXNlckludGVyYWN0aW9uID0gc2hvdWxkTG9nVXNl
ckludGVyYWN0aW9uOyB9CiAjZW5kaWYKIAotICAgIFN0cmluZyBzdGF0aXN0aWNzRm9yVVJMKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBVUkwmKSBmaW5hbDsKKyAgICBTdHJpbmcgc3RhdGlzdGljc0Zv
clVSTChjb25zdCBVUkwmKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUNlbnRyYWxTdGF0aXN0aWNz
U3RvcmUoKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyU3RhdGUoKSBmaW5hbDsKICAgICAKLSAgICBi
b29sIGhhc1N0YXRpc3RpY3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9wZXJTZXNzaW9uUmVz
b3VyY2VTdGF0aXN0aWNzTWFwLmlzRW1wdHkoKTsgfQorICAgIGJvb2wgaGFzU3RhdGlzdGljcygp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuICFtX3Jlc291cmNlU3RhdGlzdGljc01hcC5pc0VtcHR5KCk7
IH0KIAogcHJpdmF0ZToKLSAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBlbnN1
cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihQQUw6OlNlc3Npb25JRCwg
Y29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsKKyAgICBXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzJiBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURv
bWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOwogICAgIHZvaWQgc2NoZWR1
bGVOb3RpZmljYXRpb25JZk5lZWRlZCgpOwogCi0gICAgUGVyU2Vzc2lvblJlc291cmNlTG9hZERh
dGEgdGFrZVN0YXRpc3RpY3MoKTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJP
cGVuZXIoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBk
b21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5l
clBhZ2VJRCwgV2ViQ29yZTo6RG9jdW1lbnQmIG9wZW5lckRvY3VtZW50KTsKKyAgICBWZWN0b3I8
V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gdGFrZVN0YXRpc3RpY3MoKTsKKyAgICB2
b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgb3BlbmVyUGFnZUlELCBXZWJDb3JlOjpEb2N1bWVudCYgb3BlbmVyRG9jdW1lbnQp
OwogCi0gICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgc3RkOjp1bmlxdWVfcHRyPEhhc2hNYXA8
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3M+Pj4gbV9wZXJTZXNzaW9uUmVzb3VyY2VTdGF0aXN0aWNzTWFwOworICAgIEhhc2hNYXA8V2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4sIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+
IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwOwogICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4sIFdURjo6V2FsbFRpbWU+IG1fbGFzdFJlcG9ydGVkVXNlckludGVyYWN0aW9uTWFw
OwogCiAgICAgV2ViQ29yZTo6VGltZXIgbV9ub3RpZmljYXRpb25UaW1lcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBhMGYwMTliNzJmNTU4MWUzOTY5YTA1NDBi
YTYyN2I1ODFiZmUwM2UyLi5hM2Y4OWFkNTg2YjA1MjI2ODdlZWViOWQ4NGEyY2Y1ZDQ3NjkzMjBl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0yMTUsMTAgKzIx
NSw2IEBAIFdlYlByb2Nlc3M6OldlYlByb2Nlc3MoKQogI2VuZGlmCiAKICAgICBtX3BsdWdJbkF1
dG9TdGFydE9yaWdpbkhhc2hlcy5hZGQoUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQo
KSwgSGFzaE1hcDx1bnNpZ25lZCwgV2FsbFRpbWU+KCkpOwotCi0jaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKLSAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0U2hhcmVkKCpu
ZXcgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIpOwotI2VuZGlmCiAgICAgCiAgICAgR2lnYWNhZ2U6
OmZvcmJpZERpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlKCk7CiB9CkBAIC00NTYsNiArNDUyLDEx
IEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMoV2ViUHJv
Y2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMmJiBwCiAKICAgICBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZChwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKTsKIAor
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgaWYgKHBhcmFtZXRlcnMu
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgJiYgIXBhcmFtZXRlcnMuc2Vzc2lvbklELmlz
RXBoZW1lcmFsKCkpCisgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTaGFyZWQoKm5l
dyBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcik7CisjZW5kaWYKKwogICAgIGZvciAoYXV0byYgc3Vw
cGxlbWVudCA6IG1fc3VwcGxlbWVudHMudmFsdWVzKCkpCiAgICAgICAgIHN1cHBsZW1lbnQtPnNl
dFdlYnNpdGVEYXRhU3RvcmUocGFyYW1ldGVycyk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378881</attachid>
            <date>2019-09-16 12:53:40 -0700</date>
            <delta_ts>2019-09-16 13:06:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201821-20190916125315.patch</filename>
            <type>text/plain</type>
            <size>34300</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5OTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODg2YjhiNzRlYjA1OWMy
OGM5ZWQ0NDBkMTc4OTlhOWM4ZTU4OTdmYy4uM2ZiYmU1YzQ4ZGU0MGVkOTViNmI4MTYxOTg5OTQz
MjY4ZTRkZTk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE5LTA5LTE2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgV2ViUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXIgbm93IHRoYXQgd2UgaGF2ZSBvbmUgV2ViUHJvY2VzcyBwZXIgc2Vzc2lv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxODIx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKworICAgICAgICAqIE1vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
Ojpjb25uZWN0KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dXZWJTb2NrZXRMb2FkaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpzdGF0aXN0aWNzRm9y
VVJMKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NGb3JVUkwpOgorCiAyMDE5LTA5LTE2
ICBKb24gRGF2aXMgIDxqb25kQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgZmVhdHVyZSBz
dGF0dXMgZm9yIEJhdHRlcnkgU3RhdHVzIEFQSSwgV2ViR0wgMiwgYW5kIERpYWxvZyBFbGVtZW50
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IGFkNDk1OWJiZjJlMTM5YmM4ZjgyNmUwOWUwMzJmODk2ZWEyMTVkOTMuLjVm
OTA2NGI5M2RiMDU5MzI1MGZmNzRlNTJlMzVlZGVmYWFmNTJhZWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDEgQEAKKzIwMTktMDktMTYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwor
ICAgICAgICBTaW1wbGlmeSBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlciBub3cgdGhhdCB3ZSBoYXZl
IG9uZSBXZWJQcm9jZXNzIHBlciBzZXNzaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE4MjEKKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBG
dWxnaGFtLgorCisgICAgICAgIFNpbXBsaWZ5IFdlYlJlc291cmNlTG9hZE9ic2VydmVyIG5vdyB0
aGF0IHdlIGhhdmUgb25lIFdlYlByb2Nlc3MgcGVyIHNlc3Npb24uCisgICAgICAgIE5vIG5lZWQg
dG8gcGFzcyBzZXNzaW9uSURzIGFyb3VuZCBvciBzdG9yZSBzdGF0aXN0aWNzIHBlciBzZXNzaW9u
SUQuCisgICAgICAgIEFsc28sIG9ubHkgaW5pdGlhbGl6ZSB0aGUgV2ViUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXIgaWYgYm90aCBJVFAgaXMgZW5hYmxlZCBhbmQKKyAgICAgICAgd2UncmUgbm90IGluIGEg
V2ViQ29udGVudCBwcm9jZXNzIHVzZWQgZm9yIGFuIGVwaGVtZXJhbCBzZXNzaW9uLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlc291cmNlTG9h
ZFN0YXRpc3RpY3NVcGRhdGVkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lcik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjplbnN1cmVS
ZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzY2hlZHVsZU5vdGlmaWNhdGlvbklmTmVlZGVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnN0YXRpc3RpY3NGb3JV
UkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6dGFrZVN0YXRp
c3RpY3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6Y2xlYXJT
dGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dGb250
TG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dDYW52
YXNSZWFkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ0Nh
bnZhc1dyaXRlT3JNZWFzdXJlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OmxvZ05hdmlnYXRvckFQSUFjY2Vzc2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1NjcmVlbkFQSUFjY2Vzc2VkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1N1YnJlc291cmNlTG9hZGluZyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dXZWJTb2NrZXRMb2FkaW5n
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1VzZXJJbnRl
cmFjdGlvbldpdGhSZWR1Y2VkVGltZVJlc29sdXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZXRX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyk6CisKIDIwMTktMDktMTYgIERhdmlkIEtpbHplciAg
PGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjQzMTEzKTogTGVh
ayBvZiBtdWx0aXBsZSBpbnN0YW5jZSB2YXJpYWJsZSBibG9ja3Mgd2hlbiBkZWFsbG9jYXRpbmcg
X1dLQXR0cmlidXRlZFN0cmluZ05hdmlnYXRpb25EZWxlZ2F0ZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAppbmRleCBkNzRlNmQ5MTkwMjNiZmIw
OTc0MDhhNDg3NmU3NjRmMzA1OGQ3NDI0Li45OTI5NjNlYjU5YzNiMDc1YmZlNTcxYmQ2M2E5NDBj
NzEwZjRlZWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmNwcApAQCAtMjk4LDggKzI5OCw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYlNvY2tl
dDo6Y29ubmVjdChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHByCiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RhcmdldFVS
TCA9IG1fdXJsLmlzb2xhdGVkQ29weSgpLCBtYWluRnJhbWVVUkwgPSBjb250ZXh0LnVybCgpLmlz
b2xhdGVkQ29weSgpLCBzZXNzaW9uSUQgPSBjb250ZXh0LnNlc3Npb25JRCgpXSgpIHsKLSAgICAg
ICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxvZ1dlYlNvY2tldExvYWRpbmcodGFy
Z2V0VVJMLCBtYWluRnJhbWVVUkwsIHNlc3Npb25JRCk7CisgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFt0YXJnZXRVUkwgPSBtX3VybC5pc29sYXRlZENvcHkoKSwgbWFpbkZyYW1lVVJMID0g
Y29udGV4dC51cmwoKS5pc29sYXRlZENvcHkoKV0oKSB7CisgICAgICAgIFJlc291cmNlTG9hZE9i
c2VydmVyOjpzaGFyZWQoKS5sb2dXZWJTb2NrZXRMb2FkaW5nKHRhcmdldFVSTCwgbWFpbkZyYW1l
VVJMKTsKICAgICB9KTsKIAogICAgIGlmIChpczxEb2N1bWVudD4oY29udGV4dCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCmluZGV4IGJlZDdj
YTQyODE4YzhmNTRkMjBhYmI4ZGMwMmNhYTQwYTE5Yjk4MTAuLjg4NzkwZGY1YTYyZjFmOGUwZWYy
MDNkMWU2ODc1NzgyNTMxZGU5YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZE9ic2VydmVyLmNwcApAQCAtNDIsOSArNDIsMTQgQEAgdm9pZCBSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6c2V0U2hhcmVkKFJlc291cmNlTG9hZE9ic2VydmVyJiBvYnNlcnZlcikKIAogUmVz
b3VyY2VMb2FkT2JzZXJ2ZXImIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKQogewotICAg
IGlmICghc2hhcmVkT2JzZXJ2ZXIoKSkKKyAgICBpZiAoIXNoYXJlZE9ic2VydmVyKCkKICAgICAg
ICAgc2hhcmVkT2JzZXJ2ZXIoKSA9IG5ldyBSZXNvdXJjZUxvYWRPYnNlcnZlcjsKICAgICByZXR1
cm4gKnNoYXJlZE9ic2VydmVyKCk7CiB9CiAKK1Jlc291cmNlTG9hZE9ic2VydmVyKiBSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6c2hhcmVkSWZFeGlzdHMoKQoreworICAgIHJldHVybiBzaGFyZWRPYnNl
cnZlcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCmluZGV4IGRkZTI0NGQyNDgxNTdiMTdjYTBiN2M0
ZTk0YzIzZjBmMmEyYzJmOGQuLmU3NGQ1ZjY2ZmFkMWU3OTcyYmVlYTE5ODY4OGViZmU3MmRiYjQy
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCkBA
IC0yNiw3ICsyNiw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0
YXRpc3RpY3MuaCIKLSNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDAsMTIgKzM5LDEzIEBAIGNsYXNz
IFJlc291cmNlTG9hZE9ic2VydmVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVzb3VyY2VMb2FkT2JzZXJ2ZXImIHNo
YXJlZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZXNvdXJjZUxvYWRPYnNlcnZlciog
c2hhcmVkSWZFeGlzdHMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRTaGFy
ZWQoUmVzb3VyY2VMb2FkT2JzZXJ2ZXImKTsKICAgICAKICAgICB2aXJ0dWFsIH5SZXNvdXJjZUxv
YWRPYnNlcnZlcigpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGxvZ1N1YnJlc291cmNlTG9hZGlu
Zyhjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgLyogbmV3UmVxdWVzdCAqLywg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgLyogcmVkaXJlY3RSZXNwb25zZSAqLykgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIGxvZ1dlYlNvY2tldExvYWRpbmcoY29uc3QgVVJMJiAvKiB0YXJnZXRVUkwg
Ki8sIGNvbnN0IFVSTCYgLyogbWFpbkZyYW1lVVJMICovLCBQQUw6OlNlc3Npb25JRCkgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGxvZ1dlYlNvY2tldExvYWRpbmcoY29uc3QgVVJMJiAvKiB0YXJnZXRV
UkwgKi8sIGNvbnN0IFVSTCYgLyogbWFpbkZyYW1lVVJMICovKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgbG9nVXNlckludGVyYWN0aW9uV2l0aFJlZHVjZWRUaW1lUmVzb2x1dGlvbihjb25zdCBEb2N1
bWVudCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBsb2dGb250TG9hZChjb25zdCBEb2N1bWVudCYs
IGNvbnN0IFN0cmluZyYgLyogZmFtaWx5TmFtZSAqLywgYm9vbCAvKiBsb2FkU3RhdHVzICovKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9nQ2FudmFzUmVhZChjb25zdCBEb2N1bWVudCYpIHsgfQpA
QCAtNTMsMTUgKzUzLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbG9nTmF2aWdhdG9y
QVBJQWNjZXNzZWQoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
OjpOYXZpZ2F0b3JBUEkpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBsb2dTY3JlZW5BUElBY2Nlc3Nl
ZChjb25zdCBEb2N1bWVudCYsIGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OlNjcmVlbkFQ
SSkgeyB9CiAKLSAgICB2aXJ0dWFsIFN0cmluZyBzdGF0aXN0aWNzRm9yVVJMKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBVUkwmKSB7IHJldHVybiB7IH07IH0KKyAgICB2aXJ0dWFsIFN0cmluZyBzdGF0
aXN0aWNzRm9yVVJMKGNvbnN0IFVSTCYpIHsgcmV0dXJuIHsgfTsgfQogICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVDZW50cmFsU3RhdGlzdGljc1N0b3JlKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNs
ZWFyU3RhdGUoKSB7IH0KICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaGFzU3RhdGlzdGljcygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgCi0jaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgdmlydHVhbCB2b2lkIHNldFNo
b3VsZExvZ1VzZXJJbnRlcmFjdGlvbihib29sKSB7IH0KLSNlbmRpZgogfTsKICAgICAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBh
YTdjMTQwMTFkMGIwMGRjYjdjMTJkY2ZmNDk4NTEwNDA3NDc4NWVlLi4wMzAwZjlhMDQzNTA3MDA2
YmZlZjU5ZGM5Y2Y4ZjJmN2UwZjgwNGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCkBAIC00NDY3LDExICs0NDY3LDcgQEAgSlNWYWx1ZSBJbnRlcm5hbHM6OmNsb25lQXJyYXlC
dWZmZXIoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIGJ1ZmZlciwgSlNWYWwKIAogU3Ry
aW5nIEludGVybmFsczo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclVSTChjb25zdCBET01VUkwm
IHVybCkKIHsKLSAgICBhdXRvKiBkb2N1bWVudCA9IGNvbnRleHREb2N1bWVudCgpOwotICAgIGlm
ICghZG9jdW1lbnQpCi0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotCi0gICAgcmV0dXJu
IFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5zdGF0aXN0aWNzRm9yVVJMKGRvY3VtZW50
LT5zZXNzaW9uSUQoKSwgdXJsLmhyZWYoKSk7CisgICAgcmV0dXJuIFJlc291cmNlTG9hZE9ic2Vy
dmVyOjpzaGFyZWQoKS5zdGF0aXN0aWNzRm9yVVJMKHVybC5ocmVmKCkpOwogfQogCiB2b2lkIElu
dGVybmFsczo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IGU0
ODdmYTYxYzU4YzU1YTIzMWZlZGY4YWU5Y2MxMzk2ZWI2MDcyMmYuLjRhYjM0NTczZGEzNDJmY2Y3
YzY4ODc3MDNiNTNkMGVlNjMzNDAzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0yNTYsMjAgKzI1NiwyMCBAQCB2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQ
cm9jZXNzaW5nKAogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcmU6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3M+JiYgb3JpZ2lucykKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8UmVzb3VyY2VM
b2FkU3RhdGlzdGljcz4mJiBzdGF0aXN0aWNzKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CiAKICAgICAvLyBJdCBpcyBzYWZlIHRvIG1vdmUgdGhlIG9yaWdpbnMgdG8gdGhlIGJh
Y2tncm91bmQgcXVldWUgd2l0aG91dCBpc29sYXRlZCBjb3B5IGhlcmUgYmVjYXVzZSB0aGlzIGlz
IGFuIHItdmFsdWUKICAgICAvLyBjb21pbmcgZnJvbSBJUEMuIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3Mgb25seSBjb250YWlucyBzdHJpbmdzIHdoaWNoIGFyZSBzYWZlIHRvIG1vdmUgdG8gb3RoZXIg
dGhyZWFkcyBhcyBsb25nCiAgICAgLy8gYXMgbm9ib2R5IG9uIHRoaXMgdGhyZWFkIGhvbGRzIGEg
cmVmZXJlbmNlIHRvIHRob3NlIHN0cmluZ3MuCi0gICAgcG9zdFRhc2soW3RoaXMsIG9yaWdpbnMg
PSBXVEZNb3ZlKG9yaWdpbnMpXSgpIG11dGFibGUgeworICAgIHBvc3RUYXNrKFt0aGlzLCBzdGF0
aXN0aWNzID0gV1RGTW92ZShzdGF0aXN0aWNzKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFt
X3N0YXRpc3RpY3NTdG9yZSB8fCAhaXM8UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
PigqbV9zdGF0aXN0aWNzU3RvcmUpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGF1
dG8mIG1lbW9yeVN0b3JlID0gZG93bmNhc3Q8UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0
b3JlPigqbV9zdGF0aXN0aWNzU3RvcmUpOwogICAgIAotICAgICAgICBtZW1vcnlTdG9yZS5tZXJn
ZVN0YXRpc3RpY3MoV1RGTW92ZShvcmlnaW5zKSk7CisgICAgICAgIG1lbW9yeVN0b3JlLm1lcmdl
U3RhdGlzdGljcyhXVEZNb3ZlKHN0YXRpc3RpY3MpKTsKIAogICAgICAgICAvLyBXZSBjYW4gY2Fu
Y2VsIGFueSBwZW5kaW5nIHJlcXVlc3QgdG8gcHJvY2VzcyBzdGF0aXN0aWNzIHNpbmNlIHdlJ3Jl
IGRvaW5nIGl0IHN5bmNocm9ub3VzbHkgYmVsb3cuCiAgICAgICAgIG1lbW9yeVN0b3JlLmNhbmNl
bFBlbmRpbmdTdGF0aXN0aWNzUHJvY2Vzc2luZ1JlcXVlc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCA5MzUwNWFiNWFmODQ3ZGRkNjZlYmE1
OGZiNzYyNzFjZTcyNWNkNWY5Li4yYzdkMzc4YjA0M2M5NWUxNjU1ODdlNjZhNWY3NDNlMGY4OTI2
NmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBA
IC0xODYsNyArMTg2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2VuZERpYWdub3N0aWNNZXNzYWdl
V2l0aFZhbHVlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlv
biwgdW5zaWduZWQgdmFsdWUsIHVuc2lnbmVkIHNpZ0RpZ2l0cywgV2ViQ29yZTo6U2hvdWxkU2Ft
cGxlKSBjb25zdDsKICAgICB2b2lkIG5vdGlmeVBhZ2VTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNo
ZWQodW5zaWduZWQgdG90YWxQcmV2YWxlbnRSZXNvdXJjZXMsIHVuc2lnbmVkIHRvdGFsUHJldmFs
ZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgdG9wM1N1YmZyYW1lVW5k
ZXJUb3BGcmFtZU9yaWdpbnMpIGNvbnN0OwogCi0gICAgdm9pZCByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzVXBkYXRlZChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik7CisgICAgdm9pZCBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljcz4mJik7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVy
KERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBv
cGVuZXJJRCwgT3BlbmVyRG9tYWluJiYpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAppbmRleCA4NjM3ZDJmNGI2YWFkNGVjMGE1NjE0MjcwZjEzZGViMjlkNTIwZDEyLi4x
OGI2NGYxNmJlZmRjOTdiYmU4YzExMTdkNWM3YzQ0NzNkY2E2OTdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcApAQCAtNjkxLDEzICs2OTEsMTEgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6bG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JgogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OlBlclNlc3Np
b25SZXNvdXJjZUxvYWREYXRhJiYgc3RhdGlzdGljcykKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzPiYmIHN0YXRpc3RpY3MpCiB7Ci0gICAgZm9yIChhdXRvJiBpdGVyIDog
c3RhdGlzdGljcykgewotICAgICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSBuZXR3b3Jr
UHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKGl0ZXIuZmlyc3QpKSB7Ci0gICAgICAgICAgICBpZiAo
YXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKCkpCi0gICAgICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+
cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoV1RGTW92ZShpdGVyLnNlY29uZCkpOwotICAg
ICAgICB9CisgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Np
b24oKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdv
cmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgICAgICAgICByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChXVEZNb3ZlKHN0
YXRpc3RpY3MpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCA2NzEw
MjE2YTg3ZjVlZTg1MDY1NDk3NDBkZTczODk0MTczMjFmNDEzLi43Y2ZkODNkNTIxYzliZTkzZjQw
MzFkYzc2NzFkZmZjYzBhNGVlMGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0yNDAs
NyArMjQwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJl
c291cmNlTG9hZFN0YXRpc3RpY3MoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogCiAgICAgdm9p
ZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKLSAgICB2b2lk
IHJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpQ
ZXJTZXNzaW9uUmVzb3VyY2VMb2FkRGF0YSYmKTsKKyAgICB2b2lkIHJlc291cmNlTG9hZFN0YXRp
c3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmKTsK
ICAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZy
YW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgdG9wRnJhbWVEb21haW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VB
Y2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NV
bmRlck9wZW5lcihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbkluTmVlZE9mU3Rv
cmFnZUFjY2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA5MjA1YmJmMTllY2I5MGIyZTg4NDg0NjA3MWMy
ZDcwODc4MTY5OTYwLi4yYWQzMTNhYjgyNGQ1MWRhY2I2ODI5ZTNkOWIxNWUwYjc3NWNhM2Q5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTU5LDEwICs1
OSw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJl
Y2VpdmVyIHsKICAgICBSZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCk7CiAgICAg
Q2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBwYWdlSUQpOwogICAgIExvZ1VzZXJJbnRlcmFjdGlvbihXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiBkb21haW4pCi0gICAgCi0gICAgIyBGSVhNRTogU3RvcCBwYXNzaW5n
IHNlc3Npb25JRHMuCi0gICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPHN0
ZDo6cGFpcjxQQUw6OlNlc3Npb25JRCwgVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3M+Pj4gc3RhdGlzdGljcykKLQorICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVk
KFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBzdGF0aXN0aWNzKQogICAg
IEhhc1N0b3JhZ2VBY2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21h
aW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKSAt
PiAoYm9vbCBoYXNTdG9yYWdlQWNjZXNzKSBBc3luYwogICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNz
KFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgV2ViS2l0OjpXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlEKSAtPiAoZW51bTpib29sIFdlYkNvcmU6OlN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50ZWQsIGVudW06Ym9vbCBXZWJDb3JlOjpTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24pIEFzeW5jCiAgICAgUmVxdWVz
dFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21h
aW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBh
Z2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gb3BlbmVyRG9tYWluKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9h
ZE9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKaW5kZXggZTFiNGI5ZWIzZjM4NGY1ZjVmZjI5MTMx
YTkzYzhmZDZkZjBjMDY1MS4uZjkxNzg1YWNkODNiOGVkZjU4MDllZmYzZWI1MzU1YzAzYjYzYmJm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlJlc291cmNlTG9hZE9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCkBAIC00NCwxNCArNDQs
MTggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0YXRpYyBjb25zdCBTZWNvbmRzIG1p
bmltdW1Ob3RpZmljYXRpb25JbnRlcnZhbCB7IDVfcyB9OwogCi1zdGF0aWMgYm9vbCBpczN4eFJl
ZGlyZWN0KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAorYm9vbCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hvdWxkTG9nVXNlcklu
dGVyYWN0aW9uIHsgZmFsc2UgfTsKKwordm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0
U2hvdWxkTG9nVXNlckludGVyYWN0aW9uKGJvb2wgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIHJlc3Bv
bnNlLmh0dHBTdGF0dXNDb2RlKCkgPj0gMzAwICYmIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkg
PD0gMzk5OworICAgIHNob3VsZExvZ1VzZXJJbnRlcmFjdGlvbiA9IHZhbHVlOwogfQorI2VuZGlm
CiAKLXN0YXRpYyBib29sIHNob3VsZExvZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKQorc3RhdGljIGJvb2wgaXMzeHhSZWRpcmVjdChjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICByZXR1cm4gRGVwcmVjYXRlZEdsb2JhbFNldHRp
bmdzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpICYmICFzZXNzaW9uSUQuaXNFcGhl
bWVyYWwoKTsKKyAgICByZXR1cm4gcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA+PSAzMDAgJiYg
cmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA8PSAzOTk7CiB9CiAKIFdlYlJlc291cmNlTG9hZE9i
c2VydmVyOjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcigpCkBAIC01OSw3ICs2Myw3IEBAIFdlYlJl
c291cmNlTG9hZE9ic2VydmVyOjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcigpCiB7CiB9CiAKLXZv
aWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVu
ZXIoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRP
ZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgRG9jdW1lbnQmIG9w
ZW5lckRvY3VtZW50KQordm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6cmVxdWVzdFN0b3Jh
Z2VBY2Nlc3NVbmRlck9wZW5lcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVk
T2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIERvY3VtZW50JiBv
cGVuZXJEb2N1bWVudCkKIHsKICAgICBhdXRvIG9wZW5lclVybCA9IG9wZW5lckRvY3VtZW50LnVy
bCgpOwogICAgIFJlZ2lzdHJhYmxlRG9tYWluIG9wZW5lckRvbWFpbiB7IG9wZW5lclVybCB9OwpA
QCAtNzMsMjEgKzc3LDE2IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RT
dG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQsIGNvCiAgICAgfQogfQogICAg
IAotUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmVuc3Vy
ZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikKK1Jlc291cmNlTG9hZFN0
YXRpc3RpY3MmIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjplbnN1cmVSZXNvdXJjZVN0YXRpc3Rp
Y3NGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKQog
ewotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9wZXJTZXNzaW9uUmVzb3VyY2VTdGF0aXN0aWNzTWFw
LmVuc3VyZShzZXNzaW9uSUQsIFtdIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SGFzaE1h
cDxSZWdpc3RyYWJsZURvbWFpbiwgUmVzb3VyY2VMb2FkU3RhdGlzdGljcz4+KCk7Ci0gICAgfSk7
Ci0KLSAgICBhdXRvIGFkZERvbWFpblJlc3VsdCA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUt
PmVuc3VyZShkb21haW4sIFsmZG9tYWluXSB7CisgICAgcmV0dXJuIG1fcmVzb3VyY2VTdGF0aXN0
aWNzTWFwLmVuc3VyZShkb21haW4sIFsmZG9tYWluXSB7CiAgICAgICAgIHJldHVybiBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKGRvbWFpbik7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGFkZERvbWFpblJl
c3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCiB2b2lk
IFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzY2hlZHVsZU5vdGlmaWNhdGlvbklmTmVlZGVkKCkK
IHsKLSAgICBpZiAobV9wZXJTZXNzaW9uUmVzb3VyY2VTdGF0aXN0aWNzTWFwLmlzRW1wdHkoKSkg
eworICAgIGlmIChtX3Jlc291cmNlU3RhdGlzdGljc01hcC5pc0VtcHR5KCkpIHsKICAgICAgICAg
bV9ub3RpZmljYXRpb25UaW1lci5zdG9wKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0x
MDIsNTIgKzEwMSwzNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjp1cGRhdGVDZW50
cmFsU3RhdGlzdGljc1N0b3JlKCkKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVk
KHRha2VTdGF0aXN0aWNzKCkpLCAwKTsKIH0KIAotU3RyaW5nIFdlYlJlc291cmNlTG9hZE9ic2Vy
dmVyOjpzdGF0aXN0aWNzRm9yVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJM
JiB1cmwpCitTdHJpbmcgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnN0YXRpc3RpY3NGb3JVUkwo
Y29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgYXV0byogcmVzb3VyY2VTdGF0aXN0aWNzQnlEb21haW4g
PSBtX3BlclNlc3Npb25SZXNvdXJjZVN0YXRpc3RpY3NNYXAuZ2V0KHNlc3Npb25JRCk7Ci0gICAg
aWYgKCFyZXNvdXJjZVN0YXRpc3RpY3NCeURvbWFpbikKLSAgICAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7Ci0KLSAgICBhdXRvIGl0ZXIgPSByZXNvdXJjZVN0YXRpc3RpY3NCeURvbWFpbi0+Zmlu
ZChSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9KTsKLSAgICBpZiAoaXRlciA9PSByZXNvdXJjZVN0
YXRpc3RpY3NCeURvbWFpbi0+ZW5kKCkpCisgICAgYXV0byBpdGVyID0gbV9yZXNvdXJjZVN0YXRp
c3RpY3NNYXAuZmluZChSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9KTsKKyAgICBpZiAoaXRlciA9
PSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7CiAKICAgICByZXR1cm4gbWFrZVN0cmluZygiU3RhdGlzdGljcyBmb3IgIiwgdXJsLmhv
c3QoKS50b1N0cmluZygpLCAiOlxuIiwgaXRlci0+dmFsdWUudG9TdHJpbmcoKSk7CiB9CiAKLWF1
dG8gV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnRha2VTdGF0aXN0aWNzKCkgLT4gUGVyU2Vzc2lv
blJlc291cmNlTG9hZERhdGEKK1ZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBXZWJSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6dGFrZVN0YXRpc3RpY3MoKQogewotICAgIFBlclNlc3Npb25SZXNv
dXJjZUxvYWREYXRhIHBlclNlc3Npb25TdGF0aXN0aWNzOwotCi0gICAgZm9yIChhdXRvJiBpdGVy
IDogbV9wZXJTZXNzaW9uUmVzb3VyY2VTdGF0aXN0aWNzTWFwKSB7Ci0gICAgICAgIFZlY3RvcjxS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBzdGF0aXN0aWNzOwotICAgICAgICBzdGF0aXN0aWNzLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkoaXRlci52YWx1ZS0+c2l6ZSgpKTsKLQotICAgICAgICBmb3Ig
KGF1dG8mIHN0YXRpc3RpYyA6IGl0ZXIudmFsdWUtPnZhbHVlcygpKQotICAgICAgICAgICAgc3Rh
dGlzdGljcy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShzdGF0aXN0aWMpKTsKLQotICAgICAgICBw
ZXJTZXNzaW9uU3RhdGlzdGljcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoaXRlci5rZXksIFdURk1v
dmUoc3RhdGlzdGljcykpKTsKLSAgICB9Ci0gICAgCi0gICAgbV9wZXJTZXNzaW9uUmVzb3VyY2VT
dGF0aXN0aWNzTWFwLmNsZWFyKCk7Ci0gICAgcmV0dXJuIHBlclNlc3Npb25TdGF0aXN0aWNzOwor
ICAgIFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBzdGF0aXN0aWNzOworICAgIHN0YXRp
c3RpY3MucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3Jlc291cmNlU3RhdGlzdGljc01hcC5zaXpl
KCkpOworICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDogbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAu
dmFsdWVzKCkpCisgICAgICAgIHN0YXRpc3RpY3MudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoc3Rh
dGlzdGljKSk7CisgICAgbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuY2xlYXIoKTsKKyAgICByZXR1
cm4gc3RhdGlzdGljczsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6Y2xlYXJT
dGF0ZSgpCiB7CiAgICAgbV9ub3RpZmljYXRpb25UaW1lci5zdG9wKCk7Ci0gICAgbV9wZXJTZXNz
aW9uUmVzb3VyY2VTdGF0aXN0aWNzTWFwLmNsZWFyKCk7CisgICAgbV9yZXNvdXJjZVN0YXRpc3Rp
Y3NNYXAuY2xlYXIoKTsKICAgICBtX2xhc3RSZXBvcnRlZFVzZXJJbnRlcmFjdGlvbk1hcC5jbGVh
cigpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dGb250TG9hZChjb25z
dCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZSwgYm9vbCBsb2Fk
U3RhdHVzKQogewogI2lmIEVOQUJMRShXRUJfQVBJX1NUQVRJU1RJQ1MpCi0gICAgaWYgKCFzaG91
bGRMb2dSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKGRvY3VtZW50LnNlc3Npb25JRCgpKSkKLSAgICAg
ICAgcmV0dXJuOwotCiAgICAgUmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4geyBk
b2N1bWVudC51cmwoKSB9OwotICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0
YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihkb2N1bWVudC5zZXNzaW9uSUQsIHJlZ2lzdHJh
YmxlRG9tYWluKTsKKyAgICBhdXRvJiBzdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0
aWNzRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pOwogICAgIGJvb2wgc2hv
dWxkQ2FsbE5vdGlmaWNhdGlvbkNhbGxiYWNrID0gZmFsc2U7CiAgICAgaWYgKCFsb2FkU3RhdHVz
KSB7CiAgICAgICAgIGlmIChzdGF0aXN0aWNzLmZvbnRzRmFpbGVkVG9Mb2FkLmFkZChmYW1pbHlO
YW1lKS5pc05ld0VudHJ5KQpAQCAtMTcxLDExICsxNTUsOCBAQCB2b2lkIFdlYlJlc291cmNlTG9h
ZE9ic2VydmVyOjpsb2dGb250TG9hZChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0
cmluZwogdm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nQ2FudmFzUmVhZChjb25zdCBE
b2N1bWVudCYgZG9jdW1lbnQpCiB7CiAjaWYgRU5BQkxFKFdFQl9BUElfU1RBVElTVElDUykKLSAg
ICBpZiAoIXNob3VsZExvZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3MoZG9jdW1lbnQuc2Vzc2lvbklE
KCkpKQotICAgICAgICByZXR1cm47Ci0KICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJs
ZURvbWFpbiB7IGRvY3VtZW50LnVybCgpIH07Ci0gICAgYXV0byYgc3RhdGlzdGljcyA9IGVuc3Vy
ZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKGRvY3VtZW50LnNlc3Npb25J
RCgpLCByZWdpc3RyYWJsZURvbWFpbik7CisgICAgYXV0byYgc3RhdGlzdGljcyA9IGVuc3VyZVJl
c291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKTsK
ICAgICBSZWdpc3RyYWJsZURvbWFpbiBtYWluRnJhbWVSZWdpc3RyYWJsZURvbWFpbiB7IGRvY3Vt
ZW50LnRvcERvY3VtZW50KCkudXJsKCkgfTsKICAgICBzdGF0aXN0aWNzLmNhbnZhc0FjdGl2aXR5
UmVjb3JkLndhc0RhdGFSZWFkID0gdHJ1ZTsKICAgICBpZiAoc3RhdGlzdGljcy50b3BGcmFtZVJl
Z2lzdHJhYmxlRG9tYWluc1doaWNoQWNjZXNzZWRXZWJBUElzLmFkZChtYWluRnJhbWVSZWdpc3Ry
YWJsZURvbWFpbi5zdHJpbmcoKSkuaXNOZXdFbnRyeSkKQEAgLTE4OCwxMSArMTY5LDggQEAgdm9p
ZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nQ2FudmFzUmVhZChjb25zdCBEb2N1bWVudCYg
ZG9jdW1lbnQpCiB2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dDYW52YXNXcml0ZU9y
TWVhc3VyZShjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4dFdyaXR0
ZW4pCiB7CiAjaWYgRU5BQkxFKFdFQl9BUElfU1RBVElTVElDUykKLSAgICBpZiAoIXNob3VsZExv
Z1Jlc291cmNlTG9hZFN0YXRpc3RpY3MoZG9jdW1lbnQuc2Vzc2lvbklEKCkpKQotICAgICAgICBy
ZXR1cm47Ci0KICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiB7IGRvY3Vt
ZW50LnVybCgpIH07Ci0gICAgYXV0byYgc3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlz
dGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKGRvY3VtZW50LnNlc3Npb25JRCwgcmVnaXN0cmFibGVE
b21haW4pOworICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NG
b3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbik7CiAgICAgYm9vbCBzaG91bGRD
YWxsTm90aWZpY2F0aW9uQ2FsbGJhY2sgPSBmYWxzZTsKICAgICBSZWdpc3RyYWJsZURvbWFpbiBt
YWluRnJhbWVSZWdpc3RyYWJsZURvbWFpbiB7IGRvY3VtZW50LnRvcERvY3VtZW50KCkudXJsKCkg
fTsKICAgICBpZiAoc3RhdGlzdGljcy5jYW52YXNBY3Rpdml0eVJlY29yZC5yZWNvcmRXcml0dGVu
T3JNZWFzdXJlZFRleHQodGV4dFdyaXR0ZW4pKQpAQCAtMjEwLDExICsxODgsOCBAQCB2b2lkIFdl
YlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dDYW52YXNXcml0ZU9yTWVhc3VyZShjb25zdCBEb2N1
bWVudCYgZG9jdW1lbnQsCiB2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dOYXZpZ2F0
b3JBUElBY2Nlc3NlZChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3M6Ok5hdmlnYXRvckFQSSBmdW5jdGlvbk5hbWUpCiB7CiAjaWYgRU5BQkxFKFdF
Ql9BUElfU1RBVElTVElDUykKLSAgICBpZiAoIXNob3VsZExvZ1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MoZG9jdW1lbnQuc2Vzc2lvbklEKCkpKQotICAgICAgICByZXR1cm47Ci0KICAgICBSZWdpc3Ry
YWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiB7IGRvY3VtZW50LnVybCgpIH07Ci0gICAgYXV0
byYgc3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9t
YWluKGRvY3VtZW50LnNlc3Npb25JRCwgcmVnaXN0cmFibGVEb21haW4pOworICAgIGF1dG8mIHN0
YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihy
ZWdpc3RyYWJsZURvbWFpbik7CiAgICAgYm9vbCBzaG91bGRDYWxsTm90aWZpY2F0aW9uQ2FsbGJh
Y2sgPSBmYWxzZTsKICAgICBpZiAoIXN0YXRpc3RpY3MubmF2aWdhdG9yRnVuY3Rpb25zQWNjZXNz
ZWQuY29udGFpbnMoZnVuY3Rpb25OYW1lKSkgewogICAgICAgICBzdGF0aXN0aWNzLm5hdmlnYXRv
ckZ1bmN0aW9uc0FjY2Vzc2VkLmFkZChmdW5jdGlvbk5hbWUpOwpAQCAtMjM0LDExICsyMDksOCBA
QCB2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dOYXZpZ2F0b3JBUElBY2Nlc3NlZChj
b25zdCBEb2N1bWVudCYgZG9jdW1lbnQsCiB2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjps
b2dTY3JlZW5BUElBY2Nlc3NlZChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFJlc291
cmNlTG9hZFN0YXRpc3RpY3M6OlNjcmVlbkFQSSBmdW5jdGlvbk5hbWUpCiB7CiAjaWYgRU5BQkxF
KFdFQl9BUElfU1RBVElTVElDUykKLSAgICBpZiAoIXNob3VsZExvZ1Jlc291cmNlTG9hZFN0YXRp
c3RpY3MoZG9jdW1lbnQuc2Vzc2lvbklEKCkpKQotICAgICAgICByZXR1cm47Ci0KICAgICBSZWdp
c3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiB7IGRvY3VtZW50LnVybCgpIH07Ci0gICAg
YXV0byYgc3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxl
RG9tYWluKGRvY3VtZW50LnNlc3Npb25JRCwgcmVnaXN0cmFibGVEb21haW4pOworICAgIGF1dG8m
IHN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFp
bihyZWdpc3RyYWJsZURvbWFpbik7CiAgICAgYm9vbCBzaG91bGRDYWxsTm90aWZpY2F0aW9uQ2Fs
bGJhY2sgPSBmYWxzZTsKICAgICBpZiAoIXN0YXRpc3RpY3Muc2NyZWVuRnVuY3Rpb25zQWNjZXNz
ZWQuY29udGFpbnMoZnVuY3Rpb25OYW1lKSkgewogICAgICAgICBzdGF0aXN0aWNzLnNjcmVlbkZ1
bmN0aW9uc0FjY2Vzc2VkLmFkZChmdW5jdGlvbk5hbWUpOwpAQCAtMjYzLDcgKzIzNSw3IEBAIHZv
aWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1N1YnJlc291cmNlTG9hZGluZyhjb25zdCBG
cmFtZSogZnJhbWUsIGNvbnN0IFJlCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8qIHBhZ2Ug
PSBmcmFtZS0+cGFnZSgpOwotICAgIGlmICghcGFnZSB8fCAhc2hvdWxkTG9nUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyhwYWdlLT5zZXNzaW9uSUQoKSkpCisgICAgaWYgKCFwYWdlKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBib29sIGlzUmVkaXJlY3QgPSBpczN4eFJlZGlyZWN0KHJlZGlyZWN0UmVz
cG9uc2UpOwpAQCAtMjg1LDcgKzI1Nyw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OmxvZ1N1YnJlc291cmNlTG9hZGluZyhjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlCiAgICAg
ICAgIHJldHVybjsKIAogICAgIHsKLSAgICAgICAgYXV0byYgdGFyZ2V0U3RhdGlzdGljcyA9IGVu
c3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHBhZ2UtPnNlc3Npb25J
RCgpLCB0YXJnZXREb21haW4pOworICAgICAgICBhdXRvJiB0YXJnZXRTdGF0aXN0aWNzID0gZW5z
dXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4odGFyZ2V0RG9tYWluKTsK
ICAgICAgICAgYXV0byBsYXN0U2VlbiA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OnJlZHVjZVRp
bWVSZXNvbHV0aW9uKFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIHRhcmdldFN0YXRpc3RpY3Mu
bGFzdFNlZW4gPSBsYXN0U2VlbjsKICAgICAgICAgdGFyZ2V0U3RhdGlzdGljcy5zdWJyZXNvdXJj
ZVVuZGVyVG9wRnJhbWVEb21haW5zLmFkZCh0b3BGcmFtZURvbWFpbik7CkBAIC0yOTQsMjAgKzI2
NiwxNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dTdWJyZXNvdXJjZUxvYWRp
bmcoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZQogICAgIH0KIAogICAgIGlmIChpc1JlZGly
ZWN0KSB7Ci0gICAgICAgIGF1dG8mIHJlZGlyZWN0aW5nT3JpZ2luU3RhdGlzdGljcyA9IGVuc3Vy
ZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHBhZ2UtPnNlc3Npb25JRCgp
LCByZWRpcmVjdGVkRnJvbURvbWFpbik7CisgICAgICAgIGF1dG8mIHJlZGlyZWN0aW5nT3JpZ2lu
U3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWlu
KHJlZGlyZWN0ZWRGcm9tRG9tYWluKTsKICAgICAgICAgcmVkaXJlY3RpbmdPcmlnaW5TdGF0aXN0
aWNzLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8uYWRkKHRhcmdldERvbWFpbik7Ci0gICAg
ICAgIGF1dG8mIHRhcmdldFN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JS
ZWdpc3RyYWJsZURvbWFpbihwYWdlLT5zZXNzaW9uSUQoKSwgdGFyZ2V0RG9tYWluKTsKKyAgICAg
ICAgYXV0byYgdGFyZ2V0U3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJl
Z2lzdHJhYmxlRG9tYWluKHRhcmdldERvbWFpbik7CiAgICAgICAgIHRhcmdldFN0YXRpc3RpY3Mu
c3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tLmFkZChyZWRpcmVjdGVkRnJvbURvbWFpbik7
CiAKICAgICAgICAgc2NoZWR1bGVOb3RpZmljYXRpb25JZk5lZWRlZCgpOwogICAgIH0KIH0KIAot
dm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nV2ViU29ja2V0TG9hZGluZyhjb25zdCBV
UkwmIHRhcmdldFVSTCwgY29uc3QgVVJMJiBtYWluRnJhbWVVUkwsIFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCkKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1dlYlNvY2tldExvYWRp
bmcoY29uc3QgVVJMJiB0YXJnZXRVUkwsIGNvbnN0IFVSTCYgbWFpbkZyYW1lVVJMKQogewotICAg
IGlmICghc2hvdWxkTG9nUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhzZXNzaW9uSUQpKQotICAgICAg
ICByZXR1cm47Ci0KICAgICBhdXRvIHRhcmdldEhvc3QgPSB0YXJnZXRVUkwuaG9zdCgpOwogICAg
IGF1dG8gbWFpbkZyYW1lSG9zdCA9IG1haW5GcmFtZVVSTC5ob3N0KCk7CiAgICAgCkBAIC0zMjIs
NyArMjkxLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nV2ViU29ja2V0TG9h
ZGluZyhjb25zdCBVUkwmIHRhcmdldFVSTCwgY29uc3QgVVIKIAogICAgIGF1dG8gbGFzdFNlZW4g
PSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpyZWR1Y2VUaW1lUmVzb2x1dGlvbihXYWxsVGltZTo6
bm93KCkpOwogCi0gICAgYXV0byYgdGFyZ2V0U3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3Rh
dGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHNlc3Npb25JRCwgdGFyZ2V0RG9tYWluKTsKKyAg
ICBhdXRvJiB0YXJnZXRTdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVn
aXN0cmFibGVEb21haW4odGFyZ2V0RG9tYWluKTsKICAgICB0YXJnZXRTdGF0aXN0aWNzLmxhc3RT
ZWVuID0gbGFzdFNlZW47CiAgICAgdGFyZ2V0U3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuZGVyVG9w
RnJhbWVEb21haW5zLmFkZCh0b3BGcmFtZURvbWFpbik7CiAKQEAgLTMzMSw5ICszMDAsNiBAQCB2
b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dXZWJTb2NrZXRMb2FkaW5nKGNvbnN0IFVS
TCYgdGFyZ2V0VVJMLCBjb25zdCBVUgogCiB2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjps
b2dVc2VySW50ZXJhY3Rpb25XaXRoUmVkdWNlZFRpbWVSZXNvbHV0aW9uKGNvbnN0IERvY3VtZW50
JiBkb2N1bWVudCkKIHsKLSAgICBpZiAoIWRvY3VtZW50LnNlc3Npb25JRCgpLmlzVmFsaWQoKSB8
fCAhc2hvdWxkTG9nUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhkb2N1bWVudC5zZXNzaW9uSUQoKSkp
Ci0gICAgICAgIHJldHVybjsKLQogICAgIGF1dG8mIHVybCA9IGRvY3VtZW50LnVybCgpOwogICAg
IGlmICh1cmwucHJvdG9jb2xJc0Fib3V0KCkgfHwgdXJsLmlzTG9jYWxGaWxlKCkgfHwgdXJsLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzQ2LDcgKzMxMiw3IEBAIHZvaWQgV2ViUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1VzZXJJbnRlcmFjdGlvbldpdGhSZWR1Y2VkVGltZVJlc29s
dXRpb24oY29uc3QKIAogICAgIG1fbGFzdFJlcG9ydGVkVXNlckludGVyYWN0aW9uTWFwLnNldCh0
b3BGcmFtZURvbWFpbiwgbmV3VGltZSk7CiAKLSAgICBhdXRvJiBzdGF0aXN0aWNzID0gZW5zdXJl
UmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4oZG9jdW1lbnQuc2Vzc2lvbklE
KCksIHRvcEZyYW1lRG9tYWluKTsKKyAgICBhdXRvJiBzdGF0aXN0aWNzID0gZW5zdXJlUmVzb3Vy
Y2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4odG9wRnJhbWVEb21haW4pOwogICAgIHN0
YXRpc3RpY3MuaGFkVXNlckludGVyYWN0aW9uID0gdHJ1ZTsKICAgICBzdGF0aXN0aWNzLmxhc3RT
ZWVuID0gbmV3VGltZTsKICAgICBzdGF0aXN0aWNzLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25U
aW1lID0gbmV3VGltZTsKQEAgLTM1Niw3ICszMjIsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZE9i
c2VydmVyOjpsb2dVc2VySW50ZXJhY3Rpb25XaXRoUmVkdWNlZFRpbWVSZXNvbHV0aW9uKGNvbnN0
CiAgICAgICAgICAgICBpZiAoYXV0byogb3BlbmVyRG9jdW1lbnQgPSBvcGVuZXItPmRvY3VtZW50
KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byogb3BlbmVyRnJhbWUgPSBvcGVuZXJEb2N1
bWVudC0+ZnJhbWUoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byBvcGVuZXJQYWdl
SUQgPSBvcGVuZXJGcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKGRvY3VtZW50LnNl
c3Npb25JRCgpLCB0b3BGcmFtZURvbWFpbiwgb3BlbmVyUGFnZUlELnZhbHVlKCksICpvcGVuZXJE
b2N1bWVudCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0U3RvcmFnZUFjY2Vzc1Vu
ZGVyT3BlbmVyKHRvcEZyYW1lRG9tYWluLCBvcGVuZXJQYWdlSUQudmFsdWUoKSwgKm9wZW5lckRv
Y3VtZW50KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAg
LTM2Nyw3ICszMzMsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dVc2VySW50
ZXJhY3Rpb25XaXRoUmVkdWNlZFRpbWVSZXNvbHV0aW9uKGNvbnN0CiAgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpMb2dVc2VySW50
ZXJhY3Rpb24odG9wRnJhbWVEb21haW4pLCAwKTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAotICAgIGlmIChtX3Nob3VsZExvZ1VzZXJJbnRlcmFjdGlvbikgeworICAgIGlmIChzaG91bGRM
b2dVc2VySW50ZXJhY3Rpb24pIHsKICAgICAgICAgYXV0byBjb3VudGVyID0gKyttX2xvZ2dpbmdD
b3VudGVyOwogI2RlZmluZSBMT0NBTF9MT0coc3RyLCAuLi4pIFwKICAgICAgICAgUkVMRUFTRV9M
T0coUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgIlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dVc2Vy
SW50ZXJhY3Rpb246IGNvdW50ZXIgPSAlIiBQUkl1NjQgIjogIiBzdHIsIGNvdW50ZXIsICMjX19W
QV9BUkdTX18pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oCmluZGV4IDhhZTI0YjEx
MjEyMDkzM2Y1ODUzYTJlMWVhOGMwNjNhYjk3NTk1ODguLmQ2YjhkODc3NTg3OGI0YjY4YzUxNzRh
OTk0ODhjOTEzZGI0ZDBhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oCkBA
IC0zNiwxMiArMzYsMTAgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlJlc291cmNl
TG9hZE9ic2VydmVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVy
IHsKIHB1YmxpYzoKLSAgICB1c2luZyBQZXJTZXNzaW9uUmVzb3VyY2VMb2FkRGF0YSA9IFZlY3Rv
cjxzdGQ6OnBhaXI8UEFMOjpTZXNzaW9uSUQsIFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzPj4+OwotCiAgICAgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIoKTsKICAgICAKICAg
ICB2b2lkIGxvZ1N1YnJlc291cmNlTG9hZGluZyhjb25zdCBXZWJDb3JlOjpGcmFtZSosIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7Ci0gICAgdm9pZCBsb2dXZWJT
b2NrZXRMb2FkaW5nKGNvbnN0IFVSTCYgdGFyZ2V0VVJMLCBjb25zdCBVUkwmIG1haW5GcmFtZVVS
TCwgUEFMOjpTZXNzaW9uSUQpIGZpbmFsOworICAgIHZvaWQgbG9nV2ViU29ja2V0TG9hZGluZyhj
b25zdCBVUkwmIHRhcmdldFVSTCwgY29uc3QgVVJMJiBtYWluRnJhbWVVUkwpIGZpbmFsOwogICAg
IHZvaWQgbG9nVXNlckludGVyYWN0aW9uV2l0aFJlZHVjZWRUaW1lUmVzb2x1dGlvbihjb25zdCBX
ZWJDb3JlOjpEb2N1bWVudCYpIGZpbmFsOwogICAgIHZvaWQgbG9nRm9udExvYWQoY29uc3QgV2Vi
Q29yZTo6RG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWUsIGJvb2wgbG9hZFN0YXR1
cykgZmluYWw7CiAgICAgdm9pZCBsb2dDYW52YXNSZWFkKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50
JikgZmluYWw7CkBAIC01MCwzMCArNDgsMzAgQEAgcHVibGljOgogICAgIHZvaWQgbG9nU2NyZWVu
QVBJQWNjZXNzZWQoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzOjpTY3JlZW5BUEkpIGZpbmFsOwogCiAjaWYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECi0gICAgdm9pZCBzZXRTaG91bGRMb2dVc2VySW50ZXJhY3Rpb24oYm9vbCBzaG91
bGRMb2dVc2VySW50ZXJhY3Rpb24pIGZpbmFsIHsgbV9zaG91bGRMb2dVc2VySW50ZXJhY3Rpb24g
PSBzaG91bGRMb2dVc2VySW50ZXJhY3Rpb247IH0KKyAgICBzdGF0aWMgdm9pZCBzZXRTaG91bGRM
b2dVc2VySW50ZXJhY3Rpb24oYm9vbCk7CiAjZW5kaWYKIAotICAgIFN0cmluZyBzdGF0aXN0aWNz
Rm9yVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmKSBmaW5hbDsKKyAgICBTdHJpbmcgc3Rh
dGlzdGljc0ZvclVSTChjb25zdCBVUkwmKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUNlbnRyYWxT
dGF0aXN0aWNzU3RvcmUoKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyU3RhdGUoKSBmaW5hbDsKICAg
ICAKLSAgICBib29sIGhhc1N0YXRpc3RpY3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9wZXJT
ZXNzaW9uUmVzb3VyY2VTdGF0aXN0aWNzTWFwLmlzRW1wdHkoKTsgfQorICAgIGJvb2wgaGFzU3Rh
dGlzdGljcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICFtX3Jlc291cmNlU3RhdGlzdGljc01hcC5p
c0VtcHR5KCk7IH0KIAogcHJpdmF0ZToKLSAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzJiBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihQQUw6OlNl
c3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsKKyAgICBXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdp
c3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOwogICAgIHZv
aWQgc2NoZWR1bGVOb3RpZmljYXRpb25JZk5lZWRlZCgpOwogCi0gICAgUGVyU2Vzc2lvblJlc291
cmNlTG9hZERhdGEgdGFrZVN0YXRpc3RpY3MoKTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNj
ZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6RG9jdW1lbnQmIG9wZW5lckRvY3VtZW50KTsKKyAg
ICBWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gdGFrZVN0YXRpc3RpY3Mo
KTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoY29uc3QgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBXZWJDb3JlOjpEb2N1bWVudCYgb3BlbmVy
RG9jdW1lbnQpOwogCi0gICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgc3RkOjp1bmlxdWVfcHRy
PEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFdlYkNvcmU6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3M+Pj4gbV9wZXJTZXNzaW9uUmVzb3VyY2VTdGF0aXN0aWNzTWFwOworICAgIEhh
c2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3M+IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwOwogICAgIEhhc2hNYXA8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4sIFdURjo6V2FsbFRpbWU+IG1fbGFzdFJlcG9ydGVkVXNlckludGVy
YWN0aW9uTWFwOwogCiAgICAgV2ViQ29yZTo6VGltZXIgbV9ub3RpZmljYXRpb25UaW1lcjsKIAog
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHVpbnQ2NF90IG1fbG9nZ2luZ0NvdW50ZXIg
eyAwIH07Ci0gICAgYm9vbCBtX3Nob3VsZExvZ1VzZXJJbnRlcmFjdGlvbiB7IGZhbHNlIH07Cisg
ICAgc3RhdGljIGJvb2wgc2hvdWxkTG9nVXNlckludGVyYWN0aW9uOwogI2VuZGlmCiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggYTBmMDE5YjcyZjU1ODFl
Mzk2OWEwNTQwYmE2MjdiNTgxYmZlMDNlMi4uZTI4MGMxOGQ0Y2I4OGQ4NjFjMThhYzVmYzExYTUz
ZjM2MWIyYzc0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAt
MjE1LDEwICsyMTUsNiBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICNlbmRpZgogCiAgICAg
bV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMuYWRkKFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0
U2Vzc2lvbklEKCksIEhhc2hNYXA8dW5zaWduZWQsIFdhbGxUaW1lPigpKTsKLQotI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNl
dFNoYXJlZCgqbmV3IFdlYlJlc291cmNlTG9hZE9ic2VydmVyKTsKLSNlbmRpZgogICAgIAogICAg
IEdpZ2FjYWdlOjpmb3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpOwogfQpAQCAtNDI5
LDcgKzQyNSw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAjZW5kaWYKIAogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpICYmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAg
IFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5zZXRTaG91bGRMb2dVc2VySW50ZXJhY3Rp
b24ocGFyYW1ldGVycy5zaG91bGRMb2dVc2VySW50ZXJhY3Rpb24pOworICAgIFdlYlJlc291cmNl
TG9hZE9ic2VydmVyOjpzZXRTaG91bGRMb2dVc2VySW50ZXJhY3Rpb24ocGFyYW1ldGVycy5zaG91
bGRMb2dVc2VySW50ZXJhY3Rpb24pOwogI2VuZGlmCiAKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNz
LCAiJXAgLSBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzczogUHJlc2VudGluZyBwcm9j
ZXNzID0gJWQiLCB0aGlzLCBXZWJDb3JlOjpwcmVzZW50aW5nQXBwbGljYXRpb25QSUQoKSk7CkBA
IC00NTYsNiArNDUyLDExIEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0V2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnMoV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMmJiBwCiAKICAgICBzZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkKTsKIAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAg
aWYgKHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgJiYgIXBhcmFtZXRl
cnMuc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCisgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVy
OjpzZXRTaGFyZWQoKm5ldyBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcik7CisjZW5kaWYKKwogICAg
IGZvciAoYXV0byYgc3VwcGxlbWVudCA6IG1fc3VwcGxlbWVudHMudmFsdWVzKCkpCiAgICAgICAg
IHN1cHBsZW1lbnQtPnNldFdlYnNpdGVEYXRhU3RvcmUocGFyYW1ldGVycyk7CiAKQEAgLTE2NTIs
NyArMTY1Myw4IEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQoYm9vbCBlbmFibGVkKQogdm9pZCBXZWJQcm9jZXNzOjpjbGVhclJlc291cmNlTG9hZFN0
YXRpc3RpY3MoKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAg
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmNsZWFyU3RhdGUoKTsKKyAgICBpZiAoYXV0
byogb2JzZXJ2ZXIgPSBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkSWZFeGlzdHMoKSkKKyAg
ICAgICAgb2JzZXJ2ZXItPmNsZWFyU3RhdGUoKTsKICNlbmRpZgogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378886</attachid>
            <date>2019-09-16 13:07:00 -0700</date>
            <delta_ts>2019-09-16 14:21:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201821-20190916130634.patch</filename>
            <type>text/plain</type>
            <size>34115</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5OTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODg2YjhiNzRlYjA1OWMy
OGM5ZWQ0NDBkMTc4OTlhOWM4ZTU4OTdmYy4uM2ZiYmU1YzQ4ZGU0MGVkOTViNmI4MTYxOTg5OTQz
MjY4ZTRkZTk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE5LTA5LTE2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgV2ViUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXIgbm93IHRoYXQgd2UgaGF2ZSBvbmUgV2ViUHJvY2VzcyBwZXIgc2Vzc2lv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxODIx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKworICAgICAgICAqIE1vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
Ojpjb25uZWN0KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dXZWJTb2NrZXRMb2FkaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpzdGF0aXN0aWNzRm9y
VVJMKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NGb3JVUkwpOgorCiAyMDE5LTA5LTE2
ICBKb24gRGF2aXMgIDxqb25kQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgZmVhdHVyZSBz
dGF0dXMgZm9yIEJhdHRlcnkgU3RhdHVzIEFQSSwgV2ViR0wgMiwgYW5kIERpYWxvZyBFbGVtZW50
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IGFkNDk1OWJiZjJlMTM5YmM4ZjgyNmUwOWUwMzJmODk2ZWEyMTVkOTMuLjVm
OTA2NGI5M2RiMDU5MzI1MGZmNzRlNTJlMzVlZGVmYWFmNTJhZWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDEgQEAKKzIwMTktMDktMTYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwor
ICAgICAgICBTaW1wbGlmeSBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlciBub3cgdGhhdCB3ZSBoYXZl
IG9uZSBXZWJQcm9jZXNzIHBlciBzZXNzaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE4MjEKKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBG
dWxnaGFtLgorCisgICAgICAgIFNpbXBsaWZ5IFdlYlJlc291cmNlTG9hZE9ic2VydmVyIG5vdyB0
aGF0IHdlIGhhdmUgb25lIFdlYlByb2Nlc3MgcGVyIHNlc3Npb24uCisgICAgICAgIE5vIG5lZWQg
dG8gcGFzcyBzZXNzaW9uSURzIGFyb3VuZCBvciBzdG9yZSBzdGF0aXN0aWNzIHBlciBzZXNzaW9u
SUQuCisgICAgICAgIEFsc28sIG9ubHkgaW5pdGlhbGl6ZSB0aGUgV2ViUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXIgaWYgYm90aCBJVFAgaXMgZW5hYmxlZCBhbmQKKyAgICAgICAgd2UncmUgbm90IGluIGEg
V2ViQ29udGVudCBwcm9jZXNzIHVzZWQgZm9yIGFuIGVwaGVtZXJhbCBzZXNzaW9uLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlc291cmNlTG9h
ZFN0YXRpc3RpY3NVcGRhdGVkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lcik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjplbnN1cmVS
ZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzY2hlZHVsZU5vdGlmaWNhdGlvbklmTmVlZGVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnN0YXRpc3RpY3NGb3JV
UkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6dGFrZVN0YXRp
c3RpY3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6Y2xlYXJT
dGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dGb250
TG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dDYW52
YXNSZWFkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ0Nh
bnZhc1dyaXRlT3JNZWFzdXJlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OmxvZ05hdmlnYXRvckFQSUFjY2Vzc2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1NjcmVlbkFQSUFjY2Vzc2VkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1N1YnJlc291cmNlTG9hZGluZyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dXZWJTb2NrZXRMb2FkaW5n
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1VzZXJJbnRl
cmFjdGlvbldpdGhSZWR1Y2VkVGltZVJlc29sdXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZXRX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyk6CisKIDIwMTktMDktMTYgIERhdmlkIEtpbHplciAg
PGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjQzMTEzKTogTGVh
ayBvZiBtdWx0aXBsZSBpbnN0YW5jZSB2YXJpYWJsZSBibG9ja3Mgd2hlbiBkZWFsbG9jYXRpbmcg
X1dLQXR0cmlidXRlZFN0cmluZ05hdmlnYXRpb25EZWxlZ2F0ZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAppbmRleCBkNzRlNmQ5MTkwMjNiZmIw
OTc0MDhhNDg3NmU3NjRmMzA1OGQ3NDI0Li45OTI5NjNlYjU5YzNiMDc1YmZlNTcxYmQ2M2E5NDBj
NzEwZjRlZWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmNwcApAQCAtMjk4LDggKzI5OCw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYlNvY2tl
dDo6Y29ubmVjdChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHByCiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RhcmdldFVS
TCA9IG1fdXJsLmlzb2xhdGVkQ29weSgpLCBtYWluRnJhbWVVUkwgPSBjb250ZXh0LnVybCgpLmlz
b2xhdGVkQ29weSgpLCBzZXNzaW9uSUQgPSBjb250ZXh0LnNlc3Npb25JRCgpXSgpIHsKLSAgICAg
ICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxvZ1dlYlNvY2tldExvYWRpbmcodGFy
Z2V0VVJMLCBtYWluRnJhbWVVUkwsIHNlc3Npb25JRCk7CisgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFt0YXJnZXRVUkwgPSBtX3VybC5pc29sYXRlZENvcHkoKSwgbWFpbkZyYW1lVVJMID0g
Y29udGV4dC51cmwoKS5pc29sYXRlZENvcHkoKV0oKSB7CisgICAgICAgIFJlc291cmNlTG9hZE9i
c2VydmVyOjpzaGFyZWQoKS5sb2dXZWJTb2NrZXRMb2FkaW5nKHRhcmdldFVSTCwgbWFpbkZyYW1l
VVJMKTsKICAgICB9KTsKIAogICAgIGlmIChpczxEb2N1bWVudD4oY29udGV4dCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCmluZGV4IGJlZDdj
YTQyODE4YzhmNTRkMjBhYmI4ZGMwMmNhYTQwYTE5Yjk4MTAuLmUxNjU2MzdlYTMzM2JhZWQ5YmY1
OWZmNjAyMTdkODkxYTg0MDJkMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZE9ic2VydmVyLmNwcApAQCAtNDcsNCArNDcsOSBAQCBSZXNvdXJjZUxvYWRPYnNlcnZl
ciYgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpCiAgICAgcmV0dXJuICpzaGFyZWRPYnNl
cnZlcigpOwogfQogCitSZXNvdXJjZUxvYWRPYnNlcnZlciogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OnNoYXJlZElmRXhpc3RzKCkKK3sKKyAgICByZXR1cm4gc2hhcmVkT2JzZXJ2ZXIoKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZE9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkT2JzZXJ2ZXIuaAppbmRleCBkZGUyNDRkMjQ4MTU3YjE3Y2EwYjdjNGU5NGMyM2YwZjJhMmMy
ZjhkLi5lNzRkNWY2NmZhZDFlNzk3MmJlZWExOTg2ODhlYmZlNzJkYmI0Mjg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaApAQCAtMjYsNyArMjYsNiBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgiCi0j
aW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQwLDEyICszOSwxMyBAQCBjbGFzcyBSZXNvdXJjZUxvYWRP
YnNlcnZlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlc291cmNlTG9hZE9ic2VydmVyJiBzaGFyZWQoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVzb3VyY2VMb2FkT2JzZXJ2ZXIqIHNoYXJlZElmRXhpc3Rz
KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0U2hhcmVkKFJlc291cmNlTG9h
ZE9ic2VydmVyJik7CiAgICAgCiAgICAgdmlydHVhbCB+UmVzb3VyY2VMb2FkT2JzZXJ2ZXIoKSB7
IH0KIAogICAgIHZpcnR1YWwgdm9pZCBsb2dTdWJyZXNvdXJjZUxvYWRpbmcoY29uc3QgRnJhbWUq
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIC8qIG5ld1JlcXVlc3QgKi8sIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIC8qIHJlZGlyZWN0UmVzcG9uc2UgKi8pIHsgfQotICAgIHZpcnR1YWwgdm9pZCBs
b2dXZWJTb2NrZXRMb2FkaW5nKGNvbnN0IFVSTCYgLyogdGFyZ2V0VVJMICovLCBjb25zdCBVUkwm
IC8qIG1haW5GcmFtZVVSTCAqLywgUEFMOjpTZXNzaW9uSUQpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBsb2dXZWJTb2NrZXRMb2FkaW5nKGNvbnN0IFVSTCYgLyogdGFyZ2V0VVJMICovLCBjb25zdCBV
UkwmIC8qIG1haW5GcmFtZVVSTCAqLykgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvZ1VzZXJJbnRl
cmFjdGlvbldpdGhSZWR1Y2VkVGltZVJlc29sdXRpb24oY29uc3QgRG9jdW1lbnQmKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgbG9nRm9udExvYWQoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcm
IC8qIGZhbWlseU5hbWUgKi8sIGJvb2wgLyogbG9hZFN0YXR1cyAqLykgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGxvZ0NhbnZhc1JlYWQoY29uc3QgRG9jdW1lbnQmKSB7IH0KQEAgLTUzLDE1ICs1Mywx
MSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGxvZ05hdmlnYXRvckFQSUFjY2Vzc2VkKGNv
bnN0IERvY3VtZW50JiwgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6TmF2aWdhdG9yQVBJ
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9nU2NyZWVuQVBJQWNjZXNzZWQoY29uc3QgRG9jdW1l
bnQmLCBjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpTY3JlZW5BUEkpIHsgfQogCi0gICAg
dmlydHVhbCBTdHJpbmcgc3RhdGlzdGljc0ZvclVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJM
JikgeyByZXR1cm4geyB9OyB9CisgICAgdmlydHVhbCBTdHJpbmcgc3RhdGlzdGljc0ZvclVSTChj
b25zdCBVUkwmKSB7IHJldHVybiB7IH07IH0KICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ2VudHJh
bFN0YXRpc3RpY3NTdG9yZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjbGVhclN0YXRlKCkgeyB9
CiAgICAgCiAgICAgdmlydHVhbCBib29sIGhhc1N0YXRpc3RpY3MoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotICAgIAotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpICYmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAotICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRMb2dVc2VySW50
ZXJhY3Rpb24oYm9vbCkgeyB9Ci0jZW5kaWYKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggYWE3YzE0MDExZDBiMDBk
Y2I3YzEyZGNmZjQ5ODUxMDQwNzQ3ODVlZS4uMDMwMGY5YTA0MzUwNzAwNmJmZWY1OWRjOWNmOGYy
ZjdlMGY4MDRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNDQ2Nywx
MSArNDQ2Nyw3IEBAIEpTVmFsdWUgSW50ZXJuYWxzOjpjbG9uZUFycmF5QnVmZmVyKEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSBidWZmZXIsIEpTVmFsCiAKIFN0cmluZyBJbnRlcm5hbHM6
OnJlc291cmNlTG9hZFN0YXRpc3RpY3NGb3JVUkwoY29uc3QgRE9NVVJMJiB1cmwpCiB7Ci0gICAg
YXV0byogZG9jdW1lbnQgPSBjb250ZXh0RG9jdW1lbnQoKTsKLSAgICBpZiAoIWRvY3VtZW50KQot
ICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLQotICAgIHJldHVybiBSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6c2hhcmVkKCkuc3RhdGlzdGljc0ZvclVSTChkb2N1bWVudC0+c2Vzc2lvbklEKCks
IHVybC5ocmVmKCkpOworICAgIHJldHVybiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCku
c3RhdGlzdGljc0ZvclVSTCh1cmwuaHJlZigpKTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OnNldFJl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCBlNDg3ZmE2MWM1OGM1NWEy
MzFmZWRmOGFlOWNjMTM5NmViNjA3MjJmLi40YWIzNDU3M2RhMzQyZmNmN2M2ODg3NzAzYjUzZDBl
ZTYzMzQwM2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmNwcApAQCAtMjU2LDIwICsyNTYsMjAgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2luZygKICAg
ICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNl
TG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzPiYmIG9yaWdpbnMpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVz
b3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+
JiYgc3RhdGlzdGljcykKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAg
Ly8gSXQgaXMgc2FmZSB0byBtb3ZlIHRoZSBvcmlnaW5zIHRvIHRoZSBiYWNrZ3JvdW5kIHF1ZXVl
IHdpdGhvdXQgaXNvbGF0ZWQgY29weSBoZXJlIGJlY2F1c2UgdGhpcyBpcyBhbiByLXZhbHVlCiAg
ICAgLy8gY29taW5nIGZyb20gSVBDLiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIG9ubHkgY29udGFp
bnMgc3RyaW5ncyB3aGljaCBhcmUgc2FmZSB0byBtb3ZlIHRvIG90aGVyIHRocmVhZHMgYXMgbG9u
ZwogICAgIC8vIGFzIG5vYm9keSBvbiB0aGlzIHRocmVhZCBob2xkcyBhIHJlZmVyZW5jZSB0byB0
aG9zZSBzdHJpbmdzLgotICAgIHBvc3RUYXNrKFt0aGlzLCBvcmlnaW5zID0gV1RGTW92ZShvcmln
aW5zKV0oKSBtdXRhYmxlIHsKKyAgICBwb3N0VGFzayhbdGhpcywgc3RhdGlzdGljcyA9IFdURk1v
dmUoc3RhdGlzdGljcyldKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghbV9zdGF0aXN0aWNzU3Rv
cmUgfHwgIWlzPFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZT4oKm1fc3RhdGlzdGlj
c1N0b3JlKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBhdXRvJiBtZW1vcnlTdG9y
ZSA9IGRvd25jYXN0PFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZT4oKm1fc3RhdGlz
dGljc1N0b3JlKTsKICAgICAKLSAgICAgICAgbWVtb3J5U3RvcmUubWVyZ2VTdGF0aXN0aWNzKFdU
Rk1vdmUob3JpZ2lucykpOworICAgICAgICBtZW1vcnlTdG9yZS5tZXJnZVN0YXRpc3RpY3MoV1RG
TW92ZShzdGF0aXN0aWNzKSk7CiAKICAgICAgICAgLy8gV2UgY2FuIGNhbmNlbCBhbnkgcGVuZGlu
ZyByZXF1ZXN0IHRvIHByb2Nlc3Mgc3RhdGlzdGljcyBzaW5jZSB3ZSdyZSBkb2luZyBpdCBzeW5j
aHJvbm91c2x5IGJlbG93LgogICAgICAgICBtZW1vcnlTdG9yZS5jYW5jZWxQZW5kaW5nU3RhdGlz
dGljc1Byb2Nlc3NpbmdSZXF1ZXN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmgKaW5kZXggOTM1MDVhYjVhZjg0N2RkZDY2ZWJhNThmYjc2MjcxY2U3MjVj
ZDVmOS4uMmM3ZDM3OGIwNDNjOTVlMTY1NTg3ZTY2YTVmNzQzZTBmODkyNjZjMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtMTg2LDcgKzE4Niw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNlbmREaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIHVuc2lnbmVkIHZh
bHVlLCB1bnNpZ25lZCBzaWdEaWdpdHMsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSkgY29uc3Q7CiAg
ICAgdm9pZCBub3RpZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKHVuc2lnbmVkIHRv
dGFsUHJldmFsZW50UmVzb3VyY2VzLCB1bnNpZ25lZCB0b3RhbFByZXZhbGVudFJlc291cmNlc1dp
dGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcDNTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmln
aW5zKSBjb25zdDsKIAotICAgIHZvaWQgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVj
dG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYpOworICAgIHZvaWQgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYp
OwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRP
ZlN0b3JhZ2VBY2Nlc3MmJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVySUQsIE9wZW5l
ckRvbWFpbiYmKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXgg
ODYzN2QyZjRiNmFhZDRlYzBhNTYxNDI3MGYxM2RlYjI5ZDUyMGQxMi4uMThiNjRmMTZiZWZkYzk3
YmJlOGMxMTE3ZDVjN2M0NDczZGNhNjk3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
QEAgLTY5MSwxMyArNjkxLDExIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYKICAgICB9CiB9CiAK
LXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NVcGRhdGVkKFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpQZXJTZXNzaW9uUmVzb3VyY2VMb2Fk
RGF0YSYmIHN0YXRpc3RpY3MpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGlj
cz4mJiBzdGF0aXN0aWNzKQogewotICAgIGZvciAoYXV0byYgaXRlciA6IHN0YXRpc3RpY3MpIHsK
LSAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3
b3JrU2Vzc2lvbihpdGVyLmZpcnN0KSkgewotICAgICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygp
KQotICAgICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnJlc291cmNlTG9hZFN0
YXRpc3RpY3NVcGRhdGVkKFdURk1vdmUoaXRlci5zZWNvbmQpKTsKLSAgICAgICAgfQorICAgIGlm
IChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKCkpIHsKKyAgICAg
ICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVz
b3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoV1RGTW92ZShzdGF0aXN0aWNzKSk7CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggNjcxMDIxNmE4N2Y1ZWU4NTA2
NTQ5NzQwZGU3Mzg5NDE3MzIxZjQxMy4uN2NmZDgzZDUyMWM5YmU5M2Y0MDMxZGM3NjcxZGZmY2Mw
YTRlZTBiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMjQwLDcgKzI0MCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBjbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgbG9nVXNlckludGVy
YWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7Ci0gICAgdm9pZCByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVXBkYXRlZChXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6UGVyU2Vzc2lvblJlc291
cmNlTG9hZERhdGEmJik7CisgICAgdm9pZCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChW
ZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik7CiAgICAgdm9pZCBoYXNT
dG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1l
RG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2Fz
U2hvd24pPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJiBvcGVuZXJEb21haW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KaW5kZXggOTIwNWJiZjE5ZWNiOTBiMmU4ODQ4NDYwNzFjMmQ3MDg3ODE2OTk2MC4u
MmFkMzEzYWI4MjRkNTFkYWNiNjgyOWUzZDliMTVlMGI3NzVjYTNkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC01OSwxMCArNTksNyBAQCBtZXNzYWdl
cyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAg
UmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpOwogICAgIENsZWFyUGFnZVNwZWNp
ZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
cGFnZUlEKTsKICAgICBMb2dVc2VySW50ZXJhY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gZG9tYWluKQotICAgIAotICAgICMgRklYTUU6IFN0b3AgcGFzc2luZyBzZXNzaW9uSURzLgot
ICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxzdGQ6OnBhaXI8UEFMOjpT
ZXNzaW9uSUQsIFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPj4+IHN0YXRp
c3RpY3MpCi0KKyAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29y
ZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gc3RhdGlzdGljcykKICAgICBIYXNTdG9yYWdlQWNj
ZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGJvb2wgaGFzU3Rv
cmFnZUFjY2VzcykgQXN5bmMKICAgICBSZXF1ZXN0U3RvcmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
dG9wRnJhbWVEb21haW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmll
ciB3ZWJQYWdlUHJveHlJRCkgLT4gKGVudW06Ym9vbCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2Fz
R3JhbnRlZCB3YXNHcmFudGVkLCBlbnVtOmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duIHByb21wdFdhc1Nob3duKSBBc3luYwogICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNz
VW5kZXJPcGVuZXIoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluSW5OZWVkT2ZTdG9y
YWdlQWNjZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIG9wZW5lckRvbWFpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXIuY3BwCmluZGV4IGUxYjRiOWViM2YzODRmNWY1ZmYyOTEzMWE5M2M4ZmQ2ZGYwYzA2
NTEuLmY5MTc4NWFjZDgzYjhlZGY1ODA5ZWZmM2ViNTM1NWMwM2I2M2JiZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRP
YnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcApAQCAtNDQsMTQgKzQ0LDE4IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBzdGF0aWMgY29uc3QgU2Vjb25kcyBtaW5pbXVtTm90aWZpY2F0
aW9uSW50ZXJ2YWwgeyA1X3MgfTsKIAotc3RhdGljIGJvb2wgaXMzeHhSZWRpcmVjdChjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK2Jv
b2wgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNob3VsZExvZ1VzZXJJbnRlcmFjdGlvbiB7IGZh
bHNlIH07CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFNob3VsZExvZ1VzZXJJ
bnRlcmFjdGlvbihib29sIHZhbHVlKQogewotICAgIHJldHVybiByZXNwb25zZS5odHRwU3RhdHVz
Q29kZSgpID49IDMwMCAmJiByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpIDw9IDM5OTsKKyAgICBz
aG91bGRMb2dVc2VySW50ZXJhY3Rpb24gPSB2YWx1ZTsKIH0KKyNlbmRpZgogCi1zdGF0aWMgYm9v
bCBzaG91bGRMb2dSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCkKK3N0YXRpYyBib29sIGlzM3h4UmVkaXJlY3QoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCiB7Ci0gICAgcmV0dXJuIERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6cmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQoKSAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCk7CisgICAg
cmV0dXJuIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPj0gMzAwICYmIHJlc3BvbnNlLmh0dHBT
dGF0dXNDb2RlKCkgPD0gMzk5OwogfQogCiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6V2ViUmVz
b3VyY2VMb2FkT2JzZXJ2ZXIoKQpAQCAtNTksNyArNjMsNyBAQCBXZWJSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIoKQogewogfQogCi12b2lkIFdlYlJlc291cmNl
TG9hZE9ic2VydmVyOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNz
LCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIERvY3VtZW50JiBvcGVuZXJEb2N1bWVudCkK
K3ZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJP
cGVuZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vz
cywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBEb2N1bWVudCYgb3BlbmVyRG9jdW1lbnQp
CiB7CiAgICAgYXV0byBvcGVuZXJVcmwgPSBvcGVuZXJEb2N1bWVudC51cmwoKTsKICAgICBSZWdp
c3RyYWJsZURvbWFpbiBvcGVuZXJEb21haW4geyBvcGVuZXJVcmwgfTsKQEAgLTczLDIxICs3Nywx
NiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1Vu
ZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklELCBjbwogICAgIH0KIH0KICAgICAKLVJlc291cmNlTG9h
ZFN0YXRpc3RpY3MmIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjplbnN1cmVSZXNvdXJjZVN0YXRp
c3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCitSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBXZWJS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFi
bGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikKIHsKLSAgICBhdXRvIGFk
ZFJlc3VsdCA9IG1fcGVyU2Vzc2lvblJlc291cmNlU3RhdGlzdGljc01hcC5lbnN1cmUoc2Vzc2lv
bklELCBbXSB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEhhc2hNYXA8UmVnaXN0cmFibGVE
b21haW4sIFJlc291cmNlTG9hZFN0YXRpc3RpY3M+PigpOwotICAgIH0pOwotCi0gICAgYXV0byBh
ZGREb21haW5SZXN1bHQgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5lbnN1cmUoZG9tYWlu
LCBbJmRvbWFpbl0geworICAgIHJldHVybiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5lbnN1cmUo
ZG9tYWluLCBbJmRvbWFpbl0gewogICAgICAgICByZXR1cm4gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyhkb21haW4pOwotICAgIH0pOwotICAgIHJldHVybiBhZGREb21haW5SZXN1bHQuaXRlcmF0b3It
PnZhbHVlOworICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6c2NoZWR1bGVOb3RpZmljYXRpb25JZk5lZWRlZCgpCiB7Ci0gICAgaWYgKG1f
cGVyU2Vzc2lvblJlc291cmNlU3RhdGlzdGljc01hcC5pc0VtcHR5KCkpIHsKKyAgICBpZiAobV9y
ZXNvdXJjZVN0YXRpc3RpY3NNYXAuaXNFbXB0eSgpKSB7CiAgICAgICAgIG1fbm90aWZpY2F0aW9u
VGltZXIuc3RvcCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTAyLDUyICsxMDEsMzcg
QEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6dXBkYXRlQ2VudHJhbFN0YXRpc3RpY3NT
dG9yZSgpCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZCh0YWtlU3RhdGlzdGlj
cygpKSwgMCk7CiB9CiAKLVN0cmluZyBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c3RhdGlzdGlj
c0ZvclVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsKQorU3RyaW5n
IFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzdGF0aXN0aWNzRm9yVVJMKGNvbnN0IFVSTCYgdXJs
KQogewotICAgIGF1dG8qIHJlc291cmNlU3RhdGlzdGljc0J5RG9tYWluID0gbV9wZXJTZXNzaW9u
UmVzb3VyY2VTdGF0aXN0aWNzTWFwLmdldChzZXNzaW9uSUQpOwotICAgIGlmICghcmVzb3VyY2VT
dGF0aXN0aWNzQnlEb21haW4pCi0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotCi0gICAg
YXV0byBpdGVyID0gcmVzb3VyY2VTdGF0aXN0aWNzQnlEb21haW4tPmZpbmQoUmVnaXN0cmFibGVE
b21haW4geyB1cmwgfSk7Ci0gICAgaWYgKGl0ZXIgPT0gcmVzb3VyY2VTdGF0aXN0aWNzQnlEb21h
aW4tPmVuZCgpKQorICAgIGF1dG8gaXRlciA9IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmZpbmQo
UmVnaXN0cmFibGVEb21haW4geyB1cmwgfSk7CisgICAgaWYgKGl0ZXIgPT0gbV9yZXNvdXJjZVN0
YXRpc3RpY3NNYXAuZW5kKCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAg
cmV0dXJuIG1ha2VTdHJpbmcoIlN0YXRpc3RpY3MgZm9yICIsIHVybC5ob3N0KCkudG9TdHJpbmco
KSwgIjpcbiIsIGl0ZXItPnZhbHVlLnRvU3RyaW5nKCkpOwogfQogCi1hdXRvIFdlYlJlc291cmNl
TG9hZE9ic2VydmVyOjp0YWtlU3RhdGlzdGljcygpIC0+IFBlclNlc3Npb25SZXNvdXJjZUxvYWRE
YXRhCitWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gV2ViUmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OnRha2VTdGF0aXN0aWNzKCkKIHsKLSAgICBQZXJTZXNzaW9uUmVzb3VyY2VMb2FkRGF0YSBw
ZXJTZXNzaW9uU3RhdGlzdGljczsKLQotICAgIGZvciAoYXV0byYgaXRlciA6IG1fcGVyU2Vzc2lv
blJlc291cmNlU3RhdGlzdGljc01hcCkgewotICAgICAgICBWZWN0b3I8UmVzb3VyY2VMb2FkU3Rh
dGlzdGljcz4gc3RhdGlzdGljczsKLSAgICAgICAgc3RhdGlzdGljcy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KGl0ZXIudmFsdWUtPnNpemUoKSk7Ci0KLSAgICAgICAgZm9yIChhdXRvJiBzdGF0aXN0
aWMgOiBpdGVyLnZhbHVlLT52YWx1ZXMoKSkKLSAgICAgICAgICAgIHN0YXRpc3RpY3MudW5jaGVj
a2VkQXBwZW5kKFdURk1vdmUoc3RhdGlzdGljKSk7Ci0KLSAgICAgICAgcGVyU2Vzc2lvblN0YXRp
c3RpY3MuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGl0ZXIua2V5LCBXVEZNb3ZlKHN0YXRpc3RpY3Mp
KSk7Ci0gICAgfQotICAgIAotICAgIG1fcGVyU2Vzc2lvblJlc291cmNlU3RhdGlzdGljc01hcC5j
bGVhcigpOwotICAgIHJldHVybiBwZXJTZXNzaW9uU3RhdGlzdGljczsKKyAgICBWZWN0b3I8UmVz
b3VyY2VMb2FkU3RhdGlzdGljcz4gc3RhdGlzdGljczsKKyAgICBzdGF0aXN0aWNzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkobV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuc2l6ZSgpKTsKKyAgICBmb3Ig
KGF1dG8mIHN0YXRpc3RpYyA6IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnZhbHVlcygpKQorICAg
ICAgICBzdGF0aXN0aWNzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKHN0YXRpc3RpYykpOworICAg
IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmNsZWFyKCk7CisgICAgcmV0dXJuIHN0YXRpc3RpY3M7
CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmNsZWFyU3RhdGUoKQogewogICAg
IG1fbm90aWZpY2F0aW9uVGltZXIuc3RvcCgpOwotICAgIG1fcGVyU2Vzc2lvblJlc291cmNlU3Rh
dGlzdGljc01hcC5jbGVhcigpOworICAgIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmNsZWFyKCk7
CiAgICAgbV9sYXN0UmVwb3J0ZWRVc2VySW50ZXJhY3Rpb25NYXAuY2xlYXIoKTsKIH0KIAogdm9p
ZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nRm9udExvYWQoY29uc3QgRG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBTdHJpbmcmIGZhbWlseU5hbWUsIGJvb2wgbG9hZFN0YXR1cykKIHsKICNp
ZiBFTkFCTEUoV0VCX0FQSV9TVEFUSVNUSUNTKQotICAgIGlmICghc2hvdWxkTG9nUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyhkb2N1bWVudC5zZXNzaW9uSUQoKSkpCi0gICAgICAgIHJldHVybjsKLQog
ICAgIFJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluIHsgZG9jdW1lbnQudXJsKCkg
fTsKLSAgICBhdXRvJiBzdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVn
aXN0cmFibGVEb21haW4oZG9jdW1lbnQuc2Vzc2lvbklELCByZWdpc3RyYWJsZURvbWFpbik7Cisg
ICAgYXV0byYgc3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJh
YmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKTsKICAgICBib29sIHNob3VsZENhbGxOb3RpZmlj
YXRpb25DYWxsYmFjayA9IGZhbHNlOwogICAgIGlmICghbG9hZFN0YXR1cykgewogICAgICAgICBp
ZiAoc3RhdGlzdGljcy5mb250c0ZhaWxlZFRvTG9hZC5hZGQoZmFtaWx5TmFtZSkuaXNOZXdFbnRy
eSkKQEAgLTE3MSwxMSArMTU1LDggQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9n
Rm9udExvYWQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcKIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ0NhbnZhc1JlYWQoY29uc3QgRG9jdW1lbnQmIGRvY3Vt
ZW50KQogewogI2lmIEVOQUJMRShXRUJfQVBJX1NUQVRJU1RJQ1MpCi0gICAgaWYgKCFzaG91bGRM
b2dSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKGRvY3VtZW50LnNlc3Npb25JRCgpKSkKLSAgICAgICAg
cmV0dXJuOwotCiAgICAgUmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4geyBkb2N1
bWVudC51cmwoKSB9OwotICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRp
c3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihkb2N1bWVudC5zZXNzaW9uSUQoKSwgcmVnaXN0cmFi
bGVEb21haW4pOworICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3Rp
Y3NGb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbik7CiAgICAgUmVnaXN0cmFi
bGVEb21haW4gbWFpbkZyYW1lUmVnaXN0cmFibGVEb21haW4geyBkb2N1bWVudC50b3BEb2N1bWVu
dCgpLnVybCgpIH07CiAgICAgc3RhdGlzdGljcy5jYW52YXNBY3Rpdml0eVJlY29yZC53YXNEYXRh
UmVhZCA9IHRydWU7CiAgICAgaWYgKHN0YXRpc3RpY3MudG9wRnJhbWVSZWdpc3RyYWJsZURvbWFp
bnNXaGljaEFjY2Vzc2VkV2ViQVBJcy5hZGQobWFpbkZyYW1lUmVnaXN0cmFibGVEb21haW4uc3Ry
aW5nKCkpLmlzTmV3RW50cnkpCkBAIC0xODgsMTEgKzE2OSw4IEBAIHZvaWQgV2ViUmVzb3VyY2VM
b2FkT2JzZXJ2ZXI6OmxvZ0NhbnZhc1JlYWQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogdm9p
ZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nQ2FudmFzV3JpdGVPck1lYXN1cmUoY29uc3Qg
RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRleHRXcml0dGVuKQogewogI2lmIEVO
QUJMRShXRUJfQVBJX1NUQVRJU1RJQ1MpCi0gICAgaWYgKCFzaG91bGRMb2dSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKGRvY3VtZW50LnNlc3Npb25JRCgpKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAg
UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4geyBkb2N1bWVudC51cmwoKSB9Owot
ICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3Ry
YWJsZURvbWFpbihkb2N1bWVudC5zZXNzaW9uSUQsIHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBh
dXRvJiBzdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVE
b21haW4ocmVnaXN0cmFibGVEb21haW4pOwogICAgIGJvb2wgc2hvdWxkQ2FsbE5vdGlmaWNhdGlv
bkNhbGxiYWNrID0gZmFsc2U7CiAgICAgUmVnaXN0cmFibGVEb21haW4gbWFpbkZyYW1lUmVnaXN0
cmFibGVEb21haW4geyBkb2N1bWVudC50b3BEb2N1bWVudCgpLnVybCgpIH07CiAgICAgaWYgKHN0
YXRpc3RpY3MuY2FudmFzQWN0aXZpdHlSZWNvcmQucmVjb3JkV3JpdHRlbk9yTWVhc3VyZWRUZXh0
KHRleHRXcml0dGVuKSkKQEAgLTIxMCwxMSArMTg4LDggQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6bG9nQ2FudmFzV3JpdGVPck1lYXN1cmUoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50
LAogdm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nTmF2aWdhdG9yQVBJQWNjZXNzZWQo
Y29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpO
YXZpZ2F0b3JBUEkgZnVuY3Rpb25OYW1lKQogewogI2lmIEVOQUJMRShXRUJfQVBJX1NUQVRJU1RJ
Q1MpCi0gICAgaWYgKCFzaG91bGRMb2dSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKGRvY3VtZW50LnNl
c3Npb25JRCgpKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgUmVnaXN0cmFibGVEb21haW4gcmVn
aXN0cmFibGVEb21haW4geyBkb2N1bWVudC51cmwoKSB9OwotICAgIGF1dG8mIHN0YXRpc3RpY3Mg
PSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihkb2N1bWVudC5z
ZXNzaW9uSUQsIHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBhdXRvJiBzdGF0aXN0aWNzID0gZW5z
dXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21h
aW4pOwogICAgIGJvb2wgc2hvdWxkQ2FsbE5vdGlmaWNhdGlvbkNhbGxiYWNrID0gZmFsc2U7CiAg
ICAgaWYgKCFzdGF0aXN0aWNzLm5hdmlnYXRvckZ1bmN0aW9uc0FjY2Vzc2VkLmNvbnRhaW5zKGZ1
bmN0aW9uTmFtZSkpIHsKICAgICAgICAgc3RhdGlzdGljcy5uYXZpZ2F0b3JGdW5jdGlvbnNBY2Nl
c3NlZC5hZGQoZnVuY3Rpb25OYW1lKTsKQEAgLTIzNCwxMSArMjA5LDggQEAgdm9pZCBXZWJSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6bG9nTmF2aWdhdG9yQVBJQWNjZXNzZWQoY29uc3QgRG9jdW1lbnQm
IGRvY3VtZW50LAogdm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nU2NyZWVuQVBJQWNj
ZXNzZWQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzOjpTY3JlZW5BUEkgZnVuY3Rpb25OYW1lKQogewogI2lmIEVOQUJMRShXRUJfQVBJX1NUQVRJ
U1RJQ1MpCi0gICAgaWYgKCFzaG91bGRMb2dSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKGRvY3VtZW50
LnNlc3Npb25JRCgpKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgUmVnaXN0cmFibGVEb21haW4g
cmVnaXN0cmFibGVEb21haW4geyBkb2N1bWVudC51cmwoKSB9OwotICAgIGF1dG8mIHN0YXRpc3Rp
Y3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihkb2N1bWVu
dC5zZXNzaW9uSUQsIHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBhdXRvJiBzdGF0aXN0aWNzID0g
ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVE
b21haW4pOwogICAgIGJvb2wgc2hvdWxkQ2FsbE5vdGlmaWNhdGlvbkNhbGxiYWNrID0gZmFsc2U7
CiAgICAgaWYgKCFzdGF0aXN0aWNzLnNjcmVlbkZ1bmN0aW9uc0FjY2Vzc2VkLmNvbnRhaW5zKGZ1
bmN0aW9uTmFtZSkpIHsKICAgICAgICAgc3RhdGlzdGljcy5zY3JlZW5GdW5jdGlvbnNBY2Nlc3Nl
ZC5hZGQoZnVuY3Rpb25OYW1lKTsKQEAgLTI2Myw3ICsyMzUsNyBAQCB2b2lkIFdlYlJlc291cmNl
TG9hZE9ic2VydmVyOjpsb2dTdWJyZXNvdXJjZUxvYWRpbmcoY29uc3QgRnJhbWUqIGZyYW1lLCBj
b25zdCBSZQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2Uo
KTsKLSAgICBpZiAoIXBhZ2UgfHwgIXNob3VsZExvZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3MocGFn
ZS0+c2Vzc2lvbklEKCkpKQorICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Ym9vbCBpc1JlZGlyZWN0ID0gaXMzeHhSZWRpcmVjdChyZWRpcmVjdFJlc3BvbnNlKTsKQEAgLTI4
NSw3ICsyNTcsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dTdWJyZXNvdXJj
ZUxvYWRpbmcoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZQogICAgICAgICByZXR1cm47CiAK
ICAgICB7Ci0gICAgICAgIGF1dG8mIHRhcmdldFN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0
YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihwYWdlLT5zZXNzaW9uSUQoKSwgdGFyZ2V0RG9t
YWluKTsKKyAgICAgICAgYXV0byYgdGFyZ2V0U3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3Rh
dGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHRhcmdldERvbWFpbik7CiAgICAgICAgIGF1dG8g
bGFzdFNlZW4gPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpyZWR1Y2VUaW1lUmVzb2x1dGlvbihX
YWxsVGltZTo6bm93KCkpOwogICAgICAgICB0YXJnZXRTdGF0aXN0aWNzLmxhc3RTZWVuID0gbGFz
dFNlZW47CiAgICAgICAgIHRhcmdldFN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmRlclRvcEZyYW1l
RG9tYWlucy5hZGQodG9wRnJhbWVEb21haW4pOwpAQCAtMjk0LDIwICsyNjYsMTcgQEAgdm9pZCBX
ZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nU3VicmVzb3VyY2VMb2FkaW5nKGNvbnN0IEZyYW1l
KiBmcmFtZSwgY29uc3QgUmUKICAgICB9CiAKICAgICBpZiAoaXNSZWRpcmVjdCkgewotICAgICAg
ICBhdXRvJiByZWRpcmVjdGluZ09yaWdpblN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRp
c3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihwYWdlLT5zZXNzaW9uSUQoKSwgcmVkaXJlY3RlZEZy
b21Eb21haW4pOworICAgICAgICBhdXRvJiByZWRpcmVjdGluZ09yaWdpblN0YXRpc3RpY3MgPSBl
bnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihyZWRpcmVjdGVkRnJv
bURvbWFpbik7CiAgICAgICAgIHJlZGlyZWN0aW5nT3JpZ2luU3RhdGlzdGljcy5zdWJyZXNvdXJj
ZVVuaXF1ZVJlZGlyZWN0c1RvLmFkZCh0YXJnZXREb21haW4pOwotICAgICAgICBhdXRvJiB0YXJn
ZXRTdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21h
aW4ocGFnZS0+c2Vzc2lvbklEKCksIHRhcmdldERvbWFpbik7CisgICAgICAgIGF1dG8mIHRhcmdl
dFN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFp
bih0YXJnZXREb21haW4pOwogICAgICAgICB0YXJnZXRTdGF0aXN0aWNzLnN1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RzRnJvbS5hZGQocmVkaXJlY3RlZEZyb21Eb21haW4pOwogCiAgICAgICAgIHNj
aGVkdWxlTm90aWZpY2F0aW9uSWZOZWVkZWQoKTsKICAgICB9CiB9CiAKLXZvaWQgV2ViUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI6OmxvZ1dlYlNvY2tldExvYWRpbmcoY29uc3QgVVJMJiB0YXJnZXRVUkws
IGNvbnN0IFVSTCYgbWFpbkZyYW1lVVJMLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit2b2lk
IFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dXZWJTb2NrZXRMb2FkaW5nKGNvbnN0IFVSTCYg
dGFyZ2V0VVJMLCBjb25zdCBVUkwmIG1haW5GcmFtZVVSTCkKIHsKLSAgICBpZiAoIXNob3VsZExv
Z1Jlc291cmNlTG9hZFN0YXRpc3RpY3Moc2Vzc2lvbklEKSkKLSAgICAgICAgcmV0dXJuOwotCiAg
ICAgYXV0byB0YXJnZXRIb3N0ID0gdGFyZ2V0VVJMLmhvc3QoKTsKICAgICBhdXRvIG1haW5GcmFt
ZUhvc3QgPSBtYWluRnJhbWVVUkwuaG9zdCgpOwogICAgIApAQCAtMzIyLDcgKzI5MSw3IEBAIHZv
aWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1dlYlNvY2tldExvYWRpbmcoY29uc3QgVVJM
JiB0YXJnZXRVUkwsIGNvbnN0IFVSCiAKICAgICBhdXRvIGxhc3RTZWVuID0gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljczo6cmVkdWNlVGltZVJlc29sdXRpb24oV2FsbFRpbWU6Om5vdygpKTsKIAotICAg
IGF1dG8mIHRhcmdldFN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdp
c3RyYWJsZURvbWFpbihzZXNzaW9uSUQsIHRhcmdldERvbWFpbik7CisgICAgYXV0byYgdGFyZ2V0
U3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWlu
KHRhcmdldERvbWFpbik7CiAgICAgdGFyZ2V0U3RhdGlzdGljcy5sYXN0U2VlbiA9IGxhc3RTZWVu
OwogICAgIHRhcmdldFN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucy5h
ZGQodG9wRnJhbWVEb21haW4pOwogCkBAIC0zMzEsOSArMzAwLDYgQEAgdm9pZCBXZWJSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6bG9nV2ViU29ja2V0TG9hZGluZyhjb25zdCBVUkwmIHRhcmdldFVSTCwg
Y29uc3QgVVIKIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nVXNlckludGVyYWN0
aW9uV2l0aFJlZHVjZWRUaW1lUmVzb2x1dGlvbihjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7
Ci0gICAgaWYgKCFkb2N1bWVudC5zZXNzaW9uSUQoKS5pc1ZhbGlkKCkgfHwgIXNob3VsZExvZ1Jl
c291cmNlTG9hZFN0YXRpc3RpY3MoZG9jdW1lbnQuc2Vzc2lvbklEKCkpKQotICAgICAgICByZXR1
cm47Ci0KICAgICBhdXRvJiB1cmwgPSBkb2N1bWVudC51cmwoKTsKICAgICBpZiAodXJsLnByb3Rv
Y29sSXNBYm91dCgpIHx8IHVybC5pc0xvY2FsRmlsZSgpIHx8IHVybC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTM0Niw3ICszMTIsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZE9ic2Vy
dmVyOjpsb2dVc2VySW50ZXJhY3Rpb25XaXRoUmVkdWNlZFRpbWVSZXNvbHV0aW9uKGNvbnN0CiAK
ICAgICBtX2xhc3RSZXBvcnRlZFVzZXJJbnRlcmFjdGlvbk1hcC5zZXQodG9wRnJhbWVEb21haW4s
IG5ld1RpbWUpOwogCi0gICAgYXV0byYgc3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlz
dGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKGRvY3VtZW50LnNlc3Npb25JRCgpLCB0b3BGcmFtZURv
bWFpbik7CisgICAgYXV0byYgc3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0Zv
clJlZ2lzdHJhYmxlRG9tYWluKHRvcEZyYW1lRG9tYWluKTsKICAgICBzdGF0aXN0aWNzLmhhZFVz
ZXJJbnRlcmFjdGlvbiA9IHRydWU7CiAgICAgc3RhdGlzdGljcy5sYXN0U2VlbiA9IG5ld1RpbWU7
CiAgICAgc3RhdGlzdGljcy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSA9IG5ld1RpbWU7
CkBAIC0zNTYsNyArMzIyLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nVXNl
ckludGVyYWN0aW9uV2l0aFJlZHVjZWRUaW1lUmVzb2x1dGlvbihjb25zdAogICAgICAgICAgICAg
aWYgKGF1dG8qIG9wZW5lckRvY3VtZW50ID0gb3BlbmVyLT5kb2N1bWVudCgpKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKGF1dG8qIG9wZW5lckZyYW1lID0gb3BlbmVyRG9jdW1lbnQtPmZyYW1lKCkp
IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8gb3BlbmVyUGFnZUlEID0gb3BlbmVyRnJh
bWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpKQotICAgICAgICAgICAgICAgICAgICAgICAg
cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihkb2N1bWVudC5zZXNzaW9uSUQoKSwgdG9w
RnJhbWVEb21haW4sIG9wZW5lclBhZ2VJRC52YWx1ZSgpLCAqb3BlbmVyRG9jdW1lbnQpOworICAg
ICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcih0b3BG
cmFtZURvbWFpbiwgb3BlbmVyUGFnZUlELnZhbHVlKCksICpvcGVuZXJEb2N1bWVudCk7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0zNjcsNyArMzMzLDcg
QEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nVXNlckludGVyYWN0aW9uV2l0aFJl
ZHVjZWRUaW1lUmVzb2x1dGlvbihjb25zdAogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TG9nVXNlckludGVyYWN0aW9uKHRvcEZy
YW1lRG9tYWluKSwgMCk7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBpZiAobV9z
aG91bGRMb2dVc2VySW50ZXJhY3Rpb24pIHsKKyAgICBpZiAoc2hvdWxkTG9nVXNlckludGVyYWN0
aW9uKSB7CiAgICAgICAgIGF1dG8gY291bnRlciA9ICsrbV9sb2dnaW5nQ291bnRlcjsKICNkZWZp
bmUgTE9DQUxfTE9HKHN0ciwgLi4uKSBcCiAgICAgICAgIFJFTEVBU0VfTE9HKFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MsICJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nVXNlckludGVyYWN0aW9uOiBj
b3VudGVyID0gJSIgUFJJdTY0ICI6ICIgc3RyLCBjb3VudGVyLCAjI19fVkFfQVJHU19fKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291
cmNlTG9hZE9ic2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAppbmRleCA4YWUyNGIxMTIxMjA5MzNmNTg1M2Ey
ZTFlYThjMDYzYWI5NzU5NTg4Li5kNmI4ZDg3NzU4NzhiNGI2OGM1MTc0YTk5NDg4YzkxM2RiNGQw
YWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaApAQCAtMzYsMTIgKzM2LDEw
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlciBm
aW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlciB7CiBwdWJsaWM6Ci0g
ICAgdXNpbmcgUGVyU2Vzc2lvblJlc291cmNlTG9hZERhdGEgPSBWZWN0b3I8c3RkOjpwYWlyPFBB
TDo6U2Vzc2lvbklELCBWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4+PjsK
LQogICAgIFdlYlJlc291cmNlTG9hZE9ic2VydmVyKCk7CiAgICAgCiAgICAgdm9pZCBsb2dTdWJy
ZXNvdXJjZUxvYWRpbmcoY29uc3QgV2ViQ29yZTo6RnJhbWUqLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UpIGZpbmFsOwotICAgIHZvaWQgbG9nV2ViU29ja2V0TG9hZGluZyhj
b25zdCBVUkwmIHRhcmdldFVSTCwgY29uc3QgVVJMJiBtYWluRnJhbWVVUkwsIFBBTDo6U2Vzc2lv
bklEKSBmaW5hbDsKKyAgICB2b2lkIGxvZ1dlYlNvY2tldExvYWRpbmcoY29uc3QgVVJMJiB0YXJn
ZXRVUkwsIGNvbnN0IFVSTCYgbWFpbkZyYW1lVVJMKSBmaW5hbDsKICAgICB2b2lkIGxvZ1VzZXJJ
bnRlcmFjdGlvbldpdGhSZWR1Y2VkVGltZVJlc29sdXRpb24oY29uc3QgV2ViQ29yZTo6RG9jdW1l
bnQmKSBmaW5hbDsKICAgICB2b2lkIGxvZ0ZvbnRMb2FkKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50
JiwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lLCBib29sIGxvYWRTdGF0dXMpIGZpbmFsOwogICAg
IHZvaWQgbG9nQ2FudmFzUmVhZChjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYpIGZpbmFsOwpAQCAt
NTAsMzAgKzQ4LDMwIEBAIHB1YmxpYzoKICAgICB2b2lkIGxvZ1NjcmVlbkFQSUFjY2Vzc2VkKGNv
bnN0IFdlYkNvcmU6OkRvY3VtZW50JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljczo6U2NyZWVuQVBJKSBmaW5hbDsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAg
IHZvaWQgc2V0U2hvdWxkTG9nVXNlckludGVyYWN0aW9uKGJvb2wgc2hvdWxkTG9nVXNlckludGVy
YWN0aW9uKSBmaW5hbCB7IG1fc2hvdWxkTG9nVXNlckludGVyYWN0aW9uID0gc2hvdWxkTG9nVXNl
ckludGVyYWN0aW9uOyB9CisgICAgc3RhdGljIHZvaWQgc2V0U2hvdWxkTG9nVXNlckludGVyYWN0
aW9uKGJvb2wpOwogI2VuZGlmCiAKLSAgICBTdHJpbmcgc3RhdGlzdGljc0ZvclVSTChQQUw6OlNl
c3Npb25JRCwgY29uc3QgVVJMJikgZmluYWw7CisgICAgU3RyaW5nIHN0YXRpc3RpY3NGb3JVUkwo
Y29uc3QgVVJMJikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVDZW50cmFsU3RhdGlzdGljc1N0b3Jl
KCkgZmluYWw7CiAgICAgdm9pZCBjbGVhclN0YXRlKCkgZmluYWw7CiAgICAgCi0gICAgYm9vbCBo
YXNTdGF0aXN0aWNzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIW1fcGVyU2Vzc2lvblJlc291cmNl
U3RhdGlzdGljc01hcC5pc0VtcHR5KCk7IH0KKyAgICBib29sIGhhc1N0YXRpc3RpY3MoKSBjb25z
dCBmaW5hbCB7IHJldHVybiAhbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuaXNFbXB0eSgpOyB9CiAK
IHByaXZhdGU6Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgZW5zdXJlUmVz
b3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4oUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyYgZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4o
Y29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsKICAgICB2b2lkIHNjaGVkdWxlTm90
aWZpY2F0aW9uSWZOZWVkZWQoKTsKIAotICAgIFBlclNlc3Npb25SZXNvdXJjZUxvYWREYXRhIHRh
a2VTdGF0aXN0aWNzKCk7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVy
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWlu
SW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdl
SUQsIFdlYkNvcmU6OkRvY3VtZW50JiBvcGVuZXJEb2N1bWVudCk7CisgICAgVmVjdG9yPFdlYkNv
cmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+IHRha2VTdGF0aXN0aWNzKCk7CisgICAgdm9pZCBy
ZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6RG9jdW1lbnQmIG9wZW5lckRvY3VtZW50KTsKIAot
ICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxIYXNoTWFwPFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPj4+
IG1fcGVyU2Vzc2lvblJlc291cmNlU3RhdGlzdGljc01hcDsKKyAgICBIYXNoTWFwPFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBtX3Jl
c291cmNlU3RhdGlzdGljc01hcDsKICAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluLCBXVEY6OldhbGxUaW1lPiBtX2xhc3RSZXBvcnRlZFVzZXJJbnRlcmFjdGlvbk1hcDsKIAog
ICAgIFdlYkNvcmU6OlRpbWVyIG1fbm90aWZpY2F0aW9uVGltZXI7CiAKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICB1aW50NjRfdCBtX2xvZ2dpbmdDb3VudGVyIHsgMCB9OwotICAgIGJv
b2wgbV9zaG91bGRMb2dVc2VySW50ZXJhY3Rpb24geyBmYWxzZSB9OworICAgIHN0YXRpYyBib29s
IHNob3VsZExvZ1VzZXJJbnRlcmFjdGlvbjsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGEwZjAxOWI3MmY1NTgxZTM5NjlhMDU0MGJhNjI3
YjU4MWJmZTAzZTIuLmUyODBjMThkNGNiODhkODYxYzE4YWM1ZmMxMWE1M2YzNjFiMmM3NGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTIxNSwxMCArMjE1LDYg
QEAgV2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAjZW5kaWYKIAogICAgIG1fcGx1Z0luQXV0b1N0
YXJ0T3JpZ2luSGFzaGVzLmFkZChQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBI
YXNoTWFwPHVuc2lnbmVkLCBXYWxsVGltZT4oKSk7Ci0KLSNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQotICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTaGFyZWQoKm5ldyBX
ZWJSZXNvdXJjZUxvYWRPYnNlcnZlcik7Ci0jZW5kaWYKICAgICAKICAgICBHaWdhY2FnZTo6Zm9y
YmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2UoKTsKIH0KQEAgLTQyOSw3ICs0MjUsNyBAQCB2
b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6c2hhcmVkKCkuc2V0U2hvdWxkTG9nVXNlckludGVyYWN0aW9uKHBhcmFtZXRlcnMu
c2hvdWxkTG9nVXNlckludGVyYWN0aW9uKTsKKyAgICBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
c2V0U2hvdWxkTG9nVXNlckludGVyYWN0aW9uKHBhcmFtZXRlcnMuc2hvdWxkTG9nVXNlckludGVy
YWN0aW9uKTsKICNlbmRpZgogCiAgICAgUkVMRUFTRV9MT0coUHJvY2VzcywgIiVwIC0gV2ViUHJv
Y2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3M6IFByZXNlbnRpbmcgcHJvY2VzcyA9ICVkIiwgdGhp
cywgV2ViQ29yZTo6cHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKCkpOwpAQCAtNDU2LDYgKzQ1Miwx
MSBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKFdlYlBy
b2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcAogCiAgICAgc2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWQocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCk7CiAK
KyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIGlmIChwYXJhbWV0ZXJz
LnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkICYmICFwYXJhbWV0ZXJzLnNlc3Npb25JRC5p
c0VwaGVtZXJhbCgpKQorICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0U2hhcmVkKCpu
ZXcgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIpOworI2VuZGlmCisKICAgICBmb3IgKGF1dG8mIHN1
cHBsZW1lbnQgOiBtX3N1cHBsZW1lbnRzLnZhbHVlcygpKQogICAgICAgICBzdXBwbGVtZW50LT5z
ZXRXZWJzaXRlRGF0YVN0b3JlKHBhcmFtZXRlcnMpOwogCkBAIC0xNjUyLDcgKzE2NTMsOCBAQCB2
b2lkIFdlYlByb2Nlc3M6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5h
YmxlZCkKIHZvaWQgV2ViUHJvY2Vzczo6Y2xlYXJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkKIHsK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFJlc291cmNlTG9hZE9i
c2VydmVyOjpzaGFyZWQoKS5jbGVhclN0YXRlKCk7CisgICAgaWYgKGF1dG8qIG9ic2VydmVyID0g
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZElmRXhpc3RzKCkpCisgICAgICAgIG9ic2VydmVy
LT5jbGVhclN0YXRlKCk7CiAjZW5kaWYKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>