<?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>225117</bug_id>
          
          <creation_ts>2021-04-27 12:52:23 -0700</creation_ts>
          <short_desc>IPC::decoder::decode() should mark decoder as invalid when failing</short_desc>
          <delta_ts>2021-04-27 16:36:23 -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=225110</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>andersca</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1754747</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-27 12:52:23 -0700</bug_when>
    <thetext>IPC::decoder::decode() should mark decoder as invalid when failing, instead of relying on individual type decoders to do so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754749</commentid>
    <comment_count>1</comment_count>
      <attachid>427183</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-27 12:54:49 -0700</bug_when>
    <thetext>Created attachment 427183
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754758</commentid>
    <comment_count>2</comment_count>
      <attachid>427186</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-27 13:22:09 -0700</bug_when>
    <thetext>Created attachment 427186
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754766</commentid>
    <comment_count>3</comment_count>
      <attachid>427189</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-27 13:35:19 -0700</bug_when>
    <thetext>Created attachment 427189
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754826</commentid>
    <comment_count>4</comment_count>
      <attachid>427189</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-27 16:09:12 -0700</bug_when>
    <thetext>Comment on attachment 427189
Patch

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

&gt; Source/WebKit/ChangeLog:10
&gt; +        IPC::decoder::decode() should mark decoder as invalid when failing, instead of relying
&gt; +        on individual type decoders to do so. This makes type decoders a bit simpler and less
&gt; +        error-prone.

Seems like the risk here is if any caller was calling an individual type decoder directly. If it was, then the markInvalid no longer happens.

Benefit is very high, I definitely approve of this idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754840</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-27 16:35:31 -0700</bug_when>
    <thetext>Committed r276678 (237095@main): &lt;https://commits.webkit.org/237095@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 427189.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754841</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-27 16:36:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/77237455&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427183</attachid>
            <date>2021-04-27 12:54:49 -0700</date>
            <delta_ts>2021-04-27 13:22:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225117-20210427125448.patch</filename>
            <type>text/plain</type>
            <size>18860</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2NjUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWNkMjg3NGNlZjE1ZmU2
N2JiY2E0OGYxNWJjZTQ4Nzc3NzMzYTIxYy4uYWVjZDAwN2RjYWUxODdkODc4ZDU0YzBhYjc2MmIx
MjQyZGZhNmZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA0LTI3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSVBDOjpkZWNvZGVyOjpkZWNv
ZGUoKSBzaG91bGQgbWFyayBkZWNvZGVyIGFzIGludmFsaWQgd2hlbiBmYWlsaW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUxMTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJUEM6OmRlY29kZXI6OmRl
Y29kZSgpIHNob3VsZCBtYXJrIGRlY29kZXIgYXMgaW52YWxpZCB3aGVuIGZhaWxpbmcsIGluc3Rl
YWQgb2YgcmVseWluZworICAgICAgICBvbiBpbmRpdmlkdWFsIHR5cGUgZGVjb2RlcnMgdG8gZG8g
c28uIFRoaXMgbWFrZXMgdHlwZSBkZWNvZGVycyBhIGJpdCBzaW1wbGVyIGFuZCBsZXNzCisgICAg
ICAgIGVycm9yLXByb25lLgorCisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxp
Z2h0Lmg6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHQ6OmRlY29kZSk6CisKIDIwMjEt
MDQtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCBr
ZWVwIGxvY2FsIHN0b3JhZ2UgZGF0YSBpbiBtZW1vcnkgaW4gdGhlIE5ldHdvcmtQcm9jZXNzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDk1NWM4YzcxY2Y3YjFkNDFkYjEyZjcxY2E4ZmJkMGU1ZjI4NGM1MWUuLjEyNmNi
N2FmMTFhMmQ0Mzc5ODEzZTY1YjVmZWQwZjk4OThkNTg1ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzUgQEAKKzIwMjEtMDQtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBJUEM6OmRlY29kZXI6OmRlY29kZSgpIHNob3VsZCBtYXJrIGRlY29kZXIgYXMgaW52YWxp
ZCB3aGVuIGZhaWxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNTExNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIElQQzo6ZGVjb2Rlcjo6ZGVjb2RlKCkgc2hvdWxkIG1hcmsgZGVjb2RlciBhcyBpbnZh
bGlkIHdoZW4gZmFpbGluZywgaW5zdGVhZCBvZiByZWx5aW5nCisgICAgICAgIG9uIGluZGl2aWR1
YWwgdHlwZSBkZWNvZGVycyB0byBkbyBzby4gVGhpcyBtYWtlcyB0eXBlIGRlY29kZXJzIGEgYml0
IHNpbXBsZXIgYW5kIGxlc3MKKyAgICAgICAgZXJyb3ItcHJvbmUuCisKKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PENTdHJpbmc+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpkZWNvZGVTdHJpbmdUZXh0KToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNo
TWVzc2FnZVJlY2VpdmVyTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3Bh
dGNoU3luY01lc3NhZ2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcDoKKyAg
ICAgICAgKElQQzo6bV9kZXN0aW5hdGlvbklEKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGVj
b2Rlci5oOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpE
ZWNvZGVyOjpvcGVyYXRvcj4+KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2Fn
ZS5oOgorICAgICAgICAoSVBDOjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKElQQzo6aGFuZGxl
TWVzc2FnZVN5bmNocm9ub3VzKToKKyAgICAgICAgKElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9u
b3VzV2FudHNDb25uZWN0aW9uKToKKyAgICAgICAgKElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jKToK
KyAgICAgICAgKElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jV2FudHNDb25uZWN0aW9uKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luOjpQYXJhbWV0ZXJzOjpkZWNvZGUpOgorCiAyMDIxLTA0LTI3ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRG9uJ3Qga2VlcCBsb2NhbCBzdG9yYWdlIGRhdGEg
aW4gbWVtb3J5IGluIHRoZSBOZXR3b3JrUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAppbmRleCAzOWIzZmYyYjRhMmFhYTZhZDc5YjY2
ZDkyMGIyYjdjZjkzM2JlMjNmLi4wOGRiMTU3MzZhZDc2MjI2NDIwMzU3YjVlNjNmNjU4N2M1MDNk
NDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdo
bGlnaHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHQuaApAQCAtNzAsMTAgKzcwLDggQEAgT3B0aW9uYWw8QXBwSGlnaGxpZ2h0PiBBcHBIaWdobGln
aHQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghbGVuZ3RoKQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgaWYgKCFkZWNvZGVyLnRlbXBsYXRlIGJ1ZmZlcklz
TGFyZ2VFbm91Z2hUb0NvbnRhaW48dWludDhfdD4obGVuZ3RoLnZhbHVlKCkpKSB7Ci0gICAgICAg
IGRlY29kZXIubWFya0ludmFsaWQoKTsKKyAgICBpZiAoIWRlY29kZXIudGVtcGxhdGUgYnVmZmVy
SXNMYXJnZUVub3VnaFRvQ29udGFpbjx1aW50OF90PihsZW5ndGgudmFsdWUoKSkpCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGhpZ2hs
aWdodDsKICAgICBoaWdobGlnaHQuZ3JvdygqbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBhZWU4OWU2MjY5NmM1NjBmMGExOGJm
YjFkNjc2OTE2NTBlN2ZmMmFiLi5iNjI5MzllNmJhY2MyZmViNGEzNTEzZGFkMjk3ZTk5YWZjMWMz
MzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3Bw
CkBAIC05OCwxMCArOTgsOCBAQCBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBBcmd1bWVudENvZGVy
PENTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQ1N0cmluZwogICAgIH0KIAogICAg
IC8vIEJlZm9yZSBhbGxvY2F0aW5nIHRoZSBzdHJpbmcsIG1ha2Ugc3VyZSB0aGF0IHRoZSBkZWNv
ZGVyIGJ1ZmZlciBpcyBiaWcgZW5vdWdoLgotICAgIGlmICghZGVjb2Rlci5idWZmZXJJc0xhcmdl
RW5vdWdoVG9Db250YWluPGNoYXI+KGxlbmd0aCkpIHsKLSAgICAgICAgZGVjb2Rlci5tYXJrSW52
YWxpZCgpOworICAgIGlmICghZGVjb2Rlci5idWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluPGNo
YXI+KGxlbmd0aCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAKICAgICBjaGFyKiBi
dWZmZXI7CiAgICAgQ1N0cmluZyBzdHJpbmcgPSBDU3RyaW5nOjpuZXdVbmluaXRpYWxpemVkKGxl
bmd0aCwgYnVmZmVyKTsKQEAgLTE0MCwxMCArMTM4LDggQEAgdGVtcGxhdGUgPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+CiBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPFN0cmluZz4gZGVjb2RlU3RyaW5n
VGV4dChEZWNvZGVyJiBkZWNvZGVyLCB1aW50MzJfdCBsZW5ndGgpCiB7CiAgICAgLy8gQmVmb3Jl
IGFsbG9jYXRpbmcgdGhlIHN0cmluZywgbWFrZSBzdXJlIHRoYXQgdGhlIGRlY29kZXIgYnVmZmVy
IGlzIGJpZyBlbm91Z2guCi0gICAgaWYgKCFkZWNvZGVyLmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0Nv
bnRhaW48Q2hhcmFjdGVyVHlwZT4obGVuZ3RoKSkgewotICAgICAgICBkZWNvZGVyLm1hcmtJbnZh
bGlkKCk7CisgICAgaWYgKCFkZWNvZGVyLmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48Q2hh
cmFjdGVyVHlwZT4obGVuZ3RoKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9
CiAgICAgCiAgICAgQ2hhcmFjdGVyVHlwZSogYnVmZmVyOwogICAgIFN0cmluZyBzdHJpbmcgPSBT
dHJpbmc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKaW5kZXggOTc2ZDY1MjVlNjg4YWE4MmQz
ZmYwYTRkMTM1M2M3YjZiMTUwNWVlMi4uYmU2NDAzNzk1YTFjNWJkMjA5ZTcxYWFmMDNlNjExMDk2
NWE4ZDA3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRD
b2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5o
CkBAIC00MjgsMzMgKzQyOCwyNSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5l
Q2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbgogICAgIHN0YXRp
YyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9y
PFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5PiYgdmVjdG9y
KQogICAgIHsKICAgICAgICAgdWludDY0X3QgZGVjb2RlZFNpemU7Ci0gICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZGVjb2RlZFNpemUpKSB7Ci0gICAgICAgICAgICBkZWNvZGVyLm1hcmtJbnZh
bGlkKCk7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGVjb2RlZFNpemUpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFpc0luQm91bmRz
PHNpemVfdD4oZGVjb2RlZFNpemUpKSB7Ci0gICAgICAgICAgICBkZWNvZGVyLm1hcmtJbnZhbGlk
KCk7CisgICAgICAgIGlmICghaXNJbkJvdW5kczxzaXplX3Q+KGRlY29kZWRTaXplKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQogCiAgICAgICAgIGF1dG8gc2l6ZSA9IHN0
YXRpY19jYXN0PHNpemVfdD4oZGVjb2RlZFNpemUpOwogCiAgICAgICAgIC8vIFNpbmNlIHdlIGtu
b3cgdGhlIHRvdGFsIHNpemUgb2YgdGhlIGVsZW1lbnRzLCB3ZSBjYW4gYWxsb2NhdGUgdGhlIHZl
Y3RvciBpbgogICAgICAgICAvLyBvbmUgZmVsbCBzd29vcC4gQmVmb3JlIGFsbG9jYXRpbmcgd2Ug
bXVzdCBob3dldmVyIG1ha2Ugc3VyZSB0aGF0IHRoZSBkZWNvZGVyIGJ1ZmZlcgogICAgICAgICAv
LyBpcyBiaWcgZW5vdWdoLgotICAgICAgICBpZiAoIWRlY29kZXIuYnVmZmVySXNMYXJnZUVub3Vn
aFRvQ29udGFpbjxUPihzaXplKSkgewotICAgICAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgp
OworICAgICAgICBpZiAoIWRlY29kZXIuYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjxUPihz
aXplKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQogCiAgICAgICAgIFZl
Y3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT4gdGVt
cDsKICAgICAgICAgdGVtcC5ncm93KHNpemUpOwogCi0gICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4odGVtcC5kYXRhKCkp
LCBzaXplICogc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKSkgewotICAgICAgICAgICAgZGVjb2Rlci5t
YXJrSW52YWxpZCgpOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRh
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHRlbXAuZGF0YSgpKSwgc2l6ZSAqIHNpemVvZihU
KSwgYWxpZ25vZihUKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KIAog
ICAgICAgICB2ZWN0b3Iuc3dhcCh0ZW1wKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC00NjMs
MzMgKzQ1NSwyNSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHks
IHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbgogICAgIHN0YXRpYyBPcHRpb25h
bDxWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+
PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7CiAgICAgICAgIHVpbnQ2NF90IGRlY29k
ZWRTaXplOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRlY29kZWRTaXplKSkgewotICAg
ICAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgpOworICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGRlY29kZWRTaXplKSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAg
ICAgIH0KIAotICAgICAgICBpZiAoIWlzSW5Cb3VuZHM8c2l6ZV90PihkZWNvZGVkU2l6ZSkpIHsK
LSAgICAgICAgICAgIGRlY29kZXIubWFya0ludmFsaWQoKTsKKyAgICAgICAgaWYgKCFpc0luQm91
bmRzPHNpemVfdD4oZGVjb2RlZFNpemUpKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKLSAgICAgICAgfQogCiAgICAgICAgIGF1dG8gc2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4o
ZGVjb2RlZFNpemUpOwogCiAgICAgICAgIC8vIFNpbmNlIHdlIGtub3cgdGhlIHRvdGFsIHNpemUg
b2YgdGhlIGVsZW1lbnRzLCB3ZSBjYW4gYWxsb2NhdGUgdGhlIHZlY3RvciBpbgogICAgICAgICAv
LyBvbmUgZmVsbCBzd29vcC4gQmVmb3JlIGFsbG9jYXRpbmcgd2UgbXVzdCBob3dldmVyIG1ha2Ug
c3VyZSB0aGF0IHRoZSBkZWNvZGVyIGJ1ZmZlcgogICAgICAgICAvLyBpcyBiaWcgZW5vdWdoLgot
ICAgICAgICBpZiAoIWRlY29kZXIuYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjxUPihzaXpl
KSkgewotICAgICAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgpOworICAgICAgICBpZiAoIWRl
Y29kZXIuYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjxUPihzaXplKSkKICAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIFZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT4gdmVjdG9y
OwogICAgICAgICB2ZWN0b3IuZ3JvdyhzaXplKTsKIAotICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHZlY3Rvci5kYXRh
KCkpLCBzaXplICogc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKSkgewotICAgICAgICAgICAgZGVjb2Rl
ci5tYXJrSW52YWxpZCgpOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhE
YXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHZlY3Rvci5kYXRhKCkpLCBzaXplICogc2l6
ZW9mKFQpLCBhbGlnbm9mKFQpKSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0g
ICAgICAgIH0KIAogICAgICAgICByZXR1cm4gdmVjdG9yOwogICAgIH0KQEAgLTUyNSwxNCArNTA5
LDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBl
bmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpCiAgICAgICAgICAgICBpZiAoVU5MSUtFTFko
IXZhbHVlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgICAg
ICAgICBpZiAoVU5MSUtFTFkoIUhhc2hNYXBUeXBlOjppc1ZhbGlkS2V5KCprZXkpKSkgewotICAg
ICAgICAgICAgICAgIGRlY29kZXIubWFya0ludmFsaWQoKTsKKyAgICAgICAgICAgIGlmIChVTkxJ
S0VMWSghSGFzaE1hcFR5cGU6OmlzVmFsaWRLZXkoKmtleSkpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChVTkxJ
S0VMWSghaGFzaE1hcC5hZGQoV1RGTW92ZSgqa2V5KSwgV1RGTW92ZSgqdmFsdWUpKS5pc05ld0Vu
dHJ5KSkgewogICAgICAgICAgICAgICAgIC8vIFRoZSBoYXNoIG1hcCBhbHJlYWR5IGhhcyB0aGUg
c3BlY2lmaWVkIGtleSwgYmFpbC4KLSAgICAgICAgICAgICAgICBkZWNvZGVyLm1hcmtJbnZhbGlk
KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQpAQCAtNTg1LDE0ICs1NjYsMTEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJn
LCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIEhhc2gK
ICAgICAgICAgICAgIGlmICgha2V5KQogICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiAKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWSghSGFzaFNldFR5cGU6OmlzVmFsaWRWYWx1
ZSgqa2V5KSkpIHsKLSAgICAgICAgICAgICAgICBkZWNvZGVyLm1hcmtJbnZhbGlkKCk7CisgICAg
ICAgICAgICBpZiAoVU5MSUtFTFkoIUhhc2hTZXRUeXBlOjppc1ZhbGlkVmFsdWUoKmtleSkpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGlmIChVTkxJS0VMWSghaGFzaFNldC5hZGQoV1RGTW92ZSgqa2V5KSkuaXNOZXdF
bnRyeSkpIHsKICAgICAgICAgICAgICAgICAvLyBUaGUgaGFzaCBzZXQgYWxyZWFkeSBoYXMgdGhl
IHNwZWNpZmllZCBrZXksIGJhaWwuCi0gICAgICAgICAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxp
ZCgpOwogICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KQEAgLTYzMCwxNCArNjA4LDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIEtleUFy
ZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnPiBzdHJ1Y3QgQXJndW1l
CiAgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvdW50KSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWSghSGFzaENvdW50ZWRT
ZXRUeXBlOjppc1ZhbGlkVmFsdWUoa2V5KSkpIHsKLSAgICAgICAgICAgICAgICBkZWNvZGVyLm1h
cmtJbnZhbGlkKCk7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIUhhc2hDb3VudGVkU2V0VHlw
ZTo6aXNWYWxpZFZhbHVlKGtleSkpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKFVOTElLRUxZKCF0ZW1wSGFzaENvdW50ZWRT
ZXQuYWRkKGtleSwgY291bnQpLmlzTmV3RW50cnkpKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhl
IGhhc2ggY291bnRlZCBzZXQgYWxyZWFkeSBoYXMgdGhlIHNwZWNpZmllZCBrZXksIGJhaWwuCi0g
ICAgICAgICAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgpOwogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Db25uZWN0aW9uLmNwcAppbmRleCA2MzA2M2Y0NzQwMzdiZWRjMDQ5Nzk2ZWZmNjI4
OTM0ODk0YWUyZGQ5Li5jYTVkNWQ2Njg2OTA0NDg5OWMwMDU4ZGI3MTU5NDk2YWEwMWRjMjkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcApAQCAtMzkxLDcgKzM5
MSwxMiBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZVJlY2VpdmVyTWVzc2FnZShN
ZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcgogICAgIH0KIAogICAgIHVpbnQ2NF90IHN5
bmNSZXF1ZXN0SUQgPSAwOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHN5bmNSZXF1ZXN0SUQp
IHx8ICFzeW5jUmVxdWVzdElEKSB7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoc3luY1JlcXVl
c3RJRCkpIHsKKyAgICAgICAgLy8gV2UgcmVjZWl2ZWQgYW4gaW52YWxpZCBzeW5jIG1lc3NhZ2Uu
CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgdGhpcy4KKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBpZiAoIXN5bmNSZXF1ZXN0SUQpIHsKICAgICAgICAgLy8gV2UgcmVjZWl2ZWQgYW4gaW52
YWxpZCBzeW5jIG1lc3NhZ2UuCiAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgdGhpcy4KICAgICAg
ICAgZGVjb2Rlci0+bWFya0ludmFsaWQoKTsKQEAgLTkyNyw3ICs5MzIsMTEgQEAgdm9pZCBDb25u
ZWN0aW9uOjpkaXNwYXRjaFN5bmNNZXNzYWdlKERlY29kZXImIGRlY29kZXIpCiAgICAgQVNTRVJU
KGRlY29kZXIuaXNTeW5jTWVzc2FnZSgpKTsKIAogICAgIHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQg
PSAwOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3luY1JlcXVlc3RJRCkgfHwgIXN5bmNSZXF1
ZXN0SUQpIHsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN5bmNSZXF1ZXN0SUQpKSB7CisgICAg
ICAgIC8vIFdlIHJlY2VpdmVkIGFuIGludmFsaWQgc3luYyBtZXNzYWdlLgorICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGlmICghc3luY1JlcXVlc3RJRCkgewogICAgICAgICAvLyBXZSByZWNl
aXZlZCBhbiBpbnZhbGlkIHN5bmMgbWVzc2FnZS4KICAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxp
ZCgpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9EZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3Bw
CmluZGV4IGQ0ZDJkMDdlZWNkMzNmOWUyYzBjOGRlZTFmZDA4ODUyYjc0ZjI1MzEuLmExNDEzMTMz
NTNiNGU1YWY5YjNhOWU3NzE0OGMyNWExOGVhODlmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0RlY29kZXIuY3BwCkBAIC04NCwyMCArODQsMTQgQEAgRGVjb2Rlcjo6RGVjb2Rlcihjb25z
dCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCB2b2lkICgqYnVmZmVyRGVhbGxv
Y2EKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghZGVjb2RlKG1fbWVzc2FnZUZs
YWdzKSkgewotICAgICAgICBtYXJrSW52YWxpZCgpOworICAgIGlmICghZGVjb2RlKG1fbWVzc2Fn
ZUZsYWdzKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAotICAgIGlmICghZGVjb2RlKG1fbWVz
c2FnZU5hbWUpKSB7Ci0gICAgICAgIG1hcmtJbnZhbGlkKCk7CisgICAgaWYgKCFkZWNvZGUobV9t
ZXNzYWdlTmFtZSkpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKLSAgICBpZiAoIWRlY29kZSht
X2Rlc3RpbmF0aW9uSUQpKSB7Ci0gICAgICAgIG1hcmtJbnZhbGlkKCk7CisgICAgaWYgKCFkZWNv
ZGUobV9kZXN0aW5hdGlvbklEKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIH0KIAogRGVjb2Rl
cjo6RGVjb2Rlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBDb25z
dHJ1Y3RXaXRob3V0SGVhZGVyVGFnKQpAQCAtMTE3LDEwICsxMTEsOCBAQCBEZWNvZGVyOjpEZWNv
ZGVyKGNvbnN0IHVpbnQ4X3QqIHN0cmVhbSwgc2l6ZV90IHN0cmVhbVNpemUsIHVpbnQ2NF90IGRl
c3RpbmF0aW9uSQogICAgICwgbV9idWZmZXJEZWFsbG9jYXRvcihbXSAoY29uc3QgdWludDhfdCos
IHNpemVfdCkgeyB9KQogICAgICwgbV9kZXN0aW5hdGlvbklEKGRlc3RpbmF0aW9uSUQpCiB7Ci0g
ICAgaWYgKCFkZWNvZGUobV9tZXNzYWdlTmFtZSkpIHsKLSAgICAgICAgbWFya0ludmFsaWQoKTsK
KyAgICBpZiAoIWRlY29kZShtX21lc3NhZ2VOYW1lKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0K
IH0KIAogRGVjb2Rlcjo6fkRlY29kZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvRGVjb2Rlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5o
CmluZGV4IGVkMjE2Mzc2MzIzYWZiODBlM2FhMTU2ODU2YzhlMGM1ZjRiOGQ4YTcuLmY4MzlhMzc1
MjgwZDIyMDZiNWU3NTQ1ZDFlMzBhNmFkNjIxZDJiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9EZWNvZGVyLmgKQEAgLTg5LDI4ICs4OSwzNyBAQCBwdWJsaWM6CiAgICAgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgZGVjb2RlKFQmIHQpCiAgICAgewogICAgICAgICB1c2luZyBJbXBsID0gQXJn
dW1lbnRDb2RlcjxzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PFQ+
Piwgdm9pZD47Ci0gICAgICAgIGlmIGNvbnN0ZXhwcihIYXNMZWdhY3lEZWNvZGVyPFQsIEltcGw+
Ojp2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBJbXBsOjpkZWNvZGUoKnRoaXMsIHQpOwotICAg
ICAgICBlbHNlIHsKKyAgICAgICAgaWYgY29uc3RleHByKEhhc0xlZ2FjeURlY29kZXI8VCwgSW1w
bD46OnZhbHVlKSB7CisgICAgICAgICAgICBpZiAoIUltcGw6OmRlY29kZSgqdGhpcywgdCkpIHsK
KyAgICAgICAgICAgICAgICBtYXJrSW52YWxpZCgpOworICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIE9wdGlv
bmFsPFQ+IG9wdGlvbmFsOwogICAgICAgICAgICAgKnRoaXMgPj4gb3B0aW9uYWw7Ci0gICAgICAg
ICAgICBpZiAoIW9wdGlvbmFsKQorICAgICAgICAgICAgaWYgKCFvcHRpb25hbCkgeworICAgICAg
ICAgICAgICAgIG1hcmtJbnZhbGlkKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgfQogICAgICAgICAgICAgdCA9IFdURk1vdmUoKm9wdGlvbmFsKTsKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgRGVjb2RlciYgb3BlcmF0b3I+PihP
cHRpb25hbDxUPiYgdCkKICAgICB7CiAgICAgICAgIHVzaW5nIEltcGwgPSBBcmd1bWVudENvZGVy
PHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+LCB2b2lkPjsK
LSAgICAgICAgaWYgY29uc3RleHByKEhhc01vZGVybkRlY29kZXI8VCwgSW1wbD46OnZhbHVlKQor
ICAgICAgICBpZiBjb25zdGV4cHIoSGFzTW9kZXJuRGVjb2RlcjxULCBJbXBsPjo6dmFsdWUpIHsK
ICAgICAgICAgICAgIHQgPSBJbXBsOjpkZWNvZGUoKnRoaXMpOwotICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIGlmICghdCkKKyAgICAgICAgICAgICAgICBtYXJrSW52YWxpZCgpOworICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgVCB2OwogICAgICAgICAgICAgaWYgKEltcGw6OmRlY29k
ZSgqdGhpcywgdikpCiAgICAgICAgICAgICAgICAgdCA9IFdURk1vdmUodik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgbWFya0ludmFsaWQoKTsKICAgICAgICAgfQogICAgICAg
ICByZXR1cm4gKnRoaXM7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvSGFuZGxlTWVzc2FnZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxl
TWVzc2FnZS5oCmluZGV4IGU3NTNkMTEyYTQ3MTljNzJmOWY3MGFhNzkyYzVjMDQyZWI3ZDA4YWQu
LjQ5ODBlM2VkZWFiZmE4NmVlMzA3NDI1NWY2ZmJmNjUwYzRmZDBmOWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKQEAgLTExMywxMCArMTEzLDggQEAgdm9p
ZCBoYW5kbGVNZXNzYWdlKERlY29kZXImIGRlY29kZXIsIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24p
CiB7CiAgICAgT3B0aW9uYWw8dHlwZW5hbWUgQ29kaW5nVHlwZTx0eXBlbmFtZSBUOjpBcmd1bWVu
dHM+OjpUeXBlPiBhcmd1bWVudHM7CiAgICAgZGVjb2RlciA+PiBhcmd1bWVudHM7Ci0gICAgaWYg
KCFhcmd1bWVudHMpIHsKLSAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgpOworICAgIGlmICgh
YXJndW1lbnRzKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgY2FsbE1lbWJlckZ1bmN0
aW9uKFdURk1vdmUoKmFyZ3VtZW50cyksIG9iamVjdCwgZnVuY3Rpb24pOwogfQpAQCAtMTI2LDEw
ICsxMjQsOCBAQCB2b2lkIGhhbmRsZU1lc3NhZ2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVj
b2RlciYgZGVjb2RlciwgQyogb2JqZWN0LCBNRiBmdW5jdAogewogICAgIE9wdGlvbmFsPHR5cGVu
YW1lIENvZGluZ1R5cGU8dHlwZW5hbWUgVDo6QXJndW1lbnRzPjo6VHlwZT4gYXJndW1lbnRzOwog
ICAgIGRlY29kZXIgPj4gYXJndW1lbnRzOwotICAgIGlmICghYXJndW1lbnRzKSB7Ci0gICAgICAg
IGRlY29kZXIubWFya0ludmFsaWQoKTsKKyAgICBpZiAoIWFyZ3VtZW50cykKICAgICAgICAgcmV0
dXJuOwotICAgIH0KICAgICBjYWxsTWVtYmVyRnVuY3Rpb24oY29ubmVjdGlvbiwgV1RGTW92ZSgq
YXJndW1lbnRzKSwgb2JqZWN0LCBmdW5jdGlvbik7CiB9CiAKQEAgLTEzOCwxMCArMTM0LDggQEAg
Ym9vbCBoYW5kbGVNZXNzYWdlU3luY2hyb25vdXMoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVj
b2RlciYgZGVjb2RlciwgVW5pcXVlUmUKIHsKICAgICBPcHRpb25hbDx0eXBlbmFtZSBDb2RpbmdU
eXBlPHR5cGVuYW1lIFQ6OkFyZ3VtZW50cz46OlR5cGU+IGFyZ3VtZW50czsKICAgICBkZWNvZGVy
ID4+IGFyZ3VtZW50czsKLSAgICBpZiAoIWFyZ3VtZW50cykgewotICAgICAgICBkZWNvZGVyLm1h
cmtJbnZhbGlkKCk7CisgICAgaWYgKCFhcmd1bWVudHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9CiAKICAgICB0eXBlbmFtZSBUOjpEZWxheWVkUmVwbHkgY29tcGxldGlvbkhhbmRsZXIg
PSBbcmVwbHlFbmNvZGVyID0gV1RGTW92ZShyZXBseUVuY29kZXIpLCBjb25uZWN0aW9uID0gbWFr
ZVJlZihjb25uZWN0aW9uKV0gKGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxlIHsKICAgICAgICAgVDo6
c2VuZChXVEZNb3ZlKHJlcGx5RW5jb2RlciksIFdURk1vdmUoY29ubmVjdGlvbiksIGFyZ3MuLi4p
OwpAQCAtMTU1LDEwICsxNDksOCBAQCBib29sIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91c1dhbnRz
Q29ubmVjdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZQogewogICAgIE9w
dGlvbmFsPHR5cGVuYW1lIENvZGluZ1R5cGU8dHlwZW5hbWUgVDo6QXJndW1lbnRzPjo6VHlwZT4g
YXJndW1lbnRzOwogICAgIGRlY29kZXIgPj4gYXJndW1lbnRzOwotICAgIGlmICghYXJndW1lbnRz
KSB7Ci0gICAgICAgIGRlY29kZXIubWFya0ludmFsaWQoKTsKKyAgICBpZiAoIWFyZ3VtZW50cykK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KICAgICAKICAgICB0eXBlbmFtZSBUOjpEZWxh
eWVkUmVwbHkgY29tcGxldGlvbkhhbmRsZXIgPSBbcmVwbHlFbmNvZGVyID0gV1RGTW92ZShyZXBs
eUVuY29kZXIpLCBjb25uZWN0aW9uID0gbWFrZVJlZihjb25uZWN0aW9uKV0gKGF1dG8mJi4uLiBh
cmdzKSBtdXRhYmxlIHsKICAgICAgICAgVDo6c2VuZChXVEZNb3ZlKHJlcGx5RW5jb2RlciksIFdU
Rk1vdmUoY29ubmVjdGlvbiksIGFyZ3MuLi4pOwpAQCAtMTcxLDE3ICsxNjMsMTcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQywgdHlwZW5hbWUgTUY+CiB2b2lkIGhhbmRsZU1lc3Nh
Z2VTeW5jaHJvbm91cyhTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYgY29ubmVjdGlvbiwgRGVj
b2RlciYgZGVjb2RlciwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKIHsKICAgICB1aW50NjRfdCBz
eW5jUmVxdWVzdElEID0gMDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN5bmNSZXF1ZXN0SUQp
IHx8ICFzeW5jUmVxdWVzdElEKSB7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzeW5jUmVxdWVz
dElEKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghc3luY1JlcXVlc3RJRCkgewogICAgICAg
ICBkZWNvZGVyLm1hcmtJbnZhbGlkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBP
cHRpb25hbDx0eXBlbmFtZSBDb2RpbmdUeXBlPHR5cGVuYW1lIFQ6OkFyZ3VtZW50cz46OlR5cGU+
IGFyZ3VtZW50czsKICAgICBkZWNvZGVyID4+IGFyZ3VtZW50czsKLSAgICBpZiAoIWFyZ3VtZW50
cykgewotICAgICAgICBkZWNvZGVyLm1hcmtJbnZhbGlkKCk7CisgICAgaWYgKCFhcmd1bWVudHMp
CiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICB0eXBlbmFtZSBUOjpEZWxheWVkUmVwbHkg
Y29tcGxldGlvbkhhbmRsZXIgPSBbc3luY1JlcXVlc3RJRCwgY29ubmVjdGlvbiA9IG1ha2VSZWYo
Y29ubmVjdGlvbildIChhdXRvJiYuLi4gYXJncykgbXV0YWJsZSB7CiAgICAgICAgIGNvbm5lY3Rp
b24tPnNlbmRTeW5jUmVwbHk8VD4oc3luY1JlcXVlc3RJRCwgYXJncy4uLik7CkBAIC0xOTQsMTcg
KzE4NiwxMyBAQCB2b2lkIGhhbmRsZU1lc3NhZ2VBc3luYyhDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBEZWNvZGVyJiBkZWNvZGVyLCBDKiBvYmplY3QsIE1GCiB7CiAgICAgT3B0aW9uYWw8dWludDY0
X3Q+IGxpc3RlbmVySUQ7CiAgICAgZGVjb2RlciA+PiBsaXN0ZW5lcklEOwotICAgIGlmICghbGlz
dGVuZXJJRCkgewotICAgICAgICBkZWNvZGVyLm1hcmtJbnZhbGlkKCk7CisgICAgaWYgKCFsaXN0
ZW5lcklEKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgT3B0aW9uYWw8dHlwZW5hbWUg
Q29kaW5nVHlwZTx0eXBlbmFtZSBUOjpBcmd1bWVudHM+OjpUeXBlPiBhcmd1bWVudHM7CiAgICAg
ZGVjb2RlciA+PiBhcmd1bWVudHM7Ci0gICAgaWYgKCFhcmd1bWVudHMpIHsKLSAgICAgICAgZGVj
b2Rlci5tYXJrSW52YWxpZCgpOworICAgIGlmICghYXJndW1lbnRzKQogICAgICAgICByZXR1cm47
Ci0gICAgfQogCiAgICAgdHlwZW5hbWUgVDo6QXN5bmNSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9
IHsgW2xpc3RlbmVySUQgPSAqbGlzdGVuZXJJRCwgY29ubmVjdGlvbiA9IG1ha2VSZWYoY29ubmVj
dGlvbildIChhdXRvJiYuLi4gYXJncykgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gZW5jb2RlciA9
IG1ha2VVbmlxdWVSZWY8RW5jb2Rlcj4oVDo6YXN5bmNNZXNzYWdlUmVwbHlOYW1lKCksIGxpc3Rl
bmVySUQpOwpAQCAtMjE4LDEwICsyMDYsOCBAQCB2b2lkIGhhbmRsZU1lc3NhZ2VBc3luY1dhbnRz
Q29ubmVjdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyLAogewog
ICAgIE9wdGlvbmFsPHR5cGVuYW1lIENvZGluZ1R5cGU8dHlwZW5hbWUgVDo6QXJndW1lbnRzPjo6
VHlwZT4gYXJndW1lbnRzOwogICAgIGRlY29kZXIgPj4gYXJndW1lbnRzOwotICAgIGlmICghYXJn
dW1lbnRzKSB7Ci0gICAgICAgIGRlY29kZXIubWFya0ludmFsaWQoKTsKKyAgICBpZiAoIWFyZ3Vt
ZW50cykKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIHR5cGVuYW1lIFQ6OkFzeW5jUmVw
bHkgY29tcGxldGlvbkhhbmRsZXIgPSBbbGlzdGVuZXJJRCA9IGRlY29kZXIuZGVzdGluYXRpb25J
RCgpLCBjb25uZWN0aW9uID0gbWFrZVJlZihjb25uZWN0aW9uKV0gKGF1dG8mJi4uLiBhcmdzKSBt
dXRhYmxlIHsKICAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZVJlZjxFbmNvZGVyPihU
Ojphc3luY01lc3NhZ2VSZXBseU5hbWUoKSwgbGlzdGVuZXJJRCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmNwcAppbmRleCAwZmFlZmYxZmI4NDVlMjU0ZDk5NjNl
MzU2MGVlOTQ4OTgyYzc5M2RhLi5kMzYxMWY0MDU4Y2ViYTAxZGQ5ODYzZGMzOGVjZTQxZDlkMzVm
MmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5jcHAKQEAg
LTczLDEwICs3Myw4IEBAIGJvb2wgUGx1Z2luOjpQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyLCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocGFyYW1ldGVycy5sYXllckhvc3RpbmdNb2RlKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogI2VuZGlmCi0gICAgaWYgKHBhcmFtZXRlcnMubmFtZXMuc2l6ZSgpICE9IHBhcmFtZXRlcnMu
dmFsdWVzLnNpemUoKSkgewotICAgICAgICBkZWNvZGVyLm1hcmtJbnZhbGlkKCk7CisgICAgaWYg
KHBhcmFtZXRlcnMubmFtZXMuc2l6ZSgpICE9IHBhcmFtZXRlcnMudmFsdWVzLnNpemUoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KIAogICAgIHJldHVybiB0cnVlOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427186</attachid>
            <date>2021-04-27 13:22:09 -0700</date>
            <delta_ts>2021-04-27 13:35:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225117-20210427132208.patch</filename>
            <type>text/plain</type>
            <size>31970</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2NjUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWNkMjg3NGNlZjE1ZmU2
N2JiY2E0OGYxNWJjZTQ4Nzc3NzMzYTIxYy4uYWVjZDAwN2RjYWUxODdkODc4ZDU0YzBhYjc2MmIx
MjQyZGZhNmZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA0LTI3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSVBDOjpkZWNvZGVyOjpkZWNv
ZGUoKSBzaG91bGQgbWFyayBkZWNvZGVyIGFzIGludmFsaWQgd2hlbiBmYWlsaW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUxMTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJUEM6OmRlY29kZXI6OmRl
Y29kZSgpIHNob3VsZCBtYXJrIGRlY29kZXIgYXMgaW52YWxpZCB3aGVuIGZhaWxpbmcsIGluc3Rl
YWQgb2YgcmVseWluZworICAgICAgICBvbiBpbmRpdmlkdWFsIHR5cGUgZGVjb2RlcnMgdG8gZG8g
c28uIFRoaXMgbWFrZXMgdHlwZSBkZWNvZGVycyBhIGJpdCBzaW1wbGVyIGFuZCBsZXNzCisgICAg
ICAgIGVycm9yLXByb25lLgorCisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxp
Z2h0Lmg6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHQ6OmRlY29kZSk6CisKIDIwMjEt
MDQtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCBr
ZWVwIGxvY2FsIHN0b3JhZ2UgZGF0YSBpbiBtZW1vcnkgaW4gdGhlIE5ldHdvcmtQcm9jZXNzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDk1NWM4YzcxY2Y3YjFkNDFkYjEyZjcxY2E4ZmJkMGU1ZjI4NGM1MWUuLjEyNmNi
N2FmMTFhMmQ0Mzc5ODEzZTY1YjVmZWQwZjk4OThkNTg1ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzUgQEAKKzIwMjEtMDQtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBJUEM6OmRlY29kZXI6OmRlY29kZSgpIHNob3VsZCBtYXJrIGRlY29kZXIgYXMgaW52YWxp
ZCB3aGVuIGZhaWxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNTExNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIElQQzo6ZGVjb2Rlcjo6ZGVjb2RlKCkgc2hvdWxkIG1hcmsgZGVjb2RlciBhcyBpbnZh
bGlkIHdoZW4gZmFpbGluZywgaW5zdGVhZCBvZiByZWx5aW5nCisgICAgICAgIG9uIGluZGl2aWR1
YWwgdHlwZSBkZWNvZGVycyB0byBkbyBzby4gVGhpcyBtYWtlcyB0eXBlIGRlY29kZXJzIGEgYml0
IHNpbXBsZXIgYW5kIGxlc3MKKyAgICAgICAgZXJyb3ItcHJvbmUuCisKKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PENTdHJpbmc+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpkZWNvZGVTdHJpbmdUZXh0KToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNo
TWVzc2FnZVJlY2VpdmVyTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3Bh
dGNoU3luY01lc3NhZ2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcDoKKyAg
ICAgICAgKElQQzo6bV9kZXN0aW5hdGlvbklEKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGVj
b2Rlci5oOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpE
ZWNvZGVyOjpvcGVyYXRvcj4+KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2Fn
ZS5oOgorICAgICAgICAoSVBDOjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKElQQzo6aGFuZGxl
TWVzc2FnZVN5bmNocm9ub3VzKToKKyAgICAgICAgKElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9u
b3VzV2FudHNDb25uZWN0aW9uKToKKyAgICAgICAgKElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jKToK
KyAgICAgICAgKElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jV2FudHNDb25uZWN0aW9uKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luOjpQYXJhbWV0ZXJzOjpkZWNvZGUpOgorCiAyMDIxLTA0LTI3ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRG9uJ3Qga2VlcCBsb2NhbCBzdG9yYWdlIGRhdGEg
aW4gbWVtb3J5IGluIHRoZSBOZXR3b3JrUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAppbmRleCAzOWIzZmYyYjRhMmFhYTZhZDc5YjY2
ZDkyMGIyYjdjZjkzM2JlMjNmLi4wOGRiMTU3MzZhZDc2MjI2NDIwMzU3YjVlNjNmNjU4N2M1MDNk
NDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdo
bGlnaHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHQuaApAQCAtNzAsMTAgKzcwLDggQEAgT3B0aW9uYWw8QXBwSGlnaGxpZ2h0PiBBcHBIaWdobGln
aHQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghbGVuZ3RoKQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgaWYgKCFkZWNvZGVyLnRlbXBsYXRlIGJ1ZmZlcklz
TGFyZ2VFbm91Z2hUb0NvbnRhaW48dWludDhfdD4obGVuZ3RoLnZhbHVlKCkpKSB7Ci0gICAgICAg
IGRlY29kZXIubWFya0ludmFsaWQoKTsKKyAgICBpZiAoIWRlY29kZXIudGVtcGxhdGUgYnVmZmVy
SXNMYXJnZUVub3VnaFRvQ29udGFpbjx1aW50OF90PihsZW5ndGgudmFsdWUoKSkpCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGhpZ2hs
aWdodDsKICAgICBoaWdobGlnaHQuZ3JvdygqbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBhZWU4OWU2MjY5NmM1NjBmMGExOGJm
YjFkNjc2OTE2NTBlN2ZmMmFiLi5iNjI5MzllNmJhY2MyZmViNGEzNTEzZGFkMjk3ZTk5YWZjMWMz
MzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3Bw
CkBAIC05OCwxMCArOTgsOCBAQCBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBBcmd1bWVudENvZGVy
PENTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQ1N0cmluZwogICAgIH0KIAogICAg
IC8vIEJlZm9yZSBhbGxvY2F0aW5nIHRoZSBzdHJpbmcsIG1ha2Ugc3VyZSB0aGF0IHRoZSBkZWNv
ZGVyIGJ1ZmZlciBpcyBiaWcgZW5vdWdoLgotICAgIGlmICghZGVjb2Rlci5idWZmZXJJc0xhcmdl
RW5vdWdoVG9Db250YWluPGNoYXI+KGxlbmd0aCkpIHsKLSAgICAgICAgZGVjb2Rlci5tYXJrSW52
YWxpZCgpOworICAgIGlmICghZGVjb2Rlci5idWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluPGNo
YXI+KGxlbmd0aCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAKICAgICBjaGFyKiBi
dWZmZXI7CiAgICAgQ1N0cmluZyBzdHJpbmcgPSBDU3RyaW5nOjpuZXdVbmluaXRpYWxpemVkKGxl
bmd0aCwgYnVmZmVyKTsKQEAgLTE0MCwxMCArMTM4LDggQEAgdGVtcGxhdGUgPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+CiBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPFN0cmluZz4gZGVjb2RlU3RyaW5n
VGV4dChEZWNvZGVyJiBkZWNvZGVyLCB1aW50MzJfdCBsZW5ndGgpCiB7CiAgICAgLy8gQmVmb3Jl
IGFsbG9jYXRpbmcgdGhlIHN0cmluZywgbWFrZSBzdXJlIHRoYXQgdGhlIGRlY29kZXIgYnVmZmVy
IGlzIGJpZyBlbm91Z2guCi0gICAgaWYgKCFkZWNvZGVyLmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0Nv
bnRhaW48Q2hhcmFjdGVyVHlwZT4obGVuZ3RoKSkgewotICAgICAgICBkZWNvZGVyLm1hcmtJbnZh
bGlkKCk7CisgICAgaWYgKCFkZWNvZGVyLmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48Q2hh
cmFjdGVyVHlwZT4obGVuZ3RoKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9
CiAgICAgCiAgICAgQ2hhcmFjdGVyVHlwZSogYnVmZmVyOwogICAgIFN0cmluZyBzdHJpbmcgPSBT
dHJpbmc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKaW5kZXggOTc2ZDY1MjVlNjg4YWE4MmQz
ZmYwYTRkMTM1M2M3YjZiMTUwNWVlMi4uYmU2NDAzNzk1YTFjNWJkMjA5ZTcxYWFmMDNlNjExMDk2
NWE4ZDA3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRD
b2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5o
CkBAIC00MjgsMzMgKzQyOCwyNSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5l
Q2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbgogICAgIHN0YXRp
YyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9y
PFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5PiYgdmVjdG9y
KQogICAgIHsKICAgICAgICAgdWludDY0X3QgZGVjb2RlZFNpemU7Ci0gICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZGVjb2RlZFNpemUpKSB7Ci0gICAgICAgICAgICBkZWNvZGVyLm1hcmtJbnZh
bGlkKCk7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGVjb2RlZFNpemUpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFpc0luQm91bmRz
PHNpemVfdD4oZGVjb2RlZFNpemUpKSB7Ci0gICAgICAgICAgICBkZWNvZGVyLm1hcmtJbnZhbGlk
KCk7CisgICAgICAgIGlmICghaXNJbkJvdW5kczxzaXplX3Q+KGRlY29kZWRTaXplKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQogCiAgICAgICAgIGF1dG8gc2l6ZSA9IHN0
YXRpY19jYXN0PHNpemVfdD4oZGVjb2RlZFNpemUpOwogCiAgICAgICAgIC8vIFNpbmNlIHdlIGtu
b3cgdGhlIHRvdGFsIHNpemUgb2YgdGhlIGVsZW1lbnRzLCB3ZSBjYW4gYWxsb2NhdGUgdGhlIHZl
Y3RvciBpbgogICAgICAgICAvLyBvbmUgZmVsbCBzd29vcC4gQmVmb3JlIGFsbG9jYXRpbmcgd2Ug
bXVzdCBob3dldmVyIG1ha2Ugc3VyZSB0aGF0IHRoZSBkZWNvZGVyIGJ1ZmZlcgogICAgICAgICAv
LyBpcyBiaWcgZW5vdWdoLgotICAgICAgICBpZiAoIWRlY29kZXIuYnVmZmVySXNMYXJnZUVub3Vn
aFRvQ29udGFpbjxUPihzaXplKSkgewotICAgICAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgp
OworICAgICAgICBpZiAoIWRlY29kZXIuYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjxUPihz
aXplKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQogCiAgICAgICAgIFZl
Y3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT4gdGVt
cDsKICAgICAgICAgdGVtcC5ncm93KHNpemUpOwogCi0gICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4odGVtcC5kYXRhKCkp
LCBzaXplICogc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKSkgewotICAgICAgICAgICAgZGVjb2Rlci5t
YXJrSW52YWxpZCgpOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRh
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHRlbXAuZGF0YSgpKSwgc2l6ZSAqIHNpemVvZihU
KSwgYWxpZ25vZihUKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KIAog
ICAgICAgICB2ZWN0b3Iuc3dhcCh0ZW1wKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC00NjMs
MzMgKzQ1NSwyNSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHks
IHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbgogICAgIHN0YXRpYyBPcHRpb25h
bDxWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+
PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7CiAgICAgICAgIHVpbnQ2NF90IGRlY29k
ZWRTaXplOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRlY29kZWRTaXplKSkgewotICAg
ICAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgpOworICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGRlY29kZWRTaXplKSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAg
ICAgIH0KIAotICAgICAgICBpZiAoIWlzSW5Cb3VuZHM8c2l6ZV90PihkZWNvZGVkU2l6ZSkpIHsK
LSAgICAgICAgICAgIGRlY29kZXIubWFya0ludmFsaWQoKTsKKyAgICAgICAgaWYgKCFpc0luQm91
bmRzPHNpemVfdD4oZGVjb2RlZFNpemUpKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKLSAgICAgICAgfQogCiAgICAgICAgIGF1dG8gc2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4o
ZGVjb2RlZFNpemUpOwogCiAgICAgICAgIC8vIFNpbmNlIHdlIGtub3cgdGhlIHRvdGFsIHNpemUg
b2YgdGhlIGVsZW1lbnRzLCB3ZSBjYW4gYWxsb2NhdGUgdGhlIHZlY3RvciBpbgogICAgICAgICAv
LyBvbmUgZmVsbCBzd29vcC4gQmVmb3JlIGFsbG9jYXRpbmcgd2UgbXVzdCBob3dldmVyIG1ha2Ug
c3VyZSB0aGF0IHRoZSBkZWNvZGVyIGJ1ZmZlcgogICAgICAgICAvLyBpcyBiaWcgZW5vdWdoLgot
ICAgICAgICBpZiAoIWRlY29kZXIuYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjxUPihzaXpl
KSkgewotICAgICAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgpOworICAgICAgICBpZiAoIWRl
Y29kZXIuYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjxUPihzaXplKSkKICAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIFZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT4gdmVjdG9y
OwogICAgICAgICB2ZWN0b3IuZ3JvdyhzaXplKTsKIAotICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHZlY3Rvci5kYXRh
KCkpLCBzaXplICogc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKSkgewotICAgICAgICAgICAgZGVjb2Rl
ci5tYXJrSW52YWxpZCgpOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhE
YXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHZlY3Rvci5kYXRhKCkpLCBzaXplICogc2l6
ZW9mKFQpLCBhbGlnbm9mKFQpKSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0g
ICAgICAgIH0KIAogICAgICAgICByZXR1cm4gdmVjdG9yOwogICAgIH0KQEAgLTUyNSwxNCArNTA5
LDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBl
bmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpCiAgICAgICAgICAgICBpZiAoVU5MSUtFTFko
IXZhbHVlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgICAg
ICAgICBpZiAoVU5MSUtFTFkoIUhhc2hNYXBUeXBlOjppc1ZhbGlkS2V5KCprZXkpKSkgewotICAg
ICAgICAgICAgICAgIGRlY29kZXIubWFya0ludmFsaWQoKTsKKyAgICAgICAgICAgIGlmIChVTkxJ
S0VMWSghSGFzaE1hcFR5cGU6OmlzVmFsaWRLZXkoKmtleSkpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChVTkxJ
S0VMWSghaGFzaE1hcC5hZGQoV1RGTW92ZSgqa2V5KSwgV1RGTW92ZSgqdmFsdWUpKS5pc05ld0Vu
dHJ5KSkgewogICAgICAgICAgICAgICAgIC8vIFRoZSBoYXNoIG1hcCBhbHJlYWR5IGhhcyB0aGUg
c3BlY2lmaWVkIGtleSwgYmFpbC4KLSAgICAgICAgICAgICAgICBkZWNvZGVyLm1hcmtJbnZhbGlk
KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQpAQCAtNTg1LDE0ICs1NjYsMTEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJn
LCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIEhhc2gK
ICAgICAgICAgICAgIGlmICgha2V5KQogICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiAKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWSghSGFzaFNldFR5cGU6OmlzVmFsaWRWYWx1
ZSgqa2V5KSkpIHsKLSAgICAgICAgICAgICAgICBkZWNvZGVyLm1hcmtJbnZhbGlkKCk7CisgICAg
ICAgICAgICBpZiAoVU5MSUtFTFkoIUhhc2hTZXRUeXBlOjppc1ZhbGlkVmFsdWUoKmtleSkpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGlmIChVTkxJS0VMWSghaGFzaFNldC5hZGQoV1RGTW92ZSgqa2V5KSkuaXNOZXdF
bnRyeSkpIHsKICAgICAgICAgICAgICAgICAvLyBUaGUgaGFzaCBzZXQgYWxyZWFkeSBoYXMgdGhl
IHNwZWNpZmllZCBrZXksIGJhaWwuCi0gICAgICAgICAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxp
ZCgpOwogICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KQEAgLTYzMCwxNCArNjA4LDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIEtleUFy
ZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnPiBzdHJ1Y3QgQXJndW1l
CiAgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvdW50KSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWSghSGFzaENvdW50ZWRT
ZXRUeXBlOjppc1ZhbGlkVmFsdWUoa2V5KSkpIHsKLSAgICAgICAgICAgICAgICBkZWNvZGVyLm1h
cmtJbnZhbGlkKCk7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIUhhc2hDb3VudGVkU2V0VHlw
ZTo6aXNWYWxpZFZhbHVlKGtleSkpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKFVOTElLRUxZKCF0ZW1wSGFzaENvdW50ZWRT
ZXQuYWRkKGtleSwgY291bnQpLmlzTmV3RW50cnkpKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhl
IGhhc2ggY291bnRlZCBzZXQgYWxyZWFkeSBoYXMgdGhlIHNwZWNpZmllZCBrZXksIGJhaWwuCi0g
ICAgICAgICAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgpOwogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Db25uZWN0aW9uLmNwcAppbmRleCA2MzA2M2Y0NzQwMzdiZWRjMDQ5Nzk2ZWZmNjI4
OTM0ODk0YWUyZGQ5Li4wZTc4OGMyOThlYjFjZWFjMWE1YzkyNTRmMDYyODU2NDhkNTc3NTk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcApAQCAtMzQsNiArMzQs
NyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRp
Zmllci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CkBAIC0y
MzUsNyArMjM2LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpkaXNwYXRj
aE1lc3NhZ2VzQW5kUmVzZXREaWRTY2hlZHVsZURpc3BhdGNoTWUKIC8vIFJlcHJlc2VudHMgYSBz
eW5jIHJlcXVlc3QgZm9yIHdoaWNoIHdlJ3JlIHdhaXRpbmcgb24gYSByZXBseS4KIHN0cnVjdCBD
b25uZWN0aW9uOjpQZW5kaW5nU3luY1JlcGx5IHsKICAgICAvLyBUaGUgcmVxdWVzdCBJRC4KLSAg
ICB1aW50NjRfdCBzeW5jUmVxdWVzdElEIHsgMCB9OworICAgIENvbm5lY3Rpb246OlN5bmNSZXF1
ZXN0SUQgc3luY1JlcXVlc3RJRDsKIAogICAgIC8vIFRoZSByZXBseSBkZWNvZGVyLCB3aWxsIGJl
IG51bGwgaWYgdGhlcmUgd2FzIGFuIGVycm9yIHByb2Nlc3NpbmcgdGhlIHN5bmMKICAgICAvLyBt
ZXNzYWdlIG9uIHRoZSBvdGhlciBzaWRlLgpAQCAtMjQ2LDcgKzI0Nyw3IEBAIHN0cnVjdCBDb25u
ZWN0aW9uOjpQZW5kaW5nU3luY1JlcGx5IHsKIAogICAgIFBlbmRpbmdTeW5jUmVwbHkoKSA9IGRl
ZmF1bHQ7CiAKLSAgICBleHBsaWNpdCBQZW5kaW5nU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1
ZXN0SUQpCisgICAgZXhwbGljaXQgUGVuZGluZ1N5bmNSZXBseShDb25uZWN0aW9uOjpTeW5jUmVx
dWVzdElEIHN5bmNSZXF1ZXN0SUQpCiAgICAgICAgIDogc3luY1JlcXVlc3RJRChzeW5jUmVxdWVz
dElEKQogICAgIHsKICAgICB9CkBAIC0yODcsNyArMjg4LDYgQEAgQ29ubmVjdGlvbjo6Q29ubmVj
dGlvbihJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgaXNTZXJ2ZXIsIENsaWVudCYgY2xpZW50
KQogICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICwgbV91bmlxdWVJRChVbmlxdWVJRDo6Z2Vu
ZXJhdGUoKSkKICAgICAsIG1faXNTZXJ2ZXIoaXNTZXJ2ZXIpCi0gICAgLCBtX3N5bmNSZXF1ZXN0
SUQoMCkKICAgICAsIG1fb25seVNlbmRNZXNzYWdlc0FzRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5
bmNSZXBseVdoZW5Qcm9jZXNzaW5nU3VjaEFNZXNzYWdlKGZhbHNlKQogICAgICwgbV9zaG91bGRF
eGl0T25TeW5jTWVzc2FnZVNlbmRGYWlsdXJlKGZhbHNlKQogICAgICwgbV9kaWRDbG9zZU9uQ29u
bmVjdGlvbldvcmtRdWV1ZUNhbGxiYWNrKDApCkBAIC0zOTAsMTUgKzM5MCwxNCBAQCB2b2lkIENv
bm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZVJlY2VpdmVyTWVzc2FnZShNZXNzYWdlUmVjZWl2ZXIm
IG1lc3NhZ2VSZWNlaXZlcgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3Qg
c3luY1JlcXVlc3RJRCA9IDA7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoc3luY1JlcXVlc3RJ
RCkgfHwgIXN5bmNSZXF1ZXN0SUQpIHsKKyAgICBTeW5jUmVxdWVzdElEIHN5bmNSZXF1ZXN0SUQ7
CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoc3luY1JlcXVlc3RJRCkpIHsKICAgICAgICAgLy8g
V2UgcmVjZWl2ZWQgYW4gaW52YWxpZCBzeW5jIG1lc3NhZ2UuCiAgICAgICAgIC8vIEZJWE1FOiBI
YW5kbGUgdGhpcy4KLSAgICAgICAgZGVjb2Rlci0+bWFya0ludmFsaWQoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gbWFrZVVuaXF1ZVJlZjxFbmNv
ZGVyPihNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseSwgc3luY1JlcXVlc3RJRCk7CisgICAg
YXV0byByZXBseUVuY29kZXIgPSBtYWtlVW5pcXVlUmVmPEVuY29kZXI+KE1lc3NhZ2VOYW1lOjpT
eW5jTWVzc2FnZVJlcGx5LCBzeW5jUmVxdWVzdElELnRvVUludDY0KCkpOwogCiAgICAgLy8gSGFu
ZCBvZmYgYm90aCB0aGUgZGVjb2RlciBhbmQgZW5jb2RlciB0byB0aGUgd29yayBxdWV1ZSBtZXNz
YWdlIHJlY2VpdmVyLgogICAgIGJvb2wgd2FzSGFuZGxlZCA9IG1lc3NhZ2VSZWNlaXZlci5kaWRS
ZWNlaXZlU3luY01lc3NhZ2UoKnRoaXMsICpkZWNvZGVyLCByZXBseUVuY29kZXIpOwpAQCAtNDQx
LDcgKzQ0MCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6bWFya0N1cnJlbnRseURpc3BhdGNoZWRNZXNz
YWdlQXNJbnZhbGlkKCkKICAgICBtX2RpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSA9IHRydWU7CiB9
CiAKLVVuaXF1ZVJlZjxFbmNvZGVyPiBDb25uZWN0aW9uOjpjcmVhdGVTeW5jTWVzc2FnZUVuY29k
ZXIoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVpbnQ2
NF90JiBzeW5jUmVxdWVzdElEKQorVW5pcXVlUmVmPEVuY29kZXI+IENvbm5lY3Rpb246OmNyZWF0
ZVN5bmNNZXNzYWdlRW5jb2RlcihNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCwgU3luY1JlcXVlc3RJRCYgc3luY1JlcXVlc3RJRCkKIHsKICAgICBhdXRvIGVu
Y29kZXIgPSBtYWtlVW5pcXVlUmVmPEVuY29kZXI+KG1lc3NhZ2VOYW1lLCBkZXN0aW5hdGlvbklE
KTsKIApAQCAtNDcyLDcgKzQ3MSw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE1lc3NhZ2UoVW5p
cXVlUmVmPEVuY29kZXI+JiYgZW5jb2RlciwgT3B0aW9uU2V0PFNlbmRPcHRpb24+CiAjZW5kaWYK
IAogICAgIGlmIChpc01haW5SdW5Mb29wKCkgJiYgbV9pbkRpc3BhdGNoTWVzc2FnZU1hcmtlZFRv
VXNlRnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0aW5nICYmICFlbmNvZGVyLT5pc1N5bmNNZXNz
YWdlKCkgJiYgIShlbmNvZGVyLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gUmVjZWl2ZXJOYW1l
OjpJUEMpICYmICFzZW5kT3B0aW9ucy5jb250YWlucyhTZW5kT3B0aW9uOjpJZ25vcmVGdWxseVN5
bmNocm9ub3VzTW9kZSkpIHsKLSAgICAgICAgdWludDY0X3Qgc3luY1JlcXVlc3RJRDsKKyAgICAg
ICAgU3luY1JlcXVlc3RJRCBzeW5jUmVxdWVzdElEOwogICAgICAgICBhdXRvIHdyYXBwZWRNZXNz
YWdlID0gY3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKE1lc3NhZ2VOYW1lOjpXcmFwcGVkQXN5bmNN
ZXNzYWdlRm9yVGVzdGluZywgZW5jb2Rlci0+ZGVzdGluYXRpb25JRCgpLCBzeW5jUmVxdWVzdElE
KTsKICAgICAgICAgd3JhcHBlZE1lc3NhZ2UtPnNldEZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVz
dGluZygpOwogICAgICAgICB3cmFwcGVkTWVzc2FnZS0+d3JhcEZvclRlc3RpbmcoV1RGTW92ZShl
bmNvZGVyKSk7CkBAIC01OTAsNyArNTg5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENv
bm5lY3Rpb246OndhaXRGb3JNZXNzYWdlKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCB1aW4KICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAotYm9vbCBDb25uZWN0aW9uOjpwdXNoUGVuZGluZ1N5bmNS
ZXF1ZXN0SUQodWludDY0X3Qgc3luY1JlcXVlc3RJRCkKK2Jvb2wgQ29ubmVjdGlvbjo6cHVzaFBl
bmRpbmdTeW5jUmVxdWVzdElEKFN5bmNSZXF1ZXN0SUQgc3luY1JlcXVlc3RJRCkKIHsKICAgICB7
CiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc3luY1JlcGx5U3RhdGVNdXRleCk7CkBAIC02
MDIsNyArNjAxLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpwdXNoUGVuZGluZ1N5bmNSZXF1ZXN0SUQo
dWludDY0X3Qgc3luY1JlcXVlc3RJRCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBDb25u
ZWN0aW9uOjpwb3BQZW5kaW5nU3luY1JlcXVlc3RJRCh1aW50NjRfdCBzeW5jUmVxdWVzdElEKQor
dm9pZCBDb25uZWN0aW9uOjpwb3BQZW5kaW5nU3luY1JlcXVlc3RJRChTeW5jUmVxdWVzdElEIHN5
bmNSZXF1ZXN0SUQpCiB7CiAgICAgLS1tX2luU2VuZFN5bmNDb3VudDsKICAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX3N5bmNSZXBseVN0YXRlTXV0ZXgpOwpAQCAtNjEwLDcgKzYwOSw3IEBAIHZvaWQg
Q29ubmVjdGlvbjo6cG9wUGVuZGluZ1N5bmNSZXF1ZXN0SUQodWludDY0X3Qgc3luY1JlcXVlc3RJ
RCkKICAgICBtX3BlbmRpbmdTeW5jUmVwbGllcy5yZW1vdmVMYXN0KCk7CiB9CiAKLXN0ZDo6dW5p
cXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjpzZW5kU3luY01lc3NhZ2UodWludDY0X3Qgc3lu
Y1JlcXVlc3RJRCwgVW5pcXVlUmVmPEVuY29kZXI+JiYgZW5jb2RlciwgVGltZW91dCB0aW1lb3V0
LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucykKK3N0ZDo6dW5pcXVl
X3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjpzZW5kU3luY01lc3NhZ2UoU3luY1JlcXVlc3RJRCBz
eW5jUmVxdWVzdElELCBVbmlxdWVSZWY8RW5jb2Rlcj4mJiBlbmNvZGVyLCBUaW1lb3V0IHRpbWVv
dXQsIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKQogewogICAgIEFT
U0VSVChzeW5jUmVxdWVzdElEKTsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAt
NjQ4LDcgKzY0Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjpzZW5k
U3luY01lc3NhZ2UodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgVW5pCiAgICAgcmV0dXJuIHJlcGx5
OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvclN5bmNS
ZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSwgVGlt
ZW91dCB0aW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucykK
K3N0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5KFN5
bmNSZXF1ZXN0SUQgc3luY1JlcXVlc3RJRCwgTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUsIFRpbWVv
dXQgdGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMpCiB7
CiAgICAgdGltZW91dCA9IHRpbWVvdXRSZXNwZWN0aW5nSWdub3JlVGltZW91dHNGb3JUZXN0aW5n
KHRpbWVvdXQpOwogCkBAIC02ODAsNyArNjc5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+
IENvbm5lY3Rpb246OndhaXRGb3JTeW5jUmVwbHkodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgTWUK
ICAgICAgICAgLy8gSWYgdGhhdCBoYXBwZW5zLCB3ZSBuZWVkIHRvIHN0b3Agd2FpdGluZywgb3Ig
d2UnbGwgaGFuZyBzaW5jZSB3ZSB3b24ndCBnZXQKICAgICAgICAgLy8gYW55IG1vcmUgaW5jb21p
bmcgbWVzc2FnZXMuCiAgICAgICAgIGlmICghaXNWYWxpZCgpKSB7Ci0gICAgICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihJUEMsICJDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5OiBDb25uZWN0
aW9uIG5vIGxvbmdlciB2YWxpZCwgaWQ9JSIgUFJJdTY0LCBzeW5jUmVxdWVzdElEKTsKKyAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKElQQywgIkNvbm5lY3Rpb246OndhaXRGb3JTeW5jUmVw
bHk6IENvbm5lY3Rpb24gbm8gbG9uZ2VyIHZhbGlkLCBpZD0lIiBQUkl1NjQsIHN5bmNSZXF1ZXN0
SUQudG9VSW50NjQoKSk7CiAgICAgICAgICAgICBkaWRSZWNlaXZlU3luY1JlcGx5KHNlbmRTeW5j
T3B0aW9ucyk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQpAQCAtNjky
LDkgKzY5MSw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9y
U3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIE1lCiAgICAgfQogCiAjaWYgT1MoREFS
V0lOKQotICAgIFJFTEVBU0VfTE9HX0VSUk9SKElQQywgIkNvbm5lY3Rpb246OndhaXRGb3JTeW5j
UmVwbHk6IFRpbWVkLW91dCB3aGlsZSB3YWl0aW5nIGZvciByZXBseSBmb3IgJXtwdWJsaWN9cyBm
cm9tIHByb2Nlc3MgJWQsIGlkPSUiIFBSSXU2NCwgZGVzY3JpcHRpb24obWVzc2FnZU5hbWUpLCBy
ZW1vdGVQcm9jZXNzSUQoKSwgc3luY1JlcXVlc3RJRCk7CisgICAgUkVMRUFTRV9MT0dfRVJST1Io
SVBDLCAiQ29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseTogVGltZWQtb3V0IHdoaWxlIHdhaXRp
bmcgZm9yIHJlcGx5IGZvciAle3B1YmxpY31zIGZyb20gcHJvY2VzcyAlZCwgaWQ9JSIgUFJJdTY0
LCBkZXNjcmlwdGlvbihtZXNzYWdlTmFtZSksIHJlbW90ZVByb2Nlc3NJRCgpLCBzeW5jUmVxdWVz
dElELnRvVUludDY0KCkpOwogI2Vsc2UKLSAgICBSRUxFQVNFX0xPR19FUlJPUihJUEMsICJDb25u
ZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5OiBUaW1lZC1vdXQgd2hpbGUgd2FpdGluZyBmb3IgcmVw
bHkgZm9yICVzLCBpZD0lIiBQUkl1NjQsIGRlc2NyaXB0aW9uKG1lc3NhZ2VOYW1lKSwgc3luY1Jl
cXVlc3RJRCk7CisgICAgUkVMRUFTRV9MT0dfRVJST1IoSVBDLCAiQ29ubmVjdGlvbjo6d2FpdEZv
clN5bmNSZXBseTogVGltZWQtb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHJlcGx5IGZvciAlcywgaWQ9
JSIgUFJJdTY0LCBkZXNjcmlwdGlvbihtZXNzYWdlTmFtZSksIHN5bmNSZXF1ZXN0SUQudG9VSW50
NjQoKSk7CiAjZW5kaWYKIAogICAgIGRpZFJlY2VpdmVTeW5jUmVwbHkoc2VuZFN5bmNPcHRpb25z
KTsKQEAgLTcxMiw3ICs3MTEsNyBAQCB2b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ1N5
bmNSZXBseShzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gZGVjb2RlcikKICAgICAgICAgZm9yIChz
aXplX3QgaSA9IG1fcGVuZGluZ1N5bmNSZXBsaWVzLnNpemUoKTsgaSA+IDA7IC0taSkgewogICAg
ICAgICAgICAgUGVuZGluZ1N5bmNSZXBseSYgcGVuZGluZ1N5bmNSZXBseSA9IG1fcGVuZGluZ1N5
bmNSZXBsaWVzW2kgLSAxXTsKIAotICAgICAgICAgICAgaWYgKHBlbmRpbmdTeW5jUmVwbHkuc3lu
Y1JlcXVlc3RJRCAhPSBkZWNvZGVyLT5kZXN0aW5hdGlvbklEKCkpCisgICAgICAgICAgICBpZiAo
cGVuZGluZ1N5bmNSZXBseS5zeW5jUmVxdWVzdElELnRvVUludDY0KCkgIT0gZGVjb2Rlci0+ZGVz
dGluYXRpb25JRCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBB
U1NFUlQoIXBlbmRpbmdTeW5jUmVwbHkucmVwbHlEZWNvZGVyKTsKQEAgLTkyNiwxNCArOTI1LDEz
IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShEZWNvZGVyJiBkZWNvZGVy
KQogewogICAgIEFTU0VSVChkZWNvZGVyLmlzU3luY01lc3NhZ2UoKSk7CiAKLSAgICB1aW50NjRf
dCBzeW5jUmVxdWVzdElEID0gMDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN5bmNSZXF1ZXN0
SUQpIHx8ICFzeW5jUmVxdWVzdElEKSB7CisgICAgU3luY1JlcXVlc3RJRCBzeW5jUmVxdWVzdElE
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3luY1JlcXVlc3RJRCkpIHsKICAgICAgICAgLy8g
V2UgcmVjZWl2ZWQgYW4gaW52YWxpZCBzeW5jIG1lc3NhZ2UuCi0gICAgICAgIGRlY29kZXIubWFy
a0ludmFsaWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcmVwbHlFbmNv
ZGVyID0gbWFrZVVuaXF1ZVJlZjxFbmNvZGVyPihNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBs
eSwgc3luY1JlcXVlc3RJRCk7CisgICAgYXV0byByZXBseUVuY29kZXIgPSBtYWtlVW5pcXVlUmVm
PEVuY29kZXI+KE1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5LCBzeW5jUmVxdWVzdElELnRv
VUludDY0KCkpOwogCiAgICAgYm9vbCB3YXNIYW5kbGVkID0gZmFsc2U7CiAgICAgaWYgKGRlY29k
ZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlTmFtZTo6V3JhcHBlZEFzeW5jTWVzc2FnZUZvclRl
c3RpbmcpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAppbmRleCA2MmQw
ZmI3MzM1ODE4M2FlYzY4YTZlYzQ2Yjk0MmFhZTI3OWQwNTA1Li40NGIxODdkYzZhY2JiMTZiMjUw
M2U5MDMyNWI2NDFkNDdiMWVlYmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVj
dGlvbi5oCkBAIC0xMDYsNiArMTA2LDkgQEAgY2xhc3MgVW5peE1lc3NhZ2U7CiAKIGNsYXNzIENv
bm5lY3Rpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q29ubmVjdGlvbiwgV1RGOjpE
ZXN0cnVjdGlvblRocmVhZDo6TWFpblJ1bkxvb3A+IHsKIHB1YmxpYzoKKyAgICBlbnVtIFN5bmNS
ZXF1ZXN0SURUeXBlIHsgfTsKKyAgICB1c2luZyBTeW5jUmVxdWVzdElEID0gT2JqZWN0SWRlbnRp
ZmllcjxTeW5jUmVxdWVzdElEVHlwZT47CisKICAgICBjbGFzcyBDbGllbnQgOiBwdWJsaWMgTWVz
c2FnZVJlY2VpdmVyIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9z
ZShDb25uZWN0aW9uJikgPSAwOwpAQCAtMjc2LDggKzI3OSw4IEBAIHB1YmxpYzoKICAgICB9CiAK
ICAgICBib29sIHNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxFbmNvZGVyPiYmLCBPcHRpb25TZXQ8U2Vu
ZE9wdGlvbj4gc2VuZE9wdGlvbnMpOwotICAgIFVuaXF1ZVJlZjxFbmNvZGVyPiBjcmVhdGVTeW5j
TWVzc2FnZUVuY29kZXIoTWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVpbnQ2
NF90JiBzeW5jUmVxdWVzdElEKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gc2VuZFN5
bmNNZXNzYWdlKHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIFVuaXF1ZVJlZjxFbmNvZGVyPiYmLCBU
aW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyk7CisgICAg
VW5pcXVlUmVmPEVuY29kZXI+IGNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihNZXNzYWdlTmFtZSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCwgU3luY1JlcXVlc3RJRCYpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxEZWNvZGVyPiBzZW5kU3luY01lc3NhZ2UoU3luY1JlcXVlc3RJRCwgVW5pcXVlUmVmPEVu
Y29kZXI+JiYsIFRpbWVvdXQsIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRp
b25zKTsKICAgICBib29sIHNlbmRTeW5jUmVwbHkoVW5pcXVlUmVmPEVuY29kZXI+JiYpOwogCiAg
ICAgdm9pZCB3YWtlVXBSdW5Mb29wKCk7CkBAIC0zMjQsMTAgKzMyNywxMSBAQCBwcml2YXRlOgog
ICAgIGJvb2wgaXNJbmNvbWluZ01lc3NhZ2VzVGhyb3R0bGluZ0VuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiAhIW1faW5jb21pbmdNZXNzYWdlc1Rocm90dGxlcjsgfQogICAgIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxEZWNvZGVyPiB3YWl0Rm9yTWVzc2FnZShNZXNzYWdlTmFtZSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCwgVGltZW91dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+KTsKLSAgICB1aW50
NjRfdCBtYWtlU3luY1JlcXVlc3RJRCgpIHsgcmV0dXJuICsrbV9zeW5jUmVxdWVzdElEOyB9Ci0g
ICAgYm9vbCBwdXNoUGVuZGluZ1N5bmNSZXF1ZXN0SUQodWludDY0X3Qgc3luY1JlcXVlc3RJRCk7
Ci0gICAgdm9pZCBwb3BQZW5kaW5nU3luY1JlcXVlc3RJRCh1aW50NjRfdCBzeW5jUmVxdWVzdElE
KTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gd2FpdEZvclN5bmNSZXBseSh1aW50NjRf
dCBzeW5jUmVxdWVzdElELCBNZXNzYWdlTmFtZSwgVGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5j
T3B0aW9uPik7CisKKyAgICBTeW5jUmVxdWVzdElEIG1ha2VTeW5jUmVxdWVzdElEKCkgeyByZXR1
cm4gU3luY1JlcXVlc3RJRDo6Z2VuZXJhdGVUaHJlYWRTYWZlKCk7IH0KKyAgICBib29sIHB1c2hQ
ZW5kaW5nU3luY1JlcXVlc3RJRChTeW5jUmVxdWVzdElEKTsKKyAgICB2b2lkIHBvcFBlbmRpbmdT
eW5jUmVxdWVzdElEKFN5bmNSZXF1ZXN0SUQpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVy
PiB3YWl0Rm9yU3luY1JlcGx5KFN5bmNSZXF1ZXN0SUQsIE1lc3NhZ2VOYW1lLCBUaW1lb3V0LCBP
cHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+KTsKIAogICAgIHZvaWQgZW5xdWV1ZU1hdGNoaW5nTWVz
c2FnZXNUb01lc3NhZ2VSZWNlaXZlUXVldWUoTG9ja2VyPExvY2s+JiBpbmNvbWluZ01lc3NhZ2Vz
TG9ja2VyLCBNZXNzYWdlUmVjZWl2ZVF1ZXVlJiwgUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0
aW5hdGlvbklEKTsKIApAQCAtMzgyLDcgKzM4Niw2IEBAIHByaXZhdGU6CiAgICAgVW5pcXVlSUQg
bV91bmlxdWVJRDsKICAgICBib29sIG1faXNTZXJ2ZXI7CiAgICAgc3RkOjphdG9taWM8Ym9vbD4g
bV9pc1ZhbGlkIHsgdHJ1ZSB9OwotICAgIHN0ZDo6YXRvbWljPHVpbnQ2NF90PiBtX3N5bmNSZXF1
ZXN0SUQ7CiAKICAgICBib29sIG1fb25seVNlbmRNZXNzYWdlc0FzRGlzcGF0Y2hXaGVuV2FpdGlu
Z0ZvclN5bmNSZXBseVdoZW5Qcm9jZXNzaW5nU3VjaEFNZXNzYWdlOwogICAgIGJvb2wgbV9zaG91
bGRFeGl0T25TeW5jTWVzc2FnZVNlbmRGYWlsdXJlOwpAQCAtNTU4LDcgKzU2MSw3IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0IENvbm5lY3Rpb246OnNl
bmRTeW5jKFQmJiBtZXNzYWdlCiAgICAgQ09NUElMRV9BU1NFUlQoVDo6aXNTeW5jLCBTeW5jTWVz
c2FnZUV4cGVjdGVkKTsKICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAK
LSAgICB1aW50NjRfdCBzeW5jUmVxdWVzdElEID0gMDsKKyAgICBTeW5jUmVxdWVzdElEIHN5bmNS
ZXF1ZXN0SUQ7CiAgICAgYXV0byBlbmNvZGVyID0gY3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKFQ6
Om5hbWUoKSwgZGVzdGluYXRpb25JRCwgc3luY1JlcXVlc3RJRCk7CiAKICAgICBpZiAoc2VuZFN5
bmNPcHRpb25zLmNvbnRhaW5zKFNlbmRTeW5jT3B0aW9uOjpVc2VGdWxseVN5bmNocm9ub3VzTW9k
ZUZvclRlc3RpbmcpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9E
ZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCmluZGV4
IGQ0ZDJkMDdlZWNkMzNmOWUyYzBjOGRlZTFmZDA4ODUyYjc0ZjI1MzEuLmExNDEzMTMzNTNiNGU1
YWY5YjNhOWU3NzE0OGMyNWExOGVhODlmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0RlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Rl
Y29kZXIuY3BwCkBAIC04NCwyMCArODQsMTQgQEAgRGVjb2Rlcjo6RGVjb2Rlcihjb25zdCB1aW50
OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCB2b2lkICgqYnVmZmVyRGVhbGxvY2EKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghZGVjb2RlKG1fbWVzc2FnZUZsYWdzKSkg
ewotICAgICAgICBtYXJrSW52YWxpZCgpOworICAgIGlmICghZGVjb2RlKG1fbWVzc2FnZUZsYWdz
KSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAotICAgIGlmICghZGVjb2RlKG1fbWVzc2FnZU5h
bWUpKSB7Ci0gICAgICAgIG1hcmtJbnZhbGlkKCk7CisgICAgaWYgKCFkZWNvZGUobV9tZXNzYWdl
TmFtZSkpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKLSAgICBpZiAoIWRlY29kZShtX2Rlc3Rp
bmF0aW9uSUQpKSB7Ci0gICAgICAgIG1hcmtJbnZhbGlkKCk7CisgICAgaWYgKCFkZWNvZGUobV9k
ZXN0aW5hdGlvbklEKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIH0KIAogRGVjb2Rlcjo6RGVj
b2Rlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBDb25zdHJ1Y3RX
aXRob3V0SGVhZGVyVGFnKQpAQCAtMTE3LDEwICsxMTEsOCBAQCBEZWNvZGVyOjpEZWNvZGVyKGNv
bnN0IHVpbnQ4X3QqIHN0cmVhbSwgc2l6ZV90IHN0cmVhbVNpemUsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSQogICAgICwgbV9idWZmZXJEZWFsbG9jYXRvcihbXSAoY29uc3QgdWludDhfdCosIHNpemVf
dCkgeyB9KQogICAgICwgbV9kZXN0aW5hdGlvbklEKGRlc3RpbmF0aW9uSUQpCiB7Ci0gICAgaWYg
KCFkZWNvZGUobV9tZXNzYWdlTmFtZSkpIHsKLSAgICAgICAgbWFya0ludmFsaWQoKTsKKyAgICBp
ZiAoIWRlY29kZShtX21lc3NhZ2VOYW1lKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIH0KIAog
RGVjb2Rlcjo6fkRlY29kZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvRGVjb2Rlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCmluZGV4
IGVkMjE2Mzc2MzIzYWZiODBlM2FhMTU2ODU2YzhlMGM1ZjRiOGQ4YTcuLmY4MzlhMzc1MjgwZDIy
MDZiNWU3NTQ1ZDFlMzBhNmFkNjIxZDJiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0RlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNv
ZGVyLmgKQEAgLTg5LDI4ICs4OSwzNyBAQCBwdWJsaWM6CiAgICAgV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgZGVjb2RlKFQmIHQpCiAgICAgewogICAgICAgICB1c2luZyBJbXBsID0gQXJndW1lbnRD
b2RlcjxzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PFQ+Piwgdm9p
ZD47Ci0gICAgICAgIGlmIGNvbnN0ZXhwcihIYXNMZWdhY3lEZWNvZGVyPFQsIEltcGw+Ojp2YWx1
ZSkKLSAgICAgICAgICAgIHJldHVybiBJbXBsOjpkZWNvZGUoKnRoaXMsIHQpOwotICAgICAgICBl
bHNlIHsKKyAgICAgICAgaWYgY29uc3RleHByKEhhc0xlZ2FjeURlY29kZXI8VCwgSW1wbD46OnZh
bHVlKSB7CisgICAgICAgICAgICBpZiAoIUltcGw6OmRlY29kZSgqdGhpcywgdCkpIHsKKyAgICAg
ICAgICAgICAgICBtYXJrSW52YWxpZCgpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIE9wdGlvbmFsPFQ+
IG9wdGlvbmFsOwogICAgICAgICAgICAgKnRoaXMgPj4gb3B0aW9uYWw7Ci0gICAgICAgICAgICBp
ZiAoIW9wdGlvbmFsKQorICAgICAgICAgICAgaWYgKCFvcHRpb25hbCkgeworICAgICAgICAgICAg
ICAgIG1hcmtJbnZhbGlkKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgfQogICAgICAgICAgICAgdCA9IFdURk1vdmUoKm9wdGlvbmFsKTsKLSAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25h
bDxUPiYgdCkKICAgICB7CiAgICAgICAgIHVzaW5nIEltcGwgPSBBcmd1bWVudENvZGVyPHN0ZDo6
cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+LCB2b2lkPjsKLSAgICAg
ICAgaWYgY29uc3RleHByKEhhc01vZGVybkRlY29kZXI8VCwgSW1wbD46OnZhbHVlKQorICAgICAg
ICBpZiBjb25zdGV4cHIoSGFzTW9kZXJuRGVjb2RlcjxULCBJbXBsPjo6dmFsdWUpIHsKICAgICAg
ICAgICAgIHQgPSBJbXBsOjpkZWNvZGUoKnRoaXMpOwotICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIGlmICghdCkKKyAgICAgICAgICAgICAgICBtYXJrSW52YWxpZCgpOworICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgVCB2OwogICAgICAgICAgICAgaWYgKEltcGw6OmRlY29kZSgqdGhp
cywgdikpCiAgICAgICAgICAgICAgICAgdCA9IFdURk1vdmUodik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgbWFya0ludmFsaWQoKTsKICAgICAgICAgfQogICAgICAgICByZXR1
cm4gKnRoaXM7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
SGFuZGxlTWVzc2FnZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2Fn
ZS5oCmluZGV4IGU3NTNkMTEyYTQ3MTljNzJmOWY3MGFhNzkyYzVjMDQyZWI3ZDA4YWQuLjVjYWM3
MGM0YjIwYmE3NWZhZjQ4YWMzYmM5NDMxMzAzYTExMTQ3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKQEAgLTExMywxMCArMTEzLDggQEAgdm9pZCBoYW5k
bGVNZXNzYWdlKERlY29kZXImIGRlY29kZXIsIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCiB7CiAg
ICAgT3B0aW9uYWw8dHlwZW5hbWUgQ29kaW5nVHlwZTx0eXBlbmFtZSBUOjpBcmd1bWVudHM+OjpU
eXBlPiBhcmd1bWVudHM7CiAgICAgZGVjb2RlciA+PiBhcmd1bWVudHM7Ci0gICAgaWYgKCFhcmd1
bWVudHMpIHsKLSAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgpOworICAgIGlmICghYXJndW1l
bnRzKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgY2FsbE1lbWJlckZ1bmN0aW9uKFdU
Rk1vdmUoKmFyZ3VtZW50cyksIG9iamVjdCwgZnVuY3Rpb24pOwogfQpAQCAtMTI2LDEwICsxMjQs
OCBAQCB2b2lkIGhhbmRsZU1lc3NhZ2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYg
ZGVjb2RlciwgQyogb2JqZWN0LCBNRiBmdW5jdAogewogICAgIE9wdGlvbmFsPHR5cGVuYW1lIENv
ZGluZ1R5cGU8dHlwZW5hbWUgVDo6QXJndW1lbnRzPjo6VHlwZT4gYXJndW1lbnRzOwogICAgIGRl
Y29kZXIgPj4gYXJndW1lbnRzOwotICAgIGlmICghYXJndW1lbnRzKSB7Ci0gICAgICAgIGRlY29k
ZXIubWFya0ludmFsaWQoKTsKKyAgICBpZiAoIWFyZ3VtZW50cykKICAgICAgICAgcmV0dXJuOwot
ICAgIH0KICAgICBjYWxsTWVtYmVyRnVuY3Rpb24oY29ubmVjdGlvbiwgV1RGTW92ZSgqYXJndW1l
bnRzKSwgb2JqZWN0LCBmdW5jdGlvbik7CiB9CiAKQEAgLTEzOCwxMCArMTM0LDggQEAgYm9vbCBo
YW5kbGVNZXNzYWdlU3luY2hyb25vdXMoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYg
ZGVjb2RlciwgVW5pcXVlUmUKIHsKICAgICBPcHRpb25hbDx0eXBlbmFtZSBDb2RpbmdUeXBlPHR5
cGVuYW1lIFQ6OkFyZ3VtZW50cz46OlR5cGU+IGFyZ3VtZW50czsKICAgICBkZWNvZGVyID4+IGFy
Z3VtZW50czsKLSAgICBpZiAoIWFyZ3VtZW50cykgewotICAgICAgICBkZWNvZGVyLm1hcmtJbnZh
bGlkKCk7CisgICAgaWYgKCFhcmd1bWVudHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
CiAKICAgICB0eXBlbmFtZSBUOjpEZWxheWVkUmVwbHkgY29tcGxldGlvbkhhbmRsZXIgPSBbcmVw
bHlFbmNvZGVyID0gV1RGTW92ZShyZXBseUVuY29kZXIpLCBjb25uZWN0aW9uID0gbWFrZVJlZihj
b25uZWN0aW9uKV0gKGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxlIHsKICAgICAgICAgVDo6c2VuZChX
VEZNb3ZlKHJlcGx5RW5jb2RlciksIFdURk1vdmUoY29ubmVjdGlvbiksIGFyZ3MuLi4pOwpAQCAt
MTU1LDEwICsxNDksOCBAQCBib29sIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91c1dhbnRzQ29ubmVj
dGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZQogewogICAgIE9wdGlvbmFs
PHR5cGVuYW1lIENvZGluZ1R5cGU8dHlwZW5hbWUgVDo6QXJndW1lbnRzPjo6VHlwZT4gYXJndW1l
bnRzOwogICAgIGRlY29kZXIgPj4gYXJndW1lbnRzOwotICAgIGlmICghYXJndW1lbnRzKSB7Ci0g
ICAgICAgIGRlY29kZXIubWFya0ludmFsaWQoKTsKKyAgICBpZiAoIWFyZ3VtZW50cykKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KICAgICAKICAgICB0eXBlbmFtZSBUOjpEZWxheWVkUmVw
bHkgY29tcGxldGlvbkhhbmRsZXIgPSBbcmVwbHlFbmNvZGVyID0gV1RGTW92ZShyZXBseUVuY29k
ZXIpLCBjb25uZWN0aW9uID0gbWFrZVJlZihjb25uZWN0aW9uKV0gKGF1dG8mJi4uLiBhcmdzKSBt
dXRhYmxlIHsKICAgICAgICAgVDo6c2VuZChXVEZNb3ZlKHJlcGx5RW5jb2RlciksIFdURk1vdmUo
Y29ubmVjdGlvbiksIGFyZ3MuLi4pOwpAQCAtMTcwLDE4ICsxNjIsMTQgQEAgYm9vbCBoYW5kbGVN
ZXNzYWdlU3luY2hyb25vdXNXYW50c0Nvbm5lY3Rpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
RGVjb2RlciYgZGUKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1G
Pgogdm9pZCBoYW5kbGVNZXNzYWdlU3luY2hyb25vdXMoU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJh
c2UmIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIsIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24p
CiB7Ci0gICAgdWludDY0X3Qgc3luY1JlcXVlc3RJRCA9IDA7Ci0gICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShzeW5jUmVxdWVzdElEKSB8fCAhc3luY1JlcXVlc3RJRCkgewotICAgICAgICBkZWNvZGVy
Lm1hcmtJbnZhbGlkKCk7CisgICAgQ29ubmVjdGlvbjo6U3luY1JlcXVlc3RJRCBzeW5jUmVxdWVz
dElEOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3luY1JlcXVlc3RJRCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICB9CiAKICAgICBPcHRpb25hbDx0eXBlbmFtZSBDb2RpbmdUeXBlPHR5cGVuYW1l
IFQ6OkFyZ3VtZW50cz46OlR5cGU+IGFyZ3VtZW50czsKICAgICBkZWNvZGVyID4+IGFyZ3VtZW50
czsKLSAgICBpZiAoIWFyZ3VtZW50cykgewotICAgICAgICBkZWNvZGVyLm1hcmtJbnZhbGlkKCk7
CisgICAgaWYgKCFhcmd1bWVudHMpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICB0eXBl
bmFtZSBUOjpEZWxheWVkUmVwbHkgY29tcGxldGlvbkhhbmRsZXIgPSBbc3luY1JlcXVlc3RJRCwg
Y29ubmVjdGlvbiA9IG1ha2VSZWYoY29ubmVjdGlvbildIChhdXRvJiYuLi4gYXJncykgbXV0YWJs
ZSB7CiAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHk8VD4oc3luY1JlcXVlc3RJRCwg
YXJncy4uLik7CkBAIC0xOTQsMTcgKzE4MiwxMyBAQCB2b2lkIGhhbmRsZU1lc3NhZ2VBc3luYyhD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyLCBDKiBvYmplY3QsIE1GCiB7
CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGxpc3RlbmVySUQ7CiAgICAgZGVjb2RlciA+PiBsaXN0
ZW5lcklEOwotICAgIGlmICghbGlzdGVuZXJJRCkgewotICAgICAgICBkZWNvZGVyLm1hcmtJbnZh
bGlkKCk7CisgICAgaWYgKCFsaXN0ZW5lcklEKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAg
ICAgT3B0aW9uYWw8dHlwZW5hbWUgQ29kaW5nVHlwZTx0eXBlbmFtZSBUOjpBcmd1bWVudHM+OjpU
eXBlPiBhcmd1bWVudHM7CiAgICAgZGVjb2RlciA+PiBhcmd1bWVudHM7Ci0gICAgaWYgKCFhcmd1
bWVudHMpIHsKLSAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgpOworICAgIGlmICghYXJndW1l
bnRzKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgdHlwZW5hbWUgVDo6QXN5bmNSZXBs
eSBjb21wbGV0aW9uSGFuZGxlciA9IHsgW2xpc3RlbmVySUQgPSAqbGlzdGVuZXJJRCwgY29ubmVj
dGlvbiA9IG1ha2VSZWYoY29ubmVjdGlvbildIChhdXRvJiYuLi4gYXJncykgbXV0YWJsZSB7CiAg
ICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWVSZWY8RW5jb2Rlcj4oVDo6YXN5bmNNZXNz
YWdlUmVwbHlOYW1lKCksIGxpc3RlbmVySUQpOwpAQCAtMjE4LDEwICsyMDIsOCBAQCB2b2lkIGhh
bmRsZU1lc3NhZ2VBc3luY1dhbnRzQ29ubmVjdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBE
ZWNvZGVyJiBkZWNvZGVyLAogewogICAgIE9wdGlvbmFsPHR5cGVuYW1lIENvZGluZ1R5cGU8dHlw
ZW5hbWUgVDo6QXJndW1lbnRzPjo6VHlwZT4gYXJndW1lbnRzOwogICAgIGRlY29kZXIgPj4gYXJn
dW1lbnRzOwotICAgIGlmICghYXJndW1lbnRzKSB7Ci0gICAgICAgIGRlY29kZXIubWFya0ludmFs
aWQoKTsKKyAgICBpZiAoIWFyZ3VtZW50cykKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAg
IHR5cGVuYW1lIFQ6OkFzeW5jUmVwbHkgY29tcGxldGlvbkhhbmRsZXIgPSBbbGlzdGVuZXJJRCA9
IGRlY29kZXIuZGVzdGluYXRpb25JRCgpLCBjb25uZWN0aW9uID0gbWFrZVJlZihjb25uZWN0aW9u
KV0gKGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBlbmNvZGVyID0gbWFr
ZVVuaXF1ZVJlZjxFbmNvZGVyPihUOjphc3luY01lc3NhZ2VSZXBseU5hbWUoKSwgbGlzdGVuZXJJ
RCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uLmgKaW5kZXggOTBlZGYzODc0MTRlYWY5YzJhYThhYjExOTVhYWJjMmIxYmI4YTQ3OS4u
NGY2MTZlZjgyM2U5M2E1Mzg0ZDRhZDE1NDQ0MDM2Njc3MjEyYjhiNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaApAQCAtNTMs
NyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBEaXNwYXRjaFJlc3VsdCBkaXNwYXRjaFN0
cmVhbU1lc3NhZ2VzKHNpemVfdCBtZXNzYWdlTGltaXQpID0gMDsKIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KLSAgICB2b2lkIHNlbmRTeW5jUmVwbHko
dWludDY0X3Qgc3luY1JlcXVlc3RJRCwgQXJndW1lbnRzJiYuLi4pOworICAgIHZvaWQgc2VuZFN5
bmNSZXBseShDb25uZWN0aW9uOjpTeW5jUmVxdWVzdElELCBBcmd1bWVudHMmJi4uLik7CiAKIHBy
b3RlY3RlZDoKICAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZShJUEM6OkNvbm5lY3Rpb24m
LCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYsIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUmKTsK
QEAgLTEwMiw3ICsxMDIsNyBAQCBwcm90ZWN0ZWQ6CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+Ci12b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNl
OjpzZW5kU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIEFyZ3VtZW50cyYmLi4uIGFy
Z3VtZW50cykKK3ZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNlbmRTeW5jUmVwbHko
Q29ubmVjdGlvbjo6U3luY1JlcXVlc3RJRCBzeW5jUmVxdWVzdElELCBBcmd1bWVudHMmJi4uLiBh
cmd1bWVudHMpCiB7CiAgICAgaWYgY29uc3RleHByKFQ6OmlzUmVwbHlTdHJlYW1FbmNvZGFibGUp
IHsKICAgICAgICAgaWYgKG1faXNEaXNwYXRjaGluZ1N0cmVhbU1lc3NhZ2UpIHsKQEAgLTExNSw3
ICsxMTUsNyBAQCB2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzZW5kU3luY1JlcGx5
KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIEFyZ3VtZW50cwogICAgICAgICAgICAgU3RyZWFtQ29u
bmVjdGlvbkVuY29kZXIgb3V0T2ZTdHJlYW1FbmNvZGVyIHsgTWVzc2FnZU5hbWU6OlByb2Nlc3NP
dXRPZlN0cmVhbU1lc3NhZ2UsIHNwYW4uZGF0YSwgc3Bhbi5zaXplIH07CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZVJlZjxFbmNvZGVyPihNZXNzYWdlTmFt
ZTo6U3luY01lc3NhZ2VSZXBseSwgc3luY1JlcXVlc3RJRCk7CisgICAgYXV0byBlbmNvZGVyID0g
bWFrZVVuaXF1ZVJlZjxFbmNvZGVyPihNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseSwgc3lu
Y1JlcXVlc3RJRC50b1VJbnQ2NCgpKTsKIAogICAgIChlbmNvZGVyLmdldCgpIDw8IC4uLiA8PCBh
cmd1bWVudHMpOwogICAgIG1fY29ubmVjdGlvbi0+c2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29k
ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uY3BwCmluZGV4
IDBmYWVmZjFmYjg0NWUyNTRkOTk2M2UzNTYwZWU5NDg5ODJjNzkzZGEuLmQzNjExZjQwNThjZWJh
MDFkZDk4NjNkYzM4ZWNlNDFkOWQzNWYyZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luLmNwcApAQCAtNzMsMTAgKzczLDggQEAgYm9vbCBQbHVnaW46OlBhcmFt
ZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmxheWVySG9zdGluZ01vZGUp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKLSAgICBpZiAocGFyYW1ldGVycy5uYW1l
cy5zaXplKCkgIT0gcGFyYW1ldGVycy52YWx1ZXMuc2l6ZSgpKSB7Ci0gICAgICAgIGRlY29kZXIu
bWFya0ludmFsaWQoKTsKKyAgICBpZiAocGFyYW1ldGVycy5uYW1lcy5zaXplKCkgIT0gcGFyYW1l
dGVycy52YWx1ZXMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQogCiAgICAg
cmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9JUENUZXN0aW5nQVBJLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0lQQ1Rlc3RpbmdBUEkuY3BwCmluZGV4IDUyYTZkNDk2OTFhZjkxNzlkNTNkYTkwOTc3MTJjOTVm
NjExZjhhMjkuLmQ0OTVmMjg4NTBmMGU2Y2ZhMGE2YjYzOWJmNGYwMGM1YjA5OWY1ZTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3Bw
CkBAIC03MzcsNyArNzM3LDcgQEAgSlNWYWx1ZVJlZiBKU0lQQzo6c2VuZFN5bmNNZXNzYWdlKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYKIAogICAgIC8vIEZJ
WE1FOiBTdXBwb3J0IHRoZSBvcHRpb25zLgogCi0gICAgdWludDY0X3Qgc3luY1JlcXVlc3RJRCA9
IDA7CisgICAgSVBDOjpDb25uZWN0aW9uOjpTeW5jUmVxdWVzdElEIHN5bmNSZXF1ZXN0SUQ7CiAg
ICAgYXV0byBtZXNzYWdlTmFtZSA9IHN0YXRpY19jYXN0PElQQzo6TWVzc2FnZU5hbWU+KCptZXNz
YWdlSUQpOwogICAgIGF1dG8gZW5jb2RlciA9IGNvbm5lY3Rpb24tPmNyZWF0ZVN5bmNNZXNzYWdl
RW5jb2RlcihtZXNzYWdlTmFtZSwgKmRlc3RpbmF0aW9uSUQsIHN5bmNSZXF1ZXN0SUQpOwogCkBA
IC05NzAsOCArOTcwLDkgQEAgSlNDOjpKU09iamVjdCogSlNNZXNzYWdlTGlzdGVuZXI6OmpzRGVz
Y3JpcHRpb25Gcm9tRGVjb2RlcihKU0M6OkpTR2xvYmFsT2JqZWN0KgogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogCiAgICAgaWYgKGRlY29kZXIuaXNTeW5jTWVzc2Fn
ZSgpKSB7Ci0gICAgICAgIGlmICh1aW50NjRfdCBzeW5jUmVxdWVzdElEID0gMDsgZGVjb2Rlci5k
ZWNvZGUoc3luY1JlcXVlc3RJRCkpIHsKLSAgICAgICAgICAgIGpzUmVzdWx0LT5wdXREaXJlY3Qo
dm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInN5bmNSZXF1ZXN0SUQiKSwgSlND
OjpKU1ZhbHVlKHN5bmNSZXF1ZXN0SUQpKTsKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpTeW5j
UmVxdWVzdElEIHN5bmNSZXF1ZXN0SUQ7CisgICAgICAgIGlmIChkZWNvZGVyLmRlY29kZShzeW5j
UmVxdWVzdElEKSkgeworICAgICAgICAgICAganNSZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic3luY1JlcXVlc3RJRCIpLCBKU0M6OkpTVmFsdWUo
c3luY1JlcXVlc3RJRC50b1VJbnQ2NCgpKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBudWxscHRyKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobWVzc2FnZVJl
cGx5QXJndW1lbnREZXNjcmlwdGlvbnMoZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427189</attachid>
            <date>2021-04-27 13:35:19 -0700</date>
            <delta_ts>2021-04-27 16:35:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225117-20210427133518.patch</filename>
            <type>text/plain</type>
            <size>33397</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2NjUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWNkMjg3NGNlZjE1ZmU2
N2JiY2E0OGYxNWJjZTQ4Nzc3NzMzYTIxYy4uYWVjZDAwN2RjYWUxODdkODc4ZDU0YzBhYjc2MmIx
MjQyZGZhNmZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA0LTI3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSVBDOjpkZWNvZGVyOjpkZWNv
ZGUoKSBzaG91bGQgbWFyayBkZWNvZGVyIGFzIGludmFsaWQgd2hlbiBmYWlsaW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUxMTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJUEM6OmRlY29kZXI6OmRl
Y29kZSgpIHNob3VsZCBtYXJrIGRlY29kZXIgYXMgaW52YWxpZCB3aGVuIGZhaWxpbmcsIGluc3Rl
YWQgb2YgcmVseWluZworICAgICAgICBvbiBpbmRpdmlkdWFsIHR5cGUgZGVjb2RlcnMgdG8gZG8g
c28uIFRoaXMgbWFrZXMgdHlwZSBkZWNvZGVycyBhIGJpdCBzaW1wbGVyIGFuZCBsZXNzCisgICAg
ICAgIGVycm9yLXByb25lLgorCisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxp
Z2h0Lmg6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHQ6OmRlY29kZSk6CisKIDIwMjEt
MDQtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCBr
ZWVwIGxvY2FsIHN0b3JhZ2UgZGF0YSBpbiBtZW1vcnkgaW4gdGhlIE5ldHdvcmtQcm9jZXNzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDk1NWM4YzcxY2Y3YjFkNDFkYjEyZjcxY2E4ZmJkMGU1ZjI4NGM1MWUuLjEyNmNi
N2FmMTFhMmQ0Mzc5ODEzZTY1YjVmZWQwZjk4OThkNTg1ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzUgQEAKKzIwMjEtMDQtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBJUEM6OmRlY29kZXI6OmRlY29kZSgpIHNob3VsZCBtYXJrIGRlY29kZXIgYXMgaW52YWxp
ZCB3aGVuIGZhaWxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNTExNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIElQQzo6ZGVjb2Rlcjo6ZGVjb2RlKCkgc2hvdWxkIG1hcmsgZGVjb2RlciBhcyBpbnZh
bGlkIHdoZW4gZmFpbGluZywgaW5zdGVhZCBvZiByZWx5aW5nCisgICAgICAgIG9uIGluZGl2aWR1
YWwgdHlwZSBkZWNvZGVycyB0byBkbyBzby4gVGhpcyBtYWtlcyB0eXBlIGRlY29kZXJzIGEgYml0
IHNpbXBsZXIgYW5kIGxlc3MKKyAgICAgICAgZXJyb3ItcHJvbmUuCisKKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PENTdHJpbmc+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpkZWNvZGVTdHJpbmdUZXh0KToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNo
TWVzc2FnZVJlY2VpdmVyTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3Bh
dGNoU3luY01lc3NhZ2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcDoKKyAg
ICAgICAgKElQQzo6bV9kZXN0aW5hdGlvbklEKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGVj
b2Rlci5oOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpE
ZWNvZGVyOjpvcGVyYXRvcj4+KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2Fn
ZS5oOgorICAgICAgICAoSVBDOjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKElQQzo6aGFuZGxl
TWVzc2FnZVN5bmNocm9ub3VzKToKKyAgICAgICAgKElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9u
b3VzV2FudHNDb25uZWN0aW9uKToKKyAgICAgICAgKElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jKToK
KyAgICAgICAgKElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jV2FudHNDb25uZWN0aW9uKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luOjpQYXJhbWV0ZXJzOjpkZWNvZGUpOgorCiAyMDIxLTA0LTI3ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRG9uJ3Qga2VlcCBsb2NhbCBzdG9yYWdlIGRhdGEg
aW4gbWVtb3J5IGluIHRoZSBOZXR3b3JrUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAppbmRleCAzOWIzZmYyYjRhMmFhYTZhZDc5YjY2
ZDkyMGIyYjdjZjkzM2JlMjNmLi4wOGRiMTU3MzZhZDc2MjI2NDIwMzU3YjVlNjNmNjU4N2M1MDNk
NDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdo
bGlnaHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHQuaApAQCAtNzAsMTAgKzcwLDggQEAgT3B0aW9uYWw8QXBwSGlnaGxpZ2h0PiBBcHBIaWdobGln
aHQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghbGVuZ3RoKQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgaWYgKCFkZWNvZGVyLnRlbXBsYXRlIGJ1ZmZlcklz
TGFyZ2VFbm91Z2hUb0NvbnRhaW48dWludDhfdD4obGVuZ3RoLnZhbHVlKCkpKSB7Ci0gICAgICAg
IGRlY29kZXIubWFya0ludmFsaWQoKTsKKyAgICBpZiAoIWRlY29kZXIudGVtcGxhdGUgYnVmZmVy
SXNMYXJnZUVub3VnaFRvQ29udGFpbjx1aW50OF90PihsZW5ndGgudmFsdWUoKSkpCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGhpZ2hs
aWdodDsKICAgICBoaWdobGlnaHQuZ3JvdygqbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBhZWU4OWU2MjY5NmM1NjBmMGExOGJm
YjFkNjc2OTE2NTBlN2ZmMmFiLi5iNjI5MzllNmJhY2MyZmViNGEzNTEzZGFkMjk3ZTk5YWZjMWMz
MzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3Bw
CkBAIC05OCwxMCArOTgsOCBAQCBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBBcmd1bWVudENvZGVy
PENTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQ1N0cmluZwogICAgIH0KIAogICAg
IC8vIEJlZm9yZSBhbGxvY2F0aW5nIHRoZSBzdHJpbmcsIG1ha2Ugc3VyZSB0aGF0IHRoZSBkZWNv
ZGVyIGJ1ZmZlciBpcyBiaWcgZW5vdWdoLgotICAgIGlmICghZGVjb2Rlci5idWZmZXJJc0xhcmdl
RW5vdWdoVG9Db250YWluPGNoYXI+KGxlbmd0aCkpIHsKLSAgICAgICAgZGVjb2Rlci5tYXJrSW52
YWxpZCgpOworICAgIGlmICghZGVjb2Rlci5idWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluPGNo
YXI+KGxlbmd0aCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAKICAgICBjaGFyKiBi
dWZmZXI7CiAgICAgQ1N0cmluZyBzdHJpbmcgPSBDU3RyaW5nOjpuZXdVbmluaXRpYWxpemVkKGxl
bmd0aCwgYnVmZmVyKTsKQEAgLTE0MCwxMCArMTM4LDggQEAgdGVtcGxhdGUgPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+CiBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPFN0cmluZz4gZGVjb2RlU3RyaW5n
VGV4dChEZWNvZGVyJiBkZWNvZGVyLCB1aW50MzJfdCBsZW5ndGgpCiB7CiAgICAgLy8gQmVmb3Jl
IGFsbG9jYXRpbmcgdGhlIHN0cmluZywgbWFrZSBzdXJlIHRoYXQgdGhlIGRlY29kZXIgYnVmZmVy
IGlzIGJpZyBlbm91Z2guCi0gICAgaWYgKCFkZWNvZGVyLmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0Nv
bnRhaW48Q2hhcmFjdGVyVHlwZT4obGVuZ3RoKSkgewotICAgICAgICBkZWNvZGVyLm1hcmtJbnZh
bGlkKCk7CisgICAgaWYgKCFkZWNvZGVyLmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48Q2hh
cmFjdGVyVHlwZT4obGVuZ3RoKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9
CiAgICAgCiAgICAgQ2hhcmFjdGVyVHlwZSogYnVmZmVyOwogICAgIFN0cmluZyBzdHJpbmcgPSBT
dHJpbmc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKaW5kZXggOTc2ZDY1MjVlNjg4YWE4MmQz
ZmYwYTRkMTM1M2M3YjZiMTUwNWVlMi4uYmU2NDAzNzk1YTFjNWJkMjA5ZTcxYWFmMDNlNjExMDk2
NWE4ZDA3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRD
b2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5o
CkBAIC00MjgsMzMgKzQyOCwyNSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5l
Q2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbgogICAgIHN0YXRp
YyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9y
PFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5PiYgdmVjdG9y
KQogICAgIHsKICAgICAgICAgdWludDY0X3QgZGVjb2RlZFNpemU7Ci0gICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZGVjb2RlZFNpemUpKSB7Ci0gICAgICAgICAgICBkZWNvZGVyLm1hcmtJbnZh
bGlkKCk7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGVjb2RlZFNpemUpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFpc0luQm91bmRz
PHNpemVfdD4oZGVjb2RlZFNpemUpKSB7Ci0gICAgICAgICAgICBkZWNvZGVyLm1hcmtJbnZhbGlk
KCk7CisgICAgICAgIGlmICghaXNJbkJvdW5kczxzaXplX3Q+KGRlY29kZWRTaXplKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQogCiAgICAgICAgIGF1dG8gc2l6ZSA9IHN0
YXRpY19jYXN0PHNpemVfdD4oZGVjb2RlZFNpemUpOwogCiAgICAgICAgIC8vIFNpbmNlIHdlIGtu
b3cgdGhlIHRvdGFsIHNpemUgb2YgdGhlIGVsZW1lbnRzLCB3ZSBjYW4gYWxsb2NhdGUgdGhlIHZl
Y3RvciBpbgogICAgICAgICAvLyBvbmUgZmVsbCBzd29vcC4gQmVmb3JlIGFsbG9jYXRpbmcgd2Ug
bXVzdCBob3dldmVyIG1ha2Ugc3VyZSB0aGF0IHRoZSBkZWNvZGVyIGJ1ZmZlcgogICAgICAgICAv
LyBpcyBiaWcgZW5vdWdoLgotICAgICAgICBpZiAoIWRlY29kZXIuYnVmZmVySXNMYXJnZUVub3Vn
aFRvQ29udGFpbjxUPihzaXplKSkgewotICAgICAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgp
OworICAgICAgICBpZiAoIWRlY29kZXIuYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjxUPihz
aXplKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQogCiAgICAgICAgIFZl
Y3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT4gdGVt
cDsKICAgICAgICAgdGVtcC5ncm93KHNpemUpOwogCi0gICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4odGVtcC5kYXRhKCkp
LCBzaXplICogc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKSkgewotICAgICAgICAgICAgZGVjb2Rlci5t
YXJrSW52YWxpZCgpOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRh
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHRlbXAuZGF0YSgpKSwgc2l6ZSAqIHNpemVvZihU
KSwgYWxpZ25vZihUKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KIAog
ICAgICAgICB2ZWN0b3Iuc3dhcCh0ZW1wKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC00NjMs
MzMgKzQ1NSwyNSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHks
IHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbgogICAgIHN0YXRpYyBPcHRpb25h
bDxWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+
PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7CiAgICAgICAgIHVpbnQ2NF90IGRlY29k
ZWRTaXplOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRlY29kZWRTaXplKSkgewotICAg
ICAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgpOworICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGRlY29kZWRTaXplKSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAg
ICAgIH0KIAotICAgICAgICBpZiAoIWlzSW5Cb3VuZHM8c2l6ZV90PihkZWNvZGVkU2l6ZSkpIHsK
LSAgICAgICAgICAgIGRlY29kZXIubWFya0ludmFsaWQoKTsKKyAgICAgICAgaWYgKCFpc0luQm91
bmRzPHNpemVfdD4oZGVjb2RlZFNpemUpKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKLSAgICAgICAgfQogCiAgICAgICAgIGF1dG8gc2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4o
ZGVjb2RlZFNpemUpOwogCiAgICAgICAgIC8vIFNpbmNlIHdlIGtub3cgdGhlIHRvdGFsIHNpemUg
b2YgdGhlIGVsZW1lbnRzLCB3ZSBjYW4gYWxsb2NhdGUgdGhlIHZlY3RvciBpbgogICAgICAgICAv
LyBvbmUgZmVsbCBzd29vcC4gQmVmb3JlIGFsbG9jYXRpbmcgd2UgbXVzdCBob3dldmVyIG1ha2Ug
c3VyZSB0aGF0IHRoZSBkZWNvZGVyIGJ1ZmZlcgogICAgICAgICAvLyBpcyBiaWcgZW5vdWdoLgot
ICAgICAgICBpZiAoIWRlY29kZXIuYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjxUPihzaXpl
KSkgewotICAgICAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgpOworICAgICAgICBpZiAoIWRl
Y29kZXIuYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjxUPihzaXplKSkKICAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIFZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT4gdmVjdG9y
OwogICAgICAgICB2ZWN0b3IuZ3JvdyhzaXplKTsKIAotICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHZlY3Rvci5kYXRh
KCkpLCBzaXplICogc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKSkgewotICAgICAgICAgICAgZGVjb2Rl
ci5tYXJrSW52YWxpZCgpOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhE
YXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHZlY3Rvci5kYXRhKCkpLCBzaXplICogc2l6
ZW9mKFQpLCBhbGlnbm9mKFQpKSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0g
ICAgICAgIH0KIAogICAgICAgICByZXR1cm4gdmVjdG9yOwogICAgIH0KQEAgLTUyNSwxNCArNTA5
LDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBl
bmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpCiAgICAgICAgICAgICBpZiAoVU5MSUtFTFko
IXZhbHVlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgICAg
ICAgICBpZiAoVU5MSUtFTFkoIUhhc2hNYXBUeXBlOjppc1ZhbGlkS2V5KCprZXkpKSkgewotICAg
ICAgICAgICAgICAgIGRlY29kZXIubWFya0ludmFsaWQoKTsKKyAgICAgICAgICAgIGlmIChVTkxJ
S0VMWSghSGFzaE1hcFR5cGU6OmlzVmFsaWRLZXkoKmtleSkpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChVTkxJ
S0VMWSghaGFzaE1hcC5hZGQoV1RGTW92ZSgqa2V5KSwgV1RGTW92ZSgqdmFsdWUpKS5pc05ld0Vu
dHJ5KSkgewogICAgICAgICAgICAgICAgIC8vIFRoZSBoYXNoIG1hcCBhbHJlYWR5IGhhcyB0aGUg
c3BlY2lmaWVkIGtleSwgYmFpbC4KLSAgICAgICAgICAgICAgICBkZWNvZGVyLm1hcmtJbnZhbGlk
KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQpAQCAtNTg1LDE0ICs1NjYsMTEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJn
LCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIEhhc2gK
ICAgICAgICAgICAgIGlmICgha2V5KQogICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiAKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWSghSGFzaFNldFR5cGU6OmlzVmFsaWRWYWx1
ZSgqa2V5KSkpIHsKLSAgICAgICAgICAgICAgICBkZWNvZGVyLm1hcmtJbnZhbGlkKCk7CisgICAg
ICAgICAgICBpZiAoVU5MSUtFTFkoIUhhc2hTZXRUeXBlOjppc1ZhbGlkVmFsdWUoKmtleSkpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGlmIChVTkxJS0VMWSghaGFzaFNldC5hZGQoV1RGTW92ZSgqa2V5KSkuaXNOZXdF
bnRyeSkpIHsKICAgICAgICAgICAgICAgICAvLyBUaGUgaGFzaCBzZXQgYWxyZWFkeSBoYXMgdGhl
IHNwZWNpZmllZCBrZXksIGJhaWwuCi0gICAgICAgICAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxp
ZCgpOwogICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KQEAgLTYzMCwxNCArNjA4LDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIEtleUFy
ZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnPiBzdHJ1Y3QgQXJndW1l
CiAgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvdW50KSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWSghSGFzaENvdW50ZWRT
ZXRUeXBlOjppc1ZhbGlkVmFsdWUoa2V5KSkpIHsKLSAgICAgICAgICAgICAgICBkZWNvZGVyLm1h
cmtJbnZhbGlkKCk7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIUhhc2hDb3VudGVkU2V0VHlw
ZTo6aXNWYWxpZFZhbHVlKGtleSkpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKFVOTElLRUxZKCF0ZW1wSGFzaENvdW50ZWRT
ZXQuYWRkKGtleSwgY291bnQpLmlzTmV3RW50cnkpKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhl
IGhhc2ggY291bnRlZCBzZXQgYWxyZWFkeSBoYXMgdGhlIHNwZWNpZmllZCBrZXksIGJhaWwuCi0g
ICAgICAgICAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgpOwogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Db25uZWN0aW9uLmNwcAppbmRleCA2MzA2M2Y0NzQwMzdiZWRjMDQ5Nzk2ZWZmNjI4
OTM0ODk0YWUyZGQ5Li5jMWQ3MjQ5OGUyZWRkNzRkYTQyNGQzODNlNDhjNjcxYmM4YzZjY2UyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcApAQCAtMzQsNiArMzQs
NyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRp
Zmllci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CkBAIC0y
MzUsNyArMjM2LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpkaXNwYXRj
aE1lc3NhZ2VzQW5kUmVzZXREaWRTY2hlZHVsZURpc3BhdGNoTWUKIC8vIFJlcHJlc2VudHMgYSBz
eW5jIHJlcXVlc3QgZm9yIHdoaWNoIHdlJ3JlIHdhaXRpbmcgb24gYSByZXBseS4KIHN0cnVjdCBD
b25uZWN0aW9uOjpQZW5kaW5nU3luY1JlcGx5IHsKICAgICAvLyBUaGUgcmVxdWVzdCBJRC4KLSAg
ICB1aW50NjRfdCBzeW5jUmVxdWVzdElEIHsgMCB9OworICAgIENvbm5lY3Rpb246OlN5bmNSZXF1
ZXN0SUQgc3luY1JlcXVlc3RJRDsKIAogICAgIC8vIFRoZSByZXBseSBkZWNvZGVyLCB3aWxsIGJl
IG51bGwgaWYgdGhlcmUgd2FzIGFuIGVycm9yIHByb2Nlc3NpbmcgdGhlIHN5bmMKICAgICAvLyBt
ZXNzYWdlIG9uIHRoZSBvdGhlciBzaWRlLgpAQCAtMjQ2LDcgKzI0Nyw3IEBAIHN0cnVjdCBDb25u
ZWN0aW9uOjpQZW5kaW5nU3luY1JlcGx5IHsKIAogICAgIFBlbmRpbmdTeW5jUmVwbHkoKSA9IGRl
ZmF1bHQ7CiAKLSAgICBleHBsaWNpdCBQZW5kaW5nU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1
ZXN0SUQpCisgICAgZXhwbGljaXQgUGVuZGluZ1N5bmNSZXBseShDb25uZWN0aW9uOjpTeW5jUmVx
dWVzdElEIHN5bmNSZXF1ZXN0SUQpCiAgICAgICAgIDogc3luY1JlcXVlc3RJRChzeW5jUmVxdWVz
dElEKQogICAgIHsKICAgICB9CkBAIC0yODcsNyArMjg4LDYgQEAgQ29ubmVjdGlvbjo6Q29ubmVj
dGlvbihJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgaXNTZXJ2ZXIsIENsaWVudCYgY2xpZW50
KQogICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICwgbV91bmlxdWVJRChVbmlxdWVJRDo6Z2Vu
ZXJhdGUoKSkKICAgICAsIG1faXNTZXJ2ZXIoaXNTZXJ2ZXIpCi0gICAgLCBtX3N5bmNSZXF1ZXN0
SUQoMCkKICAgICAsIG1fb25seVNlbmRNZXNzYWdlc0FzRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5
bmNSZXBseVdoZW5Qcm9jZXNzaW5nU3VjaEFNZXNzYWdlKGZhbHNlKQogICAgICwgbV9zaG91bGRF
eGl0T25TeW5jTWVzc2FnZVNlbmRGYWlsdXJlKGZhbHNlKQogICAgICwgbV9kaWRDbG9zZU9uQ29u
bmVjdGlvbldvcmtRdWV1ZUNhbGxiYWNrKDApCkBAIC0zOTAsMTUgKzM5MCwxNCBAQCB2b2lkIENv
bm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZVJlY2VpdmVyTWVzc2FnZShNZXNzYWdlUmVjZWl2ZXIm
IG1lc3NhZ2VSZWNlaXZlcgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3Qg
c3luY1JlcXVlc3RJRCA9IDA7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoc3luY1JlcXVlc3RJ
RCkgfHwgIXN5bmNSZXF1ZXN0SUQpIHsKKyAgICBTeW5jUmVxdWVzdElEIHN5bmNSZXF1ZXN0SUQ7
CisgICAgaWYgKFVOTElLRUxZKCFkZWNvZGVyLT5kZWNvZGUoc3luY1JlcXVlc3RJRCkpKSB7CiAg
ICAgICAgIC8vIFdlIHJlY2VpdmVkIGFuIGludmFsaWQgc3luYyBtZXNzYWdlLgogICAgICAgICAv
LyBGSVhNRTogSGFuZGxlIHRoaXMuCi0gICAgICAgIGRlY29kZXItPm1hcmtJbnZhbGlkKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHJlcGx5RW5jb2RlciA9IG1ha2VVbmlx
dWVSZWY8RW5jb2Rlcj4oTWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHksIHN5bmNSZXF1ZXN0
SUQpOworICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gbWFrZVVuaXF1ZVJlZjxFbmNvZGVyPihNZXNz
YWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseSwgc3luY1JlcXVlc3RJRC50b1VJbnQ2NCgpKTsKIAog
ICAgIC8vIEhhbmQgb2ZmIGJvdGggdGhlIGRlY29kZXIgYW5kIGVuY29kZXIgdG8gdGhlIHdvcmsg
cXVldWUgbWVzc2FnZSByZWNlaXZlci4KICAgICBib29sIHdhc0hhbmRsZWQgPSBtZXNzYWdlUmVj
ZWl2ZXIuZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKCp0aGlzLCAqZGVjb2RlciwgcmVwbHlFbmNvZGVy
KTsKQEAgLTQ0MSw3ICs0NDAsNyBAQCB2b2lkIENvbm5lY3Rpb246Om1hcmtDdXJyZW50bHlEaXNw
YXRjaGVkTWVzc2FnZUFzSW52YWxpZCgpCiAgICAgbV9kaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2Ug
PSB0cnVlOwogfQogCi1VbmlxdWVSZWY8RW5jb2Rlcj4gQ29ubmVjdGlvbjo6Y3JlYXRlU3luY01l
c3NhZ2VFbmNvZGVyKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlv
bklELCB1aW50NjRfdCYgc3luY1JlcXVlc3RJRCkKK1VuaXF1ZVJlZjxFbmNvZGVyPiBDb25uZWN0
aW9uOjpjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQsIFN5bmNSZXF1ZXN0SUQmIHN5bmNSZXF1ZXN0SUQpCiB7CiAg
ICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZVJlZjxFbmNvZGVyPihtZXNzYWdlTmFtZSwgZGVz
dGluYXRpb25JRCk7CiAKQEAgLTQ3Miw3ICs0NzEsNyBAQCBib29sIENvbm5lY3Rpb246OnNlbmRN
ZXNzYWdlKFVuaXF1ZVJlZjxFbmNvZGVyPiYmIGVuY29kZXIsIE9wdGlvblNldDxTZW5kT3B0aW9u
PgogI2VuZGlmCiAKICAgICBpZiAoaXNNYWluUnVuTG9vcCgpICYmIG1faW5EaXNwYXRjaE1lc3Nh
Z2VNYXJrZWRUb1VzZUZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGluZyAmJiAhZW5jb2Rlci0+
aXNTeW5jTWVzc2FnZSgpICYmICEoZW5jb2Rlci0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IFJl
Y2VpdmVyTmFtZTo6SVBDKSAmJiAhc2VuZE9wdGlvbnMuY29udGFpbnMoU2VuZE9wdGlvbjo6SWdu
b3JlRnVsbHlTeW5jaHJvbm91c01vZGUpKSB7Ci0gICAgICAgIHVpbnQ2NF90IHN5bmNSZXF1ZXN0
SUQ7CisgICAgICAgIFN5bmNSZXF1ZXN0SUQgc3luY1JlcXVlc3RJRDsKICAgICAgICAgYXV0byB3
cmFwcGVkTWVzc2FnZSA9IGNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihNZXNzYWdlTmFtZTo6V3Jh
cHBlZEFzeW5jTWVzc2FnZUZvclRlc3RpbmcsIGVuY29kZXItPmRlc3RpbmF0aW9uSUQoKSwgc3lu
Y1JlcXVlc3RJRCk7CiAgICAgICAgIHdyYXBwZWRNZXNzYWdlLT5zZXRGdWxseVN5bmNocm9ub3Vz
TW9kZUZvclRlc3RpbmcoKTsKICAgICAgICAgd3JhcHBlZE1lc3NhZ2UtPndyYXBGb3JUZXN0aW5n
KFdURk1vdmUoZW5jb2RlcikpOwpAQCAtNTkwLDcgKzU4OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxE
ZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yTWVzc2FnZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFt
ZSwgdWluCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLWJvb2wgQ29ubmVjdGlvbjo6cHVzaFBl
bmRpbmdTeW5jUmVxdWVzdElEKHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQpCitib29sIENvbm5lY3Rp
b246OnB1c2hQZW5kaW5nU3luY1JlcXVlc3RJRChTeW5jUmVxdWVzdElEIHN5bmNSZXF1ZXN0SUQp
CiB7CiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3N5bmNSZXBseVN0YXRlTXV0
ZXgpOwpAQCAtNjAyLDcgKzYwMSw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6cHVzaFBlbmRpbmdTeW5j
UmVxdWVzdElEKHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXZvaWQgQ29ubmVjdGlvbjo6cG9wUGVuZGluZ1N5bmNSZXF1ZXN0SUQodWludDY0X3Qgc3luY1Jl
cXVlc3RJRCkKK3ZvaWQgQ29ubmVjdGlvbjo6cG9wUGVuZGluZ1N5bmNSZXF1ZXN0SUQoU3luY1Jl
cXVlc3RJRCBzeW5jUmVxdWVzdElEKQogewogICAgIC0tbV9pblNlbmRTeW5jQ291bnQ7CiAgICAg
TG9ja0hvbGRlciBsb2NrZXIobV9zeW5jUmVwbHlTdGF0ZU11dGV4KTsKQEAgLTYxMCw3ICs2MDks
NyBAQCB2b2lkIENvbm5lY3Rpb246OnBvcFBlbmRpbmdTeW5jUmVxdWVzdElEKHVpbnQ2NF90IHN5
bmNSZXF1ZXN0SUQpCiAgICAgbV9wZW5kaW5nU3luY1JlcGxpZXMucmVtb3ZlTGFzdCgpOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdlKHVp
bnQ2NF90IHN5bmNSZXF1ZXN0SUQsIFVuaXF1ZVJlZjxFbmNvZGVyPiYmIGVuY29kZXIsIFRpbWVv
dXQgdGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMpCitz
dGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdlKFN5bmNS
ZXF1ZXN0SUQgc3luY1JlcXVlc3RJRCwgVW5pcXVlUmVmPEVuY29kZXI+JiYgZW5jb2RlciwgVGlt
ZW91dCB0aW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucykK
IHsKICAgICBBU1NFUlQoc3luY1JlcXVlc3RJRCk7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKQEAgLTY0OCw3ICs2NDcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVj
dGlvbjo6c2VuZFN5bmNNZXNzYWdlKHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIFVuaQogICAgIHJl
dHVybiByZXBseTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246Ondh
aXRGb3JTeW5jUmVwbHkodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgTWVzc2FnZU5hbWUgbWVzc2Fn
ZU5hbWUsIFRpbWVvdXQgdGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3lu
Y09wdGlvbnMpCitzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvclN5
bmNSZXBseShTeW5jUmVxdWVzdElEIHN5bmNSZXF1ZXN0SUQsIE1lc3NhZ2VOYW1lIG1lc3NhZ2VO
YW1lLCBUaW1lb3V0IHRpbWVvdXQsIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNP
cHRpb25zKQogewogICAgIHRpbWVvdXQgPSB0aW1lb3V0UmVzcGVjdGluZ0lnbm9yZVRpbWVvdXRz
Rm9yVGVzdGluZyh0aW1lb3V0KTsKIApAQCAtNjgwLDcgKzY3OSw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1
ZXN0SUQsIE1lCiAgICAgICAgIC8vIElmIHRoYXQgaGFwcGVucywgd2UgbmVlZCB0byBzdG9wIHdh
aXRpbmcsIG9yIHdlJ2xsIGhhbmcgc2luY2Ugd2Ugd29uJ3QgZ2V0CiAgICAgICAgIC8vIGFueSBt
b3JlIGluY29taW5nIG1lc3NhZ2VzLgogICAgICAgICBpZiAoIWlzVmFsaWQoKSkgewotICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoSVBDLCAiQ29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBs
eTogQ29ubmVjdGlvbiBubyBsb25nZXIgdmFsaWQsIGlkPSUiIFBSSXU2NCwgc3luY1JlcXVlc3RJ
RCk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihJUEMsICJDb25uZWN0aW9uOjp3YWl0
Rm9yU3luY1JlcGx5OiBDb25uZWN0aW9uIG5vIGxvbmdlciB2YWxpZCwgaWQ9JSIgUFJJdTY0LCBz
eW5jUmVxdWVzdElELnRvVUludDY0KCkpOwogICAgICAgICAgICAgZGlkUmVjZWl2ZVN5bmNSZXBs
eShzZW5kU3luY09wdGlvbnMpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAg
IH0KQEAgLTY5Miw5ICs2OTEsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlv
bjo6d2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBNZQogICAgIH0KIAog
I2lmIE9TKERBUldJTikKLSAgICBSRUxFQVNFX0xPR19FUlJPUihJUEMsICJDb25uZWN0aW9uOjp3
YWl0Rm9yU3luY1JlcGx5OiBUaW1lZC1vdXQgd2hpbGUgd2FpdGluZyBmb3IgcmVwbHkgZm9yICV7
cHVibGljfXMgZnJvbSBwcm9jZXNzICVkLCBpZD0lIiBQUkl1NjQsIGRlc2NyaXB0aW9uKG1lc3Nh
Z2VOYW1lKSwgcmVtb3RlUHJvY2Vzc0lEKCksIHN5bmNSZXF1ZXN0SUQpOworICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKElQQywgIkNvbm5lY3Rpb246OndhaXRGb3JTeW5jUmVwbHk6IFRpbWVkLW91dCB3
aGlsZSB3YWl0aW5nIGZvciByZXBseSBmb3IgJXtwdWJsaWN9cyBmcm9tIHByb2Nlc3MgJWQsIGlk
PSUiIFBSSXU2NCwgZGVzY3JpcHRpb24obWVzc2FnZU5hbWUpLCByZW1vdGVQcm9jZXNzSUQoKSwg
c3luY1JlcXVlc3RJRC50b1VJbnQ2NCgpKTsKICNlbHNlCi0gICAgUkVMRUFTRV9MT0dfRVJST1Io
SVBDLCAiQ29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseTogVGltZWQtb3V0IHdoaWxlIHdhaXRp
bmcgZm9yIHJlcGx5IGZvciAlcywgaWQ9JSIgUFJJdTY0LCBkZXNjcmlwdGlvbihtZXNzYWdlTmFt
ZSksIHN5bmNSZXF1ZXN0SUQpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SKElQQywgIkNvbm5lY3Rp
b246OndhaXRGb3JTeW5jUmVwbHk6IFRpbWVkLW91dCB3aGlsZSB3YWl0aW5nIGZvciByZXBseSBm
b3IgJXMsIGlkPSUiIFBSSXU2NCwgZGVzY3JpcHRpb24obWVzc2FnZU5hbWUpLCBzeW5jUmVxdWVz
dElELnRvVUludDY0KCkpOwogI2VuZGlmCiAKICAgICBkaWRSZWNlaXZlU3luY1JlcGx5KHNlbmRT
eW5jT3B0aW9ucyk7CkBAIC03MTIsNyArNzExLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNz
SW5jb21pbmdTeW5jUmVwbHkoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IGRlY29kZXIpCiAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSBtX3BlbmRpbmdTeW5jUmVwbGllcy5zaXplKCk7IGkgPiAwOyAt
LWkpIHsKICAgICAgICAgICAgIFBlbmRpbmdTeW5jUmVwbHkmIHBlbmRpbmdTeW5jUmVwbHkgPSBt
X3BlbmRpbmdTeW5jUmVwbGllc1tpIC0gMV07CiAKLSAgICAgICAgICAgIGlmIChwZW5kaW5nU3lu
Y1JlcGx5LnN5bmNSZXF1ZXN0SUQgIT0gZGVjb2Rlci0+ZGVzdGluYXRpb25JRCgpKQorICAgICAg
ICAgICAgaWYgKHBlbmRpbmdTeW5jUmVwbHkuc3luY1JlcXVlc3RJRC50b1VJbnQ2NCgpICE9IGRl
Y29kZXItPmRlc3RpbmF0aW9uSUQoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICAgICAgQVNTRVJUKCFwZW5kaW5nU3luY1JlcGx5LnJlcGx5RGVjb2Rlcik7CkBAIC05MjYs
MTQgKzkyNSwxMyBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UoRGVjb2Rl
ciYgZGVjb2RlcikKIHsKICAgICBBU1NFUlQoZGVjb2Rlci5pc1N5bmNNZXNzYWdlKCkpOwogCi0g
ICAgdWludDY0X3Qgc3luY1JlcXVlc3RJRCA9IDA7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShz
eW5jUmVxdWVzdElEKSB8fCAhc3luY1JlcXVlc3RJRCkgeworICAgIFN5bmNSZXF1ZXN0SUQgc3lu
Y1JlcXVlc3RJRDsKKyAgICBpZiAoVU5MSUtFTFkoIWRlY29kZXIuZGVjb2RlKHN5bmNSZXF1ZXN0
SUQpKSkgewogICAgICAgICAvLyBXZSByZWNlaXZlZCBhbiBpbnZhbGlkIHN5bmMgbWVzc2FnZS4K
LSAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgYXV0byByZXBseUVuY29kZXIgPSBtYWtlVW5pcXVlUmVmPEVuY29kZXI+KE1lc3NhZ2VO
YW1lOjpTeW5jTWVzc2FnZVJlcGx5LCBzeW5jUmVxdWVzdElEKTsKKyAgICBhdXRvIHJlcGx5RW5j
b2RlciA9IG1ha2VVbmlxdWVSZWY8RW5jb2Rlcj4oTWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVw
bHksIHN5bmNSZXF1ZXN0SUQudG9VSW50NjQoKSk7CiAKICAgICBib29sIHdhc0hhbmRsZWQgPSBm
YWxzZTsKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VOYW1lOjpXcmFw
cGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29u
bmVjdGlvbi5oCmluZGV4IDYyZDBmYjczMzU4MTgzYWVjNjhhNmVjNDZiOTQyYWFlMjc5ZDA1MDUu
LjQ0YjE4N2RjNmFjYmIxNmIyNTAzZTkwMzI1YjY0MWQ0N2IxZWViYjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKQEAgLTEwNiw2ICsxMDYsOSBAQCBjbGFzcyBVbml4
TWVzc2FnZTsKIAogY2xhc3MgQ29ubmVjdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxDb25uZWN0aW9uLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluUnVuTG9vcD4gewogcHVi
bGljOgorICAgIGVudW0gU3luY1JlcXVlc3RJRFR5cGUgeyB9OworICAgIHVzaW5nIFN5bmNSZXF1
ZXN0SUQgPSBPYmplY3RJZGVudGlmaWVyPFN5bmNSZXF1ZXN0SURUeXBlPjsKKwogICAgIGNsYXNz
IENsaWVudCA6IHB1YmxpYyBNZXNzYWdlUmVjZWl2ZXIgewogICAgIHB1YmxpYzoKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpZENsb3NlKENvbm5lY3Rpb24mKSA9IDA7CkBAIC0yNzYsOCArMjc5LDgg
QEAgcHVibGljOgogICAgIH0KIAogICAgIGJvb2wgc2VuZE1lc3NhZ2UoVW5pcXVlUmVmPEVuY29k
ZXI+JiYsIE9wdGlvblNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyk7Ci0gICAgVW5pcXVlUmVm
PEVuY29kZXI+IGNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihNZXNzYWdlTmFtZSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCwgdWludDY0X3QmIHN5bmNSZXF1ZXN0SUQpOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxEZWNvZGVyPiBzZW5kU3luY01lc3NhZ2UodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgVW5p
cXVlUmVmPEVuY29kZXI+JiYsIFRpbWVvdXQsIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2Vu
ZFN5bmNPcHRpb25zKTsKKyAgICBVbmlxdWVSZWY8RW5jb2Rlcj4gY3JlYXRlU3luY01lc3NhZ2VF
bmNvZGVyKE1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTeW5jUmVxdWVzdElE
Jik7CisgICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IHNlbmRTeW5jTWVzc2FnZShTeW5jUmVx
dWVzdElELCBVbmlxdWVSZWY8RW5jb2Rlcj4mJiwgVGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5j
T3B0aW9uPiBzZW5kU3luY09wdGlvbnMpOwogICAgIGJvb2wgc2VuZFN5bmNSZXBseShVbmlxdWVS
ZWY8RW5jb2Rlcj4mJik7CiAKICAgICB2b2lkIHdha2VVcFJ1bkxvb3AoKTsKQEAgLTMyNCwxMCAr
MzI3LDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0luY29taW5nTWVzc2FnZXNUaHJvdHRsaW5n
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9pbmNvbWluZ01lc3NhZ2VzVGhyb3R0bGVyOyB9
CiAgICAgCiAgICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IHdhaXRGb3JNZXNzYWdlKE1lc3Nh
Z2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBUaW1lb3V0LCBPcHRpb25TZXQ8V2FpdEZv
ck9wdGlvbj4pOwotICAgIHVpbnQ2NF90IG1ha2VTeW5jUmVxdWVzdElEKCkgeyByZXR1cm4gKytt
X3N5bmNSZXF1ZXN0SUQ7IH0KLSAgICBib29sIHB1c2hQZW5kaW5nU3luY1JlcXVlc3RJRCh1aW50
NjRfdCBzeW5jUmVxdWVzdElEKTsKLSAgICB2b2lkIHBvcFBlbmRpbmdTeW5jUmVxdWVzdElEKHVp
bnQ2NF90IHN5bmNSZXF1ZXN0SUQpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiB3YWl0
Rm9yU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIE1lc3NhZ2VOYW1lLCBUaW1lb3V0
LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+KTsKKworICAgIFN5bmNSZXF1ZXN0SUQgbWFrZVN5
bmNSZXF1ZXN0SUQoKSB7IHJldHVybiBTeW5jUmVxdWVzdElEOjpnZW5lcmF0ZVRocmVhZFNhZmUo
KTsgfQorICAgIGJvb2wgcHVzaFBlbmRpbmdTeW5jUmVxdWVzdElEKFN5bmNSZXF1ZXN0SUQpOwor
ICAgIHZvaWQgcG9wUGVuZGluZ1N5bmNSZXF1ZXN0SUQoU3luY1JlcXVlc3RJRCk7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPERlY29kZXI+IHdhaXRGb3JTeW5jUmVwbHkoU3luY1JlcXVlc3RJRCwgTWVz
c2FnZU5hbWUsIFRpbWVvdXQsIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4pOwogCiAgICAgdm9p
ZCBlbnF1ZXVlTWF0Y2hpbmdNZXNzYWdlc1RvTWVzc2FnZVJlY2VpdmVRdWV1ZShMb2NrZXI8TG9j
az4mIGluY29taW5nTWVzc2FnZXNMb2NrZXIsIE1lc3NhZ2VSZWNlaXZlUXVldWUmLCBSZWNlaXZl
ck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOwogCkBAIC0zODIsNyArMzg2LDYgQEAgcHJp
dmF0ZToKICAgICBVbmlxdWVJRCBtX3VuaXF1ZUlEOwogICAgIGJvb2wgbV9pc1NlcnZlcjsKICAg
ICBzdGQ6OmF0b21pYzxib29sPiBtX2lzVmFsaWQgeyB0cnVlIH07Ci0gICAgc3RkOjphdG9taWM8
dWludDY0X3Q+IG1fc3luY1JlcXVlc3RJRDsKIAogICAgIGJvb2wgbV9vbmx5U2VuZE1lc3NhZ2Vz
QXNEaXNwYXRjaFdoZW5XYWl0aW5nRm9yU3luY1JlcGx5V2hlblByb2Nlc3NpbmdTdWNoQU1lc3Nh
Z2U7CiAgICAgYm9vbCBtX3Nob3VsZEV4aXRPblN5bmNNZXNzYWdlU2VuZEZhaWx1cmU7CkBAIC01
NTgsNyArNTYxLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gQ29ubmVjdGlvbjo6U2VuZFN5bmNS
ZXN1bHQgQ29ubmVjdGlvbjo6c2VuZFN5bmMoVCYmIG1lc3NhZ2UKICAgICBDT01QSUxFX0FTU0VS
VChUOjppc1N5bmMsIFN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogICAgIFJFTEVBU0VfQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQgPSAwOworICAg
IFN5bmNSZXF1ZXN0SUQgc3luY1JlcXVlc3RJRDsKICAgICBhdXRvIGVuY29kZXIgPSBjcmVhdGVT
eW5jTWVzc2FnZUVuY29kZXIoVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklELCBzeW5jUmVxdWVzdElE
KTsKIAogICAgIGlmIChzZW5kU3luY09wdGlvbnMuY29udGFpbnMoU2VuZFN5bmNPcHRpb246OlVz
ZUZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGluZykpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvRGVjb2Rlci5jcHAKaW5kZXggZDRkMmQwN2VlY2QzM2Y5ZTJjMGM4ZGVlMWZkMDg4NTJiNzRm
MjUzMS4uNzQzY2I0ODE1NjFiMjEzZDBmODkyYmJhMzk4YjViMzViMzJiNmMwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKQEAgLTc5LDI1ICs3OSwxOSBAQCBEZWNvZGVy
OjpEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIHZvaWQg
KCpidWZmZXJEZWFsbG9jYQogICAgICwgbV9idWZmZXJEZWFsbG9jYXRvciB7IGJ1ZmZlckRlYWxs
b2NhdG9yIH0KICAgICAsIG1fYXR0YWNobWVudHMgeyBXVEZNb3ZlKGF0dGFjaG1lbnRzKSB9CiB7
Ci0gICAgaWYgKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtX2J1ZmZlcikgJSBhbGlnbm9m
KHVpbnQ2NF90KSkgeworICAgIGlmIChVTkxJS0VMWShyZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4obV9idWZmZXIpICUgYWxpZ25vZih1aW50NjRfdCkpKSB7CiAgICAgICAgIG1hcmtJbnZhbGlk
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIWRlY29kZShtX21lc3NhZ2VG
bGFncykpIHsKLSAgICAgICAgbWFya0ludmFsaWQoKTsKKyAgICBpZiAoVU5MSUtFTFkoIWRlY29k
ZShtX21lc3NhZ2VGbGFncykpKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgaWYgKCFk
ZWNvZGUobV9tZXNzYWdlTmFtZSkpIHsKLSAgICAgICAgbWFya0ludmFsaWQoKTsKKyAgICBpZiAo
VU5MSUtFTFkoIWRlY29kZShtX21lc3NhZ2VOYW1lKSkpCiAgICAgICAgIHJldHVybjsKLSAgICB9
CiAKLSAgICBpZiAoIWRlY29kZShtX2Rlc3RpbmF0aW9uSUQpKSB7Ci0gICAgICAgIG1hcmtJbnZh
bGlkKCk7CisgICAgaWYgKFVOTElLRUxZKCFkZWNvZGUobV9kZXN0aW5hdGlvbklEKSkpCiAgICAg
ICAgIHJldHVybjsKLSAgICB9CiB9CiAKIERlY29kZXI6OkRlY29kZXIoY29uc3QgdWludDhfdCog
YnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgQ29uc3RydWN0V2l0aG91dEhlYWRlclRhZykKQEAg
LTEwNiw3ICsxMDAsNyBAQCBEZWNvZGVyOjpEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwg
c2l6ZV90IGJ1ZmZlclNpemUsIENvbnN0cnVjdFdpdGhvdXRIZWFkZQogICAgICwgbV9idWZmZXJF
bmQgeyBtX2J1ZmZlciArIGJ1ZmZlclNpemUgfQogICAgICwgbV9idWZmZXJEZWFsbG9jYXRvcihb
XSAoY29uc3QgdWludDhfdCosIHNpemVfdCkgeyB9KQogewotICAgIGlmIChyZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4obV9idWZmZXIpICUgYWxpZ25vZih1aW50NjRfdCkpCisgICAgaWYgKFVO
TElLRUxZKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtX2J1ZmZlcikgJSBhbGlnbm9mKHVp
bnQ2NF90KSkpCiAgICAgICAgIG1hcmtJbnZhbGlkKCk7CiB9CiAKQEAgLTExNywxMCArMTExLDgg
QEAgRGVjb2Rlcjo6RGVjb2Rlcihjb25zdCB1aW50OF90KiBzdHJlYW0sIHNpemVfdCBzdHJlYW1T
aXplLCB1aW50NjRfdCBkZXN0aW5hdGlvbkkKICAgICAsIG1fYnVmZmVyRGVhbGxvY2F0b3IoW10g
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIHsgfSkKICAgICAsIG1fZGVzdGluYXRpb25JRChkZXN0
aW5hdGlvbklEKQogewotICAgIGlmICghZGVjb2RlKG1fbWVzc2FnZU5hbWUpKSB7Ci0gICAgICAg
IG1hcmtJbnZhbGlkKCk7CisgICAgaWYgKFVOTElLRUxZKCFkZWNvZGUobV9tZXNzYWdlTmFtZSkp
KQogICAgICAgICByZXR1cm47Ci0gICAgfQogfQogCiBEZWNvZGVyOjp+RGVjb2RlcigpCkBAIC0x
OTksNyArMTkxLDcgQEAgc3RhdGljIGlubGluZSBib29sIGFsaWduZWRCdWZmZXJJc0xhcmdlRW5v
dWdoVG9Db250YWluKGNvbnN0IHVpbnQ4X3QqIGFsaWduZWRQb3MKIGJvb2wgRGVjb2Rlcjo6YWxp
Z25CdWZmZXJQb3NpdGlvbihzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSkKIHsKICAgICBj
b25zdCB1aW50OF90KiBhbGlnbmVkUG9zaXRpb24gPSByb3VuZFVwVG9BbGlnbm1lbnQobV9idWZm
ZXJQb3MsIGFsaWdubWVudCk7Ci0gICAgaWYgKCFhbGlnbmVkQnVmZmVySXNMYXJnZUVub3VnaFRv
Q29udGFpbihhbGlnbmVkUG9zaXRpb24sIG1fYnVmZmVyLCBtX2J1ZmZlckVuZCwgc2l6ZSkpIHsK
KyAgICBpZiAoVU5MSUtFTFkoIWFsaWduZWRCdWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKGFs
aWduZWRQb3NpdGlvbiwgbV9idWZmZXIsIG1fYnVmZmVyRW5kLCBzaXplKSkpIHsKICAgICAgICAg
Ly8gV2UndmUgd2Fsa2VkIG9mZiB0aGUgZW5kIG9mIHRoaXMgYnVmZmVyLgogICAgICAgICBtYXJr
SW52YWxpZCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9E
ZWNvZGVyLmgKaW5kZXggZWQyMTYzNzYzMjNhZmI4MGUzYWExNTY4NTZjOGUwYzVmNGI4ZDhhNy4u
OTlmODFjMzQxOThhOGUyNTExNjBlMjNkZTAyOThjMmQwNzQ1MmEyNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0RlY29kZXIuaApAQCAtODksMjggKzg5LDM3IEBAIHB1YmxpYzoKICAgICBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoVCYgdCkKICAgICB7CiAgICAgICAgIHVzaW5nIElt
cGwgPSBBcmd1bWVudENvZGVyPHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJl
bmNlX3Q8VD4+LCB2b2lkPjsKLSAgICAgICAgaWYgY29uc3RleHByKEhhc0xlZ2FjeURlY29kZXI8
VCwgSW1wbD46OnZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIEltcGw6OmRlY29kZSgqdGhpcywg
dCk7Ci0gICAgICAgIGVsc2UgeworICAgICAgICBpZiBjb25zdGV4cHIoSGFzTGVnYWN5RGVjb2Rl
cjxULCBJbXBsPjo6dmFsdWUpIHsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWSghSW1wbDo6ZGVj
b2RlKCp0aGlzLCB0KSkpIHsKKyAgICAgICAgICAgICAgICBtYXJrSW52YWxpZCgpOworICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIE9wdGlvbmFsPFQ+IG9wdGlvbmFsOwogICAgICAgICAgICAgKnRoaXMgPj4g
b3B0aW9uYWw7Ci0gICAgICAgICAgICBpZiAoIW9wdGlvbmFsKQorICAgICAgICAgICAgaWYgKFVO
TElLRUxZKCFvcHRpb25hbCkpIHsKKyAgICAgICAgICAgICAgICBtYXJrSW52YWxpZCgpOwogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHQg
PSBXVEZNb3ZlKCpvcHRpb25hbCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQorICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgogICAgIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8VD4mIHQpCiAgICAgewogICAgICAg
ICB1c2luZyBJbXBsID0gQXJndW1lbnRDb2RlcjxzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVt
b3ZlX3JlZmVyZW5jZV90PFQ+Piwgdm9pZD47Ci0gICAgICAgIGlmIGNvbnN0ZXhwcihIYXNNb2Rl
cm5EZWNvZGVyPFQsIEltcGw+Ojp2YWx1ZSkKKyAgICAgICAgaWYgY29uc3RleHByKEhhc01vZGVy
bkRlY29kZXI8VCwgSW1wbD46OnZhbHVlKSB7CiAgICAgICAgICAgICB0ID0gSW1wbDo6ZGVjb2Rl
KCp0aGlzKTsKLSAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIXQpKQor
ICAgICAgICAgICAgICAgIG1hcmtJbnZhbGlkKCk7CisgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBUIHY7Ci0gICAgICAgICAgICBpZiAoSW1wbDo6ZGVjb2RlKCp0aGlzLCB2KSkKKyAgICAg
ICAgICAgIGlmIChMSUtFTFkoSW1wbDo6ZGVjb2RlKCp0aGlzLCB2KSkpCiAgICAgICAgICAgICAg
ICAgdCA9IFdURk1vdmUodik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbWFy
a0ludmFsaWQoKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4IGU3NTNkMTEyYTQ3
MTljNzJmOWY3MGFhNzkyYzVjMDQyZWI3ZDA4YWQuLjMxNzRkNDJhOWM1NmI0NTQ5MGUxNGJlZWI0
Mjk3NjNmN2QxM2MyYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hh
bmRsZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNz
YWdlLmgKQEAgLTExMywxMCArMTEzLDggQEAgdm9pZCBoYW5kbGVNZXNzYWdlKERlY29kZXImIGRl
Y29kZXIsIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCiB7CiAgICAgT3B0aW9uYWw8dHlwZW5hbWUg
Q29kaW5nVHlwZTx0eXBlbmFtZSBUOjpBcmd1bWVudHM+OjpUeXBlPiBhcmd1bWVudHM7CiAgICAg
ZGVjb2RlciA+PiBhcmd1bWVudHM7Ci0gICAgaWYgKCFhcmd1bWVudHMpIHsKLSAgICAgICAgZGVj
b2Rlci5tYXJrSW52YWxpZCgpOworICAgIGlmIChVTkxJS0VMWSghYXJndW1lbnRzKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIH0KIAogICAgIGNhbGxNZW1iZXJGdW5jdGlvbihXVEZNb3ZlKCphcmd1
bWVudHMpLCBvYmplY3QsIGZ1bmN0aW9uKTsKIH0KQEAgLTEyNiwxMCArMTI0LDggQEAgdm9pZCBo
YW5kbGVNZXNzYWdlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIsIEMq
IG9iamVjdCwgTUYgZnVuY3QKIHsKICAgICBPcHRpb25hbDx0eXBlbmFtZSBDb2RpbmdUeXBlPHR5
cGVuYW1lIFQ6OkFyZ3VtZW50cz46OlR5cGU+IGFyZ3VtZW50czsKICAgICBkZWNvZGVyID4+IGFy
Z3VtZW50czsKLSAgICBpZiAoIWFyZ3VtZW50cykgewotICAgICAgICBkZWNvZGVyLm1hcmtJbnZh
bGlkKCk7CisgICAgaWYgKFVOTElLRUxZKCFhcmd1bWVudHMpKQogICAgICAgICByZXR1cm47Ci0g
ICAgfQogICAgIGNhbGxNZW1iZXJGdW5jdGlvbihjb25uZWN0aW9uLCBXVEZNb3ZlKCphcmd1bWVu
dHMpLCBvYmplY3QsIGZ1bmN0aW9uKTsKIH0KIApAQCAtMTM4LDEwICsxMzQsOCBAQCBib29sIGhh
bmRsZU1lc3NhZ2VTeW5jaHJvbm91cyhDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBk
ZWNvZGVyLCBVbmlxdWVSZQogewogICAgIE9wdGlvbmFsPHR5cGVuYW1lIENvZGluZ1R5cGU8dHlw
ZW5hbWUgVDo6QXJndW1lbnRzPjo6VHlwZT4gYXJndW1lbnRzOwogICAgIGRlY29kZXIgPj4gYXJn
dW1lbnRzOwotICAgIGlmICghYXJndW1lbnRzKSB7Ci0gICAgICAgIGRlY29kZXIubWFya0ludmFs
aWQoKTsKKyAgICBpZiAoVU5MSUtFTFkoIWFyZ3VtZW50cykpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9CiAKICAgICB0eXBlbmFtZSBUOjpEZWxheWVkUmVwbHkgY29tcGxldGlvbkhhbmRs
ZXIgPSBbcmVwbHlFbmNvZGVyID0gV1RGTW92ZShyZXBseUVuY29kZXIpLCBjb25uZWN0aW9uID0g
bWFrZVJlZihjb25uZWN0aW9uKV0gKGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxlIHsKICAgICAgICAg
VDo6c2VuZChXVEZNb3ZlKHJlcGx5RW5jb2RlciksIFdURk1vdmUoY29ubmVjdGlvbiksIGFyZ3Mu
Li4pOwpAQCAtMTU1LDEwICsxNDksOCBAQCBib29sIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91c1dh
bnRzQ29ubmVjdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZQogewogICAg
IE9wdGlvbmFsPHR5cGVuYW1lIENvZGluZ1R5cGU8dHlwZW5hbWUgVDo6QXJndW1lbnRzPjo6VHlw
ZT4gYXJndW1lbnRzOwogICAgIGRlY29kZXIgPj4gYXJndW1lbnRzOwotICAgIGlmICghYXJndW1l
bnRzKSB7Ci0gICAgICAgIGRlY29kZXIubWFya0ludmFsaWQoKTsKKyAgICBpZiAoVU5MSUtFTFko
IWFyZ3VtZW50cykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAgICAgCiAgICAgdHlw
ZW5hbWUgVDo6RGVsYXllZFJlcGx5IGNvbXBsZXRpb25IYW5kbGVyID0gW3JlcGx5RW5jb2RlciA9
IFdURk1vdmUocmVwbHlFbmNvZGVyKSwgY29ubmVjdGlvbiA9IG1ha2VSZWYoY29ubmVjdGlvbild
IChhdXRvJiYuLi4gYXJncykgbXV0YWJsZSB7CiAgICAgICAgIFQ6OnNlbmQoV1RGTW92ZShyZXBs
eUVuY29kZXIpLCBXVEZNb3ZlKGNvbm5lY3Rpb24pLCBhcmdzLi4uKTsKQEAgLTE3MCwxOCArMTYy
LDE0IEBAIGJvb2wgaGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzV2FudHNDb25uZWN0aW9uKENvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRlCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBDLCB0eXBlbmFtZSBNRj4KIHZvaWQgaGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzKFN0cmVh
bVNlcnZlckNvbm5lY3Rpb25CYXNlJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyLCBDKiBv
YmplY3QsIE1GIGZ1bmN0aW9uKQogewotICAgIHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQgPSAwOwot
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3luY1JlcXVlc3RJRCkgfHwgIXN5bmNSZXF1ZXN0SUQp
IHsKLSAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgpOworICAgIENvbm5lY3Rpb246OlN5bmNS
ZXF1ZXN0SUQgc3luY1JlcXVlc3RJRDsKKyAgICBpZiAoVU5MSUtFTFkoIWRlY29kZXIuZGVjb2Rl
KHN5bmNSZXF1ZXN0SUQpKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIE9wdGlvbmFs
PHR5cGVuYW1lIENvZGluZ1R5cGU8dHlwZW5hbWUgVDo6QXJndW1lbnRzPjo6VHlwZT4gYXJndW1l
bnRzOwogICAgIGRlY29kZXIgPj4gYXJndW1lbnRzOwotICAgIGlmICghYXJndW1lbnRzKSB7Ci0g
ICAgICAgIGRlY29kZXIubWFya0ludmFsaWQoKTsKKyAgICBpZiAoVU5MSUtFTFkoIWFyZ3VtZW50
cykpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICB0eXBlbmFtZSBUOjpEZWxheWVkUmVw
bHkgY29tcGxldGlvbkhhbmRsZXIgPSBbc3luY1JlcXVlc3RJRCwgY29ubmVjdGlvbiA9IG1ha2VS
ZWYoY29ubmVjdGlvbildIChhdXRvJiYuLi4gYXJncykgbXV0YWJsZSB7CiAgICAgICAgIGNvbm5l
Y3Rpb24tPnNlbmRTeW5jUmVwbHk8VD4oc3luY1JlcXVlc3RJRCwgYXJncy4uLik7CkBAIC0xOTQs
MTcgKzE4MiwxMyBAQCB2b2lkIGhhbmRsZU1lc3NhZ2VBc3luYyhDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBEZWNvZGVyJiBkZWNvZGVyLCBDKiBvYmplY3QsIE1GCiB7CiAgICAgT3B0aW9uYWw8dWlu
dDY0X3Q+IGxpc3RlbmVySUQ7CiAgICAgZGVjb2RlciA+PiBsaXN0ZW5lcklEOwotICAgIGlmICgh
bGlzdGVuZXJJRCkgewotICAgICAgICBkZWNvZGVyLm1hcmtJbnZhbGlkKCk7CisgICAgaWYgKCFs
aXN0ZW5lcklEKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgT3B0aW9uYWw8dHlwZW5h
bWUgQ29kaW5nVHlwZTx0eXBlbmFtZSBUOjpBcmd1bWVudHM+OjpUeXBlPiBhcmd1bWVudHM7CiAg
ICAgZGVjb2RlciA+PiBhcmd1bWVudHM7Ci0gICAgaWYgKCFhcmd1bWVudHMpIHsKLSAgICAgICAg
ZGVjb2Rlci5tYXJrSW52YWxpZCgpOworICAgIGlmIChVTkxJS0VMWSghYXJndW1lbnRzKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIHR5cGVuYW1lIFQ6OkFzeW5jUmVwbHkgY29tcGxl
dGlvbkhhbmRsZXIgPSB7IFtsaXN0ZW5lcklEID0gKmxpc3RlbmVySUQsIGNvbm5lY3Rpb24gPSBt
YWtlUmVmKGNvbm5lY3Rpb24pXSAoYXV0byYmLi4uIGFyZ3MpIG11dGFibGUgewogICAgICAgICBh
dXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlUmVmPEVuY29kZXI+KFQ6OmFzeW5jTWVzc2FnZVJlcGx5
TmFtZSgpLCBsaXN0ZW5lcklEKTsKQEAgLTIxOCwxMCArMjAyLDggQEAgdm9pZCBoYW5kbGVNZXNz
YWdlQXN5bmNXYW50c0Nvbm5lY3Rpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYg
ZGVjb2RlciwKIHsKICAgICBPcHRpb25hbDx0eXBlbmFtZSBDb2RpbmdUeXBlPHR5cGVuYW1lIFQ6
OkFyZ3VtZW50cz46OlR5cGU+IGFyZ3VtZW50czsKICAgICBkZWNvZGVyID4+IGFyZ3VtZW50czsK
LSAgICBpZiAoIWFyZ3VtZW50cykgewotICAgICAgICBkZWNvZGVyLm1hcmtJbnZhbGlkKCk7Cisg
ICAgaWYgKFVOTElLRUxZKCFhcmd1bWVudHMpKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAg
ICAgdHlwZW5hbWUgVDo6QXN5bmNSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9IFtsaXN0ZW5lcklE
ID0gZGVjb2Rlci5kZXN0aW5hdGlvbklEKCksIGNvbm5lY3Rpb24gPSBtYWtlUmVmKGNvbm5lY3Rp
b24pXSAoYXV0byYmLi4uIGFyZ3MpIG11dGFibGUgewogICAgICAgICBhdXRvIGVuY29kZXIgPSBt
YWtlVW5pcXVlUmVmPEVuY29kZXI+KFQ6OmFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpLCBsaXN0ZW5l
cklEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZl
ckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNv
bm5lY3Rpb24uaAppbmRleCA5MGVkZjM4NzQxNGVhZjljMmFhOGFiMTE5NWFhYmMyYjFiYjhhNDc5
Li40ZjYxNmVmODIzZTkzYTUzODRkNGFkMTU0NDQwMzY2NzcyMTJiOGI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oCkBAIC01
Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIERpc3BhdGNoUmVzdWx0IGRpc3BhdGNo
U3RyZWFtTWVzc2FnZXMoc2l6ZV90IG1lc3NhZ2VMaW1pdCkgPSAwOwogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgotICAgIHZvaWQgc2VuZFN5bmNSZXBs
eSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBBcmd1bWVudHMmJi4uLik7CisgICAgdm9pZCBzZW5k
U3luY1JlcGx5KENvbm5lY3Rpb246OlN5bmNSZXF1ZXN0SUQsIEFyZ3VtZW50cyYmLi4uKTsKIAog
cHJvdGVjdGVkOgogICAgIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlKElQQzo6Q29ubmVjdGlv
biYsIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiwgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYp
OwpAQCAtMTAyLDcgKzEwMiw3IEBAIHByb3RlY3RlZDoKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KLXZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJh
c2U6OnNlbmRTeW5jUmVwbHkodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgQXJndW1lbnRzJiYuLi4g
YXJndW1lbnRzKQordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c2VuZFN5bmNSZXBs
eShDb25uZWN0aW9uOjpTeW5jUmVxdWVzdElEIHN5bmNSZXF1ZXN0SUQsIEFyZ3VtZW50cyYmLi4u
IGFyZ3VtZW50cykKIHsKICAgICBpZiBjb25zdGV4cHIoVDo6aXNSZXBseVN0cmVhbUVuY29kYWJs
ZSkgewogICAgICAgICBpZiAobV9pc0Rpc3BhdGNoaW5nU3RyZWFtTWVzc2FnZSkgewpAQCAtMTE1
LDcgKzExNSw3IEBAIHZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNlbmRTeW5jUmVw
bHkodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgQXJndW1lbnRzCiAgICAgICAgICAgICBTdHJlYW1D
b25uZWN0aW9uRW5jb2RlciBvdXRPZlN0cmVhbUVuY29kZXIgeyBNZXNzYWdlTmFtZTo6UHJvY2Vz
c091dE9mU3RyZWFtTWVzc2FnZSwgc3Bhbi5kYXRhLCBzcGFuLnNpemUgfTsKICAgICAgICAgfQog
ICAgIH0KLSAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlUmVmPEVuY29kZXI+KE1lc3NhZ2VO
YW1lOjpTeW5jTWVzc2FnZVJlcGx5LCBzeW5jUmVxdWVzdElEKTsKKyAgICBhdXRvIGVuY29kZXIg
PSBtYWtlVW5pcXVlUmVmPEVuY29kZXI+KE1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5LCBz
eW5jUmVxdWVzdElELnRvVUludDY0KCkpOwogCiAgICAgKGVuY29kZXIuZ2V0KCkgPDwgLi4uIDw8
IGFyZ3VtZW50cyk7CiAgICAgbV9jb25uZWN0aW9uLT5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5j
b2RlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5jcHAKaW5k
ZXggMGZhZWZmMWZiODQ1ZTI1NGQ5OTYzZTM1NjBlZTk0ODk4MmM3OTNkYS4uZDM2MTFmNDA1OGNl
YmEwMWRkOTg2M2RjMzhlY2U0MWQ5ZDM1ZjJkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW4uY3BwCkBAIC03MywxMCArNzMsOCBAQCBib29sIFBsdWdpbjo6UGFy
YW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgUGFyYW1ldGVycyYgcGFyYW1l
dGVycykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMubGF5ZXJIb3N0aW5nTW9k
ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgotICAgIGlmIChwYXJhbWV0ZXJzLm5h
bWVzLnNpemUoKSAhPSBwYXJhbWV0ZXJzLnZhbHVlcy5zaXplKCkpIHsKLSAgICAgICAgZGVjb2Rl
ci5tYXJrSW52YWxpZCgpOworICAgIGlmIChwYXJhbWV0ZXJzLm5hbWVzLnNpemUoKSAhPSBwYXJh
bWV0ZXJzLnZhbHVlcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvSVBDVGVzdGluZ0FQSS5jcHAKaW5kZXggNTJhNmQ0OTY5MWFmOTE3OWQ1M2RhOTA5NzcxMmM5
NWY2MTFmOGEyOS4uZDQ5NWYyODg1MGYwZTZjZmEwYTZiNjM5YmY0ZjAwYzViMDk5ZjVlOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5j
cHAKQEAgLTczNyw3ICs3MzcsNyBAQCBKU1ZhbHVlUmVmIEpTSVBDOjpzZW5kU3luY01lc3NhZ2Uo
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmLCBKU09iamVjdFJlZgogCiAgICAgLy8g
RklYTUU6IFN1cHBvcnQgdGhlIG9wdGlvbnMuCiAKLSAgICB1aW50NjRfdCBzeW5jUmVxdWVzdElE
ID0gMDsKKyAgICBJUEM6OkNvbm5lY3Rpb246OlN5bmNSZXF1ZXN0SUQgc3luY1JlcXVlc3RJRDsK
ICAgICBhdXRvIG1lc3NhZ2VOYW1lID0gc3RhdGljX2Nhc3Q8SVBDOjpNZXNzYWdlTmFtZT4oKm1l
c3NhZ2VJRCk7CiAgICAgYXV0byBlbmNvZGVyID0gY29ubmVjdGlvbi0+Y3JlYXRlU3luY01lc3Nh
Z2VFbmNvZGVyKG1lc3NhZ2VOYW1lLCAqZGVzdGluYXRpb25JRCwgc3luY1JlcXVlc3RJRCk7CiAK
QEAgLTk3MCw4ICs5NzAsOSBAQCBKU0M6OkpTT2JqZWN0KiBKU01lc3NhZ2VMaXN0ZW5lcjo6anNE
ZXNjcmlwdGlvbkZyb21EZWNvZGVyKEpTQzo6SlNHbG9iYWxPYmplY3QqCiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAKICAgICBpZiAoZGVjb2Rlci5pc1N5bmNNZXNz
YWdlKCkpIHsKLSAgICAgICAgaWYgKHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQgPSAwOyBkZWNvZGVy
LmRlY29kZShzeW5jUmVxdWVzdElEKSkgewotICAgICAgICAgICAganNSZXN1bHQtPnB1dERpcmVj
dCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic3luY1JlcXVlc3RJRCIpLCBK
U0M6OkpTVmFsdWUoc3luY1JlcXVlc3RJRCkpOworICAgICAgICBJUEM6OkNvbm5lY3Rpb246OlN5
bmNSZXF1ZXN0SUQgc3luY1JlcXVlc3RJRDsKKyAgICAgICAgaWYgKGRlY29kZXIuZGVjb2RlKHN5
bmNSZXF1ZXN0SUQpKSB7CisgICAgICAgICAgICBqc1Jlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6
OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzeW5jUmVxdWVzdElEIiksIEpTQzo6SlNWYWx1
ZShzeW5jUmVxdWVzdElELnRvVUludDY0KCkpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChtZXNzYWdl
UmVwbHlBcmd1bWVudERlc2NyaXB0aW9ucyhkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpKSB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>